pax_global_header00006660000000000000000000000064151473116320014515gustar00rootroot0000000000000052 comment=d40c97f4599e00b510339bad014be836e53773ed drf-yasg-nonfree-1.21.15/000077500000000000000000000000001514731163200150325ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.codecov.yml000066400000000000000000000007151514731163200172600ustar00rootroot00000000000000codecov: branch: master coverage: precision: 2 round: down range: 60...100 status: project: default: enabled: yes target: auto threshold: 100% if_no_uploads: error if_ci_failed: error patch: default: enabled: yes target: 100% threshold: 100% if_no_uploads: error if_ci_failed: error changes: default: enabled: no comment: false drf-yasg-nonfree-1.21.15/.coveragerc000066400000000000000000000020111514731163200171450ustar00rootroot00000000000000[run] source = drf_yasg branch = True parallel = true disable_warnings = module-not-measured [report] # Regexes for lines to exclude from consideration exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don't complain about missing debug-only code: def __repr__ if self/.debug # Don't complain if tests don't hit defensive assertion code: raise AssertionError raise ImproperlyConfigured raise TypeError raise NotImplementedError warnings.warn logger.debug logger.info logger.warning logger.error return NotHandled # Don't complain if non-runnable code isn't run: if 0: if __name__ == .__main__.: # Don't complain if we don't hit invalid schema configurations raise SwaggerGenerationError ignore_errors = True precision = 2 show_missing = True [paths] source = src/drf_yasg/ .tox/*/Lib/site-packages/drf_yasg/ .tox/*/lib/*/site-packages/drf_yasg/ /home/travis/virtualenv/*/lib/*/site-packages/drf_yasg/ drf-yasg-nonfree-1.21.15/.cspell.json000066400000000000000000000054701514731163200172730ustar00rootroot00000000000000{ "language": "en", "ignorePaths": [ "./app.json", ".gitignore", "*.coverage", "*.min.js", "**/__pycache__/**", "**/*.egg-info/**", "**/*.git/**", "**/build/**", "**/coverage/**", "**/dist/**", "**/migrations/**", "**/swagger-ui-dist/**", "**/venv/**" ], "dictionaries": [ "css", "django", "fonts", "local", "misc", "python", "softwareTerms" ], "words": [ "addopts", "apiview", "askar", "auths", "authtoken", "autoclass", "autodata", "automodule", "avenir", "barebones", "basepath", "beaugunderson", "blueyed", "builddir", "bysource", "cacheable", "callabale", "camelize", "camelized", "classdoc", "codecov", "codegen", "coreapi", "coreschema", "corsheaders", "coveragerc", "cristi", "cristian", "cschema", "csrfmiddlewaretoken", "csrftoken", "dascalescu", "datadiff", "deauth", "deauthorize", "deprecated", "djangorestframework", "djmaster", "docstrings", "documentclass", "elnappo", "envlist", "eryk", "exitfirst", "extrahead", "figwidth", "filterset", "formop", "genindex", "getdefault", "ghuser", "gunicorn", "herokuapp", "hirokawa", "howto", "htbp", "htmlhelp", "immutablehash", "indentless", "initkwargs", "joellefkowitz", "jsons", "keepdb", "keyframeprefix", "letterpaper", "levelname", "linenos", "maxdepth", "minversion", "modindex", "monokai", "myparent", "napierała", "nbsp", "noscm", "npmignore", "odict", "omap", "paginators", "papersize", "passwordadmin", "plugable", "pointsize", "popd", "posargs", "preauth", "preauthorize", "prepended", "proxied", "psycopg", "pushd", "putenv", "pythonpath", "pytz", "qinsq", "quickstart", "rebilly", "redoc", "referenceable", "reftest", "refuri", "regexes", "representer", "rsichny", "rtype", "ruamel", "scrollbars", "searchbox", "serializers", "setuptools", "sidemenu", "sourcedir", "sphinxbuild", "sphinxopts", "sphinxproj", "staticfiles", "subclassing", "swaggerapi", "tenerowicz", "testenv", "testproj", "therefromhere", "toctree", "undoc", "unencrypted", "uritemplate", "urlconf", "urlconfs", "urlpatterns", "versionadded", "versionchanged", "versionmodified", "viewcode", "viewset", "viewsets", "vigrond", "vschema", "whitenoise", "wsgi", "xdist", "yasg", "yasgdoc", "yetanother", "yetanothers", "yourapp", "yusupov", "zbyszek" ] } drf-yasg-nonfree-1.21.15/.editorconfig000066400000000000000000000005471514731163200175150ustar00rootroot00000000000000root = true [*] end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true charset = utf-8 [*.py] indent_style = space indent_size = 4 [*.rst] indent_style = space indent_size = 3 [{package.json,package-lock.json}] indent_style = space indent_size = 2 [*.{yml,yaml}] indent_style = space indent_size = 2 [Makefile] indent_style = tab drf-yasg-nonfree-1.21.15/.gitattributes000066400000000000000000000000351514731163200177230ustar00rootroot00000000000000* text=auto *.sh text eol=lf drf-yasg-nonfree-1.21.15/.github/000077500000000000000000000000001514731163200163725ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/ISSUE_TEMPLATE/000077500000000000000000000000001514731163200205555ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/ISSUE_TEMPLATE/bug.md000066400000000000000000000010201514731163200216450ustar00rootroot00000000000000--- name: 'Bug Report' about: Report a bug --- # Bug Report ## Description A clear and concise description of the problem... ## Is this a regression? Yes, the previous version in which this bug was not present was: ... ## Minimal Reproduction ```code ``` ## Stack trace / Error message ```code ``` ## Your Environment ```code ``` drf-yasg-nonfree-1.21.15/.github/ISSUE_TEMPLATE/feature.md000066400000000000000000000006271514731163200225370ustar00rootroot00000000000000--- name: 'Feature Request' about: Suggest a feature --- # Feature Request ## Description A clear and concise description of the problem or missing capability... ## Describe the solution you'd like If you have a solution in mind, please describe it. ## Describe alternatives you've considered Have you considered any alternative solutions or workarounds? drf-yasg-nonfree-1.21.15/.github/PULL_REQUEST_TEMPLATE/000077500000000000000000000000001514731163200216515ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/PULL_REQUEST_TEMPLATE/general.md000066400000000000000000000012461514731163200236130ustar00rootroot00000000000000# PR Checklist Please check if your PR fulfills the following requirements: - [ ] The commit message follows our contributing guidelines - [ ] Tests for the changes have been added (for bug fixes / features) - [ ] Docs have been added / updated (for bug fixes / features) ## PR Type What kind of change does this PR introduce? - [ ] Bugfix - [ ] Feature - [ ] Code style update - [ ] Refactoring (no functional changes) - [ ] Build related changes - [ ] CI related changes - [ ] Documentation content changes - [ ] Other ## What is the current behavior? ## What is the new behavior? ## Does this PR introduce a breaking change? - [ ] Yes - [ ] No ## Other information drf-yasg-nonfree-1.21.15/.github/actions/000077500000000000000000000000001514731163200200325ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/actions/install/000077500000000000000000000000001514731163200215005ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/actions/install/action.yaml000066400000000000000000000013501514731163200236400ustar00rootroot00000000000000name: Install description: Install dependencies inputs: python-version: description: Python version for installing dependencies required: true runs: using: composite steps: - name: Checkout the source code uses: actions/checkout@v4 - name: Set the python version uses: actions/setup-python@v5 with: python-version: ${{ inputs.python-version }} - name: Set up pip package caching uses: actions/cache@v4 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt', '**/requirements/*.txt') }} restore-keys: ${{ runner.os }}-pip- - name: Install dependencies shell: bash run: pip install -r requirements/ci.txt drf-yasg-nonfree-1.21.15/.github/dependabot.yml000066400000000000000000000011031514731163200212150ustar00rootroot00000000000000# Keep GitHub Actions up to date with GitHub's Dependabot... # https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot # https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem version: 2 updates: - package-ecosystem: github-actions directory: / groups: github-actions: patterns: - "*" # Group all Actions updates into a single larger pull request schedule: interval: weekly drf-yasg-nonfree-1.21.15/.github/workflows/000077500000000000000000000000001514731163200204275ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/.github/workflows/publish.yaml000066400000000000000000000014701514731163200227630ustar00rootroot00000000000000name: Publish on: push: tags: - "*.*.*" jobs: publish: name: Publish the package on pypi runs-on: ubuntu-latest steps: - name: Checkout the source code uses: actions/checkout@v6 - name: Set the python version uses: actions/setup-python@v6 with: python-version: 3.13 - name: Install dependencies uses: ./.github/actions/install with: python-version: 3.13 - name: Install builders for publishing run: pip install -r requirements/publish.txt - name: Build the distributions run: python -m build --sdist --wheel - name: Publish the package uses: pypa/gh-action-pypi-publish@release/v1 with: user: __token__ password: ${{ secrets.PYPI_API_TOKEN }} drf-yasg-nonfree-1.21.15/.github/workflows/review.yaml000066400000000000000000000030211514731163200226100ustar00rootroot00000000000000name: Review on: [push, pull_request] jobs: test: name: Run linters and tests runs-on: ubuntu-latest strategy: fail-fast: false matrix: python: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - name: Checkout the source code uses: actions/checkout@v6 - name: Set the python version uses: actions/setup-python@v6 with: python-version: ${{ matrix.python }} - name: Install dependencies uses: ./.github/actions/install with: python-version: ${{ matrix.python }} - name: Run tests run: tox -e $(tox -l | grep py${PYTHON_VERSION//.} | paste -sd "," -) env: PYTHON_VERSION: ${{ matrix.python }} - name: Report coverage run: | pip install coverage coverage report - name: Check for incompatibilities with publishing to PyPi if: ${{ matrix.python == 3.13 }} run: | pip install -r requirements/publish.txt python -m build --sdist twine check dist/* # Return successful statuses "Run linters and tests" for python {3.6...8} # These are required for branch protection rules that cannot be removed yet # https://github.com/axnsan12/drf-yasg/pull/922#issuecomment-2739945046 review: name: Run linters and tests runs-on: ubuntu-latest needs: test strategy: fail-fast: false matrix: python: ["3.6", "3.7", "3.8", "3.9"] steps: - run: echo "Deprecated tests skipped 🧪" drf-yasg-nonfree-1.21.15/.gitignore000066400000000000000000000020211514731163200170150ustar00rootroot00000000000000.DS_Store .idea_modules/ .idea/ .ropeproject .spyderproject .spyproject *.iws atlassian-ide-plugin.xml out/ __pycache__/ .mypy_cache/ .Python .python-version *.py[cod] *.pyc *.so *$py.class /site .eggs/ .installed.cfg *.egg *.egg-info/ *.manifest *.spec build/ cmake-build-debug/ develop-eggs/ dist/ downloads/ eggs/ generated/ lib/ lib64/ MANIFEST output/ outputs/ parts/ sdist/ target/ var/ wheels/ node_modules/ pip-delete-this-directory.txt pip-log.txt pip-wheel-metadata/ .cache .coverage .coverage.* .hypothesis/ .pytest_cache/ .tox/ *.cover *.coverage coverage.xml coverage/ htmlcov/ nosetests.xml .env .venv *.env *.env.* env.bak/ env/ ENV/ venv.bak/ venv/ docs/_build/ docs/.doctrees/ .media/ .static_storage/ .webassets-cache instance/ local_settings.py testproj/db.sqlite3 testproj/staticfiles .ipynb_checkpoints .scrapy .terraform/ *.sage.py celerybeat-schedule *.log *.mo *.pot com_crashlytics_export_strings.xml crashlytics-build.properties crashlytics.properties fabric.properties *.dblite *.o *.tmp *.types *.zip drf-yasg-nonfree-1.21.15/.readthedocs.yml000066400000000000000000000003701514731163200201200ustar00rootroot00000000000000version: 2 sphinx: configuration: docs/conf.py formats: - pdf build: image: latest python: version: 3.8 install: - requirements: requirements/docs.txt - method: pip path: . extra_requirements: - validation drf-yasg-nonfree-1.21.15/CONTRIBUTING.rst000066400000000000000000000077051514731163200175040ustar00rootroot00000000000000.. |br| raw:: html
############ Contributing ############ Contributions are always welcome and appreciated! Here are some ways you can contribute. ****** Issues ****** You can and should open an issue for any of the following reasons: * you found a bug; steps for reproducing, or a pull request with a failing test case will be greatly appreciated * you wanted to do something but did not find a way to do it after reading the documentation * you believe the current way of doing something is more complicated or less elegant than it can be * a related feature that you want is missing from the package Please always check for existing issues before opening a new issue. ************* Pull requests ************* You want to contribute some code? Great! Here are a few steps to get you started: #. **Fork the repository on GitHub** #. **Clone your fork and create a branch for the code you want to add** #. **Create a new virtualenv and install the package in development mode** .. code:: console $ python -m venv venv $ source venv/bin/activate (venv) $ python -m pip install -U pip setuptools (venv) $ pip install -U -r requirements/dev.txt -e '.[validation]' #. **Make your changes and check them against the test project** .. code:: console (venv) $ cd testproj (venv) $ python manage.py migrate (venv) $ python manage.py runserver (venv) $ firefox localhost:8000/swagger/ #. **Update the tests if necessary** You can find them in the ``tests`` directory. If your change modifies the expected schema output, you should regenerate the reference schema at ``tests/reference.yaml``: .. code:: console (venv) $ python testproj/manage.py generate_swagger tests/reference.yaml --overwrite --user admin --url http://test.local:8002/ After checking the git diff to verify that no unexpected changes appeared, you should commit the new ``reference.yaml`` together with your changes. #. **Run tests. The project is setup to use tox and pytest for testing** .. code:: console # install test dependencies (venv) $ pip install -U -r requirements/test.txt # run tests in the current environment, faster than tox (venv) $ pytest -n auto --cov # (optional) sort imports with isort and check flake8 linting (venv) $ isort --apply (venv) $ flake8 src/drf_yasg testproj tests setup.py # (optional) run tests for other python versions in separate environments (venv) $ tox #. **Update documentation** If the change modifies behavior or adds new features, you should update the documentation and ``README.rst`` accordingly. Documentation is written in reStructuredText and built using Sphinx. You can find the sources in the ``docs`` directory. To build and check the docs, run .. code:: console (venv) $ tox -e docs #. **Push your branch and submit a pull request to the master branch on GitHub** Incomplete/Work In Progress pull requests are encouraged, because they allow you to get feedback and help more easily. #. **Your code must pass all the required CI jobs before it is merged** As of now, this consists of running on the supported Python, Django, DRF version matrix (see README), and building the docs successfully. ****************** Maintainer's notes ****************** Release checklist ================= * update ``docs/changelog.rst`` with changes since the last tagged version * commit & tag the release - ``git tag x.x.x -m "Release version x.x.x"`` * push using ``git push --follow-tags`` * verify that `Actions`_ has built the tag and successfully published the release to `PyPI`_ * publish release notes `on GitHub`_ * start the `ReadTheDocs build`_ if it has not already started .. _Actions: https://github.com/axnsan12/drf-yasg/actions .. _PyPI: https://pypi.org/project/drf-yasg/ .. _on GitHub: https://github.com/axnsan12/drf-yasg/releases .. _ReadTheDocs build: https://readthedocs.org/projects/drf-yasg/builds/ drf-yasg-nonfree-1.21.15/Dockerfile000066400000000000000000000007571514731163200170350ustar00rootroot00000000000000FROM python:3.11-slim WORKDIR /build RUN apt-get update RUN apt-get install -y --no-install-recommends gcc libpq-dev RUN rm -rf /var/lib/apt/lists/* COPY pyproject.toml . COPY src src RUN pip install . COPY requirements requirements RUN pip install -r requirements/testproj.txt RUN pip install psycopg2-binary gunicorn whitenoise COPY testproj . RUN python manage.py collectstatic --noinput RUN python manage.py migrate CMD ["gunicorn", "testproj.wsgi:application", "--bind", "0.0.0.0:80"] drf-yasg-nonfree-1.21.15/LICENSE.rst000066400000000000000000000031471514731163200166530ustar00rootroot00000000000000.. |br| raw:: html
####### License ####### ******************** BSD 3-Clause License ******************** Copyright (c) 2017 - 2019, Cristian V. |br|\ All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. drf-yasg-nonfree-1.21.15/MANIFEST.in000066400000000000000000000002621514731163200165700ustar00rootroot00000000000000include README.rst include LICENSE.rst include pyproject.toml recursive-include requirements * recursive-include src/drf_yasg/static * recursive-include src/drf_yasg/templates * drf-yasg-nonfree-1.21.15/README.rst000066400000000000000000000353451514731163200165330ustar00rootroot00000000000000.. role:: python(code) :language: python ######################################## drf-yasg - Yet another Swagger generator ######################################## |actions| |nbsp| |codecov| |nbsp| |rtd-badge| |nbsp| |pypi-version| |nbsp| |gitter| Generate **real** Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API. Compatible with - **Django Rest Framework**: 3.13, 3.14, 3.15 - **Django**: 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 - **Python**: 3.9, 3.10, 3.11, 3.12, 3.13 Only the latest patch version of each ``major.minor`` series of Python, Django and Django REST Framework is supported. **Only the latest version of drf-yasg is supported.** Support of old versions is dropped immediately with the release of a new version. Please do not create issues before upgrading to the latest release available at the time. Regression reports are accepted and will be resolved with a new release as quickly as possible. Removed features will usually go through a deprecation cycle of a few minor releases. Resources: * `Sources `_ * `Documentation `_ * `Changelog `_ * `Discussion `_ .. image:: https://img.shields.io/badge/live%20demo-blue?style=for-the-badge&logo=django :target: https://drf-yasg.com :alt: Live Demo **************** OpenAPI 3.0 note **************** If you are looking to add Swagger/OpenAPI support to a new project you might want to take a look at `drf-spectacular `_, which is an actively maintained new library that shares most of the goals of this project, while working with OpenAPI 3.0 schemas. OpenAPI 3.0 provides a lot more flexibility than 2.0 in the types of API that can be described. ``drf-yasg`` is unlikely to soon, if ever, get support for OpenAPI 3.0. ******** Features ******** - full support for nested Serializers and Schemas - response schemas and descriptions - model definitions compatible with codegen tools - customization hooks at all points in the spec generation process - JSON and YAML format for spec - bundles latest version of `swagger-ui `_ and `redoc `_ for viewing the generated documentation - schema view is cacheable out of the box - generated Swagger schema can be automatically validated by `swagger-spec-validator `_ - supports Django REST Framework API versioning with ``URLPathVersioning`` and ``NamespaceVersioning``; other DRF or custom versioning schemes are not currently supported .. figure:: https://raw.githubusercontent.com/axnsan12/drf-yasg/1.0.2/screenshots/redoc-nested-response.png :width: 100% :figwidth: image :alt: redoc screenshot **Fully nested request and response schemas.** .. figure:: https://raw.githubusercontent.com/axnsan12/drf-yasg/1.0.2/screenshots/swagger-ui-list.png :width: 100% :figwidth: image :alt: swagger-ui screenshot **Choose between redoc and swagger-ui.** .. figure:: https://raw.githubusercontent.com/axnsan12/drf-yasg/1.0.2/screenshots/swagger-ui-models.png :width: 100% :figwidth: image :alt: model definitions screenshot **Real Model definitions.** ***************** Table of contents ***************** .. contents:: :depth: 4 ***** Usage ***** 0. Installation =============== The preferred installation method is directly from pypi: .. code:: console pip install --upgrade drf-yasg Additionally, if you want to use the built-in validation mechanisms (see `4. Validation`_), you need to install some extra requirements: .. code:: console pip install --upgrade drf-yasg[validation] .. _readme-quickstart: 1. Quickstart ============= In ``settings.py``: .. code:: python INSTALLED_APPS = [ ... 'django.contrib.staticfiles', # required for serving swagger ui's css/js files 'drf_yasg', ... ] In ``urls.py``: .. code:: python ... from django.urls import re_path from rest_framework import permissions from drf_yasg.views import get_schema_view from drf_yasg import openapi ... schema_view = get_schema_view( openapi.Info( title="Snippets API", default_version='v1', description="Test description", terms_of_service="https://www.google.com/policies/terms/", contact=openapi.Contact(email="contact@snippets.local"), license=openapi.License(name="BSD License"), ), public=True, permission_classes=(permissions.AllowAny,), ) urlpatterns = [ path('swagger./', schema_view.without_ui(cache_timeout=0), name='schema-json'), path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ... ] This exposes 4 endpoints: * A JSON view of your API specification at ``/swagger.json`` * A YAML view of your API specification at ``/swagger.yaml`` * A swagger-ui view of your API specification at ``/swagger/`` * A ReDoc view of your API specification at ``/redoc/`` 2. Configuration ================ --------------------------------- a. ``get_schema_view`` parameters --------------------------------- - ``info`` - Swagger API Info object; if omitted, defaults to ``DEFAULT_INFO`` - ``url`` - API base url; if left blank will be deduced from the location the view is served at - ``patterns`` - passed to SchemaGenerator - ``urlconf`` - passed to SchemaGenerator - ``public`` - if False, includes only endpoints the current user has access to - ``validators`` - a list of validator names to apply on the generated schema; only ``ssv`` is currently supported - ``generator_class`` - schema generator class to use; should be a subclass of ``OpenAPISchemaGenerator`` - ``authentication_classes`` - authentication classes for the schema view itself - ``permission_classes`` - permission classes for the schema view itself ------------------------------- b. ``SchemaView`` options ------------------------------- - :python:`SchemaView.with_ui(renderer, cache_timeout, cache_kwargs)` - get a view instance using the specified UI renderer; one of ``swagger``, ``redoc`` - :python:`SchemaView.without_ui(cache_timeout, cache_kwargs)` - get a view instance with no UI renderer; same as ``as_cached_view`` with no kwargs - :python:`SchemaView.as_cached_view(cache_timeout, cache_kwargs, **initkwargs)` - same as ``as_view``, but with optional caching - you can, of course, call :python:`as_view` as usual All of the first 3 methods take two optional arguments, ``cache_timeout`` and ``cache_kwargs``; if present, these are passed on to Django’s :python:`cached_page` decorator in order to enable caching on the resulting view. See `3. Caching`_. ---------------------------------------------- c. ``SWAGGER_SETTINGS`` and ``REDOC_SETTINGS`` ---------------------------------------------- Additionally, you can include some more settings in your ``settings.py`` file. See https://drf-yasg.readthedocs.io/en/stable/settings.html for details. 3. Caching ========== Since the schema does not usually change during the lifetime of the django process, there is out of the box support for caching the schema view in-memory, with some sane defaults: * caching is enabled by the `cache_page `__ decorator, using the default Django cache backend, can be changed using the ``cache_kwargs`` argument * HTTP caching of the response is blocked to avoid confusing situations caused by being shown stale schemas * the cached schema varies on the ``Cookie`` and ``Authorization`` HTTP headers to enable filtering of visible endpoints according to the authentication credentials of each user; note that this means that every user accessing the schema will have a separate schema cached in memory. 4. Validation ============= Given the numerous methods to manually customize the generated schema, it makes sense to validate the result to ensure it still conforms to OpenAPI 2.0. To this end, validation is provided at the generation point using python swagger libraries, and can be activated by passing :python:`validators=['ssv']` to ``get_schema_view``; if the generated schema is not valid, a :python:`SwaggerValidationError` is raised by the handling codec. **Warning:** This internal validation can slow down your server. Caching can mitigate the speed impact of validation. The provided validation will catch syntactic errors, but more subtle violations of the spec might slip by them. To ensure compatibility with code generation tools, it is recommended to also employ one or more of the following methods: ------------------------------- ``swagger-ui`` validation badge ------------------------------- Online ^^^^^^ If your schema is publicly accessible, `swagger-ui` will automatically validate it against the official swagger online validator and display the result in the bottom-right validation badge. Offline ^^^^^^^ If your schema is not accessible from the internet, you can run a local copy of `swagger-validator `_ and set the ``VALIDATOR_URL`` accordingly: .. code:: python SWAGGER_SETTINGS = { ... 'VALIDATOR_URL': 'http://localhost:8189', ... } .. code:: console $ docker run --name swagger-validator -d -p 8189:8080 --add-host test.local:10.0.75.1 swaggerapi/swagger-validator 84dabd52ba967c32ae6b660934fa6a429ca6bc9e594d56e822a858b57039c8a2 $ curl http://localhost:8189/debug?url=http://test.local:8002/swagger/?format=openapi {} --------------------- Using ``swagger-cli`` --------------------- https://www.npmjs.com/package/swagger-cli .. code:: console $ npm install -g swagger-cli [...] $ swagger-cli validate http://test.local:8002/swagger.yaml http://test.local:8002/swagger.yaml is valid -------------------------------------------------------------- Manually on `editor.swagger.io `__ -------------------------------------------------------------- Importing the generated spec into https://editor.swagger.io/ will automatically trigger validation on it. This method is currently the only way to get both syntactic and semantic validation on your specification. The other validators only provide JSON schema-level validation, but miss things like duplicate operation names, improper content types, etc 5. Code generation ================== You can use the specification outputted by this library together with `swagger-codegen `_ to generate client code in your language of choice: .. code:: console $ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/tests/reference.yaml -l javascript -o /local/.codegen/js See the GitHub page linked above for more details. .. _readme-testproj: 6. Example project ================== For additional usage examples, you can take a look at the test project in the ``testproj`` directory: .. code:: console $ git clone https://github.com/axnsan12/drf-yasg.git $ cd drf-yasg $ virtualenv venv $ source venv/bin/activate (venv) $ cd testproj (venv) $ python -m pip install --upgrade pip setuptools (venv) $ pip install --upgrade -r requirements.txt (venv) $ python manage.py migrate (venv) $ python manage.py runserver (venv) $ firefox localhost:8000/swagger/ ************************ Third-party integrations ************************ djangorestframework-camel-case =============================== Integration with `djangorestframework-camel-case `_ is provided out of the box - if you have ``djangorestframework-camel-case`` installed and your ``APIView`` uses ``CamelCaseJSONParser`` or ``CamelCaseJSONRenderer``, all property names will be converted to *camelCase* by default. djangorestframework-recursive =============================== Integration with `djangorestframework-recursive `_ is provided out of the box - if you have ``djangorestframework-recursive`` installed. .. |actions| image:: https://img.shields.io/github/actions/workflow/status/axnsan12/drf-yasg/review.yaml?branch=master :target: https://github.com/axnsan12/drf-yasg/actions :alt: GitHub Workflow Status .. |codecov| image:: https://img.shields.io/codecov/c/github/axnsan12/drf-yasg/master.svg :target: https://codecov.io/gh/axnsan12/drf-yasg :alt: Codecov .. |pypi-version| image:: https://img.shields.io/pypi/v/drf-yasg.svg :target: https://pypi.org/project/drf-yasg/ :alt: PyPI .. |gitter| image:: https://badges.gitter.im/drf-yasg.svg :target: https://app.gitter.im/#/room/#drf-yasg:gitter.im :alt: Gitter .. |rtd-badge| image:: https://img.shields.io/readthedocs/drf-yasg.svg :target: https://drf-yasg.readthedocs.io/ :alt: ReadTheDocs .. |nbsp| unicode:: 0xA0 :trim: drf-extra-fields ================= Integration with `drf-extra-fields `_ has a problem with Base64 fields. The drf-yasg will generate Base64 file or image fields as Readonly and not required. Here is a workaround code for display the Base64 fields correctly. .. code:: python class PDFBase64FileField(Base64FileField): ALLOWED_TYPES = ['pdf'] class Meta: swagger_schema_fields = { 'type': 'string', 'title': 'File Content', 'description': 'Content of the file base64 encoded', 'read_only': False # <-- FIX } def get_file_extension(self, filename, decoded_file): try: PyPDF2.PdfFileReader(io.BytesIO(decoded_file)) except PyPDF2.utils.PdfReadError as e: logger.warning(e) else: return 'pdf' ************ Contributing ************ See https://drf-yasg.readthedocs.io/en/stable/contributing.html for details. This repository adheres to semantic versioning standards. For more information on semantic versioning visit `SemVer `_. To keep our process simple we merge pull requests into the master branch we use git tags for releases. We use labels to mark which issues are intended for each version. For example: .. figure:: ./docs/images/flow.png :width: 70% :figwidth: image :alt: Git flow :align: center Labels ====== - New issues without a version are given a ``triage`` label. - Issues are labeled ``bug``, ``enhancement`` or ``question`` to describe their content - Once given a version, an issue will either have an assignee or be given a ``help wanted`` label - A question that hasn't been answered will be given an ``unanswered`` label drf-yasg-nonfree-1.21.15/cloud/000077500000000000000000000000001514731163200161405ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/cloud/.terraform.lock.hcl000066400000000000000000000046261514731163200216460ustar00rootroot00000000000000# This file is maintained automatically by "terraform init". # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/aws" { version = "5.100.0" constraints = "~> 5.0" hashes = [ "h1:Ijt7pOlB7Tr7maGQIqtsLFbl7pSMIj06TVdkoSBcYOw=", "zh:054b8dd49f0549c9a7cc27d159e45327b7b65cf404da5e5a20da154b90b8a644", "zh:0b97bf8d5e03d15d83cc40b0530a1f84b459354939ba6f135a0086c20ebbe6b2", "zh:1589a2266af699cbd5d80737a0fe02e54ec9cf2ca54e7e00ac51c7359056f274", "zh:6330766f1d85f01ae6ea90d1b214b8b74cc8c1badc4696b165b36ddd4cc15f7b", "zh:7c8c2e30d8e55291b86fcb64bdf6c25489d538688545eb48fd74ad622e5d3862", "zh:99b1003bd9bd32ee323544da897148f46a527f622dc3971af63ea3e251596342", "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", "zh:9f8b909d3ec50ade83c8062290378b1ec553edef6a447c56dadc01a99f4eaa93", "zh:aaef921ff9aabaf8b1869a86d692ebd24fbd4e12c21205034bb679b9caf883a2", "zh:ac882313207aba00dd5a76dbd572a0ddc818bb9cbf5c9d61b28fe30efaec951e", "zh:bb64e8aff37becab373a1a0cc1080990785304141af42ed6aa3dd4913b000421", "zh:dfe495f6621df5540d9c92ad40b8067376350b005c637ea6efac5dc15028add4", "zh:f0ddf0eaf052766cfe09dea8200a946519f653c384ab4336e2a4a64fdd6310e9", "zh:f1b7e684f4c7ae1eed272b6de7d2049bb87a0275cb04dbb7cda6636f600699c9", "zh:ff461571e3f233699bf690db319dfe46aec75e58726636a0d97dd9ac6e32fb70", ] } provider "registry.terraform.io/hashicorp/random" { version = "3.7.2" hashes = [ "h1:KG4NuIBl1mRWU0KD/BGfCi1YN/j3F7H4YgeeM7iSdNs=", "zh:14829603a32e4bc4d05062f059e545a91e27ff033756b48afbae6b3c835f508f", "zh:1527fb07d9fea400d70e9e6eb4a2b918d5060d604749b6f1c361518e7da546dc", "zh:1e86bcd7ebec85ba336b423ba1db046aeaa3c0e5f921039b3f1a6fc2f978feab", "zh:24536dec8bde66753f4b4030b8f3ef43c196d69cccbea1c382d01b222478c7a3", "zh:29f1786486759fad9b0ce4fdfbbfece9343ad47cd50119045075e05afe49d212", "zh:4d701e978c2dd8604ba1ce962b047607701e65c078cb22e97171513e9e57491f", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", "zh:7b8434212eef0f8c83f5a90c6d76feaf850f6502b61b53c329e85b3b281cba34", "zh:ac8a23c212258b7976e1621275e3af7099e7e4a3d4478cf8d5d2a27f3bc3e967", "zh:b516ca74431f3df4c6cf90ddcdb4042c626e026317a33c53f0b445a3d93b720d", "zh:dc76e4326aec2490c1600d6871a95e78f9050f9ce427c71707ea412a2f2f1a62", "zh:eac7b63e86c749c7d48f527671c7aee5b4e26c10be6ad7232d6860167f99dbb0", ] } drf-yasg-nonfree-1.21.15/cloud/apprunner.tf000066400000000000000000000024131514731163200205050ustar00rootroot00000000000000resource "aws_apprunner_auto_scaling_configuration_version" "demo" { auto_scaling_configuration_name = "drf-yasg-demo-scaling" max_concurrency = 10 max_size = 1 tags = local.tags } resource "aws_apprunner_service" "demo" { service_name = "drf-yasg-demo" source_configuration { authentication_configuration { access_role_arn = aws_iam_role.service.arn } image_repository { image_repository_type = "ECR" image_identifier = data.aws_ecr_image.demo.image_uri image_configuration { port = "80" runtime_environment_variables = { DJANGO_SETTINGS_MODULE = "testproj.settings.prod" DJANGO_SECRET_KEY = random_password.django_secret_key.result DJANGO_HOST_DOMAIN = aws_route53_zone.drf_yasg.name DJANGO_HOST_URL = "https://${aws_route53_zone.drf_yasg.name}" } } } } instance_configuration { cpu = "256" memory = "512" } auto_scaling_configuration_arn = aws_apprunner_auto_scaling_configuration_version.demo.arn tags = local.tags } resource "aws_apprunner_custom_domain_association" "demo" { domain_name = aws_route53_zone.drf_yasg.name service_arn = aws_apprunner_service.demo.arn enable_www_subdomain = false } drf-yasg-nonfree-1.21.15/cloud/backend.tf000066400000000000000000000001741514731163200200640ustar00rootroot00000000000000terraform { backend "s3" { bucket = "elixir-drf-yasg-backend" key = "terraform" region = "eu-west-2" } } drf-yasg-nonfree-1.21.15/cloud/budgets.tf000066400000000000000000000012311514731163200201250ustar00rootroot00000000000000resource "aws_ce_cost_allocation_tag" "group" { tag_key = "group" status = "Active" } resource "aws_budgets_budget" "costs" { name = "drf-yasg-monthly-budget" time_unit = "MONTHLY" budget_type = "COST" limit_amount = "5" limit_unit = "USD" cost_filter { name = "TagKeyValue" values = ["group$drf-yasg"] } notification { comparison_operator = "GREATER_THAN" threshold = 80 threshold_type = "PERCENTAGE" notification_type = "ACTUAL" subscriber_sns_topic_arns = [aws_sns_topic.costs.arn] } depends_on = [aws_ce_cost_allocation_tag.group] tags = local.tags } drf-yasg-nonfree-1.21.15/cloud/certificates.tf000066400000000000000000000007161514731163200211440ustar00rootroot00000000000000resource "aws_acm_certificate" "app" { provider = aws.us_east_1 domain_name = aws_route53_zone.drf_yasg.name validation_method = "DNS" lifecycle { create_before_destroy = true } tags = local.tags } resource "aws_acm_certificate_validation" "app" { provider = aws.us_east_1 certificate_arn = aws_acm_certificate.app.arn validation_record_fqdns = [aws_route53_record.certificate.fqdn] timeouts { create = "5m" } } drf-yasg-nonfree-1.21.15/cloud/costs.tf000066400000000000000000000015471514731163200176350ustar00rootroot00000000000000resource "aws_ce_anomaly_monitor" "costs" { name = "drf-yasg-cost-monitor" monitor_type = "CUSTOM" monitor_specification = jsonencode({ And = null CostCategories = null Dimensions = null Not = null Or = null Tags = { MatchOptions = null Key = "user:group" Values = ["drf-yasg"] } }) tags = local.tags } resource "aws_ce_anomaly_subscription" "costs" { name = "drf-yasg-cost-subscription" frequency = "IMMEDIATE" threshold_expression { dimension { key = "ANOMALY_TOTAL_IMPACT_PERCENTAGE" match_options = ["GREATER_THAN_OR_EQUAL"] values = ["10"] } } monitor_arn_list = [ aws_ce_anomaly_monitor.costs.arn ] subscriber { type = "SNS" address = aws_sns_topic.costs.arn } tags = local.tags } drf-yasg-nonfree-1.21.15/cloud/data.tf000066400000000000000000000002741514731163200174070ustar00rootroot00000000000000data "aws_apprunner_hosted_zone_id" "current" {} data "aws_ecr_image" "demo" { repository_name = aws_ecr_repository.demo.name most_recent = true } data "aws_region" "current" {} drf-yasg-nonfree-1.21.15/cloud/domains.tf000066400000000000000000000005511514731163200201260ustar00rootroot00000000000000resource "aws_route53domains_registered_domain" "drf_yasg" { domain_name = aws_route53_zone.drf_yasg.name dynamic "name_server" { for_each = aws_route53_zone.drf_yasg.name_servers content { name = name_server.value } } transfer_lock = true auto_renew = true lifecycle { prevent_destroy = true } tags = local.tags } drf-yasg-nonfree-1.21.15/cloud/ecr.tf000066400000000000000000000014311514731163200172430ustar00rootroot00000000000000resource "aws_ecr_lifecycle_policy" "delete_images" { repository = aws_ecr_repository.demo.name policy = jsonencode({ rules = [ for i, selection in [ { tagStatus = "untagged" countType = "sinceImagePushed" countUnit = "days" countNumber = 1 }, { tagStatus = "tagged" tagPatternList = ["*"] countType = "imageCountMoreThan" countNumber = 5 } ] : { rulePriority = i + 1 selection = selection action = { type = "expire" } } ] }) } resource "aws_ecr_repository" "demo" { name = "drf-yasg-demo" image_scanning_configuration { scan_on_push = true } tags = local.tags } drf-yasg-nonfree-1.21.15/cloud/iam.tf000066400000000000000000000016631514731163200172470ustar00rootroot00000000000000resource "aws_iam_role" "service" { name = "drf-yasg-demo-apprunner-service-access-role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Principal = { Service = "build.apprunner.amazonaws.com" } Action = "sts:AssumeRole" } ] }) tags = local.tags } resource "aws_iam_role_policy" "service" { name = "drf-yasg-demo-apprunner-service-access-policy" role = aws_iam_role.service.id policy = jsonencode({ Version = "2012-10-17" Statement = [ { Effect = "Allow" Action = [ "ecr:GetAuthorizationToken" ] Resource = "*" }, { Effect = "Allow" Action = [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ] Resource = aws_ecr_repository.demo.arn } ] }) } drf-yasg-nonfree-1.21.15/cloud/locals.tf000066400000000000000000000007501514731163200177520ustar00rootroot00000000000000locals { tags = { group = "drf-yasg" } certificate = one([ for dvo in aws_acm_certificate.app.domain_validation_options : { name = dvo.resource_record_name type = dvo.resource_record_type records = [dvo.resource_record_value] } if dvo.domain_name == aws_route53_zone.drf_yasg.name ]) demo_validation = { for record in aws_apprunner_custom_domain_association.demo.certificate_validation_records : record.name => record } } drf-yasg-nonfree-1.21.15/cloud/providers.tf000066400000000000000000000001541514731163200205100ustar00rootroot00000000000000provider "aws" { region = "eu-west-2" } provider "aws" { region = "us-east-1" alias = "us_east_1" } drf-yasg-nonfree-1.21.15/cloud/random.tf000066400000000000000000000001231514731163200177470ustar00rootroot00000000000000resource "random_password" "django_secret_key" { length = 50 special = true } drf-yasg-nonfree-1.21.15/cloud/route53.tf000066400000000000000000000016351514731163200200060ustar00rootroot00000000000000resource "aws_route53_record" "certificate" { zone_id = aws_route53_zone.drf_yasg.zone_id name = local.certificate.name type = local.certificate.type records = local.certificate.records ttl = 300 allow_overwrite = true } resource "aws_route53_record" "demo" { zone_id = aws_route53_zone.drf_yasg.zone_id name = aws_route53_zone.drf_yasg.name type = "A" alias { name = aws_apprunner_service.demo.service_url zone_id = data.aws_apprunner_hosted_zone_id.current.id evaluate_target_health = true } } resource "aws_route53_record" "demo_validation" { for_each = local.demo_validation zone_id = aws_route53_zone.drf_yasg.zone_id name = each.value.name type = each.value.type records = [each.value.value] ttl = 300 allow_overwrite = true } resource "aws_route53_zone" "drf_yasg" { name = "drf-yasg.com" tags = local.tags } drf-yasg-nonfree-1.21.15/cloud/sns.tf000066400000000000000000000003551514731163200173010ustar00rootroot00000000000000resource "aws_sns_topic" "costs" { name = "drf-yasg-cost-alerts" tags = local.tags } resource "aws_sns_topic_subscription" "costs" { topic_arn = aws_sns_topic.costs.arn protocol = "email" endpoint = "joel@smoothycode.com" } drf-yasg-nonfree-1.21.15/cloud/terraform.tf000066400000000000000000000002231514731163200204710ustar00rootroot00000000000000terraform { required_version = ">= 1.0" required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } drf-yasg-nonfree-1.21.15/docs/000077500000000000000000000000001514731163200157625ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/docs/Makefile000066400000000000000000000011361514731163200174230ustar00rootroot00000000000000# Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXPROJ = drf-yasg SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) drf-yasg-nonfree-1.21.15/docs/_static/000077500000000000000000000000001514731163200174105ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/docs/_static/.gitignore000066400000000000000000000000441514731163200213760ustar00rootroot00000000000000# force directory to show up in git drf-yasg-nonfree-1.21.15/docs/_static/css/000077500000000000000000000000001514731163200202005ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/docs/_static/css/style.css000066400000000000000000000011241514731163200220500ustar00rootroot00000000000000.versionadded, .versionchanged, .deprecated { font-family: "Roboto", Corbel, Avenir, "Lucida Grande", "Lucida Sans", sans-serif; padding: 10px 13px; border: 1px solid rgb(137, 191, 4); border-radius: 4px; margin-bottom: 10px; } .versionmodified { font-weight: bold; display: block; } .versionadded p, .versionchanged p, .deprecated p, /*override fucking !important by being more specific */ .rst-content dl .versionadded p, .rst-content dl .versionchanged p { margin: 0 !important; } .align-center { width: 100% !important; background-color: #000000; } drf-yasg-nonfree-1.21.15/docs/_templates/000077500000000000000000000000001514731163200201175ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/docs/_templates/.gitignore000066400000000000000000000000441514731163200221050ustar00rootroot00000000000000# force directory to show up in git drf-yasg-nonfree-1.21.15/docs/_templates/layout.html000066400000000000000000000003071514731163200223220ustar00rootroot00000000000000{% extends "!layout.html" %} {% block extrahead %} {% endblock %} drf-yasg-nonfree-1.21.15/docs/changelog.rst000066400000000000000000000702531514731163200204520ustar00rootroot00000000000000######### Changelog ######### *********** **1.21.15** *********** **IMPROVED:** Use Python's native `dict` instead of `OrderedDict` (#954) **FIXED:** Fix Python 3.12 type parameter syntax with ``from __future__ import annotations`` (#921) *********** **1.21.14** *********** *********** **1.21.13** *********** **FIXED:** Fix missing swagger-ui sourcemaps (:pr:`950`) *********** **1.21.12** *********** **FIXED:** Bring the bundled swagger ui up to date (:pr:`944`) **IMPROVED:** Update the logout button to use a POST request. (:pr:`945`) **ADDED:** Add a live demo domain (:pr:`946`) **ADDED:** Handle annotations that are not available at runtime (:pr:`941`) *********** **1.21.11** *********** **FIXED:** Fix list views with parameters in last path segment not named "list" views (:pr:`917`) **ADDED:** Allow overriding produces/consumes with @swagger_auto_schema decorator (:pr:`916`) **FIXED:** Fix filter parameters not appearing in swagger with django-filter>=25 (:pr:`926`) **IMPROVED:** Update Python, Django, and DRF versions and packaging configuration (:pr:`922`) **IMPROVED:** Remove usage of pkg_resources (:pr:`928`) **FIXED:** Fix call_view_method warning to include the method name again (:pr:`923`) **ADDED:** Add a hide download button option (:pr:`848`) **ADDED:** Add ruff linters (:pr:`903`) *********** **1.21.10** *********** **FIXED:** Fix type hints when using postponed evaluation of annotations (PEP-563) (:pr:`840`) **IMPROVED:** Update JSON & YAML renderers to not use a "." in their format string (:pr:`911`) **FIXED:** Fix lint errors when comparing types with == instead of is (:pr:`868`) **IMPROVED:** Update swagger-ui-dist to address CVE-2021-46708 (:pr:`904`) ********** **1.21.9** ********** **ADDED:** Added support for zoneinfo object fields (:pr:`908`) ********** **1.21.8** ********** **ADDED:** Python 3.11 and 3.12 support (:pr:`891`) **FIXED:** Fix pkg_resources version lookups for Python 3.9+ (:pr:`891`) ********** **1.21.7** ********** *Release date: Jul 20, 2023* **ADDED:** Added ``drf_yasg.inspectors.query.DrfAPICompatInspector`` (:pr:`857`) **ADDED:** Added ``DrfAPICompatInspector`` to serve as a replacement ``CoreAPICompatInspector`` (:pr:`857`) **ADDED:** Allow ``DEFAULT_SPEC_RENDERERS`` default renderers to be overriden in the settings (:pr:`857`) **FIXED:** Fixed redoc source mapping (:pr:`859`) ********** **1.21.6** ********** *Release date: Jun 15, 2023* **IMPROVED:** Remove required coreapi dependency (:pr:`854`) **IMPROVED:** Feature: Migrate to PyYAML for yaml generator (:pr:`845`) **FIXED:** Keep path parameters in their given order (:pr:`841`) **FIXED:** Provide support for enums in codecs (:pr:`837`) ********** **1.21.5** ********** *Release date: Feb 09, 2023* **ADDED:** Python 3.10 support (:pr:`818`) **DEPRECATED:** Python 3.6 support as it's been deprecated by swagger-spec-validator **FIXED:** RecursiveField resolver (:pr:`822`) ********** **1.21.4** ********** *Release date: Sep 26, 2022* **FIXED:** Remove NullBooleanFields if the django-rest-framework version >= 3.14.0 (:pr:`814`) ********** **1.21.3** ********** *Release date: Jul 18, 2022* **FIXED:** Set generator url for swagger_settings.DEFAULT_API_URL (:pr:`682`) **FIXED:** Check fields for allow_null attribute (:pr:`688`) **FIXED:** Encode pytz object field as a string by default (:pr:`717`) **FIXED:** Handle errors rendering with TemplateHTMLRenderer (:pr:`742`) ********** **1.21.2** ********** *Release date: Jul 18, 2022* **FIXED:** Fixed code block rst syntax in ``README.rst`` ********** **1.21.1** ********** *Release date: Jul 17, 2022* **FIXED:** Refer to permission_classes as a tuple (:pr:`678`) **IMPROVED:** Document drf-extra-fields base64 integration (:pr:`445`) **ADDED:** Added many support to example code (:pr:`695`) **ADDED:** Allow specifying response as a reference (:pr:`757`) **FIXED:** Fix old spelling errors and add a cspell configuration (:pr:`796`) **FIXED:** Remove universal wheel, python 2 is unsupported (:pr:`782`) **FIXED:** Fix duration field inspector (:pr:`549`) ********** **1.21.0** ********** *Release date: Jul 14, 2022* - **IMPROVED:** Add utf-8 support to yaml loaders (:pr:`692`) ********** **1.20.3** ********** *Release date: Jul 14, 2022* - **FIXED:** Source mapping in ``redoc.min.js`` (:pr:`778`) - **FIXED:** Publish action tag pattern in ``publish.yml`` (:pr:`794`) ********** **1.20.0** ********** *Release date: Oct 25, 2020* - **IMPROVED:** updated ``swagger-ui`` to version 3.36.0 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.40 - **FIXED:** fixed compatibility with Django Rest Framework 3.12 - **FIXED:** fixed compatibility with Python 3.9 typing generics - **FIXED:** dropped support for obsolete ``django.conf.settings.LOGOUT_URL`` (:pr:`646`) | **Support was dropped for Python 2.7, DRF 3.8, DRF 3.9.** | **Requirements are now: Python>=3.6, Django>=2.2, DRF>=3.10** The 1.18 and 1.19 series was skipped to avoid confusion with the drf-yasg2 fork. I would also like to take this opportunity to extend my apologies to the community at large for the large gap in the maintenance of drf-yasg and the problems it has caused. ********** **1.17.1** ********** *Release date: Feb 17, 2020* - **FIXED:** fixed compatibility issue with CurrentUserDefault in Django Rest Framework 3.11 - **FIXED:** respect `USERNAME_FIELD` in `generate_swagger` command (:pr:`486`) **Support was dropped for Python 3.5, Django 2.0, Django 2.1, DRF 3.7** ********** **1.17.0** ********** *Release date: Oct 03, 2019* - **ADDED:** added `JSONFieldInspector` for `JSONField` support (:pr:`417`) - **IMPROVED:** updated ``swagger-ui`` to version 3.23.11 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.14 (:issue:`398`) - **FIXED:** fixed a type hint support issue (:pr:`428`, :issue:`450`) - **FIXED:** fixed packaging issue caused by a missing requirement (:issue:`412`) ********** **1.16.1** ********** *Release date: Jul 16, 2019* - **IMPROVED:** better enum type detection for nested `ChoiceField`\ s (:pr:`400`) - **FIXED:** fixed DRF 3.10 compatibility (:pr:`408`, :issue:`410`, :issue:`411`) ********** **1.16.0** ********** *Release date: Jun 13, 2019* - **ADDED:** added `reference_resolver_class` attribute hook to `SwaggerAutoSchema` (:pr:`350`) - **ADDED:** added `operation_keys` attribute to `SwaggerAutoSchema`, along with `__init__` parameter (:pr:`355`) - **FIXED:** fixed potential crash on `issubclass` check without `isclass` check ********** **1.15.1** ********** *Release date: Jun 13, 2019* - **IMPROVED:** updated ``swagger-ui`` to version 3.22.3 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.8-1 - **FIXED:** fixed an issue with inspection of typing hints on Python 2.7 (:issue:`363`) - **FIXED:** fixed an issue with inspection of typing hints on Python 3.7 (:issue:`371`) **Python 3.4 support has been dropped!** ********** **1.15.0** ********** *Release date: Apr 01, 2019* - **ADDED:** added ``is_list_view`` and ``has_list_response`` extension points to ``SwaggerAutoSchema`` (:issue:`331`) - **IMPROVED:** updated ``swagger-ui`` to version 3.22.0 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.4 - **FIXED:** ``ListModelMixin`` will now always be treated as a list view (:issue:`306`) - **FIXED:** non-primitive values in field ``choices`` will now be handled properly (:issue:`340`) ********** **1.14.0** ********** *Release date: Mar 04, 2019* - **IMPROVED:** updated ``swagger-ui`` to version 3.21.0 - **FIXED:** implicit ``ref_name`` collisions will now throw an exception - **FIXED:** ``RecursiveField`` will now also work as a child of ``ListSerializer`` (:pr:`321`) - **FIXED:** fixed ``minLength`` and ``maxLength`` for ``ListSerializer`` and ``ListField`` - **FIXED:** the ``items`` property of ``Schema``, ``Parameter`` and ``Items`` objects was renamed to ``items_``; this is a *mildly breaking change* and was needed to fix the collision with the ``items`` method of ``dict`` (:pr:`308`) - **REMOVED:** the ``get_summary`` and ``get_description`` methods have been removed (previously deprecated in 1.12.0) ********** **1.13.0** ********** *Release date: Jan 29, 2019* - **IMPROVED:** type hint inspection is now supported for collections and ``Optional`` (:pr:`272`) - **IMPROVED:** updated ``swagger-ui`` to version 3.20.5 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.2 - **DEPRECATED:** quietly dropped support for the ``flex`` validator; it will still work if the library is installed, but the setup.py requirement was removed and the validator will be silently skipped if not installed (:issue:`285`) ********** **1.12.1** ********** *Release date: Dec 28, 2018* - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-rc.0 - **FIXED:** management command will now correctly fall back to ``DEFAULT_VERSION`` for mock request - **FIXED:** fixed bad "raised exception during schema generation" warnings caused by missing ``self`` parameter ********** **1.12.0** ********** *Release date: Dec 23, 2018* - **ADDED:** ``get_security_definitions`` and ``get_security_requirements`` hooks to ``OpenAPISchemaGenerator`` - **ADDED:** added ``get_summary_and_description`` and ``split_summary_from_description`` extension points to ``SwaggerAutoSchema`` to allow for better customization - **IMPROVED:** updated ``swagger-ui`` to version 3.20.4 - **IMPROVED:** paginator ``next`` and ``previous`` fields are now marked as ``x-nullable`` (:issue:`263`) - **IMPROVED:** added the ``tags`` argument to ``swagger_auto_schema`` (:pr:`259`) - **IMPROVED:** type of ``enum`` will now be automatically detected from ``ChoiceField`` if all ``choices`` values are objects of the same Python class (:pr:`264`) - **IMPROVED:** ``SwaggerValidationError`` details will now be logged and shown in the exception message - **FIXED:** user implementations of ``get_queryset``, ``get_parsers`` and ``get_renderers`` will no longer be bypassed - **FIXED:** fixed handling of lazy objects in user-supplied values - **FIXED:** ``read_only`` serializer fields will be correctly ignored when generating form parameters (:issue:`261`) - **FIXED:** fixed incorrect return type from ``UIRenderer`` (:pr:`268`) - **FIXED:** fixed inconsistent ordering of global ``securityDefinitions`` and ``security`` objects - **DEPRECATED:** the ``get_summary`` and ``get_description`` extension points have been deprecated in favor of the new ``get_summary_and_description``, and will be removed in a future release **IMPORTANT PACKAGING NOTE** Starting with this version, the ``setup_requires`` argument was dropped from ``setup.py`` in favor of ``build-system.requires`` in ``pyproject.toml`` . This means that for correctly building or installing from sdist, you will need to use a PEP517/PEP518 compliant tool (tox>=3.3.0, setuptools>=40, pip>=10.0, pep517.build) or manually install the build requirements yourself (just ``setuptools`` and ``setuptools-scm``, for now). Additionally, for correct package version detection, a full git checkout is required when building (this was always the case). Building without ``.git`` or without ``setuptools-scm`` will result in a distribution with a version like ``drf-yasg-1!0.0.0.dev0+noscm.00000167d19bd859``. ********** **1.11.1** ********** *Release date: Nov 29, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.20.1 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.41 - **FIXED:** ``minLength`` and ``maxLength`` will now also work for ``ListSerializer`` in addition to ``ListField`` - **FIXED:** ``MultipleChoiceField`` will now use the ``multi`` ``collectionFormat`` where appropriate (:issue:`257`) - **FIXED:** the ``format``, ``pattern``, ``enum``, ``min_length`` and ``max_length`` attributes of ``coreschema.Schema`` will now be persisted into the converted ``openapi.Parameter`` (:issue:`212`, :pr:`233`) ********** **1.11.0** ********** *Release date: Oct 14, 2018* - **ADDED:** ``PERSIST_AUTH``, ``REFETCH_SCHEMA_WITH_AUTH``, ``REFETCH_SCHEMA_ON_LOGOUT`` settings and related javascript implementation for persisting authentication data to swagger-ui localStorage - **IMPROVED:** UI-enabled views will now no longer generate the full specification document twice; the HTML part of the view will only generate a barebones ``Swagger`` object with no ``paths`` and ``definitions`` - **IMPROVED:** added the ``FETCH_SCHEMA_WITH_QUERY`` setting to enable fetching of the schema document using query parameters passed to the UI view (:issue:`208`) - **IMPROVED:** added support for the very common ``x-nullable`` extension (:issue:`217`) - **IMPROVED:** extensibility of some classes was improved by adding more extension points, together with more blocks for ``swagger-ui.html``/``redoc.html`` and some JavaScript hooks in ``swagger-ui-init.js`` - **FIXED:** removed usage of ``inspect.signature`` on python 2.7 (:issue:`222`) ********** **1.10.2** ********** *Release date: Sep 13, 2018* - **ADDED:** added the ``DISPLAY_OPERATION_ID`` ``swagger-ui`` setting - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.38 - **IMPROVED:** Operation summary will now be parsed from multi-line view method docstrings (:issue:`205`) - **IMPROVED:** ``pattern`` will now work on any field with a ``RegexValidator`` (would previously not appear on fields with special formats such as ``EmailField``) - **FIXED:** fixed an issue with ``RelatedFieldInspector`` handling of nested serializers - **FIXED:** fixed handling of ``reverse_lazy`` in URL settings (:issue:`209`) ********** **1.10.1** ********** *Release date: Sep 10, 2018* - **ADDED:** added the ``SPEC_URL`` setting for controlling the download link in ``swagger-ui`` and ``ReDoc`` - **ADDED:** updated ``ReDoc`` settings (added ``NATIVE_SCROLLBARS`` and ``REQUIRED_PROPS_FIRST``) - **ADDED:** added ``extra_styles`` and ``extra_scripts`` blocks to ui templates (:issue:`178`) - **IMPROVED:** updated ``swagger-ui`` to version 3.18.2 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.37 - **FIXED:** stopped generating invalid OpenAPI by improper placement of ``readOnly`` Schemas - **FIXED:** fixed broken CSS when ``USE_SESSION_AUTH=False`` - **FIXED:** fixed implementation of ``operation_summary`` and ``deprecated`` (:pr:`194`, :pr:`198`) - **FIXED:** fixed a bug related to nested ``typing`` hints (:pr:`195`) - **FIXED:** removed dependency on ``future`` (:issue:`196`) - **FIXED:** fixed exceptions logged for fields with ``default=None`` (:issue:`203`) - **FIXED:** fixed ``request_body=no_body`` handling and related tests (:issue:`188`, :issue:`199`) ********** **1.10.0** ********** *Release date: Aug 08, 2018* - **ADDED:** added ``EXCLUDED_MEDIA_TYPES`` setting for controlling ``produces`` MIME type filtering (:issue:`158`) - **ADDED:** added support for ``SerializerMethodField``, via the ``swagger_serializer_method`` decorator for the method field, and support for Python 3.5 style type hinting of the method field return type (:issue:`137`, :pr:`175`, :pr:`179`) *NOTE:* in order for this to work, you will have to add the new ``drf_yasg.inspectors.SerializerMethodFieldInspector`` to your ``DEFAULT_FIELD_INSPECTORS`` array if you changed it from the default value - **IMPROVED:** updated ``swagger-ui`` to version 3.18.0 - **IMPROVED:** added support for Python 3.7 and Django 2.1 (:pr:`176`) - **IMPROVED:** ``swagger_schema_fields`` will now also work on serializer ``Field``\ s (:issue:`167`) - **IMPROVED:** ``ref_name`` collisions will now log a warning message (:issue:`156`) - **IMPROVED:** added ``operation_summary`` and ``deprecated`` arguments to ``swagger_auto_schema`` (:issue:`149`, :issue:`173`) - **FIXED:** made ``swagger_auto_schema`` work with DRF 3.9 ``@action`` mappings (:issue:`177`) ********* **1.9.2** ********* *Release date: Aug 03, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.17.6 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.32 - **IMPROVED:** added ``--api-version`` argument to the ``generate_swagger`` management command (:pr:`170`) - **FIXED:** corrected various documentation typos (:pr:`160`, :pr:`162`, :issue:`171`, :pr:`172`) - **FIXED:** made ``generate_swagger`` work for projects without authentication (:pr:`161`) - **FIXED:** fixed ``SafeText`` interaction with YAML codec (:issue:`159`) ********* **1.9.1** ********* *Release date: Jun 30, 2018* - **IMPROVED:** added a ``swagger_fake_view`` marker to more easily detect mock views in view methods; ``getattr(self, 'swagger_fake_view', False)`` inside a view method like ``get_serializer_class`` will tell you if the view instance is being used for swagger schema introspection (:issue:`154`) - **IMPROVED:** updated ``swagger-ui`` to version 3.17.1 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.25 - **FIXED:** fixed wrong handling of duplicate urls in urlconf (:pr:`155`) - **FIXED:** fixed crash when passing ``None`` as a response override (:issue:`148`) ********* **1.9.0** ********* *Release date: Jun 16, 2018* - **ADDED:** added ``DEFAULT_GENERATOR_CLASS`` setting and ``--generator-class`` argument to the ``generate_swagger`` management command (:issue:`140`) - **FIXED:** fixed wrongly required ``'count'`` response field on ``CursorPagination`` (:issue:`141`) - **FIXED:** fixed some cases where ``swagger_schema_fields`` would not be handled (:pr:`142`) - **FIXED:** fixed crash when encountering ``coreapi.Fields``\ s without a ``schema`` (:issue:`143`) ********* **1.8.0** ********* *Release date: Jun 01, 2018* - **ADDED:** added a :ref:`swagger_schema_fields ` field on serializer ``Meta`` classes for customizing schema generation (:issue:`132`, :pr:`134`) - **FIXED:** error responses from schema views are now rendered with ``JSONRenderer`` instead of throwing confusing errors (:pr:`130`, :issue:`58`) - **FIXED:** ``readOnly`` schema fields will now no longer be marked as ``required`` (:pr:`133`) ********* **1.7.4** ********* *Release date: May 14, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.14.2 - **IMPROVED:** updated ``ReDoc`` to version 2.0.0-alpha.20 - **FIXED:** ignore ``None`` return from ``get_operation`` to avoid empty ``Path`` objects in output - **FIXED:** request body is now allowed on ``DELETE`` endpoints (:issue:`118`) ********* **1.7.3** ********* *Release date: May 12, 2018* - **FIXED:** views whose ``__init__`` methods throw exceptions will now be ignored during endpoint enumeration ********* **1.7.2** ********* *Release date: May 12, 2018* - **FIXED:** fixed generation of default ``SECURITY_REQUIREMENTS`` to match documented behavior - **FIXED:** ordering of ``SECURITY_REQUIREMENTS`` and ``SECURITY_DEFINITIONS`` is now stable ********* **1.7.1** ********* *Release date: May 05, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.14.1 - **IMPROVED:** set ``swagger-ui`` ``showCommonExtensions`` to ``True`` by default and add ``SHOW_COMMON_EXTENSIONS`` setting key - **IMPROVED:** set ``min_length=1`` when ``allow_blank=False`` (:pr:`112`, thanks to :ghuser:`elnappo`) - **FIXED:** made documentation ordering of ``SwaggerDict`` extra attributes stable ********* **1.7.0** ********* *Release date: Apr 27, 2018* - **ADDED:** added integration with `djangorestframework-recursive `_ (:issue:`109`, :pr:`110`, thanks to :ghuser:`rsichny`) *NOTE:* in order for this to work, you will have to add the new ``drf_yasg.inspectors.RecursiveFieldInspector`` to your ``DEFAULT_FIELD_INSPECTORS`` array if you changed it from the default value - **FIXED:** ``SchemaRef`` now supports cyclical references via the ``ignore_unresolved`` argument ********* **1.6.2** ********* *Release date: Apr 25, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.13.6 - **IMPROVED:** switched ``ReDoc`` to version 2.0.0-alpha.17 (was 1.21.2); fixes :issue:`107` - **FIXED:** made documentation ordering of parameters stable for urls with multiple parameters (:issue:`105`, :pr:`106`) - **FIXED:** fixed crash when using a model ``ChoiceField`` of unknown child type ********* **1.6.1** ********* *Release date: Apr 01, 2018* - **ADDED:** added ``SUPPORTED_SUBMIT_METHODS`` ``swagger-ui`` setting ********* **1.6.0** ********* *Release date: Mar 24, 2018* - **IMPROVED:** ``OAUTH2_REDIRECT_URL`` will now default to the built in ``oauth2-redirect.html`` file ********* **1.5.1** ********* *Release date: Mar 18, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.13.0 - **FIXED:** fixed a crash caused by ``serializers.OneToOneRel`` (:pr:`81`, thanks to :ghuser:`ko-pp`) ********* **1.5.0** ********* *Release date: Mar 12, 2018* - **IMPROVED:** ``serializers.HiddenField`` are now hidden (:issue:`78`, :pr:`79`, thanks to :ghuser:`therefromhere`) *NOTE:* in order for this to work, you will have to add the new ``drf_yasg.inspectors.HiddenFieldInspector`` to your ``DEFAULT_FIELD_INSPECTORS`` array if you changed it from the default value - **IMPROVED:** type of model field is now detected for ``serializers.SlugRelatedField`` with ``read_only=True`` (:issue:`82`, :pr:`83`, thanks to :ghuser:`therefromhere`) ********* **1.4.7** ********* *Release date: Mar 05, 2018* - **FIXED:** prevent crashes caused by attempting to delete object attributes which do not exist in the first place (:issue:`76`) ********* **1.4.6** ********* *Release date: Mar 05, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.12.0 - **IMPROVED:** updated ``ReDoc`` to version 1.21.2 ********* **1.4.5** ********* *Release date: Mar 05, 2018* - **FIXED:** fixed an issue with modification of ``swagger_auto_schema`` arguments in-place during introspection, which would sometimes cause an incomplete Swagger document to be generated after the first pass (:issue:`74`, :pr:`75`) ********* **1.4.4** ********* *Release date: Feb 26, 2018* - **IMPROVED:** ``type`` for ``ChoiceField`` generated by a ``ModelSerializer`` from a model field with ``choices=...`` will now be set according to the associated model field (:issue:`69`) - **FIXED:** ``lookup_field`` and ``lookup_value_regex`` on the same ``ViewSet`` will no longer trigger an exception (:issue:`68`) ********* **1.4.3** ********* *Release date: Feb 22, 2018* - **FIXED:** added a missing assignment that would cause the ``default`` argument to ``openapi.Parameter.__init__`` to be ignored ********* **1.4.2** ********* *Release date: Feb 22, 2018* - **FIXED:** fixed a bug that causes a ``ModelViewSet`` generated from models with nested ``ForeignKey`` to output models named ``Nested`` into the ``definitions`` section (:issue:`59`, :pr:`65`) - **FIXED:** ``Response`` objects without a ``schema`` are now properly handled when passed through ``swagger_auto_schema`` (:issue:`66`) ********* **1.4.1** ********* *Release date: Feb 21, 2018* - **FIXED:** the ``coerce_to_string`` is now respected when setting the type, default value and min/max values of ``DecimalField`` in the OpenAPI schema (:issue:`62`) - **FIXED:** error responses from web UI views are now rendered with ``TemplateHTMLRenderer`` instead of throwing confusing errors (:issue:`58`) - **IMPROVED:** updated ``swagger-ui`` to version 3.10.0 - **IMPROVED:** updated ``ReDoc`` to version 1.21.0 ********* **1.4.0** ********* *Release date: Feb 04, 2018* - **ADDED:** added settings for OAuth2 client configuration in ``swagger-ui`` (:issue:`53`) - **IMPROVED:** updated ``swagger-ui`` to version 3.9.3 ********* **1.3.1** ********* *Release date: Jan 24, 2018* - **FIXED:** fixed a bug that would sometimes cause endpoints to wrongly be output as form operations (:issue:`50`) - **IMPROVED:** added generation of ``produces`` based on renderer classes - **IMPROVED:** added generation of top-level ``consumes`` and ``produces`` based on ``DEFAULT_PARSER_CLASSES`` and ``DEFAULT_RENDERER_CLASSES`` (:issue:`48`) ********* **1.3.0** ********* *Release date: Jan 23, 2018* - **ADDED:** security requirements are now correctly set and can be customized; this should fix problems related to authentication in ``swagger-ui`` Try it out! (:issue:`50`, :pr:`54`) - **IMPROVED:** updated ``swagger-ui`` to version 3.9.2 - **IMPROVED:** updated ``ReDoc`` to version 1.20.0 - **FIXED:** fixed an exception caused by a warning in get_path_from_regex (:pr:`49`, thanks to :ghuser:`blueyed`) ********* **1.2.2** ********* *Release date: Jan 12, 2018* - **FIXED:** djangorestframework>=3.7.7 is now required because of breaking changes (:issue:`44`, :pr:`45`, thanks to :ghuser:`h-hirokawa`) ********* **1.2.1** ********* *Release date: Jan 12, 2018* - Fixed deployment issues ********* **1.2.0** ********* *Release date: Jan 12, 2018 (missing from PyPI due to deployment issues)* - **ADDED:** ``basePath`` is now generated by taking into account the ``SCRIPT_NAME`` variable and the longest common prefix of API urls (:issue:`37`, :pr:`42`) - **IMPROVED:** removed inline scripts and styles from bundled HTML templates to increase CSP compatibility - **IMPROVED:** improved validation errors and added more assertion sanity checks (:issue:`37`, :issue:`40`) - **IMPROVED:** improved handling of NamespaceVersioning by excluding endpoints of differing versions (i.e. when accessing the schema view for v1, v2 endpoints will not be included in swagger) ********* **1.1.3** ********* *Release date: Jan 02, 2018* - **FIXED:** schema view cache will now always ``Vary`` on the ``Cookie`` and ``Authentication`` (the ``Vary`` header was previously only added if ``public`` was set to ``True``) - this fixes issues related to Django authentication in ``swagger-ui`` and ``CurrentUserDefault`` values in the schema ********* **1.1.2** ********* *Release date: Jan 01, 2018* - **IMPROVED:** updated ``swagger-ui`` to version 3.8.1 - **IMPROVED:** removed some unneeded static files ********* **1.1.1** ********* *Release date: Dec 27, 2017* - **ADDED:** :ref:`generate_swagger management command ` (:issue:`29`, :pr:`31`, thanks to :ghuser:`beaugunderson`) - **FIXED:** fixed improper generation of ``\Z`` regex tokens - will now be replaced by ``$`` ********* **1.1.0** ********* *Release date: Dec 27, 2017* - **ADDED:** added support for APIs versioned with ``URLPathVersioning`` or ``NamespaceVersioning`` - **ADDED:** added ability to recursively customize schema generation :ref:`using plugable inspector classes ` - **ADDED:** added ``operation_id`` parameter to :func:`@swagger_auto_schema <.swagger_auto_schema>` - **ADDED:** integration with `djangorestframework-camel-case `_ (:issue:`28`) - **IMPROVED:** strings, arrays and integers will now have min/max validation attributes inferred from the field-level validators - **FIXED:** fixed a bug that caused ``title`` to never be generated for Schemas; ``title`` is now correctly populated from the field's ``label`` property ********* **1.0.6** ********* *Release date: Dec 23, 2017* - **FIXED:** Swagger UI "Try it out!" should now work with Django login - **FIXED:** callable ``default`` values on serializer fields will now be properly called (:pr:`24`, :issue:`25`) - **IMPROVED:** updated ``swagger-ui`` to version 3.8.0 - **IMPROVED:** ``PrimaryKeyRelatedField`` and ``SlugRelatedField`` will now have appropriate types based on the related model (:pr:`26`) - **IMPROVED:** mock views will now have a bound request even with ``public=False`` (:pr:`23`) ********* **1.0.5** ********* *Release date: Dec 18, 2017* - **FIXED:** fixed a crash caused by having read-only Serializers nested by reference - **FIXED:** removed erroneous backslashes in paths when routes are generated using Django 2 `path() `_ - **IMPROVED:** updated ``swagger-ui`` to version 3.7.0 - **IMPROVED:** ``FileField`` is now generated as an URL or file name in response Schemas (:pr:`21`, thanks to :ghuser:`h-hirokawa`) ********* **1.0.4** ********* *Release date: Dec 16, 2017* - **FIXED:** fixed improper generation of YAML references - **ADDED:** added ``query_serializer`` parameter to :func:`@swagger_auto_schema <.swagger_auto_schema>` (:issue:`16`, :pr:`17`) ********* **1.0.3** ********* *Release date: Dec 15, 2017* - **FIXED:** fixed bug that caused schema views returned from cache to fail (:issue:`14`) - **FIXED:** disabled automatic generation of response schemas for form operations to avoid confusing errors caused by attempting to shove file parameters into Schema objects ********* **1.0.2** ********* *Release date: Dec 13, 2017* - First published version drf-yasg-nonfree-1.21.15/docs/conf.py000066400000000000000000000254541514731163200172730ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # drf-yasg documentation build configuration file, created by # sphinx-quickstart on Sun Dec 10 15:20:34 2017. import inspect import os import re import shutil import sys from docutils import nodes, utils from docutils.parsers.rst import roles from docutils.parsers.rst.roles import set_classes try: from importlib import metadata except ImportError: # Python < 3.8 import importlib_metadata as metadata # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ["sphinx.ext.autodoc", "sphinx.ext.viewcode"] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = ".rst" # The master toctree document. master_doc = "index" # General information about the project. project = "drf-yasg" copyright = "2018, Cristi V." author = "Cristi V." # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # The full version, including alpha/beta/rc tags. release = metadata.version("drf_yasg") if "noscm" in release: raise AssertionError( "Invalid package version string: %s. \n" "The documentation must be built with drf_yasg installed from a distribution " "package, which must have been built with a proper version number (i.e. from " "a full source checkout)." % (release,) ) # The short X.Y.Z version. version = ".".join(release.split(".")[:3]) # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = "en" # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # The name of the Pygments (syntax highlighting) style to use. pygments_style = "sphinx" modindex_common_prefix = ["drf_yasg."] # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # # html_theme = 'default' html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] # Custom sidebar templates, must be a dictionary that maps document names # to template names. # # This is required for the alabaster theme # refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars html_sidebars = { "**": [ "relations.html", # needs 'show_related': True theme option to display "searchbox.html", ] } # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = "drf-yasgdoc" # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # # 'preamble': '', # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, "drf-yasg.tex", "drf-yasg Documentation", "Cristi V.", "manual"), ] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [(master_doc, "drf-yasg", "drf-yasg Documentation", [author], 1)] # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ( master_doc, "drf-yasg", "drf-yasg Documentation", author, "drf-yasg", "One line description of project.", "Miscellaneous", ), ] autodoc_default_options = {"private-members": None} autodoc_member_order = "bysource" autoclass_content = "both" autodoc_mock_imports = [] nitpick_ignore = [ ("py:class", "object"), ("py:class", "bool"), ("py:class", "dict"), ("py:class", "list"), ("py:class", "str"), ("py:class", "int"), ("py:class", "bytes"), ("py:class", "tuple"), ("py:class", "function"), ("py:class", "type"), ("py:class", "None"), ("py:obj", "None"), ("py:class", "Exception"), ("py:class", "yaml.cyaml.CSafeDumper"), ("py:class", "rest_framework.serializers.Serializer"), ("py:class", "rest_framework.renderers.BaseRenderer"), ("py:class", "rest_framework.parsers.BaseParser"), ("py:class", "rest_framework.schemas.generators.EndpointEnumerator"), ("py:class", "rest_framework.views.APIView"), ("py:class", "OpenAPICodecYaml"), ("py:class", "OpenAPICodecJson"), ("py:class", "OpenAPISchemaGenerator"), ("py:class", "coreapi.Field"), ("py:class", "BaseFilterBackend"), ("py:class", "BasePagination"), ("py:class", "Request"), ("py:class", "rest_framework.request.Request"), ("py:class", "rest_framework.serializers.Field"), ("py:class", "serializers.Field"), ("py:class", "serializers.BaseSerializer"), ("py:class", "Serializer"), ("py:class", "BaseSerializer"), ("py:class", "APIView"), ] # even though the package should be already installed, the sphinx build on RTD # for some reason needs the sources dir to be in the path in order for viewcode to work sys.path.insert(0, os.path.abspath("../src")) # activate the Django testproj to be able to successfully import drf_yasg sys.path.insert(0, os.path.abspath("../testproj")) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproj.settings.local") from django.conf import settings # noqa: E402 settings.configure() # instantiate a SchemaView in the views module to make it available to autodoc import drf_yasg.views # noqa: E402 drf_yasg.views.SchemaView = drf_yasg.views.get_schema_view(None) # monkey patch to stop sphinx from trying to find classes by their real location instead # of the top-level __init__ alias; this allows us to document only `drf_yasg.inspectors` # and avoid broken references or double documenting import drf_yasg.inspectors # noqa: E402 def redirect_cls(cls): if cls.__module__.startswith("drf_yasg.inspectors"): return getattr(drf_yasg.inspectors, cls.__name__) return cls for cls_name in drf_yasg.inspectors.__all__: # first pass - replace all classes' module with the top level module real_cls = getattr(drf_yasg.inspectors, cls_name) if not inspect.isclass(real_cls): continue patched_dict = dict(real_cls.__dict__) patched_dict.update({"__module__": "drf_yasg.inspectors"}) patched_cls = type(cls_name, real_cls.__bases__, patched_dict) setattr(drf_yasg.inspectors, cls_name, patched_cls) for cls_name in drf_yasg.inspectors.__all__: # second pass - replace the inheritance bases for all classes to point to the new # clean classes real_cls = getattr(drf_yasg.inspectors, cls_name) if not inspect.isclass(real_cls): continue patched_bases = tuple(redirect_cls(base) for base in real_cls.__bases__) patched_cls = type(cls_name, patched_bases, dict(real_cls.__dict__)) setattr(drf_yasg.inspectors, cls_name, patched_cls) # custom interpreted role for linking to GitHub issues and pull requests # use as :issue:`14` or :pr:`17` gh_issue_uri = "https://github.com/axnsan12/drf-yasg/issues/{}" gh_pr_uri = "https://github.com/axnsan12/drf-yasg/pull/{}" gh_user_uri = "https://github.com/{}" suppress_warnings = ["image.not_readable"] def sphinx_err(inliner, lineno, rawtext, msg): msg = inliner.reporter.error(msg, line=lineno) prb = inliner.problematic(rawtext, rawtext, msg) return [prb], [msg] def sphinx_ref(options, rawtext, text, ref): set_classes(options) node = nodes.reference(rawtext, text, refuri=ref, **options) return [node], [] def role_github_user(name, rawtext, text, lineno, inliner, options=None, content=None): options = options or {} content = content or [] if not re.match(r"^[a-z\d](?:[a-z\d]|-(?=[a-z\d])){0,38}$", text, re.IGNORECASE): return sphinx_err( inliner, lineno, rawtext, '"%s" is not a valid GitHub username.' % text ) ref = gh_user_uri.format(text) text = "@" + utils.unescape(text) return sphinx_ref(options, rawtext, text, ref) def role_github_pull_request_or_issue( name, rawtext, text, lineno, inliner, options=None, content=None ): options = options or {} content = content or [] try: if int(text) <= 0: raise ValueError except ValueError: return sphinx_err( inliner, lineno, rawtext, "GitHub pull request or issue number must be a number greater than or equal" ' to 1; "%s" is invalid.' % text, ) if name == "pr": ref = gh_pr_uri elif name == "issue": ref = gh_issue_uri else: return sphinx_err( inliner, lineno, rawtext, 'unknown role name for GitHub reference - "%s"' % name, ) ref = ref.format(text) text = "#" + utils.unescape(text) return sphinx_ref(options, rawtext, text, ref) def copy_static(app, build): shutil.copytree("docs/images", "docs/_build/html/docs/images", dirs_exist_ok=True) roles.register_local_role("pr", role_github_pull_request_or_issue) roles.register_local_role("issue", role_github_pull_request_or_issue) roles.register_local_role("ghuser", role_github_user) def setup(app): app.add_css_file("css/style.css") app.connect("build-finished", copy_static) drf-yasg-nonfree-1.21.15/docs/contributing.rst000066400000000000000000000000411514731163200212160ustar00rootroot00000000000000.. include:: ../CONTRIBUTING.rst drf-yasg-nonfree-1.21.15/docs/custom_spec.rst000066400000000000000000000430531514731163200210450ustar00rootroot00000000000000.. |br| raw:: html
######################## Custom schema generation ######################## If the default spec generation does not quite match what you were hoping to achieve, ``drf-yasg`` provides some custom behavior hooks by default. .. _custom-spec-excluding-endpoints: ******************* Excluding endpoints ******************* You can prevent a view from being included in the Swagger view by setting its class-level ``swagger_schema`` attribute to ``None``, or you can prevent an operation from being included by setting its ``auto_schema`` override to none in :ref:`@swagger_auto_schema `: .. code-block:: python class UserList(APIView): swagger_schema = None # all methods of the UserList class will be excluded ... # only the GET method will be shown in Swagger @swagger_auto_schema(method='put', auto_schema=None) @swagger_auto_schema(methods=['get'], ...) @api_view(['GET', 'PUT']) def user_detail(request, pk): pass .. _custom-spec-swagger-auto-schema: ************************************** The ``@swagger_auto_schema`` decorator ************************************** You can use the :func:`@swagger_auto_schema <.swagger_auto_schema>` decorator on view functions to override some properties of the generated :class:`.Operation`. For example, in a ``ViewSet``, .. code-block:: python from drf_yasg.utils import swagger_auto_schema @swagger_auto_schema(operation_description="partial_update description override", responses={404: 'slug not found'}) def partial_update(self, request, *args, **kwargs): """partial_update method docstring""" ... will override the description of the ``PATCH /article/{id}/`` operation, and document a 404 response with no body and the given description. Where you can use the :func:`@swagger_auto_schema <.swagger_auto_schema>` decorator depends on the type of your view: * for function based ``@api_view``\ s, because the same view can handle multiple methods, and thus represent multiple operations, you have to add the decorator multiple times if you want to override different operations: .. code-block:: python from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from rest_framework.decorators import api_view from drf_yasg import openapi test_param = openapi.Parameter('test', openapi.IN_QUERY, description="test manual param", type=openapi.TYPE_BOOLEAN) user_response = openapi.Response('response description', UserSerializer) # 'method' can be used to customize a single HTTP method of a view @swagger_auto_schema(method='get', manual_parameters=[test_param], responses={200: user_response}) # 'methods' can be used to apply the same modification to multiple methods @swagger_auto_schema(methods=['put', 'post'], request_body=UserSerializer) @api_view(['GET', 'PUT', 'POST']) def user_detail(request, pk): ... * for class based ``APIView``, ``GenericAPIView`` and non-``ViewSet`` derivatives, you have to decorate the respective method of each operation: .. code-block:: python class UserList(APIView): @swagger_auto_schema(responses={200: UserSerializer(many=True)}) def get(self, request): ... @swagger_auto_schema(operation_description="description") def post(self, request): ... * for ``ViewSet``, ``GenericViewSet``, ``ModelViewSet``, because each viewset corresponds to multiple **paths**, you have to decorate the *action methods*, i.e. ``list``, ``create``, ``retrieve``, etc. |br| Additionally, ``@action``\ s defined on the viewset, like function based api views, can respond to multiple HTTP methods and thus have multiple operations that must be decorated separately: .. code-block:: python class ArticleViewSet(viewsets.ModelViewSet): # method or 'methods' can be skipped because the action only handles a single method (GET) @swagger_auto_schema(operation_description='GET /articles/today/') @action(detail=False, methods=['get']) def today(self, request): ... @swagger_auto_schema(method='get', operation_description="GET /articles/{id}/image/") @swagger_auto_schema(method='post', operation_description="POST /articles/{id}/image/") @action(detail=True, methods=['get', 'post'], parser_classes=(MultiPartParser,)) def image(self, request, id=None): ... @swagger_auto_schema(operation_description="PUT /articles/{id}/") def update(self, request, *args, **kwargs): ... @swagger_auto_schema(operation_description="PATCH /articles/{id}/") def partial_update(self, request, *args, **kwargs): ... .. Tip:: If you want to customize the generation of a method you are not implementing yourself, you can use ``swagger_auto_schema`` in combination with Django's ``method_decorator``: .. code-block:: python @method_decorator(name='list', decorator=swagger_auto_schema( operation_description="description from swagger_auto_schema via method_decorator" )) class ArticleViewSet(viewsets.ModelViewSet): ... This allows you to avoid unnecessarily overriding the method. .. Tip:: You can go even further and directly decorate the result of ``as_view``, in the same manner you would override an ``@api_view`` as described above: .. code-block:: python decorated_login_view = \ swagger_auto_schema( method='post', responses={status.HTTP_200_OK: LoginResponseSerializer} )(LoginView.as_view()) urlpatterns = [ ... url(r'^login/$', decorated_login_view, name='login') ] This can allow you to avoid skipping an unnecessary *subclass* altogether. .. Warning:: However, do note that both of the methods above can lead to unexpected (and maybe surprising) results by replacing/decorating methods on the base class itself. ********************************* Support for SerializerMethodField ********************************* Schema generation of ``serializers.SerializerMethodField`` is supported in two ways: 1) The :func:`swagger_serializer_method <.swagger_serializer_method>` decorator for the use case where the serializer method is using a serializer. e.g.: .. code-block:: python from drf_yasg.utils import swagger_serializer_method class OtherStuffSerializer(serializers.Serializer): foo = serializers.CharField() class ParentSerializer(serializers.Serializer): other_stuff = serializers.SerializerMethodField() many_other_stuff = serializers.SerializerMethodField() @swagger_serializer_method(serializer_or_field=OtherStuffSerializer) def get_other_stuff(self, obj): return OtherStuffSerializer().data @swagger_serializer_method(serializer_or_field=OtherStuffSerializer(many=True)) def get_many_other_stuff(self, obj): return OtherStuffSerializer().data Note that the ``serializer_or_field`` parameter can accept either a subclass or an instance of ``serializers.Field``. 2) For simple cases where the method is returning one of the supported types, `Python 3 type hinting`_ of the serializer method return value can be used. e.g.: .. code-block:: python class SomeSerializer(serializers.Serializer): some_number = serializers.SerializerMethodField() def get_some_number(self, obj) -> float: return 1.0 When return type hinting is not supported, the equivalent ``serializers.Field`` subclass can be used with :func:`swagger_serializer_method <.swagger_serializer_method>`: .. code-block:: python class SomeSerializer(serializers.Serializer): some_number = serializers.SerializerMethodField() @swagger_serializer_method(serializer_or_field=serializers.FloatField) def get_some_number(self, obj): return 1.0 ******************************** Serializer ``Meta`` nested class ******************************** You can define some per-serializer or per-field options by adding a ``Meta`` class to your ``Serializer`` or serializer ``Field``, e.g.: .. code-block:: python class WhateverSerializer(Serializer): ... class Meta: ... options here ... .. _swagger_schema_fields: The available options are: * ``ref_name`` - a string which will be used as the model definition name for this serializer class; setting it to ``None`` will force the serializer to be generated as an inline model everywhere it is used. If two serializers have the same ``ref_name``, both their usages will be replaced with a reference to the same definition. If this option is not specified, all serializers have an implicit name derived from their class name, minus any ``Serializer`` suffix (e.g. ``UserSerializer`` -> ``User``, ``SerializerWithSuffix`` -> ``SerializerWithSuffix``) * ``swagger_schema_fields`` - a dictionary mapping :class:`.Schema` field names to values. These attributes will be set on the :class:`.Schema` object generated from the ``Serializer``. Field names must be python values, which are converted to Swagger ``Schema`` attribute names according to :func:`.make_swagger_name`. Attribute names and values must conform to the `OpenAPI 2.0 specification `_. Suppose you wanted to model an email using a `JSONField` to store the subject and body for performance reasons: .. code-block:: python from django.contrib.postgres.fields import JSONField class Email(models.Model): # Store data as JSON, but the data should be made up of # an object that has two properties, "subject" and "body" # Example: # { # "subject": "My Title", # "body": "The body of the message.", # } message = JSONField() To instruct ``drf-yasg`` to output an OpenAPI schema that matches this, create a custom ``JSONField``: .. code-block:: python class EmailMessageField(serializers.JSONField): class Meta: swagger_schema_fields = { "type": openapi.TYPE_OBJECT, "title": "Email", "properties": { "subject": openapi.Schema( title="Email subject", type=openapi.TYPE_STRING, ), "body": openapi.Schema( title="Email body", type=openapi.TYPE_STRING, ), }, "required": ["subject", "body"], } class EmailSerializer(ModelSerializer): class Meta: model = Email fields = "__all__" message = EmailMessageField() .. Warning:: Overriding a default ``Field`` generated by a ``ModelSerializer`` will also override automatically generated validators for that ``Field``. To add ``Serializer`` validation back in manually, see the relevant `DRF Validators`_ and `DRF Fields`_ documentation. One example way to do this is to set the ``default_validators`` attribute on a field. .. code-block:: python class EmailMessageField(serializers.JSONField): default_validators = [my_custom_email_validator] ... ************************* Subclassing and extending ************************* --------------------- ``SwaggerAutoSchema`` --------------------- For more advanced control you can subclass :class:`~.inspectors.SwaggerAutoSchema` - see the documentation page for a list of methods you can override. You can put your custom subclass to use by setting it on a view method using the :ref:`@swagger_auto_schema ` decorator described above, by setting it as a class-level attribute named ``swagger_schema`` on the view class, or :ref:`globally via settings `. For example, to generate all operation IDs as camel case, you could do: .. code-block:: python from inflection import camelize class CamelCaseOperationIDAutoSchema(SwaggerAutoSchema): def get_operation_id(self, operation_keys): operation_id = super(CamelCaseOperationIDAutoSchema, self).get_operation_id(operation_keys) return camelize(operation_id, uppercase_first_letter=False) SWAGGER_SETTINGS = { 'DEFAULT_AUTO_SCHEMA_CLASS': 'path.to.CamelCaseOperationIDAutoSchema', ... } -------------------------- ``OpenAPISchemaGenerator`` -------------------------- If you need to control things at a higher level than :class:`.Operation` objects (e.g. overall document structure, vendor extensions in metadata) you can also subclass :class:`.OpenAPISchemaGenerator` - again, see the documentation page for a list of its methods. This custom generator can be put to use by setting it as the :attr:`.generator_class` of a :class:`.SchemaView` using :func:`.get_schema_view`. .. _custom-spec-inspectors: --------------------- ``Inspector`` classes --------------------- For customizing behavior related to specific field, serializer, filter or paginator classes you can implement the :class:`~.inspectors.FieldInspector`, :class:`~.inspectors.SerializerInspector`, :class:`~.inspectors.FilterInspector`, :class:`~.inspectors.PaginatorInspector` classes and use them with :ref:`@swagger_auto_schema ` or one of the :ref:`related settings `. A :class:`~.inspectors.FilterInspector` that adds a description to all ``DjangoFilterBackend`` parameters could be implemented like so: .. code-block:: python class DjangoFilterDescriptionInspector(CoreAPICompatInspector): def get_filter_parameters(self, filter_backend): if isinstance(filter_backend, DjangoFilterBackend): result = super(DjangoFilterDescriptionInspector, self).get_filter_parameters(filter_backend) for param in result: if not param.get('description', ''): param.description = "Filter the returned list by {field_name}".format(field_name=param.name) return result return NotHandled @method_decorator(name='list', decorator=swagger_auto_schema( filter_inspectors=[DjangoFilterDescriptionInspector] )) class ArticleViewSet(viewsets.ModelViewSet): filter_backends = (DjangoFilterBackend,) filterset_fields = ('title',) ... A second example, of a :class:`~.inspectors.FieldInspector` that removes the ``title`` attribute from all generated :class:`.Schema` objects: .. code-block:: python from drf_yasg.inspectors import FieldInspector class NoSchemaTitleInspector(FieldInspector): def process_result(self, result, method_name, obj, **kwargs): # remove the `title` attribute of all Schema objects if isinstance(result, openapi.Schema.OR_REF): # traverse any references and alter the Schema object in place schema = openapi.resolve_ref(result, self.components) schema.pop('title', None) # no ``return schema`` here, because it would mean we always generate # an inline `object` instead of a definition reference # return back the same object that we got - i.e. a reference if we got a reference return result class NoTitleAutoSchema(SwaggerAutoSchema): field_inspectors = [NoSchemaTitleInspector] + swagger_settings.DEFAULT_FIELD_INSPECTORS class ArticleViewSet(viewsets.ModelViewSet): swagger_schema = NoTitleAutoSchema ... .. Note:: A note on references - :class:`.Schema` objects are sometimes output by reference (:class:`.SchemaRef`); in fact, that is how named models are implemented in OpenAPI: - in the output swagger document there is a ``definitions`` section containing :class:`.Schema` objects for all models - every usage of a model refers to that single :class:`.Schema` object - for example, in the ArticleViewSet above, all requests and responses containing an ``Article`` model would refer to the same schema definition by a ``'$ref': '#/definitions/Article'`` This is implemented by only generating **one** :class:`.Schema` object for every serializer **class** encountered. This means that you should generally avoid view or method-specific ``FieldInspector``\ s if you are dealing with references (a.k.a named models), because you can never know which view will be the first to generate the schema for a given serializer. **IMPORTANT:** nested fields on ``ModelSerializer``\ s that are generated from model ``ForeignKeys`` will always be output by value. If you want the by-reference behavior you have to explicitly set the serializer class of nested fields instead of letting ``ModelSerializer`` generate one automatically; for example: .. code-block:: python class OneSerializer(serializers.ModelSerializer): class Meta: model = SomeModel fields = ('id',) class AnotherSerializer(serializers.ModelSerializer): child = OneSerializer() class Meta: model = SomeParentModel fields = ('id', 'child') Another caveat that stems from this is that any serializer named "``NestedSerializer``" will be forced inline unless it has a ``ref_name`` set explicitly. .. _Python 3 type hinting: https://docs.python.org/3/library/typing.html .. _DRF Validators: https://www.django-rest-framework.org/api-guide/validators/ .. _DRF Fields: https://www.django-rest-framework.org/api-guide/fields/#validators drf-yasg-nonfree-1.21.15/docs/custom_ui.rst000066400000000000000000000016561514731163200205330ustar00rootroot00000000000000###################### Customizing the web UI ###################### The web UI can be customized using the settings available in :ref:`swagger-ui-settings` and :ref:`redoc-ui-settings`. You can also extend one of the `drf-yasg/swagger-ui.html`_ or `drf-yasg/redoc.html`_ templates that are used for rendering. See the template source code (linked above) for a complete list of customizable blocks. The ``swagger-ui`` view has some quite involved JavaScript hooks used for some functionality, which you might also want to review at `drf-yasg/swagger-ui-init.js`_. .. _drf-yasg/swagger-ui.html: https://github.com/axnsan12/drf-yasg/blob/master/src/drf_yasg/templates/drf-yasg/swagger-ui.html .. _drf-yasg/swagger-ui-init.js: https://github.com/axnsan12/drf-yasg/blob/master/src/drf_yasg/static/drf-yasg/swagger-ui-init.js .. _drf-yasg/redoc.html: https://github.com/axnsan12/drf-yasg/blob/master/src/drf_yasg/templates/drf-yasg/redoc.html drf-yasg-nonfree-1.21.15/docs/drf_yasg.rst000066400000000000000000000027131514731163200203150ustar00rootroot00000000000000drf\_yasg package ==================== drf\_yasg\.codecs --------------------------- .. automodule:: drf_yasg.codecs :members: :undoc-members: :show-inheritance: :exclude-members: SaneYamlDumper,SaneYamlLoader drf\_yasg\.errors --------------------------- .. automodule:: drf_yasg.errors :members: :undoc-members: :show-inheritance: drf\_yasg\.generators ------------------------------- .. automodule:: drf_yasg.generators :members: :undoc-members: :show-inheritance: drf\_yasg\.inspectors ------------------------------- .. autodata:: drf_yasg.inspectors.NotHandled .. automodule:: drf_yasg.inspectors :members: :undoc-members: :show-inheritance: drf\_yasg\.middleware ------------------------------- .. automodule:: drf_yasg.middleware :members: :undoc-members: :show-inheritance: drf\_yasg\.openapi ---------------------------- .. automodule:: drf_yasg.openapi :members: :undoc-members: :show-inheritance: :exclude-members: _bare_SwaggerDict drf\_yasg\.renderers ------------------------------ .. automodule:: drf_yasg.renderers :members: :undoc-members: :show-inheritance: drf\_yasg\.utils -------------------------- .. automodule:: drf_yasg.utils :members: :undoc-members: :show-inheritance: drf\_yasg\.views -------------------------- .. automodule:: drf_yasg.views :members: :undoc-members: :show-inheritance: .. |br| raw:: html
drf-yasg-nonfree-1.21.15/docs/images/000077500000000000000000000000001514731163200172275ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/docs/images/flow.png000066400000000000000000002065721514731163200207200ustar00rootroot00000000000000‰PNG  IHDR4Ù‰j®ÜsRGB®ÎéDeXIfMM*‡i  4 Ù$É.�@IDATxì� ÜU}ïßl„$„-@Ű…ˆ6E0/Vª^k®ÖZµV«T½ nµ“X+nÕ¶®m¯/nU+×­u©òÆBM¡ ‚ ($! Üß2ÿñ¼óÎ<ëÌóÌÌó�Ïç}Ï~Îÿ|Ï3gÎùÏ9gÆÆ¸ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ �Þ Lë=))!@€ @(šÀúõëÇ‹ÈséÒ¥EäC€ªF…fÕZy @€ @`à\‰8sæÌñV…?ôÐC+Z…[Ø´iÓÆÛÅ©s¸Lt+¿˜¬i•f÷îÝQž(a[Q" p(4�& @€ ŒSbΘ1ceÓ�ulTSšºtñâÅ«êXd†Ê#€B³<¶ä @€ @$Щ"ÓW"ºbͫ⫠Ý]w³ÝªÔAÔÏV¾¶Q,¯69Pn¢5(Õ'€B³úm„„€ �AÀ·…e Í«Ž[¤ŒcåZ#S0 ÔžÀu×]·J•X™US`îÙ³'Rœñ|Ì"4?Ÿ˜’µ…’s5ŠÍÁ´¥@ ªPhVµe� €@ƒ ø ÕªhU¯j›·ò ³6�³Õ'¶â„ \ €É€*A K™éJLž•h¢L!²ÚMQjfÒ£A…æh´3µ„ 0T®Àlñ–}¨òQx&& ™Xð„ �º•b(1ëÙŠaZ hÇz¶#RC (4‹ H€ �IÀ�픘6µÄƒÜÞe V+3ïêô)«[^­ü»]‰êŒÒyÚŠÊ´_Þ™^¾êĕ˞®UûX¹Ö.žÖÓ`B€êF ¥ã¥]Ý0%ï† . ÇSÿœÉx% 'N…fØêASšå}1Ô•s(ʆÑ2ùeŠÎ¬3Řøå£#€*N ¥üâ™VñöêT¼”’Ú>„~£Sxă@pÃ7 © �*H.]6Vû9‰ê›9ÊM&€Õo:$„ ��p\bc‘“N:éÌTœ5&@ûÖ¸ñ}@¡Ù'@’C€Ào„ƒJ÷eòà$êgf´'JÍú5#Ciz–=à9ÀhŠ5\�ËÖó¦´*õ€@{ÓÛG! @ =� åט *Y Ñž]UchëÖªxûÖêXÆ•¶z³ªò" @ $�MÜ e¦“h˜éç°[µìÈ£†U�ê@9Phæ€Á€º&� mU¦)Â8œ½k†•L`ŠMkSމB%›¡ @ ›@26ÉÆ· âñfôòÕ>ÄË×&´*u€@{(4Û3" ´!®€`‹yX5 ö•¶6QÛ»¦ÕAl@h8�ðY¿h]Õð*�tõ—¯# ‚ÊC`„ Ð¡Æ¦ª€Ê ¿OV@¸â«Œ²Ès¸ì�X¶ž·)(€Ú�s…GÑ˸5nÇl>v“4¿�©!Œ M~€ Ð�™3gŽøY‹�Ö¦°-]l=oJkR@Í&`; ¼†¶zÏí˜Í%àgi†mßÜÚR3@…&¿@è‹@¸‚ C_(k‘ØW¹0Y¨Es!$ �‘$n7^¶ŽÈ¯ <»�s4G¤Ñ©æH@¡9ÒÍOå!ôO Pl1aègåsжó ’É‚“À„ @  |'IdA@ \(4ËåKî€M \*º]é¯ÛÎGü@õ!Ԍ㓚5XA⦎D*(W²�ªD…f•ZY Ô˜@¸Í§ÆÕ@ôøUD%  @`¨Ÿ ÿÀ ÷£q^0B'€BsàÈ)€@sçg²Ý¼9ÍÚqM‚ã:NCD@€À °ýxP¤)€Àà  Ðe;ø²MOÅ!4’@úŒª—µ,mKצM›©AºoéZ*3­|)3Oä0ëi)wÏÎa–ݳÐ$„ Ô‹@ò•p=ï_œ%ºüŸíþ²OøêL÷ M)çº[öÜ^´)9xžÚ^žŒƒ8àûðÏÂ8ìµ’!ÙÅ¢íáe.zšçòH¡YZ½½ L@ ÙPh6»}© �Z¨ëU»víZ€þL`·�ÙÖ­„~š8L:[+ ëÖ>̲»••ø€ �:�2𹟺yóæÃ·[ÿØ-zÎÜíY¦Â“•ŠÒîÌŠS„ŸVh&çaªœ]–g|¾çãü?µxñâÿ”â3‰WD¹yyèï~vê©§–Vo/h6šÍn_j@ Vâ3ª¾¤s•®ÓÙSÉê…t%ìŒ*ùý�êß ãÙU'�tÒ;l…¤ç{4pN& Š[ÚÖ&•s¤Ë¨r×¹ÝL•û—2&mßRœ#åWÈ5¬²U‡ñB*@&€ �Š8ùä“×KÄ+\L½L<Çífj»ùQz.>9öÛzà�þKž¶+n¢@”r³°3µÓåh›ù>î§s½gÙVs�K’¯²G_Wœ$žÇ/ÃTya9{÷,£ ò„F‚ Í‘hf* @ 6ÒgTM¼ŠgTi2â۶쫚·¹Ðú¢ù©²Ÿ»ß+óöØž¬PˆÝ=Ã,»g¡I@¨=ßýÌI;ûOBñõrñ�ûÝGqDË—¨J?+ˆ?«)Q¥h}Ÿ ;Ü ”ûü%K–DãÉs€ ¡Õ¨-e÷x=š¡B³Ç,H@`/šü @ JêzFÕ!Q«!¢Ãý59˜©ÉÂGcÿ­ZñNÙ}{U²rÔÓõjªŒ¡•ݫ̤ƒ Ô�ÀìÙ³/•Ì[c¹�×þžhv½¼£JôdÛ–V>ü�ÉmP5¹y¥Î¨ú/³Û—EÍŒ¯_¹¥_s˜e÷+;é!@u# Uš�7oÞ_Hîð¹>¦çÿ²ê¢Uœ��òî¹,ˆÃmäAܳ4ÆÙO«;wIAºKùÜ%¥ãÚ <±ê™?SJÅ–ÇÑæ)÷käþ¦¬_3wúZ´hÑO¥xü¶üϲ0ÉñZÉs½¶Åߢ�,.V™g+�×{:)ždc# ·¿ë¯¿~¾^—öQ¢)BàÔš[ÎkÝ|@ ™êvF•ã“&1”Oh•i²âÁZI“†eÞZ²ÿÐíýšÃ,»_ÙI@¨#[¥)¹ý,M«ÂûZÔ#R&¶Ÿ$%åŽ)žòÐÙ—¶ÊñCAØíÛ·o7Åaî%Eë&å·\&�UR ¾¹ß~û½,å7ɩՓëäñ÷Tž—¶R€j,dÛñ»¹¶ª.É›ßnM¬ÐÍv§Ö€*M ½úA« ’A±È;£J�ìðÿcUæ'µbà|™™åËÿG!P),_O:"o¹m‹˜}õ<º´*â[nÏ2÷Jó· Û©¿¿Z¼xq´Š!+nÑeg•� @ ®²V:ö[§h»õ³õ þ#)ö®ÑŽŒ yyêþA­<ü‚¶{ÏQüiL—}†Û•~†ÜÓ4Ö™!»-8²­×¿n‘ß[5N¸Té)à·Ãü䥱ão®ºêªÅZÝy¦âœ¬¿‡)ý6•y—мBò¯•»­2QñNÓö³4Fy@öËòÊ3•y¶Vš>Êê_Ó‚zGž’? ²øZÑy½êbã.@@¡Ù&"A€À  ÔéŒ* ì¿¥‰€­Ôðó´.ÐDç}»víºOgD-ÓyUvàþ)1Ã;µ¢áßóxv{FU‘eçÉ„? @“ Héø]ùØ_ÛKʽ_´�ÔE)“•’�&‹Ÿ_W|ûëéÒXÇ^ìþ['‰×ö³ßÚI\â@è…[Î{¡F@˜D@oÜ'&yàHI4βÝUT¼Uñß;d>UÑ¥�µ­°ü¼V#\*�¯iIÀ÷ó΂´3ªgÒ™TŠ?ɽ7×½ÿµ�ë× ·³>ýz£Üwh%Äý*o�¶…ŸíR@ÚYZ™+=ã8‡{\7ã3ªÜ9É,¸ìIy〠@€ PE(4«Ø*È@�:�Q¥ÕKQù’6M·Z Èh§Û3ª,¯¢Ên%a€ @€ªB€-çUi ä€ �)êvF•¶€ý_m/ÿ¶Ve>I•Y¢¿yú»O«2¦¿—²ró”JfxtsF•'/ªlÏ€ @€@U  Ð¬jË  DêvF•ÎÇü¹ÿçø¯§VŒ·¤wtFUX@e‡ùa‡ Ô�€ƒ3sæÌ•&·^&NÔM~ä… �ΰå¼3NÄ‚ @€ @€*@…f Ô•+êÚrÈ @€ @ ¾PhÖ·í�€ @€rè—59Ax7”@ØæK—.�hh5© (4ù@€ @€ @µ!€B³6M… € @€ Њ«òZÑ! €@s ÐlN[R@€ @€ÀÈàœ÷‘ÿ ` Ð�F¦Š€ �" °ú¥Hšä@EpeÖîÝ»'ŠÎ›ü @ PhV£�€ @€ �„* ;²€*H…f‘ @U'à«_ª.'òA€ @Í#€B³ymJ� @€ @€ ÐX(4Û´T € @€ 0:´ƒdÅèÔ–šB`´  Ðíö§ö€ �žp6UOØH@€ @…fÉ€ 0jX1j-N}!Ô‡€¿t›9sæx}¤FÒ"¨íió"@’j@…f  !@U%°{÷ʆ\€ 0Úxù6ÚíOí!�f@¡Ùìö¥v€ �R°¢¬d @àe[k˜ÅúõëÇ]l~NÍ%€B³¹mKÍ ”N¥Véˆ+_ÀÒ¥K'*/$B€ÀH°qJ¨äI#TéðˆÆ'#ÔðTud  ÐÙ¦§â€ �Þ09ì�© @`0L™¥íæƒ)�RªB 8b`uUdB@ <(4ËcK΀OÀ' 3fÌXÙøÊRÁ„@°‚ CB  T‘c”*¶J92±s¨®ä �ª@¡YÕ–A.@5  �ã“d «@ƒæJV€ �âìÙ³'z鯶óâ˜V9§ë®»n•Ë·xñâÄî~˜€@ó Ðl^›R#@#¸Î6ä�azA®ÀfÂ0ô¦@@È!ž¡¨�—åDû9|·»GšÓ¦Ô-  Ðl‰‡@@hE œ,°¥«©æ„ù ?n 95£&€ Ð4zñz¦×ÉŸ_îÆl�°myÙÚœv¥&hG…f;B„C€@K®ØbKWKLM ŒV@¨½£ãšT1ê@Í"¿xõ{+7lØÀJÍf5ñX¬ÌdufÃÚ•ê@ (4;¡D@È%àgTYViæbjD@¸"øàƒn7óÐC�äðC€ �"d�S¦M›¶"Ìû¡‡ZºÝncÆ+N¨+šum9ä† �¾ ød`ÆŒ+-3 üÇûÎ4Î@“Š ³úd‚ÉC € �Ž”9Nql¼âcóc¼âd0!�ª@¡YõB>@(„À &�N,X°ª“4Ä�šEÀû#«•¯÷•U¡bÁÂ}8«©ŒšMÀû†2^´ö@nµ¥a¬Ò9’@!€Bs ˜)€†EÀ&61�’`|X2´*ל¬ˆhE‰0Ô—€õA¦´4…eý}F} H�,>N±°"úˆ¬2 òCÁYH²�Š!€B³޵ÎÅßZ%|•€M¬Ýî•ã휓À„ªNÀ'ŸäadÂ�GÔ€@Ñ ÌvUv§Åc¬ÖŽá¨�š�S âj^ÄVã·„e(4G¨õ]q髬ê½LöÃ�3²úQUTœ@“ëï¬Úê+×xõ­ßs{Ú _)íŠ^úØTž«QP¤ˆà„@ÅxßcbpÏQ;^ŠA‘< Pï/úé+|lbâ)Ÿ5á¸$}4…Ïÿ¼*eŒS,oÆ*N$šƒ¤=à²ìæÊË~š]ˆ  QrvAŒ¨€@ߊœ„ƒô¤ A½?Žóˆ>@Ôe~((ºFt”I ˆ~§Lù‚¼YEÀÀ �a(¢¿0%æž={¢±@‘ãçQÀ8Ųâ%¬Å„B…æ@0¦{YIU9+μ®(ãÁ;ª”T•@?_Ý`“ƒaôO>q�+zxáÄ„¡ª?Jäj4�~úœŒ÷?¡_ÚÞC¿�Î"ËMß‘E?”D Ÿ>£ ó¨»îºkUŒ¦Û±ô5%ý¦È˜L…ædµtõó°p…Ya4`à�&èµÏs%°”˜­Ú¢ÇI†VP ƒ@AzésBe„‰Ñï‹“Á·Š*ï^^„„4�…4°C `½ô.‚õU§˜|ÝŒU¼d+º·,& PšeP@žý<(³Ä³‡Žù§ ñƒ+y+çñ Z9À€:«1ðƒr ¤û¤Üˆq€÷Yé¾­]ºa†w[GÉŠbs˜ FÙ�$(“1P»ŠZ3è¾&�ÓÄëXV‹lòj<·…ƒÑà‚@1¶lÙrY·ó¤aôýÖ¶‹± c”~a“È%€B3MõÊPbÚÀÛjÚjå@üÀKŸ�¢õ ^ÑíÃ;Eåf N@à7âþæ²ßø´¶Õqr�®QÐÇv¢¤`Â�ˆ=èv¬UžÆÇm]ŽÍ8k³‡ß I àºPðy3kßy£º´«0N [; Pš…`,7“n×yÒØ ÛÂÊ\=ÐÅC-OLvydð‡Àè¶ÿ«¢r¡ˆfëb¢DZpòI�ÞgÖÏè%nôeáV/„«±Ë±}HU9jA —qŠõM\ÝAJÿR‹_5BB >PhV¸­º}@fUÅ'÷6èA·ÉŸ÷Ôî�Ý$ѵôÌAË:I€@%t00Näô¾®é}G‡Lj¿â#iX,�NÇ[Mèg¬Q=:ÙUƒâa¿=Ѝ7�ŸÉQ%›ÐtÚZ­¸‡ƒ>øÌNó" �VPh¶¢3¤°NÖyâUñ�Ùƒr“�t^ã�†è¦¬b7ˆæi5Yʧ ``…@š@§}Mû™¸1$í^:Ó�¤8¸Gž@§}‡�jbÿÑÉ Ý8…,�P$ ÐŽ Ív„Þ®óϧNË.•› ¤ó4�@Ü?\ÖAÕX…(Hížöl`%D¿&¢Œ�v÷Ž©ÓتŸlÇ‚~¤º¤m�v÷‹×wTú¯ožÙ†ó¼šùlJéôMŸ 2*}ü ³*·Sn2 6J\¨9�NúÁQéÿŠhÊv<™lA™<êH ÕKú˜©-š§xˆc2›Š Ÿ†hs/x­¹'œD³OÆ(mà L!€Bs ’Áx´êÌC Fy�Ý!#á;jD€{¼¼ÆjÅ– CyÜɹzZ)ùGyŒÕIKÁ®JÄi2�VÏR«7}Ho­ßªoaŒÒSRA`T  ÐpË·êÀS¢ ¨‹�´L(¬R?œ¨:�v÷5“„þ[° cúÍþ“CÅ pÓ@p,†#¹Ô‹@›ß=gÊМy+çQj—, 0"Ph°¡Û=M›ÄóEÚìFé€ôltøB RÚÝËôƒÅ5W›—hô™Å¡&§ hó»GÑC[µé·éKz`J’êÈS´Åó{/°éòX£Ô,2YA ÁPh¨qÛ Ù²ÐE;´b‰"¤ �D…À´ºcq˜(”Ð.-¸Ã»Þd9<¦Ìœ>}zæÇ;#ôß.yÊåL_Ò?^r2^† §èW†Ã�R!Ð(4Њ-&’^:ƒ@'ѡَ)oõ:I4 �@»ûV¢Ð–ØLJ„KÖ• ÐJ™É¸ ¸&¢/)Ž%9U‹€Æ)eId/CöìÙ³úÐC�È Ç¯yý }wÿlÉM&0½É•«BÝZMàíáh�ô‚ VUAÖ:É`ÌŒ�1Ì’ÛVgÄ쳂ñƒL U_‹‚2³ä6±ãLrúÌ•ô—%Ã'ûÒ  Ì,qR@«¾Ä”ID,¨�¿ÝÕö›G™Yncæõ+6§³þ½ÜÒɨ+š%¶\› <Ç>ÙÛÀÂ~ÊfuNVLÒsÀà �AhÓš((3Ô ¶Â$§(úË0xWŸ€õ1yÛÌYÝSNûåõ%=ôиÚã!åp'×rä­TiŒOÊAž™kžRsÆŒ+3à Œ<¶œ—ôhñ`ä0ú˜·Q˜0)�9YB mîMúÃN §ÕJ6EY0o²+—@«>ef¹ì[õ%¶<~é\®ä�> äõ!ô}‚í1y^¿BŸÒ#P’A áPh–ÐÀ(3K€ÚA–y@KÊC°€D�@ 4QÈ<�ÊŠb²Pð³Ì›ÀÑ.$Z%äýŽí™Ïywƒi¢¼6°Ò{ ¦ (¥wy¿_Æ'½3-"eÞœŽ>¥ºä�f`ËyÁí™§Ì´˜‡cÁ°SÙÙtcœòŽœñ¨UYaøAå°þ0/gúÃ<2ƒñ�ÏnÎÜ~ÎyUƒiJé�@ž"Â'¼œw×ßNS·êKlìÕê9Ðiă@òúÆ'eÐî.ϸÿž2Fa>×GbC`°B³ÀVÎ{0úàºÀ¢Èª�¼·zq¶S¶`GŠ"�ׯùsºÏ|Z½„c»hŸpI^�¼þ…ñViÈÛfœ×—Ä éóÛ$ äõ!(3Ù íË¢�Ú3"F� Í‚~y.ƒë‚w™M+¥&ƒ•.a]Èëãl˜ØvɳÌè­úJž_e’'ï^ äýfù½öJ´˜tyíäNßÀÀ:\§L9‡ùÁpÛ$¯ô¼1%í•G Œ¶œÐÞy-ƒëàö˜…mUÐ6(5Á´‰tl§LÁ � ä}�’ má¨ûË0o[—åÊÖ®þØ’ºy_3Ïûêv9R�kš@«¾$Ž»2/§“â†À@ äüWÇ¿á�ÊBaí Ø±Yó9¾|Þž1 0 PhöÙÊöFZYL™¼£ÌìlAÉó&8< L6HÈ™(D‡ˆÏZK¥À9ly“…X®•ñsnØbR>Æòú¡AQ�ßG›¾Ä$¤?©@;�²q’ž·ñ²µâ? ;'­Ôä¥kÅ ñ 0 l9ïtÞ™A,ƒïl�És/|}³@Æd#�w¯Y˜&ºQ‚ñ’§­SŒ9ml™ÓÎÅ &— 9¿;~s¬êâ•õ—�±—“À,’@Ö8Ÿy[‘„«‘WÖó‚>¥mƒVhvH9~(¦có–/M¤FnÛr’ÞRiÛ)kTD…ÀÐäô‰C“‡‚N ½êeàP`3 äõ-l­w{·Xñ}p,¯Ýë]k¤2�ôsŠyÛ�¤ŒâÓs9+Ãæsl=/ƒ6yB zX]Øa›h ÅêÌYÕ)š=ìÒ[x«W§DÖaÈê% +¨†Õ %•+ғ¨4ûÀZ¼å«¤ÒÉv з4·Õ[­Ò´ZÓ§4·í]³¬gWVg^~ùåó:è y3gΜ±{÷î9º'æJ9·sñâÅ›5?™24×*–—5—39™ÏU±µ� Å`…fLã‡b:&oùÒDjèÎ:…·z5lHD(�œ>q 2PØ`ت8›ÚÄ ]"_%A�¥GY¿±Næm×^{í"ÝßßS± u¿OH!¶Iëõ·A+&¨ûþ¾Eê(ÙøÃÕ*ëm9‘ÿB«4ß™6òÞ¬ÒùŸF˜ÀPÞ@Õ‰wüPL‹ÜÑ[¾t"ÜÕ%�^5 g¯T·¹�løÒÊÌ1”™Ão”H0åÙÇŠªP‘"òÆ[ê[> ÆùBýL=ÿ?+8#òûí·ß*ì<9ž¡¿s¥pûã(€=hמô)=a%QkSž]YÑ¥Ì|¢üZ˜Íd¼J÷þßËÿûºï·j•äGׯ_¤üK¹vìØñ~•û*•õ&ðý}Ý ’w»s*ViNe‚F… ÍZºÝ`¬‡,I2dYçÀ1¨r£P|% ä)*),BJÀž}šTM„™Æ“¾Ð ;z%0åEI¯u›N¿ë§‡iô»^ênÙÏp»™rÛJM®þä*˜¬OÉyÎôW"©G‚@ü!˜žúõÛÚ@z•VjÞ"ÅæGì¬Ë6q»^¶lÙ='�tÒß/Y²ä½Z�ù×R¤þ‹gÒ�ludÍôâÁ|ÎI`B ™Ph¶o×ôC1wÖ>+bTœÀ¤¶µAu<0ª¸Øˆ@`0²& ô“ƒaßäRòXƒx�¯ÆŒVe9c)Žs»ÌÓ»}hâÐÐ�½{Y/GR¹¤ÇÞ©`œÈ& %àx:¤Ó~D+#ïñ´²¿b_]š œ%¿Ï»l¾Zg]~Va3Sþ…:õ¼�媬nÇÌ&Ðj•fv |!�&@¡Ù¢³Ø�>[dKPE dµ-oõ*ÚXˆ5LS&šY÷Î0¤ìò°š½<¶#žó”~E<&½d,‹�”G¤ó–ß"ó‹•�‡Çá[cs’ò3öÃè’@ÖË‘0 ^”„4°wA Ý—tÜ�Hz¯—£>`ßcŽ9æ­˜üw­–üŸ {„ü>ãá2Ÿ¡•šï ÜeX…¦ÊG¡Ùá¼~…þ¤xD�@M ”úf©¦LB±{~(†™`¯ Vìðq—ØìöÌšÄ{LŒ �œaÇ“…QáÔôzÒO6½…[¿¬—Ç&Á_”d)4k2h °H¿w³ÚÊÌËå¶­é¹+4¯¿þú‡kBýJÅ]¦x¿¥?ûˆÈ7vïÞýÞ¥K—þXö)׺uë½Ï>û¼Syï9ðÀÿôˆ#ŽØn‘”×Á2Î�ÿa2&óJ)V’3õ,NúÚ´iÓ#xà�ßVùÇHr”ÒìVœ{äþ¶>hb_~(�ÆÜ7ÞxãìíÛ·ÿ‰Òœ¦•iËï@Ù¯�ý}*ó?³Òôëgã*}�qÒ˜+Ì3~¡<úa‡@+Y}‰~í҄aº_ü¥…Ýï{oü8‚îŸ_Èú"½äøW}ʼežwÛm·½ÕïÙ8jdqOéœ%™¢üÔ¯ì óoeï¥ ó»á†«Ïz±üŽ×ßqq?²F÷ä·Äá‹aÜ,»Ê¬ÒÊÒ÷†±èf²0ÊìšT÷¬~²Iõ£.'�~yl òEɯ•}¹&àÑ M�—w¬ú8 ¾Sæ�±Ž#s…¦ÏWœ�+Nx¶žÅ=Wùœ»qãÆ³�?þøÿg™…—Âþ—Êûó“‚ï“Rü\ù¼Gö¢ðÚªx+SRNº®ºêª´;ö‚]»v]¨~: SÜ$Žì®/(ÿž<¦(D¯¹æš¥Rf^¬|O²4q­o?[ñÏVºwI‰ñVùÿ&Ã$çþ,­úÉ2Þ_€Þ>HÁÕ)�÷·ë7éÑ3w1jÅæ§u¯Ÿ¢ûáõñ¾ûî{‚Œ5žÈÌ¢î)Ýá<½#…f¯ý�Émç‚j+ý…Rf¾ÑÜ~Å}ÂãÔ'¼BýÁ?ÈýZõ ;=ÜM}0i\ýهϡöBȃÜ|ÝÚµk/\¾|y²ÖŠbfùI¾)/JèOœ4&šG ³³n^5 ©Ñ ×…L&ݰ��=Ô<CØG™€î�aýí^éf²¦Å^_Yýdüâ§¾•Bò¡Èzy<A—y³”�cûѦLÐßQ±ûFõwÛb»oA��ccÚzú» ·sö"e¦ì¶5u•ÒoðHR”\*e¥­Úœt)®­ÀŒ.•ÿj)®—#­Ì´ðùZ9åòDñퟔ™sµÂóJ•ua9†&p@IDATâ¹×’¬6‹ýOJ…Û*ЇëÞ]#<ìŠ8ŸDñ)÷[¤Œµ/À~eõ%a!9»Â(Ø!X:dïjî¦ßz¢�Ó½˜œ§™ÊÓfɽ%åßì0¼à{*Ùr®2Û*4û釬Z!þ1“”™r¯Ó_R_!z¥ú²)ý�ÊþC)3/SÜH™)Ó.KwElš{lþüùÞ×DnûW0³1{Q’dXèOX!Ð (4ó3ýPÌ�IHã ðl|SÁh ;F“{MèÆ>:Ò†ôoctHPÓ2 xGŒ¯Ð¼S¿ãÍ^­62Ec´õ\Ê„[õ—¬*Ò6Ó9ï–[nÙWö�º[Š�g�xâ‰/ÒÖÊÕsæÌ±Õ[?ð0)+ÿÒí�yP`nl7EÀëô·D¦ˆ.­À\àv7gÏžý.Éö¸ØmJÙgÙÇLTþþ÷ÜsÏþ û7 SÝ^àiÜÔ}ü.Ù] ûnÉý$­@{‡ÒþžâÀãIî¿ÖʪýÝ]¤™îK¼yQÒÀÞŠ@ãt)'gxúÍÿÒífê~˜yíµ×.’âî­r&sDÝcßãyOY™ž·îëdé¨û…f¿ý�V^ž©ò¢•âq¾ï•‚s®ú‚S÷Ûo¿…êG.öò$Ën73.û÷SÜ/¨¯:YýÉ�Jºò}Ÿ‡‰�m=ŸtÉÌ2Î{QB2 ;4† Í›rÀƒë¥"Z²×<Ë Mžu"�5YЀ¢Nu@Öâd­ÌÍú�W"95”@¢ê—¹º&/Úê+4ïÒD¦­˜_ñxZ±¤,§­w·Ì¹�Ý­“””Š?¡1Ç")>¨?[áy­G”Lv&gréüMSx¾6öتð3¬|û˜‰ù�~úé¶MýWq¸)^“K«¢«²^{l”ýmú‹ö×›Ÿì¶2+¹æÎ�›({Ï,yÊËZ²�PYŒ)ÙÆÓÕìvî¦<’Õ–úý¿YÊË/JÑ÷=mãÞ,s—Â7©Œ¿òrä¾Àî1w—pOMó¼u/$÷¦û…f?ý�òž®þícžŸêþ!õ=oò³A�:ê¨ Kú!Åý©Ç5Sýá©�ûv)2Ï9å”S®õþDŠâO*<â$¿IiK`‰’5— dÄ 4ˆ@òæ§Auê»*[ =¸î»dÐ;\§ª·AµMÖ³&ñ½—DJÔ‡@Öd�û¡>íW†¤š˜L p(ƒìhä™1ÖŠ*Þ­¢_Zú/ÔïØ²ùµþn ò;Böh5‘MàÕ†è0…æÏ,®&ÎK”‡YíÜI›¸�Ù‡~¤\|‘Î×{µœáõ¿¶ðÔµ0p¯»ûî»?T’(ìÓú{žþ¾uÜqÇÙvôäÒVó'IJ�I¾ÿuì±ÇF2%d‘l3,ŽÌIc~ɺØãÉ~±;í,N­*}ŽÜ&÷ã=\éÿF+7�O)—)²ž1Vc¯R�7.Sý¾Wø½`•“{¢ÛJ*ÍlÏCæ–ÞÜòŸ”•ü¾«—ïÕ˃o„EßS*·ã…GýôC:Êâx•嫼·ªo ëevÕùP÷Ó½:©ŸQ_÷ã�;“#5—"ørÅù’™ÿ©!ëõ‚åV).�ÔËæKÑy«çcfÑÌäÝKº½SSinõ¸Úòùp·»)9mḻCSa?Ü_Õ*T-Æø?&°ÿ·+í×^{ís}+¹­ZÒJ®÷Ëÿ3qû¢z¨ 5ï›=}z§û·0¿ía’óCR`>ÖÜëׯ?Påþo•eÛe£Kömn7óàƒþW¾­ü©RFœoé,LòÏ•óÕZmz�œ‡›Ÿ®Igßíõ*þºO±ØSÕ#š)÷w÷GÔ÷mV?r¥äÝ¢|þ:»YJá ÷X?ÌÂ|°C£K…fÐöz8ŒN{xL„nì£G€ßÀèµ95žJ@÷«î¦bÁ(�@ÞKÄ‹˜’•”7˜§&ä?’Âò'f?æ˜c�ñu³Ç×7Ý¢x‘’P}âuîgæŽ;^*ãSf�¯…Š“^Õ´Rçñ½Ô#¸©<×»]ãÐÙnïÄÔ9u;UÎs×,–l¡§UÞ¦„ˆÂ”÷=îï¦äùˆÒ‡ W J¯üúªViý¶¶ÝþÚÓaB Ê¤D›èE>)ð’ûH÷Eò²#ÌKŠÃ”ÿﺟì“>¶ÕÇ=õEžo'¦îéI/)úé‡$÷»Õ_¼'§ÜKôÂç÷=Ll&­ÐTº7*,d÷8¹ïñcóÛZ zº”·¦üÇú`–ÎjŠ{Ï•)Bà”J`Z©¹×,óø«›+±Wc˹Î,zô>ûì³Jˆuzp~0�ë€ ØjL . ‹Õƒ|B[$Î ý°C É¶lÙr™ú£q¯£ðg2Ht˜zv>RÈ:ˆ? Ç>Úªö\µm•zÎÿR[JmUbtÙvKõs�Q¿÷‹P‘'÷t­>:fÿý÷¿õ(}øÂ㛩°i {²òú-�NŽý~%Ó¶”Ý!æ—¾´’éÅÿ3•w›â|TöLEJ:]èV&ëó”öñú[ ¼ÖKŽkô÷Kõ¥u;£Î¬_–âàÙa:·+ýIJÿ$Åy‚ÒÙZ[Yu»ìÿ®Õ[ß—ÿ�;3ݧX™ô+ƒ _¿2²ú“^+vë^xž(¤UÊ_Z´h‘Ý¿™—¶|/’ô·¥èûBØwxä^î)õ;W~st¿M“òoºì3Ü®{q†ÜÓôf†ì¶ éæ°oòr{í‡<½­úÔñ§)ŸÓå÷S™_Q¿ô9ëÔ¿}@æyò¿D~äiÌÜ´iÓ#µúòY ?]iž$¯{e¿Qö�÷Szù²1ŒŸeï…YV>i¿tÒëï#�/n@ Phí�ž´+¨t…æå—_>_ƒÍ?VYö`°-Lóõgo¹ÌÓƒë}]3y{o~u¿ôÀ²�·m­xºÌÏè\ª¿ˆ·rµ¬šôÇ‹Çϳà-ö˜5P’Ü(4û`JÒúH5ÑE¡Y¿f,MâôïƒÉBi¨‘±~/«T‘ðå±Õ«ôñ–2j—)TgÛ&k»ŽÞ%…æŸ×�AºO1™éWêÐrƒ—1kœÎo¥¼vмm¦ú’Ýå•P|Îéþ„ßGñŒÉÃ$`ox¸bê¤ÇCš´O„î¢í¶SÊÌk”ïßèïýEJÌÀ´/ÉE¼Ë¯1—„ŸÐßKT![1pžÞ‚Úv©–—å§©=¢/mê­èï´Œ\r`úwRrqd�Ê`uf嚤RÙ³R! F—À«¼êZñõ ·×Ѥ_©c« ^fÍ+&_êè”(¾µRffµ }Iü P_3ë+z±’guneNÚm«‚”•ßS-ü¬#[•ù±ûÅ^;=8¸½)¦‚‹RuyTÊ=Å©4‡‰Eä/ó4Y¾3%R öЛ½r&KÔƒ@VßXÉ‘¨ �²_ ×…C‘rêkÃçjìôjÏSŒ¿ïöª›çMðò¸ê­Ô›|Œ)zãF*@È&€B3›K©ÒÖéâ�¥¯Èüê=÷Üó¢ÓO?Ý”šcZ�h_¬¼ÀìŠWû7aV�Ôe+RßûmÕ™+ŸN…g9ïsO t‡¾²Øde*¼½®˜€ªN ­|Ð˺qÉ<¡?.@ DOÚyu/×ßgõuö5K>¨sýNÔßJù=Ë‹Ö=úJû€�»ëhª_9Yc¯ÒE�û¯Ò˱Ô.+RPªý6ÆS^8!@µ$€B3n¶ôFû5eµ¨””PÞ®Ìüö~ûíwŽW—ONÖ`ç»íä�¬Š6mÒGÒigúM7Ý4+þzg:¸­û¶Ûn›sÄGlo±ƒªëEZ¡z™˜£ø7än;BÕV©­âæ¹ïrË L±e¥À @SF-ØýP ArhÔWó} %Û½UOW�_ª/�韨úò 1|TggþcèQSû4n¬©èÙb§Ú);¾€@¡â9ÿD¡™’ 04(4Œ~ãÆ�OÒ‡mΊ‹Ý¨‰ßÙé/ejàùImºS+o;å”SnN‹¨7òöõÍ?•bá †V(îB­ê\«xßU'}‘ÞÂ'«-íÚµk÷Wû°Ð¡*ÿ´m۶ݬ¯¨?CqŸ¤ôï�BñËSá/R¾Ë”ïå±JæKoÛ–ô¥Ìëëvÿ¨ò¼Rq�Wºêo³Ò~ÊâÈï¹Ï‘õQJ÷1¥ÿ/ó/ÅÙOŠÉýUÿ¹úR߯UÖ•RhN’5Œïv•{´ÒSö£Í­ðsôÿ`”(3ÍCƒè¿K§•÷)ò›©rÃó?Ÿ`ñ3®…x+ÿ«2Âlâóå•”ö›¯¸öõóšé‚ÌOb'²Âðƒ 0ÊÔ¿T/)“�úà•eæ?ˆ¼;|¶ Bʨ1½ÈýµÄÿ\�«€è# þ{¢_‘Ô¿Ùb€Â®¼—XƒxÞV 2‚ �  ÐŒ‘êÁ;^8ÝT†ZÉøB=�#_•g[º÷:RñòœsæÌ±-á‘2Sé7hëø™Ë—/¿×âk¥äÇ4Á»LÖãõwŠ”§gËüý™s†Ê2«_m2¨¼¾` 7%ëÍú{«þ|PìJSy%ç}šÝ®7*ýiJoeøªÎ•ªßɱߨúõëSØ­Ù.)Y_¨mîãfWyÈx±Lß&•{P½¶š¿^‡Ûÿ«â>[ϲôº.‘ýJÉ0S¦Õm†üv*Ђÿ©NÆ«àlÉ€@# ¨O.U™ÙHh#\)ý^&F¸úT½Cï­ÑoeE‡ÑÛF+úwgòµ-´Ek¶î8hÔŽoزeËJ±OøÈ>ž8°Œ<Í߯ÓŠº×ÒùↆC…f÷2:;åù»^œ”¶Ò²«Ké“Õ•ˆ­re¦e²dÉ’;µõúí²F IåÿrÙ#…¦:óYáÃ^îgéL¥›m»¶_Šÿ2­½Âý”ÿ‘šJûqmŸ¦oQShÚ*Ê m�»Ê7…hä'奭MšK—.ý±Üë/º”þ J)4•gî–(Õëv%¸Xy/�)4ÿ+’á‹{sâ? @€@“ ØXsÁ‚ãM®#uƒ @ ;(4ÅkoÞ¼ù0�gdJ>»¶J!÷‹½ÖÎþkæ<ÅLVMêËèÿ–N)…§}9<ò–s‘‡Ën+£KÂw«ì›ÌŸ=)$¥àü^è'û\s§/¥�”ªR€îTyQ°ì«Ì¢²w¸ŸVKÎŽsþ)Ÿ}=HésšG¦)4£KyßïvL@€@¯LIÒkÚ0«‚BØ! †€ú^[;–fóºQ[©Ö; �Q"€Bs@­½}ûö…RÜE¥iuM·ÅjÛµ}xÇ“mLÝtŽÒ¯|…¥œGë!?]e%‰âÄ_�ÍÄP¾ëÇo,‰ô7^cß–âóçæVÞÉþɶÑü¤hÜ©òÌjJÒ½šÕÈ5õŸ’Ïñ¸RônŸc²�âúGŒÆfÍšÕ‰tr¸ @ pY/Õ¿R/¸í…ÉmÎŽ.=�&:Š˜Š4ª“×,þ)4…;Õ¶ã}fz¤Ò¿ÄóÐïcÜí˜Æoê€ Ô“ ͵›rEýw`ïȪIž�I]Ê+ÙÊí~±9I‰xûí·Û*É튿G†IQåžîÊO…g­¦Ü3)AÊ¡ôÉ K)2gY°&9v¦e*f¶Sq“mðRôîÕ‚fG�|UÿÙ’3²«<š-X@`˜9ä�—³üQ*{HŠÜ‰~›ÂJc€D¡ÙO^¤… �&¿t™Hûã=š;®ètn:zt¨1šA`’¬Uªf-ôp�ã’©cM”“î×�¹ÅãH¹÷·‡¦¶¥Û—ÉýÚzøá‡ï0‡âïrOÙ#9®¾úêD!)yì#=“.=Ò+;-<Ù†®ð¤>²GõQ>‰‚\JÇð ç“ò6GW ÍD–)cS€z˜âGõr7& P�,… +hÊãMÎEô)£ØêÝÕYã׉îR{T ˜kTëN½ÛÈ×¶OE @ ªPhªeâ7y¥¶‘ʸ9(à¬ë¯¿>\±íµÞxã�³/¿üòù `²ªSêÇé+âz˜›Rô�îvÅÿ�âEË%e†«-#Åà¼yó…¤d‹Î¤Tšä÷*A•çÖ8ß$�ÂíLÏèÚ±c‡oO”Žú(PK…¦&_6ßµkW’oœå#¬ƒ¾˜žp™q@ ¬šb �JH??ÕWOTZ`„ƒ*M ݧTZX„ƒ*M@sÛñJ ˆp€@ßVß9‘A;чx<’:Ø7¹=4å?Sëy¹”„?9à€îݸqã#,\çcþZFtV¥¹unåÌL]gî«Ü®Áa²SJÏ}Ì_gzîçá*Ó’ÉÖïP�hÑã¸áJÊD©(Ù|Åd’^ ¿¬ž^¤�±™(<%_˜o'´(»ÛÜ­´/t;& P>�´’Š gùÌëZ‚ž'kê*;r†@Öêú”òÙ_uÕUsuÔÐ5ƼWæçõbý±�”j¥Tš“to'c¼NÒ'ëwStäW?,0|›©?x̆ .–y‡ÌXßÒ‰êsŽWüƒ:‰[Vœôx¶¬rÈ�d‹ðàŠÍ’ôeñ�êø/RíÿÜh`øfuê÷ëƒ87gΜíz «ý)Šs¾:Û“J‰âQ~o×ßçâ°K4 }Žòý/s+ÝËe<33ãn×öïû”gä”=RhêÃ:x¸ÂüLÊhE§ùË/T2Þ'¯…úKü$ë�ªƒEµ¸¾4I¯U”Q9QýÓ€øpÉ N¥M~²­ðHå»{ñâʼnòÒÓ˽ëHÿ5z(^­2¾°dÉ’ûíá(Eíï¨n³¥\ý´§Á„Ê! {~E99“+ 0ŠèSÊouíœyƒ�Ÿ¬$™Ïó{eý“v%küu©âœ¥1ç×eþ^»ø„C`Øôû¶ M._}Ç'T¿3¬Ž²Ÿ7{öì«eý”¹ó.ÍSOÓ<î Å·9áS4ûN^\ü!tC€šÝÐê3îý÷ßÿ.eq§g£NýízÜ­ÞVP^+óòK”™z _¨¯ŠßèñO<ñÄ‘}mì^¨ðË5ÀÜeJ÷1�'û‡¤ØÛ¸]aižè@RþÍðp7–¬ªTÞ‰òQáwÇq%¥âNQ†KþdÕ¥ŒI¸”�ÿGâÛôw³ÿ)¿s¼\•õ•Àÿ'zè½ÚÃÜÜÿý¿­xÜm¬”æ>ŽM²l‘û 2?ÕéŠϧSåŒw�8€F�€ú]”Û£ÖèÔ·–4.{t(¸Æ�G…î<»Æ^žîZ‰Ž ó’ôåOŸÒ>Ç8—·¼Ÿ‚ú„E©Ü•rOq*MòýÝã§M‰P‚GÖo@r°‹¤Öd �a@¡)úR†M ¢–/_~¯Þ�Ÿ¢²\)™WìíR¢=_JÉw„ôØ-YŸ"¿¯†þ)ûE:ó�¡Ÿ¶§ÿ$pûJÈ»ŸòL>$??ëó—®rÿÛìz$ŠQ¥¹ÁÃÝ”ÌI9JãJPãÛöAçyÄf¢8uÿ#Ž8b»êñ<¹7º_lÚÊO¿6Šï”Õ�X¤ÉÖ§"i’WÕ ¤€r�W]fä �ôoAýýÄ`J¦”&°ßQÖä³Iu¬@].eИꃡ;Ï®ñÜ=¶`Á‚)/Ã=¬LS2L”™?y×—@ÞxœÅ¥¶éß¹oÕ·:Ùg»ý¢K÷ó@ôüœ8&šM YE×ìjV§v‹-ú©>ø3¾mÛ¶ßSGûÛêÔŸK÷ Mo‘û;ûî»ïšcŽ9&9÷2”Þ¶Xkàÿm³^¦ôg*ì$¥¹U~?ÒÛ÷+µ¢ó‡a|³wÜqZÈxÝdÝç�ø†ùIYúkù½@é§tŸ5?»ä>Gù=Gæ—öúD~¦Xý±â}Åý´eýÃÚòm ÖD9+y.•û<Å™¥Õ¤×x\ùŸ+ÿ§(Ï•÷¹÷ȽÛìnÊÏò2÷]’íJOš¶ZUy,ÑŠÔçÊü-¥¬Â·ËþS¥¿RçŽ~EÛÕ3¹…ù`‡º# ûrB÷ØÊ0•)ò&a<ì£E€ßÄhµw¯µÕó{BÏîñ^Ó•N2L×Yå 5¾¸S2%»T:É_i•dïÇ[Å¿í¶ÛæØKÙVqòÂL¾›nºiVÞ˜0/]–¿Ž(úmõø`›pA`$dõ‘ž‰òj$š?·’é¾Ñ"ê¹É¸"—N ë·£°�Œ»¤<˜©£v´��;¾\óõg/tWê\ó‹–-[–;ÙÖËäSõEü¶LK{»þþKýáGôÂù»²OºTιÊ÷ÃúûG½¬}¥}Cöêo³”Ÿ²Èò;Aîsd}”òý˜Ÿ�n í¸Y/ÿC¥ 8M/ÂoÖ.”gh¼ú$ŇÒß¡´¶£åE*™ÒnQÚU2÷È/¹n¹å–}ï»ï¾”fžþf)|šò»Sq·$‘2,Vþܹs©èŸP°ÕuLe/�±Óþ”ÞÌÂ/ý6ÊÈt ¿�Œrñª�-[¶\¦ßöxZÔ²ŸGZrœî�7éþ;Mæãâò óOt&Çd¥å²ûViþTiÎ�Ü+¾P¶@仺Ç.Ò½•¬fô´êK>­¸ ÷iÑÈg®¹æš3´¸ä¹rÿ_¹­LëKž¦|Ÿ,ë~ºÇÿR/-~nþýôC–Þ/åoùî¯ã*æJy­ÖÖ|è'í^بßÉ€AñÿÜâËïYR~Ü«z_àé%ËMR)¿p—Œ�£nJÓ1)MájŠ;ºç�¹n;`æÇã‘ctžåsŒ£ü¯?SÈšŒ¦±�÷D— Ï—2óóæ� ÑŸÙ•Î>&ùx)]®2wúRÞ�Ry·¦ý•î.÷Sz·n¼çž{–÷²2Í3p3ïØ�¸ž “è·oãòñIžr”µ“DåM×ïß^Š|Èî;»·‚ËîÇË7oÞ|´våý*ð�¬›6mz¤¶hÛ=ùDK\öÒ`¹~ë/¸á†žm»ëúeñd¿WÆ[Ì®x=÷C–Þ.Õ÷o•çëô¹ÕçEæÝwß}§��ÉRÂz:™¯‹"Çÿ$ÏÛÔ¿¼Íœª‹åmÖ­òƒ^ü¤ûX ëé«ʳ§´$‚êC`ooTy&©u‚+Œ‚ ÔŒ}dͬqÓ¿¹'J(†,G„€&žãeVU“þ4 7…_¢Ì”ûR•›¬¬Ôoøíšœ?6-‡&ܨxÉD[ñL‘aʃHYhñå~‹¶¯›2¼ˆ¶ë‚0@eÿ�Ò$ÊÌ8ìùE‹ TF´rÔüåw¡ŒÄ-ûSm«§ÌH™)3ºo±ÛÍT¦ ͼ”ÿ™òÔÊP—;/JèüAô¨Ð£W»äÏJËn€,*ø9)Ù&Üšy¿§0N/v)áη>ÀÓê¾Û ¿Oʽ5ö›/¥å_y¸›êƒfÉÿ?äö>h�ìoTÚ•2o�ã­Õ�Ë/™£ë^Oî}ù›bÓ”ŸÉe}�üe¦ÈmßlðËïç®û!Ï@æ{h](þdž¡]œº[Øç+îï´ï:H ÆÓ‰èKÒDpC þ’βþUé½tn½³…”YÄQ¨7u„@H@[ŒV‡n»/òVÓ„ñ°7—@ºo”ÛVÉpA -�¼qW™}ŠV_¾U‚Ù„Þ®uš„­UEÏÑ*ŧÈ}Eä«ò½ÛÍ4%„Œ‹¿k‹çkµ’èÃJû?宇)íEºf¸[f¢ˆˆýÞ(%Ë¥±ÝWV® üÆÖ¯_˜…§ò1¯�Š÷|³Ø¥pSHÞ¬¿˜;¾Žv‹™ÚÖù>) ^¨t/S|SÊ~  °O²{ì±v»�õþÇA€­ 2¥Éyò¿@u}“ò~³üÎÑÖÖ�A¼B­*c¢Ð Éldè·Søâ[a)€ïsˆvO¨8YýÁKeNàÿJ­ÒŒîe÷›3g΋d�îQÅÝpÿý÷Ÿ©´ïSÚ·ë~:Ua~�¢ÕÕg{:ÝÇaŸbÞ¦8µ²î4‡òŠ^NÈ<ÇýdgañÕs?äHÉõ#Ö—ˆëèïßɪ±ãëã4_.‘¬¯UçËï 2ßlv1xK§p«Ê˜(ÍóÕ¤ö=Rü·»Í”Ròs¦Pù’Â":oÎÃåw¢ÛeNRfš¿Â”ñ¯f·Kî#öÚ&ÿ—¤ÌP¿™¬f’}•Å’|;<¶V4EJÉ“¬ÊRÚwKpS\VUö )8¿'s�§•97°O±*n¢`Q9÷O‰�ò¸üòË“•]J;åC%©è}9ó>ìÂKä¾°ŽLb»²*›5ŽÏŠ×‰ŸîÉéú{©Ç•žñ»ÝL»uO›Òîý½@ FSnF—^ªÌ“åèØ9¶ß~û…+#oýÖ/óp•³ÈíÊ3é ä÷õWŸ‰Ã¼/Ùªû9Ú/¶{ºÿøÇiE¨ÉØU?äy¥M峯ûI¼\…¦Ç‘i Íèê¤ïñ¸½šŒQz%G:Ô�À”Ž®~U(Ob{¢¼*�orN?õŸ¨ƒÜÈ�2h€m+eÆ=o¹£mçô“Nd´M£ÝþÝÖ^“ÚÕég¬õ)ÝæÓI|=»íëâQTÙ¿—•Fʇwdù+�­¼ôk“[BSõøy�ÿ£Ã°Øþmÿâ°âíDRˆl´p±Ø)¹¢¨2§G–Éÿ¾:Ùm�_Ÿö“;T|L VÞûzñ²'Š�)c�C9ÄÎŒ\ŠŸ¬&ˋ߫¿}�Xr�g¥çù’E¿4�¬þÄâHÙ¶RÆ„Ùû½®¾úêõbÛ³Y§ÕÑS¶­è>·%Ôä‘ÜÔ½~¤ž‘îÜxÔQG%/1ÜS}Я|µµüŽÖ=1]÷]’(Žwiàça·iåÝ®¾h§—£û*Ý—ôÛÅ"D+BçHŽÈ½sçζ}‰âúÍÆôuöN IYEY£E’| P-鎮ZÒ P{°8Šª) .L¡Ã�‘$À`p$›=¯Ò6Iä‚@áŠ\QåÂéÙ}‚ÛÕ�]ëöÍ£<ž”?s{h*ÿp•ä~aXÚ®¸ÉÊ&�=í|NSBLY` @˜g”�Ò&ãv…'š• Œ)i‚0Û–•g~J¿WFHÙ·mÛ–ÄWÚ¶+:SÉ‹p26/‚âä‘§øÖï¶°ó¾uDørãÊn°ªßIÎÓÔ­wkNÚäþ¶ðÛo¿=ºÇÕOäÝ×Þ—¸igOéK²Ê—$M«~(+­ù©ÏJú)�Ûö%’+é¯TÞ šSÆ(y¿‘¼:âÔƒÀ¤Ž³"NÊø­Þà ¤¤*˜ô@Ôy¢ŠB"A k0H?9òÕ*ÃVSeI¤ Îx–?~È"`ý‰&öé°’ú”è|L++>Ó-]l+÷/ê£ü|Å–1ÉT>ɸ_ö$¯I‘‡V£%J å]šB²LÅb…@Oô�è)aç‰Qÿ;°wbÝâ‘ô{ŒÛCSÛÒî­‡~x´ŠSÇ`$ç`ªŽá}ëGB$«=žô%úQ’.ηë~(�g’5ì³Ôg‡2MŠçŽ”4‘×Ë4óÆ(E–A^€@u$›êˆ4I²&êÑ„R«L€ßI•[ÙA =aРv|åR 0ÊîSô1‹ƒ²HÚÝ>týõ×ï†ËÿwkR~ªÛÝ´tú{²»ÕG^çv™[c{¢Ä”2ÃÎÒ‹.}½Ø·j&ŠC­‹”Ê'\•…Ï›7/ÉG²D+&Uv2–WÞ‰ÔËMå™(8”>É+ŒÚµ•4‰¯r Ê´K–ñ¬ü,X°*Ë?dÐˀ̽¾$IV"ê~84KóÓp =‰¢ø‰T÷áãÖ¯_?å~’œ§{Åÿ�â=dî}÷Ý7ì ’•ŽŠã Êä8ù% Mm÷t=÷C.O†éçwŽéXж}IØŸI?ëŠØŒlKóÊüm”VC#� ‚Vb… Rg;Ч‡ÂxèÆ>ZÒoøÒ¿�Ñ¢Am!°—@Ö„¡Œ-¢ð®4�I+×]R”N³SYý‰¥-¡O¹ÂeÒ³ünM�]w‰k›¤\úKÉðŸîÖ¸p…þ¥†ùKy±DF2AW�~óò±1WX†+˜’¸:3ÏW*%yªüh•¥dIV`J†Hɺ}ûöd;»ä𼓴¡ÒÀeM…' OÓV ¡º„«MÏÚ¼yóaa~EÙ%׊Œ¼Vgøá�\y‹t¯µí|SPø³Ó/?,L/EN‘ñ )ù~ª—'O÷øº×-{tf®ùéLÍ'xX`žد ìI_ û6yá¢ûæ`‹£ú%«§eÏÑõÛÞWtÝ2L²ªìäe‡úª0ßIñÜ!¹os»Ò¾Ðí%™™c”’Ê"[@`ÈPh¶i€ÕmJ$¸ª4HXSUÙ� ƒ"�µM´ÀÕƒªåôH ý¢Ç³ÑeÂí˜è”@ž¢è>E¿Ï¯2]"EÄïßvÛmsô\ŸvÕUW=JJÉ�(üqûG¢$Ô*§¯Éý£8l¹â¾_J‹…æŽ|ÿ‡™qI¬¸p/ÿ2x2á×ä?Y™%¹|U´ËiõR¤°�2ÑÓÚGƒ"?}LãÏXi]‰‘¤•_RŽÅ“|‡HÖ£üO^‘ÄÂ$Çaî¯ÕbGf)g–-[¶Muß`ñí’l\·n�)pM‰2ýšk®Y*¥ÍŸYzóëõR^㽦%Bº&B·Û‹èSt¦ì•Ê/Zí¨r§ßí'ÔDÛÇu/ÍÓ½ðÝWÿæe*<ýàí&ó½Dy¢âØ ï™Jû§ò{fþ ·+ÏäüZ•;ÛýeFý�üÂpïSÆ6nÜè+¿½/Iú‡Nû!/Kõ;Üû 3%³¯µ¾àh�#5ÿ6—®Ñb÷hùÃn�?Užßt˪çKTýºÊ¾Wv÷©®·jÿïQÚœËÓï”D¿bäOˆžŸ¤åíwݶmÛÐçý7Üvú?óÓšÿ¦þ?,éÿÉCZw£–;?vhúC-ÿµËkÓ 6ØòÍAÚEÚþ&ý?:aoåý“ Ýþ¿¿G?Œ„£A52;<h?~@3íímK´�;Ö |²rl|¿ö{¯Þá±DÉ×»}ªŸpë”ö]y„ÇS—ç¼óλQùÂGt,ùsmó�KÔÞ-ߠ釵¯ËÝ6NãŽE]ßï,›Í@ „4½N‰yä­f¶aúÃÛò›Ì¯{¾óMˆ;VòãOc>q_ì¡%íÆÐÐ\âö÷7Ï+dl¤¡*ÝÒ{Zåõ…úMëׯÿƒhž�7Ú(ÍDÒÃ`‚ÖÝ©mŸrÝu×Yp4|)í[¶ õa@BÿWî33úbÿ]—¦m:ÁÃ4­ël¯|ßvùTÎ 7¯éÝÁüA—¦}FG‡¹UIÓ0èêgPæ£*+¨}œò„í×ügýmr˜'‘b‹ˆ;?1}†s9¦èøð§*ëÿîaûU­zd´¶*Oêÿí³µî“)Ûÿ¦î•ûýµ×^k£B;#Cµ}8Si¶{…÷³TݾÝIÑ?OzÒ“:éǬ,íóñ®ÌŒÓ®cÉ%—\rDÇ´Whûè1ØŽ%îµ_÷/Mw‰Y§I?ŽdÝž| PM÷ËM5k_@­ÝÀ¤Ë¢ ¨»ƒ@ô�¢NÚc¨»D ´:6îRåZ®‚+�D}§Ñã¢ßRþFúÌ÷#`Ÿ}¶º6 ~$iw­0AAÉ;t‰ãS|™ŠxšÞ[ô¾_ËßWPõ+ú;ÿ· ÞýIÅ+8ñ�z¬ëôžÕv+u ö}I¿S£�>k_Ø£Û*ß;•ömµån�F3¾WÛY`Ã�Բ˿?®å7*ÏJÕáë–÷šk®ÑॽoÖìÇŽû{K³‰Ò^¥r¯T™ÿÝÒì¥åëUÿ—iú7§Sá8~ü�5úô Òì’ÖEÕsQû8©ùSÊkû?©´ÎTiÚű/¹m£Sí÷�º|õ¯Tí—©®6"Õ.ý‘¶Û§égUçpäUtÛ Ë±?’dØŽ,Ä Ø�$úœ¶¢+ó8¦èÿ΢Ê}‡.�þ´æŸ§ù§ë}�æÿYSÁøiýßýb�OIË_›7o~Xÿo^¦í·*ïv­Ý¤¼ßQÚ�ªßWt‹‹Û—o1a�ÐE{~Fÿg·éý>·^ÛÿŠ–_¬éG\šŽ/ïÔÿýQYûµ]g´¦Êø8dåªü7h?ÏV9vìXÔrçXbóJ?¤Ù±Ä–éxa—æw½Ô¶»TÆf�H}¹¦OÕv—+ÓÍ_e~E#é?¡ãtx¿Ð®L`@Ê€pl†@EVT¤ž…UÓFè º3²Ãy†‘š/êËÕR¤‰|" ,"ý¢“ÓöÌÌŒ� óª¡@ÐŒ >p|¬aÙ¤………�úRÛŠîS_Ž·,�ªÔg9阢sn¾ŸÔ§›ÇÒŽ)caÛN¾¿[}8?[¯°cŠ˜,f7ÕÙ‹�8Û—r¿ÆZžõ—™¯·@p‚½¬‘úRÕ^–Àب�¶Ï`‰pïÌrtµ@`ä4ˆù’žSÿäe'ØÑ{Ö¿ù´�þì ƒ¶XØb”f†Ƚì¸èêË�=N‚i^:v슖Åñ$*Rýå„`Ò|ð÷¤ú ¤¥ˆû>T.öïZi*NE2 ÄýÍÈ´!™@ 64º2îW=;©NÈNr âN°ùCYƒŽ¥ #°ÀV4øÏ(Í‘³²ƒ¸ãb°ãeAìB*ÃNj/�$çxRŸ®O{ÀX}ZIKÊ"÷}ÎÕ-åï›Ë´ÄAÿŦ�Yâ~£jä-@@3E4îW=þø¥€ÕpUÒ—«6•&!0”@ôxɨª¡8Ë´1_ÊÔͨKW°ÜŽ'œÕ£ó0F¢Ý[ÊVÌÌÌlO¨ØJ�©FrÜùI5jN-@ 7š)” ¿êñÇ/Ŭª«~åëúRUÕöQoF-w¼Ô×�£Þ/å�N )€Ä=£3§äÓO¹ŽŽø\8ÿªø$á\k‚{gV¼c«QýØszFW£ó¢µL:?Q>~‰b±Œ@Íhöèà¸KŽùã×­‚«ãn*Í—ö v$U«@t”¦U&å¤s¬ueçé)—…Æ~)L/�µô'w,±8ÿêϱl¹ãεTGî�Y¶Žªa}ìœ>î‡FW¯³“~©^K¨1ä!@@³‡b\P‹K){ Ulµýa´>�T›/íè%7JSÛ0ªª\ ×sYh ;¥AUJ8–L|¨î‡ á\k"î<»º­¤æeHú¡Duæ<¥Ì©[Â#–‹Ñ™+h‚Íl½ÜÜb”@6¸Šäêº 'Øé9ªY:�¸/ /K×M©JýÀq1•�•9 ÄK‚]týÍÎy×7�¸~ë:¿Í®)�‰ û¡D±Ÿ9n‘S�OHÒ#V{ÎQªÑ‡Ô�¼hf�;@2J \²_Ü£5�=Ù‰fbºâFVÙñraa�ûivs•5¥+ð {Üm/ke©W=Ò‚OªÕç çZ ªÕ�µ¨­}§‹»ôÜÇq¥Ü]œr+«8ßÝÊÝ}Ô�‘ ÐÌH›ðeŽK2ú•8[×÷¸v‰ëOÕ(�@ÜEù¨tÝ[¡„À÷¸‹Õ"qÔIÁ;žðtâQëçS~J‚D>Ĕҧ€�£Ä59Oé²àì)Wûp©yÁ}Áî(“ÍŒ½7êÈ6M9¸f,™lãHúâ>®ú°_ê$À�@ÕëÍà˜ý‘‡/ ÕëÊZÕ8éÒs»D” fù»:áR^Ž+åïºZ×0鸢F3X¥„=oç'pŽ«QâTHC 94ûèë¸?~üš×`‰²&|qçò§õU©¶@Ò�@!ÊÙ¯qÇDÁÂ…röW“jeÇ’„HøQ¹ä„à¸ÒUKŽ+]$$,�vK ÎS ‹;?ñ6a¤·‡Á,M  ÙG¯§üñã×¼>K’5: ɪÅÅ’tÕ¨‡@Ü�@Ö2F¶—«“¾,ÄÝ: \5§6MH:ÿ²•¹ï]9?IÇÕ–s­rvYãjÖc?�5ËñqH¹e…U�‘Þåè&j�ÀXVŒuïݹNҖ⪮?ŒxÆÁ”,;üÄ\¶ÀÅ’õÕ©‡@җΚc(@IDATZýGÀlü}l_¸$tüý@ ² $üý¶�ùž�°°\qçÊ÷ ãgG}$�§X6:<øA¥�Éš—@Üq$(›c~^È”ƒ@Å¡9@&]úÄ(�0 ÞÄNZ¢ÁL.«,¸Ø]£l„ý‹6š‘UQ‘â— fo·Hz˜‡J� ‚Ã퀭sH:NµŸËN)�©9 ܈7K9¦Ì±=Å#P%šô–ýR—ô=åà;ÀžØ$O� oº.5ç;OeÊB [ éÿAÍn«¢R’‚™üÀST°ŸA’Ž'*� æ ¨9n—6Š–‘n9BST®5s庰¤ïl*˜`æÐº€@½hØŸŒnL›¥Üƒežì1u »mŒ€ýKÙnAM~*ö£�Ì´Zp€bû‚½õ/�v ÷Ì´=â>wŠ,V Ç±…«ñ†ì޾C†ôesš ÀÍœz9éòe;Ñ ~½ÎiO“EÀþ@Æ�d3Z ‹y­@�ûßuvn#܃ÝÑV¦æ¥§}Y h\óÎoPóz�¦âX’ï‡Á<íwžì‰@D¾ä”6&;¶¤}wà\e°Žq£2µuìèn¥s Œ–­hœ#4sìò^¿Vóå1G씢’¾À㟂Æ*Æ �e¤¦ªÅIí}“ö÷ˆ+e“J¤SøÜçÓ…IçX^é³= fë#�öÙ·ã‹=,6¸ F}�sKÒÎM¼]q ñ0˜E�tšé>­MºÔ9(Œƒô@ªÙ6J²'˜™Í�\-�€ðêÂqÓÃH›ÍðeË4@ÖÕB é\ hÿèå Ç.¿À•Mª%�Ô ZÂñ%¡K3ØÙ–ø%ø‘Œñ4ã]†Nådzh¾ H;Ñ&˜Ù%™‹@�c¦«'ºN"fšöe�Ñ#1`$ÕZ íÿƒα¤�ÞÏr|æ\«P²V^ íÿo—woÚw´å99.G�öA©µG3ÿ'ÐjŠ  Y y�?vÔ3ö…ýÁLºÄ\Eà˜Ñ‘l”] Ç13ZýZÿßïó‹B­-¢Ï2Y2Sù§Ÿã ?–dý´‘¯‰Ž1ÆR«ãL?Çï3Q+¯]Ì"€@Á4 Ïð‡Ž|JŸ0Â"‡UÔT ÃqÓoymŽ¡ƒ|I`Ä¿ÿQ`�n� ÿ¯js énýò” Ë7¨Y &Ú8–ÈK ãyË¼í¯ª·¼àøÁÕ#y}À(Bš!E±3þÐ5æ„:‹¼ýÑL•Éͤ³ ’� Ø1S#ƒfu¿»VÆfTò‹Â _̃[mdüT� �@ Éçaýg•ÉÈpœqWâ{_¿Ç×8›òƒ«¯Á<ä%@@3/ÉÊÉøG®àh~¦Mzýáä$;#™¨�@pÜ´öÌõѨÒ7íg혚ššë#X6�c`HÁ } Øÿ?ýXÚÒ†iÇ“Zœ‡¹¶ê˜‘ù‡!Ž/}¤Ø�.�>Ï[æøk¯]»¶ÝUÐz}ëQµZC{´‘Õ 0&šc‚÷wK`Ó×8=Ÿå'¿ôu»‘‚@“2;£$c nTˆ6À– 4Ä©�†À`�%¥ 4ôjq–ó©„2B$À�ŒÀ �5�âíï¼~èÜ5®çÇŽ°þ‹‹‹óe ÎÚwl‡å  Y¢~ÉøGn¬_ÆGÍ•å�§ý�Ÿ™™Ù>êºP>TC 8vZeÓFY%5¦sLÅ;žÙNmô¥M�iÛù/™¾óä+P—ó0ÿØ3Àq‡@f¾+JC K ã±fÙv£pyÜëÊyJHÁ  @@³ä~vÑç¸Z7³1Í�?�ý|’È‹@3ìªcEæK*ã”ìXãÒmt„›wS ~Ú|p©ª›fݺ‚nÓÔ)Ç¿TV"�«@çb¥9&Áñ%×�…!�Y 8ÖXþA~�í|7²�£ç*î<ÅÖŽò>á§L!@@³åöÑÇÉ´+½4'Õ®BiSÄ´<ŒHet ûE¡«ÀìË�íŽËµ DgWDú<+ü@¨›€àtmS0²å擦îüÉÖ¼LR"@š.@@³æŸÿd:ËIô îÄ›“îAôØ@š(à_"jíg´e?´@  9¨\Å·s'ÑÑ{¬ØÈN¿i¤tËþýW\'ßN‚) € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €ÔJà¶Ûn;gïÞ½›–––VÔªa4!0ÙˆVÒH@@@&''?®…Ûn¿ýöO†‰Ì €  Y‘Ž¢š € € €ä% ‘™OÊzá-·Ü²2¯r)(B€€fÊì@@@� ¬X±â~W�5kÖL¹y¦ €@hV¡—¨# € € €@©î½÷Þ³JU¡>+£šºM.½ôÒnž) Pnþ[…^¢Ž € € €¥Ð}'ß €à{õ~ߦM›^·oß¾ušÿ7zظq㇭¢J[¯åë5ûx�†ü“õë×9©z8Ï µîÊgå¬ÓüÝzQ÷¹¼!m;+Ï«÷Ýwß³´ÝO*ÿ£5]«÷£UÖ¹§N�zÁæÍ›X>÷ºùæ›Ï;ûì³Lëÿ\iÛ,]Û­Ñ丽µ?›fzíß¿ÿ%‹‹‹ÏSæ§è}…Êüšöù~|Tó‹ÑBìÒö3Î8ã·µîrå{‹«Û=÷Üsæ<ð å¢Ö=VïûTÆ»£Û³Œ8šN‚) € € €€¼WÙ§÷õþ�Þ¿¦wç¥@ÝÓ¦¦¦.UPñ¿»4MoU€îIÞrgVO¢‚‰ …E×¹e÷^·aÆ÷¹e7 ™¿§å7¸´èTÛ¾]Ûιt¿jÕªï¸åÓý÷ßÿ¶Ÿø‰Ÿx0šOõ¾Hm|�ÚøÊèº`ùƇ~øÛ¶m{À_@íaDöšWÛÿPeÌëý+§“ùWŽORÀóÖGR˜Cà’óG,˜C@@ Tl-,,ì´÷¡C‡vØ»T¤24Wàü éi3--ÒùÁLK¾NA»i›q/ÏVÞÏkÙf>¨|{\›jùÏ@}ºŸ¦ÑŸ3•y£Ò–3•÷N¥}ÕåUPð'ܼMÏ9çWo?9i~Ý…^øøèJíCÕžü;M]0ó{ÊcÁÉzyŸ£}}Ä[îÌj4çc¼´§«~ßV9]ÁLË3==½ÙËË, °L€€æ2@@¿€2¼´¨ÁN}ÙoÙ[µ²QVs–N`sü}D /°:"ðýu#ŸlëôÿvÎK›Ø½{÷Åþ6ºôúÍZ¶Qž�—ò¾Z£)Ï×%ì›5ÿXm65Ì峩ƒ¿¨‰]¢m/%úZå™Ñ¶WiTåOvRõ�Fh^êæmzõÕW߮ɿRù¯ñÒ-ˆjAÅ7*ý×dü÷Úîוvýºuëö{ù:³eùsšé\ª®<ŸÓHÌõ}ºC—ª¿V£6_êå¡.ÍwutɺMŸ£wÇQûûmíû™6uëUöZ7ψ ,û…(º’e@@(V V†—ˆ&ì}N£6ggff¶'¬' P î æýÞž={~C¹N@OÓ¶‚|o×ÈÊÿ¨jtÒÀ´àeçrï[o½õ Ê3ïªhÁC•qƒ[Öü¿h[Ë»ÉÒ´íÜ:›jÛ0h©Å7k_vÙ{çe—ˆkÛßÕÂ[ô¾ëtêéµÝ’æ>eKÊÓQ©}ÿ@�Ð÷žÎÑû_<à£Ê{�Yù‰'¾+�°å=+\ÐŒöu�¶ñ“~¨å¥@ngT© íþ™�õÊ»ìru#æ@š%ü è—»V¯jmÙ²¥Ý+�_N–ü½Êc= € €Àh23;•ЗýÎ(N ¶¯]»¶=ÚšQ:$ (÷6[§Ñ‰Çõÿ±“Mó;lFÁ½£.M£*WuVꟕ+W>ßÍëÿòçP ƒ™.]Óðòì«®ºÊFaú/ TÚG{½W#!Ÿ¢ý|^eý“î;ù=CÁÁèG�ïžÎ²üß›nº)aªú?´|mò’Ý;SkímAÕÏh?ß ôólµùU‡p„¦ê²G�Ö¶åõ^þÍåó,o÷yëÿQÛÝiuR÷xéÌ"€Ëh.ã|A¿níÐ�wÖ• pËÍûÓ“'OnO .Z9Êßëy»\¡¯rT®_�p¾W},(ª?L©õQ[wÙ%a¡13e(ÇÕÁê모ö·ÓúÃåcŠ €ŒZ Ÿ`¦_vêu‚š> ó'p£.ËÔ÷AýØyéþ��KµÄ<®ï�4MºøÈåâ�À`°Ù²‰Š;ßÛö¤¿R�Ãéÿ¾»æjåýåµ·�¼¼[ï¿U>pÉ%—ñ·só�zÔ£Vk4egQÛd ©@ìÕjSg;ÕáÇHýKíûEJX­eW|§MúùZ•½¬ÞZö©¿ fN(°û#rUX3 €@‚͘’çì�G¯—þ¨´”§Ý+_¯õ½ÊÑ•Ù<êcÁL•ÓêQŸ–LÓ‚šA}‡.'k}¼ì Tzuë¡´¹ Ø;Op³G/³@F-�ú#rÚ΃ ÛiyX‡£Ðw°3Ýô[ió :N+Ý%‡S}Çzœ—~G¸Â›Qž³ƒÅèèÌ �¼Y—­_ªQŒ¯W9×+ßeÞ¦—iÛ_U€ñW5Jó¿é{Ú›µ|: d:|ø°b“�*Úeà{ۦΪ]W¸ *óJm{¥[¦7jú{¹ùÙHº[ šÚÿ§]"S@ _šýŠ%çŸ×Á|Ö_­|8ÐÒ³Ì,(hÁ8¿œ¸ù^£ õËÖv‘hÛ�¼®b²ÔÇÊQÀoÙèÓ®‚” ?lí¸t—fûR=ì�å2#·ÞM{•c¦*ÃeOœÆùøuP9­ÈÆsAps>-0Ù†E@@ {ŠyôGç+m�Ù“ƒ[ÚÉ\ÚŽ´mçièÜS3M‰uŒDÀmTâYîÿ±æ�ÛÞ´~çÖÿçp´¢‚�3Êã*d£—½ì èJ°{nÚ«s‰÷éÙGþ½îºë¾£¥ÿ`o»'§„ÏÔþþ7•û*¥u‡š£¾Ï}KËïÑ;|­Zµj¥Q©<‡Ã=f”÷a×F/«ÝóƒzH#.÷{é]³ÊsŽÛ^ßÏ–Y»2“€¤„×”<¬Ê �g,.—¡ ]Y¼rÚ]+ûHÈ£mA]†ª‡Uy˜ºÄÕÁ‚µV®^îKÂ\ÜèÎÓYø@È_À.5×ü–_²¾ô·½àd[ëvôº$ÝʰÕõVµç=J[6‚Üò+`éo÷åû–¶ûж³`ç§•¥àÔôAÕåwl÷ÒrÐÔ>\;Ýj¦ €@fš)T:(û£3)O)‚U € €$ , (ÐÎzÿË^AM hpéy;é /`A<+Eÿ×»Ò¼ÃÍ»©‚†ßuóÚÆA;IÚö_k& jº|Áô”ÿ^ÚUn^÷¬¼Iå~Ð-Óghú8/íAmÿ:Nÿ‹—¶lVO"ÿ¨êð¶e‰§Ë/�׺®§•_{íµ»Uö³´.¼|\óvé» ¼[OÖ¥÷_SzøÒv·‡ º­¨7Ï, З@ø Q_[50³]ŽÜÀfÓd@@�ÄXØÕÏ®,¨©rl“e�Q¯Œ9]zÞî5âÓËÏ,dÐÿ×w*ë·5Êðn�f|¯F/žT ïf—¦ÀãǵüF-¯Tñë.ݦ öýH÷y¡ô->GÁ¾uÊ@ù? ïŸ_ÒÃ}Véá>_Õº'kË.CWP󵺴ü¥ÏêÝRžÇiû{4ý––ÿß .¸à¯/¹äwŸO%Ç¿T‡wîß¿ÿ¯Tí—iß›”Ë._ÿ‘ÊØ§égUçð²t¿¥ïüÆ7¾qµn‘ñ\ \jßÛT9_`(./i PNýÿžÖÿåðÒõrÖ’Z!€Å 0B3Å[8fõ‡#%G}Vé׽Ǩ5?¥_æþióæÍŠnÙM7Ý´ú /ˆžð]=ö‡ €ä&7:s˜Âí!BÕŠ+Ã�¶¿Aƒ¥qe’†Å Ì,Ö›½!€@5¸‡f†~Ò�¾.ÿÉPdé²(€ø;zÿ¹N†?­ßB£¸ û3çŸþÚÿŽ?þ=MïÐmr¿Cë^7.,=¡og0Jw\U`¿ € PO�è%â�Î4»¤\çOiWÙ¥ç­zRÒ*@h¢Í”^W@­•²:÷U žmÕûïõ^ö$¸Üw_àeAòeº‡ÊÊø,£I•óI%kÝš¤u£L·@fÐÿÑ/£Ü-e#€ €@Íò�鸂ûdλåèT÷ùãœ&ŠÂ2 €TV€€fJ×i¤bÛVk:›’-·U  ý{ö<½ßrÛm·=1·‚³>anݺu§²m’O.Ýú]2~½FXû߬÷§\É2Yö$@—Î@¨¨@W`±×åàv�Ì,�P+GçNí8�kµ¥'C €TQ€{h–¨×t¢yž«Žî%y¶›/h:åí§Ð€¦ž~w¿öý§nÿºŸç‚‚›/´e�”véL@@�* $%GUZ[m Fj¶¥ÀæìÌÌLÚ¥åi÷Ó Fi¶U/@@ ÒŒÐÌÐ} ªµ2d:‹öõ`œ¢Ÿbw¦×€%o¾ðY�ˆ‡—¼ëþhá`‡ € €Àhú�@Ãm‚ÀfjÍÒ.=·í‚ª©e²@(›Í”Q€qWÊêÜWé$3 bž8qâHî;H)Pû.ÓhÝ0 ©‡ÐLé7V!€ €@5‰©£3u.:;HëÒ.=Wy< hT¶A@�R ”)ˆU*«ŒI¶uéwø«ø¨+h#4XììfåÊ•Cò8ð¨cÇŽý’ÊÜ ím—³Iåá /üÀ%—\’0ýÆ7¾±áöÛo·§‹oVþkõþ�.Qú‚¦·aÆO*=õ¥‡ ½D£,í^ OÑû Õákº„üý7nü¨æS7ÖJ1Wj_�l*çD¯ü¬G@* ÐuNÙëÞ™:jùíÒyTÛ_N›·KÓD=}BÉÈ¥ç@@ rŒÐLé²-[¶´µÚ~9Oýõ<¥ˆ¾Vé$5¼äüÈ‘#4uâ;© ýÂñãÇïVyoW®×{�Þ�³y¥½û¾ûîûœ‚Ž�ÕrøRzÜV w�Êù½Ÿ© «µîJ$_«åO(ÐùnÝã2|€PX€f´ß‹´þc B~\‹¯×û:½Wk»–Êø°Ö}ææ›oïªu±/åë¢ 4c•HD@�ª 2:3�¶éüm{\9vnÆ‚âdHC@�ªÐìÑSU¸ÃÞ=²å¾zõêÕ4l|­F8¾OZí*¥“Ö=šÿ¡[Öt›‚Žî-Ûl4HùC!oÐûÿѺïY{©, t¾áôÒ#ÿ*M»�ü;M_¤Ú6óJûà#¹&žsÎ9ç|Ä[Nš /9×þ h&)‘Ž €Uè�Ù«âqG�gíêµ�¿Þî§©s©¶ŸææƒQšn‘) € P)š%ê. ºê¬_¿þ¸›Ï:µËÌUÆï{ùÿA—®_¼iÓ¦Í Ê>ZëlÔ¤{%–¯ßw^pÁ—êòòëõ~õ™gžy¹ÒÂ@¤Êy{t¤¥F|þœ Þf…kýç~øáõV;^«æ—º�júB�Ô|†·Ü5«íÚ ˆö¼D½«@@�’$ŒÎœèu¹y^ÕOz*ºÎ·¥™2å € €@áa­ð=³Ã8�è(ɸ<‰iºÌÜ.�w#3÷ëš/ºúê«ÿÙÛà7¯åwÜ|tª æÛü{l^qÅÇŽ=ú‹ÊçFy®ÖHËNðÒm«Kš~ÛÍ«ì×mÛ¶í·¬}×ÍÛTyÏò—cæW¸4�l‡—á»´"¦vÿÔ`?fÊ @ÈS çù…~ÔmåµÃ¤Kϵ��yíƒr@@�"h©Ýc_ Þ]dy°GÖ®ÕÚÖúògÝ � ¾~ëÖ­Ë.×V q�[¯ü~ Ó%'NUÖa­ü€—á27o÷ÎÔ¼½'´�Ïhdæ·n¹å–•{öìy¾.�ÿÕåk.¯ö»GëÛn9nª2Æþ¹´û§ªž+l”i\IC@2 t]n®c;ã¶Ë² º]Ú¥çI#H—í˜@@ dc•Ìc¬ÕQ°o&¨ÀÁ~+¢àáÚÆ�ΜX·nÝ—¢e¨üó]šæÃ”.-Ãt¿Ë£ ã�¹y]Ö~µ›×‰ö�ë’ò¿\µjÕ!åù´–ÃËÍ-Ø©§Æÿ”¦']þ¸©Ö󹌃! @*%,ÔyNÛŒE7D÷OO:w¿Î¢ëÇþ@@�~õ£5â¼:ÁuOw—vgÞ£‚Š�ö2ߪ²âî=^Ò®õG¼ü™fµ�ˆ\péÙ‚©�—ò\©`éOk! ®jþF½Ÿ§KÙ_ @ë:Óÿ /9×èΩô¬¬E@J+Ð5:SçI»ÆQÛ ˆÔäAãèö‰ €ÃÐF/Çmï¹çž3U\'¨ à�ú-Z'ÇxÛòæýÙKÜ‚òŸíæ#ÓÄËݵÍ]^ÍÓÍ«¾»yojOIÿ-$íá@ÏÕû³Þº^³á}3u_Pš½´X� €¥ˆ�i•,êa@q ¶o�Ÿµ£ët^Ç‚¢(,#€ €@©höèž½{÷î°w�lC¯~衇ֺBtRy¿›Ï:Õ¥ÝþˆÌ‹£Ûéž–gëöM.]�Æp.-mª:Mêý¸<Úþn7¯ôïºyMïÖ~ž¥Ñ˜ëýô”óð2uå›þÆ7¾^ªîm³lÖo‹Êâ3ºL‡@¨ˆ@×èLÕ;v„d‘íIºôœQšEöûB@�a¥îÞ½»¥Õv2:̧än•w�q%h¾ïû[ê©ÜûÜöš®Óƒz®ò–'tOËßÕrçÁ=AúãýõþüM7Ýä_.ÞY¥ûbþ²êue�o¿.¿Óm£à{ܼ¦ku¢üåõ/OŸ¸ãŽ;Ö(0üzâù÷U··xù»fµ­œ]Ù•�@@ ÄI£3‡­r÷ÞLºô\?<3JsØb{@(L`º°=±£^a@S'”�ÕC~ž¤ÀÞ*ÍŸ¯©=�ÜÞ—hþñÁ¸YS»ßæ[u)÷»­àk¯½ö; :ÞªÙëlYAÆ÷©Œë’íS f¾CIo°t÷R�|nYÓãÁüêóÏ?ÿ›*k^yîÔ~Vk4æ 5ÿZ/ï¯+= XÚ}1•ÿÕõ•ʳZþùCíû?oÚ´én¥M*�ù<\ߣm.³2TÞVWÖþýû«u/×:kŸ½¬ÜgvæNÿó•u®Ê<¡@é ÕãÐæÍ›oöÖ3‹ €TB`œ—›û@V�………Y�§µüô`”fÛOc@(£Í”^Q­•²:ïUa@S¿H¾Ù4]¶�xúiÿZ+;Må[Ú·oßÿ¥€ßlå{¦ÒÌô·žZ·é®»îZuÅWó3óiû÷º}«L?ˇDýŸ~‚Í+(ù›: ¶€æ„ò¿FÛ¾F�̯*ÐùÍû#CTÙ¿cùì¥ åÛ´þ—N/uÿ«uv™ü›”¯³RÁÐ �–ݾeË–vwî|SܨÜ"ö•oÍ) @Æ%ŒÎ,ååæ¾‰Î­æu^ÕòÓtŽÖ²ú—%ðê×�y@@Àà’s_#e~ÔA-�PLÙ}t•=p§­ÄßòWè~•7éDôz?͛߯uÏÖrxïK]þ^v®ýﴼʳG“?²ù˜×u_ÌŸ�I·¢»U§gi݃Þú'kÞfÞ­`ç“5rók^ž;¼ùL³ªëÑL‡Ì¤€öN{Y ›#€ €öƒo»L I—ž«ŽqÁØ2U�º € €ˇÿ²L@# w(¡sR§Q‰#µR qJûÛ®`ÝZ�ðž´ �ÒŽizD�LJ4úñ�3Ï<ó�ûï¿ÿ¾­[·žXVÑÈ‚.ѾZI/ ŒÇUδý{ð|Hû°Q�ÕûîcÇŽmTY‡msÝ×òík³FZîWðö¾`ùÇ•v©ö¯.óÞ«òÂËÌm›¸—=ôG¿ø?×—Êo'ú‘öPå|ñÈ‘#7ºýùÛjdéc´ß³”…ê9©ù)7¯í¦´¼BeNiÞðw+ Ú÷Sàýýe™·Ñ™.˜©ý2"4K½Èƒ €åÐÇ¥h u^Óž™™ÙMO[Žé©‘“¹Ÿ�êÒó�:WkEê2Ï(͈‹ € P*�ÜOŠJÕº!+£ÀàN�€¶t’×V­¯“Ð!w=ÒÍÕ»ÕÀ¢ÚÖuÂ=ÒW¨p?˜M@³BGU@£@\2¨N߸²FЯ[�Ò@F+ ÚˆG»åh÷š_éq—ž3J3?_JB@�|Vä[¥!Pžr^�~¤ €-`—içñ0�¢ õ‰yêyß4Š–É2 € �·#4ó¥¼ZLOO·jÑ� €… äÌ,´Â‘�EGšVå’ùH3XD@�š ЬyÓ¼áxÊùð†”€ €Õ°€¬‚˜+ìry›V£ÖÔ@š&@@³i=N{³ Ì;÷Qͺù@@�:T}¤iú€6 € €@²ÍdÖ4T`ïÞ½;Útš� € € €”^€€f黈 ŽA �¹qãÆcØ?»D@@@H  ™—lO¾fô^œLíÒæ—––Ú3kׯ4@�Êè–íÊT–Š"€ € p£ïŒàÌÔ“¯wzÙ;÷Vqåøeåö¬St–@@@@Ê!@@3c?�´¶˜ì À©¨9­Ä¶ýã^{öìÙ©ù–[¶©Býe Š*ȹ=-`ì{Ùv~6ŸW9®¬´`dzÁÕg—˜[0“KÌû,YV jZFª5g÷ÝŒ¤±ˆ € € € PšýuDx‰ò¦M›fögWÊÜ�Ž5§¦¦Â~.e¥© € € € Ð`š;?r)rôR匥�­ŒÁ(Û°Oí–‘þ.cµ© € € € ÐHšÙ»Ý�Úã@ÙÍ*“Ó.?·Û¸ k~ÖÍ3E@Šˆ>H?¸¶‹®ûC@Ê*@@3CÏø£õxP°ŠfY\\\6J“{iV´#©6 € € €ÔZ€€f†îõFë…¯ ›‘¥bvé¹?J“{iV¬©. € € €4B€€f†n¶{*Z6=<¦mS^õðGiÖ·•´ @@@¨®Í}ç.7·‘{ÁÃczlÁê* ø£4-�ÍeçUîMêŽ €@5<تfÍ©5 € PŒ͌Πníʘ•l € €ä* ×9ÍU”Â@@ Ê4{÷^çéæ\nÞª.9üËΧ§§[uií@@@@ê @@3c/r¹yF(²!€ € %099Ùª6F@j.@@3¥ƒÝýý'_§dgUM^פ#i € € €ÔR€€fJ·ºË�¹f RMWÄ®iÇÒ,@@@¨¼Àtå[@�@Än)°9;‚â)*"àž4l—ê¸Ð9è¸Ð¤úÚ¾mÛiû΃=N�:ÕY^»vmgjëx!€&`Ç+–a¸cƲD@@�† ÐÌÐñ<(RͲXŸk„nç�P5kÍA�¸œššêü¿� ZFƒ 1Ť&ye¶,£‚¤�}:tÈ‚m­ßµfÍš¶Ž € € €@²Íd›pMpéy;L`@ òÄŒ0‡ ZŠ;[ nιà¦�Æbôæ ¢l‡ € €u  YçÞ¥mC (°Ðº @�Rø£0ÝhÉq0Ó@\pÓFpÚèM½æ¹™&Æ:ê'àŽQõk-B@ò  ™�#¥ÔXÀžvÏ“ÏkÜÁ4­ö îîGײÆöÄ´“¶�½´í.ÿ>vYGPZ0ÕîÃieøu±å / lÚåéó–—àf1² PC�¬Ç›6�&!€ €]4»Hºôv¶;•@�² ¸ËÉÝ(§¬AL ^úA˼A9mßËré�{júy"óîž›�à&�͈‹ÔDÀ�&¯Ish € 0š#a¥Ð: pÕ:õ&m©»€ÈÌÄ´æââbgäc^ÁˬÆ1AÎ6š4ؾgpÓ�Ú$°™Uœ| € € P�ɺ4díà鿣P¥L@  d.,,ìÔeÝ;Èl¥íÁ‚˜ºl|»�+fff¶[`±è`fRý,8¼W(�Z;ÁÖ¤üJ·ËÑ—¼@hJVV!€@Üí)üºÚqË_f@hºÍ}ô%~ªFÍkS¸gæXùÙ9™²2゘™w2¦Œ1ÁÍ´šØLÓaÐ9Þ®Š7�ê#€ €¹ pÉy®œã+lß¾}sûí·¿tïÞ½ê¤÷úò~¿ÞG5Xµ:®_ûOjDÒ ¥�TÚ)½®\¹ò?_sÍ5�G莯æìè_ Ë¥åÄ´ËÉË2ú²ÿV>²…7µä.IO»=|€P°Í#…0‡ € €ÔD€€f†ŽÔ—âV†lcË¢àä 3ŸT`µê»Úæ•ÖIÁÌμKSž‰ãÇ�ïWâûÃLÌ €.¯žsdzh•ëÈŒ¶�ÀfT„eê' cØlÒñ­~­¥E € €À`\r>˜[©¶Ò‰ï’F`>M•z«æß£÷G4ÿI½ô*jóßóÒîV¾›¼õÌ"€¥p——«’±#uLëÜÓݳÔ�²rÁåèî>›i¥ÙˆÍiX‡åP0³­‘~˜nGÓXF@š,ÀÍšôþúõë÷©)ö_µù·:)~±%èDø¹›7o¾9\É  P!�´Q™Ȭ˥åýv‰6ec›Åyƒò¸ ½_Xò#€ € €@©¡™Ò=U0Œ‚™']ó¦ôróL@�ªô•©k¶7aDfZ1Z3M‡uTKÀŽyq5®Ã½€ãÚE € 0¨#43ÊíÞ½»UÁç ×<]’ž9 © �¡ÑN¯Ö6Û]¯2ž ÷nÍIïj¤§]ºžøRžÉýû÷?CÓ«õ¾Bą̊¼´Á·´|ƒ¶ÿaâÆ¬@Feö÷Qp÷×\XXØ©cm+akFk&À�Œ € €Õ  Y�¾¤¦a@óĉ+³pÇwÌ*ïŸéÎ+õ…ØßäyJ³÷/ßvÛm/Nº|ݶץ Ÿì6¶i»Î¢¦¯ÑÌ“Ü:¦ €@œ€ fÆ­SÚ¼FeîHX×ød±ÚÃÏŒ,°9AoeÐ�À­²Ô…z € €eà’ó2÷Î�uS@ò¨+B�Ä3Ü|ÒT£*7œ^ÛŸ·aÆI•ÿœ }õ¹çž;ë21Eœ€»_¦Ž-—æMmTævî#ç‰ô˜µ ¦Þ½ž„NP³‡#«(R@ÁË®s$wYö… €TA€€fziÀ:ê8 hªˆ®•~±]ù å¦KSóÙþe嚿խS¾;u½ä–mª€éï¹e­{»™oÐû^K³¼ÓÓÓßqëUö™nž) `ÌÔ�0;u|iEEtÌØÎ¨Ì¨Jöå £5çlTlÒÃH²ï‰œ 0¬@Ü1pØ2Ù@¨£ÍŒ½ª€\+cÖ2e š:AN¡© ã+¼Šÿ'0ïñ–'t‰ù¹nYyÃà¤K³h0ÿÃõë׿廩.ÛJ¤ E8ïÖ3E�æ ¸`fT@ÇšÎ%æŒÊŒÊô¿Ü+¨iA (Ôìß–-ÈK éÿŸÎ±Úyíƒr@@�ºЬKOÆ´C_Pý{h®ŠÉâ'=ß-èKí?ºy7ÕLÿ¾—öÄòðuàÀ�‹µ°Ú´í'„8® f´}øYÓ‰9Í(Ë4TÀ^c�´hó-˜É%æQ•á–-¨i£]ÓJ!¨™¦Ã:F+ ÿ­¸=ð£Nœ i € Ðt�0ÈÔtˆ:¶ßh...&4o¹å½Ù HšƒòúêÐ>|Øáy¸“üsüøñõnYû /Mwi6ÕIzÄT b…¿Žyh¦@Ê“¸;÷Ël¦Êh[m�6í0ÜNÚAÍ$Ò@@@ ,4ËÒ#¨‡¾”†#4U¼�\¶·sÎ9Ç}9¡‡ýhYÛxåJ…Ùy©Üðòó )¼?§FÿÄ+Oœ8æÑéJ}î¶lÙÒÚÉr.­œ‹)n>¸<:fIy ØèW•5ŸTžFÕÇõMRvÒ@ �ÍF‹Iûñ!š—e@@ IÖŒ%±@IDAT• ,5©còh«FK†÷ÐÔ qâƒxl<åïï®»îZë/ó¿êÒ´¼ÈÍÓqËÚÏUnÞŸ*úT·¬z-¹y¦ Ð<�¤{fJ‚`f�‡´ûjê0ݲXv…@ãìÿ]Ai»¢i,#€ €èJ`ê+ 6'¼Ö…#$½´Îl0"ó{.ýèÑ£/ró6ݳgÏ+5y¹—v…7?¡gÐÔ‰÷óô//·|»wï¾@iáh=»î±é—Ç<ÔW€`f¹ú– f¹úƒÚ € € €@6šÙœ*™+rùwâ%çÖ8ÿÒkäÛ»wï5voM=ÝüÕZ÷1o�Í^¤ô—¦€è÷5¿ß–•÷ÊÛo¿ýmZ†‚˜“š²žÿE­ Guª^4 ‹  ˜YÎ'¨YÎ~¡VÍî)ÜÕh�3µ»I@@`„f�? (†AL/97�0ÿ¶&ö€ ý«V­:®ôi?ôÖ[Rø •m—�¿Çƒ×œ¶;¦`æ}ªÃW”¶Î­°iäÞžþ*æ@ Æú¿w 3—™— Ï{5“‚-%¨:U@ Ö<á¼ÖÝKã@@`Fh�W�M¿ëê¨Àâ>77µËÎ5’òZ^zîçÓ“ÏJËþ(ÎËýõgžy¦>?ä§i>|rºæm”fç¥{vºÀ©KbŠ5ˆ»£~ ±'nï¨yÓ+Ó¼´ ¦1<È©2í¡¢TI@ÇÃÙ˜ú&>¸+&/I € €@£hÖ¸»¤üLð0žÍ7nüp¯¦^sÍ5{Ï8ãŒ- ~¾^yÿZÓÏéý. /½öÚkw«¬ßWº#Túí~yW\qű 6ü¼Ò^¥÷êÄü š~LÓ_·:èý~—_ó¸y¦ PݧcF+ÚÒàIÛÑd–Ç(�ÔäÉçcìv]{�¸cdíM@@�!¦‡Ø–M+ °~ýz»ä;ó몫®ú_Êü§Á{Ùv*ë›:á>_‰S TvÝSivéù_ïeÛêòó7»å»ÇÍ—uªµÊZ7ê…@•‚K•ç¢uÖm)¶GÓX.‡€55¢v6`±eëOFÕ–£Ÿ¨E}’né ãd»>­¤% € €@¾ŒÐÌ׳ö¥YÐ2.˜™Öp=%ý2}¶'¥ÛCƒÚÁSÕÓ6aÔ@ ¸D¹+˜©¦Ís_¸rw°�žµãuL-¹ô<…$F!Àqrª”‰ €u  ™Ò“ŒÒKÁɸêÀ��RÖϸì lþO7Ïê- ÛKìŒi!ŠA)c’î�{ÿ>.=/coQ§Š týð“ðƒBÅ›Iõ@@�ühægÙØ’¤œÖ(ÌwíÝ»÷­·ÜrËã ™JûwÇ�¿['åWZšòÝyìØ±ð^š–Æ ê)�t %—+W§¿ƒÑa]AMË;—žW§%Ô�ê èÿÙ®êÕš#€ €Å pÍâ¬k»§ýû÷?IAË7YW­ZõN6'È´ËËý6Ûƒ„þ÷­[·Þï'2�õHºo¦ZÚ«_ëëÕ" @«?­QËF�éø>[¯–ÒÆ#�ôã÷ÏO°W@¨Ž#43öÕÉ“'Û³61Û>5ú椆ë‹ïG´nËæÍ›$å!j%°,ø´ŒKÍ+ÚÅÔÔq¼íWßFi÷Hõ“™G�œ¸fN�ƒ €µ`„fJ×NOO·RV³*ÐÓÏÒ—Û§k¤æS4¢`›¾ø^®å´úÝCïV­ß_U,µ£]ÕºSoÆ!Àh£q¨�~Ÿv?MÏ[þž‚{i¶ý4æ@ o�Ø€ú.… @@�† ÐlX‡�ª¹ b.©ì/ïQí†r@ ü±_ÎmTþŽK«¡õßÂÂBÛFfº|6o£4é['Â�þ’~ê¯r#€ €Íà’óŒý¾eË–vƬdC)�ôåœÕãã÷Ôsžx^�¾¥åà˜Y®þ 6 € PNšú…ËŽ3 ‘-ÜO1vtf£ajÔø`$æ²;¹Qš5j&MA HŽ™Ej³/@¨•Í Ý©Ë©weÈF@ ±Ñû+<¨fŸˆ¸‘cŒÒ¬Y'ÓœB’F´²sv‚ €Ô@€€f :‘& €%èi¤‡„µKP/ª�³@ô‰ç9Oq4B@ÿ�fã÷£A\>Ò@@�¦ ÐLùèRºÎɿɓ'Û)ÙX…4Z a¤Ñ<‹©çÇ"z/M.;¯g? Øÿ›˜=,»¥CÌz’@@š> \N—‰, ÐX�¤‘F�©yÃ-P¥ÉßÉšw:ÍËU áG \÷Aa € €@ÝhÖ½‡i 0b�¸‘F\69bô17JsÌUb÷TI ëVyŽ›UêBêŠ €ã  ™¡4¥•!Y@�Æ $Œ4â²ÉÆ}&&‚'Ý7°å4�ì ÇL+€ãfvFr"€ €43~vïÞÝʘ•l €@“ºF1ʨþÝwÙy“îë�A èO ë˜i›sÜì‘Ü € €M>ÄLOO·b’IBO a¤£Œ<£&Ír/Õ&õ6mD á˜iEqÜ”m@@ Ñ43v?<ÈE6h´£ŒšÓýÜG³9}MKs`tfn”„ €M  ™ò ð¿¬Ù}4¹ì<«~«:_:Ôï»ê×4Z„@>1#òe”m%J±ËΣå>šQ–8-ÀèL>  € €@¾4ûðd”fXÎJàºÂ�GÕ ˆ{ºy¡`gcPP»íW‚¿“¾ó,`tæ2@@�áh¦ømÙ²¥­/ìm—…QšN¢ÞSÿþ™7nÜQïÖÒ:ˆ‰ÇåæƒY²Ô[€Ñ™õî_Z‡ €ã  Ù§»ìêsS²W@`ïÞ½;TÍØQ¨>UD 0�è­£#õ «;«€k«ˆ�Ú� v�µ’ì�ñ ÄžWð#Ðø;† € €@uhöè»è—5eŸ ‚^=¶duEü/ܰ¢�Hµ‹P ‹ûÍÏÎ@ äŒÎ,yQ=@¨¬Í]g—�+K4°5Ç}{ÀUpu4PÍåæìDª\¤€ü/r¿ì«Dqâ>š%ê ª2V� ˜w¬œgtæX»†�#€ €@ hfèD lù÷Ò´MøÂ–®BYb.5�±+ÔªŠ@ñ|9/Þ¼,{äveé êQ&�àÖ qÁÌ Ž—eê)ê‚ €U  ™±ç¢—žÛ‚[ŠŽêËXÙJ$Ìdtf‰:ˆª”N z %­ÒuÑX+d÷ÑkØ9%Hùá›LKÐ?T@ª/@@3c&\zn[sOÍŒ†eÌF0³Œ½B�ª&Àý3«ÖcùÖ7úƒŸ•΃�ò5¦´j Ø�> �}.5¯VWR[@(±Í>:'µ÷ËúÜž={v2Z³Ì1gµ{ ZŸ©þå`óŒÌsǰûJhDæl%*J%Ç&099ÙÛÎÙ1cྙcÄg× € Ð(��jmN��Õ-™ÀXT¤$ËÈ´ËÀì–®JvTaŒÂuÉL@ A@_Ø—"«uiÚbô3a·!˜™™ÙÞ4ÚÛl™¬`¾ýXÚõÒ}39çîR!@\€“«Áí&z6-P¦/u»l'Ožl0»ÏMý§Ð»ûXùAL+Ž@fŸ¨dG ˆ¯N�:µ=îi×€5G`aaa§Ž©-¿Åp| æë.�22s‚cdÝ{Ÿö!€ €À8hæ Þ+°éï‚hþò ó.H:ȶeÛF¹^º ZFÛkþæG€9*Ã2ÙâF ¸ÊfWç\qM‚8uîqÚæ Ìô5˜G@Š˜.f7õÞKpßÅK ¬%¥÷)Ôê3i³Ëcäu³ ¦{h£dGÎÍ@hŒ@R0Sç7�sF¯7æ£@C@@ `š9‚G(ã_ö<èn¦§§[ƒnÛk»¼GGöÚß ëõ¥ sÙ¾¿½�°ô—Ý<K'Á�Ñð°—ѸV½TûÑ(úÙn÷Ñ®zÛ¨?Iq#“-¯3¹‡l’é € €@>4óqŒ-%§àZ;¶p@�Ø÷Tƒ* €… ¸Q™úa¸kŸ3»HH@@F"09’R)@- `O«Ñ4¾vva•©†Í%4nž‘™ 2$#€ €9 ÐÌ”â@�: hôQ®òª³U“Ú–tŸ@ 5É�¶ÖSÀ2u[…�q�z•iÁÒÒvÔS€V!€ €åà’óòõ 5B*# /÷]÷¸­Lå©h®Ô‰ öäº C   bÚ}`ÝgZÓØ=s‰y, ‰ € €ÀÈhŽœ˜ €õp_îëÓ"Z’—@Üg#xPP;¯}P£pALÛ‡}ž“‚˜¶Þ™ö0¬¤ÑÉ–‡ € €ÀèhŽÎ–’@h„@Ê¥å?¯¨$è2ÝvÜJ‚Dq*¤�B Ÿ ¦·»Wæo™Y@@�‚V¼?v‡ Pa§¢×]Îs߸ whŽUwO~αȰ( .hF#çºnuàG ˆúZÌûѦ¿.Ã<Ç» HdA@Š`„fÊì@�š X@Q—˜'=ýy¨ÖÇ\ÎÞŠèïÛêCÓ¡A£¢Õ_v#‡í^˜Ö÷9Ò´¯Æqyy_\dF@ `„f!Ì쨇ÀÂÂÂNZĈ¥ztm.­ˆù|äRî8 I „ú£A­nCÇÑC�ì3¸´5‘ãÔ#™3ÎÄÌE6@@`LŒÐ<»E@ n "Ù¥à­:´+[Ö&4¨µ5iD¨­ Ll6|ùQ‚¡!KìŒ VÚÊà!Sö@žY[Žô‘-[òÀ/ bZYÿÐ/3²! € PˆÍB˜Ù  €ÍPph{´å.0M·e¬rë¢A+—^ÖiL}[ѺúQ?êòY`ÍÍ»©Úܼ?õƒ£~zÙr~`ÒÕÓÿôÓï²pE =uÖ<±|hJ @@   Y(7;C@ ž°² T4Ø”XkªàÆü€˜•ç‚bªCkÐò˰]BýcÛäGýºÇJýõ6ï‚yÑô~—êÛW1ÑÏM_÷‘ٵ٘¶YÂç³�ÉŠ € 0šãPgŸ €ÔL@�µ�1A©NÐ(ϦFPí,e» hRÔÊÈ#(—¥.eÊÓ„6À,Ó'Žº € €ù ÐÌÏ’’@h¬€ŽÊ ó‚ í,D4‹Rùò¸à¥>‡�û`Z ½¾/_…© € €ÀÀ4¦cC@ y(P«[Ík9-î%`—ðFG@öÚ¦¬ë½ X;k“‚ ¶½m�‡ØØ|Yƒ¾V·*¼\ÐÒêÊeãUè1êˆ €ŒF€€æh\)h„€¨iDƒi$ ƒA­(µù¸€pôÿX]¢~ 2øádÂà‘çkT¼@@.@@³áš�ô#`]æúÙ†¼Íˆ Æ5£åõ2¨kZšõËè§_¢ÁS¿œ´y€LÊã&]žH»]2S@@2 ÐÌÄD&@èW .�ÕoäÏ&� lg+�\ € €TG`²:U¥¦ €ãˆMêzùë¸�+ºFîV´ã¨6 € €U  Yµ£¾ €@É’.u-Y5©Î¢ð1T�]"€ € €@ hÖ°Si P¤@?÷è+²^ì«8�C‡í(noì @@š.@@³éŸÚ�ô)à?�Ø6ôA"}î–ìˆ~N*V}ª‹ € €%  YâΡj €TD€ûgV¤£¨& € €u  Y‡^¤  €@�zÐ.wö` î£é‹4k>©ï£Ÿ“f©ÐZ@@¥ÍQêR6 PC�S§NµkØ,š4 ÷PŽÍ@@@``šÓ±! €€˜ššâ’c‡Ñ¼il߯Y³fGó(h1 € €!@@³eö�ÔH`íÚµíhsì²óhËõHºÜ¼þ-§… € € 0NšãÔgß €@Eâž`Mp«¢�9DµS.7Ÿ¢X6E@@Rh¦ò°@ «—�g•ªU¾ØËÍkÕBƒ € €¥XQºQ!@�Ò ØhL�ÎÛ­¨î›Èß•(JM—“>Ö\>5ítš… € €@I¡Y’Ž  €@¸ì¼½˜­ )—›g+€\ € € €À€4„c3@ Éq2.;oÔ§"érsîŸÙ¨��E@@ xšÅ›³G@ q²§�3J³ݛڈC‡íHÊ ËÍ×%mC: € € Ð�Í~´È‹  ,..ÆŽÄc”fHTÛ³gû™HÈK2 € € 0�Í�ØØ@À.;O¥‰N}l®�Ä�ká©S§Úqé¤!€ € €y ÐÌS“²@�† (°µ+®É\v§R�´”‡Í'Ý[µ-§ € € Pšeé ê�TP iD—�W°3³W9éa@ÙK ' € € 0„ÀŠ!¶eS@&vÆ]‚¬`çvFìÕë< (6 ©‡qNQ¯î¦5 € €”V€š¥í*†TC€‡U£Ÿrªel0Seó0 œ€)@@z ÐìmD@��¤Q˜6j“{i¦ÀUlU0:3®Öó�¹#ni € € €À(¸äRó’öÕB@@ Î4ëÜ»´ (P é^šªBÒ} ¬»�—š�•"@@@ ·ÍÞFä@È ÜK3vÄ^Ê¿ %“eœAßu¥¹oæ8{…}#€ € ÐlšÍîZ�ä*`A®¸Kϵ“9”+ua…©?gcv¸ŽÉG € € �»ÍÜI)h¶@Ò¥çSSS]£üš-UþÖÛèL»j¤¦\ja@@Š  Y¬7{Cj/�té9ªV×Ç]jn£o¹Ô¼ZýHm@@¨£ÀŠ:6Š6!€Œ_ . fµ:uêÔö è9þJRƒX»=ÀäääÎèJ39oˆ¢°Œ € €… 0B³prvˆ4C é~š\z^þþOè#î›Yþ®£† € €4B€‘�èf‰ŒO`aaa'÷aŸ¿{Nè¯ Fgö+I~@@•#4G%K¹ €�„‡Í—¤£T"�¤`¦ªÈèÌõUA@@ éŒÐlú'€ö#€$Ý“Q»æ‰ÙøgÙEJ0“Ñ™YɃ € €… 0B³0jv„4WÀdŠ`¤f JÑI6Z6æ¶�j$ô[ÑUd € € €@(@@3¤`@`”Á“Íã.]&¨9Jøe'=�>Ølž'Ò÷d5 € €.À%ç…“³C@ ÙI´+V´gffâFq6l„­O»Ìœþ!·I fZQ<Õ¼OP²#€ € €@a\r^5;Bp –í°€n92åôHž‹ö€¦^ÁLí/îÖyVƒ²@@@��¡90"€ + ‘šK)e0R3g�U)O›÷‹ÃÝ×`@@J'ÀÍÒu Bš#Ðã Ús6’°9£m)ÁÌÑúR: € €'@@³8kö„ °'h§5—––Z6Š3¸çfdk³ ˜ßääd¯à0#3³‚’@@Æ*@@s¬üì@À5Sî©iHÜWsÀ�J žë±9ÁÌ@¬F@@�òpÍòô5A/Ðëa5ôœ™™ÙÞx¨ v‰ùÔÔÔœ�rí‘�`f V#€ € €@¹h–«?¨  Ðx�^A͈ \Ê'%ã¨L+ÇGV!€ € €@9¸ä¼œýB­@�Æ #0ç{p z ��Ê ¤ÔësÛš`fŒ!I € € P~Fh–¿�¨! ÐHFö×íY½ì²ýÅÅÅy»wi{ 7 € € Pšåèj� #�5H§M;Ú°�{ešpc�b>^$!€ € €@EhV´ã¨6 Ð$›Ý½ÝO “Q™Ý~¤ € € €@uhV·ï¨9 Ð(�~‚š³fÍšu"�YÇ^¥M € € Ð�Í~´È‹ 0v�¦6-€999ÙÒ(ËÙ¥¥¥V–`Df%ò € € €@UhVµç¨7 Ð`� ¨iµ{š·0­aSSSsY˜–Ÿ ¦)ðB@@�&ÐlB/ÓF@ ¦}ŒÖ4�ùS§NµËötïAF`ºîtAL[.[»\™"€ € €y ÐÌ[”ò@ è3°iõKpÓ}i•èg¦åw/È$ˆéD˜"€ € €@“h6©·i+ Ps�>/Ew¹7]àÒv`—ŽÛtÐà¥më^2�S@@h²Í&÷>mGj,0À¨ÍÎ}(�DÁÇ]ŽÆ.SwóÑ©=¬ÇÒhœµ©½ò\ž.éô¿Ä´¹ÅÅÅyFdž6á_@@h¶Íf÷?­Gj/0à¨Í±ºÄ+?;G@@�’ Ð,yQ=@�üÊÜ$ˆ™_?S € €Ô[€€f½û—Ö!€¤Œ3Àé0­Š\NžÒQ¬B@@<š³ €Í°ù¸{bš‚޳yÜÓ.­L»¦M ^š/@@@`0šƒ¹± €@ƒ¢Á䦻‡´LSb € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € € €ŒT`ÅHK§p@ú8pàÀ£Ž9rÉÔÔÔ��:uê››7o>ÐgdG@@¨±Íw.MCª"pï½÷žõÀ¼jqqñ7V¬Xq¥_ï3Î8cíUW]õ¿ü4æ@@@š+0ÝܦÓr@�2ìÞ½û‚ûî»ï‹ªË:3»ªtòäÉ£]‰cNÐ(Ò‹>¼rË–-ßsUØ= € € Ð8�ÉÆµ˜#€”Fà–[nY9==ý1Uh�W©[5ÿÆÉÉÉ—¬\¹òâõë×?ä­û¬ê|öñãÇ¿§zß³gÏžÿ4ö Q@@@ aŒÐlX‡Ó\@ Lg�uÖ6Ý'ó9^�~nÆ ÖHÍ%/­T³çž{î'NœèÔIAןÔÌ;KUA*ƒ € €Ô\€š5ï`š‡”Y@Á̧¸ú)ˆùŽ�7~¨ÌÁL««.�GŒ.--­tõgŠ € € PŒÍbœÙ  €@¼@ÐÔeÜŸ¥\©O}êSv5R@ó˜›gŠ € € PŒ@÷ÓŠÙ/{Ah°€Ý;SO/¿D—l@AÁ–Qh´æÓ´|XO:ŸÒtR#5W<üðÃwnÛ¶í�$ª}ûö=Fù_§¬[•ç©zÛèɿ׃„~7Ë{öîÝûBå�¶_§zØ}<ïÖû‹Úý ºwç—5¿ìµÿþÇj(q¿­ÐvmÕûeÚöø¦M›Žiùä² ¼…›nºiõyç�÷ÓSSS?PÙŸðV…³ª�™¼Reþ£F«î WhæÖ[o}‚Ìþ‹öµxÁü»K.¹äˆ­—ÁŒ&ÏTúÅš>ZÓ¯hÛOÙº¸×°fqe’† € €)@@³Hmö… 0¡€Ûäí·ßþQ<®‡ uOÍíqùô@žWjý´nuÜz_ºnݺ¿�[wÛm·=Q�Ã?кÅ­·4•ý:íû}n½¶y¹¶ùn¹ÇôC *þœŸGÛ¿EÛÿŽ¥)(zݵ×^»Û_oó hþ•&×ëý ò>J�Ïã–n/µ÷]ªÓ›l^Ïgë¡D?ÐÔʳ ¬ÿzPõžQÞ®àê0fþ˜G@@Æ)À%çãÔgß €@¾öµ¯M©Ù=ƒ™F£àgxy·O¥Àßs°û˜Ò:ÁLÍDó;”?Õ¨ áÇ5ÑFm.{ÙSÊ,ü¼ý`æƒþ¶¶�–ÿLûyºÛXÛ\äæ3L_ͣ뗦²ãæ#ÓóƒåÕeºlj£�Àì¼´ý/)˜¹O Ñ`¦­_}Çw<±“Ñûg3¯f@@@�± ð”ó±w@š%°uëÖºt{VG»ÄûçõÞf Øýª‚ˆw*PwT»#ZdóæÍ{m�ÿºçž{Î|衇þØ¥)ï‹Ý%ÜwÝu×o=zô Z÷d[¯²Þ¡ÉsmÞ½tÙö›5Tµý«5’ó/´ÿ¥àrìÐü&˯ú„÷È”_ëqøðáW)ÏeA¾?qÁL[V PÅ­Ø­àb' ©¤³ƒ|�‰Ý‡Rëç]šò]¯íopËšÿ�düŽ–;M0àÖ){Xó© çST×N@Se}Y—–¿×åI›*ï™n½Žá¥ä.ͦªO羘6¯ügØÔ{Y�2|i}[П–e§Žª÷mZÙ h®\¹2|»m0ŒY¸Cf@@@�’Ð,IGP @ ‰ ÊÝïÚ­‘�Ë‚�.=:ÕèÇÍÚ®“¬Àâ_ØŒ*Äû·¹ùKZ G_jþ÷m½{)Ïóݼ‚‡ŸS5 fºtMÃËÁ¯ºêªzénÖÂã^±#-ÝJª:Ÿ­}v’þÿöîÈ®»¾øêeÉ áG‰ §ØÁ`˶Œ�(Ž1hMp€i¡B iB€ŒK¦”a&�v$!™CRh ´nH �j á1^‡~#Ù0ØPo�­‡eõû¿¾ÿã³Www¯´w÷ÞÝýœ™ëÿÿüÏÿu>çhlÿô?ç$yÔû-Ë�?\Û$¿®æ»iûôëï¼óÎg_rÉ%e…fÝþ,™_Èïcçž{îkaIçcÖîGž @€ã  9WÁ °BØÛW±ÁƒaH›Çµƒ¿�•‰e…äã{Ú–�ê¼"+.?ÐSÞYÁXÊ`ühϱÎnú>©L“xLppS=ž¹ÐL¿Í¿sÓþþˆlÏR|¸ž[ÒÞ€f}¿æDÎí—{‚™Y)úétwzO—�ÝyšõëR @€F&ÐüÏÕÈf``X± 6+4“h…f}ÛZ`¯jåKv_‚‚oÎïÌü=ÇJó‘5`˜c{{�—ýÔ©óè·:³TiϪÒc hNߥ}Y1Y>ŒtÔ–ãM@3�Ï÷þ;ºó¤4º-ç6mæQõÌǬ§+» @€¹@ïÿ,�|B&@€+G �¶ò‘�zÂ5�X÷gJ¿—5¸Wë”ù\uÒI'}ðŒ3ÎhÞCYÖ4AÓS[ãý –×´|=ùúÈzûïZe"AÌué§³ŸtƱšÝLÚÝ[Ûe½üéÔJ ó¾:¿|å¼ œf^Íj͘µj´w¬>ûÇmÖ§/E @€©€€æHù N€�•-�G¡÷ד ä�8 Fùzwý(Ðï彘o=çœs¾ÙÛ6�¢Ÿ¾qãÆ»Î<óÌýõXÆh�z<;zq­[Òàì~ ¨)NP²é#soo*Ì�I°² ÞfÓ>ðÓjÒ1Sgu-ß¶mÛ‘›o¾¹³›ò“kù1¤Çmv c¨J€ @€�EhþgiQF3h ´W8&88è Í/Õ.Ü»³_03Á¿•:ßÎG‚¾¶wïÞ&x˜ê µmÒç¶òùzù£Óß[Ûeëׯx{¿ä3çvðôÅ™w³Ä´·nÏþ�­ýæ]ž¥,_{?%Øÿšñ_ÔªÓdSÞQSØwåhS¹æ¸Íúw§” @€£°BstöF&@€ÀŠHðû©ÝB8릛nzlöæwè!yÈ÷Û«+[õÞ‘üo”ý´UÚ|åСCÊJÊC{öìyxÕ~uÊ_Ù­Zò%(yGÙO0òI^RòÙþm‚˜Ú¼yóû“þL޽ÿþâiÿ<7{_i—dçM£S”sxLÚ¾æ–[n¹²V¿üå/¯¿ûî»/Iù¹§œrÊ;Û�¿—`jæR»ú�]oÏ~yvýÉùý\~½�Ñ׺5½-™ÎÊÔÛo¿}à 6µnozÜf½Ù'@€ @€À¨]U2êyŸ–‰@€Kðð[œÎ¾jëÖ­í•��f ¾7ÁÀç·úønö¿�@â–VYɾ+_ÿþåvY‚©Ëþeí²žüžìoî–ý§´ÿÝžãéãÊ”]ÞSÞKy˜/ÎÇ{®ªuÊ{0³âóÆì׾롾iÎç²-[¶|¢Ì9ÿMÊJð³fϸð ¿Q� ’ÎÇl�þÕ!@€ @€Àb xä|±¤�C€�)}:`S‚‚Í;%Û|û÷ïÿ•ìÿi«ì´Þ`f‚;Ï?ÿüRoÚ–ò¤àãÓ Øyiúyí»eÅèQÛ�^•¹•Õží­³z²[°/égÛË ÒŒý¬üšÇ¿ëñŒùÑ)ÏÉþëkYêMûJ{ö›Çå3öúZoÐt>fƒŽ¡ @€CÀ ÍÅP6LÈ ÇsÄ{\‚t'æ·6ùòl«’/�`Éþ½ Ú]—Žeµdß-uWåÝ“OM½'–¾J¥”}?IY)ùᬬÜ[ÊúmeµdNŽ]–¶›ÓÇ­ (¾3m>]Oðïosì éïò¬’|[¿>JYÞϹ#ûùÙôq~Ú—¹/mnHßW÷{·giSÆÎö”´ùé´ýR~7$ØyW9V™O7eåçŒýƒRV·˜�‘6¿žã_Ï<¯L¾ŒwLÛ|ÌŽi •  @€ @€X\�ÿ]Iº¸3 @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @`Ù¬Z6gâD °È»wï¾fÕªU“GŽ™*C'ÿ©™¦pï½÷NmݺµSo¦:‹U~à 7L–±™O­»víÚN›Ò®w»à‚ võ–µ÷KkÖ¬ÙÙ.kç‹awÿŠÙúªý´ê·»™h_‡ÚO«Í´kS�Oë`‘wêÜÚÃÎt•û§Ôäšµû‡|9Ï~óhßSs]�~V½}»¹þœO?ýÚÔë4×¼{çhŸ @€�á¬N7z!@€ÀÊ(AŽX«i&gRHðfgÚ\:[@ê _øÂ®´Ÿ1ðWûNÐfÖ~ÊÜ2Þ5µþLiÆ›5€8è|ØÝ±eË–Kg§¸šœéx-O@rGÍ÷Kçê§^‡ôÓ4/�ÔnùdS˜Lέ8_QÊF”jÍ­L£n“5ÓNËýSöÇíšë^ôJ½Y¯Ã\×¾kUîû’�êî•O?isÍQuÿ¬×ûhT÷PŸy)"@€ °"4WÄev’ [ &ÌèÄÚ�¸Të7^7˜2ÕïØ±”ÍÕO÷ø±tÙ·nYí–¾:�´¾º…9çi«{ë–`O Xµ�zë”>><Õ[ÞÞ¯ý´ËÚùÚúé\—r¬ô[œ3\—ι• Ô\�¹ö8ÃÊwÝÊüvÔ>g˜g=<1×µo*Α™«ŸAú™c.÷bÀ�ÓL ½‡ÚæýúêéçŠÞú=×iç\Aý~c(#@€ @àøVS-  @`�²b²Ô›mufí'Áµ]5ß/-��ùöSú(}ÒO©Wæ?hÝRÜ·î ÖÉ̳ ÖŽ" y,Nãv•¹z/Ö¹÷žïR¿§ºV›{(wÿMÕ{‘í @€ @€ W Ûf ¸ c¤…ì{óÓÇüJ`Óuž¿£ @€ @€�!$Pq¤|øg]éb ”@W¹‡»VàÅwÊ @€,¨Àêí]çX¢%U¦Þó®¼%z6¦="�Îãȃ¾�rDs4, @€–œ€€æ’»d&L€À" Ôwã5˜Y¤q ³ ¬Ê\Ñ) @€ 0¶šc{iLŒ�Q F�J~ùŒÛ^•Y¾Î¾|ÎÌ™ @€ @`ôš£¿f@€À˜ F�ÙY‚Ó9räÈŽ2í¤SKpú¦L€ @€�±ÐëËcrŒB@0jêã3fùT}‡êøÌÊL–’€UÞKéj™+ @€ÀRÐ\ŠWÍœ  @`AJ ³û!¨�ó JÕ�I%ýÔ‚LT§c+Pò¾f>÷ÏØžœ‰ @€�µc2Ó @€ÀØ,µ`Ô¿øÅgdβ²ô#ç�wÞÁ±�\âÙºuëÔ?Ó�@Yá�?�kÖ¬)›Á I€ @`Ù h.ûKì XÎ7ÝtÓcï»ï¾�vÏñ…Iÿ|9Ÿ¯sŽ@‚à'ä¾yn~7^xá…·§×Á{¹öÚk7mذaõöíÛ5š @€¸_@@Ó�@€�%,�•`gÔégeØck^::�ö£Æ÷Þ{ïÔèfÒä3Ÿ˜@æ»sô¬Õ«WOdÿùYÙûýk¯4Á÷§fÕâå¹OŸ‘^7•žóxö7’¼?N;³"öÎRf#@€ @€À\Þ¡9—�ã¬(�qFõ^ŒˆÚ1u_ïqûÇ&P.-’N[Ë¥Qûæ›o~a‚™×e¶gÕgÿñ5¿PiÆý½O?×çgŒN0³;Ö#“¾"5cjæ´PóXŒ~ó— �÷¦&�\ŒñŒA€ @`% h®Ä«îœ X6 F­©'“Êáš—ŽN Á¹É:ú¸¼‡3�ÄÕY ùƤï©s«iÊö×üB¤Y™ù¼Œñ›µï6ß™ûöe¹_?eûºå§•ò2ÏZOJ€ @€�™ü�ÃL2Ê  °jVh&td LÙG �`æK3ì«ú �ÀâÝýʇU–þ__ûÊýúâ<ÞþÒ¼·óçŸþo%°ù„z,·ïdVr>­î/Õ´ýš�öŠï¥z>æM€ @`4Çñª˜h¯Ð°‰j+Sàa­Ó¾.AƵöÜÊ5{Ë-·<"c=¦Ûéõ f^Õ ÎKÚûÉ_ܳo— @€G 4+{Ž:¢€Æ^ «ÚÖ$`Ô™gÒ YáVå}æáÇÏKúð¸.u®=ñį<û쳿×{BYAö¨uëÖ='õÿ&«æ®ï=^öóÈðEék{¥þËÍ›7«_�R–qVïÙ³çIIÏÉïì«NM¿?Ì¡¯dÿ}éÿ»3µ]Nå9×ñê{8s ÎŒçãîºë®O\rÉ%õ1í£Ø²³|$ê tÿe¼o¯<ø‡'œpÂ}yçê7r ß•ûägë±ÌuÁš‡º¨Ž“´|ˆ¨Ùò1¢S3Ï77ÉÄîÉíýùäcqzÌž™1>yÁ|½__ŸûÜçÖ­_¿þ%wß–-[þ¬_e @€ŒŸ€€æø]3"@`LÆåý‡³q$`³&Á˜ZegÉ—_ ¨u·Ë’¿lÿþý¿žÒ³³Bî3õ@IÌü£ÔfúÙ—ãÍñƒíã9¶:Á¯�¥lSCOIú‹íã5¿wïÞ©÷†ì7�§~3�ÌáWsl[­/\ Ë9%~7¥Å¦“O>ùƒIŸÓ¯u®Õªñ®NÝ-ù=3uš åöíÛïÊþëj»\ëËõ)[Ò{jù°ÓÜW�ªãdNÓæ)mÆk ¨Ü/�âÞž1žUú‹Ë¿HPóÃí¾ãµ6,÷Æ-u®O�½í:ò @€Œ§€GÎÇóº˜#H�cjÄShølÖô©XVe¾=åÝ:vZê~(+ýÜ*+ÁÏÓ»û›î¹çžÛǺù-í�R·o@2� Ó}o`ÌL›ÞU„g_wÝuéÓÿX%ÀÕùRõñL®¶­éñôÑn“~NÍ~½ÿ²¬ªm¯ùç.NÝ-e?éúZÞ/͵l®uê.Ø;43ÎiuüŒÓ¬’L�¶ÜK/ï+�ðotó»é0’Úgéëêî˜M¿ À¿>ó+�ß²íûñ�ü�÷gç÷Ïö_„´?5¿^µ&@€ @ -  ÙÖ�'@`Å ”`DVi­Êã§—.Œ‰š¥˜ Î|)+➘ùÿLæÿkIŸ‘ýòo .ž–êÿ¾}^iÓ¬Ôß¶mÛQ�§~³ü3í~¢Ý¶ä$:+É»ZåW&ÿSû!ùèËêôY÷ئ�7îhÕËlÎ÷¸™õ„rî»ུ¤µl>ioKûòëlylü5ßN°~QÝ�û_Õ|¿4ÇTË“?PóÃNãùÐÚgæÝ œf¼µ)/÷IÙöŪ|4¨® n­�£óøGV—©MP3c~$¯D(¯a(«1>É«K¾l™ÓÏ_tÑEåõCÙÒßTé¨èJŸ:!@€ @àÍ,ä °¤¼¼2�Œ¶}Ù¿6û¿SËÔ™ö¸rö›qÉß[ëõ¤5 :íñàR'Aª7Öºiÿšñ^ž_g%^ö�d…Ú×êñÜ6Ôü¸¦%™ßª’ÎgŽíUzóé§´-ŽÙÚïšüÕÞ>³:sc꽬–§þ¬ïƒÌñ&p˜kTƒ‰µùÐÒö8¹W•޳2²ŸÐ䕱º3ùæ>ì–Ï;9çœs¾™N&ó«ïn=-ït}_V)?6eWåW·Wä/>Qw†‘–¿)÷Ñ0ïƒaÌK @€–‹€€ær¹’΃�/�àQ{5eã‘GiÿW³31q^+_²ƒ’îéiÓì&Hù´îÎw<}ms ›É µ5µ,×&_ˤ 4Ê.“†ÛÛ-sš@uްýA v½šO�&¸œÛæþ—iÖƒÃM×ÕîL\wã�7nÍ~Y‘Y¶ë³úôªNnb¢ °v÷‡’$¨ø•ttY~5(ÿ¤Ü‡·d¿œ�ÃU©ó–¡ ¦ @€M@@sѨ D€�è˜ê>J[½Ý”/;7�gFÇHºõÖ[2í;�¡‰þO‚CG­ð̪¼æß3 º hç-�?HÓ?®Í„ü¥šï¦¯¨û¹oªù™Ò´o�3Õvyš'ç~øÓÚoî™—g®‡»ûuõïŒÁóÚîXÓ,w'°þì>íþᤓNzyŸrE @€Œ¹@ó?šc>OÓ#@€�9¤ê»B³Û¬y¬8ïÊÜßêj�RÓ6C4AɃ6«=S~}«Ï&Û^•™àUó¾Ï¦‚ÌÀ‡jš¡|éµ×^Û æꧦ“ú÷uY)û·tÚ4Û×h€vÇT¥}O& ýi¼¹t�ùÿZæù™’¯çQòÙ¾2Ü&�Z¾_=ïtž¹ýögœ1Èý?ÜÉè� @€�y hΛP�¦ú®Ð̼̊:«Ì2AœÝ &µë5ÁÊž•›}Oê«_ýjK…j¥«ú+„kêd\ÿΩ`Ç‘>þñ�/A¹�w›nÊêÂ]òqý�nYI^×ÊϘͽÒ\—¦› õŒ Žó@æÖþ‚úe¥›”½5�š¿½vyÊ)§œ^óIÿ±•JööÛoß�1ÿ<�5_\/§ì&<­l(ê„ @€�ð?— Nl,Ž@‚ŠõñÝižp í÷+î™vpb¢ù²ó¦M›Né9Vw›à×wÜÑþ÷Æ·k…‡Ê‡VŽÚ8{b-l¯Ö«eÒcØU[Äó•y—æÅ±j)+Áê ?R�Ï–¦ns¯¤}ûšÎÖì˜�åž¼­Ý(cMíß¿ÿ?¶Ë2—æ} ÉßÜ>6ß| æß}÷ÝïN?�`jÒòê…úgà‘¹?¯$�?ßyhO€ @€Àpìb†;M½ @`ñn¸á†ÉŠv-ÞˆÇ?RDíÀÔ©½=åë×KY³j/£÷·ë¤ýu?�¦‹j¾¤»wï>'•lßUl V5Íôûôü¦­ô‹ãÉ)ÛYûÌXG½c³[ni¹‡âœò>ÈO§ß¿.}Çó1Iþ®ä»ÛëR6Ûkj½’jí¬kåçÌ–å÷Ùü~˜/–¿%×xíL�2Ÿ/µ�¥î ·oßÞŒ]ÚæW¾zÞÙòhøÇj¾_šñ^˜q¿“ß×ó»¼_�ZVú^¿~ýŸä>}n-KÿÏL€ÿç²_?BêüïR·Ö‘ @€ 0þ}ÿi›!N �¼kˆ™Ì‡D.ݺuëÔÂ�4ÿžK€'Á˜÷Ôž2ï«òñ•«Ĺcݺu›sì·rì‘Ýãå«ÒOH�æ‘ó…Þ˜c¯*ÇS·ŸÞ”_yx2õ:+ÿ’o¶<8©»KAê¯ÊøeE]罈I¯ÈŠ·×oÞ¼ùÞR·åøU­c¥þ/æã6ïKÙXo%9ŸëÓ]9Á�9ß©œï¥Ã>Ùôqúl2Ë·åÚ>6×쨠ñž={ž{ùy9öOºs)užœßÓË~æùæ$¿víÚC¹w•{'_I¿®ëÝRwm.ù­)?«uìY ´^ÝÚo²ù³tJÆýZ :Òˆ}‰ ´IDATïûLú†ôÿƼŠàGzЃ¶§¿ÿÐ 8~7çð“ýΡtXÏýõ�’¯[Úžž¹Öàd-î¤ûM髽ôé™g'`šûó‰iÛœcú}gîÛ—¥þ áicõîÌ÷êíÏ> @€Ó¬Ðœîa�eåÛdaH€§“–ü¸n Ê4+4Ë ú•gþ"s¿&ùÿ–¢ÌÜ—ò—sk‚™ÝúTÒ²åØcò{[~¯É¯3÷Ýôè¦N þ¼µudgæs ¯;3ögS^��*«îXfK0»Ø•ôx'˜sßq¼mi×^¥Ùªÿ»¹G3Ëñ)ÿs޽%Ù]Ý_Y±Û f&-×ý•ù½7õ>�Ý«s�þ~¦¦ŸÿüçË_„þDiW·ÔŸ¶_ËKZ¾ÎžãÍØSôêì'«"œñ>•û¥Y=·2ϾçÐí³ÞËÝ݉‰íOjvZ™,ÏK_M03}_^ƒ™¥Zù QæÑ¼Š!óxI¿ÏkuqÜÙÐ.÷ÐL†Çݱ† @€4š … –ž@‚BÿКõ¸)«,{·¿Ë ½- â” ã´-§òŽÃ&¸5íàÄDyœøŸ¦¬Ž±/_H?Ø®³aÆÿ‘ýwµË’¯«ñJq³’0«òf Žö´·;·ÀkZU¾»qãÆw·ö{³{{ æÚO°¯oð¹û¸x;ˆý�{î¹gÚk zûÎ}wU‚‹/ê-ïÙ¿"÷âï)›¶›•˜×§ Þ‹™ã²ªòËÓ*uwòçâáµ<÷ð›Ó÷Ûê~M3¯&ÿÒºŸzÛj~>iúé´óxûÎùô£- @€3 xgÔÌ6Ž °B�˜Jf²&Æ™!�F5« ÏÍ|OÈ ´Ý™óofÿYqöèTNLùõ)Ÿö˜nïù”•kù0ÊÉYíö´‰NJ7¥íðé/ó¨ïå)ÿ¥´+�âO[AwöÙgHýeUæ‡s¼| fkö¿•ôóùM¥lsæò¤¤%õÃ’®”-ç?¹Pçšköé\çË3Æ“âýž3Ï<³o²ŒŸºoÉŠÅ÷%¨]î‡U¹¶«“_Só¹.k²¿*AÀ5É—¿è¼-ÁÃÌ4÷ô÷Û¹ÞHûG$˜ùñú ‚™ê—ò‘ñÊcìsnéç⬀¼,m$ÍL 2ÇOfŽ/O½ÕÉÿñ,õÞyã�7^ŸÓþç¹Og ¨ÎÔ‡r @€_À;4ß܈Œ¹@yÜ8ÁšÐ\�w Žùéuz *½7ŽÏ/�&=µ<‚<Ô†ÜÙ0®}}‡f™Z‚iþ=;äk4îÝ ã÷s4? @€£°BsÔWÀøŒ�@ f–I%ýÔØMn M(��³j03–S î�u0s Ñš* @€V´€wh®èËïä  °0·ÞzëCÓóGkï löý v=¾œÒ<¾=UÏLJaª„” @€Ã°Bsx–z"@€ÀŠH�rm¯þ/Y}yÇ�Þ•w)þßÈLþy|CÊ;J½/eÿ+ ÇÉ @€ @€À‚ h.­Ž  °¼ò‘—m Z¾²œåúõë_—àæD—åQýö‰ïK@óÙ vÞÕ.×|æ^^30™tr\çh^ @€Xé9_éw€ó'@à(�à¦JaÒGTÐøbv®k´ó ¾;û[ý‚u»íRÎçËóSuþk×®�¬yéʨÁðnp|eœ´³$@€ °ÈVh.2¸áX:³_«óÎ;ïG ú^œ•šÿì¾ûî»(^�ÎþÓjïêÕ«¯Ïñ=³÷0~GËû/„Ü9¬™ ŠKR? @€x@@@ó 9t¶lÙriù˜K{¥šþ bÉ‘Ïtý+-ÑÒùÜ dNŦ<º^a·­�Z!Úi @€Œ\À#ç#¿&@€À8 fŽãUYø9µŸÏ=P‚âYíyé\°kágm„qhß?í¯Ý�Ëü̃ @€ÀrÐ\.WÒy @€ÀÐÊ Ëùv6Ÿ€è|ÇÖ~ô®ÿè¯� @€,_Íå{m�ƒ@¾Ò¾+Õ;ïÏô¨ø1À©Ú¨ï_½¢](O€ @€Àp4‡ë©7Xº55áQñ¥{G5ón@¼3¼ÇÍGuŒK€ °R4WÊ•vž 0¨€ÕuƒJ©×WÀãæ}Y @€ @€‹)àëÅ‹©=º±\çÑÙ/‡‘Ë*M÷Ðr¸’Î� @€,q� H âH÷·k‰ŸŽé�H@ kDð†%@€ @`Ù ¬Zvgä„ 0d�ˆZ»ví5ínËW°ë‡cêûòz3�+€Õ[¿Ý¿ü± Ìæ½fÍš�åz�êݘÝ÷+Öwtvi¯÷M=Ó~÷CûœrNÖºít®sêÞ¿}ÛŽk?ŦŸG{¾%ßöé=Vöé£Ô›«Ÿcé«Ôµ @€ °°š ë«w–‘@OPªß™]QƒKÔí´OàæÒÙ‚.úŽO½Xsy×zÃN»AÅiAñ~c´ç7èµO?Í}ׯÏÝ»w_“`îd¿cí²öØíòšV?9¯#µÏÙÒ¹æ3h?ù39ëë z^­¹Îêݪ'K€ @€À ø(ÐÁê–�å'P‚•%È’3»¢¬Ðœí SoÖãµíL«îêñAÓÅê'ç½c�9Í5Ÿaõ3È\j�rÍf ×z ‘–q»�µÎê̙Ƙ˭_»¹îµº’¸_ÛZ6ˆÍ°úɘ³”9 2Ÿ:÷ù¦ƒ{ç;†ö @€ W`ÖU ÃJoXžõqÕÞ`Y-Ÿí¬{Ûô«Û]©×ïP§¬´ô311[`oŸ�è@¿û£wžµNoùMiÉu[}fšø nsõSú/ÁæAÿ¬Í4å @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€\àÿEoP¥.~IEND®B`‚drf-yasg-nonfree-1.21.15/docs/index.rst000066400000000000000000000011561514731163200176260ustar00rootroot00000000000000.. drf-yasg documentation master file, created by sphinx-quickstart on Sun Dec 10 15:20:34 2017. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. drf-yasg =========== .. toctree:: :maxdepth: 2 :caption: Table of contents: readme.rst rendering.rst openapi.rst security.rst custom_spec.rst custom_ui.rst settings.rst contributing.rst license.rst changelog.rst Source code documentation ========================= * :ref:`genindex` * :ref:`modindex` * :ref:`search` .. toctree:: :maxdepth: 2 drf_yasg.rst drf-yasg-nonfree-1.21.15/docs/license.rst000066400000000000000000000000331514731163200201320ustar00rootroot00000000000000.. include:: ../LICENSE.rstdrf-yasg-nonfree-1.21.15/docs/make.bat000066400000000000000000000014101514731163200173630ustar00rootroot00000000000000@ECHO OFF pushd %~dp0 REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set SOURCEDIR=. set BUILDDIR=_build set SPHINXPROJ=drf-yasg if "%1" == "" goto help %SPHINXBUILD% >NUL 2>NUL if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% goto end :help %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% :end popd drf-yasg-nonfree-1.21.15/docs/openapi.rst000066400000000000000000000266151514731163200201610ustar00rootroot00000000000000.. |br| raw:: html
********************** Functional overview ********************** ------------------------------ OpenAPI specification overview ------------------------------ This library generates OpenAPI 2.0 documents. The authoritative specification for this document's structure will always be the official documentation over at `swagger.io `__ and the `OpenAPI 2.0 specification page `__. Because the above specifications are a bit heavy and convoluted, here is a general overview of how the specification is structured, starting from the root ``Swagger`` object. * :class:`.Swagger` object + ``info``, ``schemes``, ``securityDefinitions`` and other informative attributes + ``paths``: :class:`.Paths` object A list of all the paths in the API in the form of a mapping - ``{path}``: :class:`.PathItem` - each :class:`.PathItem` has multiple operations keyed by method * ``{http_method}``: :class:`.Operation` Each operation is thus uniquely identified by its ``(path, http_method)`` combination, e.g. ``GET /articles/``, ``POST /articles/``, etc. * ``parameters``: [:class:`.Parameter`] - and a list of path parameters + ``definitions``: named Models A list of all the named models in the API in the form of a mapping - ``{ModelName}``: :class:`.Schema` * :class:`.Operation` contains the following information about each operation: + ``parameters``: [:class:`.Parameter`] A list of all the *query*, *header* and *form* parameters accepted by the operation. - there can also be **at most one** body parameter whose structure is represented by a :class:`.Schema` or a reference to one (:class:`.SchemaRef`) + ``responses``: :class:`.Responses` A list of all the possible responses the operation is expected to return. Each response can optionally have a :class:`.Schema` which describes the structure of its body. - ``{status_code}``: :class:`.Response` - mapping of status code to response definition + ``operationId`` - should be unique across all operations + ``tags`` - used to group operations in the listing It is interesting to note the main differences between :class:`.Parameter` and :class:`.Schema` objects: +----------------------------------------------------------+-----------------------------------------------------------+ | :class:`.Schema` | :class:`.Parameter` | +==========================================================+===========================================================+ | Can nest other Schemas | Cannot nest other Parameters |br| | | | Can only nest a Schema if the parameter is ``in: body`` | +----------------------------------------------------------+-----------------------------------------------------------+ | Cannot describe file uploads |br| | Can describe file uploads via ``type`` = ``file``, |br| | | - ``file`` is not permitted as a value for ``type`` | but only as part of a form :class:`.Operation` [#formop]_ | +----------------------------------------------------------+-----------------------------------------------------------+ | Can be used in :class:`.Response`\ s | Cannot be used in :class:`.Response`\ s | +----------------------------------------------------------+-----------------------------------------------------------+ | Cannot be used in form :class:`.Operation`\ s [#formop]_ | Can be used in form :class:`.Operation`\ s [#formop]_ | +----------------------------------------------------------+-----------------------------------------------------------+ | Can only describe request or response bodies | Can describe ``query``, ``form``, ``header`` or ``path`` | | | parameters | +----------------------------------------------------------+-----------------------------------------------------------+ .. [#formop] a form Operation is an :class:`.Operation` that consumes ``multipart/form-data`` or ``application/x-www-form-urlencoded`` content * a form Operation cannot have ``body`` parameters * a non-form operation cannot have ``form`` parameters ---------------- Default behavior ---------------- This section describes where information is sourced from when using the default generation process. * :class:`.Paths` are generated by exploring the patterns registered in your default ``urlconf``, or the ``patterns`` and ``urlconf`` you specified when constructing :class:`.OpenAPISchemaGenerator`; only views inheriting from Django Rest Framework's ``APIView`` are looked at, all other views are ignored * ``path`` :class:`.Parameter`\ s are generated by looking in the URL pattern for any template parameters; attempts are made to guess their type from the views ``queryset`` and ``lookup_field``, if applicable. You can override path parameters via ``manual_parameters`` in :ref:`@swagger_auto_schema `. * ``query`` :class:`.Parameter`\ s - i.e. parameters specified in the URL as ``/path/?query1=value&query2=value`` - are generated from your view's ``filter_backends`` and ``paginator``, if any are declared. Additional parameters can be specified via the ``query_serializer`` and ``manual_parameters`` arguments of :ref:`@swagger_auto_schema ` * The request body is only generated for the HTTP ``POST``, ``PUT`` and ``PATCH`` methods, and is sourced from the view's ``serializer_class``. You can also override the request body using the ``request_body`` argument of :ref:`@swagger_auto_schema `. - if the view represents a form request (that is, all its parsers are of the ``multipart/form-data`` or ``application/x-www-form-urlencoded`` media types), the request body will be output as ``form`` :class:`.Parameter`\ s - if it is not a form request, the request body will be output as a single ``body`` :class:`.Parameter` wrapped around a :class:`.Schema` * ``header`` :class:`.Parameter`\ s are supported by the OpenAPI specification but are never generated by this library; you can still add them using ``manual_parameters``. * :class:`.Responses` are generated as follows: + if ``responses`` is provided to :ref:`@swagger_auto_schema ` and contains at least one success status code (i.e. any `2xx` status code), no automatic response is generated and the given response is used as described in the :func:`@swagger_auto_schema documentation <.swagger_auto_schema>` + otherwise, an attempt is made to generate a default response: - the success status code is assumed to be ``204`` for ``DELETE`` requests, ``201`` for ``POST`` requests, and ``200`` for all other request methods - if the view has a request body, the same ``Serializer`` or :class:`.Schema` as in the request body is used in generating the :class:`.Response` schema; this is inline with the default ``GenericAPIView`` and ``GenericViewSet`` behavior - if the view has no request body, its ``serializer_class`` is used to generate the :class:`.Response` schema - if the view is a list view (as defined by :func:`.is_list_view`), the response schema is wrapped in an array - if the view is also paginated, the response schema is then wrapped in the appropriate paging response structure - the description of the response is left blank * :class:`.Response` headers are supported by the OpenAPI specification but not currently supported by this library; you can still add them manually by providing an `appropriately structured dictionary `_ to the ``headers`` property of a :class:`.Response` object * *descriptions* for :class:`.Operation`\ s, :class:`.Parameter`\ s and :class:`.Schema`\ s are picked up from docstrings and ``help_text`` attributes in the same manner as the `default DRF SchemaGenerator `_ * .. _custom-spec-base-url: The base URL for the API consists of three values - the ``host``, ``schemes`` and ``basePath`` attributes * The host name and scheme are determined, in descending order of priority: + from the ``url`` argument passed to :func:`.get_schema_view` (more specifically, to the underlying :class:`.OpenAPISchemaGenerator`) + from the :ref:`DEFAULT_API_URL setting ` + inferred from the request made to the schema endpoint For example, an url of ``https://www.example.com:8080/some/path`` will populate the ``host`` and ``schemes`` attributes with ``www.example.com:8080`` and ``['https']``, respectively. The path component will be ignored. * The base path is determined as the concatenation of two variables: #. the `SCRIPT_NAME`_ wsgi environment variable; this is set, for example, when serving the site from a sub-path using web server url rewriting .. Tip:: The Django `FORCE_SCRIPT_NAME`_ setting can be used to override the `SCRIPT_NAME`_ or set it when it's missing from the environment. #. the longest common path prefix of all the urls in your API - see :meth:`.determine_path_prefix` * When using API versioning with ``NamespaceVersioning`` or ``URLPathVersioning``, versioned endpoints that do not match the version used to access the ``SchemaView`` will be excluded from the endpoint list - for example, ``/api/v1.0/endpoint`` will be shown when viewing ``/api/v1.0/swagger/``, while ``/api/v2.0/endpoint`` will not Other versioning schemes are not presently supported. --------------------- A note on limitations --------------------- When schema generation is requested, available endpoints are inspected by enumeration all the routes registered in Django's urlconf. Each registered view is then artificially instantiated for introspection, and it is this step that brings some limitations to what can be done: * the ``request`` the view sees will always be the request made against the schema view endpoint - e.g. ``GET /swagger.yaml`` * path parameters will not be filled This means that you could get surprizing results if your ``get_serializer`` or ``get_serializer_class`` methods depend on the incoming request, call ``get_object`` or in general depend on any stateful logic. You can prevent this in a few ways: * provide a fixed serializer for request and response body introspection using :ref:`@swagger_auto_schema `, to prevent ``get_serializer`` from being called on the view * :ref:`exclude your endpoint from introspection ` * use the ``swagger_fake_view`` marker to detect requests generated by ``drf-yasg``: .. code-block:: python def get_serializer_class(self): if getattr(self, 'swagger_fake_view', False): return TodoTreeSerializer raise NotImplementedError("must not call this") .. _SCRIPT_NAME: https://www.python.org/dev/peps/pep-0333/#environ-variables .. _FORCE_SCRIPT_NAME: https://docs.djangoproject.com/en/2.0/ref/settings/#force-script-name drf-yasg-nonfree-1.21.15/docs/readme.rst000066400000000000000000000000321514731163200177440ustar00rootroot00000000000000.. include:: ../README.rstdrf-yasg-nonfree-1.21.15/docs/rendering.rst000066400000000000000000000053441514731163200204770ustar00rootroot00000000000000################## Serving the schema ################## ************************************************ ``get_schema_view`` and the ``SchemaView`` class ************************************************ The :func:`.get_schema_view` function and the :class:`.SchemaView` class it returns (click links for documentation) are intended to cover the majority of use cases one might want to configure. The class returned by :func:`.get_schema_view` can be used to obtain view instances via :meth:`.SchemaView.with_ui`, :meth:`.SchemaView.without_ui` and :meth:`.SchemaView.as_cached_view` - see :ref:`readme-quickstart` in the README for a usage example. You can also subclass :class:`.SchemaView` by extending the return value of :func:`.get_schema_view`, e.g.: .. code-block:: python SchemaView = get_schema_view(info, ...) class CustomSchemaView(SchemaView): generator_class = CustomSchemaGenerator renderer_classes = (CustomRenderer1, CustomRenderer2,) ******************** Renderers and codecs ******************** If you need to modify how your Swagger spec is presented in views, you might want to override one of the renderers in :mod:`.renderers` or one of the codecs in :mod:`.codecs`. The codec is the last stage where the Swagger object arrives before being transformed into bytes, while the renderer is the stage responsible for tying together the codec and the view. You can use your custom renderer classes as kwargs to :meth:`.SchemaView.as_cached_view` or by subclassing :class:`.SchemaView`. .. _management-command: ****************** Management command ****************** If you only need a swagger spec file in YAML or JSON format, you can use the ``generate_swagger`` management command to get it without having to start the web server: .. code-block:: console $ python manage.py generate_swagger swagger.json See the command help for more advanced options: .. code-block:: console $ python manage.py generate_swagger --help usage: manage.py generate_swagger [-h] [--version] [-v {0,1,2,3}] ... more options ... .. Note:: The :ref:`DEFAULT_INFO ` setting must be defined when using the ``generate_swagger`` command. For example, the :ref:`README quickstart ` code could be modified as such: In ``settings.py``: .. code-block:: python SWAGGER_SETTINGS = { 'DEFAULT_INFO': 'import.path.to.urls.api_info', } In ``urls.py``: .. code-block:: python api_info = openapi.Info( title="Snippets API", ... other arguments ... ) schema_view = get_schema_view( # the info argument is no longer needed here as it will be picked up from DEFAULT_INFO ... other arguments ... ) drf-yasg-nonfree-1.21.15/docs/security.rst000066400000000000000000000074471514731163200203770ustar00rootroot00000000000000********************************* Describing authentication schemes ********************************* When using the `swagger-ui` frontend, it is possible to interact with the API described by your Swagger document. This interaction might require authentication, which you will have to describe in order to make `swagger-ui` work with it. -------------------- Security definitions -------------------- The first step that you have to do is add a :ref:`SECURITY_DEFINITIONS ` setting to declare all authentication schemes supported by your API. For example, the definition for a simple API accepting HTTP basic auth and `Authorization` header API tokens would be: .. code-block:: python SWAGGER_SETTINGS = { 'SECURITY_DEFINITIONS': { 'Basic': { 'type': 'basic' }, 'Bearer': { 'type': 'apiKey', 'name': 'Authorization', 'in': 'header' } } } --------------------- Security requirements --------------------- The second step is specifying, for each endpoint, which authentication mechanism can be used for interacting with it. See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-requirement-object for details. By default, a top-level `security` that accepts any one of the declared security definitions is generated. For the example above, that would be :code:`[{'Basic': []}, {'Bearer': []}]`. This can be overridden using the :ref:`SECURITY_REQUIREMENTS ` setting. Operation-level overrides can be added using the ``security`` parameter of :ref:`@swagger_auto_schema `. ------------------------------- ``swagger-ui`` as OAuth2 client ------------------------------- It is possible to configure ``swagger-ui`` to authenticate against your (or a third party) OAuth2 service when sending "Try it out" requests. This client-side configuration does not remove the requirement of a spec-side :ref:`security definition `, but merely allows you to test OAuth2 APIs using ``swagger-ui`` as a client. **DISCLAIMER**: this setup is very poorly tested as I do not currently implement OAuth in any of my projects. All contributions relating to documentation, bugs, mistakes or anything else are welcome as an issue or pull request. The settings described below were added as a result of discussion in issue :issue:`53`. The settings of interest can be found on the :ref:`settings page `. Configuration options are similar to most OAuth client setups like web or mobile applications. Reading the relevant ``swagger-ui`` documentation linked will also probably help. Example ^^^^^^^ A very simple working configuration was provided by :ghuser:`Vigrond`, originally at `https://github.com/Vigrond/django_oauth2_example `_. .. code-block:: python SWAGGER_SETTINGS = { 'USE_SESSION_AUTH': False, 'SECURITY_DEFINITIONS': { 'Your App API - Swagger': { 'type': 'oauth2', 'authorizationUrl': '/yourapp/o/authorize', 'tokenUrl': '/yourapp/o/token/', 'flow': 'accessCode', 'scopes': { 'read:groups': 'read groups', } } }, 'OAUTH2_CONFIG': { 'clientId': 'yourAppClientId', 'clientSecret': 'yourAppClientSecret', 'appName': 'your application name' }, } If the OAuth2 provider requires you to provide the full absolute redirect URL, the default value for most ``staticfiles`` configurations will be ``/static/drf-yasg/swagger-ui-dist/oauth2-redirect.html``. If this is not suitable for some reason, you can override the ``OAUTH2_REDIRECT_URL`` setting as appropriate. drf-yasg-nonfree-1.21.15/docs/settings.rst000066400000000000000000000346671514731163200203740ustar00rootroot00000000000000.. role:: python(code) :language: python .. |br| raw:: html
######## Settings ######## Settings are configurable in ``settings.py`` by defining ``SWAGGER_SETTINGS`` or ``REDOC_SETTINGS``. Example: **settings.py** .. code-block:: python SWAGGER_SETTINGS = { 'SECURITY_DEFINITIONS': { 'basic': { 'type': 'basic' } }, ... } REDOC_SETTINGS = { 'LAZY_RENDERING': False, ... } .. _url-settings: All settings which configure URLs (``LOGIN_URL``, ``SPEC_URL``, ``VALIDATOR_URL``, etc.) can accept several forms of input: * A view name: `urls.reverse()` will be used to reverse-resolve the name * A 2-tuple of ``(view_name, kwargs)```: `urls.reverse()` will be used to reverse-resolve the name using the given `kwargs`; `kwargs` must be a dict * A 3-tuple of ``(view_name, args, kwargs)```: `urls.reverse()` will be used to reverse-resolve the name using the given `args` and `kwargs`; `args`, `kwargs` must be a tuple/list and a dict respectively * A URL, which will be used as-is The possible settings and their default values are as follows: **************** SWAGGER_SETTINGS **************** .. _default-class-settings: Default classes =============== DEFAULT_GENERATOR_CLASS ------------------------- :class:`~.generators.OpenAPISchemaGenerator` subclass that will be used by default for generating the final :class:`.Schema` object. Can be overridden by the ``generator_class`` argument to :func:`.get_schema_view`. **Default**: :class:`drf_yasg.generators.OpenAPISchemaGenerator` DEFAULT_AUTO_SCHEMA_CLASS ------------------------- :class:`~.inspectors.ViewInspector` subclass that will be used by default for generating :class:`.Operation` objects when iterating over endpoints. Can be overridden by using the `auto_schema` argument of :func:`@swagger_auto_schema <.swagger_auto_schema>` or by a ``swagger_schema`` attribute on the view class. **Default**: :class:`drf_yasg.inspectors.SwaggerAutoSchema` DEFAULT_FIELD_INSPECTORS ------------------------ List of :class:`~.inspectors.FieldInspector` subclasses that will be used by default for inspecting serializers and serializer fields. Field inspectors given to :func:`@swagger_auto_schema <.swagger_auto_schema>` will be prepended to this list. **Default**: ``[`` |br| \ :class:`'drf_yasg.inspectors.CamelCaseJSONFilter' <.inspectors.CamelCaseJSONFilter>`, |br| \ :class:`'drf_yasg.inspectors.ReferencingSerializerInspector' <.inspectors.ReferencingSerializerInspector>`, |br| \ :class:`'drf_yasg.inspectors.RelatedFieldInspector' <.inspectors.RelatedFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.ChoiceFieldInspector' <.inspectors.ChoiceFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.FileFieldInspector' <.inspectors.FileFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.DictFieldInspector' <.inspectors.DictFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.JSONFieldInspector' <.inspectors.JSONFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.HiddenFieldInspector' <.inspectors.HiddenFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.RecursiveFieldInspector' <.inspectors.RecursiveFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.SerializerMethodFieldInspector' <.inspectors.SerializerMethodFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.SimpleFieldInspector' <.inspectors.SimpleFieldInspector>`, |br| \ :class:`'drf_yasg.inspectors.StringDefaultFieldInspector' <.inspectors.StringDefaultFieldInspector>`, |br| \ ``]`` DEFAULT_FILTER_INSPECTORS ------------------------- List of :class:`~.inspectors.FilterInspector` subclasses that will be used by default for inspecting filter backends. Filter inspectors given to :func:`@swagger_auto_schema <.swagger_auto_schema>` will be prepended to this list. **Default**: ``[`` |br| \ :class:`'drf_yasg.inspectors.CoreAPICompatInspector' <.inspectors.CoreAPICompatInspector>`, |br| \ ``]`` DEFAULT_PAGINATOR_INSPECTORS ---------------------------- List of :class:`~.inspectors.PaginatorInspector` subclasses that will be used by default for inspecting paginators. Paginator inspectors given to :func:`@swagger_auto_schema <.swagger_auto_schema>` will be prepended to this list. **Default**: ``[`` |br| \ :class:`'drf_yasg.inspectors.DjangoRestResponsePagination' <.inspectors.DjangoRestResponsePagination>`, |br| \ :class:`'drf_yasg.inspectors.CoreAPICompatInspector' <.inspectors.CoreAPICompatInspector>`, |br| \ ``]`` DEFAULT_SPEC_RENDERERS ---------------------- List of spec renderers classes which used for plain schema rendering. **Default**: ``[`` |br| \ :class:`'drf_yasg.renderers.SwaggerYAMLRenderer' <.renderers.SwaggerYAMLRenderer>`, |br| \ :class:`'drf_yasg.renderers.SwaggerJSONRenderer' <.renderers.SwaggerJSONRenderer>`, |br| \ :class:`'drf_yasg.renderers.OpenAPIRenderer' <.renderers.OpenAPIRenderer>`, |br| \ ``]`` Swagger document attributes =========================== EXCLUDED_MEDIA_TYPES -------------------- A list of keywords for excluding MIME types from ``Operation.produces``. Any MIME type string which includes one of the substrings in this list will be prevented from appearing in a ``produces`` array in the Swagger document. **Default**: :python:`['html']` .. _default-swagger-settings: DEFAULT_INFO ------------ An import string to an :class:`.openapi.Info` object. This will be used when running the ``generate_swagger`` management command, or if no ``info`` argument is passed to :func:`.get_schema_view`. **Default**: :python:`None` DEFAULT_API_URL --------------- A string representing the default API URL. This will be used to populate the ``host`` and ``schemes`` attributes of the Swagger document if no API URL is otherwise provided. The Django `FORCE_SCRIPT_NAME`_ setting can be used for providing an API mount point prefix. See also: :ref:`documentation on base URL construction ` **Default**: :python:`None` Authorization ============= USE_SESSION_AUTH ---------------- Enable/disable Django login as an authentication/authorization mechanism. If True, a login/logout button will be displayed in Swagger UI. **Default**: :python:`True` LOGIN_URL --------- URL for the Django Login action when using `USE_SESSION_AUTH`_. **Default**: :python:`django.conf.settings.LOGIN_URL` LOGOUT_URL ---------- URL for the Django Logout action when using `USE_SESSION_AUTH`_. **Default**: :python:`'/accounts/logout/'` .. _security-definitions-settings: SECURITY_DEFINITIONS -------------------- Swagger security definitions to be included in the specification. |br| See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#security-definitions-object. **Default**: .. code-block:: python 'basic': { 'type': 'basic' } SECURITY_REQUIREMENTS --------------------- Global security requirements. If :python:`None`, all schemes in ``SECURITY_DEFINITIONS`` are accepted. |br| See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#securityRequirementObject. **Default**: :python:`None` .. _swagger-ui-settings: Swagger UI settings =================== Swagger UI configuration settings. |br| See https://github.com/swagger-api/swagger-ui/blob/112bca906553a937ac67adc2e500bdeed96d067b/docs/usage/configuration.md#parameters. SPEC_URL -------- URL pointing to a swagger document for use by swagger-ui. The default behavior is to append ``?format=openapi`` to the URL which serves the UI; see :ref:`note on URL settings ` above. **Default**: :python:`None` |br| *Maps to parameter*: ``url`` VALIDATOR_URL ------------- URL pointing to a swagger-validator instance; used for the validation badge shown in swagger-ui. Can be modified to point to a local install of `swagger-validator `_ or set to ``None`` to remove the badge. **Default**: :python:`'http://online.swagger.io/validator/'` |br| *Maps to parameter*: ``validatorUrl`` PERSIST_AUTH ------------ Persist swagger-ui authorization data to local storage. |br| **WARNING:** This may be a security risk as the credentials are stored unencrypted and can be accessed by all javascript code running on the same domain. **Default**: :python:`False` |br| *Maps to parameter*: - REFETCH_SCHEMA_WITH_AUTH ------------------------ Re-fetch the OpenAPI document with the new credentials after authorization is performed through swagger-ui. **Default**: :python:`False` |br| *Maps to parameter*: - REFETCH_SCHEMA_ON_LOGOUT ------------------------ Re-fetch the OpenAPI document without credentials after authorization is removed through swagger-ui. **Default**: :python:`False` |br| *Maps to parameter*: - FETCH_SCHEMA_WITH_QUERY ----------------------- Fetch the OpenAPI document using the query parameters passed to the swagger-ui page request. **Default**: :python:`True` |br| *Maps to parameter*: - OPERATIONS_SORTER ----------------- Sorting order for the operation list of each tag. * :python:`None`: show in the order returned by the server * :python:`'alpha'`: sort alphabetically by path * :python:`'method'`: sort by HTTP method **Default**: :python:`None` |br| *Maps to parameter*: ``operationsSorter`` TAGS_SORTER ----------- Sorting order for tagged operation groups. * :python:`None`: Swagger UI default ordering * :python:`'alpha'`: sort alphabetically **Default**: :python:`None` |br| *Maps to parameter*: ``tagsSorter`` DOC_EXPANSION ------------- Controls the default expansion setting for the operations and tags. * :python:`'none'`: everything is collapsed * :python:`'list'`: only tags are expanded * :python:`'full'`: all operations are expanded **Default**: :python:`'list'` |br| *Maps to parameter*: ``docExpansion`` DEEP_LINKING ------------ Automatically update the fragment part of the URL with permalinks to the currently selected operation. **Default**: :python:`False` |br| *Maps to parameter*: ``deepLinking`` SHOW_EXTENSIONS --------------- Show vendor extension (``x-..``) fields. **Default**: :python:`True` |br| *Maps to parameter*: ``showExtensions`` DEFAULT_MODEL_RENDERING ----------------------- Controls whether operations show the model structure or the example value by default. * :python:`'model'`: show the model fields by default * :python:`'example'`: show the example value by default **Default**: :python:`'model'` |br| *Maps to parameter*: ``defaultModelRendering`` DEFAULT_MODEL_DEPTH ------------------- Controls how many levels are expanded by default when showing nested models. **Default**: :python:`3` |br| *Maps to parameter*: ``defaultModelExpandDepth`` SHOW_COMMON_EXTENSIONS ---------------------- Controls the display of extensions (``pattern``, ``maxLength``, ``minLength``, ``maximum``, ``minimum``) fields and values for Parameters. **Default**: :python:`True` |br| *Maps to parameter*: ``showCommonExtensions`` .. _oauth2-settings: OAUTH2_REDIRECT_URL ------------------- Used when OAuth2 authentication of API requests via swagger-ui is desired. If ``None`` is passed, the ``oauth2RedirectUrl`` parameter will be set to ``{% static 'drf-yasg/swagger-ui-dist/oauth2-redirect.html' %}``. This is the default `https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html `_ file provided by ``swagger-ui``. **Default**: :python:`None` |br| *Maps to parameter*: ``oauth2RedirectUrl`` OAUTH2_CONFIG ------------- Used when OAuth2 authentication of API requests via swagger-ui is desired. Provides OAuth2 configuration parameters to the ``SwaggerUIBundle#initOAuth`` method, and must be a dictionary. See `OAuth2 configuration `_. **Default**: :python:`{}` SUPPORTED_SUBMIT_METHODS ------------------------ List of HTTP methods that have the Try it out feature enabled. An empty array disables Try it out for all operations. This does not filter the operations from the display. **Default**: :python:`['get','put','post','delete','options','head','patch','trace']` |br| *Maps to parameter*: ``supportedSubmitMethods`` DISPLAY_OPERATION_ID -------------------- Controls the display of operationId in operations list. **Default**: :python:`True` *Maps to parameter*: ``displayOperationId`` ************** REDOC_SETTINGS ************** .. _redoc-ui-settings: ReDoc UI settings ================= ReDoc UI configuration settings. |br| See https://github.com/Rebilly/ReDoc#configuration. SPEC_URL -------- URL pointing to a swagger document for use by ReDoc. The default behavior is to append ``?format=openapi`` to the URL which serves the UI; see :ref:`note on URL settings ` above. **Default**: :python:`None` |br| *Maps to attribute*: ``spec-url`` LAZY_RENDERING -------------- If set, enables lazy rendering mode in ReDoc. This mode is useful for APIs with big number of operations (e.g. > 50). In this mode ReDoc shows initial screen ASAP and then renders the rest operations asynchronously while showing progress bar on the top. **NOTE:** this feature might be removed in future versions of ReDoc (see https://github.com/Rebilly/ReDoc/issues/475) **Default**: :python:`False` |br| *Maps to attribute*: ``lazyRendering`` HIDE_HOSTNAME ------------- If set, the protocol and hostname is not shown in the operation definition. **Default**: :python:`False` |br| *Maps to attribute*: ``hideHostname`` EXPAND_RESPONSES ---------------- Specify which responses to expand by default by response codes. Values should be passed as comma-separated list without spaces e.g. expandResponses="200,201". Special value "all" expands all responses by default. Be careful: this option can slow-down documentation rendering time. **Default**: :python:`'all'` |br| *Maps to attribute*: ``expandResponses`` PATH_IN_MIDDLE -------------- Show path link and HTTP verb in the middle panel instead of the right one. **Default**: :python:`False` |br| *Maps to attribute*: ``pathInMiddlePanel`` NATIVE_SCROLLBARS ----------------- Use native scrollbar for sidemenu instead of perfect-scroll (scrolling performance optimization for big specs). **Default**: :python:`False` |br| *Maps to attribute*: ``nativeScrollbars`` REQUIRED_PROPS_FIRST -------------------- Show required properties first ordered in the same order as in required array. **Default**: :python:`False` |br| *Maps to attribute*: ``requiredPropsFirst`` FETCH_SCHEMA_WITH_QUERY ----------------------- Fetch the OpenAPI document using the query parameters passed to the ReDoc page request. **Default**: :python:`True` |br| *Maps to parameter*: - .. _FORCE_SCRIPT_NAME: https://docs.djangoproject.com/en/2.0/ref/settings/#force-script-name drf-yasg-nonfree-1.21.15/package-lock.json000066400000000000000000003736231514731163200202640ustar00rootroot00000000000000{ "name": "drf-yasg", "lockfileVersion": 3, "requires": true, "packages": { "": { "dependencies": { "redoc": "^2.0.0-rc.59", "swagger-ui-dist": "^5.18.2" }, "devDependencies": { "cspell": "^6.30.0", "luxon": "^3.5.0", "octokit": "^4.1.2" } }, "node_modules/@babel/code-frame": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@cspell/cspell-bundled-dicts": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.31.3.tgz", "integrity": "sha512-KXy3qKWYzXOGYwqOGMCXHem3fV39iEmoKLiNhoWWry/SFdvAafmeY+LIDcQTXAcOQLkMDCwP2/rY/NadcWnrjg==", "dev": true, "license": "MIT", "dependencies": { "@cspell/dict-ada": "^4.0.1", "@cspell/dict-aws": "^3.0.0", "@cspell/dict-bash": "^4.1.1", "@cspell/dict-companies": "^3.0.9", "@cspell/dict-cpp": "^5.0.2", "@cspell/dict-cryptocurrencies": "^3.0.1", "@cspell/dict-csharp": "^4.0.2", "@cspell/dict-css": "^4.0.5", "@cspell/dict-dart": "^2.0.2", "@cspell/dict-django": "^4.0.2", "@cspell/dict-docker": "^1.1.6", "@cspell/dict-dotnet": "^5.0.0", "@cspell/dict-elixir": "^4.0.2", "@cspell/dict-en_us": "^4.3.2", "@cspell/dict-en-common-misspellings": "^1.0.2", "@cspell/dict-en-gb": "1.1.33", "@cspell/dict-filetypes": "^3.0.0", "@cspell/dict-fonts": "^3.0.2", "@cspell/dict-fullstack": "^3.1.5", "@cspell/dict-gaming-terms": "^1.0.4", "@cspell/dict-git": "^2.0.0", "@cspell/dict-golang": "^6.0.1", "@cspell/dict-haskell": "^4.0.1", "@cspell/dict-html": "^4.0.3", "@cspell/dict-html-symbol-entities": "^4.0.0", "@cspell/dict-java": "^5.0.5", "@cspell/dict-k8s": "^1.0.1", "@cspell/dict-latex": "^4.0.0", "@cspell/dict-lorem-ipsum": "^3.0.0", "@cspell/dict-lua": "^4.0.1", "@cspell/dict-node": "^4.0.2", "@cspell/dict-npm": "^5.0.5", "@cspell/dict-php": "^4.0.1", "@cspell/dict-powershell": "^5.0.1", "@cspell/dict-public-licenses": "^2.0.2", "@cspell/dict-python": "^4.0.2", "@cspell/dict-r": "^2.0.1", "@cspell/dict-ruby": "^5.0.0", "@cspell/dict-rust": "^4.0.1", "@cspell/dict-scala": "^5.0.0", "@cspell/dict-software-terms": "^3.1.6", "@cspell/dict-sql": "^2.1.0", "@cspell/dict-svelte": "^1.0.2", "@cspell/dict-swift": "^2.0.1", "@cspell/dict-typescript": "^3.1.1", "@cspell/dict-vue": "^3.0.0" }, "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-json-reporter": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-6.31.3.tgz", "integrity": "sha512-ZJwj2vT4lxncYxduXcxy0dCvjjMvXIfphbLSCN5CXvufrtupB4KlcjZUnOofCi4pfpp8qocCSn1lf2DU9xgUXA==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-types": "6.31.3" }, "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-pipe": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.31.3.tgz", "integrity": "sha512-Lv/y4Ya/TJyU1pf66yl1te7LneFZd3lZg1bN5oe1cPrKSmfWdiX48v7plTRecWd/OWyLGd0yN807v79A+/0W7A==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-service-bus": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.31.3.tgz", "integrity": "sha512-x5j8j3n39KN8EXOAlv75CpircdpF5WEMCC5pcO916o6GBmJBy8SrdzdsBGJhVcYGGilqy6pf8R9RCZ3yAmG8gQ==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-types": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.31.3.tgz", "integrity": "sha512-wZ+t+lUsQJB65M31btZM4fH3K1CkRgE8pSeTiCwxYcnCL19pi4TMcEEMKdO8yFZMdocW4B7VRwzxNoQMw2ewBg==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@cspell/dict-ada": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.1.1.tgz", "integrity": "sha512-E+0YW9RhZod/9Qy2gxfNZiHJjCYFlCdI69br1eviQQWB8yOTJX0JHXLs79kOYhSW0kINPVUdvddEBe6Lu6CjGQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-aws": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-3.0.0.tgz", "integrity": "sha512-O1W6nd5y3Z00AMXQMzfiYrIJ1sTd9fB1oLr+xf/UD7b3xeHeMeYE2OtcWbt9uyeHim4tk+vkSTcmYEBKJgS5bQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-bash": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.2.2.tgz", "integrity": "sha512-kyWbwtX3TsCf5l49gGQIZkRLaB/P8g73GDRm41Zu8Mv51kjl2H7Au0TsEvHv7jzcsRLS6aUYaZv6Zsvk1fOz+Q==", "dev": true, "license": "MIT", "dependencies": { "@cspell/dict-shell": "1.1.2" } }, "node_modules/@cspell/dict-companies": { "version": "3.2.10", "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.2.10.tgz", "integrity": "sha512-bJ1qnO1DkTn7JYGXvxp8FRQc4yq6tRXnrII+jbP8hHmq5TX5o1Wu+rdfpoUQaMWTl6balRvcMYiINDesnpR9Bw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-cpp": { "version": "5.1.23", "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.23.tgz", "integrity": "sha512-59VUam6bYWzn50j8FASWWLww0rBPA0PZfjMZBvvt0aqMpkvXzoJPnAAI4eDDSibPWVHKutjpqLmast+uMLHVsQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-cryptocurrencies": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-3.0.1.tgz", "integrity": "sha512-Tdlr0Ahpp5yxtwM0ukC13V6+uYCI0p9fCRGMGZt36rWv8JQZHIuHfehNl7FB/Qc09NCF7p5ep0GXbL+sVTd/+w==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-csharp": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.8.tgz", "integrity": "sha512-qmk45pKFHSxckl5mSlbHxmDitSsGMlk/XzFgt7emeTJWLNSTUK//MbYAkBNRtfzB4uD7pAFiKgpKgtJrTMRnrQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-css": { "version": "4.0.19", "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.19.tgz", "integrity": "sha512-VYHtPnZt/Zd/ATbW3rtexWpBnHUohUrQOHff/2JBhsVgxOrksAxJnLAO43Q1ayLJBJUUwNVo+RU0sx0aaysZfg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-dart": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.3.2.tgz", "integrity": "sha512-sUiLW56t9gfZcu8iR/5EUg+KYyRD83Cjl3yjDEA2ApVuJvK1HhX+vn4e4k4YfjpUQMag8XO2AaRhARE09+/rqw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-data-science": { "version": "2.0.13", "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-2.0.13.tgz", "integrity": "sha512-l1HMEhBJkPmw4I2YGVu2eBSKM89K9pVF+N6qIr5Uo5H3O979jVodtuwP8I7LyPrJnC6nz28oxeGRCLh9xC5CVA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-django": { "version": "4.1.6", "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.6.tgz", "integrity": "sha512-SdbSFDGy9ulETqNz15oWv2+kpWLlk8DJYd573xhIkeRdcXOjskRuxjSZPKfW7O3NxN/KEf3gm3IevVOiNuFS+w==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-docker": { "version": "1.1.17", "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.17.tgz", "integrity": "sha512-OcnVTIpHIYYKhztNTyK8ShAnXTfnqs43hVH6p0py0wlcwRIXe5uj4f12n7zPf2CeBI7JAlPjEsV0Rlf4hbz/xQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-dotnet": { "version": "5.0.11", "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.11.tgz", "integrity": "sha512-LSVKhpFf/ASTWJcfYeS0Sykcl1gVMsv2Z5Eo0TnTMSTLV3738HH+66pIsjUTChqU6SF3gKPuCe6EOaRYqb/evA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-elixir": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.8.tgz", "integrity": "sha512-CyfphrbMyl4Ms55Vzuj+mNmd693HjBFr9hvU+B2YbFEZprE5AG+EXLYTMRWrXbpds4AuZcvN3deM2XVB80BN/Q==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-en_us": { "version": "4.4.27", "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.27.tgz", "integrity": "sha512-0y4vH2i5cFmi8sxkc4OlD2IlnqDznOtKczm4h6jA288g5VVrm3bhkYK6vcB8b0CoRKtYWKet4VEmHBP1yI+Qfw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-en-common-misspellings": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-1.0.2.tgz", "integrity": "sha512-jg7ZQZpZH7+aAxNBlcAG4tGhYF6Ksy+QS5Df73Oo+XyckBjC9QS+PrRwLTeYoFIgXy5j3ICParK5r3MSSoL4gw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-en-gb": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz", "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-filetypes": { "version": "3.0.15", "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.15.tgz", "integrity": "sha512-uDMeqYlLlK476w/muEFQGBy9BdQWS0mQ7BJiy/iQv5XUWZxE2O54ZQd9nW8GyQMzAgoyg5SG4hf9l039Qt66oA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-fonts": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-3.0.2.tgz", "integrity": "sha512-Z5QdbgEI7DV+KPXrAeDA6dDm/vTzyaW53SGlKqz6PI5VhkOjgkBXv3YtZjnxMZ4dY2ZIqq+RUK6qa9Pi8rQdGQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-fullstack": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.2.7.tgz", "integrity": "sha512-IxEk2YAwAJKYCUEgEeOg3QvTL4XLlyArJElFuMQevU1dPgHgzWElFevN5lsTFnvMFA1riYsVinqJJX0BanCFEg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-gaming-terms": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.1.2.tgz", "integrity": "sha512-9XnOvaoTBscq0xuD6KTEIkk9hhdfBkkvJAIsvw3JMcnp1214OCGW8+kako5RqQ2vTZR3Tnf3pc57o7VgkM0q1Q==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-git": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-2.0.0.tgz", "integrity": "sha512-n1AxyX5Kgxij/sZFkxFJlzn3K9y/sCcgVPg/vz4WNJ4K9YeTsUmyGLA2OQI7d10GJeiuAo2AP1iZf2A8j9aj2w==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-golang": { "version": "6.0.26", "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.26.tgz", "integrity": "sha512-YKA7Xm5KeOd14v5SQ4ll6afe9VSy3a2DWM7L9uBq4u3lXToRBQ1W5PRa+/Q9udd+DTURyVVnQ+7b9cnOlNxaRg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-haskell": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.6.tgz", "integrity": "sha512-ib8SA5qgftExpYNjWhpYIgvDsZ/0wvKKxSP+kuSkkak520iPvTJumEpIE+qPcmJQo4NzdKMN8nEfaeci4OcFAQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-html": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.14.tgz", "integrity": "sha512-2bf7n+kS92g+cMKV0wr9o/Oq9n8JzU7CcrB96gIh2GHgnF+0xDOqO2W/1KeFAqOfqosoOVE48t+4dnEMkkoJ2Q==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-html-symbol-entities": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.5.tgz", "integrity": "sha512-429alTD4cE0FIwpMucvSN35Ld87HCyuM8mF731KU5Rm4Je2SG6hmVx7nkBsLyrmH3sQukTcr1GaiZsiEg8svPA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-java": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.12.tgz", "integrity": "sha512-qPSNhTcl7LGJ5Qp6VN71H8zqvRQK04S08T67knMq9hTA8U7G1sTKzLmBaDOFhq17vNX/+rT+rbRYp+B5Nwza1A==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-k8s": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.12.tgz", "integrity": "sha512-2LcllTWgaTfYC7DmkMPOn9GsBWsA4DZdlun4po8s2ysTP7CPEnZc1ZfK6pZ2eI4TsZemlUQQ+NZxMe9/QutQxg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-latex": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.4.tgz", "integrity": "sha512-YdTQhnTINEEm/LZgTzr9Voz4mzdOXH7YX+bSFs3hnkUHCUUtX/mhKgf1CFvZ0YNM2afjhQcmLaR9bDQVyYBvpA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-lorem-ipsum": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-3.0.0.tgz", "integrity": "sha512-msEV24qEpzWZs2kcEicqYlhyBpR0amfDkJOs+iffC07si9ftqtQ+yP3lf1VFLpgqw3SQh1M1vtU7RD4sPrNlcQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-lua": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.8.tgz", "integrity": "sha512-N4PkgNDMu9JVsRu7JBS/3E/dvfItRgk9w5ga2dKq+JupP2Y3lojNaAVFhXISh4Y0a6qXDn2clA6nvnavQ/jjLA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-node": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz", "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-npm": { "version": "5.2.29", "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.29.tgz", "integrity": "sha512-ZAef8JpYmbuHFT1zekj/YyImLPvZevjECw663EmG5GPePyNo4AfH8Dd2fFhaOyQ3P5I5LrkAhGwypnOfUxcssw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-php": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.1.1.tgz", "integrity": "sha512-EXelI+4AftmdIGtA8HL8kr4WlUE11OqCSVlnIgZekmTkEGSZdYnkFdiJ5IANSALtlQ1mghKjz+OFqVs6yowgWA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-powershell": { "version": "5.0.15", "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.15.tgz", "integrity": "sha512-l4S5PAcvCFcVDMJShrYD0X6Huv9dcsQPlsVsBGbH38wvuN7gS7+GxZFAjTNxDmTY1wrNi1cCatSg6Pu2BW4rgg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-public-licenses": { "version": "2.0.15", "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.15.tgz", "integrity": "sha512-cJEOs901H13Pfy0fl4dCD1U+xpWIMaEPq8MeYU83FfDZvellAuSo4GqWCripfIqlhns/L6+UZEIJSOZnjgy7Wg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-python": { "version": "4.2.25", "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.2.25.tgz", "integrity": "sha512-hDdN0YhKgpbtZVRjQ2c8jk+n0wQdidAKj1Fk8w7KEHb3YlY5uPJ0mAKJk7AJKPNLOlILoUmN+HAVJz+cfSbWYg==", "dev": true, "license": "MIT", "dependencies": { "@cspell/dict-data-science": "^2.0.13" } }, "node_modules/@cspell/dict-r": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.1.1.tgz", "integrity": "sha512-71Ka+yKfG4ZHEMEmDxc6+blFkeTTvgKbKAbwiwQAuKl3zpqs1Y0vUtwW2N4b3LgmSPhV3ODVY0y4m5ofqDuKMw==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-ruby": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.1.0.tgz", "integrity": "sha512-9PJQB3cfkBULrMLp5kSAcFPpzf8oz9vFN+QYZABhQwWkGbuzCIXSorHrmWSASlx4yejt3brjaWS57zZ/YL5ZQQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-rust": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.1.1.tgz", "integrity": "sha512-fXiXnZH0wOaEVTKFRNaz6TsUGhuB8dAT0ubYkDNzRQCaV5JGSOebGb1v2x5ZrOSVp+moxWM/vdBfiNU6KOEaFQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-scala": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.9.tgz", "integrity": "sha512-AjVcVAELgllybr1zk93CJ5wSUNu/Zb5kIubymR/GAYkMyBdYFCZ3Zbwn4Zz8GJlFFAbazABGOu0JPVbeY59vGg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-shell": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@cspell/dict-shell/-/dict-shell-1.1.2.tgz", "integrity": "sha512-WqOUvnwcHK1X61wAfwyXq04cn7KYyskg90j4lLg3sGGKMW9Sq13hs91pqrjC44Q+lQLgCobrTkMDw9Wyl9nRFA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-software-terms": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.4.10.tgz", "integrity": "sha512-S5S2sz98v4GWJ9TMo62Vp4L5RM/329e5UQfFn7yJfieTcrfXRH4IweVdz34rZcK9o5coGptgBUIv/Jcrd4cMpg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-sql": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.2.1.tgz", "integrity": "sha512-qDHF8MpAYCf4pWU8NKbnVGzkoxMNrFqBHyG/dgrlic5EQiKANCLELYtGlX5auIMDLmTf1inA0eNtv74tyRJ/vg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-svelte": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.7.tgz", "integrity": "sha512-hGZsGqP0WdzKkdpeVLBivRuSNzOTvN036EBmpOwxH+FTY2DuUH7ecW+cSaMwOgmq5JFSdTcbTNFlNC8HN8lhaQ==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-swift": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.6.tgz", "integrity": "sha512-PnpNbrIbex2aqU1kMgwEKvCzgbkHtj3dlFLPMqW1vSniop7YxaDTtvTUO4zA++ugYAEL+UK8vYrBwDPTjjvSnA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-typescript": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz", "integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dict-vue": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.5.tgz", "integrity": "sha512-Mqutb8jbM+kIcywuPQCCaK5qQHTdaByoEO2J9LKFy3sqAdiBogNkrplqUK0HyyRFgCfbJUgjz3N85iCMcWH0JA==", "dev": true, "license": "MIT" }, "node_modules/@cspell/dynamic-import": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-6.31.3.tgz", "integrity": "sha512-A6sT00+6UNGFksQ5SxW2ohNl6vUutai8F4jwJMHTjZL/9vivQpU7y5V4PpsfoPZtx3WZcbrzuTvJ+tLfdbWc4A==", "dev": true, "license": "MIT", "dependencies": { "import-meta-resolve": "^2.2.2" }, "engines": { "node": ">=14" } }, "node_modules/@cspell/strong-weak-map": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-6.31.3.tgz", "integrity": "sha512-znwc9IlgGUPioHGshP/zyM8HsuYg1OY5S7HSiVXARh5H8RqcyBsnyn8abc0PPhqPrfDy9Fh5xHsAEPZ55dl1vQ==", "dev": true, "license": "MIT", "engines": { "node": ">=14.6" } }, "node_modules/@emotion/is-prop-valid": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz", "integrity": "sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==", "license": "MIT", "dependencies": { "@emotion/memoize": "^0.9.0" } }, "node_modules/@emotion/memoize": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", "license": "MIT" }, "node_modules/@emotion/unitless": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", "license": "MIT" }, "node_modules/@exodus/schemasafe": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", "license": "MIT" }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" }, "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" }, "engines": { "node": ">= 8" } }, "node_modules/@octokit/app": { "version": "15.1.6", "resolved": "https://registry.npmjs.org/@octokit/app/-/app-15.1.6.tgz", "integrity": "sha512-WELCamoCJo9SN0lf3SWZccf68CF0sBNPQuLYmZ/n87p5qvBJDe9aBtr5dHkh7T9nxWZ608pizwsUbypSzZAiUw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-app": "^7.2.1", "@octokit/auth-unauthenticated": "^6.1.3", "@octokit/core": "^6.1.5", "@octokit/oauth-app": "^7.1.6", "@octokit/plugin-paginate-rest": "^12.0.0", "@octokit/types": "^14.0.0", "@octokit/webhooks": "^13.6.1" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-app": { "version": "7.2.2", "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.2.2.tgz", "integrity": "sha512-p6hJtEyQDCJEPN9ijjhEC/kpFHMHN4Gca9r+8S0S8EJi7NaWftaEmexjxxpT1DFBeJpN4u/5RE22ArnyypupJw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^8.1.4", "@octokit/auth-oauth-user": "^5.1.4", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "toad-cache": "^3.7.0", "universal-github-app-jwt": "^2.2.0", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-oauth-app": { "version": "8.1.4", "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.4.tgz", "integrity": "sha512-71iBa5SflSXcclk/OL3lJzdt4iFs56OJdpBGEBl1wULp7C58uiswZLV6TdRaiAzHP1LT8ezpbHlKuxADb+4NkQ==", "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^7.1.5", "@octokit/auth-oauth-user": "^5.1.4", "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-oauth-device": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.5.tgz", "integrity": "sha512-lR00+k7+N6xeECj0JuXeULQ2TSBB/zjTAmNF2+vyGPDEFx1dgk1hTDmL13MjbSmzusuAmuJD8Pu39rjp9jH6yw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/oauth-methods": "^5.1.5", "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-oauth-user": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.6.tgz", "integrity": "sha512-/R8vgeoulp7rJs+wfJ2LtXEVC7pjQTIqDab7wPKwVG6+2v/lUnCOub6vaHmysQBbb45FknM3tbHW8TOVqYHxCw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^7.1.5", "@octokit/oauth-methods": "^5.1.5", "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-token": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz", "integrity": "sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==", "dev": true, "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@octokit/auth-unauthenticated": { "version": "6.1.3", "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-6.1.3.tgz", "integrity": "sha512-d5gWJla3WdSl1yjbfMpET+hUSFCE15qM0KVSB0H1shyuJihf/RL1KqWoZMIaonHvlNojkL9XtLFp8QeLe+1iwA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/core": { "version": "6.1.6", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-6.1.6.tgz", "integrity": "sha512-kIU8SLQkYWGp3pVKiYzA5OSaNF5EE03P/R8zEmmrG6XwOg5oBjXyQVVIauQ0dgau4zYhpZEhJrvIYt6oM+zZZA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@octokit/auth-token": "^5.0.0", "@octokit/graphql": "^8.2.2", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "before-after-hook": "^3.0.2", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/endpoint": { "version": "10.1.4", "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.4.tgz", "integrity": "sha512-OlYOlZIsfEVZm5HCSR8aSg02T2lbUWOsCQoPKfTXJwDzcHQBrVBGdGXb89dv2Kw2ToZaRtudp8O3ZIYoaOjKlA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/graphql": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.2.tgz", "integrity": "sha512-Yi8hcoqsrXGdt0yObxbebHXFOiUA+2v3n53epuOg1QUgOB6c4XzvisBNVXJSl8RYA5KrDuSL2yq9Qmqe5N0ryA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/request": "^9.2.3", "@octokit/types": "^14.0.0", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/oauth-app": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-7.1.6.tgz", "integrity": "sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^8.1.3", "@octokit/auth-oauth-user": "^5.1.3", "@octokit/auth-unauthenticated": "^6.1.2", "@octokit/core": "^6.1.4", "@octokit/oauth-authorization-url": "^7.1.1", "@octokit/oauth-methods": "^5.1.4", "@types/aws-lambda": "^8.10.83", "universal-user-agent": "^7.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/oauth-authorization-url": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz", "integrity": "sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA==", "dev": true, "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@octokit/oauth-methods": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.5.tgz", "integrity": "sha512-Ev7K8bkYrYLhoOSZGVAGsLEscZQyq7XQONCBBAl2JdMg7IT3PQn/y8P0KjloPoYpI5UylqYrLeUcScaYWXwDvw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/oauth-authorization-url": "^7.0.0", "@octokit/request": "^9.2.3", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { "version": "25.1.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", "dev": true, "license": "MIT" }, "node_modules/@octokit/openapi-webhooks-types": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-webhooks-types/-/openapi-webhooks-types-11.0.0.tgz", "integrity": "sha512-ZBzCFj98v3SuRM7oBas6BHZMJRadlnDoeFfvm1olVxZnYeU6Vh97FhPxyS5aLh5pN51GYv2I51l/hVUAVkGBlA==", "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-graphql": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-5.2.4.tgz", "integrity": "sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA==", "dev": true, "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-paginate-rest": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-12.0.0.tgz", "integrity": "sha512-MPd6WK1VtZ52lFrgZ0R2FlaoiWllzgqFHaSZxvp72NmoDeZ0m8GeJdg4oB6ctqMTYyrnDYp592Xma21mrgiyDA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-rest-endpoint-methods": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-14.0.0.tgz", "integrity": "sha512-iQt6ovem4b7zZYZQtdv+PwgbL5VPq37th1m2x2TdkgimIDJpsi2A6Q/OI/23i/hR6z5mL0EgisNR4dcbmckSZQ==", "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-retry": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.2.1.tgz", "integrity": "sha512-wUc3gv0D6vNHpGxSaR3FlqJpTXGWgqmk607N9L3LvPL4QjaxDgX/1nY2mGpT37Khn+nlIXdljczkRnNdTTV3/A==", "dev": true, "license": "MIT", "dependencies": { "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { "@octokit/core": ">=6" } }, "node_modules/@octokit/plugin-throttling": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-10.0.0.tgz", "integrity": "sha512-Kuq5/qs0DVYTHZuBAzCZStCzo2nKvVRo/TDNhCcpC2TKiOGz/DisXMCvjt3/b5kr6SCI1Y8eeeJTHBxxpFvZEg==", "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { "@octokit/core": "^6.1.3" } }, "node_modules/@octokit/request": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-9.2.4.tgz", "integrity": "sha512-q8ybdytBmxa6KogWlNa818r0k1wlqzNC+yNkcQDECHvQo8Vmstrg18JwqJHdJdUiHD2sjlwBgSm9kHkOKe2iyA==", "dev": true, "license": "MIT", "dependencies": { "@octokit/endpoint": "^10.1.4", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "fast-content-type-parse": "^2.0.0", "universal-user-agent": "^7.0.2" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/request-error": { "version": "6.1.8", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.8.tgz", "integrity": "sha512-WEi/R0Jmq+IJKydWlKDmryPcmdYSVjL3ekaiEL1L9eo1sUnqMJ+grqmC9cjk7CA7+b2/T397tO5d8YLOH3qYpQ==", "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^14.0.0" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/types": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", "dev": true, "license": "MIT", "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "node_modules/@octokit/webhooks": { "version": "13.9.1", "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-13.9.1.tgz", "integrity": "sha512-Nss2b4Jyn4wB3EAqAPJypGuCJFalz/ZujKBQQ5934To7Xw9xjf4hkr/EAByxQY7hp7MKd790bWGz7XYSTsHmaw==", "dev": true, "license": "MIT", "dependencies": { "@octokit/openapi-webhooks-types": "11.0.0", "@octokit/request-error": "^6.1.7", "@octokit/webhooks-methods": "^5.1.1" }, "engines": { "node": ">= 18" } }, "node_modules/@octokit/webhooks-methods": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-5.1.1.tgz", "integrity": "sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg==", "dev": true, "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@redocly/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, "node_modules/@redocly/config": { "version": "0.22.2", "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz", "integrity": "sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ==", "license": "MIT" }, "node_modules/@redocly/openapi-core": { "version": "1.34.6", "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.6.tgz", "integrity": "sha512-2+O+riuIUgVSuLl3Lyh5AplWZyVMNuG2F98/o6NrutKJfW4/GTZdPpZlIphS0HGgcOHgmWcCSHj+dWFlZaGSHw==", "license": "MIT", "dependencies": { "@redocly/ajv": "^8.11.2", "@redocly/config": "^0.22.0", "colorette": "^1.2.0", "https-proxy-agent": "^7.0.5", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", "minimatch": "^5.0.1", "pluralize": "^8.0.0", "yaml-ast-parser": "0.0.43" }, "engines": { "node": ">=18.17.0", "npm": ">=9.5.0" } }, "node_modules/@scarf/scarf": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", "hasInstallScript": true, "license": "Apache-2.0" }, "node_modules/@types/aws-lambda": { "version": "8.10.159", "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.159.tgz", "integrity": "sha512-SAP22WSGNN12OQ8PlCzGzRCZ7QDCwI85dQZbmpz7+mAk+L7j+wI7qnvmdKh+o7A5LaOp6QnOZ2NJphAZQTTHQg==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "license": "MIT" }, "node_modules/@types/stylis": { "version": "4.2.7", "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.7.tgz", "integrity": "sha512-VgDNokpBoKF+wrdvhAAfS55OMQpL6QRglwTwNC3kIgBrzZxA4WsFj+2eLfEA/uMUDzBcEhYmjSbwQakn/i3ajA==", "license": "MIT" }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "license": "MIT", "optional": true }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { "node": ">= 14" } }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, "node_modules/array-timsort": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, "license": "MIT" }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, "node_modules/before-after-hook": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz", "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", "dev": true, "license": "Apache-2.0" }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", "dev": true, "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelize": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz", "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", "license": "MIT" }, "node_modules/clear-module": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", "dev": true, "license": "MIT", "dependencies": { "parent-module": "^2.0.0", "resolve-from": "^5.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" }, "engines": { "node": ">=12" } }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, "engines": { "node": ">=7.0.0" } }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/colorette": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "license": "MIT" }, "node_modules/commander": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/comment-json": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", "dev": true, "license": "MIT", "dependencies": { "array-timsort": "^1.0.3", "core-util-is": "^1.0.3", "esprima": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/configstore": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", "make-dir": "^3.0.0", "unique-string": "^2.0.0", "write-file-atomic": "^3.0.0", "xdg-basedir": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/core-js": { "version": "3.47.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", "hasInstallScript": true, "license": "MIT", "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true, "license": "MIT" }, "node_modules/cosmiconfig": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", "dev": true, "license": "MIT", "dependencies": { "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "parse-json": "^5.0.0", "path-type": "^4.0.0" }, "engines": { "node": ">=14" } }, "node_modules/crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cspell": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.31.3.tgz", "integrity": "sha512-VeeShDLWVM6YPiU/imeGy0lmg6ki63tbLEa6hz20BExhzzpmINOP5nSTYtpY0H9zX9TrF/dLbI38TuuYnyG3Uw==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-json-reporter": "6.31.3", "@cspell/cspell-pipe": "6.31.3", "@cspell/cspell-types": "6.31.3", "@cspell/dynamic-import": "6.31.3", "chalk": "^4.1.2", "commander": "^10.0.0", "cspell-gitignore": "6.31.3", "cspell-glob": "6.31.3", "cspell-io": "6.31.3", "cspell-lib": "6.31.3", "fast-glob": "^3.2.12", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^6.0.1", "get-stdin": "^8.0.0", "imurmurhash": "^0.1.4", "semver": "^7.3.8", "strip-ansi": "^6.0.1", "vscode-uri": "^3.0.7" }, "bin": { "cspell": "bin.js", "cspell-esm": "bin.mjs" }, "engines": { "node": ">=14" }, "funding": { "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" } }, "node_modules/cspell-dictionary": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-6.31.3.tgz", "integrity": "sha512-3w5P3Md/tbHLVGPKVL0ePl1ObmNwhdDiEuZ2TXfm2oAIwg4aqeIrw42A2qmhaKLcuAIywpqGZsrGg8TviNNhig==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "6.31.3", "@cspell/cspell-types": "6.31.3", "cspell-trie-lib": "6.31.3", "fast-equals": "^4.0.3", "gensequence": "^5.0.2" }, "engines": { "node": ">=14" } }, "node_modules/cspell-gitignore": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.31.3.tgz", "integrity": "sha512-vCfVG4ZrdwJnsZHl/cdp8AY+YNPL3Ga+0KR9XJsaz69EkQpgI6porEqehuwle7hiXw5e3L7xFwNEbpCBlxgLRA==", "dev": true, "license": "MIT", "dependencies": { "cspell-glob": "6.31.3", "find-up": "^5.0.0" }, "bin": { "cspell-gitignore": "bin.mjs" }, "engines": { "node": ">=14" } }, "node_modules/cspell-glob": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.31.3.tgz", "integrity": "sha512-+koUJPSCOittQwhR0T1mj4xXT3N+ZnY2qQ53W6Gz9HY3hVfEEy0NpbwE/Uy7sIvFMbc426fK0tGXjXyIj72uhQ==", "dev": true, "license": "MIT", "dependencies": { "micromatch": "^4.0.5" }, "engines": { "node": ">=14" } }, "node_modules/cspell-grammar": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.31.3.tgz", "integrity": "sha512-TZYaOLIGAumyHlm4w7HYKKKcR1ZgEMKt7WNjCFqq7yGVW7U+qyjQqR8jqnLiUTZl7c2Tque4mca7n0CFsjVv5A==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "6.31.3", "@cspell/cspell-types": "6.31.3" }, "bin": { "cspell-grammar": "bin.mjs" }, "engines": { "node": ">=14" } }, "node_modules/cspell-io": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.31.3.tgz", "integrity": "sha512-yCnnQ5bTbngUuIAaT5yNSdI1P0Kc38uvC8aynNi7tfrCYOQbDu1F9/DcTpbdhrsCv+xUn2TB1YjuCmm0STfJlA==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-service-bus": "6.31.3", "node-fetch": "^2.6.9" }, "engines": { "node": ">=14" } }, "node_modules/cspell-lib": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.31.3.tgz", "integrity": "sha512-Dv55aecaMvT/5VbNryKo0Zos8dtHon7e1K0z8DR4/kGZdQVT0bOFWeotSLhuaIqoNFdEt8ypfKbrIHIdbgt1Hg==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-bundled-dicts": "6.31.3", "@cspell/cspell-pipe": "6.31.3", "@cspell/cspell-types": "6.31.3", "@cspell/strong-weak-map": "6.31.3", "clear-module": "^4.1.2", "comment-json": "^4.2.3", "configstore": "^5.0.1", "cosmiconfig": "8.0.0", "cspell-dictionary": "6.31.3", "cspell-glob": "6.31.3", "cspell-grammar": "6.31.3", "cspell-io": "6.31.3", "cspell-trie-lib": "6.31.3", "fast-equals": "^4.0.3", "find-up": "^5.0.0", "gensequence": "^5.0.2", "import-fresh": "^3.3.0", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0", "vscode-languageserver-textdocument": "^1.0.8", "vscode-uri": "^3.0.7" }, "engines": { "node": ">=14.6" } }, "node_modules/cspell-trie-lib": { "version": "6.31.3", "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.31.3.tgz", "integrity": "sha512-HNUcLWOZAvtM3E34U+7/mSSpO0F6nLd/kFlRIcvSvPb9taqKe8bnSa0Yyb3dsdMq9rMxUmuDQtF+J6arZK343g==", "dev": true, "license": "MIT", "dependencies": { "@cspell/cspell-pipe": "6.31.3", "@cspell/cspell-types": "6.31.3", "gensequence": "^5.0.2" }, "engines": { "node": ">=14" } }, "node_modules/css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==", "license": "ISC", "engines": { "node": ">=4" } }, "node_modules/css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==", "license": "MIT", "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^4.0.2" } }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" }, "engines": { "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { "optional": true } } }, "node_modules/decko": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz", "integrity": "sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ==" }, "node_modules/dompurify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz", "integrity": "sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==", "license": "(MPL-2.0 OR Apache-2.0)", "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "node_modules/dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, "node_modules/error-ex": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", "license": "MIT" }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" }, "engines": { "node": ">=4" } }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, "node_modules/fast-content-type-parse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz", "integrity": "sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/fastify" }, { "type": "opencollective", "url": "https://opencollective.com/fastify" } ], "license": "MIT" }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "license": "MIT" }, "node_modules/fast-equals": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-4.0.3.tgz", "integrity": "sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/fastify" }, { "type": "opencollective", "url": "https://opencollective.com/fastify" } ], "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } ], "license": "MIT", "dependencies": { "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" } }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/foreach": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" }, "node_modules/gensequence": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-5.0.2.tgz", "integrity": "sha512-JlKEZnFc6neaeSVlkzBGGgkIoIaSxMgvdamRoPN8r3ozm2r9dusqxeKqYQ7lhzmj2UhFQP8nkyfCaiLQxiLrDA==", "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, "engines": { "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, "engines": { "node": ">= 6" } }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/glob/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", "dev": true, "license": "MIT", "dependencies": { "ini": "^1.3.4" }, "engines": { "node": ">=4" } }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/http2-client": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" }, "engines": { "node": ">= 14" } }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" }, "engines": { "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/import-fresh/node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, "engines": { "node": ">=6" } }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/import-meta-resolve": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz", "integrity": "sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==", "dev": true, "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { "node": ">=0.8.19" } }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true, "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, "license": "ISC" }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true, "license": "MIT" }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, "license": "MIT" }, "node_modules/js-levenshtein": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true, "license": "MIT" }, "node_modules/json-pointer": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz", "integrity": "sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw==", "license": "MIT", "dependencies": { "foreach": "^2.0.4" } }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true, "license": "MIT" }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", "license": "MIT" }, "node_modules/luxon": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", "dev": true, "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "license": "MIT", "dependencies": { "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/mark.js": { "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", "license": "MIT" }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { "node": ">= 12" } }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, "node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" } }, "node_modules/mobx": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.15.0.tgz", "integrity": "sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g==", "license": "MIT", "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" } }, "node_modules/mobx-react": { "version": "9.2.0", "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-9.2.0.tgz", "integrity": "sha512-dkGWCx+S0/1mfiuFfHRH8D9cplmwhxOV5CkXMp38u6rQGG2Pv3FWYztS0M7ncR6TyPRQKaTG/pnitInoYE9Vrw==", "license": "MIT", "dependencies": { "mobx-react-lite": "^4.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" }, "peerDependencies": { "mobx": "^6.9.0", "react": "^16.8.0 || ^17 || ^18 || ^19" }, "peerDependenciesMeta": { "react-dom": { "optional": true }, "react-native": { "optional": true } } }, "node_modules/mobx-react-lite": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-4.1.1.tgz", "integrity": "sha512-iUxiMpsvNraCKXU+yPotsOncNNmyeS2B5DKL+TL6Tar/xm+wwNJAubJmtRSeAoYawdZqwv8Z/+5nPRHeQxTiXg==", "license": "MIT", "dependencies": { "use-sync-external-store": "^1.4.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" }, "peerDependencies": { "mobx": "^6.9.0", "react": "^16.8.0 || ^17 || ^18 || ^19" }, "peerDependenciesMeta": { "react-dom": { "optional": true }, "react-native": { "optional": true } } }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, "engines": { "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "peerDependenciesMeta": { "encoding": { "optional": true } } }, "node_modules/node-fetch-h2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", "license": "MIT", "dependencies": { "http2-client": "^1.2.5" }, "engines": { "node": "4.x || >=6.0.0" } }, "node_modules/node-readfiles": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", "license": "MIT", "dependencies": { "es6-promise": "^3.2.1" } }, "node_modules/oas-kit-common": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", "license": "BSD-3-Clause", "dependencies": { "fast-safe-stringify": "^2.0.7" } }, "node_modules/oas-linter": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", "license": "BSD-3-Clause", "dependencies": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" }, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/oas-resolver": { "version": "2.5.6", "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", "license": "BSD-3-Clause", "dependencies": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "resolve": "resolve.js" }, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/oas-schema-walker": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", "license": "BSD-3-Clause", "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/oas-validator": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", "license": "BSD-3-Clause", "dependencies": { "call-me-maybe": "^1.0.1", "oas-kit-common": "^1.0.8", "oas-linter": "^3.2.2", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "reftools": "^1.1.9", "should": "^13.2.1", "yaml": "^1.10.0" }, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/octokit": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/octokit/-/octokit-4.1.4.tgz", "integrity": "sha512-cRvxRte6FU3vAHRC9+PMSY3D+mRAs2Rd9emMoqp70UGRvJRM3sbAoim2IXRZNNsf8wVfn4sGxVBHRAP+JBVX/g==", "dev": true, "license": "MIT", "dependencies": { "@octokit/app": "^15.1.6", "@octokit/core": "^6.1.5", "@octokit/oauth-app": "^7.1.6", "@octokit/plugin-paginate-graphql": "^5.2.4", "@octokit/plugin-paginate-rest": "^12.0.0", "@octokit/plugin-rest-endpoint-methods": "^14.0.0", "@octokit/plugin-retry": "^7.2.1", "@octokit/plugin-throttling": "^10.0.0", "@octokit/request-error": "^6.1.8", "@octokit/types": "^14.0.0", "@octokit/webhooks": "^13.8.3" }, "engines": { "node": ">= 18" } }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/openapi-sampler": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.6.2.tgz", "integrity": "sha512-NyKGiFKfSWAZr4srD/5WDhInOWDhfml32h/FKUqLpEwKJt0kG0LGUU0MdyNkKrVGuJnw6DuPWq/sHCwAMpiRxg==", "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", "fast-xml-parser": "^4.5.0", "json-pointer": "0.6.2" } }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/parent-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.1.0" }, "engines": { "node": ">=8" } }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" }, "engines": { "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/perfect-scrollbar": { "version": "1.5.6", "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz", "integrity": "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==", "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/polished": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.17.8" }, "engines": { "node": ">=10" } }, "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" }, { "type": "github", "url": "https://github.com/sponsors/ai" } ], "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "license": "MIT" }, "node_modules/prismjs": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT" }, "node_modules/react": { "version": "19.2.3", "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { "version": "19.2.3", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", "license": "MIT", "peer": true, "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.3" } }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, "node_modules/react-tabs": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-6.1.0.tgz", "integrity": "sha512-6QtbTRDKM+jA/MZTTefvigNxo0zz+gnBTVFw2CFVvq+f2BuH0nF0vDLNClL045nuTAdOoK/IL1vTP0ZLX0DAyQ==", "license": "MIT", "dependencies": { "clsx": "^2.0.0", "prop-types": "^15.5.0" }, "peerDependencies": { "react": "^18.0.0 || ^19.0.0" } }, "node_modules/redoc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/redoc/-/redoc-2.5.2.tgz", "integrity": "sha512-sTJfItvRkcDTojB6wdLN4M+Ua6mlZwElV21Tf8Mn7IbQF/1Os6GvgQpZyLWPGZZHbhy7GC1Or1hTMHfz1vKh5A==", "license": "MIT", "dependencies": { "@redocly/openapi-core": "^1.4.0", "classnames": "^2.3.2", "decko": "^1.2.0", "dompurify": "^3.2.4", "eventemitter3": "^5.0.1", "json-pointer": "^0.6.2", "lunr": "^2.3.9", "mark.js": "^8.11.1", "marked": "^4.3.0", "mobx-react": "9.2.0", "openapi-sampler": "^1.6.2", "path-browserify": "^1.0.1", "perfect-scrollbar": "^1.5.5", "polished": "^4.2.2", "prismjs": "^1.29.0", "prop-types": "^15.8.1", "react-tabs": "^6.0.2", "slugify": "~1.4.7", "stickyfill": "^1.1.1", "swagger2openapi": "^7.0.8", "url-template": "^2.0.8" }, "engines": { "node": ">=6.9", "npm": ">=3.0.0" }, "peerDependencies": { "core-js": "^3.1.4", "mobx": "^6.0.4", "react": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.4 || ^17.0.0 || ^18.0.0 || ^19.0.0", "styled-components": "^4.1.1 || ^5.1.1 || ^6.0.5" } }, "node_modules/reftools": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", "license": "BSD-3-Clause", "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-global": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", "dev": true, "license": "MIT", "dependencies": { "global-dirs": "^0.1.1" }, "engines": { "node": ">=8" } }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "bin.js" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { "type": "github", "url": "https://github.com/sponsors/feross" }, { "type": "patreon", "url": "https://www.patreon.com/feross" }, { "type": "consulting", "url": "https://feross.org/support" } ], "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "license": "MIT" }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==", "license": "MIT" }, "node_modules/should": { "version": "13.2.3", "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", "license": "MIT", "dependencies": { "should-equal": "^2.0.0", "should-format": "^3.0.3", "should-type": "^1.4.0", "should-type-adaptors": "^1.0.1", "should-util": "^1.0.0" } }, "node_modules/should-equal": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", "license": "MIT", "dependencies": { "should-type": "^1.4.0" } }, "node_modules/should-format": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", "license": "MIT", "dependencies": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" } }, "node_modules/should-type": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", "license": "MIT" }, "node_modules/should-type-adaptors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", "license": "MIT", "dependencies": { "should-type": "^1.3.0", "should-util": "^1.0.0" } }, "node_modules/should-util": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", "license": "MIT" }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, "node_modules/slugify": { "version": "1.4.7", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz", "integrity": "sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg==", "license": "MIT", "engines": { "node": ">=8.0.0" } }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/stickyfill": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz", "integrity": "sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA==" }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, "node_modules/strnum": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } ], "license": "MIT" }, "node_modules/styled-components": { "version": "6.3.6", "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.3.6.tgz", "integrity": "sha512-eRtK6PXWk3juH+8X9cyfItRk6a0JM+0Cw2gSr9jM3T3WeErb+UPObTRkVCHAv9maYfvPof77h1wq3325I0iI7w==", "license": "MIT", "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.4.0", "@emotion/unitless": "0.10.0", "@types/stylis": "4.2.7", "css-to-react-native": "3.2.0", "csstype": "3.2.3", "postcss": "8.4.49", "shallowequal": "1.1.0", "stylis": "4.3.6", "tslib": "2.8.1" }, "engines": { "node": ">= 16" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/styled-components" }, "peerDependencies": { "react": ">= 16.8.0", "react-dom": ">= 16.8.0" } }, "node_modules/stylis": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, "node_modules/swagger-ui-dist": { "version": "5.31.0", "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.31.0.tgz", "integrity": "sha512-zSUTIck02fSga6rc0RZP3b7J7wgHXwLea8ZjgLA3Vgnb8QeOl3Wou2/j5QkzSGeoz6HusP/coYuJl33aQxQZpg==", "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" } }, "node_modules/swagger2openapi": { "version": "7.0.8", "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", "license": "BSD-3-Clause", "dependencies": { "call-me-maybe": "^1.0.1", "node-fetch": "^2.6.1", "node-fetch-h2": "^2.3.0", "node-readfiles": "^0.2.0", "oas-kit-common": "^1.0.8", "oas-resolver": "^2.5.6", "oas-schema-walker": "^1.1.5", "oas-validator": "^5.0.8", "reftools": "^1.1.9", "yaml": "^1.10.0", "yargs": "^17.0.1" }, "bin": { "boast": "boast.js", "oas-validate": "oas-validate.js", "swagger2openapi": "swagger2openapi.js" }, "funding": { "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, "engines": { "node": ">=8.0" } }, "node_modules/toad-cache": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", "dev": true, "license": "MIT", "engines": { "node": ">=12" } }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "license": "MIT" }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" }, "engines": { "node": ">=8" } }, "node_modules/universal-github-app-jwt": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-2.2.2.tgz", "integrity": "sha512-dcmbeSrOdTnsjGjUfAlqNDJrhxXizjAz94ija9Qw8YkZ1uu0d+GoZzyH+Jb9tIIqvGsadUfwg+22k5aDqqwzbw==", "dev": true, "license": "MIT" }, "node_modules/universal-user-agent": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", "dev": true, "license": "ISC" }, "node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==", "license": "BSD" }, "node_modules/use-sync-external-store": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", "dev": true, "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", "dev": true, "license": "MIT" }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true, "license": "ISC" }, "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "license": "ISC", "engines": { "node": ">= 6" } }, "node_modules/yaml-ast-parser": { "version": "0.0.43", "resolved": "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz", "integrity": "sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==", "license": "Apache-2.0" }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" } }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } } } } drf-yasg-nonfree-1.21.15/package.json000066400000000000000000000002761514731163200173250ustar00rootroot00000000000000{ "dependencies": { "redoc": "^2.0.0-rc.59", "swagger-ui-dist": "^5.18.2" }, "devDependencies": { "cspell": "^6.30.0", "luxon": "^3.5.0", "octokit": "^4.1.2" } } drf-yasg-nonfree-1.21.15/pyproject.toml000066400000000000000000000064031514731163200177510ustar00rootroot00000000000000[build-system] requires = ["setuptools >= 77.0.3", "setuptools-scm ~= 7.0"] build-backend = "setuptools.build_meta" [project] name = "drf-yasg" description = "Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code." requires-python = ">= 3.9" dynamic = ["version"] license = "BSD-3-Clause" license-files = ["LICENSE.rst"] readme = "README.rst" dependencies = [ "django >= 4.0", "djangorestframework >= 3.13", "inflection >= 0.3.1", "packaging >= 21.0", "pytz >= 2021.1", "pyyaml >= 5.1", "uritemplate >= 3.0.0", ] keywords = [ "codegen", "django", "django-rest-framework", "django-rest-swagger", "documentation", "drf", "drf-openapi", "drf-yasg", "openapi", "schema", "swagger", "swagger-codegen", ] classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 4.0", "Framework :: Django :: 4.1", "Framework :: Django :: 4.2", "Framework :: Django :: 5.0", "Framework :: Django :: 5.1", "Framework :: Django :: 5.2", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "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", "Programming Language :: Python :: 3 :: Only", "Topic :: Documentation", "Topic :: Software Development :: Code Generators", ] [[project.authors]] name = "Cristi V." email = "cristi@cvjd.me" [project.optional-dependencies] coreapi = ["coreapi >= 2.3.3", "coreschema >= 0.0.4"] validation = ["swagger-spec-validator >= 2.1.0"] [project.urls] Changelog = "https://drf-yasg.readthedocs.io/en/stable/changelog.html" Documentation = "https://drf-yasg.readthedocs.io/en/stable/" Homepage = "https://github.com/axnsan12/drf-yasg" Issues = "https://github.com/axnsan12/drf-yasg/issues" Repository = "https://github.com/axnsan12/drf-yasg" [tool.ruff] exclude = ["**/migrations/*"] line-length = 88 lint.select = [ "ASYNC", # flake8-async "C90", # mccabe "C4", # flake8-comprehensions "E", # pycodestyle errors "F", # pyflakes "FA", # flake8-future-annotations "FLY", # flynt "I", # isort "ICN", # flake8-import-conventions "INT", # flake8-gettext "LOG", # flake8-logging "PLE", # pylint errors "PYI", # flake8-pyi "SLOT", # flake8-slots "T10", # flake8-debugger "TCH", # flake8-type-checking "W", # pycodestyle warnings "YTT", # flake8-2020 ] lint.isort.known-first-party = [ "drf_yasg", "testproj", "articles", "people", "snippets", "todo", "users", "urlconfs", ] lint.mccabe.max-complexity = 13 lint.per-file-ignores."src/drf_yasg/inspectors/field.py" = ["E721"] lint.per-file-ignores."src/drf_yasg/openapi.py" = ["E721"] lint.per-file-ignores."testproj/testproj/settings/*" = ["F405"] lint.per-file-ignores."tests/test_schema_generator.py" = ["FA100"] [tool.ruff.per-file-target-version] "tests/pep695_with_pep563.py" = "py312" drf-yasg-nonfree-1.21.15/requirements/000077500000000000000000000000001514731163200175555ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/requirements/ci.txt000066400000000000000000000001011514731163200207010ustar00rootroot00000000000000# requirements for the CI test runner codecov>=2.0.9 -r tox.txt drf-yasg-nonfree-1.21.15/requirements/dev.txt000066400000000000000000000002251514731163200210730ustar00rootroot00000000000000# requirements for local development to be installed via pip install -U -r requirements/dev.txt -r tox.txt -r test.txt -r lint.txt tox-battery>=0.5 drf-yasg-nonfree-1.21.15/requirements/docs.txt000066400000000000000000000003411514731163200212440ustar00rootroot00000000000000# used by the 'docs' tox env for building the documentation Sphinx>=1.7.0 sphinx_rtd_theme>=0.2.4 Pillow>=4.3.0 readme_renderer[md]>=24.0 twine>=1.12.1 cmarkgfm>=0.8.0,<0.9.0 Django>=2.0 djangorestframework_camel_case>=0.2.0 drf-yasg-nonfree-1.21.15/requirements/lint.txt000066400000000000000000000000771514731163200212700ustar00rootroot00000000000000# used by the 'lint' tox env for linting via ruff ruff>=0.11.0 drf-yasg-nonfree-1.21.15/requirements/publish.txt000066400000000000000000000000231514731163200217570ustar00rootroot00000000000000build twine>=5.0.0 drf-yasg-nonfree-1.21.15/requirements/test.txt000066400000000000000000000002661514731163200213010ustar00rootroot00000000000000# requirements for running the tests via pytest datadiff>=2 django-fake-model==0.1.4 psycopg2-binary>=2.9.5 pytest-cov>=4 pytest-django>=4 pytest-xdist>=3 pytest>=7 -r testproj.txt drf-yasg-nonfree-1.21.15/requirements/testproj.txt000066400000000000000000000003501514731163200221660ustar00rootroot00000000000000# test project requirements Pillow>=4.3.0 django-filter>=2.4.0,<25 djangorestframework-camel-case>=1.1.2 djangorestframework-recursive>=0.1.2 dj-database-url>=0.4.2 user_agents>=1.1.0 django-cors-headers django-oauth-toolkit>=1.3.0 drf-yasg-nonfree-1.21.15/requirements/tox.txt000066400000000000000000000000651514731163200211310ustar00rootroot00000000000000# requirements for building and running tox tox~=4.0 drf-yasg-nonfree-1.21.15/runtime.txt000066400000000000000000000000151514731163200172520ustar00rootroot00000000000000python-3.9.0 drf-yasg-nonfree-1.21.15/screenshots/000077500000000000000000000000001514731163200173725ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/screenshots/redoc-nested-response.png000066400000000000000000003157121514731163200243210ustar00rootroot00000000000000‰PNG  IHDR€8èÓÁCsRGB®ÎégAMA±� üa pHYsÃÃÇo¨dÿ¥IDATx^ìý}xUÕ�÷�÷¿ùóþïûç}_W¿­ßéuÓ¹:2õBë�‘)˜rã Oc S´[L@Ʀ€b �8¨8Œ°ˆ1$cJi@„Ô 4<e(AC"&éCŒN?¿½öÃ9ûœóÉÉÙÉIö çõšëUÎÞkíµ÷><ÌÎçíZûK‚ˆˆˆˆˆˆˆˆˆˆˆˆˆˆ7�}}}‚ˆö öpË­ã‡MçŸ~:$ €-ìA+Ò!""""æKƒêF‘ÑrÀ´"""""b¾4h¡n €-ìA+Ò!""""æKƒêF‘ÑrÀ´"""""b¾4h¡n €-ìA+Ò!""""æKƒêF‘ÑrÀ´"""""b¾4h¡nàw¿û]uX`DË{ЊtˆˆˆˆˆùÒ …ºFþjí�Àˆ– ö éó¥A uÃáï@!00¢å€=hE:DDDDÄ|iHtÓCßôít €-ìA+Ò!""""æKCz «…½Àˆ£X°­H‡ˆˆˆˆ˜/ é�nA/0â(ìA+Ò!""""æKƒêF‘ÑrÀ´"""""b¾4h¡n €-ìA+Ò!""""æKƒêF1ïpó­òbÍAù÷—öËþÃGÔ>ÖÛÙ,?­Ú$?k–­q{ЊtˆˆˆˆˆùÒ …ºQÌkü/ÛvËÿ-].ÿP¶Z=ò˜ûùÁuÿ"¿½ö±Ú¿;åÄÏ6I… a¾%—Ծà 0Z$؃V¤CDDDDÌ—-Ô�bÞàWßü¹øš_ƒ}f6° ƒùÉæ”¾Ù½,ÝÀw—œèô÷ù�ìÁËá~Ã(0Z$؃V¤CDDDDÌ—-Ô�bÞàÞ¸Ù5}ÿ›�ÇÜ`øÆ§]mª—ßòfü¦‡¯�Ír"€ƒ€6°î²¾ßñ§§:SÇ5}ÝÏþŒâ` 9o"~K†f"'ÆBAÀ´"""""b¾4h¡nó›�×¼û7}¿™lÚ̯émªé�lîᬿ¿ãÔ®d8kÚýÓf'‚å]~Hü–\Jì Âfç˜pœ˜…Œ5‚ËP#ú€=hE:DDDDÄ|iÐBÝ(æu°yßoú~ ›8Ê{€/Õ™°5]/Œ ÚËA!nzPÇí›ö*c&f}ƒw‡–¥F!À´"""""b¾4h¡nó7žø•ôVmß“XîÙì»÷‡«å¾=žÑ?'3q}ë.÷;úa­Öž‡‚b` €=hE:DDDDÄ|iÐBÝ(æ-6þ˶Ýn¬i‚aí˜t;N½•²Ë<›@öt¡­cèïêM x €q” ö éó¥A u£˜×ØxîâewÙg£™l¶ÿ¡luÎ!pö&CÙ |õ÷e„³þ¾Ðì`ïØ´ã´¥¢3–…vŽ©s>£E€=hE:DDDDÄ|iÐBÝ(æ=ÖŒ'ƒÛ¤iÁkІ5ÁnÊþ]òÓ�`c°?Є¾Àh‘`Z‘1_´P7Š#Ã!ð›�ÇÔ>ˆ˜)؃V¤CDDDDÌ—-Ô�âˆÀF¯v›Üø´KmGÄLÀ´"""""b¾4h¡nG4FÄè€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�bÞàË—/#bHíïÉ`{ЊtˆˆˆˆˆùÒ …ºQd0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hE:DDDDÄ|iÐBÝ(#Z.؃V¤‹Û¯~ã6ùò×Ç:ÞŠˆˆˆˆ99V¾ò—·©ÏVqkÐBÝ(#Z.؃V¤‹Ó¯þ¥ µ¢&""""äW¾a_lÐBÝ(#Z.؃V¤‹Óÿ÷/˜ù‹ˆˆˆ8Xͳ”öŒ§-Ô�"0¢å€=hEº8Õ ™ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ– ö éâT+b""""bîjÏXqjÐBÝ(#Z.؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹…F×õnéõ?؆V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹…Dóc“ÝÜÆ¬lò÷ØEz�.nµ"&""""æ®öŒ§-Ô�"0¢åWv•¸ÿ¸m:ëﱜ–=²ø¡²æP‡¿D:¤ö±Î÷²Gšý=7麸Պ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ– sèA÷ã •£$°ÎÊúbóÿ¤”ZÀÍDz�.nµ"&""""æ®öŒ§-Ô�â°À-Uså®âeRÓ“º¿~õT™±ù|ʾ¾¾óòTÉyêœùuªs\¦î1 årWÉiM9¶OZ7/�Ù(Ë•ãïZÝèµ›1ŠÈæsý�ÑÏñŽË¼~‰±\{äÄÖGä;Óü~ÓJeéÖfé �múÔ”9m³7IK°Ï½ŽäØIË¥Þý>¼ó%Æèi–Í+J¥ÈïW4{™Û¹ïý¡pöÚvùN±ù>fÉÚSɱ<•°7}_�sOÎw9eõ[Òâê=ÒÖ°Ésª|gkpÍÞ1w9çYÞþÎ €o­¤÷’T?4[ÆŽ þA/wÌY%Õ{ý­U2Á´=pX¤û´ìHë_ôP­\ñ»&PÕÔ@±ýh•Ìœ4ÞgœŒ™¾X*�*K0‡Çò¯wŒÌ-ã&Ë=+kåÃÐå&镬’{Âç˜T"e.9-Á5)šûõé½X+‹§OÌñ¼9r½I*ï Ý‹ûÝ¯Èøj0mSe}«È•à~Š«äŒßžÛ}&1÷R6grÚy�ßó«~ƒÿ�gê]G’iØ´Xвü>XFêÏ;ñ«1«¨Ž6µûBDDD̦öŒ§-Ô�bÞàž7–É]‹¶K«ÿk[¨ÍŠxöR™?͹ŽDx:ȸáq)šöˆL›åœ®™ ]´®QNTÌrMm8®_ç·â­´™½Ž§6ʔ⥲óšÙöŽùÎ’¥r×´r©O\ðÍ }œ•J?ü4�á܇'CÄéÏ&CÝ ¾o•”�w~5áç}+dn8DœóBj<@\é¿#8ã¼Ç8$ÆzÁ;¿ �ç­�ÅóÂAðƒRÛí÷wé–Ú‚13û'Ïá¿çvÎDwÿ˜âÅ]w�öº´>ëÝ¿”:í÷•È~àY´©Íë‘®ký1�sŽŸ-3�óÍ ÌEÛ’ãpYåƒ^û8§ÿc‡¥ÝmÍõ>=>Ü6;Ñ×½—‡JÑøàø©R„»î;‘Ë÷>'Ê=ÁwòÐR{ÝïÏ3þLŒ—…‡R~C¬ÃûYȵ"æ`ÕÕѦv_ˆˆˆˆÙÔž±âÔ …ºQÌsÜ);—˜™©×¤¯ç ”Ï•Š÷“íVÀfŒc¥(´ô``s/EÍ)í™—µÓfÉ*澿I¦d,‹=PlîG›9lô¾ëù/™ÙÆÁ1×Ü}É¥  €o­ã¢l†fºº\o’º¡ð.€ÇÌ{55è½^+ Ý�p¼”õ÷²ÀÆÉRVŸ:K´·%8ÏdYÓâï4„f£Ž™ó¬4§Lkí�ê u®­Ëß{fÓT¯ÿ¼=©³t{OKåÓ_?GFøìð¡?ÖÂCþŸö£GäØ`2ÎîÃþw–ù˜ïþáy«¤Áß4x°q¼ÌÜ—8G¾OçÜë+�È•´©Ág*ýqV6ù{ ©3¶SIÏÖ4ùa´Ïõ#²Ø êÊn2`°ïg-{ÔŠ˜ƒU TG›Ú}!"""fS{ÆŠSƒêF1¿°»Üq2ätg¯†f½9öß�›njœÞ;4îÑŠYÎgo)èÁÀKë’mªî,á�rÂݾ&›ùáx¢O.ðRy¹ŸYÆÉï3t̵}2?±4ðÍ uð¼=©^:‰Xô‚ðp¦Kþ‡à;ógצѵo¡ÛžD&àþÅ“òð$Ó^"[ÜÙ©MRæ¬ýô¿ú¬9ã�]sÒßá�C`°ïgM{ÔŠ˜ƒU TG›Ú}!"""fS{ÆŠSƒêF1¯°Yîø®²ƒÉåŠM„Õ¸YÖNË1ž½QŽvvJGÈ£sÓ๲öXjŸäõ„Ç5³s�ëÙz~ÐpöÀ=RS6U¦T}�Ø×¶µÔ¹‡MÒ’è3PìÍ Î6Ø{Ïrê8m/KAß ÚG›l™ãÿC4nªÌ­¬•cW•À.±tæý=¸=52?}iäþàô}Ž©á­ />ë}¿óö¤öuΙø}I €/I¥»?tîînÿ{èv®ËûÞ'TžNýnÚ�VÉš}mþ€�¸?Y¤VĬZ š©̾+‡'òÁ;oÊ¿µ}!½íÊß§s@ƹîü¬ù{yý€³ýF›ó3æ½Ïiý’Žl\¼÷¢È¯wÉmJ›�®”7¯;ßùN­Mó19Òu]Þ\®µ!""ŽN—¯zÔUk3š¶ÿ3óÔ¶°Ú3Vœ´P7ŠÀˆ–kÍ•“ý„ÆËØé eñC‹åžI~˜Zül2Ì{¼XÖûïì3©Dæ†Ï›qŒC0ÖÊ*?8/EóVÈây³Ý­îq³ƒÏÊ–9Á˜~ÿ‡JÑxߤURî,=í8füDkÎãÞïiYïÎ.v7Ñ羹ýçš6¥]kŽt�Xë‡ÝÁw°BfNŸèßÏx™ O³ÀÑî3ÚÞ2nªÌtÎ9wÎdïœÅS½ëI €�?#�…þŒ8ߢ”0øˆ”%¾›ÉrÏ}©ß͘9/DÇFïç{ÔŠ˜ƒU T3ÍŸsÚ¾�cGÂm�Mòz—È•Ö&ùÊ–3Òü¹óeš¥¡O�’)[´þ#O’m¿6aê$ùò½•òæÅà‡â^io—·dòNçÛëGeÛ\”.ÿ¿hî½~Bž»7c—s½É€õo]ùõ>ù‘éïu—®‹õ²6­ÿ‘ªmÒt=1 œÚùP2„¾ë!ÙöÞõÄ@>Ÿ¹Þ0ío­”éOÔË…àdîXøçr\^/í×ëåÁ6""âMà™V¯Ö®…ÀfŸaû‹»3ÚÒÕž±âÔ …ºQ$F´\ioÙ#eAh4AÞÊZù0<¥3ï°·¤°™%:3üŽ™¾X*�¦Íˆ5„Çê½$Õ…ƒ_åzôʇV¥„ËcÆÏ–¹›š2f˺N8×ã¿Û÷–q³eñ� „í�æ]iãL*‘²—2f¾Fâz“TÞº—[ÇËsVIõÅÔQ³À†(÷ÙÖÏ÷§½Ø`úOõû;×7¯JŽ¥íÒ°i±ù¡¯{î||7#@ðsŒ-jEÌÁªª™¦³oʽ§>u~žë–Ý/š¶ßË+)K9'ÝîüÀÙ~á]÷ó¸}gäpgŸÿs`Ÿ\¸p:mÖðÀw™0¶U¶Ýå·æ=¹Sn•‰÷®‘];+½@ÖÀ]&6m¥›¤ÉéÚûÞ6?°Uà^/@þÞŒIrÛŒ5òŠùÙ=šþ½ÒÛuU^bžLüútùnÕ çgò^ù`ë§}Ž<÷k§ý·õRQ:]¾<å©xÇ»¶ï¹Ç§Ïö¶¯üÇîXÓ´O¶=1Éoó®Ç„ÄÁ6""âÍà7îøk5Âßêš×Sú÷§öŒ§-Ô�"0¢åB–wÊfC “†Fz�.nµ"æ`ÕÕLM0›Æç”cïüÂi33{³Ï¾ðÞ‘Ôý;šd]« �ÓÛF.¾mk‹ô^Ü'ÅÎçïþÇU‘®VÙõ#ʆú™8íÁî²Ñ)�nz|BÖú}]Í{†�;mz"èïÜó^ö&ûü¨±[Ä\‹Û÷º¼¾4Ùöå¯WJSopŽôøyý·Î¥ÿzŸ,»7ý]ÄÉë×»åH„÷#""ŽÓCà¨á¯Q{ÆŠSƒêF‘Ñr�ì!½@·Zs°j�j¦&˜í“c�M2ÿÕ&¹÷Å7CmoÊ“Yßlf ;Û{ŽÊ½)Ë>¿™2;ØsäàŠ÷z“Aì]÷IÅ´J»I¤{¯Ë¯­IÎN_B9eŸÿzW²¯k8´MíŸ0Ó,Ùìý‘K£WNU™¾™ï¾mþ&yý×ޒѽ×[å•ù3€KÉ•ô0ñ&2¢„¿Fí+N Z¨E`DË…›3n?ô„,~ȼ{w`×R–¸€XH/ÐÅ­VĬZ šéÁì§ýs‘®öK²bO½|eË)müØ 3Û[½€wÅ¥>‘ÞOd÷›¿�»«Þ”)oþV.|þ…4¿“G*Þ$§z/Ê®éû'É?¸K2_•×K�íÁÀy˜|ä‰以aï“bwrfœÐ„ØþrÑæýÅfVsï;•™ýo"ƒ8jøkÔž±âÔ …ºQ$F´\¸9à3•SSþAÏ&³˜ìAû¹-Nµ"æ`ÕÕLsf÷œ–×ÛÿèÎD5ôövËáÆ£2.hßrTžlýTÚ?÷;|Þ'Zß“»ÃcŒT\Õ"½~PjBߊÆVy³ê!7d�hfΡî àA¾x§òà»æÈ÷ªê¥é?üÉÁ’Ïïl’ï–®‘¬Ø$G~íô]:ÇiwÆ2KY»ç2ý‚YȈˆ7·&Öö¤öŒ§-Ô�"0¢å€=hEº8ÕŠ˜ƒU TG›Ú}esí;½rå?ð·Í¬ßz¹ÐD×Ýr!\ÿú€¬}ë¢tù£uýö¨™_쌽h£¼|ʹ­¢oøá‡j{¾,€OïF+Ò!""""æKƒêF1¿ðµíò�лë×Í’¢uÉ 73ؽ&WG_ÚÀKë’m™f€ÓßœÒïò[²jÑ,ÿÀ dUA0f:Rá¯Ñ:Z«dáÊ=²fúxï£q³e͉n¿Q¤ëD•ÌïÿC5~¡¬O´u˱ÇJdŒÿØØyUrÌi:S95ñ�Ú-·f†¤&8ÝQ¿J&Œ Ž{AÎ\?"eÅÚùÛ¤ú¡©þ9&ÊÂ}mξò01þ8/h6¡é}φúN–²ú\îÁiK»–õ÷éÁn¶~ÙÆo7¦x…T_õ®¾* '÷0NÆÞ·G>t�ë�ê&º¡ieKpþ'dœ¤Ýùܰr¢3Îié2 ݧe}ñdYÓb6”À&ô=Ôæ\‰s5æ&=!ͦ-Û=¸mJõU÷(¹R¿ÖG €³õË6~«Y®y­Ô¹Ç‰´uŽ›c–oî�-sfËzÿ;7÷¶¦Ø9æºó9m°¨O¯’æD°€�¶I«¤Ö¿®fg;øÞÛw•ÈØüߟÞ6©[ãô%È@+Ò!""""æKƒêF1�p£¬š–îΩÓíㆸ+jüàµGê+fÉŒÍçÓÆ8¶wg„ÁNÿÙYúcÁyãÆ� �Öaf§…µÇÖL•²£"nš- ù;}ºö-”{¶uxÁç¤eË¡“òáõD:é‘5^(»ÃÝ�¾w¤ô ÂÝò°¸JÎø{]N¬•™›.9”ø¾plkV¯=Û=˜_gîK½vmiçlý²�¯µ]9zÒ}oÃÊÉrÏc{¤¡Å¹/öPàÔ1Âp‰,®w?z$Ží–Ýóü@9Aò8H¢éó¥A u£˜·¸ç�er×ì�RšYklÙ\*w-Ú.mNŸŒ`×}OðRÙy-u¬à¾©_=Ë9_¹|¿ÇÝ×s®Q*–Ì•UnX«Íô5ý²ÀW˜É[¤þš7f[ÃF™Q\*›Ó® [3XÛ?\Z‡¡£»Äp«¿3 Ô¿÷âaYÿP‰Üa–'¿P¶}³ÀikFßP¬üC9vÍÉPŸ´ÐÔœ'Û=d†«zœ­_öñ•¶Ò¼ë ™9}¢»Ló+�x3�Óî%{œ6~âØ´ïÇ…@#ýçNDDDDÄ|jÐBÝ(æ)¾&›™™¾ÊûrÝ�w®¬=•%Ø /ìË{äÄÖGdF0ëxZ©,Ýz\:Ü6/èM™‰\²EZµý®åRïwYV,•)¡1×6x³—ãÒ:ü°2LN3€Óè=±JîÆ|Àó^õBÑ r€m›ÜÛÝí.S�J‡ì˜7[*/:ó‹Tß—6Óš@E+Ò!""""æKƒêF1¯ïFÄük&4èÀA[èý¶íÛJdÂcþûyÍ{q<(wï6ï^ifêf’{ì-“+eÅ㽌ÆÍ–5'‚dU¤ëD•ÌïÿC5~¡¬O´µIõCSÝå‹MÛØyUr,qX“<쓦F €SÏ1^&Ü·'ñNà+»ºûÝc³Àý߃ÓV¿J&˜%¬ý{(óßœN¶~ÙÆo7¦x…T»vÚ1ã¦Êâm^ƒsÏ;æ™ß‹©n¸;ØØ¼¸neðÝM”™Ûªd.0@îÏeˆˆˆˆˆÃ¤A u£HŒh¹Öaà~–k†›3³˜ ­H‡ˆˆˆˆ˜/ Z¨E`D˵à›“Îïë&‰îÞ6©~`¢Ü³-˜e Z‘1_´P7ŠÀˆ–kÀ7)f èÙÉå³WI¼W’hE:DDDDÄ|iÐBÝ(#Z.؃V¤CDDDDÌ—-Ô�"0¢å€=hEºx�)?ØS/ÛkCUK¦%úܵ®&µÝµF~pO0Æ�2nÉ3²qÏ›~Û›Rõô ¹ó¶ Ý㹇Û�³Ÿ«—ò%¡>YÎó—ó*e}øÏUÊÿ½[¹~ß§×ÍL9—w�[¥j¿ßg�l¬|Tîî3Qî}ÞiÛW%SŽ ®ïE¹7¥¿ç¸G«�¶äµfÞ‹s½•Kå›îwâ]spßa³¹\?"""º-Ô�"0¢å€=hEºxM#¼wƒlÜÿ¦üó‚;Ý}ý…·žw:íÕ²}ÿ^ùÁ‚iòõÛÆÉׯ—ȼçÞ�íû¶ÊßûádcdÀý�gü Y_û¦¬_úäkÎ9¿>y¾Ì{ú¹÷oB}–ì�í{*å®ðqagUÉsµ5òÃ{ïr¶�ûœµT~øôùÛPP}ËdçÞ�ó<¿ÿ Y~oh¿cÎ>·¡$eÿ-·-‘Un(›'îÅ\ïY¾3¥€ûûr¹~DDD,x Z¨E`DË{Њtñª‡‘&ˆ|®r~âs¿¡¤˜Öȧ{aqÒ¿•yÏ×Ëó•÷»Ûý�‘s|O¥<][-K&+m�À¦}ÿ¿Éÿ͘NÜð†<_µDŠ+½_Ãmæúž~n‡<½‡Ìͺýˇ_”íÏ¿(OôûÞ¿U¶ïÜ w6Îáú Z¨E`DË{Њtñ:´øN³ôñó�Êו¶[ü›<¿ïù[çscäß¶DþÙ̲ݳC~pÿ?¸3�3ú O^'këåù�Ïȼ{ÍLâô>æoÊ*3óÙ�m›ºÜ³¹¾§×Íw—ˆÞøh°Dv‰üpŸ9æ!)îxÀëGDDD$F,À´"]¼f†‘_»{…”§/í¾‹6¤Rš¶çüY¾º³vwÈlçsÁæ€ïó7÷Ëž¯‘çݶ7dýºûå/ƒ6ã@°ã×îY!«vúïN{×q8°¾åÖi²dg8èõ®Ï]ÂÙ„ÃþLܯ;ç|~çwëðm%òCg*ß¼ûÿ$ï…ÃßüÑÞì3€MPê|ÎD]'ºËD§ÎÖÏ“âmÿGþöÑòœs­ë—NLîÏ!NxÇ?ÈßWV»÷úÃYfßDwfoøý¾ãÌìæ}U2Ñß6×ç½Ã×[Þú‰‡KdÉÎ7�ë7× À)ß©3öóëä.wæò@3€sø2®ÑÓ …ºQ$F´\°­H¯^¹þá l4Ë §¾ÓWo}Ýe‰³¼Ø�î×Í{rÝ™²¡>·Ý/ÿ¼ï Y~¯·�õ<ó·òÍ”eŸïtg{�¬¿o Ø#eÆð­ÿ ? ‚X÷]Æ©�­§™ íõOÀζ ·M{" ÖfAîÄ´åš €ûÿú½þ”ýˆˆˆXÈ´P7ŠÀˆ– ö éâ53ŒüKÖn_—k³†’·Þé´WËöý{å ¦¹ïæýÚø™÷Üξ2ûoü~ã—Jùþz©ª\"ãL�{Ç4ùû*gÜ��m¶óܵÁiÛ³Uî�eÂÔ;åëÓ×ÉÁûzƒ~Yà»ÜÀø¹ç+åÿN¾ËÙ¾SÆ-xFž®­–%“ÇÉÄ Îõ>¿Nî ϼuœýô›‰;%ö—ˆ~âá¿õ·sxp´ÐÝø7æš²—ýú3û#""b¡jÐBÝ(#Z.؃V¤‹Wm6ª·/7ÝP2cflø˜;eÜ’gdãÿÝ´ŽO?·AŠƒð7pòCÉ÷×Ö¾)O?_™Ò'ëynû[)~t‡Tí÷÷﯑õ¡eª]š|ÛL¹·r¯<�£Zþù~ço["«Bïí”Ë­¿– Kß”ù­iBןIñþ�BÇ ›ÀÖïÛþ‘4þt¿üÙ8§¿ÓÀ“ëåÿØ�~{V6Ìý™ü™s¼ kSÇêÇ´1Œu�îröÕIÝo;½sâÊ_§‡§ ß}÷]¹råJF›Ù×_[>{ЊtqúÕ¿4á¯VÔDDDDÄ�üÊ7ì � Z^ÅüÀïÖËÿû²<êÎøM× €¿:ëùÒ¸ZÙå†ÂưëE)sÆ)Þï|VÂÛO[Ž8×àŒï|lüÓÒògK[Rû!:jAo°ïܹs)}ó)؃V¤‹Óÿ÷/˜ù‹ˆˆˆ8Xͳ”öŒ§-/Šb—€n‘éãvÈ—&ÖÈâýéK&{ð·÷_–Gg…—‚¶/nyîw¦òWÿé¨Ô¶úËM#ú†Cà‘�`Z‘.NµB&""""æ®öŒ§-/Šb^ßüéÅ÷eñÜ=þûswÉ_=ö¾ô°ó¹µQ¾žX :JÜ)g÷Ö8cï÷–•ÎoÛdséÏäKsßI.í¿Ç7az ¬…ÈÎyÞÙ[+_5a¶sÌŸM®•ÍÁ2~G"ü5€=hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´¼(Šù €Û¯Hís5ò?Æî�;wš 7;íî,[w)è�à´wÜË2½¶Ík7ámZûŸM~3±¼´;Ö‚£rö╤潾þ¹cdÀ��rùÝf¹wª3öÄ:©Sû`¡jBà‘�`Z‘.Nµ"&""""æ®öŒ§-/Šbþàß¶ÉÙ”}�²yÁùŸ�]t>§Àf¶î¿Ì5KA×Ê_ 0øÞÃYÂÛ‰oÊ+n¸Û–¶ätúXý˜wºc¥ôy·^þŸÐ5"Ž´`Z‘.Nµ"&""""æ®öŒ§-/ŠbÞàÆG÷È—&ÖÊæ_~$¹³g坯ýLŠkMp›;þö¨ü•;s7Ê;€Cf�½;ȸý¤Üé.]Ý"-&pn¿"¯ü“3ÎÔ#Ò>q{Њtqª11wµg¬85hyQó¸t›¼RY“xwî—Æí‘¿ª<+¹mJìxyçþá €CËC¦\ƒ2ÆG-ïÈôYÁ{ŒwÈŸM}Sv]äÀŸ`Z‘.Nµ"&""""æ®öŒ§-/Šâð¼ó&؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©AË‹¢HŒh¹`Z‘.Nµ"&""""æ®öŒ§-/Š"0¢å€=hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´¼(ŠÀˆ– ö éâT+b""""bîjÏXqjÐò¢(#Z.؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©AË‹¢HŒh¹`Z‘.Nµ"&""""æ®öŒ§-/Š"0¢å€=hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´¼(ŠÀˆ– ö éâT+b""""bîjÏXqjÐò¢(#Z.؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©AË‹¢HŒh¹`Z‘.Nµ"&""""æ®öŒ§-/Š"0¢å€=hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´¼(ŠÀˆ– ö éâT+b""""bîjÏXqjÐò¢(#Z.؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©AË‹¢HŒh¹`Z‘.Nµ"&""""æ®öŒ§-/Š"0¢å€=hEº8ÕŠ˜C÷5iýü éhzRiCDDD¼¹Ôž±âÔ åEQ$F´\û¸$µÿö¼l ¹eW­4\íõÛEÚ�îIi÷Ü# ×ýÒ+WNÔÊîm~Û¶=R}´ÍÙ›ÄãÐ%+ɇ‡ž—Ú‹Þç�ÎÓÕz8å»ëÏJ{o‡4ì ÷Oºãh‡w`‚Ì{Ý´íU©»¾Rsž#²{× ~Ÿd÷¡³Òå·¹\<œ:†ã–}GäL·ß~õˆìØvD®ø›Wê_�õmþØ€V¤‹S­ˆ9d«/þ"""bÁ¨=cÅ©AË‹¢ø¥Ë—/ "Ú«}˜P45ÌíºxX¶üÛ«Òìšý…·½òá¡dÓ®Ãr溤öv_’†}Ï˦}'¥ÝÝ!îï<×›d‡{�þ9®;ç8t25d5Á쮦Ä93I¿WöÖ:÷Z+gü ؽ†m¯JÃÅn/Àîí�æÎým;,9qúyz»åã¯:ãc÷Ê™i´{ýÉó€hEº8ÕŠ˜C– Hí+N Z¨E`D˵�ÌPÔ`ÌêV/­ÌÌš°x›l¶IÝ®çewKö1r€MèjBXSepʾ[ù.‚@wK0{·Ÿó¸×¿ï¤7[8%ðõBòÌÉ7Z‘.Nµ"æ�%FDDÄR{ÆŠSƒêF‘Ñrích° pÁh½-¯Ê¦gÝ™´C€»OËn©åæ«ÁZËi "îm=,[ücºN8ç÷¯7ƒ«GdK°¬sçé=+Õfæt8ô5ß�»$th1XƒV¤‹S­ˆ9Ë›nHß'Ç¥\iCDDD¼Õž±âÔ …ºQ$F´\ûPBQwöjÚÐiï¼ ‚Zà³|3¥9ÀýœÇ¥û¬ÔîóßÍ»m�Ô¶¦Á9Àiã›åžý÷›ó÷f{3zýÈýž'í»ôgïÞ¥½�l@+ÒÅ©VIJÌFDDÄR{ÆŠSƒêF‘ÑríC Eÿm�Ô]L†ºn0{à´ôöö†ôÚ®Ô¿�}ð>ç8ç³{K+§Àýœ'…Þù°Þ;-¸ÎupÝÕäø]�¸ï>挞±œAäÀîû‘ZºbC+ÒÅ©VIJÀˆˆˆX@jÏXqjÐBÝ(#Z®}¤…¢f©å´wúêá­�Œf{°7K··µ6ù~ÜNŸm/8çö¶²žÇ\›ÿÑ£CœñƒðØ%Ç8}¹k3 Ù�¡ë.3�ÙîœÜ ª³xû9�{ýûN§Þã€×q¢éâT+bY`DDD, µg¬85h¡n €-×>2CÑ+õ©K!g fÅ{×í¦]‡åÌu/¢íí¾$ ûžO >{�ól{^vÔ_òÒÞnùÐ9Ϧ]'}²�ǰ[4ɇÝÞ9¼™»¯Ê±ð*Ѓ€{¯Ÿ–jçºRf!›e¡/v{�so‡4ðgñ túy̽}U¶há10€ÕhEº8ÕŠ˜C÷5iýü B`DDD,µg¬85h¡n €-×>”Y±nXkf{›n(š±Ltxöm¯\9Q+»·m/Èîú³i³}Âïðuúì8Ð$WBÓz³Ÿ§[ÎÔ¿*;‚sl{5e™j—œàԱͻ„«�¶¥Ì.îj="»w%¯s÷¡´{1çIǹ—}GäLÚ+‰]€¬F+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´Ü›w夶ÕDª½ræP­4kÁ(€hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–[ôºË3{³c·8ÍìW°­H§ZsW{ÆŠSƒêF‘ÑrÀ´"]œjELDDDDÌ]í+N Z¨E`DË{Њtqª11wµg¬85h¡n €-ìA+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQÌ[üë‹gäéãOHÙÏçËo}gÈšqÌxf\í|ˆ…¢m¼ÕЈˆˆˆˆˆˆ8bÚ†V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£˜·ø™ãOªAîPÝüÎFõ|7‡5òýªQö#&{Њtqª11wµg¬85h¡nó/?r¿à—ÖÏsýA}‰|ÿ­¹‰mÓöƒD›·�®W;ß Ü¿J¾ýÏøîX¾¿_Ù? ¡8—kôyp4 ö éâT+b""""bîjÏXqjÐBÝ(æ-ÖÂÛ|©�Ï*óç"pA ö éâT+b""""bîjÏXqjÐBÝ(ŽHüAǯär÷Eyý×¥â�ÕrþƯÝí5GËäøµFùug‹üªý„Û×ÌN?^;ŸëÑ­òÝ)SäÿWä8e�<¼ÿ¼»¿±âayø_~,÷ømffíy·ÿFù~Å/}¾¿æûòmslÑt¹g�ßÇ„²¥?–‡çL÷Çý¾<{Ô?ß™šŒý�s½m£æž—WÖÌMŒûw¥[¥ÑW3‡®íüþеOïï<écáÍ*؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£8"ðÿé¿å'ïþXýå¥öâ+rúú)wûŸŽ,’Ç�ÿ³Óþ…T¼³J=Ö¨�ÏøÊ?}O*~åoÿªFþç¤ÙùlÂÒo—¾ ÇÝ~ïɳ¥ ¤â„ó9%ž+÷T4ø¡ï ù÷ÒÙòðæs�|ÊòÛ÷ƒ7~,÷,Ü*˜qÖüX^ Îw¾AV—n�·ÌçðÌ\ç÷�óåóÒ¸å!\M-þ¥¬[¸J^9ïõ9t«Ü¿æ?¼>Ì.HÀ´"]œjEL«Ýp\:>ÿBúν&_®¾ }Î玦'õ¾Y,oº1¨ã‚sö¼ùºþ~�>MJj–ÊýÏÜ-_^R"÷;ŸKÖ}Kï;ŒŽYwÿðœ×’ûCDD «=cÅ©A u£8"pÇÛŸwýúyùô³nð«µkjç3š™²7eº|{Êùîúä-?45³{׳vÃÛi3€Ã}LÛýn[æ²Ì»—>,¯œÙ*÷3p~_v˜s¦³¿”gKÍ5M—¿[¸JÖí/e¬TõÀ�[¾ïÿíéß“VÔ¸¡¶Û‡¸ {Њtqª1íö5i BS?Lm­Ní³÷ÜÙÚŽjNÇW_dp;ðõÍ»ezŠúaéô%Z¿þ½ý™¹]Ùo‡C¿?DDÄ|«=cÅ©A u£8"p÷gŸÊÎ3[ätG³¿ïüúر•î `ÓþÇ/þ�qLXí|aÏŸi�W*’¿sgê2>ücù®Ÿ—¥Ë+'þUî f⦫³çÏÈñÃ/ÈÃ%ÁÌbM=öïXîÝî½øòþ‡Æ½,Ç+Èý/{Ÿ3Õàyؼ7ØŸÍ|ùÄF™±ôïsø§ûÌñ'Õó ÕŒ% †BÙ¼éŒéÂIçös~ÄTÀ´"]œjEÌÑn|ð“òö¹ô%Ÿ-×ÌæÄ à €s9""bÌjÏXqjÐBÝ(æ-þõÅ3n\öóùj�U3ŽÏŒ«�o¨ŽlŒ8xÀ´"]œjEÌÑnÊ2Ìî{v•@7k<øãË›nô;nîe èìÞþLÚ;sMüÌÝý÷1í鳄‡-μ>³$täÀîï™óý�{MoGDD̳Ú3Vœ´P7Šy €qx{Њtqª1G½A˜±ür¬¦›´ñø½ç²·ìpÀáåŸõ% ½ÐWkO_>Ú3èêí‰1–˜÷ÿzûÜcBçI†¼Þ{ƒ~%Ï”DžlBø¾ÏÓÞÅŒˆˆ8ŒjÏXqjÐBÝ(#Z.؃V¤‹S­ˆ‰h�ýÍ$΢ à‡> 1wµg¬85h¡n €-ìA+ÒÅ©VÄDŒÓ”YÊéïÐפufN#""fS{ÆŠSƒêF‘ÑrÀ´"]œjELDDDDÌ]í+N Z¨E`DË{Њtqª11wµg¬85h¡n €-ìA+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´\°­H§ZsW{ÆŠSƒêF‘ÑrÀ´"]œjELDDDDÌ]í+N Z¨E`DË{Њtqª11wµg¬85h¡n €-ìA+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´\°­H§ZsW{ÆŠSƒêF‘ÑrÀ´"]œjELDDDDÌ]í+N Z¨Å/õõõ "Ú+؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹`Z‘.Nµ"¦Õn8.Ÿ!}ç^“/W_�>çsGÓ“zß!û¤¼ý‰s®OŽK¹Ú®8Ü×7}š”Ô,•ûŸ¹[¾¼¤Dîw>—¬û–Þw³îþá9¯%÷‡ˆˆEí+N Z¨E`DË{Њtqª1íö5i BU?lm­ÖúåË'åísàa¿¾»ezŠúaéô%Z¿þ½ý™¹]Ùo‡C¿?DDÄ‘V{ÆŠSƒêF‘ÑrÀ´"]œjEL»õV7TuÖòö†Ô>åM7Ü™·®Ÿ—·Ï¥öÙ{Îos½ {CÇãí­Õépj{æìà�¯/1³8ãܹè¤n(ê¤÷ËÝÓSûÜþÌRwæ¬ë3%2ýÅi2&tl¢Í7°Ǻ¬?÷þšP`œØ§ÌÌõÛ¦¯ógñ¦ëú-¹ûŠ͹ö%^ßäXß""¢mjÏXqjÐBÝ(#Z.؃V¤‹S­ˆi·&< BU¶¦†¨nøk–_ö¹Ë0'CXþ¦,ÉlBÚDˆ;ØN y÷¦…Éîø)!pöëKöllÔ 5aiZÀº¤$%˜5K5ߟ€=œ,Ãçlß�> 7í<áýé�q¸Ÿ ˜“�sh¶oРûCDD´Pí+N Z¨E`DË{Њtqª1G¯O°\ókÒ‡}Ë›.x�í†ãÒšñ¾^ç˜DÀëÍîMÌþM8˜ w¸ ϰ5f¨¹ÀÓµp7l–8eÉæ”±îÍFöíoDDÄQ¤öŒ§-Ô�"0¢å€=hEº8ÕŠ˜£×á€ßBÍlÞA̱8—s!""Z®öŒ§-Ô�"0¢å€=hEº8ÕŠ˜£Y³tÊÏþrËî;y�íŒ%œSB]ÓWYR:´ÄsæøƒÑ»¦á˜9|û3iïÌ5ð3w÷ßÇ´§Ï¶8óú̒Бg»ïVv¾?%ÌGDDŒCí+N Z¨E`DË{Њtqª1G»æ=¿á%šƒð×3sç”ö \ ÄBìA+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQÌ[ü`í 5Ȫ˞TÏ7(—¢u�zÛPl(—å Êþ­_].õÊ~}€=hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7Šy €oû·Cj€;T͸Úù¬’‡Q°­H§ZsW{ÆŠSƒêF1o°Þþáó/äj÷äåÓ—eñ�wäw}_È�}Å;�HóµOäò§¿—7Ï_“»wÔKÏgŸ»mË�r�ýÿžz=1Žv>×sû¤tÚT¹«ØqZ©¬mèq÷·n.—µ[7Ê ¿ÍÌúíqûo‘å›Ï'ú,¯X&EæØâY2£ÂïÓ×(ËË6ÊÚ’Yþ¸Ëdç9ÿ|��û[7/ð¶�«Íì⩯X�wJÙ>iuÇÕm«{cýꥲùš¿}­QÖ®«‘6ç³ e‹Êjä’Ûïšì,+•Í—�Ï)ð™±ù?½,/—Í•µÇÌçFY>­\úãvÛ(3–ì“3NÅF©Î×ó�T”m’ó9<Ø9Çü pîë‘Ö—ñÇU|“L)Ù"-nèÛ'm �ËŒŠãÎgs Ëd§¹fÓïØ&YþÒùDhÛö†s¾7z¤ïr£=ç…ÞÆ–ª¥‰s¥Ìîïø ­ìA+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQÖØÌøýÕµòè[-òdãùçº_ÉŽæ‹nð[élÿâ7íÒÕë»á$à?Ï1îiØ(S¦Í’¢i¥RZU“RÍìÞ§‚Y»áí´Àá>¦m©ÛÖ(ËÝ™¼É¶ƒ+Ê¥¾sŸÌ÷gÕ&]&5æœ)K@Ÿ—�eæšfÉ”%�ËS ×RÆ ÛñÒÒ~–ŽN½†£Á,ߤEÍNÛ59¸®ÔŸÙ대û?>8Ú,؃V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£8¬ðçÿý§Äç-'ÎËñ+îÌßû^;.ß«yGÖýü´»L´ißÔtVþóÃkîç\göt~ õ›‘)îLÝAÀ§6J©÷HMY¹Ô_Þ.óÝÙ¹¡cµw÷tÊ¥S5²vQ0³8Ó\`3Óyggzsü2)})˜Å캎pÜßñ8:{Њtqª11wµg¬85h¡n‡56³zM˜kÞçûv‘m'?tƒà[7t_3ãwíÏO»}gím”Ò︟oy*uœôsy^–�«CK2w6ʪ%Þûrs €—JibYä´% K’ã&—€6ïÖ] k3z{¤íZ§÷¹¡\æï÷—TnØ·O.m.•¥uÞç Ó–€î8¶I–V™™¹©p�3þ”²iõûõ]»ì.u}iëRglÿ®5ÊSKf…à¥ò²ß¿¿ãÝÏh½…NÝCãeìš“þV:ge}ñTYßêo 3Z‘.Nµ"&""""æ®öŒ§-Ô�â°ÀùR;Ÿ±çÔ)�æ/k<Í„³^›[¼LJW/ó—Ož%ß©jöCÛFY¾¨\V•øË&O+—šPȼ6±®”nýÀÛ­Æ[ºd»\r—e^�X–¹¨lŸJ×’n[Ýã2ÿ‡¢²-r iÓg!÷IËÖàZ�~‹6J½™ÑÛã\Ïloß]Ó–ÉS&öÇÝ¿ÔÝ?cëåþ���öZXtHícOHíu3�ë‡eÍc‡¥Ýß$È'½þ¯� ­H§ZsW{ÆŠSƒêF1oð^÷fï† ¿Ë÷«Žf6p°¼³™l>}L{úÌ_ヵ'Ôó ÕŒ% f†¯C×Ó_“.èçüˆ©º­U2¡¸JÎø›À¸Ú$Õ‡NK—¿™J·œ©¯•º‹„À¡éâT+bZí†ãÒñùÒwî5ùrõés>w4=™l÷÷eìO³¼éFÖvkèþqÄÕž±âÔ …ºQÌ[üQ×ïÜø/žy##ÄŒf3žW;ßPÙqðŽV¾4v‡ÿ)WL˜þGÎ vk'*ÏzáoèÀ[Ü 8=î�º•SeŒÛg¼Lx¨V®ø-OÖr%ùs«jEL»}MZƒÐÓC[«•~ÕnÒ`4Çû‚÷ÝòçrŸ²uµg¬85h¡nó#âð8Z‰2gô&`Ã3€››,cæ<+ÍÝÎF÷YÙ1o|òX€BÁù³_w¨Vª˱«"]-‡ýmc“\‘ni>tXŽqû˜¿3WŽÖJƒÓWºOKí¡&9V#±,{›KŒ}Ä=Om‹ù P8hEº8ÕŠ˜vë nèé 7äí é}û €³ÍöÛZ›üY¶®do¸�þ`Œ¾OŽKy¤ão•½çBÇÔ~î‚´†Ï‘Óý?)o¢��ݯ˦/Y¤¹ékÉ>÷Ýâí{ñÏ¿!_þÚŸû}üÀØßúOþó¯&ûúÇgœã+ÿ[&'ÚG§Ú3Vœ´P7ŠÀˆ–;Zù¸IÊÆ¥ëõV>ô7 äÖµzK9÷^=)µNzïÍN™làÔð6%vC_oŒ®Ö#R]Ö}Cð‡&>Úæ½-¸·Ã ƒ € ÐЊtqª1íÖ„›AèiÂÐ~BÎ�fg ˆCc¦õÛ{.-p5ý3BàlǧÏ&ÄM;>Ün–ªN?§ûlì9à àÿý¿åÅpxël—!ñ×þ<%06m›Bð}·|UÊÿw¨Ý„Æ„Àˆˆ8ÊÕž±âÔ …ºQ$F´\ÛxôßšsräàòPù‡ò–q«¤Áí Pt]4³zk¥¶¾Iš[;’K>gÀÞÌ߀ÔÀ¡¥¢ÇuÈ1¶p€9† �ŒŸ;cV+bÞ¦©ö×îìOYRyÃqiMôK›ý›05ðÍz¼ywoÐæ[Þt!*á­2ö™KuSÌë3Œ3ˆG©Ú3Vœ´P7ŠÀˆ–k&ÜÍ…¸f¯9Ñ!í×Ãv{³ Š^éº~Iš�š¥Ÿû›L 0´"]œjEÌ›Âa €Ÿ”·Ï…gã*9N3}†ð8|ð7¤üfû""âͧöŒ§-Ô�"0¢åÚÆðÀãdæ¶KÒÞrI®8{2à[Ê–‹Ò|±ÍÙ‘[3Yn)^+uW{Ez»¥y×*Ys”p oi熋þöÐ{VêÜwþ: 9vúœ` h­H§Zó¦pX`oIæ�ÆÍv|ÆÒi¡rF» €•Ð8»C]:´Lóÿ6Ë=§ÂÀÉwþz3~Ãï6ïN}'°¢¹g3û9ò}#""Æ£öŒ§-Ô�"0¢åÚÆðÀ"Wö-–±æ¹ñ+¤úzZ,m²û¾‰î?€cª•öŒÃmRýÐTãþ#9^î˜÷¬43ý �î³Rw¨Ö]ºÚ¼Ë×ü.mrÌÝgáÁÀ�¸ç!€B#½@·Zsôš¾|r`„Ð^mÞßëísCÜ ˆt ‡¾æ=¾Éc�QŽÏ\F:÷;v$‡{¡¯¶<ó7¤ü+ᥛ=Sfü¦,óüU)ÿš7V8ô½ï–ÔãÓ—€vß{üyzPŽˆˆh¯Ú3Vœ´P7ŠÀˆ–k¹ÀpócBãºVþ+ (,´"]œjELÄ85!xÖYÖˆˆˆ–©=cÅ©A u£HŒh¹¶A P¸tµIÎø53…ÓÞ PhEº8ÕŠ˜ˆñifHræ2""bLjÏXqjÐBÝ(#Z®m2Ýr¦>¹¼t]+é/Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ0€½l¯­GDDDD¼é´ ­H§ZÓj7—ŽÏ¿�¾s¯É—«/HŸó¹£éÉd»¿/c¡8Ð÷“7_“ÖBýŽÓÔž±âÔ …ºQ$F´\Û €BF+ÒÅ©VÄ´ÛPðè‡�­ÕJ¿ê Næøý Õ‚ý~3Õž±âÔ …ºQ$F´\Û €BF+ÒÅ©VÄ´[/àtCM7à¼!ooHïãØ_@Ì�õMéãϘmm ÷¹ {ÃÇýIyû“ Í9wµ××'8Þ\Ë›n¸Û)çÈv~×,ã»íÞýÇ÷}r\ÊSŽÏåû Α~o$FDDL¨=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆi·&¼ BMvöbö¿&{C�èÞsi3dÝ74fÚ8©ýC³mCýSÆÛp\ZÃ휠ñ÷žK tÍõ¦„À¹|?ÀˆˆˆùT{ÆŠSƒêF‘Ñrmƒ ­H§Zsx Ïp ;„0R³ß€Ò UÃçN€ûp�cÓgܦŸ'ëñÆlçhüÌc=óüÝ  ;³9cæ1""báª=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆyS¨ÀáÙ±¾é�mÖW hÓÞ¬Çtþ�ÆwŽ?gIðª~¿ˆˆˆ…©öŒ§-Ô�bÞàO~ß)[[þU~xd�<ðÖw†¬ÇŒgÆÕ·X(Ú02Z‘.Nµ"æM¡P¦¬ÞŒÚÜàÌ%˜Í’Íé3€Ógì¦lpþ�Æ7³o3ï+ª,�ˆˆ˜Oµg¬85h¡nóÿ´åi5È5.­Ÿ'Öÿ£ü ¾D¾ÿÖ\÷³Ñ´ýÀo3}Ò�3îx³z>Ôl”å%[¤UmÃѪm@!£éâT+bŽ^sX^ºÚ¼ã7ØCÞnò¶Ý6Ôæno8.þvz¨ôë8w!upJ»3~µ7FâølçÏi|/NŽaŒä#""æSí+N Z¨żÀÿ¢T p‡ªW;ß lx\ŠÖ5êmC±¡\–7(ûG\à›QÛ €BF+ÒÅ©VÄÄwjmÐêÕ„ÀˆˆˆÀYÕÂÛÀ£W.ïw4˾s?“uM+ääÇMòAǯdÕÛK¥þ¿JS[ƒÛÇô53„Ó�×Îg•À8ŒÚ02Z‘.Nµ"&f7enú;{óàp��ˆˆˆùU{ÆŠSƒêFqD`à l–�ï–ËëŸ¼/[Oÿ«¬øÅ÷äÙ_=é¶ÿÛ{?Q�5jçs=·OJ§M•»Š§•ÊÚ†wëærY»u£ÌðÛ̬ß·ÿY¾ù|¢ÏòŠeRdŽ-ž%3*ü>&D-Û(kKfùã.“�çüóu6fìoݼÀÛ6®6³‹{¤¾bAbÜ)eû²²Î¹–<.kg;}ýà¶e«rM=ÍòT™Þ”kí“¶7ÊCý—ùÀ7�¶A …ŒV¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£8"pç¯'>ïiÝ&ŸôvÈcÇV&ö]ÿÃljϚÚùŒõ«—ÊækþöµFY»®FÚœÏ&”-*«‘Kn¿k²³¬T6_v>§À dÆæü õ²¼\6WÖ3Ÿeù´r9è�Ûql£ÌX²O:Ì8¥>8_ÏRQ¶IZÌçð `çóƒÀ¹¯GZ_zÄWÓœk™ì4×f¶�m’å/�O w—¿Ñ#}—åè9/Ü6¶T-õÆì¬‘ÒEåh§ß¿®\Š€o:mƒ ­H§ZsW{ÆŠSƒêFqDàŽ?¶Ë¦S�Ë;×Þ–Ïü»¼wý]YÙ¸D¬ÿGwÉçž¾nuéç@í|Æž†�2eÚ,)šV*¥U5ÒÒãí7³{Ÿ f톷Óf‡û˜¶¥n[£,wgò&Û®(—úÎ}2ß�iv™Ô˜s¦,}^v–™kš%S–<.O5\K+ÕÔs­fù&-ªhvÚ®ÉÁu¥þL_O÷|ÎyKM@�ø¦Ó6€ �ÑŠtqª11wµg¬85h¡nG$¾ÑÛ)ÝŸ}*G®¼)Ï4W¸ÛÆ'O¬vÛÛ~w%㘰ÚùÂöt~ õ›‘)îLÝAÀ§6J©÷HMY¹Ô_Þ.ó+އö‡ÔÞÜÓ)—NÕÈÚEÁÌbÍÔs™Í;ýÙ¼a;^Z&¥/³•ƒó„¶1:àòðÖ©²¾ÕßÈZ‘.Nµ"&""""æ®öŒ§-Ô�âˆÀCU;ŸY¶yçêÐ’Ì��²j‰~æ/•ÒÄrËiK@—$ÇM.}^ž*Y k3z{¤íZ§÷¹¡\æï÷ƒØ†�¡qûäÒæRYZç}Î45îqÆ™RV#­þLæ¾k—Ý%­/m]êŒáŸëZ£<µd–§/Ýð8K@ß„Ú0ÀÍJ¯ÿ«ýüþ¥GäúKgå `$ÑŠtqª11wµg¬85h¡nG$6Ë;‡—xÖ¶ƒÏšÚùŒ=§¶Hé4Yäi&œõBØÜàeRºz™¿¬ò,ùNU³Ú6ÊòE岪Ä_ŽyZ¹Ô„B浉ýs¥tëÞþk5ÞòÐ%Ûå’»\ó‚ÄrÍEeû²²©°±ekpMα‹6J½ w{œóÎööÝ5m™sL€‚"kœ?¼x‚|üìër£v·´O3Að é ý•�`îÏ–©11wµg¬85h¡nóòûN7þá‘j�U3ŽÏŒ«�o¨ŽlŒ8xm#×øKcwøŸ"pb­ÜqëTy¸¾Mz�ÿ»Rÿ„,ÞtV¤ûU™yëx™¹ë¬^uµTÉg»ì¨9¨M¶Ì'cæí‘3&×í>-•nìÀî±eñ¡`̵2a܃RK 7+Ýg¥îP­T0–cWÍß™Ãþ¶±I®H·4:, G�¸}š�¿WŽÖJƒÓ×üª=Ô$ÇêCc\÷†6ߎ%Æ>âž§¶%õ/“ß#�Î_]—Ã?pg|ØltH×ê`†ð·äÚêŸËgÎÞÏNn��þÚÛ÷ÑìàøÔ 69îYé4¡ò´ŸÈ‚0wÑ÷äš޾ÓOËÇ“ÌXŽ“æû×á³h‚·oö ·/0 ­H§ZsW{ÆŠSƒêF1o0"�¶1œpÃÊñrÇc§ý­$íÛJä–y¯¦Ì\¼²i¶ÜòÀa‘ë/È=·.”Ýá êê³RäÀ_ˆÚÆÉÂCþÀM† rëZ½¥œ{¯ž”Ú'¥Ýl¤Ì6pjx›»¡¯7FWë©®?ë¾!øC 5ÿ1…Co‡g€{åwÉí?üì^÷óõ†KòûÃËüжE:Š¿)W§="Ý¿i‘ÎEßòûG€o/’�V,“ONÿRÚM�¼h·üþ7ïzc9ýº_�ïôù–|ü³–Äy €`°hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÃ÷Ìž©œ**ƒé„>‡”[Š«äLk•L0¿ú»=’ï6Çjÿ€Þ³­Ãï psÑuÑÌê­•Úú&iníHþ‡°7ó7 uph©èÄqrÌŸ-`ŽÑ`Ê~K>úÙYùÂ9ç�Eáýž×~üc7�½VåýO½à Ì=Yž2¶ç¤½ÌûÕ»§´c"¢ýŒ§Z³àÝp\:>ÿBúν&_®¾ }Î玦'õ¾q8Ü×7}š”Ô,•ûŸ¹[¾¼¤Dîw>—¬û–Þ7Í1ëîwúß/wO×Ûóâ®q8Ôž±âÔ …ºQ$F´\Û0p.Ú4xÌ}¯Ê•ëÒ65³¸É蕮뗤ù¨Yú¹¿ÀÃ{ïþd…ùü-io2-Ò9ï›ruR¹ô¸=E¾0ÿÓ±C>º=OpÓ#NŸoÊǯ&¯Éœ£ËÀýˆs×`Z‘.Nµ"&¾&­A¨ê‡­­ÕZ¿¸îë»[¦¡ª¶N_¢õÓ½ý™a€‡x}ˆˆˆùV{ÆŠSƒêF‘ÑrmÄ»¹�Ÿw¯•™–®Œw?+÷Œ ÞÜ-»ç ôàбW�Èú•N_s(ÀM‡·´sÃEoùfé=+uî;†;}ND]Ú_’Ù k�¶gg¸íµu?—?œÞ-O2ýú[:z�ý§ýåœ €åçÞùþz¾|rú’t¯s®ÅiûC°ôK, CG+ÒÅ©VÄD/`uCU7`½!ooðÛü·­Mþ,\× ²7||0C×79;×·ï“ Òú‰\¢ox ¿_à'Ç¥<Ñ–lW¯/á“òvpŽ”ý¹è¬n¨ê¬i�n0×7}ö­{cx}r?þögüþKÂ}Òå®q„Õž±âÔ …ºQ$F´\ÛÖØ¡½~•Lçý#7fÒBY —z[ž•™“Æ{ÿŽ›*‹´¹û]ºOÊz7ôõÚÊê÷$–€6t�¨’™ãý<ÇÍvÚYþnbºÏJÝ¡Zwèjó.ß«~,mrÌÝgáÁÀ�¸çÉ‹|憯Á¬ÜéZí…À&�½¶âu7î;¹A>2Áíí¤­8z�c/“6·ïùx‘9n ØëôÓò±;†³Ò|éƒ €¿%w¿„ª&l-‘ÛÃíÓï–ÛC�« mÃ3p!n¢OÚ9>gú5 p}ˆˆˆ#¬öŒ§-Ô�"0¢åÚF®0Üü˜Ð¸®5˜óCz€ `Z‘.Nµ"&`(¬uÝp\ZSÞÁ›6ƒ7|ƒ¶ Ì5°y�¯ùœ3óXÏÁ¹Ã¥77˜ÁkLpÃÛ®KJBû†z<""¢]jÏXqjÐBÝ(#Z®m.]­G’3~ÍLá´wç`°­H§Z0kž�ë›Ò Ø9þ\ú’Ï6ž}ë›ΪïNôêñˆˆˆö©=cÅ©A u£HŒh¹¶A PÈtË™úäòÒu­yNFZ‘.Nµ"&`Ö8ðÛŸG™|«”7ÝH]RzPe èlÞ-Ó_œ&cÂÛÊ Þû3úË4æx³�ežÑ^µg¬85h¡n €-×6€ �ÑŠtqª11‹Õæý¿Þ²Ìn`kB\;Ú†úô}~CÞnò¶[«CË;›à×?Ö=Î?&�Í{ƒ“c£¹Ã;.) -ß|¿Ü½ÎÛ6!î˜u÷§ìKôI›ñÛßñ¦Ý�œrüR)Y÷­äñˆˆˆ–©=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆ‰§êЈˆˆ«=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆ‰—îòÏÁÌß´e mU{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘Ñrmƒ ­H§ZsW{ÆŠSƒêF‘ÑrmƒÀ^¶×Ö#""""ÞtÚ†V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆi»åM7¤ïó ²WiCDDDiµg¬85h¡n €-×6€ �ÑŠtqª1Gƒ&n­ÖÛGRí+N Z¨E`D˵ `(d´"]œjEÌQaõ`DDD´Bí+N Z¨E`D˵ `(d´"]œjEÌQ!0"""Z¢öŒ§-Ô�bÞàî]R·½F¶¯xJž/«²f3žW;6Êò’-Òª¶áÍ m@!£éâT+bŽŸ”·?ùB:šžTÚGNí+N Z¨żÀÿ¹ã€äÕúkÕó ʆǥh]£Þ6Êeyƒ²DÌ!>·E–o>¯·¡õÚ02Z‘.Nµ"æ¨�Àˆˆˆh‰Ú3Vœ´P7Šy €wþè5À5V?¹C^ß´[^\ý¬üÌégÜýèsî,ßêÊR]±Cöÿd§z¬W;ŸUã0jÀPÈhEº8ÕŠ˜£Âlð†ãÒñùÒwî5½1�jÏXqjÐBÝ(æ-ÖÂÛ@ÃÇ—®Ê…“gäø�9yè¨\üÕY9üÓ×äìñÓnûoZι}·þpcÆñÚù\Ïí“ÒiSå®bÇi¥²¶¡ÇÝߺ¹\ÖnÝ(3ü63ë·ÇíŸ BMŸåˤÈ[¿!ooÐÛó©öŒ§-Ô�âˆÀÝŸÊ{o—Ëï_�_¼ô¦œ¨ý…´6½—X6ºç“®ŒcÂjç3Ö¯^*›¯ùÛ×eíºis>›P¶¨¬F.¹ý®ÉβRÙ|Ùùœ/�›?ðCÕËòrÙ\Y{Ì|n”åÓÊå ?nDZ�2cÉ>é0ãTl”úà|=HEÙ&i1ŸÃ3€�sÌç¾i}é\Ŭp?××Y#¥‹6ÊÑNºr)rƒÝNiihvïß«ó-YZf®Ûùºo÷ûèï>ÐJmƒ ­H§ZÓv½€÷‚ìUÚŒ{Ïñn`DDD9µg¬85h¡nG$þì½òë_þJ>·OÞý�·åÈ‹oÈ{õïÈ[;ÈÖ‡~"¿»ÑíþªkÔÎgìiØ(S¦Í’¢i¥RZU#-=Þ~3{ö©Ð¬ÖÄvJœÚÇ´-uÛ’!làÁåRß¹Oæ3i.“sΔ% ÏËÎ2sM³dÊ’Ç婆k)c¥˜5îçúœs•¾áÍtNãÏìí9µEJgû3{�ÁŒßpœí>c¢MÚ02Z‘.Nµ"æèö5iÍ#"""æ[í+N Z¨Å €ÿû‹ÿN|6Ë?›¿}½ŸÉ¡¯v÷ÉŸ$Ñ®©�/lOçR¿ù™âÎÔd|j£”ªp�Ô”•Kýåí2¿âxhHíÀ=�réT�¬]Ì,VŒ××o|\Ö.13{ƒ¶óòÔj%Îvh¥¶A …ŒV¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£8"pí3/ÉOÿé'îû}_\³Yê¶½&o>ÿªìxø_íéÇ„ÕÎg–EÞ¹:´”qg£¬Zâž¹ÀK¥ô¥óúÐ%Éq“K@Ÿ—§JÈÚÄŒÞi»Öé}n(—ùûýàµachÜ>¹´¹T–ÖyŸ3uÎ5{£ugßöHëþeR”€û¹¾ô% ÷—€6×,åìŒUW.SB3€K+šÝþn0Üß} •ÚÆðÀ‡eá­J­ûùˆ,7Q>ánX�V¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£8"ðPÕÎgt—<žæ/c<Í„š^›[¼LJW/“"w äYò�ªf?lm”å‹ÊeU‰¿”ò´r© …ÌkûçJéÖ¼ý×j¼e•K¶Ë¥¾krpÝÜ©RT¶Ï aû±ukiâ¦8×ó�DÜßõõIÛå¡ñ—É ?èm})Ùƺ-²j…›ÙÁî÷T.õf»¿û@+µ�‘ €`0\9Z+ Wý�<�ïñF;Z‘.Nµ"&""""æ®öŒ§-Ô�bÞàºí5jxëúÃÔm3ØØ_{ØÿÜq@=ßPÍXb9acÆ;€‡®3¦Ø&]ÐÏù=û¿>,4mƒÀn€†­H§ZsW{ÆŠSƒêF1op÷�.7Þ¾â)5È�ªÇŒgÆÕÎ7TG6Ž.0ÚÆÈÀæóTYßênHíãdBe­l™7ÑûGpÜT)«ïöÚëWÉ„qÞ?ŽcŠWHuXµVÉgÌ¡ö±ó^�3~³ôž–Êy“eŒûëx™ðP­\ñ›ºÒƬ½î7X 0ÀðâþLj‘ZsW{ÆŠSƒêF1o0"�¶‘kü¥±;üOQÈßrëly¸¾Mz¥[š+§Ê-ãVIƒilyBîW"•-&î–3»ʘâ*/äuàq2ö¾=rÆiî½Z+ Ç�“{¶u¸}wÏ'cæymÒ}ZÖ;Û+›œ�³²~ÒD/dîuÎw VŽ™ñ,Ƕu'NJ­óg¶Úxô’ówÆçêI© ö8âý¹wqþÞÔö÷×Jí ó÷Ì#%è¤\ :]=÷°óûg\Ký%éòšF-Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚFœ𘇎x.Éö†•ãeBåY¿á¬¬/ž*•��n<[*C3Ϙðø�Ã"×_�{n](»!˜ÃÕg¥È½†KRY¸ÝÒ|¨Vê.:[½g¥îÀaiöÿ¼÷^m’êMîŒ÷ö™ÇÔºÿAE(v�wúûz/:Ç×{ár×Õ6iþuŸ–Z\÷ZêÏú¡o›4¨•c̤€QŽV¤‹S­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹¶gœò&Û½ÙÁ鎗²£N7 èð{…°i f '�÷j­”Íñ–œ¾ÃÌ ö:XMÊŒ]‡ÞÖ#^¸ëÿšÄ z®vȱP0ìbÂáC^p›ï¢s|b–o ôÊõÓR猕¾?õZ‚óù›£”ÌŸ?ãU+b""""bîjÏXqjÐBÝ(#Z®m˜8G2vg?vRÚ¯w¤Øe¦&f €³ÎÑ}ZÖËFØÍpÀîñõ—¼ö‚qü©Ái3€ €àfC+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´\Û0án.Œd,'ÖÊÎgïýÀ½ÒÕ²GÊkò–�ÍKæ;€+çŒ÷ÞÜ}XÖ¬¬•æî^‘Þ6Ù2‡F&tM_Î9K@×ʱ èuþ^\q?{r°´s— Š €à&F+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´\Û°2v¸r`…Lçýã8fÒB©lñCª¬°Cïi©œ7YƸÿ°Ž— ÕzKÚJ‡Ô=V"cýpÇÎ{�% aT`B׺'¥6XŽù¨÷ž^—«'Ý×[¦ùˆ÷>¸tË™úÃþþZ©=„Á©!noÚñÍÁû|�ýÁùjO49}œ±�€àf$\œ³A­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹¶‘k p3¢éâT+bZí†ãÒñùÒwî5ùrõés>w4=©÷ýsú¼Ã}ýÓ§IIÍR¹ÿ™»åËKJä~çsɺoé}Ó³î~§ÿýr÷t½=/áúmU{ÆŠSƒêF‘Ñrmƒ ­H§ZÓn_“Ö 4õÃÔÖj­_ÿî=wAö*û#Y}a�ÁíЯ?»wËô TõÃÖéK´~º·?3Ìð¯ÑFµg¬85h¡n €-×6€ �ÑŠtqª1íÖ PÝÐÔ PoÈÛRûì=çÍÐu=wAZ?9.å¡cm¾É6h�ÌøMŒ‘ܯÀiçH?.‡ëÿòן”·?1Ç&¨öV7TuÖ´@7˜�ë›>ûÖ €½1¼>¹û3~ÿ%á>é�òׇˆˆ8 Õž±âÔ …ºQ$F´\Û €BF+ÒÅ©VÄ´[Ž¡© SÓBÒ´`¶¼éFF›uð†ãÒšìªýû €÷žK tM€œrþ®?Ñg°ð·äîƒPÕ„­%r{¸}úÝr{(p5¡mxn"ÄMôI#§ãÃçL¿†®qª=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆ9º ÂÓÀÌu % SÚ•@ØU €Ófÿf¹†øôfà3x�énxÛuIIhßP�GDD¼ùÔž±âÔ …ºQ$F´\Û €BF+ÒÅ©Vļ©4Ë,G™l …¾ýöUà'åíséK>Ûdxö­oZ8«¾8Ñg¨Ç#""ÞœjÏXqjÐBÝ(#Z®m@!£éâT+bŽf3–`6ð¹×úïcÚû›%Üßì_c?K@›%§µýÑÊÐÙ¼[¦¿8MÆ„·•¼÷gô –iÌñf_ÄežÝßçþÓ~ßmU{ÆŠSƒêF‘Ñrmƒ ­H§Zs4»÷\xéå~BÔ `ì¯=Ñ'½-}yi}Œœ®!«Ã;.) -ß|¿Ü½ÎÛ6!î˜u÷§ìKôI›ñÛßñ¦Ý�œrüR)Y÷­äñ9è¾·ùó´ Ñbµg¬85h¡n €-×6€ �ÑŠtqª1Ñ1Ûì_ìWu 舚}賨GNí+N Z¨E`D˵ `(d´"]œjEÌBÖ›}šœ½ÛZ­÷ÃLÝ埃™¿iË@çîkÒ:3Ÿ‡Qí+N Z¨E`D˵ `(d´"]œjELDDDDÌ]í+N Z¨E`D˵ `(d´"]œjELDDDDÌ]í+N Z¨E`D˵ `(d´"]œjELDDDDÌ]í+N Z¨E`D˵ `(d´"]œjELDDDDÌ]í+N Z¨E`D˵ `{Ù^[�ˆˆˆˆxÓiZ‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�"0¢åÚ02Z‘.Nµ"&""""æ®öŒ§-Ô�bÞà^g°öÝ»åJy¹ü×#� Y3ŽÏŒ«�±P´ `(d´"]œjELDDDDÌ]í+N Z¨żÀí{ö$ÜU«<ÃÛ?úQò³ùÕl§¶CŸ¯¿ü²z¾›ÓFY^²EZÕ6ÏÖÍåòÔ9½ oNmƒ ­H§ZÓj7—ŽÏ¿�¾s¯É—«/HŸó¹£éÉd»¿/cšåM7²¶›]¾L|7äí J;"""æMí+N Z¨żÀW{Ì oó¬W;ß lx\ŠÖ5êmC±¡\–7(û#›§8o׃6hÀPÈhEº8ÕŠ˜vûš´¡©¦¶V+ýª/ÄðhŽ×?T­½DDÄ›Oí+N Z¨żÀáжï£�ä³+WÜÏm?ù‰»ýi]�´oÛ&¿;yÒÝÿÉë¯ËçíírmÓ&éþÅ/Ü>ŸwtÈ•µkå�çιŸã)ç³J`Fmƒ ­H§ZÓn½Õ MݵŸ®ý ‰™±ÊÌ[¿­µÉŸ¥ëzAö†ûøçÆèû且§´ß*{Ï…ÚÏ]�Ö”>¹\ÿ“òö'æøôsG�qÄÔž±âÔ …ºQ–X¾øB>zî9ùì¿þKÚªªäOŸ}&W7l�Jïo~ãöùÃéÓò»wß•+�>*¿]¿^þ»§G:^~Ù]Úÿñ–-‰ñ´ó¹žÛ'¥Ó¦Ê]ÅŽÓJemC�»ß„¤k·n”~›™õÛãöß"Ë7ŸOôY^±LŠÌ±Å³dF…ßÇ„°eemÉ,Üe²3\;3ö·n^àmW›ÙÅ=R_± 1}Yݶ7ÊC×ð¸ÌOÀÈæ²à\ Rî-çt=}ÒÑú.¸´OÛ €BF+ÒÅ©VÄ´[Ž¡© Sû I @³Ä¡1Óúí=—Øšþá€7­¿Yj:5$Îåú €G“Ú3Vœ´P7ŠÃÑÕ%ÿµzµüé�tÃÝ?9í7’޽{ÝÙ½¦Owc£Û¯}ûvwÛÌ6¡±ùüßÝÝÒ×Ö–O;Ÿ±~õRÙ|Íß¾Ö(k×ÕH›óÙ„ Ee5rÉíwMv–•ÊæËÎç”x�ÌØü�ú^–—ËæÊÚcæs£,ŸV.ýq;Žm”KöI‡§b£Ôçëù@*Ê6I‹ùžqëœc~8÷õHëK�øã*vÖHé¢�r´ÓÛn«+—"?>ZU.;Ïy¡¯¹‡šÕåRÓ€s¼žkûdmE£û½˜íž÷7IiÕ^Ž mƒ ­H§Zsx ÂÍt‡vj€ö×îìOY’yÃqiMôK›ý«^{úýåù¾r•qÄÔž±âÔ …ºQžÀ×wî”?¶¶ÊµýW‘Ï?—«O>)7jkÝ ÷·�?.¿ÿÕ¯ä÷ÍÍòÛuëÜcþûw¿“�úÓÄñÁg£v>cOÃF™2m–M+•Òªiéñö§/“œØN›œ²”²Ó¶Ômk”åþÌÙÀƒ+Ê¥¾sŸÌfÖ&\憲©K.Ÿ—�eæšfÉ”%�ËS ×RÆJÑ9®ô� ä5K@—µÁÌæ„³dí©Ðuçx=/-MëãXvШq4hÀPÈhEº8ÕŠ˜7…Ã?)oŸË\ò9«f™ge™èa—qÄÔž±âÔ …ºQ–ø�çÏ»šÏ&ø5Ÿ?=|X®VVJáðÇ[·ºËA3€wê”û>`óù÷--Òwõjb<í|a{:?�úÍ�Èw¦î àS¥T €{¤¦¬\ê/o—ùÇCûC¦À¾=�réT�¬]Ì,Vì7v~õï%¥¿câºs¼žK[—ö~Ú02Z‘.Nµ"æMá°ÀÞ’ÎÙÆÍX"ÚÀç^Ké3°,�ˆˆ8šÔž±âÔ …ºQ–8áªUúþˆjç3Ë6ï\Z¹³QV-ñ–OÎ-^*¥/�×—€.IŽ›\ú¼™çŒ;o·üÑß�7åcs]eoúÛP(¤èâV+bâM`b6sÚ’Ôˆˆˆ˜wµg¬85h¡nóvã†_)/WƒÜ¨šqÌx½ÎEjçª##^Û±¸û´ìXY"wŒóÿÑ7Yfn;ëum­’ f_ñ*©\9UƸÿ(N”…ûÚ¼vg¬-ó&zÇ�_([*{Ÿ8ì´–…nÿ¥Öï›óy¥[êç›,e›Vù×Q%gÜö^iÞµX&øÇŽ™äœ»Õm1n®x‚|üìër£v·´O3Að é þšÇ0@¡âþ¬h‘ZsW{ÆŠSƒêF1o0"�¶‘kü¥±;üO¹’>øˆ,7^ÆŽŸè8Þÿ‡o²¬iqš‚ØÕ鄵·.”ÝÝ" +ƒþæøà³c.p–ó¶ï*ñ·Çɘð¸~ܵoafû¸UÒ`†í‡7nøŸRéo?À@¤ÀWOKÝ�Z©v=,Ç®z»¯­•º'¥6h«¿$]^“tµñû×Jm½ùÜ$Wœýæ˜ÿxóC4Jn_iIS}è¤Ûߥûlòü‡Ž¸ŸƒcÌy’ç?-íÞî^|�tÿýÅá¸3�?6�¥CºV3„¿%×Vÿ\>sö~vrƒ|ô×Þ¾�fǧµÉqÏJ§ •§ýDþ„¹‹¾'×üsô�~Z>ždÆrœ4ß¿ç˜E¼}³g¸} € �ÄÏ‚–¨11wµg¬85h¡n €-×6F.n“j3× b'ú³ný¶Dì¾^hk¶§ÊúÖ`œÉòð Ó&rlÍd÷ØÜàþÏ[û€÷yæ>/\K¾nÜ![æ˜öñ2÷€×~l¥7 9èŸÎöíÛåßøFFØköÿ¯ÿõ¿ü-€h„஫mÒüñë>-µ¡0·ºþ¬ú¶IÃ�Z9v=èsXšýc¼0x ¸[®\íHÈÎù«�šiº^ŸDí‡Áî1×OJõ¡Ó©Çœèð·ždúõ·tô:ûOûË9ËϽóýõ|ùäô%é^ç\‹Óö‡` è—X � ~N´E­ˆ‰ˆˆˆˆ¹«=cÅ©A u£HŒh¹¶1R°t‘2?¨S¼Jû³ks €�MÎ. ÞÅëÀ"]'ž�"?ܽcå³R–ëyM vô’yn×®oÜâgåCwO¯4ïZ,‚àxÜlY| 4›r.]ºä<)K@_=™Xš¹öD“Ô™ÐÕùœm9g/ôõ�©OÀÒmfôzû«9cÕ'�¹râ°ÌaçïˆsLýYïï‰úzÇIÀæ<‰e£�LÌ H €E>sÃ×`Vn‡t­öB`È^[ñº ÷�Ü ™àöö ÒV½Î±‡—I›Ûw‚|¼È7PìŒuúiùØÃÙ?i¾tž4ç½*7Ê&xûŠçËG“R�€ÂÀýyÏ"µ"&""""æ®öŒ§-Ô�"0¢åÚF®p¬Ô¯ðf隥˜³xÇKÙQ¿}°\}VŠ‚qCK@ß³-÷�`Tá.ïÌî*^ÐÌHnÒd€|ü,h‹ZsW{ÆŠSƒêF‘Ñrmc4À½k¥lÎd©æq2fR‰¬©Ïþ¾Ñœ¸Þ$•÷ÍNŒkføÎÝu:1#`ôÓ& ‡‚÷ùöº3…«ë?3ýÊÑüƒ¸÷j“˜eŸ½ÙòÃ0 á✠jELDDDDÌ]í+N Z¨E`D˵�Q1MohÙèêú“Þòσ¥·MŽòÇ:pDŽ%–�½hEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ÕŠ˜èø÷›eråëžÿ´Tˆˆè¨=cÅ©A u£HŒh¹¶A …ŒV¤‹S­ˆYðNx\¾ýèãòçþöŸ/Ú-wþ}ZDDDD_í+N Z¨E`D˵ `(d´"]œjEÌB÷Ïm–¿šÞ·Tîd0"""ö£öŒ§-Ô�"0¢åÚ02Z‘.Nµ"f¡«À¡Áˆˆˆˆaµg¬85h¡n €-×6€ �ÑŠtqª1 ]`DDDŒ¢öŒ§-Ô�"0¢åÚ0d¥µJ&¶>+Eþ9£Ín’²ñSåá£Þ’нW�ÈÃÅ¥ì¨Ù2÷8mÉÙŸæý·n¸™/Iåô´°´ûU™Ì6Mà\äÔ% V–¸!凛f'HÌzc¦ÀÊyæ¼ íþf‚”8yï N¬•™›.yŸÝ1VIÙœ¥:‘YG€µå¦[ž� +›œʹC¤ÉaBçw¾ç{:âîõH¶uí[(÷lK}qðe�œNâNÊÃÅ~ø�ø30À÷p¢éâT+b""""bîjÏXqjÐBÝ(#Z®mŒ2ÜÙšåžmfF¬·$s°´k"8L“‰ð/‰™A솵‰ãÒ–EL̦ È ƒkI]¶9Лœ5î/`M€3Æ'cלôÛEŽ­œ(cW&·£À©áµÁ9§ûÝôs}>áq®X‘\Ú5§þ$¯-ñ{"§¸û¤¬O,íé}_Êõ&Î?ð÷p³‘þì·ZsW{ÆŠSƒêF‘ÑrmƒÀfNËŽÇg¼ÿ6ùÌÌPó^×+‰­É`o¨°:xÞZ9æ¶f#3\ ®åÃMi³’Cd €s�œF‡pîãž^�-”Heâ{‰y°é?ïiîæo‡ÎŸñ{j;°8c©íd¼8y�†Äï—™]íüÖ·%¿“Ä=8cÏIû½Lœ€ïà&D+ÒÅ©VÄDDDDÄÜÕž±âÔ …ºQ$F´\Û °™n©}`²ÜS y»ÏJµÙ·©Í]RùžMþrнmrlÛB3È8×wïæuèj=,Õ'RƒI- M\‹yðôµ‰wàºK[8é†�©pŽï>ºJ&„fôºï¼Ýå¿óÖ}Wn­s.óÙžþÒÏݵ²pNp}²eN‰ìH¿Ÿ”8xp}ðå´wçzPîxèˆdwË™CÎõç0Ø Àïi?š|°ù�cúßÕ-A`?½D*/zÇô^=)[Bïùm~l²óÙÏo若w÷÷=ÜœhEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀ¶Ó&Õ+K’Ë<�›,3+›üñ¬l™71´¿JæN\¼på³RV<Þk¶¬ ‚Ý”ã¼%§Çú.cç9¶Ù †MèÛ÷É%×ßî½Wz¯½'¿¿ô élzF.ïø;çÈ?¹ËB €Ïí“ÒiSå®bÇi¥²¶¡ÇÝoε[7Ê ¿Í̈íqûo‘å›Ï'ú,¯X&EæØâY2£ÂïcÂ˲�²¶d–?î2Ù„¥��û[7/ð¶�«ÍÌÛ©¯X�wJÙ¾,!gÿçê9µ%to ÷fîaéŠ�^ÛêjyªÄïãè†Ð¡{l«{<ñ„ÇΟwÆL ”ƒ€¹ÿïÌ9×å¡ý�Ë|?Öïùo·¯q�-Èæ²à{Ý/ºl‚ ­H§ZsW{ÆŠSƒêFqXà?õýAþð_MòÑ,“¶ýßs.óOòYÇy7ì5í]-{]ÍçÏÚÏÈLJIûy×oåóOÿKþôùû´óëW/•Í×üík�²v]�´9ŸM([TV#—Ü~×dgY©l¾ì|N €ÈŒÍøæey¹l®¬=f>7ÊòiårзãØF™±dŸt˜q*6J}p¾ž¤¢l“´˜ÏáÀÎ9æ�s_�´¾ôˆ?®fçê“K Ç¥µ'èçœkÉF9j>;ãÏ(q>wmi3€÷Ø)- Íî÷áîï|K––yc>îç;묑ÒEÉkj«+—"?î÷>Òf­*—�ç‚Ð÷šÔ8ç¬IWØÚ02Z‘.Nµ"¦Ý>)oò…ô}þ…t4=©´#"""ެÚ3Vœ´P7ŠÃ3øO_ÈÕWºŸ¯Õ–¹áoÇÛ?qÃ^³¯çÜAWóù³ö_»m¿Ùþ·îöÖíǹÀ= eÊ´YR4­TJ«j¤Å ÓÎÄvJœ‚:mKݶFYîÎäM¶\Q.õ�ûd~bÖjà2/¤LYú¼ì,3×4K¦,y\žj¸–2VªýœË|¾ö–¬Zäψuõ÷‡î!P€ýÙ·³Ccø¡ìàà~¾3çþKßÏØuî+Xº¿ûH €�ËÚ`–pÂY²öT0^akÀPÈhEº8ÕŠ˜£Âê Àˆˆˆh…Ú3Vœ´P7ŠÃñûëþç‰r­öAw6pÛkß“Þ�ZÜýÝïW»šÏ¿;XþûŸ8Çt¸ïþíûä¢û.àÏ»¯úc üàžÎ¤~ó#2ÅŸ=;¨øÔF)Uà©)+—úËÛe~ÅñÐþ�Ú;€{:åÒ©Y»(˜Y¬ÙϹú:egÙ2Ùù~2TM„¼9ÀÇeí3c9#¸æ-¾³~à,÷‘;ýýß»ähÀPÈhEº8ÕŠ˜£B`DDD´Dí+N Z¨Åa €ó­v>³ñÎÕ¡%™;eÕ=àÔà¥RúÒy} è’ä¸Ée™M0jÞMÌèí‘¶k�Þç†r™¿ß96†Æí“K›Kei�÷9ÓþÎuY6/yDK*7l‘ùÓ²ÀKåå`¹äD»Û_¢Ú,E]W.SršlÆ3ß…w?=çj¤Ô?w¿ßYúÐ �ûK@g¹ó}–m”îç÷œ¥û“ß[Ûål3§ KÛ €BF+ÒÅ©VÄ#""¢%jÏXqjÐBÝ(ŽâØ_â8X:xš g½Ð2·x™”®^&EþrÃß©jöÃÇFY¾¨\V•øËO+—šPȼ6±®”nýÀÛ­Æ[ºd»\ê»&×-ðÇ�*EeûüY®šýŸË]Þ:1ÆYk‚TsŒ·í_êö›±õrê=¾”¼¿ë¶Èª¹À}ç¶Ëwüïµhv¹”:×èÀý}gÎ5¼Qºçe2Ûû½Ç£Þ}{³§?�ÍeÁRÑÎØ�Ìöµ `(d´"]œjEÌQ!0"""Z¢öŒ§-Ô�bÞà�ßú±ÞÕ�ßZ§žo¨ö‚6f¼—wè:cú!hÒÎù‡ã\¹[¿:ýš¦ÊŒ´p9ì€Á1‹¶A …ŒV¤‹S­ˆ9*$FDDDKÔž±âÔ …ºQÌ[üYÏu7¾üB±äFÕŒcÆëí¾®žo¨ŽlÜŸñÀQ%ŽGÛ €BF+ÒÅ©VÄf €7—ŽÏ¿�¾s¯é툈ˆˆyT{ÆŠSƒêF1o0"�¶A …ŒV¤‹S­ˆ9*Ì—7Ý�¾ÏoÈÛ2Ûó­öŒ§-Ô�"0¢åÚ02Z‘.Nµ"æ¨0K¼÷Ü,�ˆˆˆ#¦öŒ§-Ô�"0¢åÚ0€½l¯­GDDDD¼é´ ­H§ZÓnŸ”·?ùBú>ï/ä}MZ?¿ {3ö#"""�Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ÕŠ˜ˆˆˆˆ˜»Ú3Vœ´P7ŠÀˆ–kÀPÈhEº8ýÿ³÷·ßr”÷�ÿ;Àyð[ë<;ë¬óÀgÂJÎ(³ñ‹Øf9B¶ËbiÀ²D@á> H�,ƒ2ò@lcbîlÀFè'¼a¶ ÐYfs§!Gähmi„[B²„ HP€ä{ê[7ÝUÕß®®Ú»{_×µ÷û“õŠ÷®ªî]ׇª¶1PŸuŽå’Æ*u› <ç[(€ !„B!„LåXƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„B!„B¦r¬A:—¬ALÔg�c¹¤±JÝ&(€Ïù `B!„B!S9Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kõYçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆ €ú¬s,—4V©Û0à9ßBL!„B!d*ǤsÉÄôÚ­/É‘O>•�wÉg6î‘�£Ÿ�ŒÜfÏë£t�ƒ[ïC2úÉYoNsh¢>­÷ñ]Ùv«10¥XçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆé7-ÓR/-ûF7ZóynãžÀ àÁY¿{<Åò}>xÿ9Ö9–K«Ôm‚ðœo¡&„B!„2•c Ò¹d bú-)øâR/.øÊW`&Ó³«l?~ç%YmLk?¿tgë±D»äKŸûÎ}G§í‘õ­y“Ârýný9ZÖÆü2º\!Úµ@¬Zÿju^?™'Ý®ÖU¬ÅÂ5›§÷4ëêÚÞë¿zäÝÂôm»³u,=7U.p ë°[ß�Î÷¸ûçCÝ&Û²÷°ðxÀ€ëË%�Uê6A xηø]o’%Ó¯�áô7B!„B!¤ß±é\²1ý¦å]¾0,”¥ÂOKÎŽ‚°X8 Æ[‡d}îùZ6¶§—ËÅôµ£×ÈæIÊÉü:u®c¬K�Ø{ý«Õzý¬¸Î–ý¾-·þ…õÒy»½~4m´´ ½Ö?.õöÌùé%µ±¿2¥ý/¯°~ÕŸ�ö<À€þ±Î±\ÒX¥nÀ€ç|‹‹øµ‡¯“v¤¿T†˜�±çxú¿„B!„�ªXƒt.Yƒ˜ƒ••oeã(ãZ’‚¶÷²u¾wåH«(,O+>¿PçJÓ#Y‘¹±X·çOå¦çë,ë®wµ^ß(nÑëçËÙÔê‘=Æ~Št,§×úGïýî.erNõ- ËŸŸ~|nÆ€�c�c¹¤±JÝ&(€Ïùððò²äéô—ÊPÒ5o�ÈÆ§_—£é¯Å“�›‡å™½”À„B!„ôŠ5Hç’5ˆ®zc\Þ~òi\ËR-;¯`mÏS§6Jår›>ÖY Ö\ÿ µ^`p¯õ¯·}�¾X߇nW(’ùþ¦*ëË%�Uê6A xηÔ-€ÿ݉¤?5ȱ-råÜYÉAnÆÙrÉÓGâò7à[ò´–¼ eÝ[és¢ݰDNXü˜-ÀÇwü@ÌJŸ;k‰¬yåX:…�)˜Ê˜B!„R7ùGõ�5ˆ2½%pe1·Qo9œ»"õ�Ò÷üÊÄäŠÖfð§·l6 Í.bÏõï¡Öëw-€uÞr�\QÚËéµþ�Ó“÷ _PÖA÷sî*ߎõË¿µ%¯9®«‡)€9Ö9–K«Ôm‚ðœod¼sÝYrâõ[䨗£;†eã+Éãå+€õ÷/~ï@úÛ1ùéâ²`ƒ–»¹øØc²`úrÉÓ¢¥—}›o’ÓfDÓè€Édϱ]òÌÓÑßÏj“¼ø–DO›ÒßÕˆì‹þn^{z“<ÿë-ñ<¯Eû~=,ÏëXqìu~zD^Üœ[ÆÛÉ¢EÈ‹­eo‰_gxT„B!djŤsÉÄ ]\‚¶nœ+úâò7y,.ãr1ù½Uæå承›v$ù}tcRÇ�ká˜>7~^ú]f\P¦ÏÉ´‹Â¬x,+‘]׿†±¼~¾|ÍJïîÓsŒXõZÿòôŽåçÞ—~î›6 `@YçX.i¬R· `Às¾e�ðß;[N˜{“<óVñ6´·€Þ|�L›ÿÙ§?ÇEïùiÜAµ àÃ÷-’–oÒ[©+iBÂ�¹ÏŒ&CÇßÚ.ÃOl—ÃúKá `-€‹åm¡ŽKßdGG·ÈÆÍ»âo~CKá_ëTåø‘¸ ¦&„B!S-Ö �KÖ &Æ®ó Ú‰5¡¯?•KP `@ŽuŽå’Æ*u› <ç[´®cL·€–²ñúEr¢äμDMí,n·È%3ÉÝzUâÓWäŠÞv¼sÝÙæ�ó+÷If%d’æè^½ªwX†7�Èk£GÚ·|î(€“+³¯ÎÝ*ºõ¼#òbzµp}0!„B™j±þ]Ó%kcS¸:ÕÁ÷ÒþõKW;ØFo´®w[øü`�c¹¤±JÝ&(€Ïù-wëdlp–còÚ-gË çþ8¾rѺr÷ùëgÉWî;PšV¼xÚÒÇdßÛGäp]™9.Gß~S^ûµÞú¹ÛÀÀ„B!„Œ%Ö �KÖ &ê³Î±\ÒX¥nÀ€ç|Ëà àc2|Ë�²qDZä;{õιø”ë·Èá½»d_Ö5ýúF™6‰,ÐïõMêüàY²àá]q‘uô­-²æúŸÉN�FȤMrkçç÷¦·Q?¾Kž‰¿ó7ʸ àhžW¸4!„B!Ö �KÖ &|ÔùݼEãø>[0.Ö9–K«Ôm‚ðœoäÀ‡7¯•¯ÌJr³–ÈÝé- å•µrŠ>6c¡¬Ù‘>&Ûe…Î[øžß\åè+wÈ‚lyÑs¯ÜÌíŸÉȱ]òÌÓÃñm 7êwù¶¾Sû€¼?¦…ðØ àx­eo‰_‡˜B!„Lµäç|` b >ëË%�Uê6A 4ôÁ˜�Šo©[>Çä§‹;o M™¸hiüÌhV0B!„25b Ò¹d b >ëË%�Uê6A 4 å﫯¾*‡2§‚oq_�×^ySÞØ|£œ6ã:y&}”2øÝÒ¾âW¯.}'0!„B!S!Ö �KÖ &ê³Î±\ÒX¥n},€%×ÎýºüÝîÒã»ï–¯.º[FÓß<ó·rþ9gËæFι@.úöS2ú¾Nû_òw‹ÒÇó²ç>¿º4íkòå+ï–Wâç&ÞÿŸwË_,üZkúù×Ý-›¶§ý åïD–À¾Åyüö°,‰oë|†\ò4Í!›c²ssûöÒÏŒò7H!„B¦^¬A:—¬ALÔg�c¹¤±JÝ&&¶þ§ïÉ—£y¾ýOïÇÓÞÿ§_É·o¾_^‰çM àkŸÏ=7O à\‘üñûeóÍ_“/\ºAÄ¿?%1÷krù/ÆÓß?øš÷¯’’W_gî_ȹâd¢J`ßBL!„B!d*ǤsÉÄ@}Ö9–K«Ômbb àƒ䢹gË¿ñyô&Wê¶�³þø%¹Io-½ð¯åïžÿ_ò~a> ÿ²ø�7Þ0§÷‹o¡&„B!„2•c Ò¹d b >ëË%�Uê61áßüñož“¿‘~Oï9_—ŸÉŠ`û;€[…pGü¾ìøá×Û·€V¿IþîÊ ä‹ñs¿&ñÃ×(‚1Uþ*ßBL 5~ø¡8xPÞ �®÷|�nI1!oW•ªmÖLÖíî7öc3Uûk*î+öG}¾ï+ÞËþ`?ÖWµ¯&C¬A:—¬ALÔg�c¹¤±JÝ&_ÿÏïÈ;®Ü�¼ÿ¿dó·ÿB¾0÷ùö?écI|ùÏ/G~ßÖ*pµ.•Ã_XøÙüûtzÁAyå‘¿Ž‹à¿øEò}Ã@¿Ldù«| 0!$Ôè@ä‡}$òIpt½uý­„¼]Uª¶Y3Y·»ßØ�ÍTí¯©¸¯Øõù¾¯x/ûƒýX_Õ¾š ±é\²1‘’ÑO>•##·ÓÖ9–K«Ôm¢�ðkrÓ9_“K·p~ÿç—Ë®|*)ró…nìÉß-Ì®ò­q è…ß‘_ÇÅðûòæ#—˯{®½¼÷£ÇóóGžºîlùêÿWá1`<Þ}÷Ý -•o¡&Äã¼õùâô%òÓcéïiŽnX"'Ìÿ�ìK·2¼|†,yZ:.Gß>ý#£wÈisï��é¯cN¿–Ó0z5Š5@ ]+¡oW•nÛ¬™ÌÛÝoìÇfºí¯©º¯Øõù¾¯x/ûƒýX_·}5b Ò¹d b"µqå/èÉ:ÇrIc•ºMô±þXFïùº|᜿’Gw'Wݾÿ?ï—‹Îùš\û|ò»²_¼ònÙ|0ùýÀóß‘¯Îý ùáA}~Óï~MnZø5¹éÅä÷Ñ;.�/,ü[yêŸÒ×Þ½AþÂ(¤�ñÒ+€­ÇÅ·PâsȺù3dÁ†||L~ºx†|ñ{Òßí´ à½I‰üÀÛÉã…LÆxë·â“ªk·þVî]�`­ÜÖ9OÉæ•Ñ| –7�iãÒc] 8�a»Ô›^�žh~K6ÓÇ¢r™cÜfMÇv‡²ÍƒàÁ~¬+Ù7MöË6¹¶Ÿû±ÆöuÛ_½¯&Äì�A3ýwÖñYíç¾RƒØ_=Ö±ë7ƒ{Ïô8¡ËM|ùÁßóU®‹ƒý8¶cc³m®2æ÷fŒûj2$Û÷¾°1‘¢5XçX.i¬R·‰¾Àú½¼¯üð¯äË礷h>ç/rßñ«~#O}ûòÂô›žÿ}:Íþà/Ì]-›uzGü±¼=öÅ…ß‘Wâß/¿¾ç¯åüÖ²/�¿¸çÿך•o¡&ÄïìûÞB9añcr4ý]Ž=& ¦/’»­B7—öÀ™Œðo–/ǃ�ÉÀe½ÔhÞ•(€{¬K£ç1mWÛæ• €k0—9ÆmÖtlw(Û<íÇ:&l¿Xjl_·ý51ûj›\Û‡¢­¶ ÙÑïƒ8f¦ùy*,»ŸûJ bõXÇþ¬ßøõý=Ûú-¹v«ñx æº8Ú��öË8¶¹Š½Ç¥1î«Ék�Î%k) `PƒuŽå’Æ*u›ès  ß| 0!žçíËWr·�Žoÿ|î�åpüÛ.y`éÙ2-=‘8qñ�[%l»Þ$K¦_!Ãñ£";ï["'ÆóÏ’Ó/’;Š[½êx–\²9ýU^—Ugž!W¾½öæµò•Yé‰ËŒ³åÊÍéJå ৯�–oŠÖì\wvû÷c[äÊhÙÙó/y"»Šy—ܽø¬t;¢õº~KRxë²fÜ(ÏÇótƘÕAÍôJ+½êª0˜š^Õ+\�õÛdp>7½Î󲫺6·®²)=¯j]"�œÇ´]mÝÄ“ç}ùÁmñ@oûJŸèõ²eN¿@îýM鹑®ƒÊcØfMçv‡²Í]Äëx�\»2û|´—Y¸2,[§Âv¸Þ�ÉÀ²ÎÙ~Ém{n?êþËöK¯íêzEZžJT½7ÕûJuÛ_ýØW•ÛœßO™ôóÖýyé¾_xAòX¼õ¹év×ÙWß=Ž™]߯Ÿ«”ùwÖí³Úktù¬&Óû¹¯TÓý•ß¹eÄódëY½ŽýY?•­Kº>>l¬Sy]Ûìcc·çUtݲýK×¹÷q3{~—u™ˆýXõyˆKû±Û6w"—Î’Ó¾÷fü›YïX+§L?[ÖìÐo>.oÜ·D¦WîÆ%sVÚêsÎ\+¯E¯½só°<¿7ù6áãÑã§eË­Uˆ¶ã YòÄ�è•£ç¿õ˜\0cQrkj}ι?N¾Óøí-rÉ™³äÊ_ë/ÇäðÛùÛ_cÌVغ­0Û¾ª%Œn œêï¹ÁÙ^Ïk œ–ž×C³ç ]ׯ­s@\ÝÛ�ŃÏݶ¿4oÆd¯V5pÜh»Ùæx€>û|è {n�½¸¬èõ\!8Qû1)Òý­ÿµñôâ¾)”‘:ÛeíÇîûªÞ{S¥Ûþê×¾ªÞæh}sï{^÷çµ·Q?§ñkµöõ窎ñï}Oºýýô~¿ìÏU{ºõù¨ÚÿÝ÷GõgµŽ¾|vªö—±ýæc]ôgý’ÏY»èÓýVÿýLž_~lœŸƒè=.�ªúoÍš§žþìǪÏ[4­õþ[¿GºlóØ�=Ö<™èõ72ÝöÕdˆ5Hç’5ˆ‰W€¬s,—4V©Û0à9ßBLˆÿ‰ Y½ t|ûçöÕÀZªn¼zaë `uÚº]ñ«>|ß"9aiv-p”n·nŽ_'yÎk·œÕú¾á£¯Ü! ÎL¯à�5(€ãe¶×3¯ãèÏä+3fÈ´3É·ü¸U2÷JÓn8Í¿v{UªK¤ùÁè±>¯‡þ 8Gº®_[ÇpÇ@sn0ÚÚ†Žùû;È®i´Ý�ló›~+W€ç‹Ë²î»™¨ýX\ÿTÇ~)þÔÙ.k?vÝW5ß›*ÝöW¿öUõ6w/Zº?¯ýœÖ<¹ýPõ¹ªcüû#zÍnǾï—ù¹Ê±>Uû¿ëþèñY­£/Ÿ�ªý•½×ÑïzU¦®o¯ý“ןõëþ­ó~ªŽ÷l¼Ÿã5Tõßš5O=}Ù�UŸ·hZþó›ÈäÉ<Ö6—Ÿ[ÿØcÍ“©xÏ{趯&CòûÙÖ &RÀ ëË%�Uê6A xηP@ÒBö§§Epúp\ ϽC^K a-}{À¹r¶ê»{Ÿ¹z–,Ø0"«Î̾oXo=«uoüÜ&péVÖ�9&‡wŒÈë.‘S¦gWW§ñwþê£Âàt�Áùªç•[­Aï.ú2à\¹~mÀÍÑr‚)€ÃÙæª¢®¸,{ྛ‰Ú�fAÓ±_Š?u¶ËÚ�]÷UÍ÷¦J·ýÕ¯}U½ÍÑs)€ ïWeñéü|Tïÿ®û£ÇgµŽñï+U±¿²õ�×5yß­¿�nú³~Ý?£uÞOÕ±Îãý¯¡ºÿÍt›§ž¾ìǪϛµ?ÊÌm®þì�}T¼ç=tÛW“!Ö �KÖ &RÀ ëË%�Uê6A xηPB’[?ëÉBRê&‰ ÝÅ?Knýöˆ\9·ºNJÛÞ·€ŽóëeÚ™gÉ)­Â9ZþŒ³äÊWrϵ `}Þ¬åùx¶òÓ¥³ÒBX¿[x†œxõ–d}£iÏ<±%¾í³^eºùF9%{îÕWȧ§W®$Þ%dë4ã¬h�¶¯~{‹\9?»…ô²`Ýö´\Öí8+½•µ.{8ù>`½šxÖMòbWÕg]÷�ÏNågµ†~|vjí¯l�¢Ÿ ÓzèÇú%JïMþóÔõý¬~Ïúö9È¿_c9¾dϭЯýX÷ؘMo—ÃùÇ#¹mÛ±§÷þèz\ê¡Û¾š )î/÷¬ALÔg�c¹¤±JÝ&(€Ïù `BH¨i>ÀÝo¿-ˆ õkÀ¹?¶¯\�ª�ã‰ßî‰ÙæAðk?ú¯ÛþšªûŠýQŸïûŠ÷²?Ø�õuÛW“!Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!$Ô¸˜�¯êJOâZWã4à|À¹p5Rý+¥Æ£jàxB¶ÛÁ6‚óý˜nûkªî+öG}¾ï+ÞËþ`?Ö×m_M†dçt¾°1PŸuŽå’Æ*u› <ç[(€ !¡&ô�Ù©8à\5pÞvwÞÆ4o,ÿQ@]“k?^·ý5U÷û£>ß÷ïe°ë붯&C¬–»d b >ëË%�Uê6A xηPBBMè³SqÀ¹jàx2ow¿±›é¶¿¦ê¾bÔçû¾â½ìöc}ÝöÕdˆ5Hç’5ˆ €ú¬s,—4V©Û0à9ßBL 5”?úÈ ô�®·®¿•�·«JÕ6k&ëv÷û±™ªý5÷û£>ß÷ïe°ë«ÚW“!Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!$Ô|ðÁñ@¤^�]o]+!oW•ªmÖLÖíî7öc3Uûk*î+öG}¾ï+ÞËþ`?ÖWµ¯&C¬A:—¬ALÔg�c¹¤±JÝ&(€Ïù `B!„B!S9Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kõYçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆ €ú¬s,—4V©Û0à9ßBL!„B!d*ǤsÉÄ@}Ö9–K«Ôm‚ðœo¡&$Œ|øá‡rààAyk’ÑmúàƒÒ­,f²nó °‹ªö‡&Ô}2Y·k¢MÕýXµÝ|vŠØWEì�¢ªýAÂ�5Hç’5ˆ‰ pëKrä“OåãÝCò™�{äãèç##·ÙóÔ�Œ~²GÖ›Ó¦°A¿?óÏ‘E�_.Ëîœ-Ÿ¹t‘,‹~^tóçìyhÚÍËóºžlLëË%�Uê6A xηPFt°ñÃ�>Šþ%÷“IE·I·ÍÊdÝæA`?UíM¨ûd²n×D›ªû±j»ùì±¯ŠØEUûƒ„k�Î%kA‹×´TLËÆÑ�Ö|áZ¿;äbyÐïÏl™Ÿ•¢iY:ÿRk¾îN¾s‘œl<î‡ño„Ä:ÇrIc•ºMPžó-À„„½âÄ„œ tÛ¬LæmöcQ·ý¡ yŸLÖíšhSu?vÛn>;�ØWEì�¢nûƒ„k�Î%k!)ãR1.ß•m·&ÓÖïþ4úû�~ߘ^…kOoÏ“”骗®äÍæé=ͺº5Y¿Ö<ï¼$« Ó§Ëê‘w Ó·íÎÖ±ôÜTí5ݞёüö—Êäì ÝT{ýÓ×~g�Œ¾“>¯5o~½¶¯ûûÓv›lË^£ðxIA—¢qAºLfÏ/Îsò�—ÇWÎÆî\$ó:G¦åžÛš–ʬÙsã6½wÙã¹Â¸õ˜qen:mþÍéU¼åçÆ>'³ʦEë~i2o{Y½·&ëË%�Uê6A xηPFÌ֭ߊO ®Ýú[¹wat2±r[ç<>豞�•{nó6¹6=±R_~ð·¥éÝèó¾%›ÍiãóæƒDëÒ^vò»®_Ã× b?Véó>ãþÐtì“Zûc0Ÿ�´]cþŽÑD¿ÞÄ~>&Z—Ïc�õì¶Ýþnóx_ö•òd•ÿyÓH�mðøóÏfôýö‰5ˆ‰‰ åa¾0µ ÚraY*³b3+/£ß·¥%«>¿Pêê¼F‰›M-Àë[enJKÙÜóãòWo�œŸÞQR�¥MÅËË=?ú½¸=C²¾ðZù‚¹\ަˉ–‘ÍÓkûz½?íyÆZk�š•¢Z–– ÖKŠY½Uó²VœèypvæìyÑï³ËWá–^'ÿx¹0Îϧs»pÎ]í›Íßkû`’±Î±\ÒX¥nÀ€ç| 0!aÄ`ýÍÃòåx°3œìOI7=ֳѠr¯mÞú-¹vkîwOl^Ù9(m=ViÒîÇmríXÊ�1îMÇ>éµ?&ÒoWãÏá8MØëMÖÏG•ëÙm»ýÞæ1#ªôs_)�öטÿÆzlƒûý1€ÏA•1în¬A:—¬AL¸W,4S¹3f·‰!Í—³©Õ#{Š¥g¦c9I�Úº:¶%+:o“m»»”É9ã-€«·µsÛóGÓr¥ø‘l_´–Ùkû|�¿ÂVu¨u àùV¹›WQnÙ\XÖìÜÕÈ©nË€)Â:ÇrIc•ºMPžó-À„„s€UC>,oF?o^©W©ä¦¥W®$.�{£�'ƒ˜',¼@¾¬�¯Ü?¯=½ô¼tÙí×KŸŸ-óÁ‡ÛÏ‹¯¼É¦}K®- @W¬g¤Ñ rŲ’mÉi­¶Þº�Ùz¶×¯òÊDs?f�_mgöÜÜ4§Ï‹÷sç²;Ëž“­wùw�÷c᪳Žõ®ØÇùý”Éø´?4�û¤û²*?¹õÿòƒÛ’ýÓ*(²}¤òŸ�êÏãDmWÆ.‹¬uÏýý§ËìØ7Ýþ^rÌ×ëq§òõ½ÓõËñ´êøQ5-Rùy¬ñ~wÛî¾m³ùÙ‰ôØ®®Ï˦¥W­íÏög·}œŸwàûJ5ß_Éú¥ëÖq|Ë>÷:o¶o’yãeDómnm_qýõoìÞִܾÐ1µþþˆôút{?sÇÚ–Ö±¶Û{�;v¤Ëê˜/ÿzåuãþ á¦ýYðƒ5ˆ ÷:®PUV÷*x]Àù«sS…ù{ÀõÖß+z5ﮞ°¸ÎkÀ$f�c¹¤±JÝ&(€Ïù `Bˆ=ÀÚM{вó÷èçÜ r|EËo–k³+[¶nkžnýVኗâ¨.§=Xúæƒß* 2ça«5Tî!Zçò m&øM×9¿Í©Îbªj?¦ËË u›[ƒÑí}ÜšÏØVVØ�ÆïU\ïÇâöüVî]™ßw ³üÓý•ÈÏÄþÐŒeŸ˜Ÿ�ÜûªíÂB‹‡|™PœWõú]Xïuù±öïÑòt !aƤsÉÄ„{ñ- K·lî(T»ÀV�\QzËÑ[㹕6¶·;^fn9­}�›'þîát_�nÌm·‹ésãç¥ÏÉÖ³×öõ6È8ûgûÐIékM/ß>:Ñ.tíé­e\ªßÿ›<?'÷:í’7ùÞßl¾Ew.j|pü=Ò¥ï�€PYçX.i¬R· `Às¾…˜�0Òh€ÕLo©ŒŽ¦å¯º*,§É@q4o®¢i:¨+”Eö@z[ÇÀqå~¬ÄîXc°>bTÇ�§ÐÛbq½«KkžLõg«ßûC3–}Ò±îë“ûÜ[Ÿ�Òü½>�Ý |»z®{ûó\xn�¿—Lçg`ŒÇ�š¯×Möc{ýZÛÕZ¯ªíª.Áª¦e:÷c=ݶ»/Ûl½'¹ÏN×íêñ¼d_ê¿0—·¹zgÜí+Uõ)¯[ç{m'ŒÏDƒeºþgL÷Ïw¯÷³½/»±ßëè5ÆqÌê¦Ûþ áÆ¤sÉÄ„{æ- eãž>\ ‹)­Û•Ä´€çs`²°Î±\ÒX¥nÀ€ç| 0!a¤Ùk{°³sZÕ`tqpµu»ÊÖïÅ+cô6ŽÉôòëEË™ på~ì1ˆ�¤Žö¯uKl{ :¿Û:ø{p½óŸóJ½øqk›óŸÝç¥+Èû¼?4cÙ'�ë^üœÇ·5ÍoGGéR|~¯Ïc7ƒß®Þë>,—'Õ/s?öå¸ÓLöc{Ý[ÛUóxÚýøQ=-Ó¹ëé¶ÝýÙæêÏN÷íª~^ë5õXZ8®Tïãöã®ö•ªÚ_úXõqÓ>NDû+:Nvû<·×øüôù˜ÚlT}z½ŸÑôªVDº¾×ã8fuÓm�pc Ò¹d b­•©¥Û@÷Gé â�¼&»ÂUÊåïîI¯Ôîÿ•ÓàŠuŽå’Æ*u› <ç[(€ #MXã�ò‰†r&¦ú»ª¶›Óyu 5ù¾Átž•ßj=ž,w[zVª5PÛ^n¦[yhéÏ rç:´ÒKëi*ÏËßÒÜ�Ñã[³[G÷k¶OòûQç¹¶5°ßãõRÝŠŒ*n÷c$·¯¾¬å‚.'Þ½·¹ð¹3¶»ŸûCSŸôX÷Öç ²òáb¡’Ÿi¯�ýØÃ„oW¤sýôùFqÒíï¥Çë�í¸éúz½�?¶·I÷O£ãiÕñ£òØR½ëè¶ÝýÚæ®Ÿ�Êíªx^6¯Î—{¿³ÏG÷ÏŽë}¥jì¯Ü6�›=þ¹orÓÓýØÚåÞdû9åìŸ1=>ÕÇ‚Òôòg$};�ØWEì�¢nûƒ„k�Î%kõYçX.i¬R· `Às¾…˜�02™XTîöcQ·ý¡ yŸLÖíšhSu?vÛn>;�ØWEì�¢nûƒ„k�Î%kõYçX.i¬R· `Às¾…˜�0rààAùð£�ÌAÈ�é6é¶Y™¬Û<ìÇ¢ªý¡ uŸLÖíšhSu?Vm7Ÿ�"öUû£¨j�pc Ò¹d b >ëË%�Uê6A xηPF>øàƒx°Q¯8™Lt›tÛ¬LÖmöcQÕþЄºO&ëvM´©º«¶›ÏNûªˆýQTµ?H¸±é\²1PŸuŽå’Æ*u› <ç[(€ !„B!„LåXƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„B!„B¦r¬A:—¬ALÔg�c¹¤±JÝ&(€Ïù `B!„B!S9Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kàÖ—äÈ'ŸÊÇ»‡ä3÷ÈÇÑÏGFn³ç­°zäÝæÏK_ot£1­}Í�?yW¶ÝjOBŸöWóÏ‘E�_.Ëîœ-Ÿ¹t‘,‹~^tóçìyhÚÍËóºžløÂ:ÇrIc•ºMPžó-À„„‘>ø@þîwòÖÁƒðŒ¾/úþXá} SÕ{úá‡Êã9“™no·ý¡™Šû¤›^ûŠc‚Ÿªþæ5¾Æ«>w“õïs²nsÈÛUµî!ĤsÉÄÄD’ѬtLËȱ²Ý¬ß½GÖ�Ç6î×ë­ßx<ðý?[æg¥hZ–οԚ¯»“ï\$'�ûaüÛ“‰uŽå’Æ*u› <ç[(€ #o8 ~ô‘|üÉ'ðÌ逬Þ·0U½§úøT{Ou{»íÍTÜ'ÝôÚWüTõ7¯ñý3^õ¹›¬Ÿ“u›CÞ®ªu!Ö �KÖ &&BR@Æ¥c\@– ÕÛdÛ;ŸFŸyMÛ˜””­«TÓ«Ví+W“egÓ3…‚3.€óóåÊâÒÂÉ¿Å×I àüó›Âëw'Ï‹—ÙÚ–|a]Ú†w^’Õ…ç¶÷I·×Ï^£sÙª×þWÙ{PQ¤w•¤q)¤Ëdöüâ<'ßyy|ålìÎE2ÿ¡sdZî¹­i©|Áš=7.`Ó+p—=ž+Œ[�Wæ¦Óæßœ^Å[~nìs2û¡lZ´î—&ó¶—Õ{û`*±Î±\ÒX¥nÀ€ç| 0!aD¯¬°Ûà}¬ð¾…‹÷´¨ÛþÐð9/b_…)ô÷­ÛúOæÏÜdÝæ�·«Ûº‡k�Î%kAËŬtÔ2²X2jyÙ.l“²²³è�lÜc?éup¡4-/'ú½Pßú’Œ àréÚ¹ =¥WÞ¶ÊÝè÷mékv\a¬ëÛQç_¯øú:½°=úZ¹ç÷ÚÿíyÆZk�š•¢Z–– ÖKŠY½Uó²VœèypvæìyÑï³ËWá–^'ÿx¹0Îϧs»pÎ]í›Íßkû`Š±Î±\ÒX¥nÀ€ç| 0!aÄôÛú­øâÚ­¿•{F'+·uÎ3¡¶ÉµÓ¿%›ÍiƒóæƒDûa¼¯ÛcöØ×�k§ðû–¼WzâÛíõš­Ë¸Þ{ÞÓ¢1îMÇ>™àýÑûs•èϱ"ľjöؼ2zí…˛ƴ‰Ð�÷¦ç2þŒ×y½nëï|ÝǪŸÛ¬|Úîë2qÛ5±ÿ¬ð=º]>±1áÚ�ŒÊÊH·¢·Ûã‘F·€.¼u àÂtU~N/å×lI ïöÕ»™bÁÛýõ£çëwûæ§EV�ì)–ÊN寰U�j�x¾UîæUÀ…[6–5;w5rªÛr1ëË%�Uê6A xηPFÌA¿ß<,_Žî’A¸/?øÛÎy¦ˆÍ+ÇW$¶ÉµÝN{ìëFƒµ¼o}z¿ÕËš¬ïiÅv�Õ÷‡¦cŸ8úŒ×ù\õå³7 öU§èõWº+€U?Þ›Êexÿ¾�ýx¥º­³uÀ±e¬ú¹Íʧíî±mýÛ®㺇k�Î%k®p·²ÔY\ºBWõ­¾M¶í.mIõë‡P—èÕ¼c¸x à:¯S˜uŽå’Æ*u› <ç[(€ #æ ŸX¦WléÕ[×nMÏ®äÚܺ*®=-–^½+\ñ• æ�0ý¹÷7Ѳãyt�¯×óz]�—-+™~ma€>?M_7ÿ¼ ñdú¼•ÛŠƒþcݾÜpk{ZÏ�¦¥?ç÷u¦Ñ`íT~ßRVIS¹.¹÷ûËnK¶7}¯tY÷¶ž›[—üg$Sà÷ù=U]ö�íªÜ�ù×ëx߯¶?4�û¤û£°~½þvfùWu¬(ìãòþÈ^3�öàùéƒßWù»ŽŸsAôY2þ^ôõ´Î-·¸]־ʯcy>ã½(Óq\å×¥xlêz<Èžçô}«˜6Îã•ê¶þµ×½×:t{O*?W‘ÜrËÇïâ{ÙìýRõ·Y�e»ÇþwØ~núü>CêoWîµÓiåã‚}œHŸ·ð‚dŸÄ—:Oþ½Ûº‡�døÃÄ„{å‚³ã–Æ™Ê8·Œ[õv˹B¸FÜ^nrEnþuâ[0Jj�§á­’»ÀÉ÷wÛ.ÕùúúXþ árAÜ»Tî4ž[@W;ùÎÒwæj|çìîóèôòUÂ+€;×Oo ÍÀÐ�uŽå’Æ*u› <ç[(€ #ö _7é^a37x·u[að²|õF2(˜Îÿ›‡åÚlz�ç)«€yóÁoµ_;hÍæ)­—*"»)Η¬oîycÝ>]n¶Ï¶æj{k6XÛÍdßÚ¬×ë>­¸üx0:7Ðÿží3]ÏÖþKŸ[ø½>×ïi÷ý¯zo—¹sû­ó÷jÝö‡¦þ>©Ú½×¯ûßn¢×g§x¬¨þ‹ �–Ÿ·ZöU¢ÿ×Ñò²ý_ø{Iß›Ö>Ï}e¼æcªÞ›Èÿ6ª�Õ&ä}«œí“ë[Ömý›­{Å:T¾'Ý>WÅ÷¹xü®þ¬£?Û¬ª÷}×÷¬bŸ âÒt»ÊÇë˜PuÜÔmˆ·©ô®ÒmÝCˆ5Hç’5ˆ $¥kvûã#»÷äÊÒ¬˜,+•qékLÛ¨ßÿ›<—À¹ùÊ¥o2ß»²mc2�N×r6~l¤½œâ÷÷b¯ùêá¸ä-ÌS*x ¯_.È‹ûO5º:96È8ûgûÐIékM/ß>:Ñ.tíé­e\ªßÿ›<?'÷:í’7ùÞßl¾Ew.â `¨`�c¹¤±JÝ&(€Ïù `BÂH³A?T- è,sW¬DÊÅAap=¯Çó”5¸çž×µ£×H¦ëdû9‰tð´5O¦´½cݾt¸8@]Ok'ùû–›ß|½TÇ´Ž÷;z�ÜûSœ?Ú‡…ÛØ&ïiû¹õ9O»íÿXïí²öcþµã/$4õ÷IÅþ¨±~Ýÿv½?;¹×ïõ9ãçFõg_%úýw]\^þï¥â½©³¯ÒÏ«>Öë}ŠU½7éô®Û—¾V6-¿œêãAµ yß*§ æs×lÝ+Ö¡â=éú¹êxŸ£ågÇïÊÏU=ýÙfU½ï»¾g]÷‰ïe$¿�­ýéçÞ¯ÊÏU=ýÙfU½ï›ÿV/¯—þmWûïªÛßeçãíuoM«ü,ê¶î!ĤsÉÄ„ WÀ–¿x c¿LŒÂUÊåïXçX.i¬R· `Às¾…˜�0ÒlÐOüº]�S”lÝÞ/ý½8o^ïç%�—óƒú*ZNk°¾sp¾ÛeQi`õ7z5Xö¼±nŸJŸ«Ë+”m½õg°v²¿omUówNË¿¶nç¥[@çç/¯[i½£ý[·\pûžVíÿòïövõ~O›é¶?4õ÷IÕþè½~Ýÿvæg'·�‹ÇŠèõ*>Ç›W–¯>¾ÀüÛ±ôg_%úûw]^^~t¾7í}P½¯Þ|ðáh}’yõû�ëÝv¹ê½©Ú¾òç$ÿ·PÞæÎõ®2ø÷­×´ü¶$ïÇÄ—¡ÝÖ¡ê=©ú\ߟâñ»óý±>³Uú³Íªzß�åïpÇ�æÛÑR]ÿF»¼vç>ooWk°Ö &ê³Î±\ÒX¥nÀ€ç| 0!a¤Ù _2¨zïÊ܉Fn�2ù.»äñ/¯üVë¶�ñ _66½0ÀÛíyÉ`iþyí[·vN+ hoí}SK~]ôŠÝku[ÓÁÛ±m_ºžºŸâ""™^X× ý¬�ìï[³×+Üþ7ÿzñ>*½×ñ{Ÿ[F·ýVóó¥Ü¾§=öù¹åÏqîy…ý˜ûl'ê—-Ýö‡¦þ>©ÞÝׯÆßnaz{›óû©|¬¨þ—^3¿ž=ôg_ àﺵ½º_sóEÛ¦å•î—ü{SØUûJ§åöiq?vWõÞŒåo£õœŠãA•Á¿oÕï©*lwÍý˜é¶þõ×=Ñmº¾'Ÿ«ø¹ùÏNîøÝ1-âj›•½Ýcý;4žÛ‡cÈX¶+ù›)ë;ÿŽ’ãDûqÝÎì¸ðfzlno[wÝÖ=„÷‡{Ö &0v�ß½[ÔÿïÓÀ5ëË%�Uê6A xηPFš úý¶8ÀŠ�ëÏ`-ï[=Û W] ïiQ·ý¡©¿O¦Æg¼?û -ô÷­Ûúûµîý=~‡±ÍÍ…¼]ÝÖ=„Xƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„„‘&ƒ~ñéÉE�«50~ý¬å}«P¸24wEëñžuÛšºûdª|Æû±¯0ñBߺ­¿óuàñÛÛm§�·«Ûº‡�ìŸO¾°1PŸuŽå’Æ*u› <ç[(€ #¡fNv!ÖÂÆ{ZÔmhøœ±¯Tç­só|üBߺ­ÿdþÌMÖmy»º­{±ŽU.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„„‘Ð3'»�kaã=-ê¶?4|΋ØWa ý}ë¶þ“ù37Y·9äíê¶î!ĤsÉÄ@}Ö9–K«Ôm‚ðœo¡&$Œ„>˜9Ù…ëË%�Uê6A xηPFÞÿçޝª€Ÿôý±Âû®nïé|p[Ï™¬t{u»»e*î“nzí+Ž þêö7¯ñý3^õ¹›¬Ÿ“u›CÞ®ªu!Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kõYçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆ‰é²zä]ùø“=²Þ˜�g�c¹¤±JÝ&(€Ïù `B!„B!S9Ö �KÖ &Z�n´§d¬s,—4V©Û0à9ßBLHùðÃ�ï[Õw»ù°~ƒú÷ÙB!„�Þ±é\²1‘Ú¸‡ôd�c¹¤±JÝ&(€Ïù `Bˆ‘~ô‘|üÉ'ÎèëëzXñaý¡j› !„BÈäˆ5Hç’5ˆ‰0¨Á:ÇrIc•ºMPžó-À„„½Õ*('š®‡_Öoºm3!„B™±é\²1‘¹M¶½ó©¹Í˜�°Î±\ÒX¥nÀ€ç| 0!aÄ,X·~+>�¸vëoåÞ…ÑÉÄÊm�ó4Õc™� àA¬_Mo>xAôÚß’ÍÆ´cÜfB!„29¢ç‚>±1‘â `PƒuŽå’Æ*u› <ç[(€ #fÁú›‡åËqÉ™—_~ð·�ó4Õc™� àA¬_›WÖ,€Ç¸Í„B!drĤsÉÄDŠÔ`�c¹¤±JÝ&(€Ïù `BˆY°~²M®]ø°¼ý¼y¥^Áª�¥W±êÉE:-¹VË Ñèy­�oɵ…¢ÔZf[£¸Û²âÂ5[Ÿöú¶_+· Ó/�{|XîýM6-¿îÑ´Öã‘Ör#+· àô*_óycÜfB!„29Ò>Oôƒ5ˆ‰Äê‘w)€@OÖ9–K«Ôm‚ðœo¡&$ŒØkwå«_ó¿¿ùà·Úhëê×ö¼UšÀ´�ÍÔùÒµXÂjá›¶Z çË[�–­{þçò- Ûoëy…ß«QB!„LîXƒt.Yƒ˜HÊß�?Ù#ë�iyÖ9–K«Ôm‚ðœo¡&$Œ4.Xó°\›ÝÊ8ÿsú{ëJÙHùŠ×*}+€UvUná;w·ÉµÝ¾+¸¼*ZF¼þÙÿ¶¦iYœÀ…«3å«€»£&„B™ÜéëË%�Uê6A xηPFÆV÷__ àÀPB!„LîXƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„„ `w(€ !„B&w¬A:—¬ALÔg�c¹¤±JÝ&(€Ïù `B°;À„B!“;Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!a„Ø `B!„�Ék�Î%kõYçX.i¬R· `Às¾…˜�0Bì0!„BÈäŽ5Hç’5ˆ €ú¬s,—4V©Û0à9ßBLH9pð |øÑGfA9Qôõu=¬ø°~ƒPµÍ„B!drĤsÉÄ@}Ö9–K«Ôm‚ðœo¡&$Œ|ðÁq©W£º¢¯¯ëaŇõ„ªm&„B!“#Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kÓo·É¶w>•�?ùTŽŒÜfL˜XÖ9–K«Ôm‚ðœo¡&„B!„2•c Ò¹d baã `àëË%�Uê6A xηPB!„B™Ê±é\²1ƒ@ ëË%�Uê6A xηPB!„B™Ê±é\²1PŸuŽå’Æ*u› <ç[(€ !„B!„LåXƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„B!„B¦r¬A:—¬AÌñX=ò®|üÉYoL˜Œ¬s,—4V©Û0à9ßBL!„B!d*ǤsÉÄ/-�G7ÚÓ&ëË%�Uê6A xηPB!„B™Ê±é\²1Çmã `0eXçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆ9nÀ` ±Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%ksün“mï|*GFn3¦L.Ö9–K«Ôm‚ðœol¼I–L¿B†ãŸ·È%3Î�¯Ä¿B!„B!^ĤsÉÄ7®SˆuŽå’Æ*u› <ç[&®&„Œ+›¯“içþX§¿ºË1¾úŒøÄeÉÓéCYާÿK!„BH@)йf bŽ0˜B¬s,—4V©Û0à9ßBLHyæê+ä’«/‘uo¥¸ÊÞÈW–wÑÇvÉ3Ol‘7z”ÀGwl’�¿>�þF!„BˆûXƒt.Yƒ˜ãµzä] `0eXçX.i¬R· `Às¾eâ `ýùlY3ÿ"ÃËgÈië†åîÅÉ•„'Ì8[®Ü|,™åðæå´ÉÁqÚÜëdcVzÛ"WÎ�ÕzÎ%OI'2™ýý,}L޾r“\ð=Çåéè²dÝ®ô—æ¡&„B!¾%˜ó…5ˆ9Zþ~üÉYoL˜Œ¬s,—4V©Û0à9ßR·þw'>�þÔ$Õð ÓÊŠÍ专×Ö�-'̸Qž×‰;ÖÊ)3ɺZ“�/‘isï��Ño;×�%'^¿EŽFÏ:ºcX6ò�Âd äè†Kä‚ ú÷°]Vœ»VZµ£wÈKo”³¢¿§å›¢¿�h¾ë—ȉÑI…Þžyß×µþCŠf-‘»õïï­È‚«·$Ï�3"W.þ�ìKKr\^û^²}ï�õ埾¢uÒrBÇÕýäù'F’å¼5"7o—ŸŽþFŸP[ä�èùû~�ýyúõèïXçÝ.Ï´Û.û²+ˆã+Š³Ç·Ä??Ÿþ‡ GG·Èp6móëÉÕÈÇ^—á§GäùÍ:ºlB!„Bj¤}ŽëkõYçX.i¬R· `Às¾Åe<­PBµ§?ý,9­p…á.Y3÷lY·Wä�ï�-'̽Ižy‹/%S%Çä§K/‘Ÿ¦È¿vË"Yµ#ùY àÓæÞ(Ï¿�üºsÝÙrÚõ#éí™�Èk›s…êÛÃrÁâä;„Ÿ¹þŠÖòdó�²$.—sÙ|�œ²øg²3~ø¸ì{â 9qñcI©Úõ àRüÄ–ôùiñûJrµ~á àãZòFÏI×ñø^-ŽßLþ£�§‡e8þ�@¢¤ep\¿½½PðÆËÓeküÄ&y­´)„B!„ôŠ5Hç’5ˆ €ú¬s,—4V©Û0à9ߢpƒ(€‹%o{zrupÙ,¹ò×:ßÙxý¢äÊÄ3/‘Òå2isì1Y�•¯škå+«¶'?—ÊØ�ë®hý�i޾r‡,83½eºJ¯¤×e,‰o%],—³ /oÿ­&‰æ[œþ-×-€s·yΗ¾…xï–ä*Þ-„Ób8™+JRk|ø•òü‘§wÉÑø `®ü%„B!ÍSüwO÷¬ALÔg�c¹¤±JÝ&(€Ïù-wëd" àø à[¶Ëá·�-\ô{L^»ål9áÜäŠFB&kß·¨ó¤!»]ze<"Wž{£<óVÖîî’5ËÓXÈÝË×Êkoÿ¸t;è$Ï_¿pB àã£[â+~;ófuœ^M\0!„Bc:η³1PŸuŽå’Æ*u› <ç[|,€å•›ä”èçäû�õ»~&WÞ2"Gå˜ ßr£lÜq,~|ŸcÀdR瀬›¿PÖ¥ß}›å™«Ï�K6G?TÀÑßÔܵòZüN“�O\!§dWk6ß$K_Ѿ�t.GŸŽæï- kÀÉ- ‡åÅì–îÇȾøçã²ss—[@¿µ]ò·—–cÑsôØÀ„B!dŒ±é\²1PŸuŽå’Æ*u› <ç[¼,€£ì{â:9mFrpœvæY·#)ˆo^+_™•8g-‘»[e!“0oýÀ¼B·õxeý~ß’ävéÓgÉiWß!—,ÍÀzkéù?È]e›Ïqyí{Ùsgȉ‹ï�³ÂuœpVæÆ·mŽ~=þÖöä÷Øy-ý>ãÖ|ñ¼[Úp”££[d¸5-ýžc `B!„2Æds¾°1PŸuŽå’Æ*u› <ç[êÀ„�É”ãñ-ÔlÈZ]ß“ÜúŬ&„B!¤�±é\²1PŸuŽå’Æ*u› <ç[(€ ™jÑ«íõªÞ·¯ö0û~½IžOo }\¯(~b‹¼ÿF!„BHc Ò¹d b >ëË%�Uê6A xηPB¼ÌñòâÓémžŸØ"/–¾™B!„�~ŤsÉÄ@}Ö9–K«Ôm‚ðœo¡&„B!„2•c Ò¹d b >ëË%�Uê6A xηPB!„B™Ê±é\²1PŸuŽå’Æ*u› <ç[(€ !„B!„LåXƒt.Yƒ˜¨Ï:ÇrIc•ºMPžó-À„B!„B¦r¬A:—¬ALÔg�c¹¤±JÝ&(€Ïù `B!„B!S9Ö �KÖ &ê³Î±\ÒX¥nÀ€ç| 0!„B!„�©k�Î%kõYçX.i¬R· `Às¾…˜B!„BÈTŽ5Hç’5ˆ €ú¬s,—4V©Û0à9ßBL!„B!d*ǤsÉÄ@}Ö9–K«Ôm‚ðœo¡&„B!„2•c Ò¹d b >ëË%�Uê6A xηPB!„B™Ê±é\²1PŸuŽå’Æ*u› <ç[(€ ñ7÷o&ßb Ò¹d b >ëË%ÍöíÛÇŒ€o¡&„B!„2•c Ò¹ô™ÿx¢9� €¢s)ëË%�UìÖE À·PB!„B™Ê±é\úƒ?ù¬=˜ €žô\Ê:ÇrIc»uQð-À„B!„B¦r¬A:×þýŸj Ì•Àõ�èeù«4V±[0ßBL!„B!d*ǤúEc»uQð-À„B!„B¦r¬A: _4V±[0ßBL!„B!d*ǤúEc»uQð-À„B!„B¦r¬A: _4V±[0ßBL!„B!d*ǤúEc»uQð-À„B!„B¦r¬A: _4V±[0ßBL!„B!d*ǤúEc»uQð-À„B!„B¦r¬A: _4V±[0ßBL!„B!d*ǤúEc»uQð-À~æø±cr<ý™B!„BÈàb Òý¢±ŠÝº(€�ø `óôñ?¦]?’>@ñ?Çäè%¿þXú;!„B %å: Ÿ4V±[0ß2¥ à´h=aî²3}È‹üúF91Z¯W�§~]¸ú:¹äêµ2üvú ;›¯“içþX§¿ºË1¾úŒøogÉÓéCqÈóO ËÆ¼§·Ë¾1\ÊÞÿ«ßwÉïÏù3yë䜅%ïH'÷%/ÈÛ§FË]ùBú{Ãìúor0Z¯ƒwìJ „B!•üàÐo«Ø­‹€o¡ŽÀ¾À}É&YÿÃålY3š>D‚Î3W_!—\}‰¬{+}ÀUöþ@¾²tØ(¢µÞ$¯å.€=:ºE6>±½YiýÖˆl|z—Mm–ÎuH’Àg^,¿þïòî#—­o-ü¾|˜Îá<À„B!ÎR úIc»uQð-u àwâéO òöYunr¥à Ógɯߗ:/®:+ylþd_ôûó×ÏŠŸ¶|“}k‹¬YºP¦¥Æf,”+7§mNVØ.½Cî^œ.wÆÙÑôòâ÷–ÄWÍž0ý Yp_Z dóŸy‰\™Í?k‰¬y¥´¼¬>þº<°ôìôµgÉ)‹\«^®óÏ�S–Þ( f%?Ÿ¸øy1~™]²f®>­ç÷n”Ó¢õ� ÙcÛeÍâ³ZÛyâ¹kå™ìJÝl½¢ý§j½ Ó²×}Sî>7Ù§jÚ¬3¢åÿXÞ�²ñêö¼Óæ_'÷Ö»Öòµ×^‹WÙ$K–>&G_¹I.ø^_/[mžÑ;dÉ:«¤´Ê×n…ì Ò£>翵 ß÷®Œ~?ù2y/úùÓ#ÿCÞ>çsÉ•Á§~EÞNoãüác—É}ìäÓäw眖Ì_*jÛËù¥Òy¯üe«ÌýÝ7.ަ}E~¿ë¸üó.J—õgràÈúäc¹×]ø•ø)€ !„B&>Ù¿;ƒ ±ŠÝº(€�ø–ÁÀ¯Ëª3ÓÜŒ3Z¥ãWîÓòjD®œ¡¿Ï’K¾w‡œO["?ÕÎå­È£ÇOÔÒrVVb¦Ó²bTå–™ˆž/S-’»µLÍÏ_˜^Z^\“Ÿ.Î÷ðfp,¿^‹“£­8›­ÛÞ]².{,š¿µ^3n”çu�…¸j½ºL[þcùVþ5U´�¿¾oQòsî5“÷£:ZüþÿÇÿ£v“£.‘ 6è‡v»¬8w­´Þ…Ñ;ä‚ì?<ˆ>/;×Eó]ŸüÇz{æ}O\'§eŸ¯YKäný�¢¿±WoIž'ú{\œüÇí—×ZÿQEî?h(üM]!ÃÉÌiª®>&¯=½IžÿµþžÍs@^Üܾ]ô3£éã+€_O¯>&;7ojϳãHü¨æð]VúüÍ»äè±×e8û=ò|áJéR||‡iýþ–ü~±þ¼ZŽýïòÞuZÄ^&ïû¿’BWËÚÿ­EmôsÃø­S¿*‡®»UÞýå_Gó|N=²C>Üþ}9tjòüþö£ÇµpÞ!ïÿà¢èg `B!„iŸãý§±ŠÝº(€�ø–�À¿¾1)B³«k�ýL¾¢¿Ÿ™”WG7,)OË®(<¶]Ö-]˜ÀY™š^5›•OgÞ$/ê¼;ÖÊ)ñô³dÅ+úÀv¹2½7þnÒlþ—ÈÆ¸[zSÖÍO¦å¾#Åøí'ëך7[VZW$+€§-NJ«½ZbëcZD· àÖ6fûfÖ�ÉväJâZòå àªõúßé´èuˆ§“ŸÞžg�·€~ã{gÇË=íj-àŽËñ½»J¥_g²ò÷¿þ×ÿ£v‘còÓ¥—´>‡¯Ý²HVíH~Öø´¹7ÊóéÕã;×�-§]?’Þrùˆ¼¶9÷¼oË‹“ï~æú+ÚŸëÍ7Ê’¸\ÎeóurÊâŸÉÎøáã²ï‰+äÄø?hˆRyp»€�=½%]†ÀÃ2¼#{�ã²ssî÷ãÉsãÒ6W~%ÿœd/ê¶¾µ=ZþHºmÑúý:›¯ÇÀZÊfN=O~¯›‘½_‘ßÿä²øçCé…ø­¢·AœÍóþÍzõp¶ìÔ•¥¥tzêÒs!„BÈÄ%þ÷/`@4V±[0ߢp� à•‚yÙUƒ[ä’ìÊÄé—ÈÆ¸ÈÉ_ÑšW*€µ�“•œÙ2ÛEj¡ÎJè(Z�écq›Ÿ®EZ¼¬²Þß¡›À­‚·µúÜüÏéäŽí(-#?½j½žN§å¶¯ë;€wµo�™6÷Fy¦£(k'_þf¡v�c�É‚¬|ÕìX+_Yµ=ù¹TÆî\wEáózô•;dÁ™íÛ�·>+Ñ2–Ä·’.–ËY†——?÷ú·™þ�UÀVùªI®nM;¾KžÑ7ýUstÇ&Ùøëh�Zðy±\(G†G�•Šá$IÏÝ£Ž¿ø§rX>õ¯£µŠräù�²7¿Ï©ùTÿ߈^µÛŸøØJ½ÍóEònn½>•7“uZü€|¤PB!„8Kë|�UìÖE À·h¹['c¾XoMœ^Í›¸N†�‹ìËnGœ:%.´²²ô¬´|Ên#�–Qc-€›\‰¿3·e¡¬+a�©wp®PËÀ‘ŽõzѺ8»úÓ(€G·Ë3oE;ÿØyñ–…í×è’+®¸¢PþfÑÇt™˜.ý­Ä²Û…WÀ#rå¹7FïyÖ:FŸ³åÙ,p@î^¾V^‹>_ÅÛA'yþú…¹åhÜÀñ¿¥Œ¹NoýiZî&eë[òû…Zâꭘߔ¹(¹*·Û- ³¢Wý—I™Ü£þôù¿Š_ï­oü4]ÖirhÓ1nM!„âI:η€>ÒXÅn]À@|ËÀ `ý®Òô;€³ârÚô³ä’§�H|Ec|à;[ÖlþAZbjQ™»8ÿݸY‰9Ö86+·¼Er·Þj6_ÇW:]_;^ßYò•~KÝÓõ;€Ïý±ìk­S®ˆ�Óww¬WnZ~û?&‡µìοÆõ#òÌÕé• ¹×¬óÇÄeȺù e]áûl%z/Ï�K6G?TÀÑßÇܵòZü>&;Ÿ¸BNÉ_-¾ù&Y²øŠöí¤s9}Çv èšp´Ì:·€Þ÷Êpòý¾ñLÑz½u ùÊ·€~e“l|E¿¸^¬ëóî7´¸M®ÊýôÈÿ�·êUºÑc§~E¿_üÑc—É}ìä/Ê�3õµèùà_Mçýªú†ÞÞ¹ºÖuüç\$NÕeü™øÆ“÷u�½*G²×ýÆy\L!„â(É¿Sƒ¡±ŠÝº(€�ø–ÁÀQÞÞ"«ÎÍn9�ý×M÷nÿ£ËÖ×°^ð çÆ“‡þ;£þ»cˆ±é€~ÑXÅn]z¾M x.Ä”ÿÅ㧃#}ôQº‡û]&e=B¹ñäb¬A: _4V±[—žgSž 1å¡Gÿ¼ÿþûòÉ'Ÿ¤{zìÑe責×BÀ¹ñäb¬A: _4V±[—žgSž 1å¡Gÿ}øá‡òoÿöoé¯}Ž>×Z&"Î�Ãb¬A: _4V±[—žgSž 1å¡Ç`4ýÎ,¾›“çÆá 1Ö Ð/«Ø­Kϳ)€Ï…˜ò¿Ðc°þùŸÿY>ýôÓtïwF§é<Ös€É„sãð„k�è�UìÖ¥çÙÀ€çBLù_è11>úè£Â­ïôg}Ìš˜Ì87Gˆ±é€~ÑXÅn]zžM x.Ä”ÿ…çØ±c­ÏŽþlÍLœ‡!ÄXƒt@¿h¬sç&(€Ï…ë`@Yˆ±é€~ÑXçÎMPž 1ÖÁ€²c Òý¢±Î�› <b¬ƒ e!Ƥsk�\ö³ÍrÿpÎÏ7Ê�—žÓšç 7?^œ{\.ûJ2ýO¯“5?ûeúø/去ÖɼÙÝ—}ò?o-û„韗—Þ)ßÉ?ÿû×Éç?›MO_ÿç÷ÈžÕ~L-¼k³¬¾4ýý³çÈÂïo”¥¯ó£Ÿ­—VüùãxÞ«euöúyw]]X^ïå¤f]'k¢iwݺ¨øÜl{t]qþØ9réƒÑ´Ÿ­“/Ä¿w®Ó�~ö�\úµÏ§óëôö>në±-ÿi™\ö£ÇÛëÿàrÙ׿TZ˜Ì4Ö¹sÀ€çBŒu° ,ÄXƒtn%¥e«H�þyùÓón•ïüü—rÃד22.`­²TÅeè/eÍå_’?ŠžûÇg]$‹¿§œ÷ŸtziÙŸý‚Ìøú�rG«Øü|´ì�rÿÏ×Ëe_?Gþø³3ä�f-’ÅwýBîßp�,Œ—Ñ. ôýË Åj¾>ãÖè9?»Cþü”h�?{†œ±ì¹ñ›¥óv+S;U/'1㛺ο”m¸Sþ<÷x»ðþ…\B™>›®IDATõµü㑯ÿ}RÊ àÜ:ék­xH~ôóda\tWÀݶå 9ïGÑ~ºë:™¡ú)çÈŸ¯¸Gn¸<_¸€ÉNc�;7A x.ÄXÊBŒ5HçV¹Nhéz׺¤ø¬,€¿²N¾?¼Q.=˘ÖeÙÿùû›åŽo.�κU¾3ü¸\5?»ê5óç²X‹Ì;.��_ÿÁõѼ¿”ÕËÎhÍ—/€õçlþNõ àêå¨ErÕ†_Ê�__&ׯÿ›_wÝÞÇeõ]�Ë�¢ýÕ.«“íYû£õÝ àìùFÛ´¬ÛôªÇU²¿¿óÍöÕÛ`êÑXçÎMPž 1ÖÁ€²c Ò¹5Îø³—Ê ?×+[�Ë–ý—ø*Þöôêøóz%í�¾iÜ.9¢WÌþüïe^ôsöú3þf}áVÐù8ž¦·�^÷MùóÙåB¹~\½œH¶^ÑvÆW n÷œÀ—�§WEçJñ¯Ý!wés.}`ÀðçeÞz+íÇeÍÍ—Ëô*æŽyÀd§±Î�› <b¬ƒ e!Ƥs«³¤ý£Ù×Éêò- Óï”mÉÂ…ï�ý…¬¹y™üi<ÍXö×ÖÉé-’“’yY{9yñ•ÅÈÂèçv}Ž,»¿}+è|¬åçç/¿GîÐ2:Z�=x�,<++@µ4Í­{¬{‰Ú}9IÁšãÉÌù«ŸÓ8Z®–ÃÉ•ÄgDëùËäªÜÊøóògÑô ?$çõ¼tŶ|öÏeîÍÉ÷Óõ¿ëGëdnz+m05h¬sç&(€Ï…ë`@Yˆ±éÜJJÚb¡ø YûÍEòGéÐúÎÜûþ¸¬iÝ>ºW¬>/3.½S¾ó³äjÙû‡)w|ÿ:ù|îªb³€Žo±Ü^ö}å:¹áþì{ˆõ»{ï”ÿܺVKÓtýòŒ+c».GoI­WúvÜj9ù¾_½•õŸ– à²Æpi}ã}Pµ-Ÿ—?[|«¬~°½/¿ÿ£[å c�À䥱Î�› <b¬ƒ e!ƤúEc�;7A x.ÄXÊBŒ5Hô‹Æ:wn‚ð\ˆ±6”…k�è�uîÜ0à¹cl( 1Ö Ð/ëܹ `Às!Æ:ØPb¬A: _4Ö¹sÀ€çBŒu° ,ÄXƒt@¿h¬sç&(€Ï…ë`38ÏÊU­ãyrר5�_žº!Yß«6ÙÓ`ª1ùÁ9 ß4Ö¹sÀ€çBŒu°¸M+åª{î�ì²§{ä©VÊSÆã0Õ„k�è�uîÜ0à¹cl-)UwÉ]7Ü/;[�G¿/Ц^œ])œ•¯UÓ"›VÆÚØ‚Ü2Gï—¹ùÇÊ¿×@ ‰“œúMc�;7A x.ÄX›ÁzV®ºáÙøç�÷¬ì¸ ôÎ{΋šéí¡G‹W w�¶éÙB<·ðœâkX¯Y…!ƤúEc�;7A x.ÄX›�ÒÛ?gß§[*xUUAÛuZþ àH¾ÎÎÅŸë¡€DˆÉÿ»"Ðoëܹ `Às!Æ:Ø ÒS7”�¥Û17/€õ–й’Ö(•Ÿº!½j8_>×D ‰Sø÷O Ï4Ö¹sÀ€çBŒu°œÎ+pË¥î˜ àÜ2µ`.^‰KágKß9\0$BŒ5Hô‹Æ:wn‚ð\ˆ±6ƒ¡Wê¦ÅÖwëwúêcz…nnzª]äVMË/'zü†•27úßò•¾f1\0$BLþß#€~ÓXçÎMPž 1ÖÁf2k‘K ‰c Òý¢±Î�› <b¬ƒÍä±KîZ�;—n?]Gö�ÅM¿;&›Óú÷A`4Ö¹sÀ€çBŒu° ,ÄXƒt.Ýxó­ò»C‡Óµó3~÷;Y¹f­¹þ(ÒXçÎMPž 1ÖÁ€²c Ò¹tìý÷Ó5ó;ºžÖú Hc�;7A x.ÄXÊBŒ5HçRH±ÖEëܹ `Às!Æ:ØPb¬A:—Bеþ(ÒXçÎMPž 1ÖÁ€²c Ò¹R¬õ@‘Æ:wn‚ð\ˆ±6”…k�Î%+ÿ–þß¿þۿʧÿöiLÎwkýP¤±Î�› <b¬ƒ e!Ƥs©-xµðý—ýùðÓåýOÞ�éÏú˜Në,��É‹·,”iñ2Ï�÷íJ�2úcY0+y­ió×Ê‹ÇÒÇ�“מ¾C.˜?K.y:}¬GÊë€Nëܹ `Às!Æ:ØPb¬A:—òÉÊß�>ýHÞýø=9ðÑAùÍûbú³>¦ÓÊ%ð¾û–È‚ûÞ”ãúËÛ#råÜEr÷ÛúËë²jî¹{¯N9.oDó�rýˆN�á«Ï’ Öm’�.‘%À}£±Î�› <b¬ƒ e!Ƥs)-uõ*_-zßüçßÈkïî�mo¿ÓŸõ1�¦ó´ à7eÝâ›äÅô7ÍÎuWÈšÑè‡Ñ;dÁªíɃq¶ËŠsï��éoqž¾‚ �4Ö¹sÀ€çBŒu° ,ÄXƒt.å£ßó«·zÖ«}µðýæ?­•ÿÇÿù>1MVýÓ­ñc:MçÑy퓟.¿QžÑŸ¾BN[—»t”�K¯�áôç8À}¥±Î�› <b¬ƒ e!Ƥs)½µ³~߯ÞòY¯úý¿=öÿ’÷èÿ=¦?ëc:MçÑy­}úF¹òéô‹~�xx90À i¬sç&(€Ï…ë`@Yˆ±é\Êg¼ðѧ¯�ù·£>&?]L 0Hëܹ `Às!Æ:ØPb¬A:—ò)ßúºÿï7[ðµ;¾Yy 裯¬• ®ß"GÓßãðÀNc�;7A x.ÄXÊBŒ5HçR>ÿýß¿üë¿È»¿'oþóoâÂW¯úUú³>¦Ót�·-z—o*–¿q^—Ugž-kv�~>.oÜ·DN¹~$™”… ¯4Ö¹sÀ€çBŒu° ,ÄXƒt.壥®ÞÚù£O?Š‹^½ÚWoù¬ôg}L§é<ùxx¹±ìå›’‰£?–³’ǦÍ_+/¦_Ü 0@_i¬sç&(€Ï…ë`@Yˆ±é\*'+�õ*_½Õ³~߯ҟõ±rù;‘±ÖEëܹ `Às!Æ:ØLy{–ù'Í‘U/Ó8õÎöûäàŠûämc+ÄXƒt.YÑ‚WÿO¿çW _¥?g�»Šµþ(ÒXçÎMPž 1ÖÁ}°wH®ÿæ�¼aM¼sØxl ¿DÞ:ùÏÚfÍ–ß~^~oÍ;FGî?7Zö¹rh¯=½—C©ëv‰2¦ Zˆ±é\ )Öú Hc�;7A x.ÄXôÁ«kåÔ9kåek0ÑFŸ•‡‘}Ö´÷öËËÃdhGJà´>°r½Ú°^~wÑ)Ñï§ÈÁ'�y¡»c Ò¹R¬õ@‘Æ:wn‚ð\ˆ±6Azl¹œpñýòÜ-ÊôøÀ;SN½æÉVáõò-óâéC×Ì“ii1ûÆð 9ó¤ô@=óBYµeº¼!Y<}ž¬z5yî¡n—ù3­ùJÓNš'KÙ•”¿ñ:¤zÁñüËå®h}NM×gúùw·žóƦÛåÜ93Óå�.ó¸=}nºž�ÜÝZ‡isVÈÐþýÉvvÌ9<"kÎ?½½¬[¶v)1©TÀ}”ÀOßþ·r@ áo¿ý¾W¯øR<]Ká+~‘\¼ÿyùÝ-Š£ÇÌoÍ_(jsË9òm]Æ—äwÛ.õ9-‰§ék¾³÷rp^º¬Y_’ƒO&«oÿâ䱓£åÏË-�„˜äß}üR¬õ@‘Æ:wn‚ð\ˆ±6AÒø¤™2÷†'eçá÷dß«÷Ëü“fÈÜÇpt0>3�þÞ–•2cú<¹jx—zï°ì|d¹L›~ž|wT——+€÷?,ó§Ÿ.KKç^)§ž´\ÝŸM›)óïÙkúšK¯JJ¶&W§…ñô‹î——£åÝ ‹ãußOùž²*ZÏ}úú�]­÷…r¯¾~¼žÑ?dæ­”§ôv¸ûGdÕœ2cÎy2�–}¹íŠo—»_î=?z�ˆâ}phôI¹jÎLYüX»ÐFàöo—¡Ç6ÈC�¨!y.ú<ï{a(ý]=+;£ùvnÚ C›¶Æ�=Í£¿ëÿêgäW� ÉS[žl=çÑ-Éçð½÷vÉs­e?¿Î£/”>;¥ø÷–´~?òzëf-ewÈÛ�_Ñ*mß¾yvûñ´¨mTŸ<[\}…•ß�ý>ïoäðë#rèj�/zþþ‡âç¾uÑßËÛ#Ñs(€Æ,Ä”è\ûàƒÓ5ó;ºžÖú Hc�;7A x.ÄX› iÞ�xïß'ðÊç“ß#ñkÄëtŠ|6yŒ`ìBLÇ¿ÿ}¤±Î�› <b¬ƒÍ hl=Þu®Î£M®žvÑòsï^y#o¿¯îRÇWíž'k^È^ûY¹ªppƒX—uÒ2¹w4·1n=¹–}{_—_mÒ[?w¿x�prµmzKæY—È¡èyGnŸO;°òrdä>9p†–¸Ýo�½Ÿ‘·oï|¼£Ö×[ ånº¬û£çÌûŽiÝú>n 0N!ƤúEc�;7A x.ÄX›Axl|ð©ë’+tËð{/ÜTüàÇ®’é]¿8÷=¿£OʪkîOŠ]ã;€Ï=ÿödZ\ê^(ßݱW~µ#ù⮪ àø5Γ5;ô¶¾ûåå{.”i­Ò·a=_¿xÚùÉw ¿·— ݲBîÊ?KnßüTüY‰~?¬·oN¾ówüp4Ï–ú·€În·üÎÖ¿‰׫rßyo¯^‘”ÀzEî�«×'Wýî^~·à”äñ³´ NŠÞ÷öÿ\ž¡óFþrQï+€õõöþBfËšõ%9¸a4¾ øÈÃÉzÅß|þ¢ÿ¥‹c Òý¢±Î�› <b¬ƒÍ  ¼¾ø~yî›_•iñ�w¦œzÍ“­Â«£Ž¼1¼¢}kå™ʪ-Y™U,V÷mY+óg¦ó�ôUY>¼·µŒC/Ü^˜¶ô‘¬ìÝ%÷^tzüøôË6Tßb¹ªÖŸx¡LomÓí²|ÎX àÈþ­²êüd½tygFûˆÛ?O"ú�½�mˆoýÐ#CòÜhZGŸÇçâÇ’Bx,p¼ŒÖ²ŸŒ_§£¯Ü­žÍép*Ä$ÿî †Æ:wn‚ð\ˆ±6ƒ2ø¸XðŽ�Q¬(ÐÒxèÕ¬`î `¯…k�è�uîÜ0à¹cl%ˆøða9_‘»L²¦SÔ¾WŸl_ñ»D-}'0&¿c Òý¢±Î�› <b¬ƒÍ „P?wCr{ä3Óïî—G/¶ÿápœµÉwÞÛ//·o/=ôjŸoÿ ï…óßÀ>ÑXçÎMPž 1ÖÁfPZ{îÐþ½òÆ^ %€0„k�è�uîÜ0à¹cle*Àºc Òý¢±Î�› <b¬ƒÍ P@¸BŒ5Hô‹Æ:wn‚ð\ˆ±6ƒB á 1Ö Ð/ëܹ `Às!Æ:Ø 0„+ÄXƒt@¿h¬sç&(€Ï…ë`3(À öÉÒ™z¢4OÖì0¦· Éâ9kåes&Jˆ±é€~ÑXçÎMPž 1ÖÁfP(€�{l¹œ`¥¯®•Å·l/>æ�çn˜'ç>²×œöèÅódÕ«ÙïþÀ;×}UÎ\·ËœVKô�êá{PGˆ±é€~ÑXçÎMPž 1ÖÁfP(€�{l¹L?}ŽœY.=-€‹%oÕ´It00Xˆ±é\ûƒ?ù¬|æ�OŒL@-'Ê¿ÿÓÏšçV®i¬sç&(€Ï…ë`3(ÀÀ€ÅåâVyè¢óŠÅj¾><"kΟ#Óâ”™rê5Oʾt¾G/^.w ¯�SOJN^¦Ÿ·¼¼÷IY>gfrBsÒWåú-ûÓåî’‡.›—.çtYüûªØ}[ÖÊüø6Ï‘™ʪøùÛeÕœô1U(wKÓ.ŠÓx…ÜuË…2=~üt™ÿÃ\‰:ºA–fë8s¹Ü;š-«íå[–Ëò{n’3Óm›6ï&yn{ÚU?I§Å¯·_žk½–¹yçÉâDzåæç›)g~skk_¾‘Û�Óæ\%Eë¤Ï�×1¶\MçEˆiŸùáþTË_kP½üû?ñ¯ÖXçÎMPž 1ÖÁfP(€�Ë®.Ý?$‹ç­”ç²ÇsðS×̉ËÓ¸¨<¼KºøôV¡ùèÅ3dúE÷Ë?Öß÷ÆÓ´´]óBRúî{á&9uÁÝòF¼œÓ£×I–³DVÍ™#׿�,§eôn™=ÿ®‡“ç¿z¿ÌŸyž|7-h]<}¦Ì]—¾ÞÞ ²8Zî½q)û¬,ŸÍÛZǵrêé7ɯÒåd´|�vþýòrüœýò+ýý²'[ÓN˜·V~•–¼;xžL�æMöÃ~yùž ez´Ý;Óy³ýÏwñÙ©ó¥ûrþO¢õxõv93ÚÿC£Év¿±ie´ßn�ŸÏÀ d!Ƥséÿý¹ò`¬ô\Ê:ÇrIc�;7A x.ÄX›A¡,W.î‹~>ó†­ÉãU·€Î=çÑ‹³Rµ=mFáyzu®^¹jÜ’yËJ™¿îõܼïÉ?®ûjîjÙľŸ\(s˜|ïo£øôâë=uMz•³Q¨>wÃ…²fGûw¥Wù_k«\5g…<OË_Õûº¬™W¾:w¿Ü{þyòݽùy�ùö?,ó/2·{禭À x!ƤsÉÈ@}Ö9–Këܹ `Às!Æ:Ø 00`…rq¿+ËO_.�nÉJW½’už,ÞÕú®ÚüsÀç?Ü^F}½¸¢Žo»œ›fé,€ûpðù¹ÛlçXÛ}hÿ~9¤?S€€…k�Î%kõYçX.i¬sç&(€Ï…ë`3(ÀÀ€Yåâ¦2cÎ<™?®åæy²&ýNÞC£[å»çÏCœ~—ð=éw ¿wXvo�¡ô»}[²ï~5ý~ÞßüÔ5ódyë*ÞŠ8.¹Û¯¡ßÅ;ôÈ“Éí– óWp¾°Í¾8›·ê;€Ï¼!z­ø»‚uû†ä¡-úÀkåÔ9íïÞ÷Âí2wAºþÑûqê5Å+¥Bb¬A:—¬ALÔg�c¹¤±Î�› <b¬ƒÍ PÖåêÒçn˜Ó~üÕ»eþÌäädÚéʪ[–É™c(€ß{o—çâ¡è÷ª82ºA–Ι™¼ÆIóäÜ{:÷�ο|Ý 9õ¤d]¦Í»IžK¿ï¸\kéûÜ-&¯™~þÚ.ó–æ[p“ ¥ó½1œ{­9WÉC­rüY¹*Þ嫌übâsD�Xƒ˜¨Ï:ÇrIc�;7A x.ÄX›A¡àJç- Ç¦³,˜:BŒ5Hç’5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° `®ô§>,CϤSVˆ±é\²1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB À•qÀ;n—S£ºión7ou 0„k�Î%kõYçX.i¬sç&(€Ï…ë`3(À®c Ò¹d b >ëË%�uîÜ0à¹cl…Âb¬A:—¬ALÔg�c¹¤±Î�› <b¬ƒÍ P@¸BŒ5Hç’5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° `Wˆ±é\²1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB á 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁfP(€ \!ƤsÉÄ@}Ö9–Këܹ `Às!Æ:Ø 0„+ÄXƒt.Yƒ˜¨Ï:ÇrIc�;7A x.ÄX›A¡€p…k�Î%kõYçX.i¬sç&(€Ï…ë`3(À®c Ò¹d b >ëË%�uîÜ0à¹cl…Âb¬A:—¬ALÔg�c¹¤±Î�› <b¬ƒÍ P@¸BŒ5Hç’5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° ``°îÞ t°ÎÇ"ÄXƒt.Yƒ˜¨Ï:ÇrIc�;7A x.ÄX›A¡€p…k�Î%ksü†dô“OåÈÈmÆ4€ÉÅ:ÇrIc�;7A x.ÄX›A¡€p…k�Î%ksÜ6î¡üS†uŽå’Æ:wn‚ð\ˆ±6ƒB á 1Ö �KÖ æ¸Q€)Ä:ÇrIc�;7A x.ÄX›A¡€p…k�Î%ksÜ(€Àb�c¹¤±Î�› <b¬ƒÍ P@¸BŒ5Hç’5ˆ9«GÞ•�ßyIVÓ&#ëË%�uîÜ0à¹cl…Âb¬A:—¬AÌqã `0…XçX.i¬sç&(€Ï…ë`3(À®c Ò¹d bŽ0˜B¬s,—4Ö¹sÀ€çBŒu° `Wˆ±é\²1Ç�L!Ö9–Këܹ `Às!Æ:Ø 0„+ÄXƒt.Yƒ˜ã7$£Ÿ|J ¦ëË%�uîÜ0à¹cl…Âb¬A:—¬ALÔg�c¹¤±Î�› <b¬ƒÍ P@¸BŒ5Hç’5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° `Wˆ±é\²1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB á 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁfPÜÀOÊÒ“N—«¶XÓÔ�,ž¾\5§õ²]VÍ™'«^µ¦è·w¶ß'WÜ'oÓ0X!ƤsÉÄ@}Ö9–Këܹ `Às!Æ:Ø Š/Wÿêž«ä®ò�Qcª;l<6�_"o�ügm³fË�o?/¿·æ£#÷Ÿ-û\9´×žÞË¡¿Ôu»DÓP-ÄXƒt.Yƒ˜¨Ï:ÇrIc�;7A x.ÄX›Añ¥~ôâ²ø±ücÀ˜äFŸ•‡‘}Ö´÷öËËÃdhGJà´>°r½Ú°^~wÑ)Ñï§ÈÁ'�y¡»c Ò¹d b >ëË%�uîÜ0à¹cle°ðvùîù§'Ý“¾*×ß³BNm•ºZð&%­–¿ùƒsR'ð]ÃÑsNJŸ6ïvy9]¶>çÔ[¶§¯yumnÙi<¼A–žž.wæ…òÝ…ðË·Ì“.¾_†®™'Óæ¬�_ïÐ ·Ëü™íå¬Ú²?�?]Ç-k[Ó§ÍY!CûÛË{#Zÿ3Óõ/>S^eÜGi|ðñô÷í+´þö«Ñï{åðŠ/ÅÓµ>°âÉ•ÁûŸ—ß-Т8z|ÁüÖü…¢6·œ#ßÖe|I~·ýçrPŸsÑ’xš¾æ;{!ç¥Ëšõ%9ødò7ðö?,J;9Zþ¼ÜrÐHˆ‰ÿýÈ#Ö &ê³Î±\ÒXçÎMPž 1ÖÁfPY?uÍL™¶àvùÕþ÷äÐè“rÕ<=øvÀ:¯}°>müü÷ö>+ËçÌ�ßiÍ_]GÏ=ýB¹ëÕýòÞá]2tÃ<9á¤òT6qýâÌž”�‡£Çö?,ó§Ÿ.KÛ%‡Þ;,;‡WÊ©'E¯—¼Ù:®”¡ÑÃѼÛå®ógÊ î–�º¼-+eF´�W §Ï}d¹L›~ž|w´ýz˜¢ÏÅÐcä¡GÔ�<½ÿû^JWÏÆŸ—�›6ÈЦ­ñcOEóèïú¿z5𯒧¶<ÙzΣ[ö¦Ëß%ϵ–ýdü:�¾Pú� Jðï7,iý~äôÖÍZÊî�·¿¢UÚ¾}óìöãiQÛ¨>y¶¸ú 942*¿;?ú}ÞßÈá×GäÐÕ:_ôüýÅÏ}뢿—·G¢çPŒYˆ)йf b >ëË%�uîÜ0à¹clepð³²ü¤¯Êš|Ù¹e¥LoToã¼ï'Ê Å?÷.€gÈüŸä‹°ä±âktŠ ày·'nä�ž×zÍL{]uO—«¶´§eë½fGR€O¿aknÚ{2tÙL9uÝë…Ç0¹ÅÅî«É­œ�n•GÙ*oè´ÒÀ:ßC›ô?hÿÞ.€“Ò7ž¦…ò#OÊˇߓÎ=çðÞ¸ îVÄWúî—C•�øö°üN Ùy+Gôù¹¢·vü—?O^;+z ¢ùþ¡XJs h€± 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁfP´^ñw#=YÏ­¦EhVȦ %m�¸ôüÇ–7(€‹å±ùCr èvá›]\6÷‡z¦±Ž¹¢¹s›:—�ÉoߎäÊÝG‡Ÿ•_½º·}Ëg£N ßòïÉÀñ•ðñ´]òÔ#úû^y.þßâsºÀñw;½š÷F£i{“«sÏøy;�÷�øÓÇûQïýû¤^ù|ò{$~�x�N‘ƒÏ&�QŒ]ˆ±þË%kÓk·¾$G>ùT>Þ=$ŸÙ¸G>Ž~>2r[Ç|«GÞ5/ºM¶½-ë�—duöXÍå�Ëþ¡œµî¿'®¹ÜžÃ:ÇrIc�;7A x.ÄX›Añû àpaÙã¼8WÐêÀÓ.zXvîÝ+oäµnÍÀ¨ã°ìÛûºüj“Þú¹ûÀƒ,€“«mÓ[2ϺDEÏ;rûüxÚ�•¿�##÷É�3´Äí~ è¬è=øäˆ¼}{çã°¾Þ-wÓeÝ=gÞwäHëÐ÷q h€q 1Ö �KÖ ¦ß†d4+eÓ²vt£5_]·É¶Ý¹¸ïË/9íoåôoþ­üaúû~ã§òùÿ\šÅ:ÇrIc�;7A x.ÄX›AøwŸ¿¼¼¿ÞwϸæIycÇvÙÙ*W»À;×}UN8ý*y4þîÝ‘¸Üm/[Ë^ë;€£é¹²ÌÒq…nüÀ3eþ=Ûã¢n_´«®‰¶)ž®ëh|ðœÛ“é/ÜTüàÇ®’é|ð“ܾù©É- ß;¬·oN¾ówüp4Ï–ú·€În·üÎÖ¿‰׫rßyo¯^‘”ÀzEî�«×'Wýî^~·à”äñ³´ NŠÞ÷öÿ\ž¡óFþrQï+€õõöþBfËšõ%9¸a4¾ øÈÃÉzÅß|þ¢ÿ¥‹c Ò¹d bú-)hãR6.hß•m·æ¦§Wív¿r7y~6ÏèF»îºüXzåð'{d}áñÞþð?”ÿó´üc—Ëç¹ € YçX.i¬sç&(€Ï…ë`3(ƒ,€µˆýîù§'Ý“¾*×ß³¢ë- ßÛ¢ei2ߪ²éÝ àâ²çÉòuùe§·€~XÏLú3/”ï–n m±nѼoËZ™Ÿ-'Z¿åÃzûg�–¬ã]ѺŸyR2}Úœ2”+™ß^Ñš¦ë°jK©œÃä§ßÙû؆ø6Ð=2$Ïé,OÛ%ÏÅ�%…ðX àx­e?¿NG<^¹[=›ÓàTˆ‰ÿýÈ#Ö ¦ß´|ÍJY-k»”°÷pþ¹ÙïŸo]kù}.€sW€ðXçX.i¬sç&(€Ï…ë`3(ƒ-€Kô6Í3WÊsÖ´ %5à�–ÆC¯fsŸPx-ÄXƒt.Yƒ˜“‚Ußú’Œv”ÂC2Z(€‹€ÉÇ:ÇrIc�;7A x.ÄX›Ad¼ï'+dé##²ïpz è93dÆ7GÌyÃD ·ö½údûŠßý#òhé;�0ù…k�Î%ksRð¶.ç/·€ tÖ9–Këܹ `Às!Æ:Ø Ê àC;6ÈÒy3ÓƒîL9S¿ãטobiiÛùuê-Û�ù«PõýòòpûöÒCú�׿|˜¬BŒõïc.Yƒ˜“B×[@oÛ¼zäÝÒ- ëû- µðý?¿ñµÖï�…p$þîáhù»‡Š�/YçX.i¬sç&(€Ï…ë`3(z h/–}{÷Ê®œ˜c Ò¹d b†++fËrEmV®fv¿”<§Q <žxºüÇkþ»œµ.e\ý—ÒŸä¿«øÌ:ÇrIc�;7A x.ÄX›A™z0L!ƤsÉÄ„[ëwj\½ |e�c¹¤±Î�› <b¬ƒÍ P@¸BŒ5Hç’5ˆ —†dtŒW7¬s,—4Ö¹sÀ€çBŒu° `Wˆ±é\²1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB ølHÏY+/›Ó*¼ºV߲ݞ†Nû‡déL=9œ'kvÓ[Æø~ Pˆ±é\²1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB L€½OÊõ No�€L›w•<4Úž>tÙLY:œüüèÅódÕ«Ù´I\�Þ.gλ]vêÏÑúžzñ�=ßxî†yrî#{Íi}y?`纯ʙëv™Ójyl¹œÊ$À¤bòƒs>°1PŸuŽå’Æ:wn‚ð\ˆ±6ƒB Ú³²|æYüÈvÙÿ~Xv¯•¹§/—G÷—ç�Bpžã¸¸Ï«¦M¢+€)€˜4BŒ5Hç’5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° ``°öýäB³hÛùØMr× ÉÏ/ß²\V½º]VÍÉ�¨Ä…¨Ž+ä®[.”éñã§Ëü¦Ëê(yõùËåÑlÚ5÷˪óÓ«ŽOúª\¿enÞ”ÎwÃÃrý¼™Ñ|És÷mY+óãÛ!ë•Ê7ÉsiIýèÅËdÍO–§ë1C¦_üprõnl—^5gŽ\¯ÿqÁ«z›í•2¯Ó{òƦ•rê‚ô¶Û\ À¤b¬A:—¬ALÔg�c¹¤±Î�› <b¬ƒÍ Pƒ•/w»©,€O/Þrø©kÎK¦÷(€Ï-•{ú=·Ë7µ�•Š×\÷ÕÜU¥j¿Ü{~²L½:µp¥èþ‡eþ‚»å�øªØòm‘µè]!OE??uÍ™ûÍûå©öʾ´ØLt+€«—×QÖ¶ÖC�öÁ‚΢»s»’âxî“ïýmTwy?ªö]û±ªýX~­×eͼòóu™I�Þ.€�ýµe¥Ì_÷º¹Ý;7m¥`’ 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁfP(€�Á*^<$‹s'"Y9WY—ʽּ= àòwoœ*ÀÅ[g’+\;ŠËÖºEÿ›[F¦=ÿ^ùÕ=7Éüy§Ç·(žqÍ“éU±¹ç• àŠåYeíÐeʽš7ZÎÜôJá<³„Ïí£Fp—÷£jßeóªîû±üZÑûyq©Ø�ä_¯Uw¼î ™~ÃV{»3ÀL!¦|îâš5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° ``°ôJÓ7líx<_Èæ‹º&pñ*ßê¸ÞÀÝoWÝýÊÕÎuÌ_±Û~Lí•»Îÿª¬Ù¡?GÏëVW,Ï,k7­�ùëvEûÆ^ÿ¾^Üåý¨ÚwyÝ÷cùµ\lÜjZYÛ}hÿ~9¤?S0i„k�Î%kõYçX.i¬sç&(€Ï…ë`3(ÀÀ i1{ºÌÿáÖÖw»Úÿºgfòz3/”U[’ò³ \GömY+óg¦ë9ó<¹~8yÞ£/“Uù×»øáÖú¿÷Þ.yè²lûfÊ©—µ·­°¼“æÉÒG’²³PGÏ¿ë|]×¬í¾¼ne­¢3¾9Òñx¦¸]ÅýQU7y?ºí»¼ªýعûå¹[òïñZy.½¥t¾îØ_ÝßZÇ7†WÈ©'%ÏŸ6ç*y(-½µœ¿*^×òUÆ 4!&>_òˆ5ˆ €ú¬s,—4Ö¹sÀ€çBŒu° `ut~w­_†.›'׿`OóI¿öc±SYˆ±é\²1½vëKrä“OåãÝCò™�{äãèç##·ÙóúhÐë?ÿYôøå²ìÎÙò™KɲèçE7Ξw€¦Ý¼l0¯ëÉö�g�c¹¤±Î�› <b¬ƒÍ P¨ÃçøÐ½µñí¹+’ýÕŸýxX†.žI b!ƤsÉÄôÛ�Œf¥iZ¦Žn´æóÕ ×¶ÌÏJÑ´,�©5_w'ß¹HN6÷Ãø·€~³Î±\ÒXçÎMPž 1ÖÁfP(€Ôák¬ß©{Âô¯Êšn·pö̸÷ãŽÛåÔè$vÚ¼Û ·¢SWˆ±é\²1ý–¨qi¨ïʶ[‹ó¬ßýi|emb�¬/?®Wߦ�­y7yì�—duzEîèHz•néù‰äõ“iéórӳ׈ ÞtyÅeô^ÿÏüñm²í�òóêJ Ò¸� Òe2{~qž“ï¼<¾r6vç"™ÿÐ92-÷ÜÖ´T¾`Íž°é¸ËÏÆ­ÇŒ+sÓióoN¯â-?7ö9™ýP6-Z÷K“yÛËê½}L4ëË%�uîÜ0à¹cl…Âb¬A:—¬AL¿i9š•¦Z¦KR-` ·TÖ’µUÒFóçÊßÌê‘=í6.msËŒ~Ï/oýîRa«ó—JàìÊÞÖãÑïÛZWùV¯{ž±ÀZ f¥¨–¥¥‚õÒE…bVoÕ¼¬U'z^œÝ†9{^ôûìòU¸¥×É?^.ŒóóiÁÜ.œsWûfó÷Ú>°Î±\ÒXçÎMPž 1ÖÁfP(€ \!ƤsÉÄ Wï‚wýî¤T�¯Ô� ÚÛdÛî\�»qOñ–Ì·¾$£­8¹z·uõoK©¨-<Ç7ù+lUg�Z§žo•»ypá–Í…eÍÎ]�œê¶ëË%�uîÜ0à¹cl…¬û‡7¬sDZ1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁf Fï—¹ñ�q¥ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹cl( 1Ö �KÖ &ê³Î±\ÒXçÎMPž 1ÖÁ€²c Ò¹d b >ëË%�uîÜ0à¹süøqó€@FÿÝ1ÄXƒt.Yƒ˜^»õ%9òɧòñî!ùÌÆ=òqôó‘‘ÛìyÇí6ÙöNôZï¼$«Íé†A¯ßüsdÑã—˲;gËg.]$Ë¢ŸÝü9{Þšvó²Á¼®'Û@Ö9–Këü¹ `Às„B!„Bñ'Ö �KÖ ¦ß†d4+UÓ²ut£5_¿Ü&Ûv7(€¾~³e~VЦeéüK­ùº;ùÎEr²ñ¸Æ¿}L4ëË%�Uê6A xŽB!„B!þĤsÉÄô[R°Æ¥j\°¾+Ûn-γzäÝøÊÛØ;/ɶÝÅyÖïN§ÅöÈúÜs³ågÓG7– àâôΫƒ{¯_ëÊâŽ×®#)HãR4.H—ÉìùÅyN¾óòøÊÙØ�‹dþCçÈ´Üs[ÓRù‚5{n\À¦Wà.{ùÎÒwæj|çìîóèôòUÂ+€;×Oo Ýø àø»•£ýg”ù¸`�c¹¤±JÝ&(€ÏB!„B!ÄŸXƒt.Yƒ˜¡ÓïùÍߢ9+�·q.LÏÊÅÌî—’²¶ð=À¹é±¦Eî àüíŸí[@'¥¯5½|ûèD»Ðµ§·–q©~ÿoòXüœÜë´KÞä{³ùݹ¨ñÀq)Ÿû^g\³Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬AL`Ât»’¸‚ðã¿ €þ±Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬AL`� W)—¿¸'½‚»ÿWN0Ö9–K«Ôm‚ð!„B!„Bü‰5Hç’5ˆ €ú¬s,—4V©Û0à9B!„B!„øk�Î%kõYçX.i¬R· `Às„B!„Bñ'Ö �KÖ &ê³Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬ALÔg�c¹¤±JÝ&(€ÏB!„B!ÄŸXƒt.Yƒ˜¨Ï:ÇrIc•ºMPž#„B!„Bˆ?±é\²1PŸuŽå’Æ*u› ëË%�Uê6A xŽB!„B!þĤsÉÄ@}Ö9–K«Ôm‚ð!„B!„Bü‰5Hç’5ˆ €ú¬s,—4V©Û0à9B!„B!„øk�Î%kõYçX.i¬R· `Às„B!„Bñ'Ö �KÖ &ê³Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬AL¯Ýú’ùäSùx÷�|fãù8úùÈÈmíééc�—¬y·rº·zm?˜pÖ9–K«Ôm‚ð!„B!„Bü‰5Hç’5ˆé·!ÍJÏ´ ÝhÌ·qÏ$-Fknÿ8,=áe©ñ8°YçX.i¬R· `Às„B!„Bñ'Ö �KÖ ¦ß’4.=ãô]ÙvkyžH·¸ê átÚèHz•ml�¬ÏÏ“¾~¶Œ�ßyIV7zþtY¿;÷ü^Ówï‘ÑükÔÚþÛdÛ;ö²«ý±|ï3Ÿ‘'J¾÷Gíy–ž�<öÐþ‰|æ�þ0�'-ŒÓß³ùÏúÃ?hÏ›>¿ã5þý�³ZÓ“uŽå’Æ*u› ëË%�Uê6A xŽB!„B!þĤsÉÄ@}Ö9–K«Ôm‚ð!„B!„Bü‰5Hç’5ˆ €ú¬s,—4V©Û0à9B!„B!„øk�Î%kõYçX.i¬R· `Às„B!„Bñ'Ö �KÖ &ê³Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬ALÔg�c¹¤±JÝ&(€ÏB!„B!ÄŸXƒt.Yƒ˜¨Ï:ÇrIc•ºMPž#„B!„Bˆ?±é\²1½vëKrä“OåãÝCò™�{äãèç##·µ§§�u<>UôÚ?}3$£SuPb�c¹¤±JÝ&(€ÏB!„B!ÄŸXƒt.Yƒ˜~Ë�iÙ9ºÑ˜oãž)ZNÖÜ?ã5e÷/�¬s,—4V©Û0à9B!„B!„øk�Î%kÓoIÁ—šqÁù®l»µëË%�Uê6A xŽB!„B!þĤsÉÄ@}Ö9–K«Ôm‚ð!„B!„Bü‰5Hç’5ˆ €ú¬s,—4V©Û0à9B!„B!„øk�Î%kõYçX.i¬R· `Às„B!„Bñ'Ö �KÖ &ê³Î±\ÒX¥nÀ€ç!„B!„âO¬A:—¬ALÔg�c¹¤±JÝ&(€ÏB!„B!ÄŸXƒt.Yƒ˜¨Ï:ÇrIc•ºMPž#„B!„Bˆ?±é\²1PŸuŽå’Æ*u› ?Ý[Ñ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ Àä¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤hsê=ýFZ¸úIºrú¥ô™™3éJïë…¹ƒñ¾%¬÷ûÛùµ´ëåo§½ÏnOŸypWÚÛûz×S_Œ÷³é©½½ý÷¦í;ãí7Äu¼?XÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆÉKi~0Tm‡­ó3Ñ~¥¬÷ûÛžv†ªí°uçƒÑ~±ÛŸ]çðu¾?¸Ñ¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h“þ€µª6Ö�Ó‰§Ûmí·ósíY¸�3éððãgè¶–ÎÎí?ï• gÒü…öq‹û?G»ßÀ…7Ò“‹Û–¶‡ïoÑÁtbð#÷O¢?`m†ªÍ€ul ;8·5~ömÜŽþ>“?þögÛýÞg| ¼Æû€›,:Æ*) u»0†ÊI’$I’¤zŠéJŠ1ÉÃÓÁP5[dž¨Íxè¾Þí‘K0?ýR:<4�=|zø Ýñámû<½çìsøôØ@7¿ÞÈx�÷·¸Ïµ€¿˜¶ÿt0TÍÃÖ]éöáí;·§Û‡®yh;|îâwqŸ±ç˜èñï9þÖxp“EÇX%墡nÀP9I’$I’TOÑ"]IÑ"&kÖ6ž~#Í�|ïØ¼ƒ�ï`Û`˜›Àùs|ó׋Ϲü±}×2È]/ý3pgðfãÜáÛ�w Ýw½�€ºDÇX%墡nÀP9I’$I’TOÑ"]IÑ"&kXu<|vnkdÿµÀ½ÇŸ¿äsM†Ï¾m� gÃÏ^Üçzõ‰Ž±JÊECÝ. €¡r’$I’$©ž¢Eº’¢ELÖ°êxhÀ;¸}µËÀ·¥'ç>½¤ô5¹žK@¯f{ÚùÓ¯¥M÷ƒ3x÷.Ûgp™æky|¾Ïež¨WtŒUR.êva •“$I’$Iõ-Ò•-b²Š™üù¿ýË27Û<Ämo/m‡ö¹rõãtb®{~fèòÎyðÛ>¶y\û˜Á8nðÒsd]¹ë5îyp×Ðå›÷¦íOõoç!öŽÜ·¸ÏØ¿+=>ooÎyü·Ó®§¾¸ôx¨LtŒUR.êva •“$I’$Iõ-Ò•-bBIá%  bÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ ¥4—œù;vh¨UtŒUR.êva •“$I’$Iõ-Ò•-b0¹è«¤\4ÔíÂ*Wc§íHŸý�/,óù;Hû_þ ]n÷“$I’$éV+Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®Æú௧G_žM3‹^Hû¿öÍ ø¶ïþºÝS’$I’¤[«h‘®¤h€ÉEÇX%墡nÀP¹ë€÷§Ùööp'ŸøJoÛéÏ?jï�$I’$é*Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®ÆV§ù?M·ÿÎÒ7Ž´·s—?H3ßùzúüàrÑ_øJú£Co¥‹íæÜÅ7ÿ4ýÑ�_êoÿ�/¥ÛïûGiæýöbÒ½çü½ö9Ͼü'é®/ ?ϯӇý½–úè×éÐ7‡_ïëé�ÿll¿Åç¼”NúFº}ñ9w¤}/Ÿowê·ê{Ëõ^ïÀ¼ÞøsŒ¼ïÞsÜõÍgÓk†ä’$I’´áŠéJŠ1˜\tŒUR.êva •«±µÀƒam¿÷Ò�»óÐó+é�ý¢¹\ôŸ÷ëé¶Þ>¿wè½þ.—fÒõnþ¾¤çËI?ÿƒfàúG/^êooŸów#}öK_OûŸÏ—œþE:ðÍ|¶qïq]&_:š¾Ñ Z¿’ö5ûõ^ï;Á~ísþÞÝ;Òçïü“ôçùuú§é�ïìh÷¿Þî·Ö{¼Þ²÷õ¥f¸ÜôŸ~Ð Åoð…æýüøÐŸ¤»¾ô•ô�ÿS³$I’$iã-Ò•-b0¹è«¤\4ÔíÂ*Wc« €/þô�Þ¶éÀ|ÿöÙ?ûúÈíA_Þ—>ÿ;ßH?Ï3Òfûiÿ›ýmËj‡µŸýBï5Û™ê þ{YØýN>S·}Þ¡.¾ø�f¿}ÇÛ;Ïy÷Ÿ¦Sí]MíÀ÷³íß^ã½5¯·Òûºóéí|ãÈþÞk?�~<¶�$I’$iã-Ò•-b0¹è«¤\4ÔíÂ*WcÑøâG¤“?ÝßœéúÙÝ3í™¶ éÏïëÝþf4*žMÜÛ·¦ð¯ÓþÁY´?}+�”¶ÃÚÛg ×lûÛúÏóùïþº¿m¤±mís.žÉ»XûžàUß[[ø¾zÏûïìH‡Þï}}î…ô‡ùçrç¾tàÈ»éâÐÕ£%I’$I«h‘®¤h€ÉEÇX%墡nÀP¹ë€¿ºm÷ CgÔ.ÿ¼²ÅKE7ŸÛ»cñstoÛý§éä`ØÚkG>Wx±wÓ?Ηmn¶GÓ7zû-^Zz¤ö½ŒœÙ?çìƒCûåV|oý×þ~F-�ù|ùýÙ´ÿ¾?hïÿRú½ï̦³ýM’$I’¤ T´HWR´ˆ Àä¢c¬’rÑP· `¨\�õÀûÒ�?ZH¶Î¼˜/éü•ôèÈ¥’?H‡òÐu÷/ÒÙ¡}‡-?öR:u䥻ò tp&ñgßöÄ[½ÝÏžh¼Øø{ë€oâ×á÷–-~æð ËçÓÉç÷5Ÿ�|û�wÛ;%I’$I¥h‘®¤h€ÉEÇX%墡nÀP¹‹.�Òùþ¥“Ç>Sw¥ÏΗZþpp†ï¥Þ×cƒàæ³uÏÕkWû àÁgûvý à5Àk¼·•>¸y\ûåÈ×M½ŸÕ×V2K’$I’j.Z¤+)ZĬݓs§+WϤÃÁ6€›-:Æ*) u»0†ÊÕX<îÕUG/Á<¸ ôWÒúEšyy6Í<ÿ�Ò]_êÝ÷ÍÙ”g«ýçûƒô‡ß}¡Ý>öYÂíóÞußýÏâ}¾·ÏË¿H¾ù•Þã¾�>ÿàÑ¥3m/MßÈŸÙÛ{½}Í~³éÏ¿ì7áxÍ÷6x½Å÷5›~|h_³OÿŒåËýçûÂŽÅïÿÇh.'í `I’$IÚxE‹t%E‹˜AÏÏÄÛn¦è«¤\4ÔíÂ*Wc+€{�|"[ÇÎø½üAšùÎ×?C÷³_øJú£¯}îBzíÏö¥»šÁmö¥t×7‘Þœy;4¬=ûòŸ,í×{ž?ì=ÏèÙµ½šÏì~½¯§?þ³_�î7éÀk½·\ïõìþÊÈëíûé»KÃæüý÷�tûZï[’$I’T}Ñ"]IÑ"æ†0sƨBtŒUR.êva •S¯U†µ’$I’$ÝÌ¢Eº’¢EÌ Á¨DtŒUR.êva •S/`I’$IR%E‹t%E‹˜ÃÁtâÂ'iaî`° àæ‰Ž±JÊECÝ. €¡rêe,I’$Iª¤h‘®¤hsCp0P‰è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄÜV?ýFZ¸úIºrú¥x;À c•”‹†º]Cå$I’$IR=E‹t%E‹˜Á“s¯8ÎÛ®\ý8�x:Þp#EÇX%墡nÀP9I’$I’TOÑ"]IÑ"fíúÞ3ép°-;|Úg7OtŒUR.êva •“$I’$Iõ-Ò•-bnl/¥ùU†Ã7ZtŒUR.êva •“$I’$Iõ-Ò•-b0¹è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ`rÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ Àä¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h€ÉEÇX%墡nÀP9I’$I’TOÑ"]IÑ"&“‹Ž±JÊECÝ. €¡r’$I’$©ž¢Eº’¢EL&c•”‹†º]Cå$I’$IR=E‹t%E‹˜L.:Æ*) u»0†ÊI’$I’¤zŠéJŠ1˜\tŒUR.êva •“$I’$Iõ-Ò•-b0¹è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ`rÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆYµ§ßH W?IWN¿”>3s&]é}½0w0Þw=´¯yͯ»Þïç×Ò®—¿�ö>»=}æÁ]ioïë]O}1Þw̦§öööß›¶ïŒ·ß×ñþ VÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆY·—Òü`hÚSçg¢ýVvøô™t8¸¿“™3×8¸½þ÷¿ºíiç`¨Ú[w>í»ýÙu_çû€EÇX%墡nÀP9I’$I’TOÑ"]IÑ"fÝúÔfhÚ P?N'žÝçðéþº�ÓgÒü…7Ò“C�]ÜÖZÀ¶=çàŒßÅçXº?�½Æøã&xÿŸùŸ¦òã¯ePݰ6CÕfÀ:6М�Û?û¶?î?GŸÉû³íþï3>P^ãýÀc•”‹†º]Cå$I’$IR=E‹t%E‹˜uËÃÑÁÐ4Sdž¤cƒÙ'ç>^6„]õ à§ßHócƒÝpÿÀ‡O� tóyäõ×xÿ‹û\ëø‹iûOCÕß×ñ2ÏÍŸIïûûs€ZEÇX%墡nÀP9I’$I’TOÑ"]IÑ"æFvøôð¥—W¢Œ+m_Üg|Ûøå¥ãç˜è=¬j½À=îº|óÞ´ý©þí<ÄÝôÔÞ‘û÷;ãw¥ÇçíÍÀ#�ÿvÚõÔ—?�æs›¯Ž ò bÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆIÏjgÿ²¢ðÐåúõŸE 7OtŒUR.êva •“$I’$Iõ-Ò•-bN³þÙ§KgïÎÏÄû±\sùçÁ™¿c—�žÜKi~=Î|€uc•”‹†º]Cåjëòÿw9]øïÒG—`Ýäß=ÿÛ'ÿ­ým´ž¢Eº’¢EL&c•”‹†º]Cåjë¿ü÷ÿþb7Zþ´¶¢Eº’¢EL&c•”‹†º]Cåj+ú…ÖKmE‹t%E‹˜L.:Æ*) u»0†ÊÕVôË8¬—ÚŠéJŠ1˜\tŒUR.êva •«­è—qX/µ-Ò•-b0¹è«¤\4ÔíÂ*W[Ñ/ã°^j+Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®¶¢_Æ`½ÔV´HWR´ˆ Àä¢c¬’rÑP· `¨\mE¿ŒÀz©­h‘®¤h€ÉEÇX%墡nÀP¹ÚŠ~€õR[Ñ"]IÑ"&“‹Ž±JÊECÝ. €¡rµý2륶¢Eº’¢EL&c•”‹†º]Cåj+úeÖKmE‹t%E‹˜L.:Æ*) u»0†ÊÕVôË8¬—ÚŠéJŠ1«öôiáê'éÊé—ÒgfΤ+½¯æ.moï[vÿ˜'ç>^uûºYëýß(‹?‡�Ó‰§ƒíÀ c•”‹†º]Cåj+úeÖKmE‹t%E‹˜u{)͆¦í0u~&ØoæL™ïš&|ÿ׫Úïn=Ñ1VI¹h¨Û…0T®¶¢_Æ`½ÔV´HWR´ˆY·þµš6ÔÎp]iºxflpæm»m~®=K·q&Þ§}ýÁs\¹ðFzrdûméðé¡í§Ï¤ù‘}&yÿÓ‰ ùñã¯Ý�0Ü4Ñ1VI¹h¨Û…0T®¶¢_Ưřÿ÷ýðþÐ…�öùíô©ùéž¿™þÆ‘šŽÿu»í¯ÿ}z|Åmï§ÿüþ2=~â÷ÓßþW¿›öžoï`è­h‘®¤h³ny8:šæaê CÒµ «ˆ‡žsl¿Ã§Ç¶yÿáïØþùRÓ£CâIÞ¿0l$Ñ1VI¹h¨Û…0T®¶¢_Æ»ºî›iÓ¿ùâ„Càÿ˜ÿß>�þÖ¿ûeúÏy°ûÿüÛ´÷WŸN¿õïþu³ý/NüvúÔ¯¾“þ"oûëþ¶¿qâß6Û~=÷»é·~õûé~ã›éoÿË¿k °ÕV´HWR´ˆ¹¾ÃÍq×1쌬5]i{ïþ‘K2?ýFš_Üoììßð½�7øûš”0Ü4Ñ1VI¹h¨Û…0T®¶¢_Æ»ÈÃßþÙºŸžpü/ÒŽ_þ~z|hxû빿›>uì…Þ×™ö¾üétÇ_ íÿW_IŸúÕcé׃Û�ÒïlHµ-Ò•-bÞÖe|0�8½ü’ϫʗy.½î €à¦‰Ž±JÊECÝ. €¡rµý2>©Áð÷Ÿýÿkcò!ð°÷Ó¡#½Çý‡ÿØûú_¤¯üËßN{ÿ¯¡íµ#}êåïÜ"j+Z¤+)Zļ%¬Ë¸IçÕžwÙ%¢óøôK#û¬Í% `#‰Ž±JÊECÝ. €¡rµý2>‰ááïà¾kÏgÿþê;íçüƒ]`€[JmE‹t%E‹˜×Z——^cûLþüßþ}Í8oÛÛÃÃÔ燛- jWÛ69`ØH¢c¬’rÑP· `¨\mE¿Œ¯%þ �Ç·�;þ¾˜þ‡_~=ý/÷9àVW[Ñ"]IÑ"&·`¸i¢c¬’rÑP· `¨\mE¿Œ¯%y£áïÀZÛ³ÿüW;Òoý«CÃßì/Ó·5úÀgþ÷ß÷À·�ÚŠéJŠ1¹,žÍ=Ñ1VI¹h¨Û…0T®¶¢_Æ`½ÔV´HWR´ˆ9õ¶ýÓôÿ䟦¿ÓÞþ;ßüyú{l€VtŒUR.êva •«­è—qX/µ-Ò•-bN»¿óÍž~wÛð}ßNÏYÀÀ ¢c¬’rÑP· `¨\mE¿ŒÀz©­h‘®¤hsÚ…à¡3‚†EÇX%墡nÀP¹ÚZ~€õ�­­h‘®¤hsÚ]DÇX%墡nÀP¹Úú¯WÿkøK9ÜhùwÐÚŠéJŠ1§ÝòÏüu h`eÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆÉ·Óï~óë‹·—„–DÇX%墡nÀP9I’$I’TOÑ"]IÑ"&·¥¿û•î>Ôrö/°Šè«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ`rÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ Àä¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h€ÉEÇX%墡nÀP9I’$I’TOÑ"]IÑ"&“‹Ž±JÊECÝ. €¡r’$I’$©ž¢Eº’¢EL&c•”‹†º]Cå$I’$IR=E‹t%E‹˜L.:Æ*) u»0†ÊI’$I’¤zŠéJŠ1˜\tŒUR.êva •“$I’$Iõ-Ò•-b0¹è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ`rÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ Àä¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h€ÉEÇX%墡nÀP9I’$I’TOÑ"]IÑ"fݦ>IW®~’æÛn®è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄÜfÎUˆŽ±JÊECÝ. €¡r’$I’$©ž¢Eº’¢EÌ Á¨DtŒUR.êva •“$I’$Iõ-Ò•-bnÀ@%¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤hsC0*c•”‹†º]Cå$I’$IR=E‹t%E‹˜‚0P‰è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄÜV?ýFZ¸úIºrú¥x;À c•”‹†º]Cå$I’$IR=E‹t%E‹˜Â*à'ç>NW®~œN<½|À�c•”‹†º]CåªëÈþemÚz_Ú÷Êù·7îy&�êmþðõgÒ½_Þºxÿ¦��¦™÷/7�}hì1ƒíçšÍý.�f¹/mì³eèµÓ{éÀ=ýûï}ñR{_¯ùgÒ¶¼ïCGû·ÛçØ¼eðw§{Í¥ó¶5Þÿp—ߟMûvÞ¹ø^6}yO:ðúB»µ×¥·Ò¡o-½×M_Þ•¼×ñ÷ÔvêÐŽfß=Gz7V{/CÛš}‡;þèâkŽn»”~¾»ÿ]?üÌ$I’$I]ü.V‹hsCXe|øô'. Ü4Ñ1VI¹h¨Û…0T®ºÚÁã¦{ö¥}�<Ú³'ÝÑü¥´5=üz´½õý£éÃw~Ðî{wº7ß÷­ûÒææöžôóKƒðÖ´í[ícvßÝ<×`{ðj¼›wæçß“¶µCܯ>ŸšKàÏmÙ—f3à‘aëÒ´ÿ�¦{¿Ü¿}Ço­þþûÏÖïÒ/Ó½ù9o»3ÝÕ¼ßÁÏáîôÝ7óKïeóýù¹ö¥»¶æÛ[Óž#½7Öa¾—¡ðçvÿ2]ì?¼ix�>2þè…ôÕÁcv>—ζwK’$I’&oñw±JD‹˜u;˜N\ø$]¹ºÒ�÷¥4õL:¼ì~€õc•”‹†º]C媫¿ké¾`û ³?¼¯ÙvÇж·Ý—6o½3=||0¸Ü‘Ì·{�|ìÎæ1#gÄ<ƒØ-�¦cÃàžMíï72l}5ík¶ïK3y[îÒlÚÓ{›ï!ýf•÷?ÒñGû¯ó­ÙöŽ”.¾²¿ù^¾úüéâ‹{úïá‘WÛ­½Î=—îÊ�é½Î‡Àá{i·Ýñå»{ÿ?�÷j›¶ôϲ÷þ[Ó¶{òÏôîôÄ;íI’$IÒÄåßµj-b0¹è«¤\4ÔíÂ*W]ˆ’ iæ[ýacsÙåÕ†–óÏõ‡žÍY¾Ï¤™7ϧþÅŸû-_þ º¿ÿ^dž|¢? ~à•v{ÓàŒÞü¸ÁxWz yOíYÉcgÏ>Ô^‚zë®ôðóséÔ`xš›t|éhÚÓž}¼ùþÇÓ�^oä,ÜÁ{9·÷Ý^üh!}xn!]¼Aàmíožç«Ï÷/=Ý<ß�žø~ûÒë¿›žhÎtÞŸfßü^sæõ¦ÇæÚm’$I’¤IË¿kÕ$ZÄ`rÑ1VI¹h¨Û…0T®ºÚÁã¸M÷¿ÐÿŒÜpûÒP·ùÜÜ{–>øs[v¤‡�÷'°Ñg7v>×<÷`ûèPuøþÁxšœ|Ï3éÔ²aëBzíОöòÓ}›wOöþGúh.ØÝôöÝ™î}¾?¬]é½.6xO+�jßË`|èÕthgïþæ’Îí0¼÷=Ï’sƒËo7?ƒ¹ôp^7gMK’$I’º4ú;ZyÑ"&“‹Ž±JÊECÝ. €¡rÕÕûŸK»/ÝÕœ;t âvûæo=—f^™m½:z–m¯Ë—ÞM³‡öµŸ›»+ýèÜ`h:ôÀß!Í�%<ùÀûS¾0óÙÁ¥©Û³dÇ϶Í�=ûæ/ÒÃ;ûéæŒØ ßÿH—Χ“?{¼ýYôÏ:^õ à�zO6oÝ5òù¾´Ãñápø^Àïµ—à¾/z³‰é»~x~ôLâ^Çé?os–v¯×½-I’$Iš¬ü»TM¢EL&c•”‹†º]Cåªkhð˜ Y/'<¶}¸c�Ý™6o½/úìÙ·¿Ÿ?ö?¨ì€W8Û6×>÷ڟܧÞíCCŸ Ü €ß!}5ÞïC³KÏqy6=�·ßóL:µÊûî7½ï;ÞïžW–¨—_Ù·øØ›õÀͶ‘ÏýÝ•~ôÑØó¤£iOïë|{™áŸ¥$I’$iÍÂß­ Š1˜\tŒUR.êva •«®eCÉörÂù Ôs½›íöþÂKg¶îûþÑô›Þ¶Mù/°­÷¥šû÷´g÷‡¾k€‡º›w¶g oíßþêóç›í£à^×Zn†­KÏqÇîö¬Û�ý³u7õ¶_\åýØÆ~‹Ÿg|wº·Ùgð^¶¦=GòPxð^¯³'mkÏn¶w‡ïeäÏaptO;Ð~žÁ0ús_>Ûx_û~Ú?7I’$IÒD5¿_U$ZÄ`rÑ1VI¹h¨Û…0T®ºF�ýÏ .sÏ3Ígì~øúsé�ö’ËÙ¦/ïI^_hžgíp¯Ë¤™Gîë’³-÷¥}¯äáo.÷:ùÄÝý}ÃÖü�íJw4Ðlkºë‘Ùô›|­é5ÞÿpùóŒ¾ÿî±÷òÁâ%«Ó¥·Ò�ÝKÛ7}yWzxð^; €—ÉïeüÏáø£Íë .é¼ô<çûŸÜû÷o6-68ûúŽï¿ÛÞ#I’$IZ«ÅßÍ*-b0¹è«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ`rÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ Àä¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h€ÉEÇX%墡nÀP9I’$I’TOÑ"]IÑ"&“‹Ž±JÊECÝ. €¡r’$I’$©ž¢Eº’¢E̪=ýFZ¸úIºrú¥ô™™3éJïë…¹ƒñ¾5jßó†{ß˼”毞I‡Ãmݬ>ÿ?N'ž¶0U¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h³nyðØõÚaßüL´_åfÎlððú9|úzË7éŸ~ ‰Ž±JÊECÝ. €¡r’$I’$©ž¢Eº’¢E̺õ|ÍP¯ð�Ÿ�Ùß>8ËöÊ…7Ò“Á¶¥Ç��Źx_ßÒ�¯}ì…3iþBÞv&^Ü·?°<|:Ý{®™áçXá ш«½ÿÕMòúý}Úïkñ,ÖÑ�ë`Ÿµ·Eg×®ýþŸœûxdû‰Óƒ÷8öØÖøwä=œÎËÿŒWþç#;˜N þ GîïÀ€!Ñ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆY·<¼Ž(Ç~yȹl@8:p0>ýR:<ôø>\l_»÷ƒ}úÃÉá÷´ü=6V ®ýþW7Ñë׃çíÝ>1ôþGÞWÞw¥×ïm›ûÖzÿÍð7_žyxû²!uðóû¹5Ï7òþVÿçci`nœè«¤\4ÔíÂ*'I’$I’ê)Z¤+)ZÄ\_ƒáÛ¸ëÆ-êh×~î¼ßÇiaqP8¾môñ#à¡¡éÂ`�93:^Ú¿5´}ø¾åÄIßÿÊ&zý`pÛ×{ýáálëɹ3ÁÏ©gÙó¬õþ{ö§W&YýÐãÿü܈n®�0C¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤hsãšlÀØ o¯~Ò €G‡¥y¸¸ü Ö¥}&Cåñl{ßòâ„ï½þº €×zÿ“}�>8ÿ9¬t†òz ÿü˜VÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆ¹‘åK¯:˜›É—:#õÂØçüŽ ûg´v²ì’Íá@s…âšï ½þŠà¼ïøy•¡mðIW®Ž;“‡û/÷äÜÇéÊ…7Ò“Á6€aÑ1VI¹h¨Û…0TN’$I’$ÕS´HWR´ˆIËÀÀ¢c¬’rÑP· `¨œ$I’$Iª§h‘®¤h“–00�諤\4ÔíÂ*'I’$I’ê)Z¤+)ZĤe L :Æ*) u»0†ÊMUï?—îÚ²'ýü£ööX§íHŸ{èh{K’$I’¤›_´HWR´ˆÉÀKiþê'†ÀÀª¢c¬’rÑP· `¨œ–2–&érï’$I’Ö«h‘®¤h€ÉEÇX%墡nÀP9-e,­ÝÙ7gÓÌ› í­•:Ÿ^{åhzûR{S’$IÒÄE‹t%E‹˜L.:Æ*) u»0†ÊMUóϤm·íO³íͳ¯<š¶méÿ…·y÷ iÆXºAK’$I×Úø]iÑ"&“‹Ž±JÊECÝ. €¡rµOmþIûU‡†À¯?ž6ݶ#}÷øùæ‚¶g�<žîÈùK«vñ�£iö�<Ù½”Þ>r4½öæ«iæ•ÙÆl>3øÒ»i¶½�½v.?êR:uüèâ}ÇÞY:ƒøì›C÷ç}޼›.6[Χ“ÇÏs4�<—/<ݾæëù5 ˜%I’tk-Ò•-b0¹è«¤\4ÔíÂ*·Q»Þðk�mM›Ÿx«Û±G¶Kk4:î}›Ï¾ô^:öÊ«éTscô àßìí×<&×ÜÉ�z_¾Ÿ¹séló˜Ë½ýàËéÔñ<X’$IšÂ¢Eº’¢ELn‚§ßH W?IWN¿”>3s&]é}½0w0Þw]½”毞I‡ÃmSl½ÿ|v~-ízùÛiï³ÛÓgÜ•öö¾ÞõÔã}×Ѧ§ö®ÏëVòýÜ,Ñ1VI¹h¨Û…0T®¶ €¥éêâü«‹—yžúœ`I’$iZ‹éJŠ1¹òàµ*¶ÃÆù™h¿�ëðé�í·²ÛŸÝ•nî¯ÃõItŒUR.êva •«-`I’$IÒ4-Ò•-br3ôŒÍP±0~œN<Ýßvøô'éJ¾=Óž…ÚXÚ¾´O; lÏP½2v&ï`Ÿµ·Eg·ößßâ>ÞHOŽl¿-=9÷ñÈö§ïqì±­‰¨í÷3?7üý� “gè¶–ÞûÚΤù íã÷~޵¾¿•ÿ|–L'¯1rÿ$úÒf(Ú H÷¦í;G÷¹ýÙo7gÎ6žÝ•vþôkiÓÐc·µ†¬ƒÇ6Øö ܽ/ Œï ÎÌm·í|ª=‹wü±�/¦í?lë½÷ûû.=×ÚßÀ­$:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1¹òðpx` hÇ–cƒÆÁ`s0¼ìÝ>ÑYóãG†ºyß`ˆ;Ø6?6>¼8Ìmå¡ìÐã›áo¾<òðöeCêkŒ¶šçz|ïöè÷óR:<òZÃæñámû<½çì³Ö÷·ÖŸÏÒ>×:ÎÔÁP4KǬîÌæK5ï]÷­yðà2̃Çõno? wìu†ïï—ÌK硳}û¯õýÜb¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤h“òFš­¡f#Üö½”懇³­'çÎŒ=–=O€ºxvì¢Á ó`:qz…aò�ë¯þ½.�Kû÷¶ Å?‹Åç\ëû«Áð¶Ùòê$à�ÑpwØ*à‘K6�<×ö¡³‘[+=À”ˆŽ±JÊECÝ. €¡rµe,I’$Išæ¢Eº’¢ELÊ[v†jvÓÀk xK€‡ÏÎm�ì¿Öx²÷_•|6ï5œ|ÓÀ“¼À-,:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1)¯¹ôØ%›— TWGäU†žÁóäK¸ùg¢÷ó þc€�&:Æ*) u»0†ÊÕ–°´�›&í9ô^{£@½×ßöÐÑöÆú5ûÐŽt`¾½1a§íH{Ž´7$I’¤UŠéJŠ1)¯žÎåÏÁ\žxø3}ƒÇQ#Óv(ºòö!Á8ëñ°ÑAçøöeÏ?ð�]ÕÌÒ÷Ý<çÐó,þ †öi>{¸ýYÍÏ }ßy°Ø>¶y\û˜Áû\ëû[Ûz€‡/ÿ_º?ô�¶�_>ºoi o_|Žóçÿöïk3ô:KCÞþçþöÛõì®Îg7Ÿ#=ö¹ÑUtŒUR.êva •«-`©îÎþð¾t×Ï··ÆZÇð±G¶¦}ÇÛ+5<>÷\ºkçsélÿÖ í¦ €�ìOÛ®óçy-ïU’$Ie‹éJŠ1)/¼ôz™9sΆeª­t&ñ*òÞ?wÀ­":Æ*) u»0†ÊÕ–°´�sðŠK’$iÒ¢Eº’¢ELÊ93uì2Ð7ÆØÄëòÜêFÎRÿLà5å3µoü™Ó¥DÇX%墡nÀP¹Ú2–*ïÈþ¡Aæ{éG»ïì8lÙ‘þáãñøÜ/Óž/o]Üoß+ƒ3ˆ/¥“‡ö¤ÍÍ�ÇÖt×÷ßJ›û�¦=½�~þP~îþóÔ¡ý‹ƒÌ�?žîÚÒ°lÝ“~4pŽ €ósä¯ßKîi÷]4ŠNþúÃå¡êÃ?{&Ý»µÿ|›w¿�NµÛÒ¹Ù´ïžö{ݺ?ýü\ÿîáðìCûÒ¡÷·¯Û{üC¿\v¦rÞéýîO³Í½çÓÌ#;Ò¦æ¾;Óžû?ÇßüpWºë‡K?÷S‡îK÷¾øöè÷½øs‘$IRí-Ö!ZÄ`rÑ1VI¹h¨Û…0T®¶ €¥Ê¿öØ�iÛ¡wûCÓK寧ìÞœ±º�~tÿ}éÀü¥þÍKï¦'îÙ•~ôQJgŸß•6?4›Î^îÝù|šyèÎtï‹y¿£iOp¾r>åM¹ÅðG¿H_½çñtì\ËÅwžIÛîy¦?€ Àcõö¹·w~Ï]^¸Ù‡¶¤M÷?—Þn¾¥…¡ÇÍ¥‡·îHÞé¯Í{ûòRþ[mt¼%m{âÕ¡×Ý_V{ì àÑŸ÷»éÀ=w§'Þin¤ŸïîýLó°yþ¹t×î_¶ƒlgK’$mÄ¢Eº’¢ELX?Ë?›x”³BØx¢c¬’rÑP· `¨\mK•·8~+}wç÷ÒÉæÎ¶.ýÚcw§¯~ÿéµwÒÅʼnêéÐÎÁ™­m—~Ù g›ì`¨Û6|ðhù ßöyÖ_êÝ·{ð¼Ý^¸Ù‡î}/¯?ž¾š¿ïà’Í'ŸØ“½?>^÷þÒ‡íÍÅFž/xOo~/ÝûÃú_7Ïñxzøþýi¦?n2–$IÚxE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°Ty‹à` ¹Â8Ÿ%ûöÏ~�îÝygsùâ;{5] /ÍÜÓœ½ºü¹‡Àg_ytéÐ�IÀ½×ÛÝÛoq8Úíõ‡[6T|ß½ŸÍ²ç»íÎôÝ7ׯôzãàeϽ%m~â­v{J'»3m~lévÎX’$iã5~ÌWZ´ˆ Àä¢c¬’rÑP· `¨\mK•·8žü àÑÒOvß—½ÿA:´{ìñ‹­2~çiÛîÒÛ—§Orð¥4ûО±Ah·×nµpÿRÐË»!g]ÚyY½÷ðÕ‡^H?zhW:4ôÞ €%I’6^Ñ"]IÑ"&“‹Ž±JÊECÝ. €¡rµe,UÞâxì3i/°ÂgçÏÅÝ—~Þ~foÿ³k—>ø®Ágáöº84ͼ™¨« €{¯Ç#¯¶ÃÒKéÔ‘ÇÓ¶5Î>uhOï=/ÌvyýáVçïõË{ÒOŸw|ù|:öJïù{_^Óg¿ÞûÞ†ÎèÍ—Ò¾÷gïµCàËéìñÙt,îo‚.ý|i6í¹齿öØŽôð›í I’$mˆ¢Eº’¢EL&c•”‹†º]CåjËXª¼¡p<þh÷�ý‡-;Ò¾C�¦‚3€/¾ùLºwk{€‘÷{e0ì¼”NÚ“6·›ïÿA:ÖÌNW÷sì±»Ûƒ•­é®GžKïÜ—fò¦pÜûÿöù‡õÕ“¿þp+€{�›MûîÙÚ�Þ÷úÀÏú÷�€÷¥Ï½îC¿l†ÄË›Kßm~nƒ3†Ï§™Gv4—ÑÎßû¶oý¢y�§íJ{^i‡Î½.¾¸'Ý5x?¯¯ÿ:‹?I’$ÕÞà˜µÑ"&“‹Ž±JÊECÝ. €¡rµe,éVoùgK’$IKE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°¤[=`I’$­V´HWR´ˆ Àä¢c¬’rÑP· `¨\mKºÕ3–$IÒjE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1˜\tŒUR.êva •«-`I’$IÒ4-Ò•-br<ýFZ¸úIºrú¥ô™™3éJïë…¹ƒñ¾«xrîãî�k_o~&Ø6�üšW®~œN<oßnÐÏE;¿–v½üí´÷Ùíé3îJ{{_ïzê‹ñ¾ëhÓS{×çu+ùþjc•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜Ü /¥ùÁбF^ë@v%‡OŸI‡ƒû3g®ëõŸÞààuÿùoO;CÑvXºóÁh¿•Ýþì®t{p®ÿû¸•DÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"&7CÙ ›äø@õ`:qá“æÌÔælÛ™þ�rñ,Õö¬ÕøÌÕþs¶Œ 8›ðð~CÃâ±3„ûgü޾N<üønáçû�kžsñ{X�}ÞHOŽ×:ÎÔÁP4KǬîÌæK5ï]÷­yðà2̃Çõno? wìu†ïï—ÌK硳}û¯õýL™è«¤\4ÔíÂ*W[À’$I’¤i.Z¤+)ZĤ´—ÒüȰ²g¥AïJ÷÷tºôØ€w’ðÈölü1kÍEý�÷ÒÙ»£Þ•_¿÷øüÙ¾ÃÛzžœ;3:T.jø Ûlùu’ðÎh¸;l•ðÈ%›GžkûÐÙÈ­•ž€FtŒUR.êva •«-`I’$IÒ4-Ò•-bRZ0^iXZl/•¼â¸ÿ¹Ã+}_Ùò×Ï÷ Ÿ!<> ^{¨¼Üõ\zu·?;ö™¹yüìö•÷ÉÛÇÏ^·ðò÷—/ í `€•EÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"&5è]—?^8}fhX:LŽT6Cß`ÛLþüßþýÍxh¿ñ¡o¿�Ó‰™þ>y{Î6÷Í-=Ïèç¯%~ÿãg7CÞ‘}Ƽ#¯?> ýùe�ÎNn¬çxøòÏñ% ûCßhûøå£û–ºñöÅçx0þoÿ¾æ1C¯³4äíîï`¿]Ïîr0À*¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤h“ ­r¦ï4 /ÍúYéLbÑ1VI¹h¨Û…0T®¶ €%I’$IÓ\´HWR´ˆIF΀ÿLà)æçrsŒœ¥<þ™ÀŒˆŽ±JÊECÝ. €¡rµe,ÕÛ�g�À-§¶¢Eº’¢EL&c•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜pí–öî¨ÿyºPZtŒUR.êva •«-`I’$IÒ4-Ò•-b0¹è«¤\4ÔíÂ*W[À’$I’¤i.Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®¶ €%I’$IÓ\´HWR´ˆ Àä¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤h€ÉEÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"&“‹Ž±JÊECÝ. €¡rµe,I’$Išæ¢Eº’¢EL&c•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1˜\tŒUR.êva •«-`I’$IÒ4-Ò•-br[zrîãtåê™t8Ø0,:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1éËCàù™xÀ@tŒUR.êva •«-`I’$IÒ4-Ò•-bÒš9c ¬):Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1iˆŽ±JÊECÝ. €¡rµe,ݪ]nÿ_’$IÒjE‹t%E‹˜ L'.|’æÛú¢c¬’rÑP· `¨\mK´ssiæÈ»éb{s´KéÔñÙtì}C`I’$i­¢Eº’¢ELZÎ&c•”‹†º]Cåjk½À<ݵ¥ý‹nëžtàÍK½{_Mû¶ìHæûûäaÕÏw÷¶ïþåÒ0kþ™´mË£éX:šöÜÖÛ÷•Ò½[ûϳéžÇÓ±ü4mù5¶µ¯±éžGÓ̹þý§íHŸ{èéØc;z÷?“Nõï–n�VK’$Iš´ÁÂ\-¢ELZÀÀ¢c¬’rÑP· `¨\mM:þÔæŸ´_uèÍï¥;nÛ‘¾{ü|ºÜûßÙWö§M·íJ?:—Ò±G¶¦¯>¿Ð¼ù/Âýi¶½'o7=6×ûªÝ¶ó{騹Ë)]z7¸gK»­×;?HwlÙ•½“'—ҩŸíYö6àÞcïzâÕtÖ‰�Ú¨]z/;2›f^ÉŽ¦“½.¾s´½�Í¥³½öß>r4½öú«Í>o÷þu8ûúlz-ÿǽgf�Ì¥“LJžã£þS§t>�\|îW›×™mþ]’$I’¦§ñºÒ¢ELúžœûØXStŒUR.êva •«­õ¿öØÖ´ù‰·Ú[ýòàwÛ?HéÈþ¥3~ó×ý2ýd÷ÖôðëùŽ…ô£û_çðÖ´ïxþº-ïßyókl;ô^ÿþ¦÷Ò�{v¤Cï·à�Ï¥³íi#–¹ÇæûÿÃåso¥ÙWÞJæ#gçðèðvdÜ }ûÏqqþÕ4sü½æ‚“‡Â¯çÿ@£×å…fl,I’¤i+Z¤+)ZĤ?ü½rõL:lc•”‹†º]Cåjk=À³mI{Ž´7Úú—e>Úû*v÷¤Ÿ_êqï}ñRºøâžþÀøÒ/Ó½[O¯5�h/½x¹è^CàüËÿBí�—^KÚ¸]|?ŸÕ;›f�Ï¥·ç–.ù¼lÜ?ówÐèÀC—Š^|ÜB:Ùž-<(?ÆX’$IÓÖòß)ËŠ1˜\tŒUR.êva •«­<žÄ ?¸W@üVúîÖþ 8}ôBúêÖï¥c/îYºÄóàæ àï¿•>ühaÄÅËÀº•ºœ.~ôAzûõ|éç•Î6–$I’®¥h‘®¤h€ÉEÇX%墡nÀP¹ÚÊÃÝIº¦ÏΟÏ{ÛÐgy4mn?¸éÈþ´éžéŽÁ¥ ›K?ïHÛî¾äóêàñϾøÎ/ÒÃߟkžÏX¿þ¥�_{¿ùætù½t¬ùÌß^×=îíó¦K@K’$IÑ"]IÑ"&“‹Ž±JÊECÝ. €¡rµµ®à^<ݵ¥ý‹nëžtàÍááRînI_}~¡½�ÒÙÞ—>·åÑt¬½½æ¸×ÙWMÛÚרôå=éÐ;ýa™°n‰.½—Ž™m.=“?Ë÷\; NçÓÉæ¾<¾¶pó‹Ïýjó:À’$Iš¶†çj-b0¹è«¤\4ÔíÂ*W[“€%Ýúå¡ñ±ùÁ€Y’$IšŽ¢Eº’¢EL&c•”‹†º]CåjËXšÞ.οºtÆo>Sxì3�%I’¤i(Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®¶ €¥iîR:u|éòÒÇæM%I’4}E‹t%E‹˜L.:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1˜\tŒUR.êva •«-`I’$IÒ4-Ò•-b0¹è«¤\4ÔíÂ*W[À’$I’¤i.Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®¶ €%I’$IÓ\´HWR´ˆY·ƒéÄ…OÒ•«Ÿ¤…¹ƒÁv€›+:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ17„™3À@¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤hsC0*c•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜‚0P‰è«¤\4ÔíÂ*W[À’$I’¤i.Z¤+)ZÄÜ €€JDÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"æ†` T":Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ17` Ñ1VI¹h¨Û…0T®¶ €%I’$IÓ\´HWR´ˆ¹!•ˆŽ±JÊECÝ. €¡rµe,ÕÛ�g�À-§¶¢Eº’¢EÌ Á¨DtŒUR.êva •«-`I’$IÒ4-Ò•-bÖí`:qá“tåê'À@¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤h€ÉEÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"&“‹Ž±JÊECÝ. €¡rµe,I’$Išæ¢Eº’¢EL&c•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1˜\tŒUR.êva •«-`I’$IÒ4-Ò•-b0¹è«¤\4ÔíÂ*W[À’$I’¤i.Z¤+)ZÄ`rÑ1VI¹h¨Û…0T®¶ €%I’$IÓ\´HWR´ˆ Àä¢c¬’rÑP· `¨\mK’$I’¦¹h‘®¤h€ÉEÇX%墡nÀP¹Ú2–$I’$MsÑ"]IÑ"&“‹Ž±JÊECÝ. €¡rµe,I’$Išæ¢Eº’¢EÌëñäÜÇéÊÕ3ép° àVc•”‹†º]Cåjëf€�=²5m~â­öÖxï¥÷ìHæÛ›’$I’$­sÑ"]IÑ"æõÊCàù™xÀ­&:Æ*) u»0†ÊÕÖú€Òì÷�f?joŽ÷ÑÑôÄ÷�¦Û›ÀÒ�ìrûÿ’$I’V+Z¤+)Zļn3g €€©c•”‹†º]Cåjk}Àk tçŸIÛîy&�joK:7—f޼›.¶7G»”NŸMÇÞ7–$I’Ö*Z¤+)ZļnÀÀ‰Ž±JÊECÝ. €¡rµµ~à<ÌþK®?Ø�}hKÚvè½þðwè/ÀÏ5ƒàñðB:öØŽ´©ÙgkÚöÈl:Ûn‘¦¾UÀ’$I’&mé÷Ö:D‹˜×ï`:qá“´0w0Øpk‰Ž±JÊECÝ. €¡rµ5éøS›Ò~Õ¥ågô.€skœüö÷ïN›î.½}©wãÒ{é'»·.=Vš–zÿì;2›f^ÉŽ¦“çRºøÎÑöv6—ΦKéí#GÓk¯¿Úì“ÿ�9ûúlz­·oºônš=2—NzŽÅ˲ŸO'ŸûÕæufßÉÿÂI’$IÓS´HWR´ˆyÝœ L‘諤\4ÔíÂ*W[õ€çÒÃ[FÛßÿ¹ô›ö¦4 åAî±ùþ¥œ/Ÿ{+;òVÿs³GÎÎàÑáíȸúöŸãâü«iæø{Í'ÿ&…_?ßÿ´àË Í0ØX’$IÓV´HWR´ˆyÝ €€)c•”‹†º]Cåj«ÞðÑ´'ø‹òs[O¯5ûJÓÑÅ÷óY½³iöø\z{~aé’ÏËÀý3�žHo¿ž/ý¼ÒÀÀ’$IÒµ-Ò•-b^�<ü½rõL:l¸EÇX%墡nÀP¹ÚÊÃÝIºöð–tïó¤ßù �íݳl|Ûžô£÷ÒÛïŸïÝ1:0>ùÄÝés÷|/;w9¥Ë—ÒÛ?{<=ñºá”¦©þ¥�_{¿ýÏ.¿—Ž5ŸùÛëºÀ½}Þt hI’$)Z¤+)ZÄ`rÑ1VI¹ñ�î?øÿ`Ù}«Ýo •«­õ§töÅ}isþKnë£i棱p:Ÿ~þ­;›¿7?2›>\vÆðù4óÈŽ´©ùKrkºc÷sém§ÿjÚºô^:vd¶¹ ôLþ,ßüD4�O'›ûò@øÚÀÍs,>÷«ÍëK’$iÚ_ +-ZÄ`rÑ1VI¹ñ�nôŽ{£û €¡rµ5éXÒ­_›÷_YH’$iºŠéJŠ1˜\tŒURn| ;ö¾ã·ÇCåjËXšÞ.οºtÆo>Sxì3�%I’¤i(Z¤+)ZÄ`rÑ1VI¹h¨;<ô]mø›CåjËXšæ.¥SÇ—./}lÞôW’$IÓW´HWR´ˆ Àä¢c¬’rÑP7›dø›CåjËX’$I’4ÍE‹t%E‹˜L.:Æ*) uÖþfÀP¹Ú2–$I’$MsÑ"]IÑ"&“‹Ž±JÊECÝ. €¡rµe,I’$Išæ¢Eº’¢EL&c•”‹†º]CåjËX’$I’4ÍE‹t%E‹˜L.:Æ*) u»0†ÊÕ–°$I’$iš‹éJŠ1˜\tŒUR.êvñ©ÿño~6�xý�pð”W[À’$I’¤i.Z¤+)ZÄ`rÑ1VI¹h¨;¹ÿ;ýÿ(Ûn Mv`IEND®B`‚drf-yasg-nonfree-1.21.15/screenshots/swagger-ui-list.png000066400000000000000000001727451514731163200231430ustar00rootroot00000000000000‰PNG  IHDR€8èÓÁCsRGB®ÎégAMA±� üa pHYsÃÃÇo¨dõzIDATx^ìým�\õ�'zÊ0sc76âNì½1Ñ»ë{cw_lÌܘClÌÆ�ØæECß^õ¸Gãnä¶�¡yð€ézŒÜ¶° Øvó`cƒdc0rcËcóÐ<µ0²0 7ÈØÂ ÂY *„TB* IømþO>�»tzž`èW§ò·©l~“ Ä’Ÿý‡øÔ·ÿmüå—fGÁ™_ÿ@\ò�Ç—~n¨ª^p¾ü¯V,YùÿŽO|ýÿ¿\g<´?{Ó%""""""Ó²2’£çÒ{”ÀÀðH)ºÅÒ·ø¸H Pð©þ—Xÿò/²7[""""""2|)+!9z>~ÝJ?¿TQJ±Ð-+{À¸ê‘Áÿ’ðêÚ²IÙ<àØ—>\ŠˆˆˆˆˆÈð¦X@rt�úåY¥Ÿßª(¥Xèö*zÀ=‹Ü¯¬8>-?>>wÇqñé[~|\|ñ¾ããòŸWý¼½üDJcàØ‘>\ŠˆˆˆˆˆÈð¦X@rô•}~¨¢”²Rw"ÀÀP»úáv�ûÅ:>>ùýã⌯ÕÞT.š»jVœzŬ˜eMíOûjíñWfÅß|çqñOŽ‹¿ÿY}]#�¡zÒKÞËG޾²ÏïU”RVêN„ZW5ÊßTä~ò{ÇÅÇ®¬—¾½¼þ¦ò£‹jÿ[“þ7MkNOep*…ÏYò�øì�ǵ¶§†êHÿ­‹ˆˆˆˆˆÈð¦Y:2s”}~¨¢”²Rw"ÀÀPjÞºù ÷Ÿ¹i¤o«ð-yƒÙ’+…Oýûz|Ѳã²29mS Õ�þ{‘áM×5!Žº²ÏïU”RVêN„:Í‘¿_¼ÿø8íêz‰›»Ù›ÉdRÁû‘/¶ß`&éq68[¦6-ýüåúm¡Ó­£³8wKiàØ•þ‘áMþš3CÙçw€*J)+u'B •4B7•´_Yq|œ}í²[97Gü¦b7•¼§|¡»ümJÓçæç¥‘À_™»zV|ö'íÛAǶôß·ˆˆˆˆˆˆ oZ×~˜1Ê>¿TQÊSO=5i ``heßù›û¾ßTìþù¥³âüëþqÑ7ÿmœzù¿È¦}$÷&3¿ÿ꿎O]ÿ¿ÆéÿÊŠâlÝš´�ù_™‹0ª ý·-""""""Ûæõ f޲ÏïU”RVìJ •æ÷ó~韎/ÜöyVüÅe³âÖ•Ÿ‹}vÇ«Û7ÄyßøŸcn£àmJñÍ|2öÜ[ßXŸüæ¿­/³¨~Kèô�Àçßô�Ö÷ Ç®ôßô@Ù|]œpÂu±¹ñpú²9®;ᄸ®cÇeÓŽpŽÄó?jç´WŽÂy=bô¹<gÍš³’³lL®ä¯ 13”}~¨¢”²bwP ``è¤ø¢æèßFüÑEˆ9ŸŸcoûwŵwÌ�S/ÿ—]·�Neïy_ÿŸbÕÚdÿßúÐçâ?]<+æ¹^¥‘À©mó+*€áX—þ›(}ËÊ#XÒ–í·cÚTìg€mLwüàYõR²¡³›Ì•–³Îª=ʧ׼üô²õj9Ïñh%ÿ\ ç2_ô>xÖ¬8á°I'“)úïc&¦J¿G""""C’ü5¡iqËUñôÖ'âw]¾7•-?woÞ{÷oŽÇï,Ÿ¬(ûüPE)eÅî ÀÀÐùÊÏŽ�Ó¿:+æ}¹ýæñ£‹Ž‹ÿü¹züä†ûâCŸ­Mk|pþMfòáKfÅ™Wþ÷ñþûïÇ�«¾’ÀévÑi^*€Óvÿî‡ø.à_ÿYü|ÛŠxmß¶ØhW¼5ö«xmçObí+ŸŠ;~]_fŶڴÝÉŠxb]{ÝëŸüã¸cÝŸen{òƒím®¿)^É–ÿUlzåÏêÓÒ~^YwÕ¦7öµÿÐæÙ¹,V¬Í­Û´ú?Ä[ïͶ³£öa¤ö¿¯¼¹,Ö¾vS¬}£v¼…cùîºOų;kÛÛoí«ëóiÙ×ûÜv~nûŒÛ~·,6íÞcé8n¨=ç’ã¨-SÞ�çÑ8¦×v/‹ûòËÁ�þ›(}K�#X§ò®82³cZ à4}Vîx:§cÍÂ]ç¢Ç¼Ú6ÎÊ=ÁÍ×�³Šû.;×ÇjòÏ¥ösûiÕÏQ½ô�Šß�Éæhî[DDDD¤3ùëAÓâÎ{b´±ïά�åeËOÀòmi;Ûâ× `€cBJY±;(00t-?>>ú•Ú›ÆÜíŸS�û_.™{ö½ϼø³øóK��y_:®1Bø1oÑñÙr©þ‹K�‹s¯ù¿Ä{ï¿w<º(þÓÅÇÇüËÿ»l~*ŒÓ:}ÃJ÷Ýå©%1ò^öoyiF¶Ö—»ïÍì]z-ûãµMÍõ?OŽ5&×rh×§ZÛýþkSÓ6¥êÖµ�)eÙ×7·[³ú¿ÆÆƒ�Y=Ó^燵mjLí™±%�íÿ‡XµkWcb1µmnÈ•À¹c>´CíÙ7rð^0G\úoz 4ÊÊëÎjޤì,$;FXžð…øB×´ëbsÏmÔ“FcKÉ4­ØI¶§•í»¹~~^É~ËŸpÝc}¶‘KãØ³éY!Û\¾X⎩¶Îc©lm-ŸqšÛfÇsOåeÇÝú6ëÏ9�äÍÍËŽ¥ù¸ß¼BJæÏuçyªY¡ Îæ§å²r¹ìùf)ŽDΟ¿~óz¼ž�sXÿ�j?Ÿâsɧyœùç×Úfv^ ÓRŠûiœ¿ërÏ5í¯½Íúºåç¢ßïíè ó² r;çõ|-ûí«1¯c×""""2£Ó¼n4mšðþGãÖ[þ4þ¾å?Æ'Ë–ïá“ß­­óÝÓ1­¼þƒøÌ÷Çßþ¹ßú7qnëqc�ïŸ�›6}Ê>¿TQJY±;(00t>wçqqÚÕõ7�©°�·hVÌþ̬Xpýÿï½÷n<öì�cöÂYqÊe³²R8}7pœ§Ñ¿éVÑg\ùßgÿÿó³?Š?þT}ÞGoDÓ(à�Õ¶_¶ï¢U»[•fÄ{û£rwÅ¡F)Ü,€¿ºéW­‚õ­7#zý¯±)ߺîÿIÜÑØî;›k®Ø}eUkûcÙݵñVný|�Ü.œk9´66n[÷åJÛ÷ÒˆàU±6m{õ’iLNõ[»~kßXc¹b;íoä�úö¯Ï=—úvjÇ’ßö¡±¢q=Kk0Ó ý÷÷ú>J�9[?÷üó�ûÍ+¤{pá¼–�§ÜñÖdç섚ëô8‡Ù14§×ŸW»Nûd^:œ¯g¶ýbÙ[ö{ÓLš×\¾xÌõc(}m‹ûi<î8¦üüŽó×H×¹Èï;¥¾ÿ|áÚÒÞñÀÇXöß×@ç°ìØSòÇßo_i^Ùú""""2cÓ,§M³»'®íšÿcù¶tiüî±?ˆ¿¼æªø]ºÀrhm,ÿn³àÝs×zn»1þ¾±~±>÷žÇ«ùëJ±+~ûجïë‰úõ˜½[Œß�ÕöÙ8ž®umˆÇï©KcÓ¡ìó;@¥”»ƒRCçÓ·󯬿iœwùqñç—| .»ù�ç~ÿpìÜýj\ö'ÆU?š÷<öÕ8óÊ�ý|ßã×ÄÇ¿ú¯ã+?øÿÅOý­8ïÿS<òô÷bϾqëÊ…qÎ5ÿ׬(N#„ÿ2�¾|�7¤ÿ.ÖîËþ¯es<ûTqþãúÕ�Ÿ×ý$Þj,yh÷çëÓž¼)v4¦Õ³6žh¬×ÜœÖÆíQµ­ºùõ·ÅóÏ5—ŸÏ·Fç¶›ÛÆ¡Ý_�ëÓ¯¥]ô޽yZcùÒ;¿íÆ­é»bÓ†ÆôŽ8Ý{E<ÿʧ⾧þ]k{p¤¤#J±ÔéxÜ«Ì*Lë*†:K¾®¤"ªÕJ5Ò5­lßÅ0·ŸÒr«l…4�½ïs(î·,¹}um«�z¡vBV²¥°õ”Ó:½ž[¿yIÓsÛL)ž×ñÎSÚWmùtœõÕz=÷Â:“:öâ¶ ë�³ì÷&KZ¯X¦6÷‘·Õg?}œ%¿¿Â¾ÍDŽ1?/ûyÀsXzì)…×ràã‘™ž|ñ8-šð¡mñjëûŒ»o)Ìûqܽ¡þÇûo<÷çÙ¼zÁqplmm�µ1Ú¸(óû'êmgüçñxvíg¼ñâ÷ã‘ bozxèÑø^ÚO£næà®ǵ­uvÅ1~V['»L´ëû­’y:”}~¨¢”²bwP ``è|æGõ8ݪyÞ¢‘}‡ï?þâ+Ù?¨#£›²Ñ½?}söø‚ëþŸñÐo–f?ò›ÿ&îþç+³Ÿ\ÿïbÉ?þUöóؾñéNÈF §ïÎÞ�Ö¶]¶ï¢ü-œã½m±#ûÞÜÏÇ]ç§â•æˆÚ}7Å÷Ó´üHÚ,ÍѾ¹‘Á¹QÁ™Õÿ!nÛðùú÷øn»7^Ù·­½�Ü-šóÅôó­ïùí,€ŸlnóÅU­m´Êéšòø´Ü­¥7ij�ï/Nò·…n�|ÎÀù¦Cúoy ô-‰Êʬ’iýJ£’¤r±="´žîi=öÓ(NۚˤåÛÓë]`ÙñÒ<ö®b´¾½l;Ù~ËJÐ4ë„îcé:�tí#�§ûÈ?î7¯•ú¶;¯Åó”­þs«øm–­i_Í…j)}¾¥Ïk€yÙóhKÇ6Ó¼Â9ì~.)e¿k…×}¼×6?o�KÏE¶í²ãÉ?Çœæ¹�È1Nö—ÿxûê˜'""""3=ùâqZ”~pþ¶Í·nmý)äG 7 àß?Qü™'ë_6ºáÔÜüƶnùq¼‘î0®ÏÖ?!~öfn~³~óÆøÌ5õíýå�7Æ«iÚ®ÇõÙm©?¿Íåð¿Ÿx"Ê>¿TQJY±;(00tþîÖöàT䋈¿ºâŒ=tIz÷�øÞO?ÿõkŒK¾û‡ñÑ/síÿ½öóÿ7N½ü_Æ9_ûƒøÜMg]õŽÑݯŖ‘߯×ý¯qÚWþ�Ùí¤³7£é,€¿ÿJïïÎ=´ï'ñ@sp¾”}oUü¼6­u›æýk[ß#\ÿ¾ßö-™ó…ì_\ù¾¹+­ø_ÄŠÖ-¤k9ô«xþµe±q,7- 掑ÈûcÇÎeÙ- ßÊݺõ=ÄpïŒ¼ÒØ¶˜£(ý÷NûjíMcVþÖß<~øÒ4øøØ»ÿ­øÍïþ)þôâYñgŸ­ÏOßûû¡ÚÏsk?ÿym¹?ù»Yññ«ÿÇìà{þùêø£‹R‘||½LNoFkÿ{Æ5ƒ¾!ý`Üö»e±iß¶ØŸ+L›É—žíïõÝkŸlߦ9}woþ篮¿·Uôîxí?4Ö?¿ãû‚÷ïÿU¼òf*jst®þêSKZ¥rwöÇÈÖ?l/[{ä¿3¸˜ƒ÷æŠìA àÜ÷+€9ŠÒ¿ ¥_ITKsdh>]Ó ë‹Î´|«h,+‘zK½ö�úàYõrjóugµK·Tn5Vìµ�îãI%XnÙ´�Ö1ÕçËÛŽç™¶SRØuí«U~¦¤ò®¹Ï’ý·ô›—ßF!%çµ×yª/{BÇòÙ¹>¡½|Ïç[<†�ç5öÑ: ô¸GÙX|Ü7¹B3KŸ×v¼ýôxüXÏsQN­} œÁ�±ì¿¯‰žÃA~wSº–ËoODDDDf|òÅã´·þƒÎÀû�ï5Fè‘Àù¸¹Î؃qS6¸áû'´JäéPöù ŠRÊŠÝA)€�¡sùƒÇÇ©_i¼q\Tÿßy‹Ž‹9ŸŸ•}§ïS¿[ÿ¹ös*„Ó¼ô½¾­[;×~þ‹K?g_ý?Ä{ï¿·?ò¥øÐg�ËFgerm{éû/Xú�Ò}�ë×¼±¡¼”m•¡ûã•Û·„N%o«N·|îX®¹íö¨à8´"hn3WwìëÑÆÏ›·d>´9vL·§þU¼¶ó'±j}É÷ï>Õ¼?Æöo®Y¯í^_;?nk•¿I¾^OvÌ+¡æ(JÿÍ”>%Q–¬J·ˆ-™¹iùÇùåé(AÌ�(m¦lZJÙ¾kÿ7+c›Ó›åT*ÌšÓò#"K¶ÑqõkAÓ¨Yw|pòý¸)?ìžXÞã;€÷nûqüì¹G'öÀ/n®Ÿoñ;€óð—þ:žÎºçý1ºõžxäÉïǯ7×Ží¹‹ÀG@JY±;(00t®xèøø¯K>§þ}ýÐéÍã¼Ë�‹ÿü¹Y±oÿ[ñÌ‹?‹¿¸ì_d·rN¥n6ª·!=N£€?ýíŸý|×/®ˆ?]8+Nýr£NÛúʬ¸äžãK÷]tÇ++bÓ7eßÉ»jßÅë?kwmÎÀ_m/Ÿ+kßÚµ*ÞÊ~Ú›6ÔæµŠÒÍ12ÖüKÐ|Áš+€ß[«~]›öë?¬í¿ýý½­ïNÖý¤±ýÚÛú�ç·�¡‡U»›ûÜkÓ¶K–iúù®ö_ª¦Û\ÿ|}û{€ïȾŸøSíï-Vs¥ÿž§-(†ÊFG–M“ÃÏQ;¯ý~&Y"õïÈt¯J^‘J¥y=hÚô¹Íòò/ýÇÆ(Ýýñ»Çþ þòÆëâ÷é¢Î¡Ú¼ï¶ à|ön½.>ߨvg<+νçÇñjë¢P-‡6ÇÓ6n)]ZÏŠÏ?öhì­Ïiåà®÷¾]õPöù ŠRÊŠÝA)€�¡rõ#õböâÛ�‹Ó¯®ÀÍÞ@~ üâÖ5Ù?¬O¬¿3κꈹ_è|“ù—ÕÞhÞöçqà�}ïG,¹ë¯bÎ%i;ÇgEqý{ÚU³âʇ+€[ßã[št«åæ-œ“ÏÇk]·en”¼ù‘¼Íä¿§÷Ñ?‹çswê•‘­�å;¾×7eì?´«îà†xåÍ%q_®èíøÎàZ½×X¶æ­±ñìïþ8®oKÙ±v¤öœšË*€9ŠÒóÓ–�K£4ê0?ú3¥lš~¦÷¼f#�[#G;÷ÛoÞ`òß°ˆˆˆˆL2ùkB3]³þý“”Ýšùóß*_®ÓÄg¾?ÑÛ8ÿ›ø|vûçÿŸ,�d•}~¨¢”²bwP ``¨4 à¯üìø8ûÚú(àôæ1�ÞMßñûÙïüâ7/üSüò·wÄ9_ûƒîøÒYqÝ�‹g^Z™}ÿïü/ÿrÍ¢YÙö>sÛq]ûíå¾7r£};²+v¼q~|·cù’·Uò~µ=·™üèášë7ü$v äC›cd_»¼mÀ�þ»Ü¨ÞÙÿ“øÇæ¶s#†Ë³?^ÛôÁÖ±üð•U1VúÃûãСñóÆr `ަôßµˆˆˆˆˆˆ oòׄfºVÜøàª*ûüPE)eÅî ÀÀÐi–ÀŸ¿ë¸øØU³Úß\sÊfÅÿþwuéç4- è$Ý*ú�?5+þÓgó·‰>õŠYqÖ7fÅ?lôoÞõOþqû6Èëþ°PüN¥?lîç©öwù6÷ÿÃÆ¨Þ|£9viìxó¦xöÍUñZúà±|a½9ž_W[~undòÁ_ų¯ý$6¥ekväÚíC»?ßÚ_Ýãûk›Ï¹óx`&Hÿ}‹ˆˆˆˆˆÈð&=h¦STKJY±;(00”®zäø¸êáãã¿Ý|\ý»€¿\ùÑEÇÅǾòßeÒãæ÷ú6¥ÇóŸÍ?õòYŸ¾hVÌOåï×gÅ¢å/gžÓbãÁìÿ¿DZ+:æ}0žlÝ¿y[l\_›öJ{”îŽ× %î†ÑG<¶¤sÌpé¿oÞä¯ 13”}~¨¢”²bwP ``(¥QÀ©¾â¡ãã‚¥ˆy_©oû;�Ç—FýÎK·}®­{æ×gÅî­—¿ÍÆÇ®\\Ë¡ýkã•7—ÅÚ7VÄk¹ÛEÇ{¿ŠUiù\œÝºz÷Šxþµe±q×Úx+w›ç·Þø³’}ÁÌ•þ;‘áMñZG_Ùçw€*J)+v¥†V³¨MEð§t\6 8ÝÆ¹xËç~Òèá�/ù@|ñ¾ö¶òû8Výã¶æ- {eŒlýÃúò«?¯”~Ÿo.ï�Vwïf²ô߸ˆˆˆˆˆˆ oŠ×�8úÊ>¿TQJY±;(00Ôò£u¿ôOõÑÀÙ(àËÛo,›·�n~×o6ÿ+³â´«fÅgn;.þ~e}ÇþÈß¼Æ÷7,©�â=´+ö7ܯ¼yS¬XûÁÎåýgñómi„ð¶ö²5o�­ˆç7�v¿ÓŽœôß½ˆˆˆˆˆˆ oš×†˜9Ê>¿TQJY±;(0@ÎÕŸ}�ï'—ç,ù@öݾéÍev[èE³â¯¾6+οññ¹;ÛÅo¶^¥Ê_ ùä·þ_ñÜïÉÞl‰ˆˆˆˆˆÈð¥X>rt�ùõ”~~¨¢”²bwP `€KVüoñ×ßøŸcÛΗ²7\""""""2\)+!9z>—ÀðH)+v¥èaÉÏþ·øÔ ÿKéOàÈK#/½[ù 0@E(€*B P `€ŠPT„ "À¡¨ˆ))€ßyç�àèRT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¦ÍëÛÞˆ‡W=ÿðûâêë¾_øûo¶|õºȦ?ò‹_ÅÈo–®@ `àˆÛõÖîøá�ïë(|Çóã;—Ç[»÷”n€r `àˆÚþæŽøú7¿WZòŽçºoÿ FGß*Ý.ÝÀÀóÖ[{âkKn.-w•Jà={ÆJ·@'0@Õl¸#Î�;/N<ù”šyqæ×ׯhÙr0 ~tÇ?•–ºuïòŸ—n€N `€Ã²+ž_¹4.>çì˜=;®m'Í9;μhq,[µ>F÷–­{$l�egtlj'ŸW¯+[–kÕqRÇkØ0ûŠx¤lù2–ÆÜ²m4Oo{òÕØ[¶�–�qíüâú‹bEé²u¯m{£´Ì�¬]»v—î€60À$í]·,Î�S,Äz™s/z ž/ÙÎÔ*+éN‰ËË–e¦zä’æîÃx-,€;ÌYׯÛ[¾½IÀ>ôÏ¥Eîdýò×kK÷@›`2&S®�ÿÀ´ÜŠùñ®òpaÜ5Z¾ìÐ] 朳3 bÙ¦’eŽºÚ1v¼~ƒþMæw4s^\»¡d{“(€¯_ú£Ò"·Ô�ÆšmjoKöÆów—̯Yö£{J÷@›`Â^-¹ÍòxæÅūʶu$lŽG–\/\/Z+6õÑ9|Fï^˜{Mz�GÙòE¹c,3`¡?é¸fî·ã™®mN¼¾âšï”¹÷Æ?¿´-žø¶ÚÏÆš—·ÅÓ÷¯ŒçÇ"ÞÙ ÞéS_óÍï•î€60ÀD•kçÅe+Ûßõ»wôÕxfÕ½qíEֿ˵´Pcz¿y&À»â®óóÇxJœtÉÒøráVãçÞ½«dÝ‚²ßÓ…+;–Ù;º>V,º°s™Ì¼¸lun[™‰ÀW]ûÝÒ"÷g¯Šw^]_¸íw1»ãÙÛ¾_½ñ–øêÝ/Åž>ð•ßXZºÚÀU2Bsþ�¯–/›Ù[¶ PØqdmYó;^·X�>çvc½ˆ]såé¹i5çß;þm (€›Ê¾sxÎ×7–›x|ãÍ?)-r¿ýÔΈ±—âöÕÛ#ö¿ÿØœ7N|Ó÷o/Ým `€ z~Éy…ì”X°¼|Ùþ ßõzÆ1Ò˜·wÓ£ÙèáÙ³sógŸó/ÿ–Î+æÖÉ”�Åï™my{7=WŸß¹ï“æ.ˆËn_ß:¾2Åý¶ÎÉÞÍqÿ• cþœ\É8ûì8sѽñÌHç6zÛÏܽ4.>çìÎsrò¼˜}ÆÂ¸zœcY½4Î-Œ¢-W^hެ{ ®½dAÌÉ?‡¤öš¤ý_¶ä�X³åðoµ=z{þÕIãxž\³;¦_ËÆ;w(€ßY}E}¤zße'^¯|dui‘[/z·ÇÆ—ÔGwLï]?ò‹_•î€60ÀD•Œ>é¢ú�åÊJØ]±æëe·äí4IqtfÛä àúHÓçoYÐ]æ�ñíXÓãûg‹û=é’5ñΆ;â̎¶è¸úÉþ££GŸ°¼�³ ®_W,a7ÆmçFÏöU,47Ʋ ¬Ò•±·cý‰è¾ýs»„]—Îã™·lÏ­[b"ð@ËN¼Þ6²½´ÈýÂßÿ"~({ÛŸJßܘ>N¼ýÍ¥û -¥¬Ø”>#wÄ™%XÃÜ+âþqFçvê.aÏ=Aîq?eßÑZ7¹8�ò=»ùÛtƱ¥c[u]û�}vÌé[þ6]˶to/]}MÌ)]§—âsí~žýå Í]µçÔ}kä~únÞ^J~¯òÛ{¼x›æ3–•¾-)€Kþ¨áÄ…�–›xœüèŽ*-s'êÎ{V”n€N `€Iè*ãrfŸqMÜ¿a�"p¼rr^ÌžszïR6wËè¼ÉÀy'Õö;»x»ã–y±`y÷óëÞoNºUrŸç’FÎv}§í裱 ¤@ž}Æqíí+ãþåËâêóÏîšâÜű¦µ�õqÛÂEqqÍ™s ËÕžÇÜ‹êóÚîˆgZû¿·ð}¼�uÎo.{im›¹s4ûŠx¤µß‰Ûrcqä÷¸+?Úºë6ÍÆõ=ŠóÌÀðæ¸þŒÂr5Ý#Œ'W�޾_½îJKÝA}ã[ß�·vï)Ý>�À“RV†Œ;"¸W {^|yu¾|ÛÏ|½û{‡{•o‡UÏ_�ç¿[vïæ¸íü’"øü{» Ûò¸û¹¼tûÂ’"¸PvÖt¢§Äܯ¯ïºÅòèòE]Û+‰;ØyÉ))Pç|½äÖÛ{_�5·_ܸ¾{ÞÀ^í.a»Îq÷m çö¹øøð®ì»�/;£¬è/+—'W'#o¼_[|si¹;žë¾ýƒØ±c´t»tSLÚæ¸ë¢ñ¿v΢G{|?py {îíe£‡×Æ—»¾·¼Àœ||v\½®¸\Íè%#a/�û Ë•Às¾^VŠ–|×mÍËóË”•�Ý%q]IyÚuûâ©)€Oœ½ ®í(´§È–e1¿°¯²ßƒGŠ#Ïç~»=b¹¨ìøtRíüu�È>Œ8ÝõVüà¶{KKÞ^Òí£wù 0! `€Ã4²îÞ¸x~¯Û%7œ±4žïZ·¬„íUr^`Nºž“¿ur^YaÛ½Íîýž_~²s™¦ÑÛ–-Œf-»ýr�[^']ûžß}¾'\—Œ¸m™³ .»}mléñZMÔóKŠ#¼/Œeù‘ØM«Š·�îQÚ'“-€KÎ]ÝáÀM[_Û?{øñøî²;ãêk¿ÛQø¦[EÿÃîŠG~ñ«lÔpÙúô§˜"£Òít{�î¾]oI ;÷Û=Ê·i(€{ïÄš+»Ÿ×‚Ž»,XŸ\³;–­Éßžø0F¯f¦¤.¿½tÑìs®çVßãàvâ}”�²®™Ä9œsÉñÒÞ’me¦¦àÈRL±Ñ ÷Æ]·k®™}E<Þ±ìÄJØ£Yw�P≠¬œœ�p2úäÒ8·ìõ,˜³huÉm“°îÛ1§d{ë5r{ s8/fÏ]/y Öl¯ÄV ÀGÂèÊXÐuûàóâúMùåŽ�øñâwÏÖ,Xٹ̄ ÖÕÅ[×ä¿·wÀu{cË“÷ÆeçôÿÎçîQÞã{æëg—nkpóâ²Õ%Û¯dŸ00À±@ p„tß6¹X8ΰ¸k„rÓd¿¸G1Y3©ï¾èÞÙòê`Fvuì/9¼8gtc¬Xriù¨Ýžç°—µñåF�ç¤KÖto[ 0”ÀôÈ’KãÚ•ǹÝoyi:£GŸ®>ÜB´ä»�KËÜ%çföñHq90ÀPRLP»HœóÏ_ËV­ïqºwt}¬Xta®$k˜ûíx&·�™W×Ì^·mÈ�žY_î*ýjΠ«/+€Ó9:÷ö|Y¾=¿²ûû„OÎXXÛ×5qíí+cÙ•‹â‚Ú>»¶uÆ¥ås¹²ç×]„—*ýåB¹«J `€ šL|Ò9÷–”’3¹îí¤…+KGÄNæ¼df/нJÏ KKn?=Ž^çpËqfÙòzÀƒèý�Ç¥V•”¸çß;έśÊ^¿By¬J `€ z¼ëö»ýÍYôh�Q¡3«ž}壵uû?·“ιcð㛳8Y¾¨ë;n;Ì^ËJžC‡M+ãâ¹%ëöÒç>¿¤Ç(à–ÉÀgǂ囻ö×Ï#%·>ó–í¥Ëv+ûŽéSâÜ»s·ïV %0À$dß5{ãâ¸àœ³»o•œn)|ÆÂ¸lÉ£ñ|ßÛùΰÀ�rpdõ²¸¸ö¼Ú£SÓí�/�kWn޽ÛèÔ½ßF98²&®¿dAÌÉÝîø¤9ƵóÓïû|‹FÖ=צí”Üš:Ý^zþù×ĵw¯�-ãlsdݽqYÇó«i¼fW߸&¶ä–ݰ:–]yiœ97w‹é®uVOèyÔ•�à-={)½¥uþ»™ÀCI 0”ÊËç—J—LYñ|ý¦òe€#C 0”&6úxƒŽPŽ0ÀPR@)€†’ªH 0”ÀPE `€¡¤€*R %0T‘`()€ ŠÀ¡¨0@E(€*B P `€Ix~Éyqâɧd,/_†™cÅÂúkuâü¥ñ|Éü©±24~'æ.ÙX2æx~É¢¸vCù¼– KcnãùÙóÀTRLÂóËW^ˆå‹´dáÊò厔Úþ¯í(©WƵ͂rù¢öqÕä‹Ëç—,�­ußÔn/÷&`EíŽ|‘9±cËÿ1Á‰'/ê8G­âúäó: ÛÜëV,›Ûëtn«mcíø&ö;8=ç €© ˜„‰Àùvª‹Õqõ-€kórÅ⊅íÒPÛ¯Uç±õ=¿ãê|=W,lßê¹~¬õÒ8;Žfܸ߬¸Î^ûòýuþn5MÑy`ÆRLÂáÀéñ‚V W/øšlùH×\‘W[·ßhÚR} àF©XR NGÜw4oî¹v�š�¢"3_Æ×Õ^�Æ÷ãö/=WæFhG OàØº^›öþ»Î׸#€ÛÓÒyí<¦†Öë=1 `€c‡`opsdi*Û#>;GŸæË¿ürÝ#~Ÿß0^ÙØ9Ê´cdk®,–¡ÓQw°µçR?ÎÎR³=Úµ¹ì$ àâ¨Ø ŒÎ°s;nÕÜ=:yÜQÙ-Åes¯UDZå_ÃÎ×3?j8›×UH·M¶ÈU;À“0UßÜ1váÒX±¼Q>ÖÖÉ�0í廼ó¶Íf/ùuò…cLjÐ4¹]&f¥kn?�#�û�¥:ÎCîvʹÐ'ίMÏJÖ�±¢°ÿâ¾òç.²ãî8ÖœÖyèñ< ÅmçëÓœWµ�^·ö:ëuG}½®×«ãõì,¨ÛûÏ—¼�ë´·W8—™üö&Wš' `€c‡`&TÃL0ÉÛ?' `€c‡`ò£F'4 ŽŠÎÛF$?b{¢ëpÔ(€*B P `€ŠPT„ "À¡¨0@E(€*B 0[Þˆ³îØQ>oÊìŽnz5nØÒëñ›òç´#.¹é�x¡kzz[âC‹rû|á¡W[ÓÏzhw{�§_/]þÁ;Ó ÓëŽðù:RÒs½c¤Ç9ª�ÓÆ´ŽóCéw{ñëñ`Ù<€ŠRLDŸ²ô…‡^ï,mï(+APÜGîqç>&¢ÏñLWœœíý¤÷’§k?§ý·–Ï—·©ôl—wùå/i• õR9›ÞXnêŸÏôxðŽîÒº9-äG§ø­½Çà¹f `€‰ÈÊÅ×[£1?´¸QÚåGª.~=¾Q¡š•–5¹eòÅf¾Me_¾Ðl=.ì#[??­U¢¶G‹fjÛî;b¶£0­ªÍe{ŽÆmì«c»ùý7ÎÖikÚOÇ1Ö§—=ßl¿µu»ö_<öšžç«ösÇñ¥ýul³~žZë¶¶ßyÚû,LoÎKÏ+?­¦¾ÍÎå›ûÉJü§ë”�³œT_u_{ttéëÞœVÓ½íÚvïx#wµeóÇ›Ûg÷kÙçw¡D:ï�ë×§?Xûïå†Ü¼ñ~§²sÑq̹רp®;ÎiMszû5+?¯U¦˜ˆ¬€jnùR²sg¡xê³^§Tºå–+<îØGÚfnÍâ´U 6¦×õ)ÂÒvZÏ!_Ð¥}7öW<þícg_YI—N¹‚/iœ›®çQx¾u}ÎWÙòùiµýde~cù⸭½½Îãi>ÇÜ9JÓÓ6Ët>¯Úò�眶“/H‹ëå§5G:ö]|- Ëun;í·}|Ùü~ç¾5=÷ºç~Oëë· Ø$;®t ¹ýæ�·ïïTé:�Ç\ú:6§çŸwî8ÛÏ«Ïï"@E)€&¢Pˆå�[ç×Ë‚íi5¹2¯ìqÇ>Ò¼BW_6m»ösGñÕ§k[±LÍ•rµ}µK¼¶T´µ÷ß<¶ûJûiMOÇX_¾«„l<ç|‰Ø½~]ç9¯é:_ùãJÚϱ¾nóXóEnú9ÿ¼êËwOÙz5­óTÜFR_.m§³t-l£±�üóèØw×k‘Îeû;·]x-J¶Û\¾ôµìú½-×µßÜkU|�ZÏ%KÇù©ÉöU8æüã´Ý®åKößzžÅmTŸ`"Š…XîñTÀÅ2´ûqn…2¯K£,«—…}аֱ¥"rð8ÍËï¿}låû*+zÓ6[ûhLï(óϯð¸k{=¦µÊØÆ1Õ—icg\Ÿß>žü9é,u[ûiœçúôü²�ÅgSWY™Ö/œ¯ž¥izÜõZ´—º¶]|- ç°¹|úßÒײð{›-×z®uéXºö›{N=ŸKñõm)þþ4§ç™ÛVîØºößÚvq[Õ§˜ˆB!–ÜY>¦²*W¦¦åò�K˯^ÅW{™Ž}dÛ,/[ZÇW8žÒeêÛï,?sE`aýV‘—=NÛoK÷qw/ŸÛWÚvkù|qÚyÌùçÞy®›Ê÷[—+rS�š»õsö¸¶Ïæ±uŸãÆz¹ó”×U>6¤í”œÅå{­Ÿ×qEîw©{[…sRø½k.ß±ýükÙñÚô‘¶›[.¿½ÖëœÍ+þN5_ë¼âëØ|œŽ«ý¼Ó>òÏ;ÿ¼Ú¯aq[Õ§˜ˆb ˜œJ°Ü(ЬL�Óül¹×#»5sn™´^«(LEd«(«o¯ãqcZÇú­ÇuÍ2¯=­]°uO¾äk=§TÐ5×Íw…}µ ¹æ²¯Ç ÕdûÊ•nÙ:ÍçÚ¹í|a—?æžûl,ßùürójËv¬›=Çö2íyõãn¥…ÇùõjÏã†ÚëVzüùóךVÓ* Ë7¦§ãoï;-Óþ]hOË_}�žç%÷»Ô¹í¤P€¦õ ç½¾|¯×²ý:ö_¢ãuÉí3�¾¤¦9¯÷óèUÚ¶ç÷qÖCoÔ¶Ûþ�¸¤ö:µ¶ÕzŽÅmTŸ`:t”¬{RZ­š çûÒèá΂±xËãa7磻ø^ `€ h�0Ž)eÿ=T‘`:|ì+Ü®¸y›áÖ­µŒDíd0ÀôRT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPS6ƵóÏ‹k7”͆�``+cÁɧĉeæ/�çK×ߊ…)t§³®?ßËËæu{~Éy˦LJs^€‰SLƆ¥1÷äE±¢lÞ„L´Ð�¹#€W,¼,Ž 0Àdô(€³Q¯­‘Áùù©¸Í�ÎFÖG—»©Xm-³pi¡îÜÆÜ%Ë×ë˜WØï•µiéøjÇ›=¯4={gÙ\áÛ¹n½ð-{nµéË5¶Ý^¿k™l^cßiùÖü™YrÀL§˜Œ²8+0ÛӲ³Q€¦Ÿóål[*T{—�Ù6ò·QÎöÑ\¾^¼v»�y…òµ­¸NçôîÒº³î˜Ÿ�ƒÎcéœ?†Â¹)[·«,vûh˜00Àd”ÀiÄmg±š ÙÆ2Å´c™vÉÚ©¤TÍ/_r ­¢¹£`Í)Y§®l_Ýp±8n?çþp÷¹Éo¯dÝžÇ ô£˜Œ®‚²^bæoqÜ}+ãTÞÖ§·ËÎ~pÙ¼\)›•ÊÅýÕ´FÒ¶�©U¾¦uJGÖæ¶ÛcZYœ�ÔÍöWßWy\2¯kݾÀ0) `€É()(Ó(×bÉY._ˆNtp®,MÇ0àm’[#p{«%%laZ»°m/3u#€À0À“QVPf#r+-Ûeq}Tp¯â8+]þàÞ:ËÖ²uJJØÂ´ìXòÏ/;}Ž%Ww�›®u ûVÀ¤(€&£WA™�¹Û17ÊÛzyš›žIÛžW,`ëRYœ_oÅÂürõâµ5¿&+“{G}�ö­¨3Ù± VÏ]²´cÝ®¿ùéù¸0¿s]0L0i�".Ÿ} `¢€™O À@À0ó)€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„`ȼðЫñ¡Å[j^�¶”/›ÀÛ—dÅi‰›ÞˆJ×™a¶¼g-~=,›7 ¼£v®îØQ:8| `€É8ÊEꤥã>VÊj`ÂÀ“Ñ£nß^9ÉÏß—¤âõé×s#†ëÓ̯“¦gÛnn#w›æŽéI�º¸\cÄmç±µ§·íŽnÊͯ¹äéòm¶¦w=¯×âS]·–N#§ëÓÒ1œõÐîÖ¼lDpk»íçÓ1=;Wùí½(€&£¬ÎJÐö´¬pm•¬�ÛGw”™õiíB´YÀ¶‘­“æ ò�½õm¶ Úú6[ûHÇÝ£P-–³m…mv<÷îç•ÊÛŽí¤óÒ˜ŸßGû¹5–k(NïÚГ`2J àî¢2•£ù¢´÷ÈØæ´®mä ÛlTìxߟ›+[[Óò¥oŸ¸X`wL/¬“Ž¥^—<¯Â>ÚËæ àz1Ý.ª›J¦÷;f ƒ`2R)ÙQ–6Gï5ËÑ|ÜÔ=­_œ=ÎJÚ´Ý’¢¶&=[,‰óÇ:n™šŽ©~ìùÒ¶ó9ÕÕ�³ìyåG+wÎoÀiz±o.ß½¯^Ï褘Œ®¸s¤k·²¢´{Ú¸p~zY)z8#€;äFâ¦möy\ö¼rEoaÝÁF—ÃÀ À“QVÀf£sKJÙÌÀ=Š×úô|±Z/Z[Û¸ÎÚÅmæõ8ŽÆ~n(”âí¸1²¸äXzMƧ˜Œ²8iÝ¢¹¡Ud–¥ÝÓzÀõ"7¿íòB6©¶­eó£wûÀYñÚk½â6ûÞÚº.=—b‘›/€[Ë´¶ÙÞNÿczQT„`:F¥2­Ê^ “ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B 0ä^xèÕ8ë¡Ý¥óÏî¸á¦Wã†-eóß‘;n8v)€&cËqÖâ-ñ¡œ©(#¼c Ótlwì(ŸW“ŠÓKžî|¬€jPLP*?´øH›ST˜>ýz|¨Oüà[ÀPQ `€ Ù—,î,P‹êq{dp±l½äéú6:GwNkÌÅ‘Æ7½/äö•ÊÜö:¯Ç ûî,‚S!››W“Ž­^¤¾QrLÍõÊŽ·9¯SÇñÜñF¡.ÛNý˜:Ïgç´Žmæž±î}ÞÓö^�S1Þš_{ÜX/S8ÏíukÇœöÙ\·pþ`¦QLD*û•€YQ˜+³b±]‚ÖKÊ^óSAZ1»;^h=®£ÍÒ3ÛVɱdÓ{Žî.\ëÇ”ÛoÇ1uî³ü뺎';ão§ëx³ý×ÏQq›© Î?ÿÖöúž÷ú¾óûèÜn½˜n�“Üþ›óú¾æ0ƒ(€&bœ8_P6å‹Ê®²³£�í]®6µ·Õ]äæ—™pÜë˜:ÊÐöòÅçX~<¹çÓw;i¹ö¼¾Ï1m§qþóÇÑÿ¼§íÏkîØJ^Ó´½ú~ÇM`&QLD߸¬­‘Í‚5_ZÖå×)+Ó´ö­‰“úú½‹ÉüþºucßcÊFÖvî?Óµý²ãɯãl§]¸æÖ)yîuõ²¸³àíwÞóÛlj¯“-W²Ÿöyî,®`&SLHïâ5dpϲµkÛõ4_lŽWz6—™²87â¶=¿LÙñ¤i�ç3ÞvRAœŽ¹c¹ÜúÅåkòÇ=þàâ±åÎusß¹u;—SpìPLPV°ö*�³‘®¹Â0»õq{Ù¾ekWá[^7×ÏŽ£¤Tí5½®¾¿ü1ô?¦îå{éÚov.šÇ?ÞvêEë …cé÷\:Ž»ïy¯ï;_òvn·xÞóêÇ¥àX¡˜Œ¬pì¼ep«@,ÌË‹ýËÖF1™­W//Û�“×ãÁÚ¶óë§‘¯ó³éõB3›V6²5w|i¿ãS«@mn³±^{ù¶Žã©íûÁ;òvÿíÔŸkwÙÚyjÏ©ë¸{ž÷´ßÚq<”Ÿ_ÜOîœešÇ­àØ¢ âp«ˆ€êRL@{„(êì÷f 0g0ÃC P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "ÀU1º6n»}mŒ–͆‚`B6ƵóO‰OΙ}zÌ¿hY¬Í-·ie\|ƼÜ2gÇ™7®w��ä¶QbÅÂSbî’�¥óÞY¹¨¶�kâñ²yÀPPLH½¼]°¼=mï–ÕñåÚ´“.Yݘ¶&.›}JÌýúÚÝ›u«ãþ'·7æwoctËÚ¸máÙqâìE±"_$ô-€€¡§˜�îò6y~Éyqâü¥ñRz¼aiÌ=yQ¬ÈÍïT¾�TßѼ8ñüzÞÆ¹o¼|Qv Ï·¦mŽû/¹0Nj�2¾4îjŽ0]מzcò¼˜{ÉÊØÒZ/ßÙqíêÕqYk󼘿huî¸vÅ#‹òÛÎ�p~'FŸ\çÎiÎ;/.^¾¹58rÀR28•©µigÞòjcZùÒ¸¿8½a"ðã—Ì«=þv<“�(Þ£›^m¸¯Æ²3Òåõ±7=Þ»9–�?/NºdMc[õã;qÎ¥qÛ¦½õi#ĵçtÙê4ÿ�½{a}ÛÙçtÖÇó›ê?¿³åŽ8óäóâÚuõu÷nº#ÎÍ­ 9 `€ i”£Í‘¯™ÓãÜ×wŒÚ}òÛ1?Í›³ .»}mli¥ùm”À#�òtCɼš� àÑâÜ^ÛI#”ç,Ž5ùiéûƒ[ÓêÇWÜO~ߣ·wÀyi4ôì+×vLKë§SO 0!%åíèÆ¸-� ]¸²pëæ]ñüÊ¥qÁütå³ã²U»Ó§¡îwê´\G�ÝÔ\¾üø:÷½9îº(ÝBúô8sѽ±fKc¤pc¹Òí×ÎOsàÈPLH�ò6+\/ŒeÍïØ-Ørã‚8qî·ã™ìqŸxõqRŸïž²¸ã»‚‹)€ëönY·-º0fŸ¯ï1G”`BzÀߎ9} àÎB¶W¼+î:ÿ”8é’Õ…émÀ£÷ö¾ôºt¬ ã®ì»�Ë ^·¬º"Njìû™¯Ÿ'žoa440ÀRRŽ6n}âwÄ–ôxÝʸíÉÍ1Ò,X›óÏ QŠ·±7F×=WŸszœ8{Q¬èYÌN ~gWmÙyqÒËâ™ÆöF·lŒ-ÙϯƲ3N‰“ο7žoÌÛ;º9Ö¬{µ¾� À{ã¥4Âùœ{c$=Þ’nc=/ν}cãù֞ߦµñÌ–ü:À‘ ˜�z9Úùý¶óbÎùKcM³¸]·,Μ›¾÷·1öé1ÿ’⥽}¶1ûì8sQ~™r©„íX/ÓYÜukçÍqÿ%ÆIÍåf_·5G(ï]·]t^n^mÿ7®o¬7~’-Û‘œö-"""""""""""ܲbwP `²ŒÆK/‹�Í®—´'ξ<+»Ýs~ÚÞ¸ç‚Ú²óoŽ—³ÂöôøÜÃoÄŽm�ÅçæÔ—©Àµm¥U¼¼öóy±øÅÚÏc÷Ç'jÛ9ëG£ñÐŵmœûÃØ¸í�ظôSõå}Uœ\›ÿ_Ü·?Ü,¤EDDDDDDDDDDd˜SVìJ,"C›¿þzüéɧÄß=X/{?qçÞÆœ”ÎR8+oçßNån~ÄîéqÖ�¶ö.€[Ûy"n˜ŸJçy­õê£}߈‡¾ü©ø/­Búªx"­&"""""""""""C›²bwP `ªìyñéxú•4z÷�øí�>›�¾ý»‡ŸŽ/Î>%N¾àã·µé;¶í�½ àWê·l>ké Ù6’=›·€îWÿ¾¾�¹WÅC�ýïØ¹7bì÷ñÛõõÇõQÁçÅ ¯¤õDDDDDDDDDDDdXSVìJ,"C•æw7ýé‚ñzmúÆëÿ67=¹= àØ[ûùôܲ§Ä笎oŽ�åÖ;ñÌÆË�B¹9íOϽ¿¶æ”»ƒR‹ÈPfÏÎúÈÝÎì�c~ ïÁ ,[Èž�£±§ñs3ÆÞ¨m¯ñ@DDDDDDDDDDD†:eÅî À""""""""""""""3(eÅî À""""""""""""""3(eÅî À"2tyÿý÷3ï½÷Ç æë'""""""Ã�æçCf®#�²}R-""ܲbwP `š¤7�©@û)ÿŽí¤×/½Žéõ,K¿Øï€¤Œ÷;$"Rµ”»ƒR‹Hå“ÊÁ·ß~;FFFÀ’^Ëôš¦×V,"""""Rͤ;>¥²'}öSþÛI¯_zÓëYv'¯^°ßif¼ß!‘ª¥¬Ø”XD*p5)€EDDDDDªå_u¢–Ã�XD†-eÅî À"Rù(€«I,"""""Rý(ÿª°nÀ"2l)+v¥‘ÊG\M `‘êGùW�(€«“±wÄM[~‘½M·¾þ«ÆÜ#—ñ~‡DDª–²bwP `©|ÀÕ¤©~”ÕÉxå�øØÉ-¯=‘½g={s\üÂ�ñ‘µ7d�WîXßXâÈd¼ß!‘ª¥¬Ø”XD*p5)€EDDDDDªå_u2^y§>vò—koÌÊß48%ýo*�/\ÿ£ìñ‘ŠXD†-eÅî À"Rù(€«I,"""""Rý(ÿªpu’^‡4ò7ŸôøH¿>ãý‰ˆT-eÅî À"Rù(€«I,"""""Rý(ÿª“ñÊ;ð±‘4ÚwÝž­ñÒÛÛSêQ‹ˆL}ÊŠÝA)€E¤ò™Šøç_:=fÏYßÛX6í±¸tNú¹ÛüÏ\X:}öœ¯ÅÏ÷w¯7眯޹}ЛXDDDDD¤ú™ŽòoËË·Æ_®½!çæXðâºØÒø¨¹rÃâھõ‡G%¿Ü˜ŽëÖ¸}OcÂaäh=Ÿ™_o�ï<›û=xa°ï³Ûµ>Vn}:Ö�5&¼õpœU;γ6½Þ˜0Ù¼ßy¦öZ=óp¼Ô˜2“£™ú”»ƒR‹Hå3ðO?sJœxò'â¿-›Ö.rO:9M;%Njõ¦x®1íWWÔKà‹V4—9öÍš5+–.]Ú5=MKóŠÓ¥©~¦³nxïmŽo¬M…ë­qÏ�Ba:¶9VnþiíqšvO\µù¥Ø™>’î[߬=þÆËëãžTÚm¸?¾·}wZ#ËÁ·ÖÇw6Ö×ùÆæ§ëÛxyk×¼«6­�-‡²ÉéYïÛÚØ_Í‹kbþÆôZvî\ßHÓkÇò�-OÇ=›î�onÛÝù|v>ž­û½­Ícøi<ðVÉLAÆ+ïŽz¯YýuiJ¯uþÐëâ²Ö¼†lú�Xµ¡¾�×~'³×¼¶¯Û›·£žÂ(€ED¦?eÅî À"RùL]\f à¹×Å?g¥òSqÕ©=Ö?Æ5Kà3Î8#þê¯þê°ËßD,"""""Rý̸8ŸfÑ·a]ëçÓ·ýmˆi4éΗ�ý\/Ä=ÏÕ··ªö¨^:ÞW½™æ5÷ÕyÚNþxšiîãÂ-{³Ç­ç1�¬õ23¢1¢ù™‡cKíQÇóiÀõckÏ7ŽÀ=‡Ó~ú•wG·Þ·?Û~]š¯ç‡_x¡ö O\{4Þ- ó¿ ý^³úërC,Øôt¬Û³7–~p»ðͶ`M,¨ýœý¦ŒÜ“•ÀgmÚ^<…Q‹ˆLÊŠÝA)€E¤ò™ºøô¸à†qïýu—ŸÑ]ÖNª.˜][æÍüºÑ,�§¢üMÀ""""""ÕÏŒ+€w= Z£xrpë{_Åjö¸qká¯8VnùiÇ÷ËÖ·ý“XÙøX[v,)ùãi¦¾l³ä­%·Ï-›n®ÿüšX¹ùÎ8­öó‡ž[“}§qÇói¬ÓÜ_¯ýOEÒvû•wGµ~¯1Âö™ŸÅ†}»cdßÓ�Ç©4?¼8ÿºô{Í:^—,ÝðXmùTð~¸ö;— òmì«=*=WOqÀ""ÓŸ²bwP `©|¦®¿ì�T<ç’øV£TþçßîÈͯžÛo¿=S6o¢À""""""ÕÏQ)€ß{)®Ê¾¸^̶‹¹æèÝ¥qÕöí1²ý§õbu¼8ö6Ö«ûðÚÄ7Fê#@ëÛn�ø­K÷ÜÞpí¸›÷‹Þú“ìqiÚ~�}>{gÜÓ(À%ÙùÓøËÚ¶Óö;¥ï�ÞÝ<5pùk6n¼«Qö¦ÇÍË �}}ø¹ŸÅÊ­O·Q‹ˆLÊŠÝA)€E¤ò™ñpî;€œXDDDDD¤ú™Îø´çî‰Ë6Ü ²ÑžíQ–íbnw£üA|g×öX÷ò�õÒpýÓq°o¼¾>štýšÉF—¨/SËΗë·>mêX¹õáX�}?ìOâ�ö"YêÇð­8k}ý“Û_¾¿>ôÙŸÆ=[×ÄUÙqßßLåñžúñœöâKõ}î?TßP- àî4oÓý‰�íõ{ëÓí°¿—ooÞRû[Ùí™Wn¾?ÎJ¯S³˜m”¸Ùhë‘×c¬ß_³þðKqUö»‘ûxq}ìŒâò4ý©[ã›[šÇ¾&~™ûC�©ŠXDdúSVìJ,"•�¸šÀ""""""ÕÏtÀmߊOlXëö×ç狹æ-x›ËýeVÊÕæõ-€wÇí¹Àu7Äå#i¤îëµy©hÌMßVœOý:]V[î—óÇ^;îæþÓàìØržúA|¯xKkp–ú9ùAܾ¯1!¥qëîì5lŽ¾Í¤[-×þ·Y�=6ç=ó³x©ïïBï׬ܸEu^cÿéw²sôò·j¿[õ-LeÀ""ÓŸ²bwP `©|¦¢fæQ‹ˆˆˆˆˆT?ÓQþõÏÎø^Çík9´·cïØ¾½q°ñsYÆFê¥ñ‚—7Ç/ÓÍæwò¦[G7óNÜ;=“ÏîË}4~)ûàâªm›cUÚç‹õ®­Rò(d¼òîhÀå½±³×k”Íë| ú¦ä5;¬4öŸé=Õ¹ü¥û³ó?¨¯oþYcÍ©KÚn¿ß!‘ª¥¬Ø”XD*p5)€EDDDDDªŸ£[þíŽU/ÔGk~xÃúìvГɖ¬Œ]§­8îI·~áæúm€7fãG�HVe£I¿ŸØ˜n-½&¾“ÝÎxq\øòîÆÓŸñÊ»_yÆÞ=ßÙ²*.X_¿my/iäï=o<�-?ÕIÛï÷;$"Rµ”»ƒR‹H壮&°ˆˆˆˆˆHõs´Ë¿—6ý ÎÚ¸>vÎÇÎý/ÅwÖ/í¸uô'6¬‰ Gn°fÄžuqù³7´÷ùÔÒ¸0}gìQüø<^y§–ñ2Þï�ˆHÕRVìJ,"•�¸šÀ""""""Õ�ò¯:QËáF,"Ö²bwP `©|ÀÕ¤©~”Õ‰X7 `¶”»ƒR‹H壮&°ˆˆˆˆˆHõ£ü«NÀr¸Q‹È°¥¬Ø”XD*p5)€EDDDDDªå_u¢–Ã�XD†-eÅî À"Rù(€«I,"""""Rý(ÿª°nÀ"2l)+v¥‘Ê'•ƒ©0ܾ}{ü×sÿ6~õëßt•‰[Vÿò×qîyŸÌ^ÓôX,"""""Rݤ²'}ö;ÿ··Ä3{¶6¦Ê±”§v¿®¿5{ÓëY–^pŠßäwHD¤j)+v¥‘Ê'ýEàÁƒctt4\ñP|tþÇã÷¿ßœ½a䨳qãK1÷£gÆÏV>œ½¦éµõWŸ""""""ÕMú£ßÄ£ÛŸ�3ÖýC¼~à­Æ9²eÿhœ¶niübû ÙëØë�¸ûÀ~†;ƒþ‰ˆT-eÅî À"Rù¤rðСC166Û¶mËŠÃOüÍ‚ìÂ{þúüOÅÃ�ü"{-Ókš^[°ˆˆˆˆˆHuÓü\ŸnýúØöâ¿­ÿQv+XŽ Ÿ\[<±}cöúõû ߯ö;0Üý©ZÊŠÝA)€Ed(ÒüKÑÝ»wgÅáË/¿7nŒ^x!6lØÀ1 ½Vé5K¯]z Óké¯>EDDDDDªŸTö¤Ï~ï¼óNV¥?N5wíÚÅ —^§ôz¥×-½~éuœLyçw`xMÕï�ˆÈ±˜²bwP `Ф7†éûARa˜Þ4¦[§ï�á’^³ôÚ¥×0½–é5õ¦_DDDDD¤úi€iô_ú<˜¾"(BÌléuJ¯WzÝ·¸ó;0œ¦òwHDäXKY±;(°ˆ MòÒ÷Æú pìI¯Yzí¼é¾¤Ï€ÍÏöé‚964?¿OÅgx¿Ãi*‡DDŽ¥”»ƒR‹ÈÐ%ÿa�c�7ü""""""’Òü|ÈÌu¤S¶OªEDd˜SVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVìJ,"""""""""""""2ƒRVì*+€ß|óÍxýõ×cëÖ­±e˦IêiS_›zÛ))€÷ìÙ£££±sçN¦YêkSo;%ðþýûãí·ßŽ}ûö0ÍR_›zÛ))€<]SR¿óÎ;ÀÑ¥¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡8–mº#ΜszÌN­._¦§ÕqÙ¤×f"0ÀŒ¶+ž_µ2î_ž¬�-Åù–ÆÜ“O‰“…+;ç�ke,˜ôºSëæ›o.�>ž´ÞöíÛKçÀ0RÌhãÚù�’öäE±¢8¿"ð¿úWÿ*þè�þhBeî™gž™­·qãÆÒù0ŒÀ3Ú8ð;»bdË«u£{ óÆ3s à'Ÿ|2+sO8á„�Jàfù›Ö+›ÃJ pŒnX÷߸8.^xiœ9·þ=»óÏ¿&®]¹9öæ—y4®^¸¨¶\Í-ëkÓöÆ–'ï�«Ï_�¼³>n«­?wv³>;ÎìX¶lýü¶×ÇýK®‰sÏHû¯­{Qm™+—ÅŠu»Ëô/€GÖÕŽcᘟ¾#øŒ…µuï�gF:—ÉŒnŒµý\pÎÙµý\çÖŽå²%÷Æý«6ÆhqÙ>ÒHÞÿïÿý¸%°òzSL¹ü¨Ýn'-|´]Œæoá<Aœ;§¹\í›+h‹š…m¯[@oXóóËçÌ]Ò¼er¯xW<¾èì®õê΋k74—«Éï¿KaÙ¤â·_ ¬ü€þÀSns,;§>êwöÜqA�{þyqR«]w�6–íY ¦xu\VÛF{½S⤴ÍdÑêîõ[%ëüö:'ž<¯¾NÃüñ àÕW´÷9çÂÆñç á¹ßŽg²e·Ç²3Ó’Ùí}Ôןxœô*�•¿0>0À4¹ÿ¢fYš+F; ày17Ý&úöÕñÌHó6Íã|piühnäð¸­ì¶Í™òøñKæ5Ö½0®ßÒ^þ‘Öô³Ç¿>®žÛXÎ5±¦±ÜTÈ—ÀéÖÐôG¤ü€(€Ž�½£›cÍÊ•qÿò•±ìÊEqf³,íUw܆¹ip~Úù÷öùÞ²xs\ßÚߥqÛ–Wc¤áñ+Û£€,OËvÞêú¤4ÚyÑÒ¸måÚØÒá|š%ð¬Y³”¿0 0À”Ûw]tz«í6�pé6›Ê àþß_Ü´`e}Ï/9¯t~2gÑê>åó`R üáXù RL±Ñ»¶‹ÐÙé;tDzå+ãË­ïË=Ö àüwûî�—V.�‹Ï9;fÏî^¶>R˜. `€)–{A®]±°YŒáxäŽ8³9mÎâ>ßÍ;þ- ïïZg£¯Æ#‹ÚÏî’�åËG„`Šå à3oÙžMÙËÎi«§Ç—Ÿl,?ÀhÝû/j®wv,¸{}ŒlÙÏoÚUŸ_ºþú¸ºõ}çĜ…ËbÅ“›ã¥';�ø‘ �uK àwbÍ•íÛWŸtþ²X³©ý=À#ëV×¶±6¶4–}æ–kâÚÛÓ÷?Z_®6ÙÂöwÏ]²¹µ]àÈSLµÕWÄI�´§ùKãù´ìpÙ÷ì¶FÖöXË-v­ÓÔ•[^wl³T{$r{Ts™ü­¢€é ˜r»â‘EíQ°uóbîù—Æü9�Ç(€ß] šë—í¹~:†óJ‹èq àšÑU×ÄÜ’ïôMÏcöÜÅñxc¹GÍ+Y¦föyqÙÊúèg`ú(€Ž”Ñí�['o�ÑÖô½1š¦�4oÃ<¸Ñ‘Æm˜'²îÞ]íÛ7Î>“ѽ¥Ë${GsËMb?ÀÔPT„ "À¡¨0@E(€*B P `€ŠPT„ "À¡¨0@E(€*B P `€ŠPT„`VýóCã±ÕkJ§TÕã¿üMét€ªò~6e×ûªH p<Ì@e×ó†�`ÒÇdöïߟyûí·€¤yí®y-O! 0À€Ò›Äô¦qß¾}166{öì‰Ý»wgÒ?†ÀÑ×¼f—®ß¥ëxéz^º®§†…`éÍaúËÁô†1ý÷cǎؾ}{ŒŒŒd¶mÛÌÍkvéú]ºŽ—®ç¥ëzéúž `€q4Gþ¦7‰£££ñ‹ß�Åe?7>~ÏûÀ –®ã=öbýº^º¾g$00 ÀãHß’n“þÁûåKcqÑOß‹G6½ÛvŠ7Ç€™èõ݇²ëxÿí�÷ã×›ê_ã–®ó¥ë}eתB 0Žô†0ýu`º]Ì~7~½õÝÒ7”ÀÌóøËïÆW=”]ßK×ùÀ@Õ)€Æ‘n ³gÏžì;CÒmcÊÞD3×¹÷½Ÿ]ßK×ùÒõ¾²ë€U¡è£ùý¿»w‘0ƒÒu½t}/]çó=À@Õ)€úHoß~ûm0ÃòpºÞ§ªL ÐG³NÿØmÛ¶­´~yôP,þå»ñ×÷½ŸÍçýì\¤s’ÎMñ|ÀtK׬Òõ½t�O T� �A à%¿|·£ü¤íú_½Ûu¾`º¥kU ``X(€ú¤þo”—Ÿ¼Ÿ�›âù€é–®U)€�a¡èc�8_xÒ­x¾`º¥ëT ``X(€úP¾âù€é–®S)€�a¡èC|øŠç ¦[ºN¥†… ðá+ž/˜né:• `€>À‡¯x¾`º¥ëT ``X(€úP¾âù€é–®S)€�a¡èC|øŠç ¦[ºN¥†… ðá+ž¯A­¹ö¼8ñäEqwɼéñb\}ê)µc8/®^W6¿·»?�Ökšøú“vï¢éÝpD4¯-üí½åó»¬ûnœÒº1�õ× ûm.wêwcMÙüi�®S)€�a¡ècFÀ?}?~¶óý¨ÿÓ]Ï;Oü¾>Cíç}Eo¾¿ÚW2½1¯kG@ñ| æ¡øÛÚ‡‚S®}±dÞáË>D�û�£~ ‡ó¡©^bOW!Û(¬?ýPÉ<`æ¨_sèw½aÂpS£h�¶¸i¼ýNºÿ\ *]§RÃ"¥¬Ø”¨´™Tÿ`äýìí8t(6¿q06&;Þ�×^IóÅËÙÌ÷ãà�÷boÓÈ¡xb¬þóÁCÙµõ›óÞéÚÇ‘P<_ÉF²¹Ñ¿ƒÀ‡oZ à샔ѿ0ãÉ’v¦À“5…ÛMשÀÀ°H)+v¥*m&ÀÞÍÚÛXyïhœvkÎíi~£Þ·?ïõ8µéÖ·ãŒ[ë?/~9Û@lþm{^Ù~¦Zñ| "+hKF²6ÿúµ¥¸L®­—¯�Ëu­ß”+ƒ;ÖËô(U³’:¿\wa=^\ÜWׇ™®}Œ³­£x%�R²ýy=M ~‡®tW³üçþú]Κ_7UÔü¼ß¾Yçôœ¾ûnÏ/+Lû^‡à:G_=ö[Üg×µœžûï\M\ºN¥†EJY±;(0Pi3©®¼ãú’y­øà»qçê÷ãÉcïÇE¹en|õ½´D¼ü»üzG^ñ|�¯Ç­}Ò‚ü‡„Æ„ŽÛDç>õ¾}tãÄeiýCJ÷‹æ‡—ü1Þ];ž»K?ä”0éš—=ŸÜãÆséxÅsÐÒþpÙ=˜:é3xwáÛþ¼Þ..{~NïSÒ¶¯´¦unwMm[×#ú±¹ãΖkn¿~-¦x bBׯ}NÅó” °ßAÎÕ€Òu*00,RÊŠÝA)€�J›1ðšwcWúûíwãÆÆ´æwþ¾¹5=nÞ:—ýï·–MŽ•¸ëIO�¿ŠÍph|(èÿ¥ñ�cÒpÉ~{è]—m£ð¡§ñ\:e €#¦ë.c­ë eEgÁ ¥fÉgý�¾ÒªtÛíRº¨¹\ýFç´ ÷9•Ÿ—q÷;ȹPºN¥†EJY±;(0Pi3gp£àmÀïÄúCõïÞõjnþ¡wbõ†½±2ùíÁøbnÇF\ÿ0гÀm•¢9Ó]´�ºžpÙóhêø Tü€V^÷ºe60Õº¯+t³åEg‡AJÍ#Qp-¤õGë5ƒ\ûh÷9�w^zìw�s5 t�J ‹”²bwP ` ÒfNüNl’µù¡í7ü%£h Žh\:z·\ÏxÛhk¬ÓuÜõéSñAOñsxñóúpc�¾×/Êîö•Më\oͽu^'èQ˜v_W©M[×ÜNí˜?�¿Þ0‘¸aRð ûà\ (]§RÃ"¥¬Ø”¨´™S¿?~£>â÷àž÷ã±ß¿�l}/ÖwÀᆵï|?^jz¥½þ±P÷ûKÖl^~lãCÏÄ à’mõЫÀ-ûÐt÷§K¶×8Ʋ?eÛx³öÁ«õÜÓsé8�A…ã®ogüçL�ægúºEquz<¡¸¦y]£¡ëZFYÜšÞ^/)^wè8¾Üµ…ÎãNÛ¿7]ƒÈOO&~­¡×~ëJÎË ûï\ (]§RÃ"¥¬Ø”¨´™TüÁ·bížz œOG\Ìh{ý™_�7’µñµMµ Y‘;‰¸]¦6•�Òm~pé7/¿�òýÖËæ†Â‡Ÿ²m4ŸÿÝ×.Š¿÷CPýyLöƒÀ°HשÀÀ°H)+v¥*mFÀ5§Ýúzœú�oÆ•?ÛWþÓqê÷^�Ó²[=¿§Õ~N�;Üúv{ýÛGsËOŸâùê)ûkN#Y'$+¼Ë j€ÃWü#ú¶ÞÄ?3¥ëT ``X(€ú˜ið±¨x¾Ê5F÷Žw{$rÀºn©@QºN¥†… ðá+ž/˜né:• `€>À‡¯x¾`º¥ëT ``X(€úP¾âù€é–®S)€�a¡èC|øŠç ¦[ºN¥†… ðá+ž/˜né:• `€>À‡¯x¾`º¥ëT ``X(€ú¤^üËw; OÚ–ÔÎMñ|ÀtKתÀÀ°Pô1H¼yg½þëûÊKÐa”ÎE:'/�vž+8Ò5+00,À}4 àÝ»wÇÈÈHöF±ì $0s¥ëzéú^ºÎ§ªN ÐGz#¸ÿ~0ÃòpºÞ§ªL 0Žô†pÏž=±}ûv0ƒÒu½t}/]çK×ûÊ®T…`ˆ±±±Ø±cG\²òÝøÕ–wKßD3Ï/_y7.{èÝìú^ºÎ—®÷•]¨ 0À8ÒÂ}ûöeÿà=ú»½ñ©ß‹¶+�`¦[ÿÆ»ñÉÞÏ®ë¥ë{é:Ÿ¨:0À8šßœþ:ptt4~±q,¾ðów³ÛÆ3×~7V¿T¿®—®ïùþ_`(€�Þ¾ýöÛÙ›Äô_º]LúÎ�‘‘‘̶mÛ€ yÍ.]¿K×ñÒõ¼t]/]ßSþÃ@ 0 æHàt›˜ô†qÏž=±{÷îLúÇ8úš×ìÒõ»t/]Ï3ò& `€ HoÓw„$éMc’þr˜9š×îš×ò”¿À0Q†ôƘyÊ®ç 0@E(€*B P `€ŠPT„à0»¾—®ó¥ë}eתB 0Žô†0ýu`º]Ì…¿½5~±ãw¥o(€™ç¡7Ÿ�¿[ÿãìú^ºÎ§ªN 0Žt[˜={ödß’nSö&˜¹þËSßÊ®ï¥ë|éz_Ùu@€ªPôÑüþßÝ»wÇÈȈŽAÙu½‘‘ì:ŸïªN ÐGz#øöÛo+€à–/€Óõ>0Pe `€>špúÇnÛ¶m¥ð‹c#ñ¥�÷Å_<}}6ŸÅÙ¹Hç$�›âù€é–®Y¥ë{é:Ÿ¨:0@ƒÀ—o¼¯£ü¤íï_\Þu¾`º¥kU ``X(€ú¤>uíM¥'méÜÏL·t­J 0@ƒÀù“nÅóÓ-]§RÃB ЇøðÏL·t�J 0@ àÃW<_0ÝÒu*00,À}(€_ñ|ÀtKשÀÀ°Pô¡>|ÅóÓ-]§RÃB ЇøðÏL·t�J 0@ àÃW<_0ÝÒu*00,À}(€_ñ|ÀtKשÀÀ°Pôq4 à«vCröÆK;WÅ‚ÆüÓ^|:6¼s(û‡<åà¡�ñË-?i¬ÿ“øÎ®�1ö^cfªÍ?OnYë:¶Ù6²ó§­}O¥âùÔ‹Ï�OþBÜU2oz<WžzJíÎ�+[6¿·»>�Ökšøú“vÿ¦w@ËãÂìºÀ®müö†ø‹Öõ„SâÂûK–aÒÒu*00,RÊŠÝA)€�J;ªðޱìé±··Æú]oÆÎw³‡±s×OãCë×ÄK�rwl¬6÷®8˜=Ú«^\§m{½þøÝ]ñâ®´~ÍØX<³íWñÌ;ûc¬¦¾|ÄÁwë�·½9“ àú‡¤¿Xülɼ×´§ÞO”Ìkk~P›ü®z‰=]…l£°þôò’yÀ”Êþ»_¹;‰¸©QKœ]?÷:ÍáKשÀÀ°H)+v¥*m&À/n½*þäÑšÕ¿‰WÒ„ƒ/Å7GÞÈæܹ">šæÕ\øê®lZ*ˆ[ënn¬Û´úšø“_Ž?®¹kwZb,{¦þøOV—Çá*ž¯�Œû!êð V¾i-€³‡FÿÀt8¢w.²xº®Ó¤ëT ``X¤”»ƒR•6# àךÓ~/¦ 7ƽ­r8·Î ¿‹�iâÞ§ãÂm;²ùñÞÞxi×Óñ� ?h/×pw¶‰±X½©súT+ž¯AdoüKF²vÞZ¹d™\ Zÿ Ö¹\×úM¹ëez”ªYI�_®ûCßxpq_]ìºö1ζ¦áÃTBávË�ŸëëwÙJw&ËvÏîTÖµ^Có3yñ³|Ùgõ¾ûnÏ/+€û^KàZE?Åë&í;³ÕG3§}å—iï»}µLÇsn~ÅV[k½®ãmÈ]ï÷ÚɤëT ``X¤”»ƒR•6 àWÞ¸'.ÛxO\µý�úm›Ç~÷íÍfåÊášMëpmþ‡Vÿ nÛ9ÖºÍsÊÁý/Ä7ži/?s àö‡ŠŽééCA¾ðm|Hè¸MtîTïÛG7>x P–Ö?dt—®Íùc¼«vûØU1»6¯y‹ç�oÞßZþ´æ÷ïz¸c;Jßûû»#míàžÇ[Ógf\sß³Àm•¢9Ó]´�ºžpÙóhêøpYü°SþÁ2û 4@! $Ý×:KÈÆü™Xp=£õ‡ç5ƒ\¿(ß_Þøp¯u»®�”ü{ßx ç;˜t�J ‹”²bwP ` ÒfBüâÖkböê$7ÃúØ–Í=/í\¼¹9FÞK�÷ǯW›ÿòúØ0¶9Vm¯ÍÛ¾>žV›÷è5ëÏ~´6Eý–ÒùéS­x¾z«X(+Kóó[oøk$²R“(€»?X”x¨Èè7/¿�òýv|,|è+ÛFóùßµø qá¸ÜêÏcüç 0ÜÒu*00,À}Õ¸"Šç«§ì¯_�d��¬ðžü_¾àdtoCï?įžt�J 0@ àÃW<_å£{ǹµy�oe·’ CºN¥†… ðá+ž/˜né:• `€>À‡¯x¾`º¥ëT ``X(€úP¾âù€é–®S)€�a¡èC|øŠç ¦[ºN¥†… ðá+ž/˜né:• `€>À‡¯x¾`º¥ëT ``X(€ú¤þÒÆû: OÚ.¯�›âù€é–®U)€�a¡è£YïÞ½;FFF²7ŠÅ7�Ƕe%ð_<}}Gù9ÌÒ¹Hçäű‘®óÓ-]³J×÷Òu>0Pu `€>ÒÁýû÷÷-€€™-_§ë} ` ÊÀãHo÷ìÙÛ·oWÀ1(]×K×÷Òu¾t½¯ì: @U(€ÆqàÀ�‹;vÄyÏý ÝñBé›H`æùù›ÏÇ_?÷ƒìú^ºÎ—®÷•]¨ 0À8ÒÂ}ûöeÿàýôÕ§ã´g–Ƴom-}3 ÌkßÚóŸùN<¸umv}/]çSU§Gó{€Ó_ŽŽŽÆÊWŸ‰óŸûavÛ`æºà¹[âá­Ïe×õÒõ=ßÿ 0Àқ·ß~;{“˜þáK·‹Iß222’Ù¶m04¯Ù¥ëwé:^ºž—®ë¥ë{Ê_`(€Ô œn“Þ0îÙ³'vïÞ�IÿG_óš]º~—®ã¥ëyFþÃD 0éMbúŽ�$½iLÒ_3GóÚ]óZžò& `€Ã�Þ83OÙõ<€a ¨0@E(€*B P `€ŠP†ƒ3PÙõ<€a ˜€ôÆñÀ�™ýû÷gÞ~ûm`i^»k^ËSÃD 0 ô&1½iÜ·o_Œ��Åž={b÷îÝ™ô�!pô5¯Ù¥ëwé:^ºž—®ë)��a¡@zs˜þr0½aLÿðíØ±#¶oß###™mÛ¶3@óš]º~—®ã¥ëyéº^º¾§†�`Í‘¿éMâèèhüâwcqÙÏß��ßó>0ƒ¥ëx�½X¿®—®ï 0À8Òw„¤ÛĤð~ùÒX\ôÓ÷â‘ÿ{ÿú$ÛYßßùòòyþ€çU*Îýæ©rWbWp‚ìÛQ�@plÉ,c*ŒœÄ@‚- ?Ä8ÆñmÅæ¸²HI N’‘耎hFû0bf´gÏì™=×Ó×:t¯ÃµV÷ÌìÝ»§×§«>Åî^§k]­Öï÷íÕýø…°²¾Nm‹è¹õݬ�÷·î‡¯?žÿŒ[ìóÅ~_ª°,ÀSÄ ÂøéÀøu1¿û…½ðõgö’”Àâùê“{á¿Þ¹›õ÷bŸO ,;0Àñka666²ß ‰_“ºˆ×ë?½Ÿõ÷bŸ/öûR}@€e!èQþþïúúzX]]À1ûz±¿û|~Xv`€ñBpkkK ÇX5Žý>0°ÌÀ=Ê8þ±[YYIÀO®í†îÙ ¿úéýl9ûÙ\Ä9‰sÓœ/˜·Ø³Šý½ØçË.>âß»£Kk–øý÷ìÕÂO&>ðµ½Ö|À¼Å^• 0@�Yà߸5~²ŸÍMs¾`Þb¯J … Ç,p5ð¤­9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è!>ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z,Tü™ýpÛ™ý�ÿéÎçÏ~˜/xôï³M§öÃ×Î&^/–µŽq 4çkV÷]ÿ†ð’—^N$–ÍÇ£á½W^1ÃÂ{H-ïvâÚ¸]éàÛÚM×ÍçxÙq®×Ü”Xv]þÿàyàCáŠØ7¸òCá¾Ôò„Z¿áÛ-’ËYëÇ>•Šø¨†¹‡!–Ö"ÀµºŸýÑ»»á‰çwÂ#Ñé½ð£§âòÝðd¶p?ìl_/–Vwý›ù¿wv³FÛ—ËηŽq)4çk6w„kFÅÌ×?šXvtYÁ4µPÊÇp” 3/jæ�õµw´—]ì`x.ð¥ýo.�¼Fï­i—fëk\ly�~Ô^€`>â£æ†XZ‹?¼—¥·áö›ÖÂU7V|4./à³ç ñ\¸²tãVxÕ�ù¿ox2ÛAxâÁɲÔq.¶æ|Í$ /]10¯Bi®pV8vë8À—ø¿¸táƒíYX €އø¨†¹‡!–Ö"ÀyÀ»>�X6€wöÂÇïÞݵÞXYçƒÏ^ˆk„'PÝîÒkÎ×,²B&q'közütl©¹N%Í Šúz­íK•¢©¶]¦/T­®×.^¦ÀÍcµŠ¨Ö1¦ì«Yüµ¶ïØOc½v1W~v±üÚ|ýêz­yKÌi}¿Å>; Ö®ÿ`š=„Z˜;þÐòäÛÃʾ@W‰[õó ý�f�œ-OÖÓÕñ4ש×ö©ý¦µ·ËUz åÝÌ…äx‹eyO¡ÒCiö.Ê1û¬ï«8¿Cö bŸJ E|TÃÜÃKkaàûö ñ/öÖ^ø`ñZù›¿§ž‰Ï˯€®<Îí�×�ŽOÜñ•B± ¨^àB­¨ÝELðX•eíÐ5hž�çDcÌ]Û'—eçÓ.žjçÑœƒ±üœºÎ¹oå<ŽÏ%1¯y¡6)ÎÊÂm¼Mku>Ë÷a<ÖÄœë´ÞçLÇ0£Ú¸U�·jøz­\—׵ݽ‰¨¨•ku~¶V÷ûh8qýµF:n3[¯ØÞ¨ï÷½Wv�?¡«Žoõ/êãH÷Êç£ukçQß¶5ælÞ0æ†Ø§CÕ0÷0ÀÀÒZœ;€‹€wŸíæ¿ ü³•å»çÃÝ¿n�Ü ¿[ÙÇq €ÛI—¼(¨J­¢#%FvH§‰ãvè^Sû¨9ãu–¹h¢ ÝãHÍEãµÔœ…nw@›ØocŒÙ˜:ÞƒÙÿ€Kd\—OŒëà)ux«ÆO*jçD_cÚ¢“pQ«·Œ×+zµ× cl©žÃd|íþG»æ/æ¡[mýê<&æë€bŸJ E|TÃÜÃKkqàóá‘ÝÑ_ì½ á–ÏÄç[áª;Ïew×àøÑÝ ¯ÊT·?.p~1ßY %НT¡4S�5C±“ Ng:F.¹}”:�R­�iAéP´ú‰Þ”Îq$ ±¨öiÜTØ› €+…d©6ÇÕB­ZÀU÷1Yo–ù€K¢Y÷6ÃÏ€§må}‚X»àÃ×cKõ&}…vß!_¿&ŠmZãÎ_ï+ðºÇ‘š‹Æk©9m•ÅóÉ:é9ÎÇ1*òú å‹PÐÀQdõk¥¦ÍëÙfÜW»¶ƒÌ¶Ô:Åkµ`öŽÖON%àdßàÑp_9ÆÑ˜k½ƒfm?U¾ÿVÏ¥Õ7¨¯Wû�yóy³Pì«>'Åþ®¬¿'‡ûT``(â£æ†XZ‹¿ö³?ßÙÈCàê£7k“í�Cœ.`*˪PQ¨ÔŠ‚TX™ÐÚW‡®à´Uø�œ¸6±¿žb*µ�SŒ ³ñ¿GçÒ(ÚÚE`¹Ÿ)çÒWÔ5—Ï[aîøåóÉ6­y* ¶®b4ê(‚ûþ€ù¨Ô¯#W\ÿ¡ìy½vžòáå²6.µêàT\y½ºm_}=2©÷ë¯g²ý�öyíêã™Ö?i)z­í{ϵ~>׌æòŠJ#ïÑFçùÞø¼1'eåÀãmˆ}*00ñQ sC ,­… €G®ºñ¹på'O…wßv&¼ûïžWþÅsáªì«ž·ÂU£Çç57nM¶ÿèZeýùiÎW·¼HI†”•åã¢`T dEBµ(˜1nS颭l¶–U÷‘>n³�©l©}”çâúëÂ5Í‚¯ôæç1KÔü>ƒØ§C!è±hðqÔœ¯NYyô‹ùAÉï)Ÿ8^0½E›ÿ`þ K|°{þò‹õîß(ö©ÀÀP€z€�®9_iŦ�¯ø¡Oq×íBc³ê+Úü7”*ß6v‘z±O%†B ÐC|tÍùbˆŠpWÀ \&±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è1K|Ã={µÀ“‰÷�æ¦9_0o±W%†B У €×××Ãêêjv¡Ø¼x|âLÿê§Ó!èŹˆsòäZ}®àrˆ=«Øß‹}>0°ìÀ=â…à¹sçz``±UàØïËL 0E¼ ÜØØ'OžÀ1ûz±¿û|±ß—ê, 0ÀÛÛÛass3œ>}:¼íö½ðµ§ý®-÷<µÞqÇ^Öß‹}¾ØïKõ–…`ŠxAxöìÙìÞ�?x1¼ù³Â÷O �`Ñ=ôü^øÍ[÷³¾^ìïÅ>ŸXv`€)ÊߎŸ\[[ _~d3¼óó{Ùׯ‹ë�_Ø w?–÷õbÏïÿC ˜A¼(ÜÚÚÊ.ã¾øu1ñ7CVWW3+++À({v±ûx±Ÿûz±¿'ü†@ 0£òNàø51ñ‚qcc#¬¯¯gR€ù+{v±ûx±ŸçÎ_`HÀ/ão„Dñ¢1ŠŸGÙ»+{yÂ_`HÀG/€Å“êç �`I€–„`I€–„`I€–„àvvv€”êç �àâ…ãöövæÜ¹s™­­-`�”½»²—'†D 0£x‘/Ïž=677ÃÆÆFX__Ϥþ8óWöìbÿ.öñb?/öõ„ÀÀP€f/ã'ãcüÃwúôépòäɰººšYYY@Ù³‹ý»ØÇ‹ý¼Ø×‹ý=!00`€)Ê;ãEâÚÚZøò6Ã;>¿^û©}`�Å>Þ]�æ}½Øßs'00`€)âo„቉ðîyl3¼ñ3¿VÖwéM`=·¾›õñ~ãÖýðõÇóŸq‹}¾ØïKõ–…`ŠxA?¿.æw¿°¾þÌ^ò‚X<_}r/ü×;w³þ^ìó €�e'˜"~-ÌÆÆFö›!ñkcR‘Àâzý§÷³þ^ìóÅ~_ª°,À=Êßÿ]__«««`8†b_/ö÷bŸÏïËN Ð#^nmmõÀO®í†îÙ ¿úéýl9ûÙ\Ä9‰sÓœ/˜·Ø³*àØïËL У €ã»•••ìB±yñøþ{öjá'øšßKàò‹½ªØß‹}>0°ìÀ=f €ãÖtøÉ~67Íù€y‹½*00`€³ÀÕÀ“¶æ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è±PðgöÃmgöCþ§;œ?¿žúa¾üáÑ¿Ï6�Ú_;›x½XÖ:Æ%М¯YÝwýÂK^z]8‘X6�†÷^yÅh oï} µ¼Û‰kãv¥ƒoh7]×}¼>®(Çtå‡Â}Íå�î׌Ïå ÛLuÞ®¹)½N]>¶+®4± ޝ²Fž­>©ÖýÙî9j¯(ö©ÀÀPÄG5Ì= 0°´)þ«Õýì�vØÝ O<¿‰Nï…=—ï†'³…ûagûBx±´ºîÝÌÿ½³›­0Ú¾\v¾uŒK¡9_³¹´Á^VDM 2'Áça‹¦¼0™W\Ö×Þ‘XVœsDzÙû¿„pi¶÷g>$‡‘÷úú €KE,n‹}*00ñQ sC ,­E €ÞËÒÛpûMkáª+>—ðÙsᆿx.\Yºq+¼êÆüß7<™í <ñàdYê8[s¾f’ÝÉz邽YÆ£škœxÝÇ:Np6oS�“�ÇÝ¿;—2¤wŠ}*00ñQ sC ,­E €ó€w'| ±lïì…�ß½þ0ºk?¼±²ÎŸ½×Oþ ºÝ¥×œ¯Yt…•å§_ÇšëTBм(¨¯×Ú¾T kÛe:BÕ,¤®®×.@¦ÀÍcµŠ³Ö1¦ì«'4í €Ûçœ*¦ºàöy¦ïFNÏǼuŒulJà —L²¦kÛÉ–«õvþæ¢^®m•õmãg˜Ruoï±'ËSp³þ¯­3CŸ£K¶ßØ/¨Ž­§×Ò{ÜFß¡ÚK¸æÚ£Ý0ûT``(â£æ†XZ ß·^ˆ±·ö‹×Êßü=õL|^~tåqn¼nt|àŽ¯AŠA5, „Ú •B£ûÎÐî ³)/PÚÅVY¸TÇxb4ž�1wmŸ\–�Oåyq.µóhÎÁؤ¸l/ËuÀÅÝóÖ>ÏŽâ·r¾YÑÖqÌéÿ 4æ æ,#+Æ5n»néikµ~_-=–Üw1¦êx åzy-^mVÝuüôã&×Éæ®Ý;™Þ/èûT``(â£æ†XZ‹Ÿ�ìŽþbï]·|&>ß WÝy.»+¸ǯˆþèVxU¦ºýq €ó‹þÎ`oŠ6‹‚úòKÏtŒ\rû(u¥Z�Ø,‚ÒENVv–eAÚ_¼EU)97ÝóÖ>ÏbÝʘòq”ãŸ!À-ƒéÔyeË_ðÀáµëãz0Û®‰[’!mÃ¥€§m›™ôfýàõÔ¸ó¸Í�·:w`€£ˆ�j˜{``i-N¼þöùüŽß��ýp×÷ß¹vFÏkðÞ~xîÌ~x¬ôÔdûcgEJ"0É/ò«L»˜-œ�½èI¸‰ãvHo;�‰b›Ö¸ó×ûÞŠÏRN·Öíž·öy¦ŽWŒ¿Ô3ÿÙþz–÷Þpi5ëðf½>K žo3ýƒÑ�žBñaéêv÷ÝtG½~î—Û}•Ñk”û�ùÚjÞÝHÉ÷�f{�Ûì5zõ“·ŸTìS €�¡ˆ�j˜{``i-RüÚÏþ8|g#�«�ZÜ|¬M¶?pß'Y[ù©;Dg €g/ÚÁfõõzñrâÚÄþŠ16‹®(µ�S£h|îñ\jsQ_�q÷YUÙ9§ŠÏ8ÆÚëÍÂu¢sÞçYž[u¿qÛY?9Ü9Ö¨£�€y×½™ëÂ{ãóÀ#e_£Ðª™³å‰•7¶‹š5rm|•ú¾>î¨ØÿM±Q}=šÞk(MëMtw´,ï5Fc}o­'PöBr×\{³�«)ö©ÀÀPÄG5Ì= 0°´*¹êÆç•Ÿ<Þ}Û™ðî¿{>\ùÏ…«²¯zÞ W�þŸ×ܸ5Ùþ£k•õç§9_ÝšŸ m*‚ÉÒ¨h…3ÀÍ"YP�äJß²ê>ÒÇm2ÕP5µ�òüO\]¸fjñ•ŸÇ,Áj:Tm�S;ÆH"üÍÕ߃Éqëó_o¯ñþUÖ�¬“Ëæ¥c }˺Ä>• 0@�E €�£æ|uÊ>ÁzøOqRx§ê¦tºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€³À7ܳW <™xÿhnšóó{U``(À=Êx}}=¬®®fŠÍ‹Ç'Îä!ð¯~:‚Qœ‹8'O®Õç .‡Ø³Šý½ØçËN Ð#^ž;w®7[5Žý>0°ÌÀSÄ Â���pòäI0C±¯û{±Ïû}©> À²L±½½677ÃéÓ§ÃÛnß _{ÚïÚÀqqÏS{áwìeý½Øç‹ý¾T`Y€¦ˆ„gÏžÍþàÝùƒÛ?{!|ÿ¤ÝCÏï…ß¼u?ëëÅþ^ìó €�e'˜¢üàøéÀµµµðåG6Ã;?¿—}m °¸Þù…½p÷cy_/ö÷üþ/0`€ċ­­­ì"1þá‹_3duu5³²²,€²gûw±�ûy±¯û{Â_`À3*ïŽ_/766Âúúz&õǘ¿²gûw±�ûyîü†D pñ"1þFH/£øÉA`q”½»²—'ü†D pñÂX<©~À€–„`I€–„`I€–„`I€Ž`ggX@©~À€ ^8noogÎ�;—ÙÚÚHÙ»+{ya`HÀ3Љñ¢ñìÙ³ass3lll„õõõLê�#0eÏ.öïb/öób_O …`ñâ0~r0^0Æ?|§OŸ'Ož «««™••`”=»Ø¿‹}¼ØÏ‹}½ØßC ˜¢¼ó7^$®­­…�‡>Îßô‡½¿ú¿€vþ¦_ ßû»¬¯û{î†@ 0Eü��ø51ñÞÆ÷?v?ò³aïá�…ݵ'ÃîúsÀ"Z{"ëãí}ägÂú#_Èú{±Ïû}©> À²L/ã§ã×Åœ¿ùʰ÷ÃÛÒ”Àâyäæpþ–Wgý½ØçËN 0EüZ˜���ì7Câׯ$/"€…µ÷áÿoÖß‹}¾ØïKõ–… Gùû¿ëëëauuU ÇPìëÅþ^ìóù``Ù €zÄ Á­­­þøÔÃa÷ó¿önüÉl9#£¹ˆs’ÍMs¾`ÎbϪ €c¿O ,30@�2ŽìVVV² ÅÖäÞT?Ûýâo·ç æ,öªb/öùÀÀ²ô˜%ÞûÈÏÔBO*FsÓœ/˜·Ø«C!è1S\ ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎ׬¾þuá%/}[¸-±l>î tå£1¼.üÑý©åÝnû­¸]éàÛÚ§ÞÖ}¼ûÿ8üR9¦+ÿ8<Ü\ÞéDxóø\ºíÁTçíÍŸJ¯S—�í—®¿/± .§²ž>@o£Z»Ï\/šÅ­ÕcŸJ … ÇâÀÿ;ìïlÔm~#\øâ?-{k¸°_=¯_yíï¿QßnìGᗫǸ4šó5›K[,dAãÔ s|¶àÊCìyÀE`ý['ËŠsîX6›bÿ—0.Íöþ,‡¬ìCØ}5é!àR%Îêû9ôbŸJ … ÇâÀ»ñ/öî©pþ¹ûÃÎúzö<ì}?\¸ù­a÷l|òp8?^¿òÚý÷… Ûë#Ûñ…Ñc;ìgÏŸ »‹O-¢ŽfÖ€ñ¨ægÅa÷±ŽS<[á—�ÇÝ¿\—ôCÉ €çÕ§‰}*00ñQ sC ,­… €_üBØø“NÿÉ? /<“º{?%þÐ?Ͼÿ�üu؉/½øùp&{þ�˵c\ÍùšEWX™½ž}z¶Ð\§‚æ…X}½Öö¥J‘QÛ.Óªf!uu½vÑ7-n«UصŽ1e_=ÅR_Ü>çTÛ·Ï3}7rzþ;æ­c¬cSoèU„¬éútò¡ãjÍœ…š­í e½Ü¬åSµzï±'ËSp³†¯­3C¯")Û®Zc×Cܼ§ðÇy­_ì»ðVÏçÊ·…7×>°]ôÊå#ã1·Æ[¨ôzÏ÷€bŸJ E|TÃÜÃKkáà³_Íó…žÊþˆï~wJ<~­½�yhÎ×ty‘‘ C«¡`Q$tµ×kºƒÌ¦v°Y}½>ÆÛFã¹­1æ®í“ËšÅVq.µóhÎÁؤ0m/ËuÀÅ…Zq.3ÍE«PkÊÏ99/Eá9}>ºç­}ž…så|»Š»hú�¹€Cȃ͊q�Ú®c›fé_¤jß¾zx¬è ÔàbLÕñÊõò1Õ_›É,puÌ•þK»'�¨ÙËÞÃX½‡‘ž“éç{P±O%†">ªaîa€�¥µppã±òÃa+ö×8¿¸ï öÆ¡hEµ›G<Ó1rÉí£Ôy”jÅe³ØI–Y¡ÔQ”fËFÛöGE ]JÎM÷¼µÏ³X·øŽÇ?C€[‡©óÊ–ÍŒ@R»Æ­‡�íº¶)¯…/CÎþýG‹#?¾ýÃsò£e¿>G\øÃpþærýÿö⻄�æ>9Î ˆzPÊ †jñS3Õbl¦pvö¢]ÄD‰ãvHo;�‰b›Ö¸ó×ûÞé…ëXN·Öíž·öy¦ŽWŒ¿Ô3ÿÙþz–g…á�檚µt³æž¡ŽN™MÉ`³øÀsµwñð§NÔ×IÀeý]ýáûËýŒÆü[Õcu×ñ-�ã•Ç©À•sÍŸáw³ÓxÞ¬á›ûŠòãµÃôþó=¸Ø§CÕ0÷0ÀÀÒZ¸øÅ/„sú‰ðâHuùöSYö7¿.|ÿcá™�ìy8óÑÊz‹' £ê²j1PLµb¬Ytthí«C^h´‹¹TrÛo%öWŒ±Y°E©}쎊˜ñ¹Çs©ÍEQ¸5ÆÝU$55 ®±8ÆÚë]Asϼ5γ<·f�7í})uŽ5j¥pãÚ5ó¶ðGñù¸ž!ÉëäR»�-Oõ9ÊžFE³Î­�¯²�ú¸£â¸ŸŠ}„êëÑô~A©z.±~¯Öñùy¼.«ÇóuçZ=ŸÑXÿ¨²mYÇ—Ëß|}|Þœ«²çQšŒ»ó|ÇÛÎ.ö©ÀÀPÄG5Ì= 0°´.î oÿŸ·…³g¶³?êãÇö}aãÕ xÑàiw²6î aYR-Æf €Û…EºxÈ‹Œ¾eÕ}¤�[- šE_jåùßvýÛ›§nùyL?ßb­Âu´}þµxìS €�¡ˆ�j˜{``i-NüáôûÿQx6ûÊçÔòÿ+¼ø'£åýo©O½!œü?ÿt´î?/ÖÖ™¾�K¡9_�²O‹ÎþÉTF²À{¶O¾¦àyI‡ûy8Þ~Ï»CÞÙo Ôü üÄ,ß°%8~À='>¾šó•VÜzÙÊã¨(Þf-À_Ç4×¢-ygvû=Ïá\ªÍï˜>üW='8~À=ÀGל/*ñûFîäæ%ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=f €w?ÿ›µÀ“‰Ý/¼©=_0g±W%†B У €×××Ãêêjj6/ O~/�oüÉZø9h£¹ˆs²{êáö|ÀœÅžUìïÅ>ŸXv`€ñBðܹsý0°Ðªpì÷ €�e&˜"^nll„“'O €àŠ}½Øß‹}¾ØïKõ–…`Šííí°¹¹NŸ>Îꊰûøç’‘ÀzìÖpþ¦_Êú{±Ïû}©> À²L/Ïž=›ýÁÛ|ð“a÷£?öžûVúbX{Ï~=ì}ô¥aóÁOeý½ØçËN 0Eù;ÀñÓ�kkkaã¡›ÃùOÿröµ1Àâ:ÿé_ ßÿLÖ׋ý=¿ÿ �`ñ¢pkk+»HŒøâ×ÅÄß Y]]ͬ¬¬  ìÙÅþ]ìãÅ~^ìëÅþžð0ÀŒÊ;�ã×ÄÄ Æ���°¾¾žIýqæ¯ìÙÅþ]ìãÅ~ž;�!@¼HŒ¿Å‹Æ(~rXeï®ìå �!A¼pOªŸ0`€%!X`€%!X`€%!X`€#ØÙÙPªŸ0`€ˆŽÛÛÛ™sçÎe¶¶¶€RöîÊ^ž@0ÀŒâEb¼h<{ölØÜÜ a}}=“úãÌ_Ù³‹ý»ØÇ‹ý¼Ø×C!˜A¼8ŒŸŒŒñßéÓ§ÃÉ“'ÃêêjfeeXeÏ.öïb/öób_/ö÷„ÀÀ€¦(ïü�‰kkkaýÖ[Ãö¿ÿ÷açŸþS`�m¿öµaý³ŸÍúz±¿çN``ÀSÄ߉_ÿàmÜqGØþWÿ*ì~êSa÷é§ÃîÊ °ˆž|2ìÞtSØù…_?þÒ—²þ^ìóÅ~_ª°,ÀSÄ ÂøéÀøu1Ûÿá?„Ý/~1}A ,žÏ~6œûõ_Ïú{±Ï'–�`Šøµ0Ùo†Ä¯�I^D kçŸÿó¬¿û|±ß—ê, 0@�ò÷×××Ãêꪎ¡Ø×‹ý½Øçó;ÀÀ²ôˆ‚[[[ýð#�„�·¾5ì¼ìeÙrFâ\Œæ$ÎMk¾`ÎbϪ €c¿O ,30@�2ŽìVŠ ÅÖÅãþÏõð“‰w¾³5_0o±Wû{±Ï'–� ÇLð/üB=ôdb47Íù€y‹½*00`€3ÀÕÀ“–æ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è!>ºæ|Íêáÿþºð’—¾=Ü–X6÷…?úå+Fcx]ø£{SË»ÝöƸ]éàÛÚGÞÞ}¼{ÿ8üR9¦_þãðpsy§áÍãs9è¶S�·7$½N]>¶_úï÷%–ÀåTÖÓèmTk÷™kãKáõöÂŒyºØ§C!è1�xïÛa£ê¹páóÎw.�¾öÆËž {×MÛgôÃpá¹Ôë#ß¾1ì\÷ùô²Ï_WÛ÷A5çk6—6ØË‚Æ©Aæ$ø.Ä—6î [•åÛïúé°þÓ¹Îm¯§¶‰zàG>2Þ&þÎpu»ÃhÎW¯¬XH¦#y1R-$Šb¦ZŒÍÎÎ^@¤ÜÄq;¤·�fßÇD±MkÜùëýoqγ¯ §[ëvÏ[û×Â3À#y�\j÷²å©>GÙÓ¨hÖ¹µñUöQwT÷#±�P}=šÞ/«Žit¼?jÔñ�Ç­ìãÀco[ö•Šø¨†¹‡!–ÖüàÊc{#ì~ëoà ÿªcyöx$ìu,ÛûXÿ6qŸ3ÿðè±÷•ë&ëBs¾ºM»“µqé¨k…3ÀíÂ"]<äEFß²ê>ÒÇ­ƒ�¢/µ�òüoûïoožZ¸åç1K°šUGÛÇãÔŽ1’*N3õ÷`rÜú|Æ×ÛÇk¼•u'ëä²yéCß2€.±O%†">ªaîa€�¥5�xý§~2<õ“uÏÿÔä+›SËŸúɟʾž9¹íO÷o“í÷§*{-®[gçŸþtx¾µMs�ƒkÎW§ì“¦ød*Eà=Û'_Óð¼¤Ãý<o¿çÝ!ïì�7Pj~~bHß°ûT``(À=æ/»æ|¥w‡^¶€ò8*Š·Yï†m|•Ó\ï MÞ™Ý~Ï«wK§ ÐüŽéÃÕ0\±O%†B ÐC|tÍùb ¿oäN^`^bŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è!>ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B Ðc¦ø­o­žTüçÿÜš/˜·Ø«C!è1K¼ûýïç!ðË^V?‡,ÎÅhNvy¤=_0g±g%†B У €×××Ãêêjv¡˜º€WìëÅþ^ìó €�e'è/Ï�;'€c¬Ç~ŸXf`€)âáÆÆF8yò¤Ž¡Ø×‹ý½Øç‹ý¾T`Y€¦ØÞÞ›››áôéÓaûßý»°{ÇÉ‹H`Ýv[Ø~õ«³þ^ìóÅ~_ª°,ÀSÄ Â³gÏfð6n¾9l¿âaï;ßI_L‹ã›ß ;ÿê_…�¿û»¬¿û|``Ù €¦(8~:pmm-¬æ3aû5¯É¾6X\Û¯}mظýö¬¯û{~ÿ0À âEáÖÖVv‘ÿðů‹‰¿²ººšYYY@Ù³‹ý»ØÇ‹ý¼Ø×‹ý=á/0`€•wǯ‰‰Œa}}=“úãÌ_Ù³‹ý»ØÇ‹ý0°ÌÀ=Ê8þ±[YYÉ.›�¿ò»µð“‰ÿ~ò¡Ö|À¼Å^UìïÅ>ŸXv`€³À¯zöžZèÉDœ›æ|À¼Å^• 0@�YàjàI[s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è!>ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾fõµ÷ÿÇð’—¾+|2±l>¾Þså£1üÇðž‡RË»}ò·ãv¥ƒoh÷®îã=ô§á嘮üÓðµæòNŸ W�Ïå ÛLuÞ®þ»ô:uùØ^ñþï%–°XÊúröZ?ï ”µâåìÌ_Y#ÏV�TëþƒlwÑ-n­ûT``(À=æ?¾{a7¼XµûB¸ùÔ½ÅòGÂ×ö*˶Ÿ¯½þgÏÕ·{!|â™{ÃÛ×_kûÙßûì±³¿¾õÂd»ï®OÆ�zí¨šó5›K[,dEÔÔ s|¶hÊ ÕyÀE`ýÛŸM,+ιcÙlŠý_¸4Ûû³`,ûPr_�vð¸´|õ_>}ý†À¥">NpöþΡßûT``(â£æ†XZó €Ÿ �Ç¿ÊÎ…§_<ÛÎÿH‡ýÍð‰ÕÑò“'ÃêèéÎù³áÌ…Ñ?.¬…?m÷gÃæîù°ya/[=„½üùîéðñS'ÃóÅkgÎ� ßí÷{gφo®�¶ÛÜΖ<þÂd ©×Žª9_3™Z4ͬãQÍ5Î ¼îc§x¶Â/�»Ã¥ i—.¾”!í1 €çÕ§‰}*00ñQ sC ,­ËŸ_ ï}ðÖð/üTøÓ�<Ô}<Þ‘»¾‘ýûé3_ ÿÏ‹ñõíðµÓ£×½5ü‹o}*ü‹>ÎÄÎ>–?ÿÖ­á77_Œ¯„Íg´¿¸Ï£‹w…•å§_ÇšëTBм8¬¯×Ú¾T)2jÛe:BÕ,¤®®×.Dó}u‡²ÍcµŠ³Ö1¦ì«§Xê €Ûçœ*ª»àöyë6Ž—žÿŽyëëØ”À€jÖ µúoò!Üj ™…|EàXÛ6*·ïÝo®U—6jÂ|yO­:Þ¶¾ÎÔ>B‡ìx£q¾§º}uÛÖ9W�Û3W­ñ–Êúvòmdõ×ëû®nÛê%&ÎÞ£ê±ê!nÞSÍGåØå²Lu>®|W¸º8ÿ|yϘ[}�Be®›ÿm%ØŽ}*00ñQ sC ,­Ë?þ xíÖÏe¨c ûç[1ô=¾¹ú•ð¦3yüøFùõÐ#§ŸkñÅ­§Æ¯•�îc1(.×k,{zý»á÷Næþz+ÿ?†Ëw| R, ªÅVQ$tµ×kŠÂ#Qp6åEF;d,‹�ê?9Ï'cîÚ>¹¬YlçR;�æŒåçÔ}Î=p1�Õs‰ckï«{ÞÚçY¬Û*ØÊ‚¸(h“çÒ3ÖŠl3¼‡ÌbT§Õj¬zX ñºjÏzÝ—–Õ{�Z.ië5å×ÞÿÙÚ~Òûî¨=Ëý7ëì‘Oþvýy—üxí 2�Û|'ã˜>W3…´‰ñÇq5ë÷Ö¼\ª¸²ªaîa€�¥uYàÆcçìõ?z¶¸;ødøŸY8üLñüÔønáÃÀ«? ·œÌ}élñ•Ó—-Î/î; ¿TqW-¨*Hm»š¢€è«ÚEÌÈLÇÈ%·�RçQªˆÍb']°f…RGaY¤ýÅQQÈ–’sÓ=oíó,ÖmÆåøg(ðËâ0u^Ù²ƒïôiœÍº®]ç5µCÓ¶vÐ7C}8’Ü÷êóI™¨ÑÚÇ«Ž³]×Ïkú\•c?hܪ¿ëÌ´ï¦Ö~êïKë}«£Ý¨o;˘Ûÿ]Díy>ªØ§CÕ0÷0ÀÀÒº,ð…‡/�ìÿ~â‹áßÿÞÆÙl­µ�‡Æ¯•Æáðé;Â/<šû•¯œn®XÍùê•�Â¥� Õ¦YœŽÌTüÍ^@´‹˜(qÜéí£Ù÷1QlÓwþza7CñY*æ°½n÷¼µÏ3u¼bü¥žùÏö׳<+ 4wôjÖã­Úp†º2F6¤‚¾ìµFMùÉ¿«×õyÝÙ —‹1Õ^ÿ^øZå®®öfêäòãMjízÝ۬Ûõú,5x¾MïXº‚ÒÊ~Ûs7RœgŸ ¡±Myþµ¸rœüy1ïÍym<ŸeÌé÷·ý>d¯=4ýýëûT``(â£æ†XZ—%>¿þGÈ–Ë~ïlä¶ïÖÝ ßÿq±}"~Ås?ʾ*:„ÝðíÕðÙÍç¶^_XKßÜwÇða5ç«OVtµâ"Ê ¡z1k1×ÚW‡z�×|½^€|ò·û+Ƙ*ºRûx~TÄŒÏ=žKm.R…m¹ŸéçÒ,¸Æâk¯7 ׉ÎykœgynÍoÚûRêkÔ(J¸8òš¯0ª ßS«Íf 5ûHÔÓÙòÎz³ªY{–5qnR_Ö_Ïûÿä¨6�õcmÙ”ñ—Ê~À+*û®Ö¡ãº7ó®ðžø||^³ÍÕ¸¯QhÕÌÙòt¸[nsõûãóî¾E&1ß)Õ÷ Ž%>/Ç”¿oÕùl³z.Å;ãó™iÌÍ÷qòþ×ç:jŸï¬bŸJ E|TÃÜÃKëòÀÏO¾Ö9so¸9Ëeφ/?9¹[÷Nþ8¾Ö¶¾—¯— €Ÿùr¸þÌFëîáÇ×1n~‚¶©&K£B*+@ªÕŒp»°HeÁ×½¬º�ôqkEl£èJí£<ÿO¾ÿ]áêfÛQO?ßb­âs´}Ÿñõöñï_eÝÉ:¹l^:ÆÐ· .†¼^Ÿþaë¡Èàã_‹Ç>•Šø¨†¹‡!–Ö|à;¿ü֧¿ˆ_ùÜXö Ž^ÿ֭᪯?zëèµO…ùhùZÇöÙzw„7=zwxû£_ ¯/·imßñÚ5ç«SöiQÅÕ�d�÷lŸ|MÀó’÷óp¼ýžw‡¼³ÞЩqWêD^£._\ÿàvÕ,ß°%8~À=æ/§æ|¥w‡^¶€ò8*Š·Y °Æ×1͵hKÞ™Ý~Ïó@8—*@óüð_õ³pp�àøô]s¾¨ÆoEîäæ%ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=f €ÿÛóß­žLüþÉï¶æ æ-öªÀÀP€zÌ?vn= �¯|ö®Zø9dq.âœ<>š›æ|À¼Åž• 0@�2^__«««Ù…bêX\±¯û{±Ï'–� G¼wêÉðš}-‘õ÷bŸO ,;0ÀåïÇO®­­…ÏŸz2ûÄ`üÚ`q½iå›áK§žÊúz±¿ç÷�!Ì ^nmme‰ñ_üº˜ø›!«««™••`”=»Ø¿‹}¼ØÏ‹}½ØßþC ˜Qy'püš˜xÁ¸±±Ö××3©?ŽÀü•=»Ø¿‹}¼ØÏsç/0$`€ˆ‰ñ7B¢xÑÅO‹£ìÝ•½<á/0$`€#ˆŽÀâIõó†@ °$ÀKB °$ÀKB °$ÀG°³³, T?`À/···3çÎ�Ëlmm ¤ìÝ•½<�00$`€Å‹ÄxÑxöìÙ°¹¹666Âúúz&õǘ¿²gûw±�ûy±¯'†B 0ƒxq?9/ã¾Ó§O‡“'O†ÕÕÕÌÊÊ °Êž]ìßÅ>^ìçž^ìï ��!LQÞù/×ÖÖ—°Þñù½ðÚOí ,öñîz4ïëÅþž;��!L#$~MLüƒwÏc›á�Ÿ¹¾øø…°²¾Nm‹è¹õݬ�÷·î‡¯?žÿŒ[ìóÅ~_ª°,ÀSÄ ÂøéÀøu1¿û…½ðõgö’”Àâùê“{á¿Þ¹›õ÷bŸO ,;0Àñka666²ß ‰_“ºˆ×ë?½Ÿõ÷bŸ/öûR}@€e!èQþþïúúzX]]À1ûz±¿û|~Xv`€ñBpkkK ÇX5Žý>0°ÌÀ=Ê8þ±[YYIÀO®í†îÙ ¿úéýl9ûÙ\Ä9‰sÓœ/˜·Ø³Šý½ØçËN Ðc–øý÷ìÕÂO&>ðµ½Ö|À¼Å^• 0@�Yà߸5~²ŸÍMs¾`Þb¯J … Ç,p5ð¤­9_0o±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=ÀGל/˜·Ø§C!è!>ºæ|À¼Å>• 0@ðÑ5çkV÷]ÿ†ð’—^N$–ÍÇ£á½W^1ÃÂ{H-ïvâÚ¸]éàÛÚM×uï�…+Ê1]ù¡p_sy§;Â5ãs9è¶S�·knJ¯S—�íŠëm/+Ï÷Ž÷¢ë{ÿ8¤²®�½Ç�÷$Êõòô&Êy¶úxŽÚ+Š}*00`€ f?Üvf?äºóÇùóûá©æËýûlÓ©ý𵳉׋e­c\ÍùšMO°wdEÔÔ`p|¶ØÊ “yzE`}í‰eÅ9w,›M±ÿ9ª³½?S ¿,L�ïßåüÁAô¿tÈ꿾Úïàpér~8]Ü&˜]|TÃÜÃKk‘à¿ZÝÏþh‡ÝÝðÄó;á‘èô^øÑSqùnx2[¸v¶/„K«»áÞÍüß;»Ù £íËeç[Ǹšó5“©ÅÛÑÌ0Õ\àìŽ×îc§8›·©ÇÉÇs©>$0wSÞ?Ò.eH{9`ÚÀ³‹�j˜{``i-Rüð^–Þ†ÛoZ WÝXñѸ¼€Ïž 7üÅsáÊÒ�[áU7æÿ¾áÉlá‰'ËRǹؚó5‹®°²üôëXs�Jˆ–õõZÛ—*acm»LG(7¾Ã´Ô.@ò}u‡zÍcµ>ÕÛ:Æ”}õ„¦}pûœSÅTwÜ>Ïôݬéùï˜·Ž±Ž%Óâ¸Õýׯ[„Æ×^—=tÜþúÔ�“»¿KíO\'ŽU�W~ u©çœ¦½K«Y;Õê³¢Ž»þÑZíš}¸µ]¡¬­š5ug=[Y§Q·åË{jäñ¶õu¦ö/:5ëÑjÝ—½!\sm1æk?4øf�rÎɺ|<¶Æ±P£ŽkÚê{RÙ¾9ϵûc¾fTϧß�ÙÄ>•Šø¨†¹‡!–Ö"ÀyÀ»>�X6€wöÂÇïÞݵÞXYçƒÏ^ˆk„'PÝîÒkÎ×tyÁ‘ C«SQ Ôî­Ýw†EÚ …L^ ´Cײp©ŽñÄh<'cîÚ>¹,;ŸÊóâ\jçÑœƒ±IAÜ^–ë €‹y¬žK[{_ÝóÖ>ÏbÝÊñòuÊ"­(*“çÒ3ÖŠl½ïaj¼Õ×*c,溜ƒxüÚ{››õ÷1{­Üwê½j½–Ÿsú=ÊÇÒ÷þ,§XU½J­V}ÞYO5ëÍ´Z W}­QËÞwýµý¤÷Ýc£FmÖ÷#'®­?ŸIk?•ºr¼¬:–ÑòÚ9ÖëÐú¹äÛMæ´]³fó3¥6/åûnÏñdYe³z¹<¯þ1çïÑdÛæóƒŠ}*00ñQ sC ,­… €ïÛ /Ä¿Ø[{áƒÅkåoþžz&>/¿ºò8·?^7:.pº¸JÉ‹‚Z1’ âZŠâ(Q”4åcii‰ãvHo¥öQ/rÊs™i.Åe]³°«(àéóÑ=oíó¬ ©çEÑÖqÌéÿ 4æ*)5Þê8ògAo1×Õз¦˜£Éòæñ;ίq�ç<õýXny U1®�ÚõVÓ,}„v=6K]Ù±ïq½ÞT®WŒ¹öÚ!´jÅ|ÌYm—ç“�[³þ®Ž«XV?—Ƽ–½�¦T ›Ðý$ÆS˜ÔØ]cÎÏ·úÞÏò^÷‰}*00ñQ sC ,­Å¹¸xÇðùðÐnþ›À/<[Y¾{>Üýð‹áöèÁ�ð»•}�8¿èï,ÀREV¥˜K<Ó1rÉí£Îbq¤z>­"(]äÔ‹½Ä²Ñ¶�áf¦(ªJɹ鞷öyëVÆ”�£ÿ …vY|¦Î+[6­àK�·:®üßÙ¼ïGuŽòsŠcžh§å¾[ÛËÛçÚãî{ÿ–[»vËj¤ñójWÝnb–P°¾Ïèèð,}�I°zˆýfÛ$n¦Í¹kÔªÕù(ÆY­‹¢û=h¿¿u}cn.›í½îûT``(â£æ†XZ‹Ÿ�ìŽþbï]·|&>ß WÝy.»+¸ǯˆþèVxU¦ºý1 €³"*]•�ܤi³aÓŠ�‰ü˜Íñ$ŽÛ!½}4û>&ŠmZãÎ_ï/ÒšE_�bÛëvÏ[ûs!쌞×à½ýðÜ™ýðXé©ÉöÇ!NdµeÕ‹ü"”«/3U³ y‘Ò."SÅˉkûK‡…Ô>N�  ñ¹Çsi^í³ÜÏôsÉÎ9UèÅ1Ö^O}¹ÎykœgynÕýÆmg-v;ÇïqjNëŠùJÍa¶ïüßÙ~jû,ο1öú{UÙv¼ï†FÑškϳ¾Ëj\Cf® ï�Ïǵ\µŽko[*ë¶\»ŽÏ–wÖ¹UÍú¬8~±|R×Ö_Ïû?1VVMRVk .ÿ]s´ü½•eãz·aRÛ&–Ï8îiµmý=Ž&çÕ?æú<_s}¬µ_CÇ>•Šø¨†¹‡!–Ö"À¯ýì�Ãw6ò¸ú¨ÀÍÇÚdûÅ€+…LÏòqQ0*ªENfƸ]¨µ‹Ã(/Pú–U÷‘>n³�©›©}”çâúëÂ5Íb²£�%XmÍUf´}^ºÐL�=›—Ž1ô-«+ÆT[·x-Wþïl¾›¡rh—®¹)ñßfð6L]§6'ùfyÿà(b�Þ¬?Ó½‚åûT``(â£æ†XZ �\uãsáÊOž ï¾íLx÷ß=®ü‹çÂUÙW=o…«FÿŽÏknÜšlÿѵÊúóÓœ¯NYèæNÈÉÆt@Ýty‹ºt¸Ÿ�)ñžw‡¼ ˜&ç=8Oq€÷€ePÔŽÍ 'jæ‹«8nµ/P|hyz�}¹Æ|ñÅ>• 0@�E €�£æ|¥w‡èS§GwÀÀ±zWëABÊ‹!YT¶ßó<Î¥ŠÈüŽéL‹¹LÝí;{8}ˆÀ«¨[ǽ�f];±O%†B ÐC|tÍùb _«]ö;y� ï뻀ÅûT``(À=ÀGל/˜·Ø§C!è!>ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€³À7ܳW <™xÿhnšóó{U``(À=f €Ÿ8“‡À¿úét:Dq.âœ<¹VŸ+¸bÏJ … G¯¯¯‡ÕÕÕìB1u ,®Ø×‹ý½ØçËN Ð#^ž;wN ÇX5Žý>0°ÌÀSÄ Â���pòäI0C±¯û{±Ïû}©> À²L±½½677ÃéÓ§ÃÛnß _{z/y ,ž{žÚ ï¸c/ëïÅ>_ì÷¥ú€ËB 0E¼ <{ölöïμÞüÙ áû'…À°èz~/üæ­ûY_/ö÷bŸO ,;0ÀåïÇO®­­…/?²Þùù½ìkc€ÅõÎ/ì…»Ëûz±¿ç÷�!Ì ^nmme‰ñ_üº˜ø›!«««™••`”=»Ø¿‹}¼ØÏ‹}½ØßþC ˜Qy'püš˜xÁ¸±±Ö××3©?ŽÀü•=»Ø¿‹}¼ØÏsç/0$`€ˆ‰ñ7B¢xÑÅO‹£ìÝ•½<á/0$`€#ˆŽÀâIõó†@ °$ÀKB °$ÀKB °$ÀG°³³, T?`À/···3çÎ�Ëlmm ¤ìÝ•½<�00$`€Å‹ÄxÑxöìÙ°¹¹666Âúúz&õǘ¿²gûw±�ûy±¯'†B 0ƒxq?9/ã¾Ó§O‡“'O†ÕÕÕÌÊÊ °Êž]ìßÅ>^ìçž^ìï ��!LQÞù/×ÖÖÂçž¹?ü§ïþuøùoÞ,°_ûî‡ÃçŸy ëëÅþž;��!L#$~MLüƒ÷Åg¿þÍýÿ+ܲzxæìZXÝú1°€ž~ñL¸eõ�påwþW¸ëGeý½Øç‹ý¾T`Y€¦ˆ„ñÓ�ñëb®~ðÆðåÓ?H^P‹çŽSß ¿õÐßfý½ØçËN 0EüZ˜���ì7Câׯ¤."€Åõ ßúÿeý½Øç‹ý¾T`Y€z”¿ÿ»¾¾VWWÀp e}½ÕÕ¬Ïçw€�e'è/·¶¶ÀpŒUàØïËL У €ã»•••düèæjx×#Ÿ¯øö²åÜ�ÍEœ“87Íù€y‹=«Øß‹}>0°ìÀ=f €ï‘O×ÂO&þÛ£·´æ æ-öªÀÀP€zÌ_ù�ÿU =™ˆsÓœ/˜·Ø«C!è1K\ ºæ|À¼Å>• 0@ðÑ5ç æ-ö©ÀÀP€z€�®9_0o±O%†B ÐC|tÍù€y‹}*00`€—3~Ï™õ°¹»]ñbxì̗›ŠåW=úíððùÝìy|ììž ÷<ý‘bû�„?}áLؼP, »£åÛáOߨísbõÌgÆÇ¾˜šó5«{ox}xÉKß>‘X6Þ}å£1¼>¼ûÁÔònŸ¸6nW:øö‡vó;»�÷àŸ„W”cºòO½Íå�n W�Ïå ÛLuÞ®¾9½N]>¶WÜð÷íeåù^Âñ^t}ïÀ •µéì}‚¼¯PÖ™—£¿pð1siÅ>•Šø¨†¹‡!–Öe €Oof¤7·ž ½p*œÙËž†3/|&üüC÷…ÇŠpwss´|ý…°“=[_zô†pÕÊsùó½£/ÄíG67Ãý+_ ÷Ÿ?6GòõCØÙËŸ¯œZ¤¸'Ø»² qj08 >g #Ûòbs^�^X_{KbYqÎËfSì�êlïÏ” daj|ÿŽK¡Ýÿþ,µ¬†ë«ß¦^¾˜ €g•½Gsè7Ä>•Šø¨†¹‡!–Ö"À�>óžðswŽÜýÍðT|aç±ðÇ«ÏgËvÎ|.ür\6rõ³/d¯Å€x¼íŶ¥»ß~îsÿ%üìÈ'Öã›á®ûóç?wwzGÕœ¯™L-üŽfÖ€ñ¨ægw¼vë8À³~ùx.Õ‡ænÊû°Ì.eH{ù`f5¯>MìS €�¡ˆ�j˜{``i-Dü£òµo†Gã ;�„›Æápe›ïÿ œ‰/¾øípõÊély¸ðbxì…o‡?|ø¯&ëNd»Ø w?^ýbkÎ×,ºÂÊìõâ®ÜLs�Jˆ–xõõZÛ—*EFm»LG(7¾Ã´Ô.&ó}u‡zÍcµî4ncʾzŠ¥¾¸}Ω¸;nŸgúnÖôüwÌ[ÇXÇ’�iqÜêþkã-Bãkß™=tÜþ†Ô�“»¿Kí»ÀÇŠªÇ+¿†ºÔsNÓÞ?€…Ö¬j5VQ‹Ýð÷µú3û@ok»BY5ëâΚ´²N£öÊ—÷Ô¹ãmëëLíAtés¬7_®¾¶óµ2øîœrÎÉÚz<¶F={À:³¹ïɇ®óýÆ1V×™ÔÊ}Çm×Ï�çZªÌuóým×糋}*00ñQ sC ,­E€ŸzþSá�|*¼çäóù×6o~3|úÅlQ%yü‘<-ÿù»ÿ*üÍ™Íñ×<ÇÇιï‡?¼²þâÀ“¢¢öz, ªÅVQ$Ôî­ŽÝw†…Ç EP^d´Cײø¨Žñ£ñ|¢1æ®í“˲ó©Fu,£å]ë�ž×Ï%ßn2§íº3;þ”ú:W¾Gõ÷ñ£¹ÌÇ’ï»Ù?Èõ7޹Ùsh¾©÷6¹nVkü}(Å>•Šø¨†¹‡!–Ö"ÀõÇf¸ëáÿ~ÿTqpWðôÃáÑüï}þûÁÅú‹§ �´¢ø¨2© ®¥(j…ES>–fa‘8n‡ôöQj�‚©8—™æ"Q˜Ö5‹ÂŠ"ž>ÝóÖ>ÏbÝñù5ŸwwÑôÿÚÅe[j¼ÕqäÿΊÐb®ÛEl¡’7�ßq~3´Óß?€Å—×Aãú§]35ÍÒ h×T³Ô†û×ÜMåzŘk¯\ט³ú2ւŲl½f ]W±¬~.�y-ëû¦TÚ4­.î›ëYŽÛZ§^§ëåÄ<ºÇÙ/ö©ÀÀPÄG5Ì= 0°´!^9óÍpóÓ#�.¼õ®÷„—�–•_ñ|æÔÍãõ¯*ø…/Ôöóóñwðhˆ{ÛÙøêøõÅ €ó‹ûÎâ-U U ÈbùÁƒÁ´v°92Ó1rÉí£ÎBs¤V7‹�tÑY/ËFÛöGy!7>Nrnºç­}žÅº•1åã(Ç?C‘^‡©óÊ–M+ÀSã­Ž+ÿw6/‰B7?§8æ‰Éòƾ[ÛËÛçÚãî{ÿ_»þªzÕZ¬ºÝD=ØL«ï3:zªaîa€�¥µð£Ï¼/¼ìüá‡ÂJ¶t;·bYû=ëz�Ê×ë5ó½ì=¨Š}*00ñQ sC ,­…€«_ó<ö¾pÍãOdwõNçÂSÏÝ~y´ü?®þ¨öû¿ñ±yæ«ášJˆ¼ˆp»0j,«E(W+|f,ÈZûê�í4U€|âÚÄþRÁa!µ�ÕQ3>÷x.�â©]Œ•û™~.Í‚k,ޱözªpËuÎ[ã<Ëskx³Ê�c�Š÷85§uÅ|¥æ0Ûwþïl?µ}çß{ý½ªl;ÞwC£Hϵ ïYß?€E6®3ï ïŽÏÇõXµko[*k¯\»Ï–wÖªUÍ«8~±|R›Ö_ÏûÿÄhüYMW5eü)í1ç5gVO¦àòßå1GËß]Y6®Y&õibùÌãîž�r¿Ýu}ÏqËú¸põ ñyóým{òÖÿÛŠÚÿmÌ*ö©ÀÀPÄG5Ì= 0°´.güów¿'üìçþKø¹ê�¿�å?÷¹? ÿñëÿ'¼õëÿ+üRuÝbÛŸ½ë‡·~ãÿ„«ï-»ó}µí_vçhùçò¯”®¾~±5ç«[¥êY>¾àÕ)SÓƒÆfa‘.ò"£oYuéã6 ·j¡šÚGyþŸ¸á�áêfáÕQÄά¶æ*3Ú>§vŒ‘Æ8'êïAWÑ_o/Q ëNÖÉeóÒ1†¾euŘjë¯eãÊÿ�Íw3T.?\P¸úæÄ›�v²î”ujs’�a–÷b­Ý¬!Óõ>)±O%†B Ðã²ÀK¢9_�²ÐÍ��’Œ³}òõò„ép?Sâ=ïy$0MÎ{*pžâï ¢ãÁ—¾§QýPsñZ1–éur±mkÌíZ}™Å>• 0@ðÑ5ç+­¸;Ô'Và€�cõ®Öƒ„”C² m¿çy œK ùÓ ˜6¾ò:3sÑ]:D` À°%Âç!¸GûT``(À=ÀGל/ªñµÊÑe¿“÷ú¾¾X<±O%†B ÐC|tÍù€y‹}*00`€à£kÎÌ[ìS €�¡ô]s¾`ÞbŸJ … ‡øèšóóûT``(À=f €ßõȧk�'¿7š›æ|À¼Å^• 0@�YàG6W²øßþ@-ü²8qNÝ\mÍÌ[ìY €�¡ô(àõõõ°ººš](¦. €Å•õõVW³>ŸXv`€ñBðܹs`8ƪpì÷ €�e&˜"^nll„“'O €àŠ}½Øß‹}¾ØïKõ–…`Šííí°¹¹NŸ>ÞðÝ¿ wžþ~ò"X<Ÿ?õ½ð«ßý«¬¿û|±ß—ê, 0Àñ‚ðìٳټÏ<ûípÕýþþÇÏ$/&€Åñ�?^yÿŸ†Ï>ó�¬¿û|``Ù €¦(8~:pmm-Üþìýá×¾û×Ùׯ‹ë׿ûáð…g¾›õõbÏïÿC ˜A¼(ÜÚÚÊ.ã¾øu1ñ7CVWW3+++À({v±ûx±Ÿûz±¿'ü†@ 0£òNàø51ñ‚qcc#¬¯¯gR€ù+{v±ûx±ŸçÎ_`HÀ/ão„Dñ¢1ŠŸGÙ»+{yÂ_`HÀG/€Å“êç �`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„`I€–„àØx"üåëþmxÙË£÷…/&׆L pl<®åá%/�® ŸK®s9½¾÷¥ÛÃÍ·Dß O'×.%0À±±èð|Æ÷ÏþÙ? ßøÆ7’˺œ÷þ÷…_ÝkÂË^~uxýhù;ÞS¸ùK�„µñ¾¦+Cà�üãÉå¥ 0ÀE÷BøÜ[~¥BÞr{±^õŽÙ´WøÙÊ~;î°½åºÚ6-/ÿýð¹µrçGcK¬Sñ²·ÝY c¿÷Ñ7…ŸI¬÷’—þJxÓ-/ëÝÞ”\g¤<߇ÿ,übjyæ áú‡'ÇœE �ÿÁ?øáÏÿüÏ“ËcøCbá/C"¸ØîþýJ`ú+áe/ÿ·…"î €‹uÇwÑŽ¼ü†pßxß3À/««ðÊN‚äfü3Íc¾ôêð�§‹}?ý±ðêñë¯ÉîØý�7^^6~í-áY¸|wxÇh?Õ 8ÛotÝÝ£å'Ã_¾j²,c.ßæàpÔ *0ÀEö≷ŒƒÎW´¼C6¥ë7s¿þË/–¯¿!|àñ)ëWà—ÿÁ#źçÃÚ-oŸ²¯úXX-^ŸÀ¯©„®/„›ß8 �_ýá<4]ýðÕÅk¿~çKåºçÃÓ,_¿"üú-åë]ç=Þ[žÓËßW µ�® 20ÀÅV»#÷WÂ+íºðÞÞ¾úÀ �ß×íL¿ú¶2Œ­Þ;=þÅ÷OàøµÌ¿^¼^½“x7åíãý¼ìÝßi¬ûšð_î~6¬>]øèdÝÉ1ûàê²+ÂÏ¿#ü7·'<]ùzêÃ*Càw¾ó�Â_M p±­ÝÞTûJ劗¿)üå´@wä{ïÃx›7M»Ã¶3­?¾“x²~güðÿ //öS~Muóë¢S~ñýOûè €ëçÔôòëî®ýîða”!°ð€!\ «…¿y÷[Â+¿Å›y埅ïeë]êøÎð¦âõ™àÛ+w. ž:¾±Ãc·ÿYø�×½¦ñ›Ã¹É~ïãÿ¸ð€A\r/†µ>^?=ËpôÀ« ¯.^Ÿ„ÎÝðä÷~'û™¬[ý½à.Óà†µgg=¼C p±­ÞÞûî¿ 7ßr{¸ùK…Õ§Ÿ÷�¸!¼zðËß}_þ½�'üå¯Uî>.îè�ª¡nù»¾�}ã/+õä˜k}Ëøµ—¼ò}ásT~xtŒÏÝrwø^å7|o~c¹�ׄ7�ÈÏý{�¿�-»ÿÃï ×t4'·Üî{|´ýw‡¿|ËkÆûŸ|•4pX`€‹íá? ¿X†¦ ?ó–Û‹ß»½øpÚ¯„wÜ]îc†¯u~Ù–ûîû=ãLý.âÔïü¶ï&Ni|5p(`€‹íñ�Uîö­{Ù¯ýe¸ÿÅrÝ9À/{Cø�[êwÖö±?óÊß7?>Y7óðÇÂë_Þ±þËßþfµ²îÚíáMÍu‹»�¿x]â÷�£Ñßq»ß퀋A pɼ0ùºä‘µqð{‘¥¾:ZÍ¿z¹)õЙÊW9§¼¸VY·cߥµÕîõ²à`ÀÇ]%.¿n¹Ï$öµË°lÀÇ�(€Ž;0PwO'Ü|Ëí™/><ý7uŸþF¾îͷܾ7åw€ãE °$ÀKB °$ÀKB °$ÀKB °$ÀKB °$ÀKB °$ÀKB °$Àð¥¯Ü 0wÝ}_òu€eõÕ{¾™|`Y¹Þ†&ÕïXF`€%!8‚��`¥úyC 8€xḽ½�9wî\fkk X eï®ìå „�!Ì(^$ƋƳgφÍÍͰ±±Ö××3©?ŽÀü•=»Ø¿‹}¼ØÏ‹}=!00`€Ä‹ÃøÉÁxÁÿð�>}:œºæ|À¼Å>•ŠTüš×¼¦õZßë``i €�®9_0o±O%†¢+n†½©×J``i €�®9_³ºïú7„—¼ôºp"±ìb8qí£ý_®¹)½üXºéºÑ9½!¼÷�Ä2`q<ð¡pÅK¯/¹òCá¾Ôòã¢<�BgŸeÎ7ö©ÀÀPôÀeàÛ|Þ$–ÖBÀŸÙ·�ÙùŸîüqþü~xê‡ùò‡Gÿ>Ûtj?|ílâõbYë—@s¾fsG¸fT\qý£‰eãá½Wæ…É¥;Æ Šâçâ„ÐÅ9]{Gb°P.K š÷[.ɇá§õ8}¾o̱O%†">ªan©úö…¿‘XZ‹ÿÕê~öG;ìî†'žß �D§÷Â�žŠËwÓÙÂý°³}!¼XZÝ ÷næÿÞÙÍVm_.;ß:ƥМ¯™dw²^º»ÆÅ €³}¹ûèp1ûM—jßq¿±O%†">ªanÕ,áo$–Ö"Àïeém¸ý¦µpÕ��Ë‹øì¹pÃ_<®,ݸ^ucþïžÌvžxp²,uœ‹­9_³È¾ž9q'kþµÐù�»¹jHœßïè­­WÝO,W·oÙ¶W~(œ¨î£öéÔò“§ùÿví§,PÆû¨Ž£¹¬¢¶ŸÖx»ÞrÜÇúk£à8hÕõ“z}\ŸWkúJ½Þêm´ú£}]_íLzy¿äCão5‹êßlVïULŽ;ù&´ºJŸ¡Õƒ8àó;‚ÚÞó�:�;Ø(ö©ÀÀPÄG5ÌmšþF``i-Rœ¼;á‰eãxg/|üîýð‡Ñ]ûá�•u>øì…¸FxòÕí.½æ|M×ñÕ>EAP}=“B'ñµÎ‰mÆ:–•…ÉxeQ7.PÊbªQ€U �b›ÉØòmêEÙHßøZû‰ë7 ¥Ì$ün/.ž¢ÿÐ n‹çãÀ³\ÞYûw짺mÙƒ(ž7ûù±ÊçíÞCëöÅþÛcIô-Fã>PŸ¡sߥÄùÎrÜ©û�]ìS €�¡ˆ�j˜{``i-L|ß^x!þÅÞÚ ,^+ó÷Ô3ñyùЕǹýñºÑq €óâ%ñ)Ó¢`ê¾Ëµ($ªË‹"!Y°t`õâ)*ö;S½øÊû*�“dõsÈ^k޽c ™²èKÍES¶ŸÃ8€²GQé”Z}�ÎÞDw\íT{ ­ÞBuß•1Õ$ÖOõ!ÆÁuÇò©zö�KÀ3wê~gûT``(â£æ†XZ‹spðŽàóá¡Ýü7�_x¶²|÷|¸ûáÃíу;áw+û8p^ $ÛL¾–j�ê¥ €›�n"®§ ŒSan_œiî+gãkPÀ¥V©Û‹ºü’ÀE¯£+ÎÖŸÚcIì¿mÒ{éîÏ$LÝwâ|k:Ž;Ó˜gûT``(â£æ†XZ‹Ÿ�ìŽþbï]·|&>ß WÝy.»+¸ǯˆþèVxU¦ºý1 €³‹úïd- €IáP=nî·ûàr_õÀ¸Ç,ÅÙXqÜêùU^¿…0݉kë5µp1àñk�móãLzõþCªoðh¸¯ÖcÉ×IŽåÚúv­Ë4ÅX»û‰ó�é¸]c>¸Ø§CÕ0÷0þÁÿëÿýÿ _½ûëÉg‹}>¿ãwgc?ÜõÃýðÅg.„�ÑóZ¼·ž;³+=5Ùþ8À­O²VŰ´V$4 ›D‘pè¸òz±ÞdÇMwÍ¢¦^t�ô�/.«ÍEâ8#­Â¸tFõú5W潃‰I({1à+ªû¯,Ïû&oÈ{™æ‡è‹žEU­71Rô9JÙ¸nŠ=ˆÊ6™ƒ÷ÊžJ¦ÕßIœï¬ÇM�¹¹Î bŸJ E|TÃ܃ûqøÿ5‡=•%d*IEND®B`‚drf-yasg-nonfree-1.21.15/screenshots/swagger-ui-models.png000066400000000000000000001456051514731163200234460ustar00rootroot00000000000000‰PNG  IHDR€8èÓÁCsRGB®ÎégAMA±� üa pHYsÃÃÇo¨dËIDATx^ìý_k]Ù�àý×U_õż�À¼‚™`p½�)AÙ´/¦º Ñ�¡’ �©‹'˜NhÊq 1jƒ@eRŽ-d‹v0ç©Çq~²éé§L»ÜØnì1vüŒÂ¡©éÍú�ý眳÷Ñ:’Ö.Õ±tÖ§áCI{íçÈë;kŸwzÿ˜ÿöoÿx»Šÿûßÿû+0À L `JÀSB˜0À”Ø-ÿ÷ÿþߣۛ`€`§\Äß¾ØxŸ pŒ ÀÍø»[€€X�¾£¿�€€�ðnÛú`€`\ݶÓvàˆàT0À L `JÀSB˜0À”€¦„ 0%`€)!$úý›ÿ/Ü{ðÿ„Ûÿ×]à»ÿàÿ oþ¿ÿ�ç˜V0@‚ÿµõ‡p÷·«׿ÿçÿüŸè>ÀÛ÷Í7ÿ§œÇûÍoï—óz±}¦‘ �àÁÆÿþ×ÿÚŠŽOñD¿ßmþ¿Ñ1€i$$(Û\ÿ×ÿýÿ‹n˜F0@óz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDH°çН×ÃÒÏ~^Z ¿y={½¾ToïYZ¯›ÇíÑÿ\ùqøÑ�~þn=>Þò?WÂ�{ûþèïÖãã0å` '0@‚=PüçK᣿ú«ðWµ¿¹õu=öu¸õ7ÃíõÑ¥ðÏ£ÇîÁ?_ú¨<þooéßËßþ&>ß�Ç�‡ÿú_ÿkxóæMt|œbÿ>ø ù¸�À@N`€Éø¯ÿ:üuñߟ÷Wß®‡Ÿ7·�àù:¼~ý:l}ÝØÖðõÖëðúë€Ëñ­~l®E𿄯{×)ÎÕÚöIpÿÓúOá?ÿçÿ¼ç˜{ïÞ½ðÿã,�‹�w%9€$à�ÂÂǽÿþh)üc±ý—Â�zÛ?^X¨Çûx+üîïæ†+ƒ{~ôã•ðOýómý&üüGñ¾Aþ§â1Ï�±ý8¬üS=6€·~÷wa®¿_é¯ÃÏ#°ÿR"pÿÃøåþû¹ú· 9€¤àKá7åjÝ�ÃÊë ¯W>îýüQ¸ô›áx€·P­žûyXùõJø»�ÿºŒ³?þÕëÞù¾¿®ý£¿] ¿¾u)üü£j¼ À¯ÃJ™ÿj.ü|å×á×—ÿ¦:×�U}¿p+ÿ.,üuµï�ßQü7áÒ^¾K:ØKîÇßÿò_þ˾Çß‚ äDHÐ%ÿs½ê÷onm…_ÿmo[±¸9ÞÛÿw uÐýu}|}Lmÿ1,•«{ÿ6üº>ëÐ_ß Sìûã•ðÏÅc�_ÿ.üÝ\µÿoš÷Rž«~u‹÷O[áëúœð]éGà"ò±·9Ö�¿ÿí¿ý·Ööý$9€t ÀõªÛ¿^Xªÿû»‘ñ ¿)Âð_Í…K£�m.Çþ¶Œ¶uÐíiàþ¾Ûü<¬7ÏU?ú/µ5]¬N¾Ü¿.|Gbxñ· 9€t ÀýÀ[)WùŽŒï¼¸ÿØæ1+€_¯„�ësýc¹¸¶õuû^ê\úz+üÓï~VþöGåyÊ(Ý€ïH3ÿ�ÿñ?& 0� A×üõ­¿)Ckÿ»€GÇG¿øçå#œ#ßüñß–ßÛûãz¼úà Kåï>þù¥pë×·Â¥¿ûyøùÊ?¶ï¥ Àÿ3ÜZ¨ÎQúq€´Tï ß±~~ç�w& 0� A×üo¯×ÃR\—~^ÇÆÿm+üîïÚ�fþÑßÞ ÿ³¾º\­ò­ýu¹"¸€ÿ-lýîïÂ\c¼ÜçÇ+Õñ#xåãö~õ£Ÿ‡ßlÕ×€ ("ð¹sç¢cßȉ �à;ÿ ø/_—�oþú_"cÿö/áë±c…jüõë¯Ã¿DÇêë¼þú_âã0E` '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ � ø �“/î¬G·L£ÿû7÷£Û¦‘Ïy@Žbó}ÓHHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� Á~Püæ›oÊÿ!ÝÚÚzŠù²bÞ,6ŸÖ• äDH°Ÿ‹±±¸ÀÖ¾F`ȉ �`??(~ýõ×ѶÀV9›WëBr"$ØÏŠøÃ¢l€­rþ,6¯Ö… äDH°Ÿcj€¡Ø¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€¼�¼~ùñ\˜›«,­ÇöÙÝ—K§Â‰‡›‘±¦Õ¹÷Â{~6"c0I±yµ.` '0@‚·€Ÿ.…Ù÷Þ ï½"¼ßûlÄ÷kØøäÃðÞ{†O6†Û`›Ø¼Z0� ÁÛÀ/.ý Ž¹OÃÒì{á½Ù¥ð4²_éõëò¿±÷"<ýê«ðâõp[4¿~¾úêixÑÜ6!÷Î� GŽÎôÌ…«‘q¦Wl^­ ȉ �àmàÛ½Þ;ñ“p§÷óÆO?ï½7Vã«aî½÷Âs? }ØÛ¯·«s½}Þk¨ö¯¢ððØ�OfËŃýæVËííü"ÜùéìpŸ÷Þ³{X�¼6ÂÙã3áÔåØÓ.6¯Ö… äDH0ù¼~úÁ0ÎnÝþ(¼ÿÞûá£Ûýñ*qöÄ©�Â'«áÅëáöOŠPüAøÉí¯ÂW_½¯{û¶pýXé÷0î|YìóUø²·_qÎV^ÿiø w½,­—ûÜùéÞVÿþ÷¿kkkÉc1WO À¹ŠÍ«u!9€L<סvvéiõû‹Ká½ß‡ß\àÑïŽ=º€ËUÂ'ÂOî ÇûšxtÕðÖÆ'áÃÞõæVÛÇ4�÷³Ï> ögþò/ÿ²5öâÅ‹ðþûï‡?ÿó?¿úÕ¯ZcqVä,6¯Ö… äDH0ñ¼úÃ2Ôþð“Õ°ºZ˜?<ñ^ã{€¿MޝäÝ€«ÆM;àB?ô6#psÛ‡~¸í˜m.Ï•ßý+þä+6¯Ö… äDH0é\~ÿo$ÀWåÆðÓ¥â{{÷kðÃ¥¯ªÇD÷½x½ý¸QÍàûñiñwÀ `€œÅæÕº€�œÀ &€ëïÿýÁ¥ð¢¹½Œ·ýïŽà~àýøæÞ¿x½÷ßâØÖw߬¾sxö§7׃ü´}?;èGàwÞy§Cü­ø`€|ÅæÕº€�œÀ &€G¿ÿ·¯õ=Àcð‹¿sï÷W ÿ°Œ¾­\þ^¬îïÓ3·Znoà­½ßO´÷{o6ÌÙ¸Ö.Š|âĉNñ·Z|2œ½`ÚÅæÕº€�œÀ &»øÛz^ìú¸æáé^éüúE¹ú÷é‹ÈØwÊ# r›WëBr"$8\x:Ü;w29:Ó3®FƘ^±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€ä€ï�;Ž=ÎÞ��m„³Çgzûö²?ÙÙü"ÌûE˜½ð4>°ƒØ¼Z0� Á4à«§g©ËãÇbAwì1÷χxÊ= fWÂ…ÍØØ®ßÇ` £Ø¼Z0� ÁôàjåÃ1�ðÝð¯ß{7|ãàÙgŽuÀßBl^­ ȉ �`*ðå¹ú‘Í Çχ{½±êÑÏýísáêŽ)ÇÇàÖqÃó}óî÷¿Þ-pñß…ð§w„à¡~\s±b·¹jwóÂÊ`ÛÀ™�á1³_„Íz¥oáÌõíç*·•×)V÷~¿ÐŒÌÃcÚc@Žbój]À@N`€Ù¬.ƒn#—W—ñwxŽ2.Ÿ^íý|7ü±Œ¿ï„ðN¡ˆ¿Å¶Æ±¼×Ï´ƒëõ37ÂõÁø˜ÀýÐ;6ÔÖÁw$+¢qñ{y|uÞ24÷ÏSåþ>@¶bój]À@N`€ðÞp{5q­±jø�ßÿ^ø÷wß ÿþ½ï‡?ÖÛxûÊ\¯¾FÛÂN¸ŠGÅðà;�x‡ëëûÞ` 6¯Ö… äDH0mxæÜ˜U›;àè1{XÜr÷ûáßß](.Cð÷ïn߇‰Û¼¾ÑXq;|«Ç3·£pÏ>àb°è 4ÅæÕº€�œÀ ¦'÷Œù~ÞR4÷ìpÌÕÓýí�U­ýwÎáÂìÈwýŽ<Ö¹õ]À­G8ïÓ àòçÆõ{aÈ[l^­ ȉ �`ª0(En?bº ξ²›WëBr"$€á»ÓZa\ {±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€ÉÚýóaæèL˜9·oº<Žôö-�^�ï3A÷Î�Üý>ºÜsyÌ\¸瀽7p�ÅæÕº€�œÀ `¦^'ÇEÉ:\n À;sõô! Àµ¤{î€kûùÞç:u9>–l§0a±yµ.` '0@˜i—Jûv:FoÿÞ›�pöøþà.ÿà»›WëBr"$€™^«áTÿ±Ä'ÃÙû½±úÑÏýíÃиÃ1õy㑳 –ýcv{¤t$gŽŸ¬ö?=W_³]ÇŸ« ™ýíÅñ�û(﫽¿.øÔà|Í׿óëÜv�ò}nžkQ·¼þpÿÒñóá^={�ý÷¥:wý7,Çvÿ{À¤ÅæÕº€�œÀ `¦ÝΫ?ã+Mw:f{L­Î1Œ¡EtÜ92–ç/¢fH¯6Ži�¿Õåý•?ÏÛܯ}OÛ_Óö{ÞA`ûÇ�Ýýun»Nóþ{¿^w|¬øßeÇ×Ù ×#¯uç0Y±yµ.` '0@˜i÷ÝàØ*Óíçlœ¿¤eíÇÔê\Ãc‡Ñu4žï±ÚgôúÍÕ¹éxøèá±»¿ÎxnDâ‘s�û»ìö:ûãÛϿ󿘬ؼZ0� �Ì´ §m±Ð¸ó1ÛcjuŽfpÝÍ Hn À#ço® -ãé^Vo·ÛxËØ¼ûëÜv�‘\Ž�ý[4ůµÓëèÿÍÎFöÙùßLVl^­ ȉ �@fúµW®ÆV•Žà�©£l96ˆŠÕyúûï¶Êu§sncp\}ûÛ�׸<×öãËãî~?üû» e½ÿþñûß‚ºúqÍÅŠÝæªÝÍ +ƒmgêÅ1³_„Íz¥oáÌõíç*·•×)V÷~¿ÐŒÌÃcÚc@Žbój]À@N`€Ó€‡Ñ¶ »Çχ{½Ÿ¯žž®ìmî7²j¸¹_k5ðå¹Á¹¶îÞ ,âï;øûÇÞ¶r?¤ëgÚÁõú™áú`|Ì à~èjëà;€�Ѹø½<¾:ošûç)‚r [±yµ.` '0@‚iZV’a¸ýˆé28û`ÈZl^­ ȉ �@U­ü-V¿;ºi­0.ˆ¿�½Ø¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€ÀL¯�pöøL˜9·Û£ûçÃÌѹp56öÖ¬†SGg‘ӫ‘±—ç‘bßö¿zºŸük,¯»—×ÐPÝkåÔåø>pÐÅæÕº€�œÀ `¦×”àòžÒâéøØZ½G‡%Wª¾?¸xý'ÃÙû±±tÅk¦ØMl^­ ȉ �@fzMë àtÝcëwç`àâ\û€«o0»‰Í«u!9€ÀL¯:?9xlp38Þ;ר~ü|¸×?®¿Â¶Ü~r€Ë`Ùܯ|¼ònq¸~\s_3x6¯ÓŠ�Å1½ó6Æ«ˆÝ>W+l·ÎÕ3Vc±µÜÖß¿ùºFï¹08¶¿b¸Ò¼‡â|§.7Æ[çÜ®º§¹áµÆý ¶ÚêþZ¡µø[ï�kpo»GÝÖß¿o—×Ù?¦ºvý>Ç4µÝ·Ëë _±yµ.` '0@˜éUG¼~Ô+£b[ñ¶¹_õó l¶ö+‚_?,Vûí¶Ú³ †�xïÜ\u|ó^б2`ö÷«Ãⱈ§ÍøzïòêHì[.~ûÞTš»òšÛîy/ŸJüßAüu–÷<8w½ÏØ÷nï÷@^bój]À@N`€0¤i‡K„2¼ ®±yµ.` '0@öf°Rtt-oߨ\­,®Ê­´ù “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� Á´à«§g‘£•S—ãû@’Í/Âì±_„Ù OããÉî†Ï~öiX{ÔÞþhíÓðÙÝö¶qî~ö³ð³ŸUözÌNŠó}ºö(:|;±yµ.` '0@‚m=šyl…»w�hÞö½cp?×+Š›+€wŽ»£ñرyµ.` '0@‚©À—χ™ãû±U»Íï®ï¼ÎŽ™ g›�z.r½oŸ |m„ ³#ßõ;òXçÖw·á¼O+€ËŸ×ïiá"Ðn{ôr¥x,s;æ®…O?†áØªÝæwW¡·±Ê÷Óµ°Öxìs‡‡ç*l‹Ç­À ì‡Ø¼Z0� Át¬ÞOÅjàö#¤Û�‡†½*ÂpûÓepÞö=Àñ•¸Ûð¾*ÂpûÒÅŠàaŒŽ¬&öEl^­ ȉ �@Þ® ¾ÍÀâ/µVZñ·ï톺už*ä–Û�÷ŽoFÍÖë��ðé¹áùšïÃØ{ë‰à2äÎ…Såk-ìb«ë¯QÜ{ôuö�©ï§¾Çâ˜{çª÷¶å@‡}r›WëBr"$€™f£�÷êévÌL Àe”ì¿—զà [\§¿e¨,®7QËû¨W¶ßhx-£ksõlzß²šu4J–±±«ãnsì©sÅøHØìïß8¦uÎ�p1ÞZéÚˆ ­{Úé;€{F^OóÞq7j‡\ü>² wô\U¯”ÁudÿrKû=mßOã|åë¬ïà5×û4ï­ùú÷´ނؼZ0� � {SÄÅV�¦9‹­ä¢bój]À@N`€0ìÑèªTñwh\Þ¶2¸ �·Ø¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH0�øÞ¹“áÈéÕèXî¼7û`ó‹0{ìaöÂÓøx²»á³Ÿ}Öµ·?Zû4|v·½­©ÿÙgw£coÍ£µðéÏ~>]{ߣùÚ`ŸÄæÕº€�œÀ rÀWOÏ„S—ãcÕ·¹g¸éi¸0».lÆÆvpýF8¶oøQXûôg#¡·Úö³ŸÕƄнGÒâ|Ûsgw?Ýbl?ð£»å{ðmÏQl^­ ȉ � ï¼Î?løÛݳܴÎë€÷S,¦Û>] �êß­­…»ÍñÁö½àø ã®&¶:·\MüYôµÀa›WëBr"$˜–\†Í£3¥™ã�Èyÿ|˜©·—úÛ/Ï ·õ?î•ç«"kû̹�ÁuvR¬ÌÝ~®þŠÝÆ9w»N§{¹~#òŽ}orP?®¹X±Û\µ»yae°màLýþÇÌ~6땾…3×·Ÿ«ÜV^§XIÜûýBc¼®22�i�m…»Ÿ�®þ-Á¶Zý;:VÆ×zìÓO!¶~ôr¬¿½¹ÿèØèJãÝWÛïk¨Ë#×ïßwqýò>‹íŸ}V?ŒºÅëœk[TŽ­Ž€Ã/6¯Ö… äDH0¸ ¦'ÃÙûÕïe­#ç½Ë«ƒ@:º_|5mµm}WéÖ1qå51öÞåóájó~¶�cüuÒï¹ýš[ûìðÞäàú™vp½~æF¸>³¸zǵÕÁw$+¢qñ{y|uÞ24÷ÏSåþ>¥]Í<ˆªu0-î_ÆÓ~è½{w°bxt¿ø à*®£ocŸú1ÎMÍ8¼ó àv´-÷-V3—÷T¼Žáuš÷?.öûx 4Ó&6¯Ö… äDH0 ¸\áÚŒ¯­ÇW1t°2¶gOc1µ±íýÛÇÄŒÆÜ¶"ºnÛé:©÷¼}ÿBqÍ�ß›<”¸^};Œ¶…�p3�ŠàÁw7ð ××ooð˜|w-o1µÞ¯b«€ÚŒ¶Ã˜ ÀŶöþícÆKÀžE.ï½/Ûï·0{`¦Ql^­ ȉ �`*V—�FޝrmÅ×úÑÊ£1µgw޹ã”×l„Ö­ûƒŸãxüuÒï¹ýš[vxor°y}£±âv4øV�gnGáž} ÀÅ àvôm+ç¶U¯kŸ¶§< åÊÜaÈm® m…Òzåp;�^§ °]âêhˆnÛknß\û\0-bój]À@N`€S€{ʰÙ_ùÚüžÛæ÷æŸ §Ž�¬žm}¯î\¸Zn]QÛß¾“Ñc†×‰àØ1õu:Ýsû=Ø}ëíy}ðF¸0»2X}[y¬s뻀[�pÞ§ÀåÏ�ë÷´‚puÇDÐ"žn‹ÃE4í‡áæw7Ûüég᳑pZ†ØÁx?ÞŽ®Â~7ïÎÚ«‡cay/¸o¾žfÜ. ÝØS 6¯Ö… äDH0-ž" ·1]çmß_å Àù¨Þ�`ÅæÕº€�œÀ à½+¿?w°Â¶Ö|ì3Œh­0.´âo_{U,{y<4^±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€áÛy|ób˜_¾žEÆv·VæÃü|áJX�îL“ؼZ0� � ߯óp{y>\¼ù¸úýÙzXYZ¨‚îÂr¸ùxtÿ¸‡k‹aþÒ�ð*2¶ŠØ¼n=‹�“›WëBr"$€á[x~;,Ï/†�z??¾–æ•õç½±çáö¥ù0åÁöc¶yn,·Kw^EÆÆyî\Y Kk›{�ÆëWÂüÅ›áql ˜˜Ø¼Z0� �Ìô{Ö/†µõßVç^¼Q­Ø}ód¸m~¾·ÏfaŸ­‡µKKa¡Ü>–o Âé³õ•°T?¶yiy)Ì/®…‡[ÏÊ•À‹këkn…Ík½ó^Y[×ÂâÅ+áÆµå°X_çfŒëýŠp|q~9Ü~>Üöäfï¼Ë·Ãóú÷—럇…¥F¼-bnq_Wì€ËóW÷;ÔÜô˜÷æÕ�pi~1¬=¬ÎñêÎ¥F<~þáæçábý,^º-*@‚ؼZ0� �ÌÔ«èŕ߆ǯÚÛ—ŠG"?¬¢o]‹`[Œ½|>zÞô~~ó`%,Ô�öåú•°PóèMo¿GáÆÅù°pm³¾ÆÅÆ#ŸŸ…[õ£¡ËÇ;/|î<)ŽYŸ÷îåÊz¿­ðìÖòöï޼ֻε°Yüü²ˆ±—Â�—�ñ­Wáùóêþ†Ûv²®4‚îÀ¸÷¦ÌeØ.~î\êÇí—aýÊBX\yž½é�½y®,4_7°›Ø¼Z0� �Ì´{|óâöÀºõ*üöóÑU±óañÆ£ÞØ›ðäÁͰ²|1,Ö«\ço„G[�ÃÍ‹UÔ­ÎQDÕ…pm³÷s¹"·¿ª¶§Xõ[DãgÕ1Ë·‹ÇB÷¶—Áµ¹Úwä;„ûÊGK_ w^+‹Õõ—íñTÅýõƒrCü½Ù ëWê°]þÞx��nÔ«˜›>¿mÆc`G±yµ.` '0@˜é6&°n= 7—zÛo<¬¡üæexôäY9öüvñ¸ã•ðàÉóðüÙf¸v±¿úµ¡óaùÖ“ÞϯÂÃ[Ëa¡}x9ÜzÒûùùƒ°²8–ŠkŽßrµoë{x«s~^¬~󦱢·wÝ…‹a¥xlô ÄÖŠ•ËEx]Ù¾ƒrrÿ‘Ò¯^Õ×÷Þ×îÝÿ­ÞûñæYxpíâ0¯³XÍü¬Xͼ^={ž‰¿�$6¯Ö… äDH 3ÕÊï²�?¢øå?ÜËý¾ KáÊíGe ~õ`¥^庖®¬„K‹õê×­Wasíbµÿârø|yqøÈè­Çáö¥Þïõ¹VÖ«˜Ü¾ÃÇBïãq¸µÔ¿‡æ Ýê±ËóÍïý­•�z>mUð«×+wëëŒ}ožõ^K½ïÒJ¸u­ñhìÞØ�+ëïF^—׃Æw»‹Í«u!9€Àpð¼yr'|¾¸ä»u` ÅæÕº€�œÀ `8@žßý[­¼]½Ø¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€Lc¾wîd8rz5:v`Ý?fŽÎ…«�måë8z2œ½ßدvõôLo¬rêòpûNÇìl5œêt\†6¿³Ç~f/<��'»>ûÙ§aíQ{û£µOÃgwÛÛšŠñŸ}v7:öÖýÙHè­¶ýìgµ1!tï‘´8ßöÀÜÙÝÏÆ_·Û�üènù|ÛóÀA›WëBr"$È;o„³Çn§|}Çχ{‘±îr Àá̱x?Åbj±íÓµð¨þýÑÚZ¸Ûlßkޝ0îjb«sËÕÄŸE_;f±yµ.` '0@‚i ÀÕ£�«G"Ïoà2¬—<Ø^®¢ml/ ¢j†ûÛgÎm ®U\£wÍê:sáTýxæ~XnÞ[+Ü6ï­<¾ À­ý[Q¸ˆ´ýíµú|ã�¹N+ò6ÎW^ pý¸æbÅnsÕîæ…•Á¶�3õß¹8fö‹°Y¯ô-œ¹¾ý\å¶ò:ÅJâÞïãýs•‘yxL{l+Üýltõo¡¶Õêßѱ2¾ÖcŸ~Ú±õ£—ûcýíÍýGÇFWï¾Úvx_CuX¹~ÿ¾‹ë—÷Ylÿì³úøaÔ-^ÿà\Û¢rlu4~±yµ.` '0@‚©ÀeàÆËò1Èuè½wyu$¸6#glpµm}÷°2vpÞáùŠ{(ÏÑz\s–Ë{¹Nì±ÎåyG¶õì¸xô˜Ñ×\\§>¶ù>mo¦Ãõ3íàzýÌ�p}0>fp?ô6Žk«ƒïH>VDãâ÷òøê¼ehÊý}J»<šyUë`Zþ>Ü¿Œ§ýÐ{÷î`Åðè~ñÀU\F߯>õcœ›šqxçÀíh[î[¬f.ï©xÃë4ï\ì-öñh¦Ml^­ ȉ �`ðh-ï‡Í~t¬€mßa°íŸ+ºÊ¶uLÄ ºç«"j?·"kÏà^Gƒëh¸·­')ÇV:—ãÕë¾®=„îCªŒÀõêÛa´-쀛¡xT<¾¸€q¸¾~û{ƒÇà»kÑx;ˆ©õ~í[Ôf´ÆÔX.¶µ÷o3^r.ö-pyïý{Ù~¿…ÑØ+0�bój]À@N`€S±¸ŒœÃxÙŒ®ƒ•¸Å~eÝ€‡«}ÇmÛÅ ºnÀãWWvp�I­hÞËNûn›×7+nGƒoõxævîÙÇ\¬nGß¶"pn[õºöiëqʃZ®Ì†Üæ ÚV(­W·ðèuªÛ%®Ž†è¶½àöýǵÏÓ"6¯Ö… äDH0¸§Œ¾õ ×Öw7WÀŸ §FWü¶VÈŽ„ÚmÛÇØ)÷ÆË`Û?W3ܶîmøÀÛÏÛØÖ“€ÛêëZÑ·yýi ÀáÂìÊ`õmiä±Î­ïn=ÂyŸV—?7®ßÓ ÂEÔA‹xº-Ñ´†›ßÜ|ló§Ÿ…ÏFÂibãýx;º wøÝ¼;k¯Ž…å½àb¼ùzšq»4xltcL�ؼZ0� Á´`8xŠ0Ü~Ätœ·}p|•k,ç£z_<þ€i›WëBr"$€÷®µ’w°rvÌJ\èi­0.´âo_{U,{y<4^±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€áÛy|ób˜_¾žEÆv·VæÃü|áJX�îL“ؼZ0� � ߯óp{y>\¼ù¸úýÙzXYZ¨‚îÂr¸ùxtÿ¸‡k‹aþÒ�ð*2¶ŠØ¼n=‹�“›WëBr"$€á[x~;,Ï/†�z??¾–æ•õç½±çáö¥ù0åÁöc¶yn,·Kw^EÆÆyî\Y Kk›{�ÆëWÂüÅ›áql ˜˜Ø¼Z0� �Ìô{Ö/†µõßVç^¼Q­Ø}ód¸m~¾·ÏfaŸ­‡µKKa¡Ü>–o Âé³õ•°T?¶yiy)Ì/®…‡[ÏÊ•À‹këkn…Ík½ó^Y[×ÂâÅ+áÆµå°X_çfŒëýŠp|q~9Ü~>Üöäfï¼Ë·Ãóú÷—럇…¥F¼-bnq_Wì€ËóW÷;ÔÜô˜÷æÕ�pi~1¬=¬ÎñêÎ¥F<~þáæçábý,^º-*@‚ؼZ0� �ÌÔ«èŕ߆ǯÚÛ—ŠG"?¬¢o]‹`[Œ½|>zÞô~~ó`%,Ô�öåú•°PóèMo¿GáÆÅù°pm³¾ÆÅÆ#ŸŸ…[õ£¡ËÇ;/|î<)ŽYŸ÷îåÊz¿­ðìÖòöï޼ֻε°Yüü²ˆ±—Â�—�ñ­Wáùóêþ†Ûv²®4‚îÀ¸÷¦ÌeØ.~î\êÇí—aýÊBX\yž½é�½y®,4_7°›Ø¼Z0� �Ì´{|óâöÀºõ*üöóÑU±óañÆ£ÞØ›ðäÁͰ²|1,Ö«\ço„G[�ÃÍ‹UÔ­ÎQDÕ…pm³÷s¹"·¿ª¶§Xõ[DãgÕ1Ë·‹ÇB÷¶—Áµ¹Úwä;„ûÊGK_ w^+‹Õõ—íñTÅýõƒrCü½Ù ëWê°]þÞx��nÔ«˜›>¿mÆc`G±yµ.` '0@˜é6&°n= 7—zÛo<¬¡üæexôäY9öüvñ¸ã•ðàÉóðüÙf¸v±¿úµ¡óaùÖ“ÞϯÂÃ[Ëa¡}x9ÜzÒûùùƒ°²8–ŠkŽßrµoë{x«s~^¬~󦱢·wÝ…‹a¥xlô ÄÖŠ•ËEx]Ù¾ƒrrÿ‘Ò¯^Õ×÷Þ×îÝÿ­ÞûñæYxpíâ0¯³XÍü¬Xͼ^={ž‰¿�$6¯Ö… äDH 3ÕÊï²�?¢øå?ÜËý¾ KáÊíGe ~õ`¥^庖®¬„K‹õê×­Wasíbµÿârø|yqøÈè­Çáö¥Þïõ¹VÖ«˜Ü¾ÃÇBïãq¸µÔ¿‡æ Ýê±ËóÍïý­•�z>mUð«×+wëëŒ}ožõ^K½ïÒJ¸u­ñhìÞØ�+ëïF^—׃Æw»‹Í«u!9€Àpð¼yr'|¾¸ä»u` ÅæÕº€�œÀ `8@žßý[­¼]½Ø¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ &€/Ï…#GgzN†³÷#ã0Åbój]À@N`€okðÕÓ3aæÜFt ¦Ul^­ ȉ �àmàS—ãc0­bój]À@N`€0LNl^­ ȉ �àmàB��?îEÆ`ÅæÕº€�œÀ Þæ `ß @nbój]À@N`€o3{4¹‰Í«u!9€À09±yµ.` '0@‚·€=€ÜÄæÕº€�œÀ &€/Ï…#GgzæÂÕØ8L±Ø¼Z0� ÁÛZ 9ŠÍ«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€ìçÅâ@cj€­rþ,6¯Ö… äDH°Ÿ¿ùæ›è[`«œ?‹Í«u!9€ì÷ÅâClñ?¤±¸�£b¾l?ãoAr"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �`¿?(~óÍ7åÿ�nmm=Å|Y1o›OëJr"$ØÏŠÅ‡ØØ\`k_#° äDH°Ÿ¿þúëè[`«œ?‹Í«u!9€ìçÅ?üáѶÀV9›WëBr"$ØÏбµÀPl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ &€×—ÂÜÜ\ÃÇá“_®‡§±}÷êË¥pêĉðñÍÈ ±yµ.` '0@‚‰àÕ¹ðÞ{ï…÷Oœ'Jï—¿¿÷á'a#¶ÿ^ìK^ sÅ}Ì­FÆ`ÄæÕº€�œÀ ÞNþ0|²1ÜöÕüloÛûá£Û�ýú^¿nüþ:¼øê«ðôEc|/ž~¾zÑ<~èõ‹ÞØÓ�mo/_==Ží9~>Ü‹Œ0=bój]À@N`€!omü4|ðÞ{anµø½ ±Ìý4|ôáûƒ•ÁK§Â‰"ÐÖÞŸm¬Þø$|88¾ç«_†žîûÞ‰�Âj?¿X 5ÇÊ{ÙŸ|ØÜö^øð“�jÿïÜj8uôd8{?6À´‰Í«u!9€ˆ\?zîï‹ß땸='N}>YÝ/ž^ §z¿¿?÷ËðåW_…/o~\ß~º^ß À/Â/Ð;þÃ�ÃÍ/¿ _}ùË0÷~ï÷zeïí�ŠGN>þûõðUï\…bEqq�×ýá¥Á¶ÁýEüþ÷¿kkkÉcÛm„³Ç`€\ÄæÕº€�œÀ ÞN>~8¿VW Ÿ„�öý¹z•n€[+pËc>?Dã§ai¶wÌìRxZüÞ ÀÛ�_�+‚p±b¸^éûƒKáE=6´÷G@�÷³Ï> ögþò/ÿ²5öâÅ‹ðþûï‡?ÿó?¿úÕ¯ZcqVä$6¯Ö… äDHðvð{-ïðƒ0¿Þÿ®Þq¸½jxu{¿Gðè5Z8y÷€ ýÐÛŒÀÍm~øá¶cFÝ;w2²›WëBr"$x;xäÐ-ãpÚ à~r{ðˆçÒÓ½±�Vß5½ÍàûñIñwÈ `€œÄæÕº€�œÀ E~ºf{ÛööÀ_…ù"0~¹ÞÀ/ªÆÛ¾øË�ðeùèé:Ÿš/¯±Ûw÷õ#ð;ï¼Ó!þ|0@Nbój]À@N`€‡"÷l,� 'zÛû�t~¶~üs¡€«ß‹`ÜzôG7«±½óŸhŽ ïeã“Û?øiûú;)"ð‰':ÄßB±x.\�Ž0mbój]À@N`€ÀßÊëð"¶:÷|"üäN{û‹§Åêßáuc[ßë½±ò±Ð#c/žÆ·g< '±yµ.` '0@‚À#žþ}øèƒ÷Â{ïnÇÆ�«§g‘£=Çχ{‘q¦Gl^­ ȉ �à°àò±Í|V¿Œ�ÀA›WëBr"$8ô+€à‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€Ç»zz&9:®FÆÈØæaöØ/Âì…§ñq€ÄæÕº€�œÀ àq6ÂÙãû€‹s� gïÇÆx{ž† ³+áÂfll×o„c0ÐQl^­ ȉ �@ž„ÕpêèÁ Àß¼û½ð¯wãcÓm#œ9Ö!| ±yµ.` '0@‚©À÷χ™£sáTùÈæÊ©Ëýñ"¾Î…«å>ÕØÌ¹�jìòÜ`ÿæJßêÑϵãçýzûNÇŒ;îÞ¹“�ýk§W‡ç‹(Î3sî|ï¾ëý÷ÐºÆ *W�y¦\±|²÷>T×¼ÎÆk³þøýï…?-ø�Þï†ýÞ†àúqÍÅŠÝæªÝÍ +ƒmgê÷«8fö‹°Y¯ô-œ¹¾ý\å¶ò:ÅJâÞïãýs•‘yxL{ ÈQl^­ ȉ �`zð0ú–ÑuM‹8:³=ä–Ç chVc±·¹­Œ¿Ãè[^§Ž¹£Çß»|>\¬øM[\EÞþuªû¯^Ûj¸:Ûõ~åõ‡ûÛŠð;¸·‘×Ù|M¼{·Œ¿á�Bïö¶ Ï? ®Ÿi×ëgn„ëƒñ1+€û¡wl¨­ƒïH>VDãâ÷òøê¼ehÊý}€lÅæÕº€�œÀ ¦'�DÎV@Ý_Û‘¸g$î¶5£nl5o9^}_ð`Åí6ð`•p3÷”÷9zýáù‹c‹}xtÿRãu.¼»ï†?½ónø¦¿mÊ”¸^};Œ¶…�p3�ŠàÁw7ð ××÷½Á@l^­ ȉ �`pPávL|݇ÀMÛŽ¿¿Ñ8×HÄÝÅØ\ÞóðúÃkî€GãxËBøÓ÷¾þXü\†à…È>‡Ûæõ�ÆŠÛÑà[=ž¹…{ö1+€E_ )6¯Ö… äDH0=x¦±Âµ<ÇàBkul$ìŽàþ¶Æµ†«~«UÀͱfðm­=爱xä§N÷ïo‡\œcôýœ{Úm„ ³+ƒÕ·¥‘Ç:·¾ ¸õç}Z\þܸ~� y‹Í«u!9€Lã àýRFÔ]b-ŒW„áö#¦Ëàì{€ k±yµ.` '0@xDkµìþGå¡jeï`Un­¹j˜Ã¯µÂ¸ þ@öbój]À@N`€S€à�ˆÍ«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `x»®žž GŽVN]Žï³›ò§W£cÃj8U¼Æ}�0±yµ.` '0@˜éµÎoDÇûçÃÌÑ“áìýÑýÞ¢ËsáÈѹp566F{GCñ�Àå{¿O÷Xœëøùp/6‡@l^­ ȉ �@fzød˜é)£ï À÷Î� G’bfµ]ÞOE4€8Äbój]À@N`€0Ó«Ž¥§çª8Ú ÀõêàúÑ˃U¸åêÒ“ÕjÕÞ¶Sõã™Áµ\±;rÌŽÚ×™9·Qo¯‰Ü´[Ôl]»}L€{÷;²}ûq{¸ç2°öÎ5¸ïF4ﯾmœ³ÿÞ”1»�ÁõÛ¯søú+å}÷Ç[;vÜè߬Òõ±Ùð¶ÄæÕº€�œÀ `¦Wµlñß“áìåF¾¿®VWû•‘q‰ûÇV‘²+£ç0 –Ás—U·­•¹å¹ÛÁr_Wî­Š§å>î¹:f}c¯aÛ9ZשîqtŸÁûØø}¸OóuU÷?Üw#\=·ÚÚIï,±yµ.` '0@˜éÕˆŠ—çÂ̹óáT#l¶V¬ö£f8‹�Y[íÛ—Ûö/ì"!¶ü½ºŸfÝ×<ˆ©Ãë¦ßsO,÷�¼?�ý{Ú×�¿®v®^Ç轕ãƒ?<¶Eà�‹Í«u!9€ÀL¯f,íý|ºx´s[±Ž‘»àÑ0º­0Z¯žmÆÛ®¸‘ ãp—{nÓxoŠßÇà�©µðè=7�®î½O÷¯·Ëk€$6¯Ö… äDH 3½ªÙ®ÕjØþÊÒ*2V+OO†S§{cEŒÜ)ç,ãcÿ¸í!v»:†ŽÙ?=÷´î¡ ¡cð¶ý÷pÏ#û·bë¸ÜS½¿õ1‘×4€ûÛ†×i¬ú­cùp¬yÍ�ßS8èbój]À@N`€0Ðò�¬°­¢­X 0@0@hÙǼ۪`ÈQl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€¹à{çN†#GO†³÷ããCáìñ™0sn#26N—c8´6¿³Ç~f/<��ì 6¯Ö… äDH�K¾zz&€‹í§.7· Àùx.Ì®„ ›±±\¿Ž À@G±yµ.` '0@‚\p\n³Àw¿þýÝ…øX¶6™c0À·›WëBr"$˜–\=â¹XåÛW­ömoŸ WûÇ\žkl¯?îõcîé¹0Óß~zuxL¹OqŽfô­>Þ¸Vÿ˜�Ü?ß;¦w¾Æ½ôctµbyä\Åþ½×pª16Œ×Õ=ô·côBøÓ÷¾þXàâ¿ ï†�S®×\¬Øm®Úݼ°2Ø6p¦~ÏŠcf¿›õJß™ëÛÏUn+¯S¬$îý~¡1Þ?W™‡Ç´Ç€ÅæÕº€�œÀ ¦#¯†SƒÇ;W!´½ª·§Ž§ƒ\Ší[‡Ô~è-�«Ï½Kn‡Ú=|ßp¹_ã¸ZÛ÷Xïß¿ß2n×÷Ó:¦¹ßÝ»Uü}ç� Eü-¶•çž~×Ï´ƒëõ37ÂõÁø˜ÀýÐ;6ÔÖÁw$+¢qñ{y|uÞ24÷ÏSåþ>@¶bój]À@N`€Ó²¸½¢w4ôö”Qtïx°‚¶sw[àb°è 4ÅæÕº€�œÀ ¦ep@ëÕ²•‘°:&¶n_9¼C®WÚ–û?Îö®Ù ÀÍïÞuõoaÜ=õ´_O}ý:ìnÛ^SGèz¬µsµ.Ì® Vß–FëÜú.àÖ#œ÷ipùsãú=‚0ä-6¯Ö… äDH0¸ˆ¸­³{|óaÓŠÑ|En?bº ξ²›WëBr"$˜ŽÀ�•¹µƒï�® |�p"øÐi­0.ˆ¿�½Ø¼Z0� Át`8bój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@˜¬Ý?fŽÎ„™sññ¦ËsáÈѹp566ÆÕÓ3áÈéÕèØ�—òÞáìñÞ{Þ»ï#GO†³÷cûì¦:ÇÁ~Ý«áTñë¿-€ÌÅæÕº€�œÀ `¦]aË Øsü|¸×/£n$öÛGãZn8å½9 î�;¹ýo¼£"öކâC€ë8¿/‡ü÷˜V±yµ.` '0@˜iVØF¼wù|¸º‡U¡eHÌ=�}oˆô÷»XI{ð>:ÈO€i›WëBr"$€™^ÕcrO]ŽŒõWPÖ†ûÔ�Öm©a€O V÷Ãa çh„â*@Ÿ^kO«S‹{è߸ÇAŒlÝ÷0\×™9=½Nø"ÛG߃ø5öøÞìp�b{qîò½(Ç‹÷¦:W3²î-ÞVïuÿ:ã˹Z÷Û:¦ÀÍ÷³y®òïÛ?f÷ÿ»ým¶¿7ÅØ˜×9ò7h¾ã�é‰þMwþ{ð݉ͫu!9€ÀL­2zÕA«ÀÚAx$ÞÖÊ88ëð×ßw,Gα-÷ƒ_ÜF¯µ]æš±¶Ð|=ÅïÅuê}Æ^§q/ƒ@X¿®áýWç»zz4f¦¾7ñëôCë¶×ݸÿêµ�^»Ö=×ÓæyG_ÓîŠ÷j4zÖ÷ߺ·zŸÖëó^ŒØéßÀ¸÷f·×Ùßgy«{n‡âö¿ýáñ½}Ï ïy/¯€ý›WëBr"$€™^íØš±m{‰œÍH7rŽÆ~í 9鯉EÉžò¼½óµì|�ööúu bd}\}®Ñ÷ å½Ùé:ããðüã÷iŠÿ=›ïçè}ì.ö^�œ·€Ëû¼÷µÆû3îoSüÝ»¿ÎBqÞá¶ê˜Ñ{+Ï1òïvÔÞÞ{öSl^­ ȉ �@fš•ñmè†Áq¸Ol[ÅFÃÞ.¸ãÊíÍ0Û?Ϙ•œÛ� ÀÍ•¨Íí=Ã{éï‹Õ}ö÷»wyµñúƇÐô÷fä:;Æâ¸Óç{ûÇ_ר±¯36¾'£±µÐþ{¶Þ÷]bjÌN÷<î½Ùíuö÷à‘{nÚvüF¸×x¯£O¾S±yµ.` '0@˜iWÆ´£µm¡+9GWT–ãcpÑúûž+‚Û0ÏŽEÝ6cp¡Žyýóõ¯ßz��í…æ½ _ÿj]ÇSIxozÛã×9+íX¼»zÿú:£ïgóo²WÛï{$¦6pñ{ùï`ü=ŒÚõo½ß�_g¡ü·ÕÚÞ>¦ªGî¹ýÿâO¾;±yµ.` '0@¿.áó`ˆ­À�.ßÍßf$Rp¨ÄæÕº€�œÀ `8ü_®V�öˆ¹Ÿ›q«¬8\bój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€L<_ž GŽÎôœ gïGÆ`ŠÅæÕº€�œÀ ÞÖ à«§gÂ̹�èL«Ø¼Z0� ÁÛ À§.ÇÇ`ZÅæÕº€�œÀ `˜œØ¼Z0� ÁÛ À…"9~>Ü‹ŒÀ4ŠÍ«u!9€¼ÍÀ¾€ÜÄæÕº€�œÀ Þföhr›WëBr"$€`rbój]À@N`€o3{4¹‰Í«u!9€L<_ž GŽÎôÌ…«±q˜b±yµ.` '0@‚·µr›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$ØÏŠÅÿ€Æ>Ô[åüYl^­ ȉ �`??(~óÍ7ѶÀV9›WëBr"$ØïŠÅ‡ØâHcp GÅ|Ù~Æß‚ äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �ÀE8|Ìë9€ø ‡�y= '0@àð1¯äDHàƒ">æõ€œÀ |P€ÃǼ� �Špø˜×r"$ðAóz@N`€>(Àác^ȉ �`¿?(~óÍ7åÿ�nmm=Å|Y1o›OëJr"$ØÏŠÅ‡ØØ\`k_#° äDH°Ÿ¿þúëè[`«œ?‹Í«u!9€ìçÅ?üáѶÀV9›WëBr"$ØÏбµÀPl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ &€_„õK? ?˜=Nœ8>8õÃ0÷ñ'áæW±}·»ùqï¸SKáËÈt±yµ.` '0@‚Ià;?ù ¼÷Þ{áÄìÃÜÜ\˜ûá©ðÁ‰Sa~#¾ÿ¨Ià�O>ìÝç‡á“=ÞìEl^­ ȉ �`²x#|òá{á½\ /¢ãm/ž~^¼Ž��Úyß×áÅWOÇ\óExúÕöcßZ¾>Ì� GzN]ŽŒp¨ÅæÕº€�œÀ ÞJþð§a}L¬]�ë�¿"œx¿÷ß÷*³Ÿl´Ç?ü$lô~®"íûáĉá¾üäö ôn?׉pêÒð\_ýò‡áD}\áÄG«Õ±«sƒm•¹°Zóûßÿ>¬­­%�ÅÜ;w29½àð‹Í«u!9€L6o…�ùÙ:ª¾>8õQøäï7Z+s«hûƒ0çËðÕWwÂO‹`üþGávs¼€? ýýzoßõpéï—¿÷Wí¶ÎõåÍð“â\ý˜ûâ—á½ûøðã›á˯¾ _þr.¼ßû}nµ7öúE¸]>ªúƒð“Û_õÎý"¼®¯?ª¼Ÿ}öYø³?û³ð—ù—­±/^„÷ß?üùŸÿyøÕ¯~Õëòœ 0Åbój]À@N`€“À…¿ ?ùÁìpe°ú¢kÞâ÷§KE0þ0|òåöñ*7VçÞùI¹¢·Œ¸#û¿¿¸ôƒê\E .Wù6ñ¼æŠ \¯6Nyt?ô6#psÛ‡~¸í˜q¬˜n±yµ.` '0@‚·€‡^‡¯ê•·~òe¹m4ÚŽ†ÚðÆ'áÃÞ¹fç¿Úá\ï…�nÕ%šÁ÷/þâ/:ÄßÕpªøî_ñ`ªÅæÕº€�œÀ Þnîyq©zs^¿UN^ÜÄóÐÓz%ò`åñp¡�ßyç�ä•¿}VL·Ø¼Z0� Á¤ðWwVÃêßß)¿w·øÞÞ_Îßµû~µ*·7ž€.ÕçŠ~ð? ·‹ñÑïþj>̾÷^ø`î—a½Ž¿…¯›×=>¾YlÿÀ£Š|âĉNñ·ä;€¦Zl^­ ȉ �`²ø«°tªˆ´Eˆí{?ÌþôNxQï“€GÎU¯$ìÛ?>Z}1ßø¤XåÛÞ§¢·^ü}˜ëGñ{?®2þŽ+€gÎ _Ó%6¯Ö… äDH0éÀ}/ž+kŸÂoƒG@¿x=W?¯¿Øiï‹ð´XýûâudìuxÑ\< 0Ýbój]À@N`€o+ï‡mß›u„}¶Ö.-……rû|XX¾5§ÏÖWÂRýØæ¥å¥0¿¸n=+W/®=¬¯¹6¯õÎ{e=l=\ ‹¯„×–Ãb}�›E0®÷+ÂñÅùåpûùpÛ“›½ó.ßÏëß_®–ñ¶ˆ¹Å}]y°{.Ï_ÝïPÿqÓcÞ›WwÂ¥ùŰö°:Ç«;—ñøyø‡›Ÿ‡‹õ{°x鶨 bój]À@N`€0S¯ W~¿jo_*‰ü°Š¾et-‚m1öòQxøèexÓûù̓•°PÚ—ëWÂBqÌ£7½ý…çõÍú�|~nÕ�†.ï¼ðy¸ó¤8f=|Þ»—+ëýý¶Â³[ËÛ¿CxóZï:×ÂfñóË"Æ^ w^6Æ·^…çÏ«ûnÛÉz¸ÒºãÞ›"0—a»øýU¸s©·_†õ+ aqåAxö¦7öæA¸²Ð|ÝÀnbój]À@N`€0ÓîñÍ‹ÛëÖ«ðÛÏGWÅ·Å�zco“7ÃÊòŰX¯r�_¼m=7/VQ·:GUµÍÞÏåŠÜþªÚžbÕo�ŸUÇ,ß. ÝÛ^׿jß‘ïî+-})ÜyU¬,^ WÖ_¶ÇS÷×Ê ñ÷f+¬_©Ãvù{ãu>ºQ¯bnú<ü¶�€ÅæÕº€�œÀ `¦Û˜Àºõ$Ü\êm¿ñ°z„ò›—áÑ“gåØóÛÅãŽWƒ'ÏÃóg›áÚÅþê×"„·å[Oz?¿ o-‡…~ô}PàåpëIïççÂÊâ|X*®9|ËÕ¾­ïá­Îùy±"øÍ›ÆŠÞÞu.†•â±Ñƒ[+V.áuedûÊUÈýGJ¿zU_gÜ{S\»wÿ·zïÇ›gáÁµ‹Ãx\¼Îb5ó³b5óVxõìqx&þ@’ؼZ0� �ÌT+¿Ë6þˆâ—ÿp#,÷Wø.,…+·•1øÕƒ•z•ëBXº².-Ö«_·^…͵‹Õþ‹ËáóåÅá#£·‡Û—z¿×çZY¯br;ø =¼�ÇáÖRÿš+t«Ç.Ï7¿÷·Vêù´UÁ¯\¬Ü]X¬¯3ö½yÖ{-õ¾K+áֵƣ±{cw®\¬¿y!\\^ ß] ì.6¯Ö… äDH ÃÁóæÉ�ðùâ’ïÖ€)›WëBr"$€áyV|÷oµòvýYd8ôbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH “ƒ«§g‘£sájd¬?>sn#:öÝZ §ŽöîíôjdlÄýóa¦Ø·pü|¸ÙçÞ¹“½ñ“áìýícß©Ës;¾¿1Õߤrêr|˜F±yµ.` '0@˜é·Î/Bã Àý¨»—\+#ï˜\EÕÀ+Uߟ\ü�÷ñµ¯)áï{›WëBr"$€ám®N·S~kD.ε¸|Ÿ`¾±yµ.` '0@˜iÖ|Ìðh4Ž� 3Ç÷€[çkÏþ*ãÊð\E”ìí×x|s5V?úyÛþ=ÍG=F"d,W�~îÓ¼¯öuÚçwÏÕëàâ÷:bo¿~¥ ­õXyÍÑýwyÿššçþ½ã¯³¼ÇÁ=×û´þ�4ßçÑ¿t›WëBr"$€�e×UÃp¸ÅæÕº€�œÀ `à@€˜r±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@&'6¯Ö… äDH ÀäÄæÕº€�œÀ `˜œØ¼Z0� � “›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À�hó‹0{ìaöÂÓø8Àbój]À@N`€0ùz.Ì®„ ›±±\¿Ž À@G±yµ.` '0@˜|m„3Ç:`€o!6¯Ö… äDH05øò\8rt¦6®ö¶Ý;w29~>Üëý|õôL˜9·¶îŸ3Åxýß³Å>õq§.÷Ï·Î>®¾NqžS—ãõù÷ÁÁR?®¹X±Û\µ»yae°màLýw.Ž™ý"lÖ+} g®o?W¹­¼N±’¸÷û…Æxÿ\edÓr›WëBr"$˜Š\ÆÜ“áìýê÷"Ò–av°}5œ*bíéÕ*ÿ-džqw‹«¸;Œ¾Å±#çnüÎÁvýL;¸^?s#\Œ�YܽcCm|Gð±"¿—ÇWç-Csÿ¿7¾ãwä|ða².Ì® Vß–FëÜú.àÖ#œ÷ipùsãú=‚0ä-6¯Ö… äDH05œ" ·1]gß Y‹Í«u!9€ÀðÝi­0.ˆ¿�½Ø¼Z0�“âÿ®~¶V–ª »°n>Ý?îáÚb˜¿t'¼ŠŒíŸ"6/‡[ÏbcÀ¤ÄæÕº€�œÀ `øžßËó‹áÆ£ÞÏ�o†¥ù…peýyoìy¸}i>Ì_y°ý˜m…‹óáÒ�W‘±q‡;W–ÂÒÚæÞ£ñú•0ñfx&&6¯Ö… äDH 3ý†µÅ‹amý·ƒÕ¹oT+vß<n›Ÿïí³YGØgëaíÒRX(·Ï‡…å[ƒpúl}%,Õ�m^Z^ ó‹kááÖ³r%ðâÚÃúš[aóZï¼WÖÃÖõ°xñJ¸qm9,Ö×¹Yãz¿"_œ_·Ÿ·=¹Ù;ïòíð¼þýåúçaa©o‹˜[Üו»àòüÕýõ7=æ½yu'\š_ k«s¼ºs©�Ÿ‡¸ùy¸X¿‹—n‹Ê� 6¯Ö… äDH 3õêzqå·áñ«öö¥â‘È«è[F×"Øc/…‡�^†7½Ÿß,\Û¬¯q±ñÈçgáVýhèòñÎ Ÿ‡;OŠcÖÃç½{¹²Þßo+<»µ¼ý;„7¯õ®s-l?¿,bì¥pçec|ëUxþ¼º¿á¶�¬‡+� ;0î½)s¶‹ß_…;—úqûeX¿²W„gozco„+ Í× ì&6¯Ö… äDH 3íß¼¸=°n½ ¿ý|tUì|X¼ñ¨7ö&_^>2zëq¸}©÷{}®•õ*&·ƒïð±ÐÃûxn-õB·zìò|ó{ke žO[üêÁµÁÊÝ…Åú:cß›g½×Rï»´n]k<»7vçÊÅú»‘ÂÅåµð ñÝÅÀîbój]À@N`€0®îá˜r|\n×8Sý¸æbÅnsÕîæ…•Á¶�3Ãcf¿›õJß™ëÛÏUn+¯S¬$îý~¡1Þ?W™‡Ç´Ç€ÅæÕº€�œÀ ²Y\ÝÑ`›¸¸Œ¿Ãs”qùôêpœçú™vp½~æF¸>³¸zdžÚ:øŽàcE4.~/�¯Î[†æþyŠ ÜßÈVl^­ ȉ �@Þ{n¯&®5W s •¸^};Œ¶…�p3�ŠàÁw7ð ××÷½Á@l^­ ȉ �`Úð̹1«6wÀÑcö°˜ƒoóúFcÅíhð­ÏÜŽÂ=û€‹À¢/ЛWëBr"$˜žÜ³Ó÷óFpÏÇ\=ÝßÞX%ÜÚ‡à̰.ÌŽ|×ïÈc�[ßÜz„ó>­.n\¿G€¼ÅæÕº€�œÀ ¦*Ã�R„áö#¦Ëàì{€ k±yµ.` '0@¾;­Æñ²›WëBr"$€`rbój]À@N`€0LNl^­ ȉ �@€É‰Í«u!9€À09±yµ.` '0@¸rïÜÉpäôjt Z6¿³Ç~f/<��ì 6¯Ö… äDH Wà= fWÂ…ÍØØ®ßÇ` £Ø¼Z0� �\I À ï†ÿþÝø‡ÈF8s¬Cøbój]À@N`€Ó€Wé£3áHmæÜF½}#œ=Û^GßþöãÍ<昻ßÿþîB€Cï¿üþ÷„àƒ®~\s±b·¹jwóÂÊ`ÛÀ™úï\3ûEجWúÎ\ß~®r[y�b%qï÷ �ñþ¹ÊÈ<<¦=ä(6¯Ö… äDH0¸Š¿Íè{õÜj¸×ûùêé™aؽ>Ìôö;u¹ÿóÉpö~uŽá~Uüž«8w½ßÝ»á�Eü}ç�RÿØÛVíÇAtýL;¸^?s#\Œ�YܽcCm|Gð±"¿—ÇWç-Csÿ÷Î�ì�Ÿ gïocZ= ff/<�ŒupýF8vì•3ñ}v›WëBr"$˜¦Àe䀯ž.±œ—}Àµëg` »Ø¼Z0� A.˜ ÀÀÁ›WëBr"$˜ö\=ú¹~<ôѹpµ?V>6z.œmŒŸºÜ?n#œ=Þ?f&Ìœ«cßå¹òügËÕÄ…æŠâÕpªÞ¿}®þêã¾Æ=ð«ðìJôÑÍ›Ûg¿›ƒã6™þöž3×ûÛ+ñ\]«Ì :o~fçWn¿.4îaô:ðÿoï~Z亅_k”Q>À½ï§ÐHþi°…59¼ÄkÒƒÎä�4˜3ˆƒàL"„�À1Gº–Ò’8 Â`Èöµdº118[`a”ür_20!„ukí?U{W¯êîµÜÚêîõ¬ÞÿwUuë§µ‹“)5®VBj"d¨fp|Çxwû¶ñw}›°Û…Þ€q· »[³?/íÓl×íÓœgŠg?¯Ï�Í«ÕEÙQt½®ìÌþÜ|ŸïÃp×vK³†›íº}ºãîÀKû4¹Ýgçþö",Ïß…á~Ÿ&F�"4pR¥ÆÕJÀ@M`€ uàE˜]ì;žÉÛk¢ovǘàåÈÛc> ¸YßkÕõñ ¤Âl;Óv9âÎì0Ò.íÓo»;�g �gôvqyyùÒy`¨Gj\­„ ÔDÈ ·?¯ž<°*/ï3œüãV¸3xtsžfŸÅ2^•áÌÞÙÏÃÙ¼¯tðxÛùònÖ¯ uK�«•€�šÀNRï öFÀñçñwÏ�µ2ÇŸÓßüäÒfXk8S˜W« ³ƒïÎä-ýà>äŽ÷ë"ò|¿..7¹ßöax¶� uK�«•€�šÀNV€£-5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2œˆüôrX;³NGg/‡'©màH�«•€�šÀNÒ à'—Î Ài©qµ0P ƒ|týôæáŸ¦×p<¥ÆÕJÀ@M`€ '>ml –o†‹qŸnÝúíû̬]Ú?ÞÞ;\<Û-�?ÇuËÛ7ÛýîlŒ�uzvÞ;ƒc,ïó÷÷Þÿ¼ð©Ù? ÿxC8)Rãj%` &0@†“€ŸÜÞZüÜ„ÝóáâÓþÏ‹è:Ü7ÛÑò>ï€ïÌÎÓlÓo×GÞ.4·Áw+¬÷ç_ȃuÿôÓ&þ†SQŒ¿ŸÎ–Åm8îRãj%` &0@†?xi–mÔÌôÆà]ûÆ»´}\¾× à¥}N/»_¾â½ù¹®½›o†žz3üÔlÀI�W+!5€2œô<œÍÛÏúÝ/Ç}æ!vh×ÌÞþØm …âþØq»¥kj-ä¡káŸo¼þÿÜ„àk‰m8ŽRãj%` &0@†“€Ç³j»PÛÄØnÙÙͰއڽf÷é´qwpüÙ¶—ݯۘ�g~ìÝ3�‘zy]ÿ¨hŽ•îÄ÷0ùRãj%` &0@†“€CŒ¼ãgÏ¿8S ãY¾Ká™×ãoû[xðàAöº”&þ~>€ú¤ÆÕJÀ@M`€ ðnMð�ÏÊ-�¿�ÁìЖøûºÅÀûûßÿ>üâ¿¿þõ¯Gëž?Þzë­ðË_þ2üñ�­[)΀€J�«•€�šÀ`jÔ‡Þa.{÷Ýwwí³ŠÀ@ŽÔ¸Z ¨‰ �A¦VÃàûÎ;ïÄßî;¡Å_ Cj\­„ ÔDÈ S³>Ÿ:u*{æoÏ ` Gj\­„ ÔDÈ S»�Ï�;W¾È�W+!5€2ÀðóÄÀk—¶“ë–¥ÆÕJÀ@M`€ 0ü< äH�«•€�šÀ`ø™ž^kgÖÂé™õÛ‰õ©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2Àp8¾yt#\ýàãð,±îÕú!|þÑõpõæ£ðmr}¦o…›W¯†�¾H¬ãÙ w¯] WgïÕÕ«…Ï“Û\ûùý$|ŸX·ÊÎÝkÝùgŸ—ÏÓÛ?߇/îÝ ×šûºn}öCb›rÏ>þ`þšÝxôMràäK�«•€�šÀ`8 ߇O>x]Aç‹ðÑÕ«áæ�Ïý,|üÁµpw'µîÇðí£›áêõ�Âç?¤×sÏ>woöqôz¸õèËðCj»CðÕƒëáê‡�Ëĺƒ‹Ÿ‰«áƒO¾O¬ÛÇWÂõ«†Ç/ëríÜ ×íQìý9_¥y=o> _¿œýüòex™Øæg{ñ8|8û\<ø*±¨Bj\­„ ÔDÈ Ã!øþ“ðÁÕëáá׉uGÍ7�Â�C˜1º¯vƒn†[ŸT6ËñÅá£kqæhS_~;û æ×/wow(¾¯_ >~‘X—¡ùü~>~–X·�¯F€n}þÑ!þ#Š¢ÏùçᣠÂì‹Ïn…«×„¯ë€:¤ÆÕJÀ@M`€ 0”yöùÝp³{ïÍâ¬Ù>è|¾|t+ÜèÖ]ÿð“ðMbŸ«×n†�÷±ëeøö³{áƒݬÑÙº_¶ÑðÅãÃÕ[‡�ù1o…Ï_¾�?ìŽ cRœ‘yýÃðÑ­íclgþ䛸.Æ­Á>�áQ\×Ìâ\,Å—ß~¶˜Í:»®{;í#q›ëúà^øø£îq¹×> Ÿf�6�ž-?øÌäâË{³×ãZøàáNxg‘Î×½_}rwñ_½î}1{�c|½v#ܼ—ÍÞ·»×gÿ½î}9Ûgå{Ùi"çá“ïËšÏÒàsvãAØÙgvnó^Þ¸î%ÞËÑû?û¼<ØÆæo£Ùu�g\¿>ü¨ÿ¼Îþ¼Ï?è?+#}Þ®ÿþËð¨¿ÿá±~ˆ³h»¾?ì„{7®‡[�ŸÍÖíñ9œs¬�=Þ§‹Ç/¿ ŸÝ]<úæ½�ùlîôïæð¸i1t_›g¸ìÙç‡ó×yöùù¸»Ïø¸ñQxxïƒîwtv/Ý?4ùáËGáÖüóÔºþà«¥Yáñýèѽâ3·ûaø:wºÿ_Ùû3”H�«•€�šÀ`È÷Ãç…k×>73;¿oôA'~ïµpýîmü{gƒvñé‡OšÇ¾Þý¢ ¨_í„/›Ç,¿_ÄèwóAØy�÷2|½óåü»Xc,ŠáïÑγäãhãú}úŸ›øsã^{¬—Ÿ…[W¯†›Ç0×·ÁnåŒÑ&(çÛ|pŒÑ1ð½ _Þ‹Ç~¾™]s g×üeŒ�ß<œí·Ù^þ¾ÿ¾ÆPôCøòч]¬»>šýìë¯Â³æµý¶ Žñ3óý'Ì^Ó‡áëo?\»>û>ÌkáÞÎ~ïe÷}²K�LþæÑÍæ1Ê_uçyts¿ïçÝ㽌ïüœÕ¾�ÍãÁû0=›]óòÌáæܘ]ü¼¾ ŸÝŠÇ>Àc�g¿S»fÅþ0{-®Åß™ö³ÿò‹Ùï]óùk×ïܻքë[7®Ïîq¡÷ùœ¯Ðoxñ8³×ïæƒö÷ñå—÷š{ë?çûýn¦ÅïnÞýhêfŸ�¯hÿ¿ˆß­Ü}só˜}.×}Þ|Ú÷3>ú=¾6³{|ùUx0»ßö˜K÷Þ¼‹ßéÔg0.ÿ"þÿÈìÿ·^ÌÎÿÕƒáêÝ.Pï÷ФÆÕJÀ@M`€ 0äjËâQµ‹`÷ã×»ð7t+|Ö—Á,ßk7Â÷>o£X÷øèôcgÛc¯þÓÁ¹›ŸÛk›ÏÈl¾kt°>9ct¡™‰Ù…§øs¸±§‰QÍú¥óÆxwí^Øé¶cæå³°s/Îlíf’~ÿuxüàÃpóúõù,Ëø˜è_ãg)Î&mb\ v×îÎ^Ë}ÞËÔ÷N¿h#ñøó·ß£ÉW½—/Úx»t¼ë¿žïÛÆëE��ÆŸ¡6./ÏvMIÍŠm/½tþ«·>›?núûÇ·š×rÅû|ÎÓ†3e;ñµ>Fº‰©ýq÷ûÝ\a'Î3zùmøâQœ™»øl´¯óÒg`t_³u7û×åZ¸y·ûÿ“¥{½ÉÏ`vã?è_ãk7ï†Ï›¨¿ÿg(“W+!5€2À�+†Ÿ«áƒ�¿�ýùEøêãAç‹Ïn…ÇÍLÞËgßt³í~_>~ÜÍð�-ÿòÞ"Ò4Áfñ�±/¾™ý…¤ŸI›ŠECËë›™×ýøøè—ÏÂgµ3 ûÙ—Í#k¯ß _ÆŸ_¾XúÞÖå Øþ|íÖçÍ#o_|õ0ÜìCáRð݉3¡8Î�Ž!üfóµËªðÍ'áîƒ~öwûú_û(Ϊü2Ü»ëûuøþûïÃן|8{ßâ¬ÌøYjg”Æ™ã1&6‘=¾–û¼—ýçðV –/_¶3P¿�3¶o„‡ÝlÍ—?|¾Ýï{}wî†kÉ÷²�=|ãáWíçäåáëoÇ¡µù³ÏGüÇ /›G·�R¾~ïËföï³Ï>šÝçìs¾ïw ·ñµ�/^´¿'qVêµ[�»Gi¿Ͼy6ÿÌ>{|+\¿ù0<Ž³Ò—fAïý9_¡ùǃÙï3Màžý>gê¿ø*<œ½óH½ßïæ M�½ñ°‰æík6û=‹ÿàîáÛÙgãÙì¸7ú²s›ß]p�qüF"Ķ×|7|1ûó‹¯>^ë_×UŸÁÙ~ñÞã,ô¥cä3”I�«•€�šÀ`Èõ"ìÄG¤ÆÙp×?·>è‚]³îYxüQÿ=š×Â�„/šxó,|>ÿÑ«áÚ�½Ïû�òCع7X7Ÿ}7ˆ�ós�-?²¶‰?×o†®·ç¿y÷³ðm™:ßÄÇ ·ç¹zíÃðÉ·ƒuÍLäñcœ_ì<˜—ìµ›…�¿l_=¾ñ‘¶ã™“_ÆëºzsüHè Œ¿“õúb–÷�ß„�ûÙš³Ï̽[7ÛY™1¤7�=ޝaŒ‰íŒÏ8+sß÷rxÌyÀý!|ù0þƒ„vy|Ï>ùº{ð {½—?|ùpðy¹>úäëQLýæã~Öh÷ºÙì7ãïDsþ»á³æÑÅ‹}Ò^„/bÈíŽu½�¬Ï‡�ú×3ΚðEøþÇ—áë�? ×ã#«c˜~p¼½>ç+4avþ½¹�;áÁàû¯?úøËù÷ÿî÷»¹Ê‹/îvO ¸>ø¤ýG$Í#àûsÜ�Ý[÷~ƒo×û Ñ<޽9N'Þgüÿ��ø˜ê¸ìz¸õèa¸Õ?‚~Õg0»y´u·®q-|øIûÿOû}€2©qµ0P ƒ 'Eû¸ÝÑ#�9¦Žç{Ù̼]z$4‡ïûOf¯ó Ê+MÄ×ûïÂíŠÀ}è]DÜ%]ðॸ|áOa§ÿsþûçËçÇàHH�«•€�šÀ`È4»ñçanîb6o?;¸™#oÜ7n;ÀËÛ·ú¸Ìñ³˜É»u÷À{ÍÒMàÅq†¸ýžáÅùûH ÀÑ’W+!5€2À�iengóÎãm³Ý~xy0ÇÙÎýíÁŒÛåàÛ>žyy¦ïaàøgÑàèK�«•€�šÀ`È´Ç à'—ÚïùmllÎç¼:ÇcŒ¿xxlŽ“ípåÂÝùìÛÆRØmbm¿.õØæ”œÀͺÁùga€£'5®VBj"d€N‚øøçñ#¦Gq€##5®VBj"d€N†Ñ ãHü8’Rãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€^±Û›áô™Íp'µîDÚÏ®Íî9:.>Mm³�§—ÃZé¾ÕØ ëñ5ÞØJ¬;Íç¶{_Õ9 R©qµ0P ƒ p†±l`íÒvuøÉ¥óáôÙËáIb]RŒ½ËÛ Àûk^£Wgïl¼ús@mRãj%` &0@à0µ³2×o–U€³ƒa|}à#K€Ã—W+!5€2À‡iu^�!­™<›ý,Îåå«4Ûo†‹q–m·ßü\£cÍtÑ.¼µ³íök›í6óà:|\s7c¹?×JÝ£‡;+ÏíÇçî5ÇëðúFâ>gš(Ùï³oœlϳ>»÷Ô>ñXë·×2mVÜg·ÏüX�.ðÇëŽûf„/îg°}wþ8[ºoNÏ®¯=_اÿ¼·ût÷нïýïÁøš‡¿ã× Ñ_ãèÚêù‡/©qµ0P ƒ p˜Ú05Œ…}�ê—̓ÚRìJ΄]Ö…Ä>˜ ·üäöÖbßÁ±ççë�߬‹a¬ †‹€ØFÇEdKYÚ§¹·ñ>óóÍ÷ÙGê¾÷¸Ïññ»è9|½wéân¿ÏÒëÞFÆåûÞã>ç¯_Üné5ë®{ùþW½7óûš³?Þâs¯/^G³íÒqûuíÏÝ}ö¯åð>÷ºæ}¤ÞÏ;³û™ÿܼ6í±Û×rxžþ½žsüž�îaxͳ}î Þ×áuŒ^‹áçgp-»¶€#$5®VBj"d€Ó0zu–¢Ômûýzé÷f(ã~Íqâyâyûÿ¶×7ÚvpÜñµ/Ýgê5L]ó>Òïgûz,îgq­‹mÇ¯Ùøó>þ}XuÍ»~Gæ×=~=ûýG÷ØË¸W˜Jj\­„ ÔDÈ ¦¥è5+€wEÆHE½.píiíuÌ—ï ÀËaô –öiîm|ãxK¯OcŸûÌ:þ>×[q)ðí2Œz³Ÿ‡a´=Owœ³›a½‹tñ|M,‹ëãñGa­�yóýÏÚ{ì÷ÝëÌ8ÄøškÝë>gšs̯a±]Úò=£éàõí­ºÏÝÇ›_ÛR´œ[ñÞÌ£nܯ9FhЀ# 5®VBj"d€8Ù7ïž}z´ãoãµ_óx6uT[£È‘ø À1“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À‡ãÉ¥óáô™µ�Íp'±uK�«•€�šÀ`€ÃÑ೗ÓĺÃvg£�Ìë·Óë8ºRãj%` &0@àp¬ À·7›å»h{úÌùpñélùÓËam0K¸‰º[³?o…õÙ6kgÛm×7Ú™Åk—¶»cn‡‹Í:à8J�«•€�šÀ`€Ã±üèy°�xkç¡wÏÜn—Åã4ÇnÖ-ÎÀñ”W+!5€2À‡cÏÀ©Ð»Ï à8K8.‹!X89Rãj%` &0@àp”àîqÐݬ߃àæƒYÅ©qµ0P ƒ p8šH#î\wWàÁwùÆõç‘w¿ì;€Ž³Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`€éüáH. ©qµ0P ƒ 0�O�:Î�;—\¬ÝÞ §Ï¬µÎ^ORÛLn+¬÷×tæ|¸ø4µ ÀôRãj%` &0@`:ï¼óNy~z9¬Å˜¹±•^ÿ:Åœ}]ÛáâÙg7Ã�~Y��õÛÃí£Ä>ûŠûÀÀÑ‘W+!5€2ÀÓ*�ÀO.�§76ÃzVüœHAŽ÷³véòè~îl Bm3«x|¯©}ö'GKj\­„ ÔDÈ L/?·3_×o÷ÿ]¬k£èv¸³ÑÏœíâhœMÇ�€ŽŽÔ¸Z ¨‰ �Aæ${ré|8}f-œ>{9MmCÕvþ.¼ý_á•ïÒëö�W+!5€2T€Ÿ^kg/‡'©u«Ä}àî»påÂÝpe'µn÷†·` Pj\­„ ÔDÈPE¾½N Àì²Þ» ü ©qµ0P ÃI ÀO.�ïÛ<|tóðqÎ ë·ûí7Ã�þËÁwUŽ1y~¬ÁþMÝãšãŒÝá¬Ý�+wçËæÞß^ìsáOa§›é½÷±šeÍyâLâÙÏWëûc5‘y±ÏxP£Ô¸Z ¨‰ �ádà­°Þ…ÝùÏ[‹õÉÀmî÷¹³±Ö. Â\*7ñw}›ˆ<<GÎý÷ÇÁõþûÃýùú3€ûл2ÔvÁw)¿£qü¹Ù¿=nšûãÄ ÜoT+5®VBj"d8)3€ûœœ™»êÐóåqߥ؛ÀãYÆ�ÜGK3¹&w³oÑ6Ú+Cñ²tž'ð Ïãpw~ß ¤ÆÕJÀ@M`€ '#o‡;·³5—ƒïÒÌÝ…8 ø|¸xi¶~y&ïfsôíÜß̸]¾íã™ÇQxæpœ,úC©qµ0P ÉÀ·/‡µ¥ïú]<:ðèQÏMÔ] ½�øXè]Çk¶_q,Ž˜ípåÂÝùìÛÆÒc�Gß“×#�yuF3Œ#ñª—W+!5€2Ô>¦”W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒÌIöäÒùpúÌÚÀf¸“Ø`*©qµ0P ƒÌIÖ೗ÓĺCw{³�Ì[éõ3©qµ0P ƒÌI¶2ÇX;[~q£Ÿ|>\|×m‡‹g×ÂúíÁvݬá;³m×ζ3Š×66ÃZÜopìùlcØCj\­„ ÔDÈ s’-?zíÒv»®›­Û‡ÞwÛp»wn¶éâñ“§—ÚGJ™Rãj%` &0@˜“lÏÀƒx{ÐÜä¸,n+Rãj%` &0@˜“¬4÷3…›å ÀÍ1ûãtË–¤ÆÕJÀ@M`€ 0'Ùò# çßõ»2�÷Y¿´ˆ¼ûàù~0°‡Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`j÷‡?ü!¹àUH�«•€�šÀ`jãï©S§Â¹sç’ë�µÛ›áô™µÖÙËáIj›WåužŽ¸Ô¸Z ¨‰ �A¦vï¼óÎψÀÛáâÙ:7Ã�äú×(FØ�­ôº”a´]ºŸ;ýòµ°vi{¼ß^ž^k0Œ¤ÆÕJÀ@M`€ 0üŒç™Í°¾±Öo'Ö¿NYx+¬¢o|»}Ÿ\:?˜ÅÛïß« »¤ÆÕJÀ@M`€ 0´J"pG7¶æÿ.�3e3gû¸Ú…Ö&�gÔgÙž>s>\|Úo?žu;Œ³{Ê�<0Œ¾ã¼¸çå}’`Ø%5®VBj"d€¡ÕàøßÔúݳa»™Àý Ú&’žIÍ”mƒîîïÅÝ wÛŽ"o ¹ýöKçÙSqn¯qqíýc®`(–W+!5€2ÀPg³x{}4]=K6ÆÕ~vï’ÑwðÎÌÃé"4g;- Àí¹öúžß§ü=À0ì’W+!5€2ÀÔ®(þÎìõhäì¼4³·™< §M̽.ž]�S²ðîÇM·¶Ã“þœÍuf\ƒ »¤ÆÕJÀ@M`€ 05ûÃþP“±´™ÁÛÆÑüÀãÇ,¯oÌŽ5 §Ýúœ ›€ÛûÍ@¹¯ÅòÝ�µÞƒ »¤ÆÕJÀ@M`€ 0µ‹8µühimV|Ížü À°Kj\­„ ÔDÈ ÃQ¶˜|àïÝí gîNa_ç¹àˆK�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �áDà§—ÃÚ™µp::{9óè;Ü&î?¾íòöÏ‹ó·ë¯añó.0¼R©qµ0P ƒLÍú|êÔ©‚øàyÌ=Hn—-fø¶æÇ͇åáöQÜåkÚE€W*5®VBj"d€©]ŒÀçÎ�+ˆ¿Ñáàå8;Þg(îßGß¡ôqz0¼^©qµ0P ƒ ?Çaà™äŒÞn¿ùòåÇ9õû,ÏK€×'5®VBj"d€áçØ;¿R1�f'‚r ^©Ô¸Z ¨‰ �A†Ÿ#àµpúLkývj›We÷wýþœøûäÒùù}Àðê¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ †ípñìZ8}&:.>Mmóºm…õx}[‰uL%5®VBj"d€ÑÓËaí¨àæÚ)ßÞ’ ¥ÆÕJÀ@M`€ ð!:Êø=¹t¾ þñÆ›á§ä:€z¤ÆÕJÀ@M`€ '&÷3\G�aîͼîÄmâÌÕÙúõÛí>w6úíûÄãœ=ßk3¬wÛ4ûÄýÏΖ­zÜóªÜ�·Õ]Ëâu­ml.îçìåð¤[ãëÚ¥íÁµ÷Ç>†z¶ÿl›öxÝ£Ÿw-_œ«_7Šº£×³ÍÆÇj-îwüz.îó§7ßÿø4àøßk៧„` ^©qµ0P ÉÀËáµ µ‹hÚ„É�Í&^öñ7ÆÌ;ó?÷Ûl ŽÕÕ¸}\ׄÓ&ä.Ï]Ñt)7û,bèAfÏ6Ç�_]ûënöÝÇ`Ÿþ¸]¼Mm3 Àãë_Üïîýgë.-®9yË÷>ûy½9×§áïMü=©(Æß¸l°/@ERãj%` &0@†€G3l{ƒ™¶]ÐÜ-—÷‹ÑµÙ6îƒh4çá4s¡yWí·ž£?O¿OB*Ìöá6�Ç‘xyŸÞ8·Û,_[ê>—¥¯a¦�£¥{üû{o„½ùfø×ï…¿–ŸLß…ÿþÏͰ¹9ðWã?ÿ5±íÁ=úí¹pnýføsbp|¤ÆÕJÀ@M`€ 'rðHC/�#é<ô¶?7Ñ5+wuBS×±OLMà.ªö×½*¾îµÏp›aí3´kÿíÙë²X¿+|7Æ3ªG×ùé{á_o^kþÜ„à÷>�ow2m‡ß½û«ð«_½Î�;×z«ýyó¿Ÿ'¶?˜ÃÀÛ¿{wvï†ßm§×¯^j\­„ ÔDÈp"pÔEËùlÖ&>vßY»FÛ:ž»¾±yÀ¼Ø'v›¨Ú³¢Kû #lÊð�A¤]9ûvé~RçXÀý²Å¹ñzù^GÁwü]Àñ>Ÿ\Ú k£Å«‚üI³ô9jÞó.oß§Gáßc¾p3|7Ú?úkøë_‡??ßýå/áùhÙ }þò—ïÂóåå�ÝÇymxðû¹ü 6©qµ0P É ÀS(˜Í[¢‰²ÉÈûs´¡r¿ø\‹¿ýíoáÁƒÙëv[üC�á²ÝøÇ°õ?gËÞý]Øžý¹ ±ëá·¿ûM8÷«_…Í­¸Íóðè·ÿ6[g ·ÎýûÖ<înm.ö�Û>þÏ ƒmß ~·xo·w!¼58Ns-[›ƒí£Í°ÕmŸrx¯Ñ^ÿpê“W+!5€2À5�gÑg�fnÂ[ü]�m®SŒ—¿ÿýïÃ/~ñ‹ðë_ÿz´îùóçá­·Þ ¿üå/ÃÿøÇѺ´ƒànÙ»¿káÜàÙÏo½~óWÃã¿Ì¶ùä·M´}÷?‡¿üå/áó›¿i~þÍÿÝ>6z€?ÿÏðo¿z+üææçͶ�ÿs0³÷»›áÂl¿·~3;îŸÿÒ¬ÿó_fÇøëóðÉÄÀüoá?>‰ËŸ‡¿Î¯oìp_£™ø»#@#5®VBj"d€©Q1‡�s¸ìÝwßݵOÚøÂ„­­­Æ‡¿mƒï»Ý,Ý6�gà¶Ëþç`Ù'Íc£ßú÷OšŸ‡x×þÛ¿ ïÎŽßÌ$nfúž ÿñ¸?ÎB»ßÁ}x¯‘À0”W+!5€2ÀÔj3ßyç�¢°¹gþÕÐ[áÂoÿ{þý¿«ðpÙx&ñî<<~k€Ó‘7'G?ÿ5Zún 9®VBj"d€©Y8O�:U£ƒðÐêœ3ø†ÿÒ>â¹÷ü¯³ýö˜üÝÍø½ÁÀÑÏ�Ì€¡Ô¸Z ¨‰ �A¦v1pž;w®(lfþñ“?øw?ŠÛ¾.üç£ðçyþ.<�ëßüùì¿Í9º8üÛGqùêï^öó^£ß s©qµ0P ƒ ?Ç!àŸ‡G¿ý·ÙòÙ¾�sÿ¾ÕFÝ™Qžm»µyn´í¯~u!\ýs»íöïâLßÁºþZžÿwØ|«_>œmüjÅÀk—Úï?€Ú¥ÆÕJÀ@M`€ 0ü©üs=ßõ�sž/ûs•óá<7þú¼™áûÝóÁ²¹Ôq¢¿†çÉ寎G@ÀBj\­„ ÔDÈ ÃÏðZ8}¦µ~;µÍÏõ×ðùÕõæqÐnv�r>nž^k¯ô5€ã#5®VBj"d€áˆ{¾6ß:Ö÷x<û8–Rãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`8îl¬…Óg6Ã�Ä:êµsånxûí»áÊNz=ÇOj\­„ ÔDÈ ÃQ°.ž=¤üôrX;{9íÖõ³oã6ͺµ°~»]÷äÒùù²a mý¼{ùü\ýºÑìà­°>_¾Ö.mÏ–õ³ˆÇúó¯Ï¿véòâx«®­¿ÏæχµfÙìuè¶™ŸgÅ5ÿôæáŸÆÿ{-üóÔ Á; ÞŽ3v[®|×,oã¼XÞx?¾gíº¸];Ó7zîïÚ§]¶8ÇÃpe°þýûý5ÄÈÜïÓéÎÀÑ‘W+!5€2À�© œ‹èÛDÒ�­v]Œ£1|ö?�öéchjSÛ ðhŸ. 7û´ñ·�¾qÝv¸sik¼ßrHÞÃø»‡Ûc·1w+ÜÄãù}6÷��¸m‘g׳òš? oâï©NE1þÆe‹ãŸMÄ×ûïÂíŠÀ}è]DÜ%]ðॸ|áOa§ÿsþûçËçÇàHH�«•€�šÀ`È”Šœ}pmâèb]o‰gFûô–ÂíhÆp/®ŸØÁ¾C%x~mÃ<ÓÜkêüñcn¯£À+¯¹;×ßß{#üëÍ7ÿÞx/ü½[vÒ,fò.GÝ=ð^³t“xqœan¿gxqþ>p´¤ÆÕJÀ@M`€ 0dà¥Ù¼+ðžû ·†ÛÑ>CË3€ OžâÊýÒVà¥{i¶Û'ïyîOß ÿzóZóç&¿÷éîm޹�ûÛƒ·ËÁ·}<óòLßà ÀñÏ¢/ÀÑ—W+!5€2À�©‰œkƒà¹*ÏŒfǦfè.à~Ùà\óèÛœg±|]»À¼¼Ï «g��³¾Ñ]ß^8cÕ5ŸxÛáÊ…»óÙ·�¥°ÛÄÚ~]ê±Í)93€›uƒóÏÂGOj\­„ ÔDÈ C¦½f¹þ ÉÇBÃ�ÅÇ?�1=ŠÃ©qµ0P ƒ ™3�fòîñ½¾?×Ò¬ÜÖáGl^¯Ñ ãHü8’Rãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€j±.ž] §ÏDçÃŧ©möÓcíÒvbÝQ±Öã=nl%Ö¼~©qµ0P ƒ pº¸ÚGǧ—ÃZqd}5ž\:NŸ½ž$Ö¥Å{Z¾‡c€›×þ�ðíM!8t©qµ0P ƒ pÚXºÖÓ#€ïläFÑ8“öàCÔDs8d©qµ0P ƒ pÚ0º¾ÑÍàv]ûèåh3Ü™íãb ÆÍ²Ù~Íc‹»uñ˜M°í÷9P„Ÿgiû±Cû¯ ŸÉ}º<»Þù1‡ÇŠ3fçû,îe•x�£c f(7¯Ïì¯C¼÷Ù?úy×ò½ö™Yz}Öoï>Vëh}àøJ�«•€�šÀ`€ÃÐÆõÛñ¿çÃÅÛƒüt+Ü™‡Ã. ^Ú^<’¹ �1n.fÜŽgëöÇî�‘6Ú§‹šÃ}ÆÇ<ˆÕ3€ç¡vº›ø»ˆ¾™=Û\Ó<ú¶Ñµ¿æ>B/ß÷~÷Ùo³ˆ¼‹×¼ýyp_»öŸm{iq͹€\©qµ0P ƒ p‘ööfX»tyOû˜9·±µˆ‹1B6´“]dn?3žÑºlOwGÏà Àóãð®{Œ3zSÆ×4>v:¾îŸÑ8·û,_[ÿ^í5SY^…Ô¸Z ¨‰ �A8 mˆlÃäìÏçÇ3cç!´Ý.FÅÕ¸$Ö.퓘[€ÇÇØ\x¿˜š²×5¯Š¯ûÝg¿Í"§#qc×þÛáÉ x7×°OÄÈ•W+!5€2À‡a€ûÙ°ýìÙá Ôóa}£ ›{àxŒ&töë—¯ÖÅånŸÔ¬ØTPÝK{Ý1›kÜ#ÇŸ›¼ú–�ïqfp}«ð~÷�ðî}F¡zéšÇÁw<{x94”H�«•€�šÀ`^—’(½¿¥H pĤÆÕJÀ@M`€ 0¯Ëaàݳ•ÓÛ¼n©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0¾;káô™Íp'±nl;\<»Ö.m'Ö­ðôrX;s>\|šXlj³sånxûí»áÊNz=ÇOj\­„ ÔDÈ Ãak£îî—/‡[¸ß…+òCîý÷ÿK8aRãj%` &0@¦²Öw…Û€¯½þõÞ§éuÕÚï ¹Ì¤ÆÕJÀ@M`€ 0äkñ<ÔÎö-?{9<é¶réü`ÛÎÆÖl]€76ÃÚhùl¿Û›ƒc Bq€×šYÆ­õÛ‹k[%^CÜq�‹Ê£ëîÏßœg3¬Ö-Îcvbù§ï…½y­ Àaöß¿¿÷F]!xçOáÂÛqÆnë•ïšåícœËï·Ñ?®‹Ûµ3}£‡áþ®}Úe‹s< Wëß¿ß_CŒÌý>�î<©qµ0P ƒ ™º0ÚÆÓÔ¬Þ™Q¼í­ž<ßv8»wϼˆ®M\Þu®Ýú½‹›øÛGßî<Í6+Ï3¸–¸O¼Îþš?ý4ü=ÆßS§1þþ}¶¬?×I×DÜAp½ÿþ Ü6qv÷ à>ô."î’.øŽðR\¾ð§°Óÿ¹?ÿý‡óåócp$¤ÆÕJÀ@M`€ 0äÍèMÅ×Ì<�©Àƒã4vùû†wk®yz{íqç÷ÒÙó<ËË»ÙÀ‹°|-üóÔ›áŸož ÿ¼Ö/«Çb&ïrÔÝ#ï5K7€Çàö{†çï#1GKj\­„ ÔDÈ C¦@÷›q»2/ÏÀÝ'÷a·Y> ³‹ã43x÷»ž™t^ž<°zçÙcðìçŸÞ|#üãÓøç6ÿÔ¯;÷·3n—ƒoûxæå™¾‡€ãŸE_€£/5®VBj"d€!WbÖìr€MàÔÌá=pŒûm/nŒgæ.¾xÿٿѪ�¾¸?šw-oö\ÛÌ8j×j;\¹pw>û¶±v›XÛ¯K=¶9%gp³npþAàèI�«•€�šÀ`ÈCê<ØFK3eOŒ“z_'V|üóøÓ£8 À‘‘W+!5€2À�iÏ™±¯Óßç›Ü~ð±3ša‰¿GRj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0ÀDž^kgÖÂÚ¥íôú�;káôÆVrÝ*%ûO.�§ÏœŸ¦×MÛáâÙÙk>{O‹¯½ùLñûÎøÜ“W+!5€2À‡§‰°Mœ9{9<®¿½Ù,_iqŸõÛƒíºe5àöuÛBS¯ÍQÑDëå÷x/1¤.oðŠÏm‰£ü~À”Rãj%` &0@àp4søžÜ¾îìöÚY¤µà´ôksTd¿Þ1¤Ç|hŽöû SJ�«•€�šÀ`€Ã°ÖϬˆ[Ý#tû™Áómº™•#] lãâfsÌáòöX›áNwìa„lþ|öüâ\˱1¥Ÿ•:¸–ôõõçì"ÞìÚæë´}”s·|pþÑòAð/_Ü×^¯ÍøÑË㙩ñxñçæµhÖÏŽÙ½þ‹÷¦Ýÿ­í{ÚŸg¾ÿÒûÙØ3�¯·×¯9ÖùÙë¹x×Ù½§ý>ûÆæ½ß›x¬õÛƒk™¿ž»Ïáuí÷ôËçïéžï'Ô'5®VBjÿ#îÏ!Õ€Aòš°9g©h¶ÿ²>üõAt—›c/Bi³Ý(�£Þòqwé¯u9.6Ánqž&ê5Ûtá¯ß~xߣ}†Û-_Ëìçåó-ÝWk�×ftþÅ6}|\Þgqý³ŸãuîÛsÏÃfso㙺£ë8ˆÔy»ëïÏÓ\g·Íøøé×bl�÷föss¼¥{8È}î>÷Ò>ÍûÛîÓ¾þƒ÷qv —öÛû ©qµ0P ƒ p–#g*vtÙrü{)”·KÃáÌ̤¥ãõú�:Ò„Éåã.®m|þqÌì·k�µû|éëH½6é×yP×°÷k#e¼Îƒ½.ú|ÞÝ÷»¯•xqžÅkÖÞ×ò{°÷u¯~oâÏÉû>À}î~Úm–¯-®ßû5I½ŸP§Ô¸Z ¨‰ �A8Müš¾TìZ½l9Ì�CÚ Ê�‚]âºíFço¶;@lk¶KÙf&hbùòõgŒŽöi·k¯m;ܹ=¸¿•!4€÷|m–îsun×­]º<{ÍR÷µl�ûì¶Ù;v&¤^ÓÑû9ŽæÙÇßçšãñ–_˃Üg¿Íâ³”~_¢æú‡÷øt{ð>¯Þj“W+!5€2À‡§‰v1ÊFË‘sWHë4ѭ߯�gãø7œ•Ù£ßöâ x6�ïl píú…¶U8]W¼áùwŸ§ €ÝºþþoÏα´Ï®×`ÏÝïׯ_î󯌦íëxð9žéº|Í¥�vtÝ{àøóèó´+Ì.Ûû½i>É{ßû>û㎗/ŸkñÞ�¯yéœÉ÷ê“W+!5€2À\þQ��¥Øzò¼ª÷fø€Ã�W+!5€2ÀÜq À‹®';bî{3šÉ›5ÓØOj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€©Ý“KçÃé3k3›áÎhÝVXo–GçÃŧÃueRãj%` &0@¢ípñìZX¿½j� ŽÔ¸Z ¨‰ �A†h¯È+‡'5®VBj"d€!€€i¤ÆÕJÀ@M`€ 0ôbè] §7¶Ë`àp¤ÆÕJÀ@M`€ 0DmüõÀÀ«–W+!5€2Àíy`àð¤ÆÕJÀ@M`€ 0D00�Ô¸Z ¨‰ �A†(F^�€^½Ô¸Z ¨‰ �A¦vO.�§Ï¬…Óg/‡'£u[a=.oÀÀáH�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P ƒ ÓI�«•€�šÀ`˜Nj\­„ ÔDÈ ÀtRãj%` &0@¦“W+!5€2À0�Ô¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ 0L'5®VBj"d€`:©qµ0P Ãäøöf8}fmæ|¸ø4±N°Ô¸Z ¨‰ �áu;³±Ö.m'×ÀI•W+!5€2¼Î¼~;½NªÔ¸Z ¨‰ �A€é¤ÆÕJÀ@M`€ ¯+G1Ÿ>{9ô�†ünIEND®B`‚drf-yasg-nonfree-1.21.15/scripts/000077500000000000000000000000001514731163200165215ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/scripts/linters/000077500000000000000000000000001514731163200202015ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/scripts/linters/labels.js000066400000000000000000000055631514731163200220120ustar00rootroot00000000000000import { DateTime, Duration } from "luxon"; import { Octokit } from "octokit"; const token = process.env.GITHUB_TOKEN; const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); const { rest, paginate } = new Octokit({ auth: token }); const now = DateTime.now(); (async () => { for await (const { data: issues } of paginate.iterator( rest.issues.listForRepo, { owner, repo } )) { issues.forEach((issue) => { const { number, created_at, title, pull_request, html_url } = issue; const assignee = issue.assignee?.login; const age = now .diff(DateTime.fromISO(created_at)) .shiftTo("years", "months", "days") .toHuman({ maximumFractionDigits: 0 }); const labels = issue.labels.map(({ name }) => name); const version = labels.find((name) => /\d+\.[\dx]+\.[\dx]+/.test(name)); const triage = labels.includes("triage"); const help = labels.includes("help wanted"); const question = labels.includes("question"); const unanswered = labels.includes("unanswered"); const directions = labels.filter((i) => ["bug", "enhancement", "question"].includes(i) ); const problems = []; if (version) { if (assignee && help) { problems.push( 'Should not have both an assignee and a "help wanted" label' ); } if (!assignee && !help) { problems.push('Missing an assignee or a "help wanted" label'); } } else { if (assignee || help) { problems.push("Missing a version label"); } } if (pull_request) { if (triage && version) { problems.push('Should not have both a "triage" and version label'); } if (!triage && !version) { problems.push('Missing a "triage" or version label'); } } else { if ([triage, question, version].filter((i) => i).length > 1) { problems.push('Too many "triage", "question" and version labels'); } if ([triage, question, version].every((i) => !i)) { problems.push('Missing a "triage", "question" or version label'); } } if (!triage) { if (directions.length === 0) { problems.push('Missing a "bug", "enhancement" or "question" label'); } if (directions.length > 1) { problems.push('Too many "bug", "enhancement" and "question" labels'); } } if (problems.length > 0) { console.log({ age, source: { id: number, title, url: html_url, }, problems, context: { labels, assignee, version, help_wanted: help, triage, question, unanswered, directions, }, }); } }); } })(); drf-yasg-nonfree-1.21.15/setup.cfg000066400000000000000000000000461514731163200166530ustar00rootroot00000000000000[metadata] license_file = LICENSE.rst drf-yasg-nonfree-1.21.15/setup.py000077500000000000000000000017171514731163200165550ustar00rootroot00000000000000#!/usr/bin/env python from setuptools import setup try: # noinspection PyUnresolvedReferences import setuptools_scm # noqa: F401 setup(use_scm_version=True) except (ImportError, LookupError) as e: import os import sys if os.getenv("CI", "false") == "true": # don't silently fail on CI - we don't want to accidentally push a dummy version # to PyPI raise err_msg = str(e) if "setuptools-scm" in err_msg or "setuptools_scm" in err_msg: import time import traceback timestamp_ms = int(time.time() * 1000) timestamp_str = hex(timestamp_ms)[2:].zfill(16) dummy_version = "1!0.0.0.dev0+noscm." + timestamp_str setup(version=dummy_version) traceback.print_exc(file=sys.stderr) print( "failed to detect version, package was built with dummy version " + dummy_version, file=sys.stderr, ) else: raise drf-yasg-nonfree-1.21.15/src/000077500000000000000000000000001514731163200156215ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/000077500000000000000000000000001514731163200174175ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/__init__.py000066400000000000000000000003531514731163200215310ustar00rootroot00000000000000# coding=utf-8 __author__ = """Cristi V.""" __email__ = "cristi@cvjd.me" try: from importlib.metadata import version except ImportError: # Python < 3.8 from importlib_metadata import version __version__ = version(__name__) drf-yasg-nonfree-1.21.15/src/drf_yasg/app_settings.py000066400000000000000000000105201514731163200224670ustar00rootroot00000000000000from django.conf import settings from rest_framework.settings import perform_import SWAGGER_DEFAULTS = { "DEFAULT_GENERATOR_CLASS": "drf_yasg.generators.OpenAPISchemaGenerator", "DEFAULT_AUTO_SCHEMA_CLASS": "drf_yasg.inspectors.SwaggerAutoSchema", "DEFAULT_FIELD_INSPECTORS": [ "drf_yasg.inspectors.CamelCaseJSONFilter", "drf_yasg.inspectors.RecursiveFieldInspector", "drf_yasg.inspectors.ReferencingSerializerInspector", "drf_yasg.inspectors.ChoiceFieldInspector", "drf_yasg.inspectors.FileFieldInspector", "drf_yasg.inspectors.DictFieldInspector", "drf_yasg.inspectors.JSONFieldInspector", "drf_yasg.inspectors.HiddenFieldInspector", "drf_yasg.inspectors.RelatedFieldInspector", "drf_yasg.inspectors.SerializerMethodFieldInspector", "drf_yasg.inspectors.SimpleFieldInspector", "drf_yasg.inspectors.StringDefaultFieldInspector", ], "DEFAULT_FILTER_INSPECTORS": [ "drf_yasg.inspectors.DrfAPICompatInspector", "drf_yasg.inspectors.CoreAPICompatInspector", ], "DEFAULT_PAGINATOR_INSPECTORS": [ "drf_yasg.inspectors.DjangoRestResponsePagination", "drf_yasg.inspectors.DrfAPICompatInspector", "drf_yasg.inspectors.CoreAPICompatInspector", ], "DEFAULT_SPEC_RENDERERS": [ "drf_yasg.renderers.SwaggerYAMLRenderer", "drf_yasg.renderers.SwaggerJSONRenderer", "drf_yasg.renderers.OpenAPIRenderer", ], "EXCLUDED_MEDIA_TYPES": ["html"], "DEFAULT_INFO": None, "DEFAULT_API_URL": None, "USE_SESSION_AUTH": True, "USE_COMPAT_RENDERERS": getattr(settings, "SWAGGER_USE_COMPAT_RENDERERS", True), "CSRF_COOKIE_NAME": settings.CSRF_COOKIE_NAME, "CSRF_HEADER_NAME": settings.CSRF_HEADER_NAME, "SECURITY_DEFINITIONS": {"Basic": {"type": "basic"}}, "SECURITY_REQUIREMENTS": None, "LOGIN_URL": getattr(settings, "LOGIN_URL", None), "LOGOUT_URL": "/accounts/logout/", "SPEC_URL": None, "VALIDATOR_URL": "", "PERSIST_AUTH": False, "REFETCH_SCHEMA_WITH_AUTH": False, "REFETCH_SCHEMA_ON_LOGOUT": False, "FETCH_SCHEMA_WITH_QUERY": True, "OPERATIONS_SORTER": None, "TAGS_SORTER": None, "DOC_EXPANSION": "list", "DEEP_LINKING": False, "SHOW_EXTENSIONS": True, "DEFAULT_MODEL_RENDERING": "model", "DEFAULT_MODEL_DEPTH": 3, "SHOW_COMMON_EXTENSIONS": True, "OAUTH2_REDIRECT_URL": None, "OAUTH2_CONFIG": {}, "SUPPORTED_SUBMIT_METHODS": [ "get", "put", "post", "delete", "options", "head", "patch", "trace", ], "DISPLAY_OPERATION_ID": True, } REDOC_DEFAULTS = { "SPEC_URL": None, "LAZY_RENDERING": False, "HIDE_HOSTNAME": False, "EXPAND_RESPONSES": "all", "PATH_IN_MIDDLE": False, "NATIVE_SCROLLBARS": False, "REQUIRED_PROPS_FIRST": False, "FETCH_SCHEMA_WITH_QUERY": True, "HIDE_DOWNLOAD_BUTTON": False, } IMPORT_STRINGS = [ "DEFAULT_GENERATOR_CLASS", "DEFAULT_AUTO_SCHEMA_CLASS", "DEFAULT_FIELD_INSPECTORS", "DEFAULT_FILTER_INSPECTORS", "DEFAULT_PAGINATOR_INSPECTORS", "DEFAULT_SPEC_RENDERERS", "DEFAULT_INFO", ] class AppSettings: """ Stolen from Django Rest Framework, removed caching for easier testing """ def __init__(self, user_settings, defaults, import_strings=None): self._user_settings = user_settings self.defaults = defaults self.import_strings = import_strings or [] @property def user_settings(self): return getattr(settings, self._user_settings, {}) def __getattr__(self, attr): if attr not in self.defaults: raise AttributeError("Invalid setting: '%s'" % attr) # pragma: no cover try: # Check if present in user settings val = self.user_settings[attr] except KeyError: # Fall back to defaults val = self.defaults[attr] # Coerce import strings into classes if attr in self.import_strings: val = perform_import(val, attr) return val #: swagger_settings = AppSettings( user_settings="SWAGGER_SETTINGS", defaults=SWAGGER_DEFAULTS, import_strings=IMPORT_STRINGS, ) #: redoc_settings = AppSettings( user_settings="REDOC_SETTINGS", defaults=REDOC_DEFAULTS, import_strings=IMPORT_STRINGS, ) drf-yasg-nonfree-1.21.15/src/drf_yasg/codecs.py000066400000000000000000000153231514731163200212350ustar00rootroot00000000000000import copy import json import logging import warnings import yaml from django.utils.encoding import force_bytes try: from swagger_spec_validator.common import SwaggerValidationError as SSVErr from swagger_spec_validator.validator20 import validate_spec as validate_ssv except ImportError: # pragma: no cover validate_ssv = None try: from flex.core import parse as validate_flex from flex.exceptions import ValidationError except ImportError: # pragma: no cover validate_flex = None from . import openapi from .errors import SwaggerValidationError logger = logging.getLogger(__name__) def _validate_flex(spec): try: validate_flex(spec) except ValidationError as ex: raise SwaggerValidationError(str(ex)) from ex def _validate_swagger_spec_validator(spec): try: validate_ssv(spec) except SSVErr as ex: raise SwaggerValidationError(str(ex)) from ex #: VALIDATORS = { "flex": _validate_flex if validate_flex else lambda s: None, "ssv": _validate_swagger_spec_validator if validate_ssv else lambda s: None, } class _OpenAPICodec: media_type = None def __init__(self, validators): self._validators = validators @property def validators(self): """List of validator names to apply""" return self._validators def encode(self, document): """Transform an :class:`.Swagger` object to a sequence of bytes. Also performs validation and applies settings. :param openapi.Swagger document: Swagger spec object as generated by :class:`.OpenAPISchemaGenerator` :return: binary encoding of ``document`` :rtype: bytes """ if not isinstance(document, openapi.Swagger): raise TypeError("Expected a `openapi.Swagger` instance") spec = self.generate_swagger_object(document) errors = {} for validator in self.validators: try: # validate a deepcopy of the spec to prevent the validator from messing # with it for example, swagger_spec_validator adds an x-scope property # to all references VALIDATORS[validator](copy.deepcopy(spec)) except SwaggerValidationError as e: errors[validator] = str(e) if errors: exc = SwaggerValidationError( "spec validation failed: {}".format(errors), errors, spec, self ) logger.warning(str(exc)) raise exc return force_bytes(self._dump_dict(spec)) def encode_error(self, err): """Dump an error message into an encoding-appropriate sequence of bytes""" return force_bytes(self._dump_dict(err)) def _dump_dict(self, spec): """Dump the given dictionary into its string representation. :param dict spec: a python dict :return: string representation of ``spec`` :rtype: str or bytes """ raise NotImplementedError("override this method") def generate_swagger_object(self, swagger): """Generates the root Swagger object. :param openapi.Swagger swagger: Swagger spec object as generated by :class:`.OpenAPISchemaGenerator` :return: swagger spec as dict :rtype: dict """ return swagger.as_dict() class OpenAPICodecJson(_OpenAPICodec): media_type = "application/json" def __init__(self, validators, pretty=False, media_type="application/json"): super(OpenAPICodecJson, self).__init__(validators) self.pretty = pretty self.media_type = media_type def _dump_dict(self, spec): """Dump ``spec`` into JSON. :rtype: str""" if self.pretty: return f"{json.dumps(spec, indent=4, separators=(',', ': '), ensure_ascii=False)}\n" # noqa: E501 else: return json.dumps(spec, ensure_ascii=False) _YamlDumper = getattr(yaml, "CSafeDumper", yaml.SafeDumper) YamlLoader = getattr(yaml, "CSafeLoader", yaml.SafeLoader) class YamlDumper(_YamlDumper): """YamlDumper class usable for dumping ``dict`` and list instances in a standard way.""" def ignore_aliases(self, data): """Disable YAML references.""" return True def represent_text(self, text): if "\n" in text: return self.represent_scalar("tag:yaml.org,2002:str", text, style="|") return self.represent_scalar("tag:yaml.org,2002:str", text) YamlDumper.add_representer(bytes, YamlDumper.represent_text) YamlDumper.add_representer(str, YamlDumper.represent_text) class SaneYamlDumper(YamlDumper): def __init__(self, *args, **kwargs) -> None: warnings.warn( "SaneYamlDumper has been renamed to YamlDumper", DeprecationWarning ) super().__init__(*args, **kwargs) def yaml_dump(data, binary): """Dump the given data dictionary into a format which is easier to read: * multi-line mapping style instead of json-like inline style * list elements are indented into their parents * YAML references/aliases are disabled :param dict data: the data to be dumped :param bool binary: True to return a utf-8 encoded binary object, False to return a string :return: the serialized YAML :rtype: str or bytes """ return yaml.dump( data, Dumper=YamlDumper, default_flow_style=False, encoding="utf-8" if binary else None, allow_unicode=binary, sort_keys=False, ) def yaml_sane_dump(data, binary): warnings.warn("yaml_sane_dump has been renamed to yaml_dump", DeprecationWarning) return yaml_dump(data, binary) class SaneYamlLoader(YamlLoader): def __init__(self, *args, **kwargs) -> None: warnings.warn( "SaneYamlLoader is deprecated and custom loading is no longer needed. " "YamlLoader has been exported to easily import CSafeLoader and fall back " "to SafeLoader if unavailable", DeprecationWarning, ) super().__init__(*args, **kwargs) def yaml_load(stream): """Load the given YAML stream. :param stream: YAML stream (can be a string or a file-like object) :rtype: dict """ return yaml.load(stream, Loader=YamlLoader) def yaml_sane_load(stream): warnings.warn("yaml_sane_load has been renamed to yaml_load", DeprecationWarning) return yaml_load(stream) class OpenAPICodecYaml(_OpenAPICodec): media_type = "application/yaml" def __init__(self, validators, media_type="application/yaml"): super(OpenAPICodecYaml, self).__init__(validators) self.media_type = media_type def _dump_dict(self, spec): """Dump ``spec`` into YAML. :rtype: bytes""" return yaml_dump(spec, binary=True) drf-yasg-nonfree-1.21.15/src/drf_yasg/errors.py000066400000000000000000000005741514731163200213130ustar00rootroot00000000000000class SwaggerError(Exception): pass class SwaggerValidationError(SwaggerError): def __init__(self, msg, errors=None, spec=None, source_codec=None, *args): super(SwaggerValidationError, self).__init__(msg, *args) self.errors = errors self.spec = spec self.source_codec = source_codec class SwaggerGenerationError(SwaggerError): pass drf-yasg-nonfree-1.21.15/src/drf_yasg/generators.py000066400000000000000000000655301514731163200221530ustar00rootroot00000000000000import copy import logging import re import urllib.parse as urlparse from collections import defaultdict import uritemplate from django.urls import URLPattern, URLResolver from rest_framework import versioning from rest_framework.schemas.generators import EndpointEnumerator as _EndpointEnumerator from rest_framework.schemas.generators import endpoint_ordering, get_pk_name from rest_framework.schemas.openapi import SchemaGenerator from rest_framework.schemas.utils import get_pk_description from rest_framework.settings import api_settings from . import openapi from .app_settings import swagger_settings from .errors import SwaggerGenerationError from .inspectors.field import ( get_basic_type_info, get_queryset_field, get_queryset_from_view, ) from .openapi import ReferenceResolver, SwaggerDict from .utils import force_real_str, get_consumes, get_produces, is_list_view logger = logging.getLogger(__name__) PATH_PARAMETER_RE = re.compile(r"{(?P\w+)}") def common_path(paths): split_paths = [path.strip("/").split("/") for path in paths] s1 = min(split_paths) s2 = max(split_paths) common = s1 for i, c in enumerate(s1): if c != s2[i]: common = s1[:i] break return "/" + "/".join(common) def is_custom_action(action): return action not in { "retrieve", "list", "create", "update", "partial_update", "destroy", } class EndpointEnumerator(_EndpointEnumerator): def __init__(self, patterns=None, urlconf=None, request=None): super(EndpointEnumerator, self).__init__(patterns, urlconf) self.request = request def get_path_from_regex(self, path_regex): if path_regex.endswith(")"): logger.warning( "url pattern does not end in $ ('%s') - unexpected things might happen", path_regex, ) return self.unescape_path( super(EndpointEnumerator, self).get_path_from_regex(path_regex) ) def should_include_endpoint( self, path, callback, app_name="", namespace="", url_name=None ): if not super(EndpointEnumerator, self).should_include_endpoint(path, callback): return False version = getattr(self.request, "version", None) versioning_class = getattr(callback.cls, "versioning_class", None) if versioning_class is not None and issubclass( versioning_class, versioning.NamespaceVersioning ): if version and version not in namespace.split(":"): return False if getattr(callback.cls, "swagger_schema", object()) is None: return False return True def replace_version(self, path, callback): """If ``request.version`` is not ``None`` and `callback` uses ``URLPathVersioning``, this function replaces the ``version`` parameter in `path` with the actual version. :param str path: the templated path :param callback: the view callback :rtype: str """ versioning_class = getattr(callback.cls, "versioning_class", None) if versioning_class is not None and issubclass( versioning_class, versioning.URLPathVersioning ): version = getattr(self.request, "version", None) if version: version_param = getattr(versioning_class, "version_param", "version") version_param = "{%s}" % version_param if version_param not in path: logger.info( "view %s uses URLPathVersioning but URL %s has no param %s" % (callback.cls, path, version_param) ) path = path.replace(version_param, version) return path def get_api_endpoints( self, patterns=None, prefix="", app_name=None, namespace=None, ignored_endpoints=None, ): """ Return a list of all available API endpoints by inspecting the URL conf. Copied entirely from super. """ if patterns is None: patterns = self.patterns api_endpoints = [] if ignored_endpoints is None: ignored_endpoints = set() for pattern in patterns: path_regex = prefix + str(pattern.pattern) if isinstance(pattern, URLPattern): try: path = self.get_path_from_regex(path_regex) callback = pattern.callback url_name = pattern.name if self.should_include_endpoint( path, callback, app_name or "", namespace or "", url_name ): path = self.replace_version(path, callback) # avoid adding endpoints that have already been seen, # as Django resolves urls in top-down order if path in ignored_endpoints: continue ignored_endpoints.add(path) for method in self.get_allowed_methods(callback): endpoint = (path, method, callback) api_endpoints.append(endpoint) except Exception: # pragma: no cover logger.warning("failed to enumerate view", exc_info=True) elif isinstance(pattern, URLResolver): nested_endpoints = self.get_api_endpoints( patterns=pattern.url_patterns, prefix=path_regex, app_name="%s:%s" % (app_name, pattern.app_name) if app_name else pattern.app_name, namespace="%s:%s" % (namespace, pattern.namespace) if namespace else pattern.namespace, ignored_endpoints=ignored_endpoints, ) api_endpoints.extend(nested_endpoints) else: logger.warning("unknown pattern type {}".format(type(pattern))) api_endpoints = sorted(api_endpoints, key=endpoint_ordering) return api_endpoints def unescape(self, s): """Unescape all backslash escapes from `s`. :param str s: string with backslash escapes :rtype: str """ # unlike .replace('\\', ''), this correctly transforms a double backslash into a # single backslash return re.sub(r"\\(.)", r"\1", s) def unescape_path(self, path): """Remove backslashes escapes from all path components outside {parameters}. This is needed because ``simplify_regex`` does not handle this correctly. **NOTE:** this might destructively affect some url regex patterns that contain metacharacters (e.g. \\w, \\d) outside path parameter groups; if you are in this category, God help you :param str path: path possibly containing :return: the unescaped path :rtype: str """ clean_path = "" while path: match = PATH_PARAMETER_RE.search(path) if not match: clean_path += self.unescape(path) break clean_path += self.unescape(path[: match.start()]) clean_path += match.group() path = path[match.end() :] return clean_path class OpenAPISchemaGenerator: """ This class iterates over all registered API endpoints and returns an appropriate OpenAPI 2.0 compliant schema. Method implementations shamelessly stolen and adapted from rest-framework ``SchemaGenerator``. """ endpoint_enumerator_class = EndpointEnumerator reference_resolver_class = ReferenceResolver # Map HTTP methods onto actions. default_mapping = { "get": "retrieve", "post": "create", "put": "update", "patch": "partial_update", "delete": "destroy", } def __init__(self, info, version="", url=None, patterns=None, urlconf=None): """ :param openapi.Info info: information about the API :param str version: API version string; if omitted, `info.default_version` will be used :param str url: API scheme, host and port; if ``None`` is passed and ``DEFAULT_API_URL`` is not set, the url will be inferred from the request made against the schema view, so you should generally not need to set this parameter explicitly; if the empty string is passed, no host and scheme will be emitted If `url` is not ``None`` or the empty string, it must be a scheme-absolute uri (i.e. starting with http:// or https://), and any path component is ignored; See also: :ref:`documentation on base URL construction ` :param patterns: if given, only these patterns will be enumerated for inclusion in the API spec :param urlconf: if patterns is not given, use this urlconf to enumerate patterns; if not given, the default urlconf is used """ self._gen = SchemaGenerator( info.title, url, info.get("description", ""), patterns, urlconf ) self.info = info self.version = version self.consumes = [] self.produces = [] self.coerce_method_names = api_settings.SCHEMA_COERCE_METHOD_NAMES if url is None and swagger_settings.DEFAULT_API_URL is not None: url = swagger_settings.DEFAULT_API_URL if url: parsed_url = urlparse.urlparse(url) if parsed_url.scheme not in ("http", "https") or not parsed_url.netloc: raise SwaggerGenerationError("`url` must be an absolute HTTP(S) url") if parsed_url.path: logger.warning( "path component of api base URL %s is ignored; use " "FORCE_SCRIPT_NAME instead" % url ) else: self._gen.url = url @property def url(self): return self._gen.url def get_security_definitions(self): """Get the security schemes for this API. This determines what is usable in security requirements, and helps clients configure their authorization credentials. :return: the security schemes usable with this API :rtype: dict[str,dict] or None """ security_definitions = swagger_settings.SECURITY_DEFINITIONS if security_definitions is not None: security_definitions = SwaggerDict._as_dict(security_definitions, {}) return security_definitions def get_security_requirements(self, security_definitions): """Get the base (global) security requirements of the API. This is never called if :meth:`.get_security_definitions` returns `None`. :param security_definitions: security definitions as returned by :meth:`.get_security_definitions` :return: the security schemes accepted by default :rtype: list[dict[str,list[str]]] or None """ security_requirements = swagger_settings.SECURITY_REQUIREMENTS if security_requirements is None: security_requirements = [ {security_scheme: []} for security_scheme in security_definitions ] security_requirements = [ SwaggerDict._as_dict(sr, {}) for sr in security_requirements ] security_requirements = sorted(security_requirements, key=list) return security_requirements def get_schema(self, request=None, public=False): """Generate a :class:`.Swagger` object representing the API schema. :param request: the request used for filtering accessible endpoints and finding the spec URI :type request: rest_framework.request.Request or None :param bool public: if True, all endpoints are included regardless of access through `request` :return: the generated Swagger specification :rtype: openapi.Swagger """ endpoints = self.get_endpoints(request) components = self.reference_resolver_class( openapi.SCHEMA_DEFINITIONS, force_init=True ) self.consumes = get_consumes(api_settings.DEFAULT_PARSER_CLASSES) self.produces = get_produces(api_settings.DEFAULT_RENDERER_CLASSES) paths, prefix = self.get_paths(endpoints, components, request, public) security_definitions = self.get_security_definitions() if security_definitions: security_requirements = self.get_security_requirements(security_definitions) else: security_requirements = None url = self.url if url is None and request is not None: url = request.build_absolute_uri() return openapi.Swagger( info=self.info, paths=paths, consumes=self.consumes or None, produces=self.produces or None, security_definitions=security_definitions, security=security_requirements, _url=url, _prefix=prefix, _version=self.version, **dict(components), ) def create_view(self, callback, method, request=None): """Create a view instance from a view callback as registered in urlpatterns. :param callback: view callback registered in urlpatterns :param str method: HTTP method :param request: request to bind to the view :type request: rest_framework.request.Request or None :return: the view instance """ view = self._gen.create_view(callback, method, request) overrides = getattr(callback, "_swagger_auto_schema", None) if overrides is not None: # decorated function based view must have its decorator information passed # on to the re-instantiated view for method, _ in overrides.items(): view_method = getattr(view, method, None) if view_method is not None: # pragma: no cover setattr(view_method.__func__, "_swagger_auto_schema", overrides) setattr(view, "swagger_fake_view", True) return view def coerce_path(self, path, view): """Coerce {pk} path arguments into the name of the model field, where possible. This is cleaner for an external representation (i.e. "this is an identifier", not "this is a database primary key"). :param str path: the path :param rest_framework.views.APIView view: associated view :rtype: str """ if "{pk}" not in path: return path model = getattr(get_queryset_from_view(view), "model", None) if model: field_name = get_pk_name(model) else: field_name = "id" return path.replace("{pk}", "{%s}" % field_name) def get_endpoints(self, request): """Iterate over all the registered endpoints in the API and return a fake view with the right parameters. :param request: request to bind to the endpoint views :type request: rest_framework.request.Request or None :return: {path: (view_class, list[(http_method, view_instance)]) :rtype: dict[str,(type,list[(str,rest_framework.views.APIView)])] """ enumerator = self.endpoint_enumerator_class( self._gen.patterns, self._gen.urlconf, request=request ) endpoints = enumerator.get_api_endpoints() view_paths = defaultdict(list) view_cls = {} for path, method, callback in endpoints: view = self.create_view(callback, method, request) path = self.coerce_path(path, view) view_paths[path].append((method, view)) view_cls[path] = callback.cls return {path: (view_cls[path], methods) for path, methods in view_paths.items()} def get_operation_keys(self, subpath, method, view): """Return a list of keys that should be used to group an operation within the specification. :: /users/ ("users", "list"), ("users", "create") /users/{pk}/ ("users", "read"), ("users", "update"), ("users", "delete") /users/enabled/ ("users", "enabled") # custom viewset list action /users/{pk}/star/ ("users", "star") # custom viewset detail action /users/{pk}/groups/ ("users", "groups", "list"), ("users", "groups", "create") /users/{pk}/groups/{pk}/ ("users", "groups", "read"), ("users", "groups", "update") :param str subpath: path to the operation with any common prefix/base path removed :param str method: HTTP method :param view: the view associated with the operation :rtype: list[str] """ # noqa: E501 if hasattr(view, "action"): # Viewsets have explicitly named actions. action = view.action else: # Views have no associated action, so we determine one from the method. if is_list_view(subpath, method, view): action = "list" else: action = self.default_mapping[method.lower()] named_path_components = [ component for component in subpath.strip("/").split("/") if "{" not in component ] if is_custom_action(action): # Custom action, eg "/users/{pk}/activate/", "/users/active/" mapped_methods = { # Don't count head mapping, e.g. not part of the schema method for method in view.action_map if method != "head" } if len(mapped_methods) > 1: action = self.default_mapping[method.lower()] if action in self.coerce_method_names: action = self.coerce_method_names[action] return named_path_components + [action] else: return named_path_components[:-1] + [action] if action in self.coerce_method_names: action = self.coerce_method_names[action] # Default action, eg "/users/", "/users/{pk}/" return named_path_components + [action] def determine_path_prefix(self, paths): """ Given a list of all paths, return the common prefix which should be discounted when generating a schema structure. This will be the longest common string that does not include that last component of the URL, or the last component before a path parameter. For example: :: /api/v1/users/ /api/v1/users/{pk}/ The path prefix is ``/api/v1/``. :param list[str] paths: list of paths :rtype: str """ prefixes = [] for path in paths: components = path.strip("/").split("/") initial_components = [] for component in components: if "{" in component: break initial_components.append(component) prefix = "/".join(initial_components[:-1]) if not prefix: # We can just break early in the case that there's at least # one URL that doesn't have a path prefix. return "/" prefixes.append("/" + prefix + "/") return common_path(prefixes) def should_include_endpoint(self, path, method, view, public): """Check if a given endpoint should be included in the resulting schema. :param str path: request path :param str method: http request method :param view: instantiated view callback :param bool public: if True, all endpoints are included regardless of access through `request` :returns: true if the view should be excluded :rtype: bool """ return public or self._gen.has_view_permissions(path, method, view) def get_paths_object(self, paths): """Construct the Swagger Paths object. :param dict[str,openapi.PathItem] paths: mapping of paths to :class:`.PathItem` objects :returns: the :class:`.Paths` object :rtype: openapi.Paths """ return openapi.Paths(paths=paths) def get_paths(self, endpoints, components, request, public): """Generate the Swagger Paths for the API from the given endpoints. :param dict endpoints: endpoints as returned by get_endpoints :param ReferenceResolver components: resolver/container for Swagger References :param Request request: the request made against the schema view; can be None :param bool public: if True, all endpoints are included regardless of access through `request` :returns: the :class:`.Paths` object and the longest common path prefix, as a 2-tuple :rtype: tuple[openapi.Paths,str] """ if not endpoints: return openapi.Paths(paths={}), "" prefix = self.determine_path_prefix(list(endpoints.keys())) or "" assert "{" not in prefix, "base path cannot be templated in swagger 2.0" paths = {} for path, (view_cls, methods) in sorted(endpoints.items()): operations = {} for method, view in methods: if not self.should_include_endpoint(path, method, view, public): continue operation = self.get_operation( view, path, prefix, method, components, request ) if operation is not None: operations[method.lower()] = operation if operations: # since the common prefix is used as the API basePath, it must be # stripped from individual paths when writing them into the swagger # document path_suffix = path[len(prefix) :] if not path_suffix.startswith("/"): path_suffix = "/" + path_suffix paths[path_suffix] = self.get_path_item(path, view_cls, operations) return self.get_paths_object(paths), prefix def get_operation(self, view, path, prefix, method, components, request): """Get an :class:`.Operation` for the given API endpoint (path, method). This method delegates to :meth:`~.inspectors.ViewInspector.get_operation` of a :class:`~.inspectors.ViewInspector` determined according to settings and :func:`@swagger_auto_schema <.swagger_auto_schema>` overrides. :param view: the view associated with this endpoint :param str path: the path component of the operation URL :param str prefix: common path prefix among all endpoints :param str method: the http method of the operation :param openapi.ReferenceResolver components: referenceable components :param Request request: the request made against the schema view; can be None :rtype: openapi.Operation """ operation_keys = self.get_operation_keys(path[len(prefix) :], method, view) overrides = self.get_overrides(view, method) # the inspector class can be specified, in decreasing order of priority, # 1. globally via DEFAULT_AUTO_SCHEMA_CLASS view_inspector_cls = swagger_settings.DEFAULT_AUTO_SCHEMA_CLASS # 2. on the view/viewset class view_inspector_cls = getattr(view, "swagger_schema", view_inspector_cls) # 3. on the swagger_auto_schema decorator view_inspector_cls = overrides.get("auto_schema", view_inspector_cls) if view_inspector_cls is None: return None view_inspector = view_inspector_cls( view, path, method, components, request, overrides, operation_keys ) operation = view_inspector.get_operation(operation_keys) if operation is None: return None if "consumes" in operation and set(operation.consumes) == set(self.consumes): del operation.consumes if "produces" in operation and set(operation.produces) == set(self.produces): del operation.produces return operation def get_path_item(self, path, view_cls, operations): """Get a :class:`.PathItem` object that describes the parameters and operations related to a single path in the API. :param str path: the path :param type view_cls: the view that was bound to this path in urlpatterns :param dict[str,openapi.Operation] operations: operations defined on this path, keyed by lowercase HTTP method :rtype: openapi.PathItem """ path_parameters = self.get_path_parameters(path, view_cls) return openapi.PathItem(parameters=path_parameters, **operations) def get_overrides(self, view, method): """Get overrides specified for a given operation. :param view: the view associated with the operation :param str method: HTTP method :return: a dictionary containing any overrides set by :func:`@swagger_auto_schema <.swagger_auto_schema>` :rtype: dict """ method = method.lower() action = getattr(view, "action", method) action_method = getattr(view, action, None) overrides = getattr(action_method, "_swagger_auto_schema", {}) if method in overrides: overrides = overrides[method] return copy.deepcopy(overrides) def get_path_parameters(self, path, view_cls): """Return a list of Parameter instances corresponding to any templated path variables. :param str path: templated request path :param type view_cls: the view class associated with the path :return: path parameters :rtype: list[openapi.Parameter] """ parameters = [] queryset = get_queryset_from_view(view_cls) for variable in uritemplate.variables(path): model, model_field = get_queryset_field(queryset, variable) attrs = get_basic_type_info(model_field) or {"type": openapi.TYPE_STRING} if ( getattr(view_cls, "lookup_field", None) == variable and attrs["type"] == openapi.TYPE_STRING ): attrs["pattern"] = getattr( view_cls, "lookup_value_regex", attrs.get("pattern", None) ) if model_field and getattr(model_field, "help_text", False): description = model_field.help_text elif model_field and getattr(model_field, "primary_key", False): description = get_pk_description(model, model_field) else: description = None field = openapi.Parameter( name=variable, description=force_real_str(description), required=True, in_=openapi.IN_PATH, **attrs, ) parameters.append(field) return parameters drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/000077500000000000000000000000001514731163200216105ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/__init__.py000066400000000000000000000035761514731163200237340ustar00rootroot00000000000000from ..app_settings import swagger_settings from .base import ( BaseInspector, FieldInspector, FilterInspector, NotHandled, PaginatorInspector, SerializerInspector, ViewInspector, ) from .field import ( CamelCaseJSONFilter, ChoiceFieldInspector, DictFieldInspector, FileFieldInspector, HiddenFieldInspector, InlineSerializerInspector, JSONFieldInspector, RecursiveFieldInspector, ReferencingSerializerInspector, RelatedFieldInspector, SerializerMethodFieldInspector, SimpleFieldInspector, StringDefaultFieldInspector, ) from .query import ( CoreAPICompatInspector, DjangoRestResponsePagination, DrfAPICompatInspector, ) from .view import SwaggerAutoSchema # these settings must be accessed only after defining/importing all the classes in this # module to avoid ImportErrors ViewInspector.field_inspectors = swagger_settings.DEFAULT_FIELD_INSPECTORS ViewInspector.filter_inspectors = swagger_settings.DEFAULT_FILTER_INSPECTORS ViewInspector.paginator_inspectors = swagger_settings.DEFAULT_PAGINATOR_INSPECTORS __all__ = [ # base inspectors "BaseInspector", "FilterInspector", "PaginatorInspector", "FieldInspector", "SerializerInspector", "ViewInspector", # filter and pagination inspectors "DrfAPICompatInspector", "CoreAPICompatInspector", "DjangoRestResponsePagination", # field inspectors "InlineSerializerInspector", "RecursiveFieldInspector", "ReferencingSerializerInspector", "RelatedFieldInspector", "SimpleFieldInspector", "FileFieldInspector", "ChoiceFieldInspector", "DictFieldInspector", "JSONFieldInspector", "StringDefaultFieldInspector", "CamelCaseJSONFilter", "HiddenFieldInspector", "SerializerMethodFieldInspector", # view inspectors "SwaggerAutoSchema", # module constants "NotHandled", ] drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/base.py000066400000000000000000000542661514731163200231110ustar00rootroot00000000000000import inspect import logging from rest_framework import serializers from .. import openapi from ..utils import force_real_str, get_field_default, get_object_classes, is_list_view #: Sentinel value that inspectors must return to signal that they do not know how to # handle an object NotHandled = object() logger = logging.getLogger(__name__) def is_callable_method(cls_or_instance, method_name): method = getattr(cls_or_instance, method_name) if inspect.ismethod(method) and getattr(method, "__self__", None): # bound classmethod or instance method return method, True from inspect import getattr_static return method, isinstance( getattr_static(cls_or_instance, method_name, None), staticmethod ) def call_view_method(view, method_name, fallback_attr=None, default=None): """Call a view method which might throw an exception. If an exception is thrown, log an informative error message and return the value of fallback_attr, or default if not present. The method must be callable without any arguments except cls or self. :param view: view class or instance; if a class is passed, instance methods won't be called :type view: rest_framework.views.APIView or type[rest_framework.views.APIView] :param str method_name: name of a method on the view :param str fallback_attr: name of an attribute on the view to fall back on, if calling the method fails :param default: default value if all else fails :return: view method's return value, or value of view's fallback_attr, or default :rtype: any or None """ if hasattr(view, method_name): try: view_method, is_callabale = is_callable_method(view, method_name) if is_callabale: return view_method() except Exception: # pragma: no cover logger.warning( "view's %s.%s raised exception during schema generation; use " "`getattr(self, 'swagger_fake_view', False)` to detect and " "short-circuit this", type(view).__name__, method_name, exc_info=True, ) if fallback_attr and hasattr(view, fallback_attr): return getattr(view, fallback_attr) return default class BaseInspector: def __init__(self, view, path, method, components, request): """ :param rest_framework.views.APIView view: the view associated with this endpoint :param str path: the path component of the operation URL :param str method: the http method of the operation :param openapi.ReferenceResolver components: referenceable components :param rest_framework.request.Request request: the request made against the schema view; can be None """ self.view = view self.path = path self.method = method self.components = components self.request = request def process_result(self, result, method_name, obj, **kwargs): """After an inspector handles an object (i.e. returns a value other than :data:`.NotHandled`), all inspectors that were probed get the chance to alter the result, in reverse order. The inspector that handled the object is the first to receive a ``process_result`` call with the object it just returned. This behavior is similar to the Django request/response middleware processing. If this inspector has no post-processing to do, it should just ``return result`` (the default implementation). :param result: the return value of the winning inspector, or ``None`` if no inspector handled the object :param str method_name: name of the method that was called on the inspector :param obj: first argument passed to inspector method :param kwargs: additional arguments passed to inspector method :return: """ return result def probe_inspectors(self, inspectors, method_name, obj, initkwargs=None, **kwargs): """Probe a list of inspectors with a given object. The first inspector in the list to return a value that is not :data:`.NotHandled` wins. :param list[type[BaseInspector]] inspectors: list of inspectors to probe :param str method_name: name of the target method on the inspector :param obj: first argument to inspector method :param dict initkwargs: extra kwargs for instantiating inspector class :param kwargs: additional arguments to inspector method :return: the return value of the winning inspector, or ``None`` if no inspector handled the object """ initkwargs = initkwargs or {} tried_inspectors = [] for inspector in inspectors: assert inspect.isclass(inspector), ( "inspector must be a class, not an object" ) assert issubclass(inspector, BaseInspector), ( "inspectors must subclass BaseInspector" ) inspector = inspector( self.view, self.path, self.method, self.components, self.request, **initkwargs, ) tried_inspectors.append(inspector) method = getattr(inspector, method_name, None) if method is None: continue result = method(obj, **kwargs) if result is not NotHandled: break else: # pragma: no cover logger.warning( "%s ignored because no inspector in %s handled it (operation: %s)", obj, inspectors, method_name, ) result = None for inspector in reversed(tried_inspectors): result = inspector.process_result(result, method_name, obj, **kwargs) return result def get_renderer_classes(self): """Get the renderer classes of this view by calling `get_renderers`. :return: renderer classes :rtype: list[type[rest_framework.renderers.BaseRenderer]] """ return get_object_classes( call_view_method(self.view, "get_renderers", "renderer_classes", []) ) def get_parser_classes(self): """Get the parser classes of this view by calling `get_parsers`. :return: parser classes :rtype: list[type[rest_framework.parsers.BaseParser]] """ return get_object_classes( call_view_method(self.view, "get_parsers", "parser_classes", []) ) class PaginatorInspector(BaseInspector): """Base inspector for paginators. Responsible for determining extra query parameters and response structure added by given paginators. """ def get_paginator_parameters(self, paginator): """Get the pagination parameters for a single paginator **instance**. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `paginator`. :param BasePagination paginator: the paginator :rtype: list[openapi.Parameter] """ return NotHandled def get_paginated_response(self, paginator, response_schema): """Add appropriate paging fields to a response :class:`.Schema`. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `paginator`. :param BasePagination paginator: the paginator :param openapi.Schema response_schema: the response schema that must be paged. :rtype: openapi.Schema """ return NotHandled class FilterInspector(BaseInspector): """Base inspector for filter backends. Responsible for determining extra query parameters added by given filter backends. """ def get_filter_parameters(self, filter_backend): """Get the filter parameters for a single filter backend **instance**. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `filter_backend`. :param BaseFilterBackend filter_backend: the filter backend :rtype: list[openapi.Parameter] """ return NotHandled class FieldInspector(BaseInspector): """Base inspector for serializers and serializer fields.""" def __init__(self, view, path, method, components, request, field_inspectors): super(FieldInspector, self).__init__(view, path, method, components, request) self.field_inspectors = field_inspectors def add_manual_fields(self, serializer_or_field, schema): """Set fields from the ``swagger_schema_fields`` attribute on the Meta class. This method is called only for serializers or fields that are converted into ``openapi.Schema`` objects. :param serializer_or_field: serializer or field instance :param openapi.Schema schema: the schema object to be modified in-place """ meta = getattr(serializer_or_field, "Meta", None) swagger_schema_fields = getattr(meta, "swagger_schema_fields", {}) if swagger_schema_fields: for attr, val in swagger_schema_fields.items(): setattr(schema, attr, val) def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): """Convert a drf Serializer or Field instance into a Swagger object. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `field`. :param rest_framework.serializers.Field field: the source field :param type[openapi.SwaggerDict] swagger_object_type: should be one of Schema, Parameter, Items :param bool use_references: if False, forces all objects to be declared inline instead of by referencing other components :param kwargs: extra attributes for constructing the object; if swagger_object_type is Parameter, ``name`` and ``in_`` should be provided :return: the swagger object :rtype: openapi.Parameter or openapi.Items or openapi.Schema or openapi.SchemaRef """ return NotHandled def probe_field_inspectors( self, field, swagger_object_type, use_references, **kwargs ): """Helper method for recursively probing `field_inspectors` to handle a given field. All arguments are the same as :meth:`.field_to_swagger_object`. :rtype: openapi.Parameter or openapi.Items or openapi.Schema or openapi.SchemaRef """ return self.probe_inspectors( self.field_inspectors, "field_to_swagger_object", field, {"field_inspectors": self.field_inspectors}, swagger_object_type=swagger_object_type, use_references=use_references, **kwargs, ) def _get_partial_types(self, field, swagger_object_type, use_references, **kwargs): """Helper method to extract generic information from a field and return a partial constructor for the appropriate openapi object. All arguments are the same as :meth:`.field_to_swagger_object`. The return value is a tuple consisting of: * a function for constructing objects of `swagger_object_type`; its prototype is: :: def SwaggerType(existing_object=None, **instance_kwargs): This function creates an instance of `swagger_object_type`, passing the following attributes to its init, in order of precedence: - arguments specified by the ``kwargs`` parameter of :meth:`._get_partial_types` - ``instance_kwargs`` passed to the constructor function - ``title``, ``description``, ``required``, ``x-nullable`` and ``default`` inferred from the field, where appropriate If ``existing_object`` is not ``None``, it is updated instead of creating a new object. * a type that should be used for child objects if `field` is of an array type. This can currently have two values: - :class:`.Schema` if `swagger_object_type` is :class:`.Schema` - :class:`.Items` if `swagger_object_type` is :class:`.Parameter` or :class:`.Items` :rtype: (function,type[openapi.Schema] or type[openapi.Items]) """ assert swagger_object_type in (openapi.Schema, openapi.Parameter, openapi.Items) assert not isinstance(field, openapi.SwaggerDict), ( "passed field is already a SwaggerDict object" ) title = force_real_str(field.label) if field.label else None title = ( title if swagger_object_type == openapi.Schema else None ) # only Schema has title help_text = getattr(field, "help_text", None) description = force_real_str(help_text) if help_text else None description = ( description if swagger_object_type != openapi.Items else None ) # Items has no description either def SwaggerType(existing_object=None, use_field_title=True, **instance_kwargs): if ( "required" not in instance_kwargs and swagger_object_type == openapi.Parameter ): instance_kwargs["required"] = field.required if ( "default" not in instance_kwargs and swagger_object_type != openapi.Items ): default = get_field_default(field) if default not in (None, serializers.empty): instance_kwargs["default"] = default if ( use_field_title and instance_kwargs.get("type", None) != openapi.TYPE_ARRAY ): instance_kwargs.setdefault("title", title) if description is not None: instance_kwargs.setdefault("description", description) if getattr(field, "allow_null", None): instance_kwargs["x_nullable"] = True instance_kwargs.update(kwargs) if existing_object is not None: assert isinstance(existing_object, swagger_object_type) for key, val in sorted(instance_kwargs.items()): setattr(existing_object, key, val) result = existing_object else: result = swagger_object_type(**instance_kwargs) # Provide an option to add manual parameters to a schema # for example, to add examples if swagger_object_type == openapi.Schema: self.add_manual_fields(field, result) return result # arrays in Schema have Schema elements, arrays in Parameter and Items have # Items elements child_swagger_type = ( openapi.Schema if swagger_object_type == openapi.Schema else openapi.Items ) return SwaggerType, child_swagger_type class SerializerInspector(FieldInspector): def get_schema(self, serializer): """Convert a DRF Serializer instance to an :class:`.openapi.Schema`. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `serializer`. :param serializers.BaseSerializer serializer: the ``Serializer`` instance :rtype: openapi.Schema """ return NotHandled def get_request_parameters(self, serializer, in_): """Convert a DRF serializer into a list of :class:`.Parameter`\\ s. Should return :data:`.NotHandled` if this inspector does not know how to handle the given `serializer`. :param serializers.BaseSerializer serializer: the ``Serializer`` instance :param str in_: the location of the parameters, one of the `openapi.IN_*` constants :rtype: list[openapi.Parameter] """ return NotHandled class ViewInspector(BaseInspector): body_methods = ( "PUT", "PATCH", "POST", "DELETE", ) #: methods that are allowed to have a request body #: methods that are assumed to require a request body determined by the view's # ``serializer_class`` implicit_body_methods = ("PUT", "PATCH", "POST") #: methods which are assumed to return a list of objects when present on non-detail # endpoints implicit_list_response_methods = ("GET",) # real values set in __init__ to prevent import errors field_inspectors = [] #: filter_inspectors = [] #: paginator_inspectors = [] #: def __init__(self, view, path, method, components, request, overrides): """ Inspector class responsible for providing :class:`.Operation` definitions given a view, path and method. :param dict overrides: manual overrides as passed to :func:`@swagger_auto_schema <.swagger_auto_schema>` """ super(ViewInspector, self).__init__(view, path, method, components, request) self.overrides = overrides self._prepend_inspector_overrides("field_inspectors") self._prepend_inspector_overrides("filter_inspectors") self._prepend_inspector_overrides("paginator_inspectors") def _prepend_inspector_overrides(self, inspectors): extra_inspectors = self.overrides.get(inspectors, None) if extra_inspectors: default_inspectors = [ insp for insp in getattr(self, inspectors) if insp not in extra_inspectors ] setattr(self, inspectors, extra_inspectors + default_inspectors) def get_operation(self, operation_keys): """Get an :class:`.Operation` for the given API endpoint (path, method). This includes query, body parameters and response schemas. :param tuple[str] operation_keys: an array of keys describing the hierarchical layout of this view in the API; e.g. ``('snippets', 'list')``, ``('snippets', 'retrieve')``, etc. :rtype: openapi.Operation """ raise NotImplementedError("ViewInspector must implement get_operation()!") def is_list_view(self): """Determine whether this view is a list or a detail view. The difference between the two is that detail views depend on a pk/id path parameter. Note that a non-detail view does not necessarily imply a list response (:meth:`.has_list_response`), nor are list responses limited to non-detail views. For example, one might have a `/topic//posts` endpoint which is a detail view that has a list response. :rtype: bool""" return is_list_view(self.path, self.method, self.view) def has_list_response(self): """Determine whether this view returns multiple objects. By default this is any non-detail view (see :meth:`.is_list_view`) whose request method is one of :attr:`.implicit_list_response_methods`. :rtype: bool """ return self.is_list_view() and ( self.method.upper() in self.implicit_list_response_methods ) def should_filter(self): """Determine whether filter backend parameters should be included for this request. :rtype: bool """ return getattr(self.view, "filter_backends", None) and self.has_list_response() def get_filter_parameters(self): """Return the parameters added to the view by its filter backends. :rtype: list[openapi.Parameter] """ if not self.should_filter(): return [] fields = [] for filter_backend in getattr(self.view, "filter_backends"): fields += ( self.probe_inspectors( self.filter_inspectors, "get_filter_parameters", filter_backend() ) or [] ) return fields def should_page(self): """Determine whether paging parameters and structure should be added to this operation's request and response. :rtype: bool """ return getattr(self.view, "paginator", None) and self.has_list_response() def get_pagination_parameters(self): """Return the parameters added to the view by its paginator. :rtype: list[openapi.Parameter] """ if not self.should_page(): return [] return ( self.probe_inspectors( self.paginator_inspectors, "get_paginator_parameters", getattr(self.view, "paginator"), ) or [] ) def serializer_to_schema(self, serializer): """Convert a serializer to an OpenAPI :class:`.Schema`. :param serializers.BaseSerializer serializer: the ``Serializer`` instance :returns: the converted :class:`.Schema`, or ``None`` in case of an unknown serializer :rtype: openapi.Schema or openapi.SchemaRef """ return self.probe_inspectors( self.field_inspectors, "get_schema", serializer, {"field_inspectors": self.field_inspectors}, ) def serializer_to_parameters(self, serializer, in_): """Convert a serializer to a possibly empty list of :class:`.Parameter`\\ s. :param serializers.BaseSerializer serializer: the ``Serializer`` instance :param str in_: the location of the parameters, one of the `openapi.IN_*` constants :rtype: list[openapi.Parameter] """ return ( self.probe_inspectors( self.field_inspectors, "get_request_parameters", serializer, {"field_inspectors": self.field_inspectors}, in_=in_, ) or [] ) def get_paginated_response(self, response_schema): """Add appropriate paging fields to a response :class:`.Schema`. :param openapi.Schema response_schema: the response schema that must be paged. :returns: the paginated response class:`.Schema`, or ``None`` in case of an unknown pagination scheme :rtype: openapi.Schema """ return self.probe_inspectors( self.paginator_inspectors, "get_paginated_response", getattr(self.view, "paginator"), response_schema=response_schema, ) drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/field.py000066400000000000000000001144121514731163200232500ustar00rootroot00000000000000import datetime import inspect import logging import operator import sys import typing import uuid import warnings from contextlib import suppress from decimal import Decimal from django.core import validators from django.db import models from packaging import version from rest_framework import serializers from rest_framework.settings import api_settings as rest_framework_settings from .. import openapi from ..errors import SwaggerGenerationError from ..utils import ( decimal_as_float, field_value_to_representation, filter_none, get_serializer_class, get_serializer_ref_name, ) from .base import FieldInspector, NotHandled, SerializerInspector, call_view_method try: from importlib import metadata except ImportError: # Python < 3.8 import importlib_metadata as metadata drf_version = metadata.version("djangorestframework") try: from types import NoneType, UnionType UNION_TYPES = (typing.Union, UnionType) except ImportError: # Python < 3.10 NoneType = type(None) UNION_TYPES = (typing.Union,) DEFAULT_TYPE = openapi.TYPE_STRING logger = logging.getLogger(__name__) class InlineSerializerInspector(SerializerInspector): """Provides serializer conversions using :meth:`.FieldInspector.field_to_swagger_object`.""" #: whether to output :class:`.Schema` definitions inline or into the ``definitions`` # section use_definitions = False def get_schema(self, serializer): return self.probe_field_inspectors( serializer, openapi.Schema, self.use_definitions ) def add_manual_parameters(self, serializer, parameters): """Add/replace parameters from the given list of automatically generated request parameters. This method is called only when the serializer is converted into a list of parameters for use in a form data request. :param serializer: serializer instance :param list[openapi.Parameter] parameters: generated parameters :return: modified parameters :rtype: list[openapi.Parameter] """ return parameters def get_request_parameters(self, serializer, in_): fields = getattr(serializer, "fields", {}) parameters = [ self.probe_field_inspectors( value, openapi.Parameter, self.use_definitions, name=self.get_parameter_name(key), in_=in_, ) for key, value in fields.items() if not getattr(value, "read_only", False) ] return self.add_manual_parameters(serializer, parameters) def get_property_name(self, field_name): return field_name def get_parameter_name(self, field_name): return field_name def get_serializer_ref_name(self, serializer): return get_serializer_ref_name(serializer) def _has_ref_name(self, serializer): serializer_meta = getattr(serializer, "Meta", None) return hasattr(serializer_meta, "ref_name") def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if isinstance(field, (serializers.ListSerializer, serializers.ListField)): child_schema = self.probe_field_inspectors( field.child, ChildSwaggerType, use_references ) limits = find_limits(field) or {} return SwaggerType(type=openapi.TYPE_ARRAY, items=child_schema, **limits) elif isinstance(field, serializers.Serializer): if swagger_object_type != openapi.Schema: raise SwaggerGenerationError( "cannot instantiate nested serializer as " + swagger_object_type.__name__ ) ref_name = self.get_serializer_ref_name(field) def make_schema_definition(serializer=field): properties = {} required = [] for property_name, child in serializer.fields.items(): property_name = self.get_property_name(property_name) prop_kwargs = {"read_only": bool(child.read_only) or None} prop_kwargs = filter_none(prop_kwargs) child_schema = self.probe_field_inspectors( child, ChildSwaggerType, use_references, **prop_kwargs ) properties[property_name] = child_schema if child.required and not getattr(child_schema, "read_only", False): required.append(property_name) result = SwaggerType( # the title is derived from the field name and is better to # be omitted from models use_field_title=False, type=openapi.TYPE_OBJECT, properties=properties, required=required or None, ) setattr(result, "_NP_serializer", get_serializer_class(serializer)) return result if not ref_name or not use_references: return make_schema_definition() definitions = self.components.with_scope(openapi.SCHEMA_DEFINITIONS) actual_schema = definitions.setdefault(ref_name, make_schema_definition) actual_schema._remove_read_only() actual_serializer = getattr(actual_schema, "_NP_serializer", None) this_serializer = get_serializer_class(field) if actual_serializer and actual_serializer != this_serializer: explicit_refs = self._has_ref_name( actual_serializer ) and self._has_ref_name(this_serializer) if not explicit_refs: raise SwaggerGenerationError( "Schema for %s would override distinct serializer %s because " "they implicitly share the same ref_name; explicitly set the " "ref_name attribute on both serializers' Meta classes" % (actual_serializer, this_serializer) ) return openapi.SchemaRef(definitions, ref_name) return NotHandled class ReferencingSerializerInspector(InlineSerializerInspector): use_definitions = True def get_queryset_field(queryset, field_name): """Try to get information about a model and model field from a queryset. :param queryset: the queryset :param field_name: target field name :returns: the model and target field from the queryset as a 2-tuple; both elements can be ``None`` :rtype: tuple """ model = getattr(queryset, "model", None) model_field = get_model_field(model, field_name) return model, model_field def get_model_field(model, field_name): """Try to get the given field from a django db model. :param model: the model :param field_name: target field name :return: model field or ``None`` """ try: if field_name == "pk": return model._meta.pk else: return model._meta.get_field(field_name) except Exception: # pragma: no cover return None def get_queryset_from_view(view, serializer=None): """Try to get the queryset of the given view :param view: the view instance or class :param serializer: if given, will check that the view's get_serializer_class return matches this serializer :return: queryset or ``None`` """ try: queryset = call_view_method(view, "get_queryset", "queryset") if queryset is not None and serializer is not None: # make sure the view is actually using *this* serializer assert type(serializer) is call_view_method( view, "get_serializer_class", "serializer_class" ) return queryset except Exception: # pragma: no cover return None def get_parent_serializer(field): """Get the nearest parent ``Serializer`` instance for the given field. :return: ``Serializer`` or ``None`` """ while field is not None: if isinstance(field, serializers.Serializer): return field field = field.parent return None # pragma: no cover def get_model_from_descriptor(descriptor): with suppress(Exception): try: return descriptor.rel.related_model except Exception: return descriptor.field.remote_field.model def get_related_model(model, source): """Try to find the other side of a model relationship given the name of a related field. :param model: one side of the relationship :param str source: related field name :return: related model or ``None`` """ with suppress(Exception): if "." in source and source.index("."): attr, source = source.split(".", maxsplit=1) return get_related_model( get_model_from_descriptor(getattr(model, attr)), source ) return get_model_from_descriptor(getattr(model, source)) class RelatedFieldInspector(FieldInspector): """Provides conversions for ``RelatedField``\\ s.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if isinstance(field, serializers.ManyRelatedField): child_schema = self.probe_field_inspectors( field.child_relation, ChildSwaggerType, use_references ) return SwaggerType( type=openapi.TYPE_ARRAY, items=child_schema, unique_items=True, ) if not isinstance(field, serializers.RelatedField): return NotHandled field_queryset = getattr(field, "queryset", None) if isinstance( field, (serializers.PrimaryKeyRelatedField, serializers.SlugRelatedField) ): if getattr(field, "pk_field", ""): # a PrimaryKeyRelatedField can have a `pk_field` attribute which is a # serializer field that will convert the PK value result = self.probe_field_inspectors( field.pk_field, swagger_object_type, use_references, **kwargs ) # take the type, format, etc from `pk_field`, and the field-level # information like title, description, default from the # PrimaryKeyRelatedField return SwaggerType(existing_object=result) target_field = getattr(field, "slug_field", "pk") if field_queryset is not None: # if the RelatedField has a queryset, try to get the related model field # from there model, model_field = get_queryset_field(field_queryset, target_field) else: # if the RelatedField has no queryset (e.g. read only), try to find the # target model from the view queryset or ModelSerializer model, if # present parent_serializer = get_parent_serializer(field) serializer_meta = getattr(parent_serializer, "Meta", None) this_model = getattr(serializer_meta, "model", None) if not this_model: view_queryset = get_queryset_from_view(self.view, parent_serializer) this_model = getattr(view_queryset, "model", None) source = getattr(field, "source", "") or field.field_name if not source and isinstance( field.parent, serializers.ManyRelatedField ): source = field.parent.field_name model = get_related_model(this_model, source) model_field = get_model_field(model, target_field) attrs = get_basic_type_info(model_field) or {"type": DEFAULT_TYPE} return SwaggerType(**attrs) elif isinstance(field, serializers.HyperlinkedRelatedField): return SwaggerType(type=openapi.TYPE_STRING, format=openapi.FORMAT_URI) return NotHandled # pragma: no cover def find_regex(regex_field): """Given a ``Field``, look for a ``RegexValidator`` and try to extract its pattern and return it as a string. :param serializers.Field regex_field: the field instance :return: the extracted pattern, or ``None`` :rtype: str """ regex_validator = None for validator in regex_field.validators: if isinstance(validator, validators.RegexValidator): if ( isinstance(validator, validators.URLValidator) or validator == validators.validate_ipv4_address ): # skip the default url and IP regexes because they are complex and # unhelpful validate_ipv4_address is a RegexValidator instance in # Django 1.11 continue if regex_validator is not None: # bail if multiple validators are found - no obvious way to choose return None # pragma: no cover regex_validator = validator # regex_validator.regex should be a compiled re object... try: pattern = getattr(getattr(regex_validator, "regex", None), "pattern", None) except Exception: # pragma: no cover logger.warning( "failed to compile regex validator of " + str(regex_field), exc_info=True ) return None if pattern: # attempt some basic cleanup to remove regex constructs not supported by # JavaScript -- swagger uses javascript-style regexes # see https://github.com/swagger-api/swagger-editor/issues/1601 if pattern.endswith("\\Z") or pattern.endswith("\\z"): pattern = pattern[:-2] + "$" return pattern numeric_fields = ( serializers.IntegerField, serializers.FloatField, serializers.DecimalField, ) limit_validators = [ # minimum and maximum apply to numbers (validators.MinValueValidator, numeric_fields, "minimum", operator.__gt__), (validators.MaxValueValidator, numeric_fields, "maximum", operator.__lt__), # minLength and maxLength apply to strings ( validators.MinLengthValidator, serializers.CharField, "min_length", operator.__gt__, ), ( validators.MaxLengthValidator, serializers.CharField, "max_length", operator.__lt__, ), # minItems and maxItems apply to lists ( validators.MinLengthValidator, (serializers.ListField, serializers.ListSerializer), "min_items", operator.__gt__, ), ( validators.MaxLengthValidator, (serializers.ListField, serializers.ListSerializer), "max_items", operator.__lt__, ), ] def find_limits(field): """Given a ``Field``, look for min/max value/length validators and return appropriate limit validation attributes. :param serializers.Field field: the field instance :return: the extracted limits :rtype: dict """ limits = {} applicable_limits = [ (validator, attr, improves) for validator, field_class, attr, improves in limit_validators if isinstance(field, field_class) ] if isinstance(field, serializers.DecimalField) and not decimal_as_float(field): return limits for validator in field.validators: if not hasattr(validator, "limit_value"): continue limit_value = validator.limit_value if isinstance(limit_value, Decimal) and decimal_as_float(field): limit_value = float(limit_value) for validator_class, attr, improves in applicable_limits: if isinstance(validator, validator_class): if attr not in limits or improves(limit_value, limits[attr]): limits[attr] = limit_value if hasattr(field, "allow_blank") and not field.allow_blank: if limits.get("min_length", 0) < 1: limits["min_length"] = 1 return dict(sorted(limits.items())) def decimal_field_type(field): return openapi.TYPE_NUMBER if decimal_as_float(field) else openapi.TYPE_STRING model_field_to_basic_type = [ (models.AutoField, (openapi.TYPE_INTEGER, None)), (models.BinaryField, (openapi.TYPE_STRING, openapi.FORMAT_BINARY)), (models.BooleanField, (openapi.TYPE_BOOLEAN, None)), (models.DateTimeField, (openapi.TYPE_STRING, openapi.FORMAT_DATETIME)), (models.DateField, (openapi.TYPE_STRING, openapi.FORMAT_DATE)), (models.DecimalField, (decimal_field_type, openapi.FORMAT_DECIMAL)), (models.DurationField, (openapi.TYPE_STRING, None)), (models.FloatField, (openapi.TYPE_NUMBER, None)), (models.IntegerField, (openapi.TYPE_INTEGER, None)), (models.IPAddressField, (openapi.TYPE_STRING, openapi.FORMAT_IPV4)), (models.GenericIPAddressField, (openapi.TYPE_STRING, openapi.FORMAT_IPV6)), (models.SlugField, (openapi.TYPE_STRING, openapi.FORMAT_SLUG)), (models.TextField, (openapi.TYPE_STRING, None)), (models.TimeField, (openapi.TYPE_STRING, None)), (models.UUIDField, (openapi.TYPE_STRING, openapi.FORMAT_UUID)), (models.CharField, (openapi.TYPE_STRING, None)), ] ip_format = {"ipv4": openapi.FORMAT_IPV4, "ipv6": openapi.FORMAT_IPV6} serializer_field_to_basic_type = [ (serializers.EmailField, (openapi.TYPE_STRING, openapi.FORMAT_EMAIL)), (serializers.SlugField, (openapi.TYPE_STRING, openapi.FORMAT_SLUG)), (serializers.URLField, (openapi.TYPE_STRING, openapi.FORMAT_URI)), ( serializers.IPAddressField, (openapi.TYPE_STRING, lambda field: ip_format.get(field.protocol, None)), ), (serializers.UUIDField, (openapi.TYPE_STRING, openapi.FORMAT_UUID)), (serializers.RegexField, (openapi.TYPE_STRING, None)), (serializers.CharField, (openapi.TYPE_STRING, None)), (serializers.BooleanField, (openapi.TYPE_BOOLEAN, None)), (serializers.IntegerField, (openapi.TYPE_INTEGER, None)), (serializers.FloatField, (openapi.TYPE_NUMBER, None)), (serializers.DecimalField, (decimal_field_type, openapi.FORMAT_DECIMAL)), (serializers.DurationField, (openapi.TYPE_STRING, None)), (serializers.DateField, (openapi.TYPE_STRING, openapi.FORMAT_DATE)), (serializers.DateTimeField, (openapi.TYPE_STRING, openapi.FORMAT_DATETIME)), (serializers.ModelField, (openapi.TYPE_STRING, None)), ] if version.parse(drf_version) < version.parse("3.14.0"): model_field_to_basic_type.append( (models.NullBooleanField, (openapi.TYPE_BOOLEAN, None)) ) serializer_field_to_basic_type.append( (serializers.NullBooleanField, (openapi.TYPE_BOOLEAN, None)), ) basic_type_info = serializer_field_to_basic_type + model_field_to_basic_type def get_basic_type_info(field): """Given a serializer or model ``Field``, return its basic type information - ``type``, ``format``, ``pattern``, and any applicable min/max limit values. :param field: the field instance :return: the extracted attributes as a dictionary, or ``None`` if the field type is not known :rtype: dict """ if field is None: return None for field_class, type_format in basic_type_info: if isinstance(field, field_class): swagger_type, format = type_format if callable(swagger_type): swagger_type = swagger_type(field) if callable(format): format = format(field) break else: # pragma: no cover return None pattern = None if swagger_type == openapi.TYPE_STRING: pattern = find_regex(field) limits = find_limits(field) result = {"type": swagger_type, "format": format, "pattern": pattern} result.update(limits) result = filter_none(result) return result def decimal_return_type(): return ( openapi.TYPE_STRING if rest_framework_settings.COERCE_DECIMAL_TO_STRING else openapi.TYPE_NUMBER ) hinting_type_info = [ (bool, (openapi.TYPE_BOOLEAN, None)), (int, (openapi.TYPE_INTEGER, None)), (str, (openapi.TYPE_STRING, None)), (float, (openapi.TYPE_NUMBER, None)), (dict, (openapi.TYPE_OBJECT, None)), (Decimal, (decimal_return_type, openapi.FORMAT_DECIMAL)), (uuid.UUID, (openapi.TYPE_STRING, openapi.FORMAT_UUID)), (datetime.datetime, (openapi.TYPE_STRING, openapi.FORMAT_DATETIME)), (datetime.date, (openapi.TYPE_STRING, openapi.FORMAT_DATE)), ] if hasattr(typing, "get_args"): # python >=3.8 typing_get_args = typing.get_args typing_get_origin = typing.get_origin else: # python <3.8 def typing_get_args(tp): return getattr(tp, "__args__", ()) def typing_get_origin(tp): return getattr(tp, "__origin__", None) def inspect_collection_hint_class(hint_class): args = typing_get_args(hint_class) child_class = args[0] if args else str child_type_info = get_basic_type_info_from_hint(child_class) or { "type": DEFAULT_TYPE } return {"type": openapi.TYPE_ARRAY, "items": openapi.Items(**child_type_info)} hinting_type_info.extend( [((typing.Sequence, typing.AbstractSet), inspect_collection_hint_class)] + ([(typing.Any, (DEFAULT_TYPE, None))] if sys.version_info >= (3, 11) else []) ) def get_basic_type_info_from_hint(hint_class): """Given a class (eg from a SerializerMethodField's return type hint, return its basic type information - ``type``, ``format``, ``pattern``, and any applicable min/max limit values. :param hint_class: the class :return: the extracted attributes as a dictionary, or ``None`` if the field type is not known :rtype: dict """ if typing_get_origin(hint_class) in UNION_TYPES: # Optional is implemented as Union[T, None] filtered_types = [t for t in typing_get_args(hint_class) if t is not NoneType] if len(filtered_types) == 1: result = get_basic_type_info_from_hint(filtered_types[0]) if result: result["x-nullable"] = True return result return None # resolve the origin class if the class is generic resolved_class = typing_get_origin(hint_class) or hint_class # `typing.Any` is not represented as a class until Python 3.11 if sys.version_info < (3, 11) and resolved_class is typing.Any: return {"type": DEFAULT_TYPE} # bail out early if not inspect.isclass(resolved_class): return None for check_class, info in hinting_type_info: if issubclass(resolved_class, check_class): if callable(info): return info(hint_class) swagger_type, format = info if callable(swagger_type): swagger_type = swagger_type() return {"type": swagger_type, "format": format} return None class SerializerMethodFieldInspector(FieldInspector): """Provides conversion for SerializerMethodField, optionally using information from the swagger_serializer_method decorator. """ def field_to_swagger_object( # noqa: C901 self, field, swagger_object_type, use_references, **kwargs ): if not isinstance(field, serializers.SerializerMethodField): return NotHandled def method_path() -> str: return f"""{field.parent.__class__.__module__}.{ field.parent.__class__.__qualname__ }.{field.method_name}""" method = getattr(field.parent, field.method_name, None) if method is None: warnings.warn( f"SerializerMethodField method {method_path()} does not exist!" ) return NotHandled # attribute added by the swagger_serializer_method decorator serializer = getattr(method, "_swagger_serializer", None) if serializer: # in order of preference for description, use: # 1) field.help_text from SerializerMethodField(help_text) # 2) serializer.help_text from swagger_serializer_method(serializer) # 3) method's docstring description = field.help_text if description is None: description = getattr(serializer, "help_text", None) if description is None: description = method.__doc__ label = field.label if label is None: label = getattr(serializer, "label", None) if inspect.isclass(serializer): serializer_kwargs = { "help_text": description, "label": label, "read_only": True, } serializer = method._swagger_serializer(**serializer_kwargs) else: serializer.help_text = description serializer.label = label serializer.read_only = True return self.probe_field_inspectors( serializer, swagger_object_type, use_references, read_only=True ) else: # look for Python 3.5+ style type hinting of the return value annotations = {"return": typing.Any} return_annotation = inspect.signature(method).return_annotation try: if return_annotation is not inspect._empty: annotations = typing.get_type_hints(method) except NameError: # try handling forward references with Python 3.12 type parameters # (PEP-695), which are not defined in the module scope and will not # resolve if postponed evaluation of annotations (PEP-563) is enabled. localns = { t.__name__: t # include any class or method type parameters for scope in (field.parent, method) for t in getattr(scope, "__type_params__", ()) } module_name = field.parent.__module__ try: # bail if there are no type parameters or the module isn't loaded if not localns or module_name not in sys.modules: raise annotations = typing.get_type_hints( method, vars(sys.modules[module_name]), localns ) except NameError: warnings.warn( f"Cannot resolve return annotation: {return_annotation!r} " f"({method_path()}); Is this expression not imported, or only " "imported in a TYPE_CHECKING block? Use " "`swagger_serializer_method` to define the return type." ) hint_class = annotations.get("return") if hint_class is None: warnings.warn( f"{method_path()} has no return type annotation and is not " "decorated with `swagger_serializer_method`; " "Using `Any` as its return type." ) hint_class = typing.Any type_info = get_basic_type_info_from_hint(hint_class) if type_info is None: warnings.warn( f"Cannot coerce return annotation {return_annotation!r} from " f"{method_path()} to any valid type; Using `Any` as its return " "type. Use `swagger_serializer_method` to change this behavior." ) type_info = get_basic_type_info_from_hint(typing.Any) SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) return SwaggerType(**type_info) return NotHandled class SimpleFieldInspector(FieldInspector): """Provides conversions for fields which can be described using just ``type``, ``format``, ``pattern`` and min/max validators. """ def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): type_info = get_basic_type_info(field) if type_info is None: return NotHandled SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) return SwaggerType(**type_info) class ChoiceFieldInspector(FieldInspector): """Provides conversions for ``ChoiceField`` and ``MultipleChoiceField``.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if isinstance(field, serializers.ChoiceField): enum_type = openapi.TYPE_STRING enum_values = [] for choice in field.choices.keys(): if isinstance(field, serializers.MultipleChoiceField): choice = field_value_to_representation(field, [choice])[0] else: choice = field_value_to_representation(field, choice) enum_values.append(choice) # for ModelSerializer, try to infer the type from the associated model field serializer = get_parent_serializer(field) if isinstance(serializer, serializers.ModelSerializer): model = getattr(getattr(serializer, "Meta"), "model") # Use the parent source for nested fields model_field = get_model_field( model, field.source or field.parent.source ) # If the field has a base_field its type must be used if getattr(model_field, "base_field", None): model_field = model_field.base_field if model_field: model_type = get_basic_type_info(model_field) if model_type: enum_type = model_type.get("type", enum_type) else: # Try to infer field type based on enum values enum_value_types = {type(v) for v in enum_values} if len(enum_value_types) == 1: values_type = get_basic_type_info_from_hint( next(iter(enum_value_types)) ) if values_type: enum_type = values_type.get("type", enum_type) if isinstance(field, serializers.MultipleChoiceField): result = SwaggerType( type=openapi.TYPE_ARRAY, items=ChildSwaggerType(type=enum_type, enum=enum_values), ) if swagger_object_type == openapi.Parameter: if result["in"] in (openapi.IN_FORM, openapi.IN_QUERY): result.collection_format = "multi" else: result = SwaggerType(type=enum_type, enum=enum_values) return result return NotHandled class FileFieldInspector(FieldInspector): """Provides conversions for ``FileField``\\ s.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if isinstance(field, serializers.FileField): # swagger 2.0 does not support specifics about file fields, so ImageFile # gets no special treatment OpenAPI 3.0 does support it, so a future # implementation could handle this better err = SwaggerGenerationError( "FileField is supported only in a formData Parameter or response Schema" ) if swagger_object_type == openapi.Schema: # FileField.to_representation returns URL or file name result = SwaggerType(type=openapi.TYPE_STRING, read_only=True) if getattr( field, "use_url", rest_framework_settings.UPLOADED_FILES_USE_URL ): result.format = openapi.FORMAT_URI return result elif swagger_object_type == openapi.Parameter: param = SwaggerType(type=openapi.TYPE_FILE) if param["in"] != openapi.IN_FORM: raise err # pragma: no cover return param else: raise err # pragma: no cover return NotHandled class DictFieldInspector(FieldInspector): """Provides conversion for ``DictField``.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if ( isinstance(field, serializers.DictField) and swagger_object_type == openapi.Schema ): child_schema = self.probe_field_inspectors( field.child, ChildSwaggerType, use_references ) return SwaggerType( type=openapi.TYPE_OBJECT, additional_properties=child_schema ) return NotHandled class HiddenFieldInspector(FieldInspector): """Hide ``HiddenField``.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): if isinstance(field, serializers.HiddenField): return None return NotHandled class JSONFieldInspector(FieldInspector): """Provides conversion for ``JSONField``.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) if ( isinstance(field, serializers.JSONField) and swagger_object_type == openapi.Schema ): return SwaggerType(type=openapi.TYPE_OBJECT) return NotHandled class StringDefaultFieldInspector(FieldInspector): """For otherwise unhandled fields, return them as plain :data:`.TYPE_STRING` objects.""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): # pragma: no cover # TODO unhandled fields: TimeField SwaggerType, ChildSwaggerType = self._get_partial_types( field, swagger_object_type, use_references, **kwargs ) return SwaggerType(type=DEFAULT_TYPE) try: from djangorestframework_camel_case.parser import CamelCaseJSONParser from djangorestframework_camel_case.render import CamelCaseJSONRenderer, camelize except ImportError: # pragma: no cover CamelCaseJSONParser = CamelCaseJSONRenderer = None def camelize(data): return data class CamelCaseJSONFilter(FieldInspector): """Converts property names to camelCase if ``djangorestframework_camel_case`` is used.""" def camelize_string(self, s): """Hack to force ``djangorestframework_camel_case`` to camelize a plain string. :param str s: the string :return: camelized string :rtype: str """ return next(iter(camelize({s: ""}))) def camelize_schema(self, schema): """Recursively camelize property names for the given schema using ``djangorestframework_camel_case``. The target schema object must be modified in-place. :param openapi.Schema schema: the :class:`.Schema` object """ if getattr(schema, "properties", {}): schema.properties = { self.camelize_string(key): self.camelize_schema( openapi.resolve_ref(val, self.components) ) or val for key, val in schema.properties.items() } if getattr(schema, "required", []): schema.required = [self.camelize_string(p) for p in schema.required] def process_result(self, result, method_name, obj, **kwargs): if isinstance(result, openapi.Schema.OR_REF) and self.is_camel_case(): schema = openapi.resolve_ref(result, self.components) self.camelize_schema(schema) return result if CamelCaseJSONParser and CamelCaseJSONRenderer: def is_camel_case(self): return any( issubclass(parser, CamelCaseJSONParser) for parser in self.get_parser_classes() ) or any( issubclass(renderer, CamelCaseJSONRenderer) for renderer in self.get_renderer_classes() ) else: def is_camel_case(self): return False try: from rest_framework_recursive.fields import RecursiveField except ImportError: # pragma: no cover class RecursiveFieldInspector(FieldInspector): """Provides conversion for RecursiveField (https://github.com/heywbj/django-rest-framework-recursive)""" pass else: class RecursiveFieldInspector(FieldInspector): """Provides conversion for RecursiveField (https://github.com/heywbj/django-rest-framework-recursive)""" def field_to_swagger_object( self, field, swagger_object_type, use_references, **kwargs ): if ( isinstance(field, RecursiveField) and swagger_object_type == openapi.Schema ): assert use_references is True, ( "Can not create schema for RecursiveField when use_references is " "False" ) proxied = field.proxied if isinstance(field.proxied, serializers.ListSerializer): proxied = proxied.child ref_name = get_serializer_ref_name(proxied) assert ref_name is not None, ( "Can't create RecursiveField schema for inline " + str(type(proxied)) ) definitions = self.components.with_scope(openapi.SCHEMA_DEFINITIONS) ref = openapi.SchemaRef(definitions, ref_name, ignore_unresolved=True) if isinstance(field.proxied, serializers.ListSerializer): ref = openapi.Items(type=openapi.TYPE_ARRAY, items=ref) return ref return NotHandled drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/query.py000066400000000000000000000132141514731163200233300ustar00rootroot00000000000000from functools import wraps try: import coreschema except ImportError: coreschema = None from .. import openapi from ..utils import force_real_str from .base import FilterInspector, NotHandled, PaginatorInspector def ignore_assert_decorator(func): @wraps(func) def wrapper(*args, **kwargs): try: return func(*args, **kwargs) except AssertionError: return NotHandled return wrapper class DrfAPICompatInspector(PaginatorInspector, FilterInspector): def param_to_schema(self, param): return openapi.Parameter( name=param["name"], in_=param["in"], description=param.get("description"), required=param.get("required", False), **param["schema"], ) def get_paginator_parameters(self, paginator): if hasattr(paginator, "get_schema_operation_parameters"): return list( map( self.param_to_schema, paginator.get_schema_operation_parameters(self.view), ) ) return NotHandled def get_filter_parameters(self, filter_backend): if hasattr(filter_backend, "get_schema_operation_parameters"): return list( map( self.param_to_schema, filter_backend.get_schema_operation_parameters(self.view), ) ) if hasattr(filter_backend, "get_filterset_class"): return self.get_filter_backend_params(filter_backend) return NotHandled def get_filter_backend_params(self, filter_backend): filterset_class = filter_backend.get_filterset_class( self.view, self.view.queryset, ) if filterset_class is None: return NotHandled return [ openapi.Parameter( name=field_name, in_=openapi.IN_QUERY, required=field.extra.get("required", False), type=openapi.TYPE_STRING, description=str(field.label) if field.label else "", ) for field_name, field in filterset_class.base_filters.items() ] class CoreAPICompatInspector(PaginatorInspector, FilterInspector): """Converts ``coreapi.Field``\\ s to :class:`.openapi.Parameter`\\ s for filters and paginators that implement a ``get_schema_fields`` method. """ @ignore_assert_decorator def get_paginator_parameters(self, paginator): fields = [] if hasattr(paginator, "get_schema_fields"): fields = paginator.get_schema_fields(self.view) return [self.coreapi_field_to_parameter(field) for field in fields] @ignore_assert_decorator def get_filter_parameters(self, filter_backend): fields = [] if hasattr(filter_backend, "get_schema_fields"): fields = filter_backend.get_schema_fields(self.view) return [self.coreapi_field_to_parameter(field) for field in fields] def coreapi_field_to_parameter(self, field): """Convert an instance of `coreapi.Field` to a swagger :class:`.Parameter` object. :param coreapi.Field field: :rtype: openapi.Parameter """ location_to_in = { "query": openapi.IN_QUERY, "path": openapi.IN_PATH, "form": openapi.IN_FORM, "body": openapi.IN_FORM, } coreapi_types = { coreschema.Integer: openapi.TYPE_INTEGER, coreschema.Number: openapi.TYPE_NUMBER, coreschema.String: openapi.TYPE_STRING, coreschema.Boolean: openapi.TYPE_BOOLEAN, } coreschema_attrs = ["format", "pattern", "enum", "min_length", "max_length"] schema = field.schema return openapi.Parameter( name=field.name, in_=location_to_in[field.location], required=field.required, description=force_real_str(schema.description) if schema else None, type=coreapi_types.get(type(schema), openapi.TYPE_STRING), **{attr: getattr(schema, attr, None) for attr in coreschema_attrs}, ) class DjangoRestResponsePagination(PaginatorInspector): """Provides response schema pagination wrapping for django-rest-framework' LimitOffsetPagination, PageNumberPagination and CursorPagination """ def fix_paginated_property(self, key: str, value: dict): # Need to remove useless params from schema value.pop("example", None) if "nullable" in value: value["x-nullable"] = value.pop("nullable") if key in {"next", "previous"} and "format" not in value: value["format"] = "uri" return openapi.Schema(**value) def get_paginated_response(self, paginator, response_schema): if hasattr(paginator, "get_paginated_response_schema"): paginator_schema = paginator.get_paginated_response_schema(response_schema) if paginator_schema["type"] == openapi.TYPE_OBJECT: properties = { k: self.fix_paginated_property(k, v) for k, v in paginator_schema.pop("properties").items() } if "required" not in paginator_schema: paginator_schema.setdefault("required", []) for prop in ("count", "results"): if prop in properties: paginator_schema["required"].append(prop) return openapi.Schema(**paginator_schema, properties=properties) else: return openapi.Schema(**paginator_schema) return response_schema drf-yasg-nonfree-1.21.15/src/drf_yasg/inspectors/view.py000066400000000000000000000440311514731163200231360ustar00rootroot00000000000000import logging from rest_framework.request import is_form_media_type from rest_framework.schemas import AutoSchema from rest_framework.status import is_success from .. import openapi from ..errors import SwaggerGenerationError from ..utils import ( filter_none, force_real_str, force_serializer_instance, get_consumes, get_produces, guess_response_status, merge_params, no_body, param_list_to_dict, ) from .base import ViewInspector, call_view_method logger = logging.getLogger(__name__) class SwaggerAutoSchema(ViewInspector): def __init__( self, view, path, method, components, request, overrides, operation_keys=None ): super(SwaggerAutoSchema, self).__init__( view, path, method, components, request, overrides ) self._sch = AutoSchema() self._sch.view = view self.operation_keys = operation_keys def get_operation(self, operation_keys=None): operation_keys = operation_keys or self.operation_keys consumes = self.get_consumes() produces = self.get_produces() body = self.get_request_body_parameters(consumes) query = self.get_query_parameters() parameters = body + query parameters = filter_none(parameters) parameters = self.add_manual_parameters(parameters) operation_id = self.get_operation_id(operation_keys) summary, description = self.get_summary_and_description() security = self.get_security() assert security is None or isinstance(security, list), ( "security must be a list of security requirement objects" ) deprecated = self.is_deprecated() tags = self.get_tags(operation_keys) responses = self.get_responses() return openapi.Operation( operation_id=operation_id, description=force_real_str(description), summary=force_real_str(summary), responses=responses, parameters=parameters, consumes=consumes, produces=produces, tags=tags, security=security, deprecated=deprecated, ) def get_request_body_parameters(self, consumes): """Return the request body parameters for this view. |br| This is either: - a list with a single object Parameter with a :class:`.Schema` derived from the request serializer - a list of primitive Parameters parsed as form data :param list[str] consumes: a list of accepted MIME types as returned by :meth:`.get_consumes` :return: a (potentially empty) list of :class:`.Parameter`\\ s either ``in: body`` or ``in: formData`` :rtype: list[openapi.Parameter] """ serializer = self.get_request_serializer() schema = None if serializer is None: return [] if isinstance(serializer, openapi.Schema.OR_REF): schema = serializer if any(is_form_media_type(encoding) for encoding in consumes): if schema is not None: raise SwaggerGenerationError("form request body cannot be a Schema") return self.get_request_form_parameters(serializer) else: if schema is None: schema = self.get_request_body_schema(serializer) return [self.make_body_parameter(schema)] if schema is not None else [] def get_view_serializer(self): """Return the serializer as defined by the view's ``get_serializer()`` method. :return: the view's ``Serializer`` :rtype: rest_framework.serializers.Serializer """ return call_view_method(self.view, "get_serializer") def _get_request_body_override(self): """Parse the request_body key in the override dict. This method is not public API.""" body_override = self.overrides.get("request_body", None) if body_override is not None: if body_override is no_body: return no_body if self.method not in self.body_methods: raise SwaggerGenerationError( "request_body can only be applied to (" + ",".join(self.body_methods) + "); are you looking for query_serializer or manual_parameters?" ) if isinstance(body_override, openapi.Schema.OR_REF): return body_override return force_serializer_instance(body_override) return body_override def get_request_serializer(self): """Return the request serializer (used for parsing the request payload) for this endpoint. :return: the request serializer, or one of :class:`.Schema`, :class:`.SchemaRef`, ``None`` :rtype: rest_framework.serializers.Serializer """ body_override = self._get_request_body_override() if body_override is None and self.method in self.implicit_body_methods: return self.get_view_serializer() if body_override is no_body: return None return body_override def get_request_form_parameters(self, serializer): """Given a Serializer, return a list of ``in: formData`` :class:`.Parameter`\\ s. :param serializer: the view's request serializer as returned by :meth:`.get_request_serializer` :rtype: list[openapi.Parameter] """ return self.serializer_to_parameters(serializer, in_=openapi.IN_FORM) def get_request_body_schema(self, serializer): """Return the :class:`.Schema` for a given request's body data. Only applies to PUT, PATCH and POST requests. :param serializer: the view's request serializer as returned by :meth:`.get_request_serializer` :rtype: openapi.Schema """ return self.serializer_to_schema(serializer) def make_body_parameter(self, schema): """Given a :class:`.Schema` object, create an ``in: body`` :class:`.Parameter`. :param openapi.Schema schema: the request body schema :rtype: openapi.Parameter """ return openapi.Parameter( name="data", in_=openapi.IN_BODY, required=True, schema=schema ) def add_manual_parameters(self, parameters): """Add/replace parameters from the given list of automatically generated request parameters. :param list[openapi.Parameter] parameters: generated parameters :return: modified parameters :rtype: list[openapi.Parameter] """ manual_parameters = self.overrides.get("manual_parameters", None) or [] if any( param.in_ == openapi.IN_BODY for param in manual_parameters ): # pragma: no cover raise SwaggerGenerationError( "specify the body parameter as a Schema or Serializer in request_body" ) if any( param.in_ == openapi.IN_FORM for param in manual_parameters ): # pragma: no cover has_body_parameter = any( param.in_ == openapi.IN_BODY for param in parameters ) if has_body_parameter or not any( is_form_media_type(encoding) for encoding in self.get_consumes() ): raise SwaggerGenerationError( "cannot add form parameters when the request has a request body; " "did you forget to set an appropriate parser class on the view?" ) if self.method not in self.body_methods: raise SwaggerGenerationError( "form parameters can only be applied to " "(" + ",".join(self.body_methods) + ") HTTP methods" ) return merge_params(parameters, manual_parameters) def get_responses(self): """Get the possible responses for this view as a swagger :class:`.Responses` object. :return: the documented responses :rtype: openapi.Responses """ response_serializers = self.get_response_serializers() return openapi.Responses( responses=self.get_response_schemas(response_serializers) ) def get_default_response_serializer(self): """Return the default response serializer for this endpoint. This is derived from either the ``request_body`` override or the request serializer (:meth:`.get_view_serializer`). :return: response serializer, :class:`.Schema`, :class:`.SchemaRef`, ``None`` """ body_override = self._get_request_body_override() if body_override and body_override is not no_body: return body_override return self.get_view_serializer() def get_default_responses(self): """Get the default responses determined for this view from the request serializer and request method. :type: dict[str, openapi.Schema] """ method = self.method.lower() default_status = guess_response_status(method) default_schema = "" if method in ("get", "post", "put", "patch"): default_schema = self.get_default_response_serializer() default_schema = default_schema or "" if default_schema and not isinstance(default_schema, openapi.Schema): default_schema = self.serializer_to_schema(default_schema) or "" if default_schema: if self.has_list_response(): default_schema = openapi.Schema( type=openapi.TYPE_ARRAY, items=default_schema ) if self.should_page(): default_schema = ( self.get_paginated_response(default_schema) or default_schema ) return {str(default_status): default_schema} def get_response_serializers(self): """Return the response codes that this view is expected to return, and the serializer for each response body. The return value should be a dict where the keys are possible status codes, and values are either strings, ``Serializer``\\ s, :class:`.Schema`, :class:`.SchemaRef` or :class:`.Response` objects. See :func:`@swagger_auto_schema <.swagger_auto_schema>` for more details. :return: the response serializers :rtype: dict """ manual_responses = self.overrides.get("responses", None) or {} manual_responses = {str(sc): resp for sc, resp in manual_responses.items()} responses = {} if not any(is_success(int(sc)) for sc in manual_responses if sc != "default"): responses = self.get_default_responses() responses.update((str(sc), resp) for sc, resp in manual_responses.items()) return responses def get_response_schemas(self, response_serializers): """Return the :class:`.openapi.Response` objects calculated for this view. :param dict response_serializers: response serializers as returned by :meth:`.get_response_serializers` :return: a dictionary of status code to :class:`.Response` object :rtype: dict[str, openapi.Response] """ responses = {} for sc, serializer in response_serializers.items(): if isinstance(serializer, str): response = openapi.Response(description=force_real_str(serializer)) elif not serializer: continue elif isinstance(serializer, openapi.Response): response = serializer if hasattr(response, "schema") and not isinstance( response.schema, openapi.Schema.OR_REF ): serializer = force_serializer_instance(response.schema) response.schema = self.serializer_to_schema(serializer) elif isinstance(serializer, openapi.Schema.OR_REF): response = openapi.Response( description="", schema=serializer, ) elif isinstance(serializer, openapi._Ref): response = serializer else: serializer = force_serializer_instance(serializer) response = openapi.Response( description="", schema=self.serializer_to_schema(serializer), ) responses[str(sc)] = response return responses def get_query_serializer(self): """Return the query serializer (used for parsing query parameters) for this endpoint. :return: the query serializer, or ``None`` """ query_serializer = self.overrides.get("query_serializer", None) if query_serializer is not None: query_serializer = force_serializer_instance(query_serializer) return query_serializer def get_query_parameters(self): """Return the query parameters accepted by this view. :rtype: list[openapi.Parameter] """ natural_parameters = ( self.get_filter_parameters() + self.get_pagination_parameters() ) query_serializer = self.get_query_serializer() serializer_parameters = [] if query_serializer is not None: serializer_parameters = self.serializer_to_parameters( query_serializer, in_=openapi.IN_QUERY ) if ( len( set(param_list_to_dict(natural_parameters)) & set(param_list_to_dict(serializer_parameters)) ) != 0 ): raise SwaggerGenerationError( "your query_serializer contains fields that conflict with the " "filter_backend or paginator_class on the view - %s %s" % (self.method, self.path) ) return natural_parameters + serializer_parameters def get_operation_id(self, operation_keys=None): """Return an unique ID for this operation. The ID must be unique across all :class:`.Operation` objects in the API. :param tuple[str] operation_keys: an array of keys derived from the path describing the hierarchical layout of this view in the API; e.g. ``('snippets', 'list')``, ``('snippets', 'retrieve')``, etc. :rtype: str """ operation_keys = operation_keys or self.operation_keys operation_id = self.overrides.get("operation_id", "") if not operation_id: operation_id = "_".join(operation_keys) return operation_id def split_summary_from_description(self, description): """Decide if and how to split a summary out of the given description. The default implementation uses the first paragraph of the description as a summary if it is less than 120 characters long. :param description: the full description to be analyzed :return: summary and description :rtype: (str,str) """ # https://www.python.org/dev/peps/pep-0257/#multi-line-docstrings summary = None summary_max_len = ( 120 # OpenAPI 2.0 spec says summary should be under 120 characters ) sections = description.split("\n\n", 1) if len(sections) == 2: sections[0] = sections[0].strip() if len(sections[0]) < summary_max_len: summary, description = sections description = description.strip() return summary, description def get_summary_and_description(self): """Return an operation summary and description determined from the view's docstring. :return: summary and description :rtype: (str,str) """ description = self.overrides.get("operation_description", None) summary = self.overrides.get("operation_summary", None) if description is None: description = self._sch.get_description(self.path, self.method) or "" description = description.strip().replace("\r", "") if description and (summary is None): # description from docstring... do summary magic summary, description = self.split_summary_from_description(description) return summary, description def get_security(self): """Return a list of security requirements for this operation. Returning an empty list marks the endpoint as unauthenticated (i.e. removes all accepted authentication schemes). Returning ``None`` will inherit the top-level security requirements. :return: security requirements :rtype: list[dict[str,list[str]]]""" return self.overrides.get("security", None) def is_deprecated(self): """Return ``True`` if this operation is to be marked as deprecated. :return: deprecation status :rtype: bool """ return self.overrides.get("deprecated", None) def get_tags(self, operation_keys=None): """Get a list of tags for this operation. Tags determine how operations relate with each other, and in the UI each tag will show as a group containing the operations that use it. If not provided in overrides, tags will be inferred from the operation url. :param tuple[str] operation_keys: an array of keys derived from the path describing the hierarchical layout of this view in the API; e.g. ``('snippets', 'list')``, ``('snippets', 'retrieve')``, etc. :rtype: list[str] """ operation_keys = operation_keys or self.operation_keys tags = self.overrides.get("tags") if not tags: tags = [operation_keys[0]] return tags def get_consumes(self): """Return the MIME types this endpoint can consume. :rtype: list[str] """ return self.overrides.get("consumes") or get_consumes(self.get_parser_classes()) def get_produces(self): """Return the MIME types this endpoint can produce. :rtype: list[str] """ return self.overrides.get("produces") or get_produces( self.get_renderer_classes() ) drf-yasg-nonfree-1.21.15/src/drf_yasg/management/000077500000000000000000000000001514731163200215335ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/management/__init__.py000066400000000000000000000000001514731163200236320ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/management/commands/000077500000000000000000000000001514731163200233345ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/management/commands/__init__.py000066400000000000000000000000001514731163200254330ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/management/commands/generate_swagger.py000066400000000000000000000154651514731163200272320ustar00rootroot00000000000000import logging import os from django.contrib.auth import get_user_model from django.core.exceptions import ImproperlyConfigured from django.core.management.base import BaseCommand from django.utils.module_loading import import_string from rest_framework.settings import api_settings from rest_framework.test import APIRequestFactory, force_authenticate from rest_framework.views import APIView from ... import openapi from ...app_settings import swagger_settings from ...codecs import OpenAPICodecJson, OpenAPICodecYaml class Command(BaseCommand): help = "Write the Swagger schema to disk in JSON or YAML format." def add_arguments(self, parser): parser.add_argument( "output_file", metavar="output-file", nargs="?", default="-", type=str, help='Output path for generated swagger document, or "-" for stdout.', ) parser.add_argument( "-o", "--overwrite", default=False, action="store_true", help="Overwrite the output file if it already exists. " "Default behavior is to stop if the output file exists.", ) parser.add_argument( "-f", "--format", dest="format", default="", choices=["json", "yaml"], type=str, help="Output format. If not given, it is guessed from the output file " "extension and defaults to json.", ) parser.add_argument( "-u", "--url", dest="api_url", default="", type=str, help="Base API URL - sets the host and scheme attributes of the generated " "document.", ) parser.add_argument( "-m", "--mock-request", dest="mock", default=False, action="store_true", help="Use a mock request when generating the swagger schema. This is " "useful if your views or serializers depend on context from a request in " "order to function.", ) parser.add_argument( "--api-version", dest="api_version", type=str, help="Version to use to generate schema. This option implies " "--mock-request.", ) parser.add_argument( "--user", dest="user", help="Username of an existing user to use for mocked authentication. This " "option implies --mock-request.", ) parser.add_argument( "-p", "--private", default=False, action="store_true", help="Hides endpoints not accessible to the target user. If --user is not " "given, only shows endpoints that are accessible to unauthenticated users." "\n" "This has the same effect as passing public=False to get_schema_view() or " "OpenAPISchemaGenerator.get_schema().\n" "This option implies --mock-request.", ) parser.add_argument( "-g", "--generator-class", dest="generator_class_name", default="", help="Import string pointing to an OpenAPISchemaGenerator subclass to use " "for schema generation.", ) def write_schema(self, schema, stream, format): if format == "json": codec = OpenAPICodecJson(validators=[], pretty=True) swagger_json = codec.encode(schema).decode("utf-8") stream.write(swagger_json) elif format == "yaml": codec = OpenAPICodecYaml(validators=[]) swagger_yaml = codec.encode(schema).decode("utf-8") # YAML is already pretty! stream.write(swagger_yaml) else: # pragma: no cover raise ValueError("unknown format %s" % format) def get_mock_request(self, url, format, user=None): factory = APIRequestFactory() request = factory.get(url + "/swagger." + format) if user is not None: force_authenticate(request, user=user) request = APIView().initialize_request(request) return request def get_schema_generator( self, generator_class_name, api_info, api_version, api_url ): generator_class = swagger_settings.DEFAULT_GENERATOR_CLASS if generator_class_name: generator_class = import_string(generator_class_name) return generator_class( info=api_info, version=api_version, url=api_url, ) def get_schema(self, generator, request, public): return generator.get_schema(request=request, public=public) def handle( self, output_file, overwrite, format, api_url, mock, api_version, user, private, generator_class_name, *args, **kwargs, ): # disable logs of WARNING and below logging.disable(logging.WARNING) info = getattr(swagger_settings, "DEFAULT_INFO", None) if not isinstance(info, openapi.Info): raise ImproperlyConfigured( 'settings.SWAGGER_SETTINGS["DEFAULT_INFO"] should be an ' "import string pointing to an openapi.Info object" ) if not format: if os.path.splitext(output_file)[1] in (".yml", ".yaml"): format = "yaml" format = format or "json" api_url = api_url or swagger_settings.DEFAULT_API_URL if user: # Only call get_user_model if --user was passed in order to # avoid crashing if auth is not configured in the project user = get_user_model().objects.get( **{get_user_model().USERNAME_FIELD: user} ) mock = mock or private or (user is not None) or (api_version is not None) if mock and not api_url: raise ImproperlyConfigured( "--mock-request requires an API url; either provide " "the --url argument or set the DEFAULT_API_URL setting" ) request = None if mock: request = self.get_mock_request(api_url, format, user) api_version = api_version or api_settings.DEFAULT_VERSION if request and api_version: request.version = api_version generator = self.get_schema_generator( generator_class_name, info, api_version, api_url ) schema = self.get_schema(generator, request, not private) if output_file == "-": self.write_schema(schema, self.stdout, format) else: flags = "w" if overwrite else "x" with open(output_file, flags) as stream: self.write_schema(schema, stream, format) drf-yasg-nonfree-1.21.15/src/drf_yasg/middleware.py000066400000000000000000000014371514731163200221130ustar00rootroot00000000000000from django.http import HttpResponse from .codecs import _OpenAPICodec from .errors import SwaggerValidationError class SwaggerExceptionMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): return self.get_response(request) def process_exception(self, request, exception): if isinstance(exception, SwaggerValidationError): err = {"errors": exception.errors, "message": str(exception)} codec = exception.source_codec if isinstance(codec, _OpenAPICodec): err = codec.encode_error(err) content_type = codec.media_type return HttpResponse(err, status=500, content_type=content_type) return None # pragma: no cover drf-yasg-nonfree-1.21.15/src/drf_yasg/openapi.py000066400000000000000000000773461514731163200214450ustar00rootroot00000000000000import enum import logging import re import urllib.parse as urlparse import warnings from collections import abc as collections_abc from django.urls import get_script_prefix from django.utils.functional import Promise from inflection import camelize from .utils import filter_none, force_real_str logger = logging.getLogger(__name__) TYPE_OBJECT = "object" #: TYPE_STRING = "string" #: TYPE_NUMBER = "number" #: TYPE_INTEGER = "integer" #: TYPE_BOOLEAN = "boolean" #: TYPE_ARRAY = "array" #: TYPE_FILE = "file" #: # officially supported by Swagger 2.0 spec FORMAT_DATE = "date" #: FORMAT_DATETIME = "date-time" #: FORMAT_PASSWORD = "password" #: FORMAT_BINARY = "binary" #: FORMAT_BASE64 = "bytes" #: FORMAT_FLOAT = "float" #: FORMAT_DOUBLE = "double" #: FORMAT_INT32 = "int32" #: FORMAT_INT64 = "int64" #: # defined in JSON-schema FORMAT_EMAIL = "email" #: FORMAT_IPV4 = "ipv4" #: FORMAT_IPV6 = "ipv6" #: FORMAT_URI = "uri" #: # pulled out of my ass FORMAT_UUID = "uuid" #: FORMAT_SLUG = "slug" #: FORMAT_DECIMAL = "decimal" IN_BODY = "body" #: IN_PATH = "path" #: IN_QUERY = "query" #: IN_FORM = "formData" #: IN_HEADER = "header" #: SCHEMA_DEFINITIONS = "definitions" #: def make_swagger_name(attribute_name): """ Convert a python variable name into a Swagger spec attribute name. In particular, * if name starts with ``x_``, return ``x-{camelCase}`` * if name is ``ref``, return ``$ref`` * else return the name converted to camelCase, with trailing underscores stripped :param str attribute_name: python attribute name :return: swagger name """ if attribute_name == "ref": return "$ref" if attribute_name.startswith("x_"): return "x-" + camelize(attribute_name[2:], uppercase_first_letter=False) return camelize(attribute_name.rstrip("_"), uppercase_first_letter=False) def _bare_SwaggerDict(cls): assert issubclass(cls, SwaggerDict) result = cls.__new__(cls) dict.__init__(result) # no __init__ called for SwaggerDict subclasses! return result class SwaggerDict(dict): """A particular type of dict, which maps all attribute accesses to dict lookups using :func:`.make_swagger_name`. Attribute names starting with ``_`` are set on the object as-is and are not included in the specification output. Used as a base class for all Swagger helper models. """ def __init__(self, **attrs): super(SwaggerDict, self).__init__() self._extras__ = attrs if type(self) is SwaggerDict: self._insert_extras__() def __setattr__(self, key, value): if key.startswith("_"): super(SwaggerDict, self).__setattr__(key, value) return if value is not None: self[make_swagger_name(key)] = value def __getattr__(self, item): if item.startswith("_"): raise AttributeError try: return self[make_swagger_name(item)] except KeyError: # raise_from is EXTREMELY slow, replaced with plain raise raise AttributeError( "object of class " + type(self).__name__ + " has no attribute " + item ) def __delattr__(self, item): if item.startswith("_"): super(SwaggerDict, self).__delattr__(item) return del self[make_swagger_name(item)] def _insert_extras__(self): """ From an ordering perspective, it is desired that extra attributes such as vendor extensions stay at the bottom of the object. However, python2.7's OrderedDict craps out if you try to insert into it before calling init. This means that subclasses must call super().__init__ as the first statement of their own __init__, which would result in the extra attributes being added first. For this reason, we defer the insertion of the attributes and require that subclasses call ._insert_extras__ at the end of their __init__ method. """ for attr, val in sorted(self._extras__.items()): setattr(self, attr, val) @staticmethod def _as_dict(obj, memo): """Implementation detail of :meth:`.as_dict`""" if id(obj) in memo: return memo[id(obj)] if isinstance(obj, Promise) and hasattr(obj, "_proxy____cast"): # handle __proxy__ objects from django.utils.functional.lazy obj = obj._proxy____cast() if isinstance(obj, collections_abc.Mapping): result = {} memo[id(obj)] = result items = obj.items() if not isinstance(obj, dict): items = sorted(items) for attr, val in items: result[SwaggerDict._as_dict(attr, memo)] = SwaggerDict._as_dict( val, memo ) return result elif isinstance(obj, str): return force_real_str(obj) elif isinstance(obj, collections_abc.Iterable) and not isinstance( obj, collections_abc.Iterator ): return type(obj)(SwaggerDict._as_dict(elem, memo) for elem in obj) elif isinstance(obj, enum.Enum): return obj.value return obj def as_dict(self): """Convert this object into an ``dict`` instance. :rtype: dict """ return SwaggerDict._as_dict(self, {}) def as_odict(self): warnings.warn("as_odict has been renamed to as_dict", DeprecationWarning) return self.as_dict() def __reduce__(self): # for pickle support; this skips calls to all SwaggerDict __init__ methods and # relies on the already set attributes instead attrs = {k: v for k, v in vars(self).items() if not k.startswith("_NP_")} return _bare_SwaggerDict, (type(self),), attrs, None, iter(self.items()) class Contact(SwaggerDict): def __init__(self, name=None, url=None, email=None, **extra): """Swagger Contact object At least one of the following fields is required: :param str name: contact name :param str url: contact url :param str email: contact e-mail """ super(Contact, self).__init__(**extra) if name is None and url is None and email is None: raise AssertionError( "one of name, url or email is requires for Swagger Contact object" ) self.name = name self.url = url self.email = email self._insert_extras__() class License(SwaggerDict): def __init__(self, name, url=None, **extra): """Swagger License object :param str name: Required. License name :param str url: link to detailed license information """ super(License, self).__init__(**extra) if name is None: raise AssertionError("name is required for Swagger License object") self.name = name self.url = url self._insert_extras__() class Info(SwaggerDict): def __init__( self, title, default_version, description=None, terms_of_service=None, contact=None, license=None, **extra, ): """Swagger Info object :param str title: Required. API title. :param str default_version: Required. API version string (not to be confused with Swagger spec version) :param str description: API description; markdown supported :param str terms_of_service: API terms of service; should be a URL :param Contact contact: contact object :param License license: license object """ super(Info, self).__init__(**extra) if title is None or default_version is None: raise AssertionError( "title and version are required for Swagger info object" ) if contact is not None and not isinstance(contact, Contact): raise AssertionError("contact must be a Contact object") if license is not None and not isinstance(license, License): raise AssertionError("license must be a License object") self.title = title self._default_version = default_version self.description = description self.terms_of_service = terms_of_service self.contact = contact self.license = license self._insert_extras__() class Swagger(SwaggerDict): def __init__( self, info=None, _url=None, _prefix=None, _version=None, consumes=None, produces=None, security_definitions=None, security=None, paths=None, definitions=None, **extra, ): """Root Swagger object. :param Info info: info object :param str _url: URL used for setting the API host and scheme :param str _prefix: api path prefix to use in setting basePath; this will be appended to the wsgi SCRIPT_NAME prefix or Django's FORCE_SCRIPT_NAME if applicable :param str _version: version string to override Info :param dict[str,dict] security_definitions: list of supported authentication mechanisms :param list[dict[str,list[str]]] security: authentication mechanisms accepted globally :param list[str] consumes: consumed MIME types; can be overridden in Operation :param list[str] produces: produced MIME types; can be overridden in Operation :param Paths paths: paths object :param dict[str,Schema] definitions: named models """ super(Swagger, self).__init__(**extra) self.swagger = "2.0" self.info = info self.info.version = _version or info._default_version if _url: url = urlparse.urlparse(_url) assert url.netloc and url.scheme, ( "if given, url must have both schema and netloc" ) self.host = url.netloc self.schemes = [url.scheme] self.base_path = self.get_base_path(get_script_prefix(), _prefix) self.consumes = consumes self.produces = produces self.security_definitions = filter_none(security_definitions) self.security = filter_none(security) self.paths = paths self.definitions = filter_none(definitions) self._insert_extras__() @classmethod def get_base_path(cls, script_prefix, api_prefix): """Determine an appropriate value for ``basePath`` based on the SCRIPT_NAME and the api common prefix. :param str script_prefix: script prefix as defined by django ``get_script_prefix`` :param str api_prefix: api common prefix :return: joined base path """ # avoid double slash when joining script_name with api_prefix if script_prefix and script_prefix.endswith("/"): script_prefix = script_prefix[:-1] if not api_prefix.startswith("/"): api_prefix = "/" + api_prefix base_path = script_prefix + api_prefix # ensure that the base path has a leading slash and no trailing slash if base_path and base_path.endswith("/"): base_path = base_path[:-1] if not base_path.startswith("/"): base_path = "/" + base_path return base_path class Paths(SwaggerDict): def __init__(self, paths, **extra): """A listing of all the paths in the API. :param dict[str,PathItem] paths: """ super(Paths, self).__init__(**extra) for path, path_obj in paths.items(): assert path.startswith("/") if path_obj is not None: # pragma: no cover self[path] = path_obj self._insert_extras__() class PathItem(SwaggerDict): OPERATION_NAMES = ["get", "put", "post", "delete", "options", "head", "patch"] def __init__( self, get=None, put=None, post=None, delete=None, options=None, head=None, patch=None, parameters=None, **extra, ): """Information about a single path :param Operation get: operation for GET :param Operation put: operation for PUT :param Operation post: operation for POST :param Operation delete: operation for DELETE :param Operation options: operation for OPTIONS :param Operation head: operation for HEAD :param Operation patch: operation for PATCH :param list[Parameter] parameters: parameters that apply to all operations """ super(PathItem, self).__init__(**extra) self.get = get self.head = head self.post = post self.put = put self.patch = patch self.delete = delete self.options = options self.parameters = filter_none(parameters) self._insert_extras__() @property def operations(self): """A list of all standard Operations on this PathItem object. See :attr:`.OPERATION_NAMES`. :return: list of (method name, Operation) tuples :rtype: list[tuple[str,Operation]] """ return [(k, v) for k, v in self.items() if k in PathItem.OPERATION_NAMES and v] class Operation(SwaggerDict): def __init__( self, operation_id, responses, parameters=None, consumes=None, produces=None, summary=None, description=None, tags=None, security=None, **extra, ): """Information about an API operation (path + http method combination) :param str operation_id: operation ID, should be unique across all operations :param Responses responses: responses returned :param list[Parameter] parameters: parameters accepted :param list[str] consumes: content types accepted :param list[str] produces: content types produced :param str summary: operation summary; should be < 120 characters :param str description: operation description; can be of any length and supports markdown :param list[str] tags: operation tags :param list[dict[str,list[str]]] security: list of security requirements """ super(Operation, self).__init__(**extra) self.operation_id = operation_id self.summary = summary self.description = description self.parameters = filter_none(parameters) self.responses = responses self.consumes = filter_none(consumes) self.produces = filter_none(produces) self.tags = filter_none(tags) self.security = filter_none(security) self._insert_extras__() def _check_type(type, format, enum, pattern, items, _obj_type): if items and type != TYPE_ARRAY: raise AssertionError("items can only be used when type is array") if type == TYPE_ARRAY and not items: raise AssertionError("TYPE_ARRAY requires the items attribute") if pattern and type != TYPE_STRING: raise AssertionError("pattern can only be used when type is string") if (format or enum or pattern) and type in (TYPE_OBJECT, TYPE_ARRAY, None): raise AssertionError( "[format, enum, pattern] can only be applied to primitive " + _obj_type ) class Items(SwaggerDict): def __init__( self, type=None, format=None, enum=None, pattern=None, items=None, **extra ): """Used when defining an array :class:`.Parameter` to describe the array elements. :param str type: type of the array elements; must not be ``object`` :param str format: value format, see OpenAPI spec :param list enum: restrict possible values :param str pattern: pattern if type is ``string`` :param Items items: only valid if `type` is ``array`` """ super(Items, self).__init__(**extra) assert type is not None, "type is required!" self.type = type self.format = format self.enum = enum self.pattern = pattern self.items_ = items self._insert_extras__() _check_type(type, format, enum, pattern, items, self.__class__) class Parameter(SwaggerDict): def __init__( self, name, in_, description=None, required=None, schema=None, type=None, format=None, enum=None, pattern=None, items=None, default=None, **extra, ): """Describe parameters accepted by an :class:`.Operation`. Each parameter should be a unique combination of (`name`, `in_`). ``body`` and ``form`` parameters in the same operation are mutually exclusive. :param str name: parameter name :param str in_: parameter location :param str description: parameter description :param bool required: whether the parameter is required for the operation :param schema: required if `in_` is ``body`` :type schema: Schema or SchemaRef :param str type: parameter type; required if `in_` is not ``body``; must not be ``object`` :param str format: value format, see OpenAPI spec :param list enum: restrict possible values :param str pattern: pattern if type is ``string`` :param Items items: only valid if `type` is ``array`` :param default: default value if the parameter is not provided; must conform to parameter type """ super(Parameter, self).__init__(**extra) self.name = name self.in_ = in_ self.description = description self.required = required self.schema = schema self.type = type self.format = format self.enum = enum self.pattern = pattern self.items_ = items self.default = default self._insert_extras__() if (not schema and not type) or (schema and type): raise AssertionError( "either schema or type are required for Parameter object (not both)!" ) if schema and isinstance(schema, Schema): schema._remove_read_only() if self["in"] == IN_PATH: # path parameters must always be required assert required is not False, "path parameter cannot be optional" self.required = True if self["in"] != IN_BODY and schema is not None: raise AssertionError( "schema can only be applied to a body Parameter, not %s" % type ) if default and not type: raise AssertionError("default can only be applied to a non-body Parameter") _check_type(type, format, enum, pattern, items, self.__class__) class Schema(SwaggerDict): #: useful for type-checking, e.g ``isinstance(obj, openapi.Schema.OR_REF)`` OR_REF = () def __init__( self, title=None, description=None, type=None, format=None, enum=None, pattern=None, properties=None, additional_properties=None, required=None, items=None, default=None, read_only=None, **extra, ): """Describes a complex object accepted as parameter or returned as a response. :param str title: schema title :param str description: schema description :param str type: value type; required :param str format: value format, see OpenAPI spec :param list enum: restrict possible values :param str pattern: pattern if type is ``string`` :param properties: object properties; required if `type` is ``object`` :type properties: dict[str,Schema or SchemaRef] :param additional_properties: allow wildcard properties not listed in `properties` :type additional_properties: bool or Schema or SchemaRef :param list[str] required: list of required property names :param items: type of array items, only valid if `type` is ``array`` :type items: Schema or SchemaRef :param default: only valid when insider another ``Schema``\\ 's ``properties``; the default value of this property if it is not provided, must conform to the type of this Schema :param read_only: only valid when insider another ``Schema``\\ 's ``properties``; declares the property as read only - it must only be sent as part of responses, never in requests """ super(Schema, self).__init__(**extra) if required is True or required is False: # common error raise AssertionError( "the `required` attribute of schema must be an " "array of required property names, not a boolean!" ) assert type, "type is required!" self.title = title self.description = description self.required = filter_none(required) self.type = type self.properties = filter_none(properties) self.additional_properties = additional_properties self.format = format self.enum = enum self.pattern = pattern self.items_ = items self.read_only = read_only self.default = default self._insert_extras__() if (properties or (additional_properties is not None)) and type != TYPE_OBJECT: raise AssertionError("only object Schema can have properties") _check_type(type, format, enum, pattern, items, self.__class__) def _remove_read_only(self): # readOnly is only valid for Schemas inside another Schema's properties; # when placing Schema elsewhere we must take care to remove the readOnly flag self.pop("readOnly", "") class _Ref(SwaggerDict): ref_name_re = re.compile(r"#/(?P.+)/(?P[^/]+)$") def __init__(self, resolver, name, scope, expected_type, ignore_unresolved=False): """Base class for all reference types. A reference object has only one property, ``$ref``, which must be a JSON reference to a valid object in the specification, e.g. ``#/definitions/Article`` to refer to an article model. :param ReferenceResolver resolver: component resolver which must contain the referenced object :param str name: referenced object name, e.g. "Article" :param str scope: reference scope, e.g. "definitions" :param type[SwaggerDict] expected_type: the expected type that will be asserted on the object found in resolver :param bool ignore_unresolved: do not throw if the referenced object does not exist """ super(_Ref, self).__init__() assert type(self) is not _Ref, "do not instantiate _Ref directly" ref_name = "#/{scope}/{name}".format(scope=scope, name=name) if not ignore_unresolved: obj = resolver.get(name, scope) assert isinstance(obj, expected_type), ( ref_name + " is a {actual}, not a {expected}".format( actual=type(obj).__name__, expected=expected_type.__name__ ) ) self.ref = ref_name def resolve(self, resolver): """Get the object targeted by this reference from the given component resolver. :param ReferenceResolver resolver: component resolver which must contain the referenced object :returns: the target object """ ref_match = self.ref_name_re.match(self.ref) return resolver.getdefault( ref_match.group("name"), scope=ref_match.group("scope") ) def __setitem__(self, key, value): if key == "$ref": return super(_Ref, self).__setitem__(key, value) raise NotImplementedError( "only $ref can be set on Reference objects (not %s)" % key ) def __delitem__(self, key): raise NotImplementedError("cannot delete property of Reference object") class SchemaRef(_Ref): def __init__(self, resolver, schema_name, ignore_unresolved=False): """Adds a reference to a named Schema defined in the ``#/definitions/`` object. :param ReferenceResolver resolver: component resolver which must contain the definition :param str schema_name: schema name :param bool ignore_unresolved: do not throw if the referenced object does not exist """ assert SCHEMA_DEFINITIONS in resolver.scopes super(SchemaRef, self).__init__( resolver, schema_name, SCHEMA_DEFINITIONS, Schema, ignore_unresolved ) Schema.OR_REF = (Schema, SchemaRef) def resolve_ref(ref_or_obj, resolver): """Resolve `ref_or_obj` if it is a reference type. Return it unchanged if not. :param ref_or_obj: object to dereference :type ref_or_obj: SwaggerDict or _Ref :param resolver: component resolver which must contain the referenced object """ if isinstance(ref_or_obj, _Ref): return ref_or_obj.resolve(resolver) return ref_or_obj class Responses(SwaggerDict): def __init__(self, responses, default=None, **extra): """Describes the expected responses of an :class:`.Operation`. :param responses: mapping of status code to response definition :type responses: dict[str or int,Response] :param Response default: description of the response structure to expect if another status code is returned """ super(Responses, self).__init__(**extra) for status, response in responses.items(): if response is not None: # pragma: no cover self[str(status)] = response self.default = default self._insert_extras__() class Response(SwaggerDict): def __init__(self, description, schema=None, examples=None, **extra): """Describes the structure of an operation's response. :param str description: response description :param schema: structure of the response body :type schema: Schema or SchemaRef or rest_framework.serializers.Serializer or type[rest_framework.serializers.Serializer] :param dict examples: example bodies mapped by mime type """ super(Response, self).__init__(**extra) self.description = description self.schema = schema self.examples = examples self._insert_extras__() if schema and isinstance(schema, Schema): schema._remove_read_only() class ReferenceResolver(object): """A mapping type intended for storing objects pointed at by Swagger Refs. Provides support and checks for different reference scopes, e.g. 'definitions'. For example: :: > components = ReferenceResolver('definitions', 'parameters') > definitions = components.with_scope('definitions') > definitions.set('Article', Schema(...)) > print(components) {'definitions': {'Article': Schema(...)}, 'parameters': {}} """ def __init__(self, *scopes, **kwargs): """ :param str scopes: an enumeration of the valid scopes this resolver will contain """ force_init = kwargs.pop("force_init", False) if not force_init: raise AssertionError( "Creating an instance of ReferenceResolver almost certainly won't do" "what you want it to do.\n" "See https://github.com/axnsan12/drf-yasg/issues/211, " "https://github.com/axnsan12/drf-yasg/issues/271, " "https://github.com/axnsan12/drf-yasg/issues/325.\n" "Pass `force_init=True` to override this." ) self._objects = {} self._force_scope = None for scope in scopes: assert isinstance(scope, str), "scope names must be strings" self._objects[scope] = {} def with_scope(self, scope): """Return a view into this :class:`.ReferenceResolver` whose scope is defaulted and forced to `scope`. :param str scope: target scope, must be in this resolver's `scopes` :return: the bound resolver :rtype: ReferenceResolver """ assert scope in self.scopes, "unknown scope %s" % scope ret = ReferenceResolver(force_init=True) ret._objects = self._objects ret._force_scope = scope return ret def _check_scope(self, scope): real_scope = self._force_scope or scope if scope is not None: assert not self._force_scope or scope == self._force_scope, ( "cannot override forced scope" ) assert real_scope and real_scope in self._objects, "invalid scope %s" % scope return real_scope def set(self, name, obj, scope=None): """Set an object in the given scope, raise an error if it already exists. :param str name: reference name :param obj: referenced object :param str scope: reference scope """ scope = self._check_scope(scope) assert obj is not None, "referenced objects cannot be None/null" assert name not in self._objects[scope], "#/%s/%s already exists" % ( scope, name, ) self._objects[scope][name] = obj def setdefault(self, name, maker, scope=None): """Set an object in the given scope only if it does not exist. :param str name: reference name :param function maker: object factory, called only if necessary :param str scope: reference scope """ scope = self._check_scope(scope) assert callable(maker), ( "setdefault expects a callable, not %s" % type(maker).__name__ ) ret = self.getdefault(name, None, scope) if ret is None: ret = maker() value = self.getdefault(name, None, scope) assert ret is not None, ( "maker returned None; referenced objects cannot be None/null" ) if value is None: self.set(name, ret, scope) elif value != ret: logger.debug( "during setdefault, maker for %s inserted a value and returned a " "different value", name, ) ret = value return ret def get(self, name, scope=None): """Get an object from the given scope, raise an error if it does not exist. :param str name: reference name :param str scope: reference scope :return: the object """ scope = self._check_scope(scope) assert name in self._objects[scope], "#/%s/%s is not defined" % (scope, name) return self._objects[scope][name] def getdefault(self, name, default=None, scope=None): """Get an object from the given scope or a default value if it does not exist. :param str name: reference name :param default: the default value :param str scope: reference scope :return: the object or `default` """ scope = self._check_scope(scope) return self._objects[scope].get(name, default) def has(self, name, scope=None): """Check if an object exists in the given scope. :param str name: reference name :param str scope: reference scope :return: True if the object exists :rtype: bool """ scope = self._check_scope(scope) return name in self._objects[scope] def __iter__(self): if self._force_scope: return iter(self._objects[self._force_scope]) return iter(self._objects) @property def scopes(self): if self._force_scope: return [self._force_scope] return list(self._objects.keys()) # act as mapping def keys(self): if self._force_scope: return self._objects[self._force_scope].keys() return self._objects.keys() def __getitem__(self, item): if self._force_scope: return self._objects[self._force_scope][item] return self._objects[item] def __str__(self): return str(dict(self)) drf-yasg-nonfree-1.21.15/src/drf_yasg/renderers.py000066400000000000000000000206451514731163200217710ustar00rootroot00000000000000from django.core.exceptions import ImproperlyConfigured from django.shortcuts import resolve_url from django.template.loader import render_to_string from django.utils.encoding import force_str from django.utils.functional import Promise from rest_framework.renderers import BaseRenderer, JSONRenderer, TemplateHTMLRenderer from rest_framework.utils import encoders, json from .app_settings import redoc_settings, swagger_settings from .codecs import VALIDATORS, OpenAPICodecJson, OpenAPICodecYaml from .openapi import Swagger from .utils import filter_none class _SpecRenderer(BaseRenderer): """Base class for text renderers. Handles encoding and validation.""" charset = "utf-8" validators = [] codec_class = None @classmethod def with_validators(cls, validators): assert all(vld in VALIDATORS for vld in validators), ( "allowed validators are " + ", ".join(VALIDATORS) ) return type(cls.__name__, (cls,), {"validators": validators}) def render(self, data, media_type=None, renderer_context=None): assert self.codec_class, "must override codec_class" codec = self.codec_class(self.validators) if not isinstance(data, Swagger): # pragma: no cover # if `swagger` is not a ``Swagger`` object, it means we somehow got a # non-success ``Response`` in that case, it's probably better to let the # default ``JSONRenderer`` render it # see https://github.com/axnsan12/drf-yasg/issues/58 return JSONRenderer().render(data, media_type, renderer_context) return codec.encode(data) class OpenAPIRenderer(_SpecRenderer): """Renders the schema as a JSON document with the ``application/openapi+json`` specific mime type.""" media_type = "application/openapi+json" format = "openapi" codec_class = OpenAPICodecJson class SwaggerJSONRenderer(_SpecRenderer): """Renders the schema as a JSON document with the generic ``application/json`` mime type.""" media_type = "application/json" format = "json" codec_class = OpenAPICodecJson class SwaggerYAMLRenderer(_SpecRenderer): """Renders the schema as a YAML document.""" media_type = "application/yaml" format = "yaml" codec_class = OpenAPICodecYaml class _UIRenderer(BaseRenderer): """Base class for web UI renderers. Handles loading and passing settings to the appropriate template.""" media_type = "text/html" charset = "utf-8" template = "" def render(self, swagger, accepted_media_type=None, renderer_context=None): if not isinstance(swagger, Swagger): # pragma: no cover try: # if `swagger` is not a ``Swagger`` object, it means we somehow got a # non-success ``Response`` in that case, it's probably better to let the # default ``TemplateHTMLRenderer`` render it # see https://github.com/axnsan12/drf-yasg/issues/58 return TemplateHTMLRenderer().render( swagger, accepted_media_type, renderer_context ) except ImproperlyConfigured: # Fall back to using eg '404 Not Found' response = renderer_context["response"] return "%d %s" % (response.status_code, response.status_text.title()) self.set_context(renderer_context, swagger) return render_to_string( self.template, renderer_context, renderer_context["request"] ) def set_context(self, renderer_context, swagger=None): renderer_context["title"] = swagger.info.title or "" if swagger else "" renderer_context["version"] = swagger.info.version or "" if swagger else "" renderer_context["oauth2_config"] = json.dumps( self.get_oauth2_config(), cls=encoders.JSONEncoder ) renderer_context["USE_SESSION_AUTH"] = swagger_settings.USE_SESSION_AUTH renderer_context.update(self.get_auth_urls()) def resolve_url(self, to): if isinstance(to, Promise): to = str(to) if to is None: return None args, kwargs = None, None if not isinstance(to, str): if len(to) > 2: to, args, kwargs = to elif len(to) == 2: to, kwargs = to args = args or () kwargs = kwargs or {} return resolve_url(to, *args, **kwargs) def get_auth_urls(self): urls = { "LOGIN_URL": self.resolve_url(swagger_settings.LOGIN_URL), "LOGOUT_URL": self.resolve_url(swagger_settings.LOGOUT_URL), } return filter_none(urls) def get_oauth2_config(self): data = swagger_settings.OAUTH2_CONFIG assert isinstance(data, dict), "OAUTH2_CONFIG must be a dict" return data class SwaggerUIRenderer(_UIRenderer): """Renders a swagger-ui web interface for schema browsing.""" template = "drf-yasg/swagger-ui.html" format = "swagger" def set_context(self, renderer_context, swagger=None): super(SwaggerUIRenderer, self).set_context(renderer_context, swagger) swagger_ui_settings = self.get_swagger_ui_settings() request = renderer_context.get("request", None) oauth_redirect_url = force_str(swagger_ui_settings.get("oauth2RedirectUrl", "")) if request and oauth_redirect_url: swagger_ui_settings["oauth2RedirectUrl"] = request.build_absolute_uri( oauth_redirect_url ) renderer_context["swagger_settings"] = json.dumps( swagger_ui_settings, cls=encoders.JSONEncoder ) def get_swagger_ui_settings(self): data = { "url": self.resolve_url(swagger_settings.SPEC_URL), "operationsSorter": swagger_settings.OPERATIONS_SORTER, "tagsSorter": swagger_settings.TAGS_SORTER, "docExpansion": swagger_settings.DOC_EXPANSION, "deepLinking": swagger_settings.DEEP_LINKING, "showExtensions": swagger_settings.SHOW_EXTENSIONS, "defaultModelRendering": swagger_settings.DEFAULT_MODEL_RENDERING, "defaultModelExpandDepth": swagger_settings.DEFAULT_MODEL_DEPTH, "defaultModelsExpandDepth": swagger_settings.DEFAULT_MODEL_DEPTH, "showCommonExtensions": swagger_settings.SHOW_COMMON_EXTENSIONS, "oauth2RedirectUrl": swagger_settings.OAUTH2_REDIRECT_URL, "supportedSubmitMethods": swagger_settings.SUPPORTED_SUBMIT_METHODS, "displayOperationId": swagger_settings.DISPLAY_OPERATION_ID, "persistAuth": swagger_settings.PERSIST_AUTH, "refetchWithAuth": swagger_settings.REFETCH_SCHEMA_WITH_AUTH, "refetchOnLogout": swagger_settings.REFETCH_SCHEMA_ON_LOGOUT, "fetchSchemaWithQuery": swagger_settings.FETCH_SCHEMA_WITH_QUERY, "csrfCookie": swagger_settings.CSRF_COOKIE_NAME, # remove HTTP_ and convert underscores to dashes "csrfHeader": swagger_settings.CSRF_HEADER_NAME[5:].replace("_", "-"), } data = filter_none(data) if swagger_settings.VALIDATOR_URL != "": data["validatorUrl"] = self.resolve_url(swagger_settings.VALIDATOR_URL) return data class ReDocRenderer(_UIRenderer): """Renders a ReDoc web interface for schema browsing.""" template = "drf-yasg/redoc.html" format = "redoc" def set_context(self, renderer_context, swagger=None): super(ReDocRenderer, self).set_context(renderer_context, swagger) renderer_context["redoc_settings"] = json.dumps( self.get_redoc_settings(), cls=encoders.JSONEncoder ) def get_redoc_settings(self): data = { "url": self.resolve_url(redoc_settings.SPEC_URL), "lazyRendering": redoc_settings.LAZY_RENDERING, "hideHostname": redoc_settings.HIDE_HOSTNAME, "expandResponses": redoc_settings.EXPAND_RESPONSES, "pathInMiddlePanel": redoc_settings.PATH_IN_MIDDLE, "nativeScrollbars": redoc_settings.NATIVE_SCROLLBARS, "requiredPropsFirst": redoc_settings.REQUIRED_PROPS_FIRST, "fetchSchemaWithQuery": redoc_settings.FETCH_SCHEMA_WITH_QUERY, "hideDownloadButton": redoc_settings.HIDE_DOWNLOAD_BUTTON, } return filter_none(data) class ReDocOldRenderer(ReDocRenderer): """Renders a ReDoc 1.x.x web interface for schema browsing.""" template = "drf-yasg/redoc-old.html" drf-yasg-nonfree-1.21.15/src/drf_yasg/static/000077500000000000000000000000001514731163200207065ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/000077500000000000000000000000001514731163200224225ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/README000066400000000000000000000010101514731163200232720ustar00rootroot00000000000000Information about external resources The following files are taken from external resources or trees. Files: insQ.js insQ.min.js License: MIT Copyright: Zbyszek Tenerowicz Eryk NapieraÅ‚a Askar Yusupov Dan Dascalescu Source: https://github.com/naugtur/insertionQuery v1.0.3 Files: immutable.js immutable.min.js License: MIT Copyright: 2014-present, Facebook, Inc Source: https://github.com/immutable-js/immutable-js/releases/tag/v3.8.2 drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/immutable.js000066400000000000000000004260201514731163200247430ustar00rootroot00000000000000/** * Copyright (c) 2014-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : (global.Immutable = factory()); }(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice; function createClass(ctor, superClass) { if (superClass) { ctor.prototype = Object.create(superClass.prototype); } ctor.prototype.constructor = ctor; } function Iterable(value) { return isIterable(value) ? value : Seq(value); } createClass(KeyedIterable, Iterable); function KeyedIterable(value) { return isKeyed(value) ? value : KeyedSeq(value); } createClass(IndexedIterable, Iterable); function IndexedIterable(value) { return isIndexed(value) ? value : IndexedSeq(value); } createClass(SetIterable, Iterable); function SetIterable(value) { return isIterable(value) && !isAssociative(value) ? value : SetSeq(value); } function isIterable(maybeIterable) { return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]); } function isKeyed(maybeKeyed) { return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]); } function isIndexed(maybeIndexed) { return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]); } function isAssociative(maybeAssociative) { return isKeyed(maybeAssociative) || isIndexed(maybeAssociative); } function isOrdered(maybeOrdered) { return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]); } Iterable.isIterable = isIterable; Iterable.isKeyed = isKeyed; Iterable.isIndexed = isIndexed; Iterable.isAssociative = isAssociative; Iterable.isOrdered = isOrdered; Iterable.Keyed = KeyedIterable; Iterable.Indexed = IndexedIterable; Iterable.Set = SetIterable; var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@'; var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; // Used for setting prototype methods that IE8 chokes on. var DELETE = 'delete'; // Constants describing the size of trie nodes. var SHIFT = 5; // Resulted in best performance after ______? var SIZE = 1 << SHIFT; var MASK = SIZE - 1; // A consistent shared value representing "not set" which equals nothing other // than itself, and nothing that could be provided externally. var NOT_SET = {}; // Boolean references, Rough equivalent of `bool &`. var CHANGE_LENGTH = { value: false }; var DID_ALTER = { value: false }; function MakeRef(ref) { ref.value = false; return ref; } function SetRef(ref) { ref && (ref.value = true); } // A function which returns a value representing an "owner" for transient writes // to tries. The return value will only ever equal itself, and will not equal // the return of any subsequent call of this function. function OwnerID() {} // http://jsperf.com/copy-array-inline function arrCopy(arr, offset) { offset = offset || 0; var len = Math.max(0, arr.length - offset); var newArr = new Array(len); for (var ii = 0; ii < len; ii++) { newArr[ii] = arr[ii + offset]; } return newArr; } function ensureSize(iter) { if (iter.size === undefined) { iter.size = iter.__iterate(returnTrue); } return iter.size; } function wrapIndex(iter, index) { // This implements "is array index" which the ECMAString spec defines as: // // A String property name P is an array index if and only if // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal // to 2^32−1. // // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects if (typeof index !== 'number') { var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32 if ('' + uint32Index !== index || uint32Index === 4294967295) { return NaN; } index = uint32Index; } return index < 0 ? ensureSize(iter) + index : index; } function returnTrue() { return true; } function wholeSlice(begin, end, size) { return (begin === 0 || (size !== undefined && begin <= -size)) && (end === undefined || (size !== undefined && end >= size)); } function resolveBegin(begin, size) { return resolveIndex(begin, size, 0); } function resolveEnd(end, size) { return resolveIndex(end, size, size); } function resolveIndex(index, size, defaultIndex) { return index === undefined ? defaultIndex : index < 0 ? Math.max(0, size + index) : size === undefined ? index : Math.min(size, index); } /* global Symbol */ var ITERATE_KEYS = 0; var ITERATE_VALUES = 1; var ITERATE_ENTRIES = 2; var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; var FAUX_ITERATOR_SYMBOL = '@@iterator'; var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL; function Iterator(next) { this.next = next; } Iterator.prototype.toString = function() { return '[Iterator]'; }; Iterator.KEYS = ITERATE_KEYS; Iterator.VALUES = ITERATE_VALUES; Iterator.ENTRIES = ITERATE_ENTRIES; Iterator.prototype.inspect = Iterator.prototype.toSource = function () { return this.toString(); } Iterator.prototype[ITERATOR_SYMBOL] = function () { return this; }; function iteratorValue(type, k, v, iteratorResult) { var value = type === 0 ? k : type === 1 ? v : [k, v]; iteratorResult ? (iteratorResult.value = value) : (iteratorResult = { value: value, done: false }); return iteratorResult; } function iteratorDone() { return { value: undefined, done: true }; } function hasIterator(maybeIterable) { return !!getIteratorFn(maybeIterable); } function isIterator(maybeIterator) { return maybeIterator && typeof maybeIterator.next === 'function'; } function getIterator(iterable) { var iteratorFn = getIteratorFn(iterable); return iteratorFn && iteratorFn.call(iterable); } function getIteratorFn(iterable) { var iteratorFn = iterable && ( (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) || iterable[FAUX_ITERATOR_SYMBOL] ); if (typeof iteratorFn === 'function') { return iteratorFn; } } function isArrayLike(value) { return value && typeof value.length === 'number'; } createClass(Seq, Iterable); function Seq(value) { return value === null || value === undefined ? emptySequence() : isIterable(value) ? value.toSeq() : seqFromValue(value); } Seq.of = function(/*...values*/) { return Seq(arguments); }; Seq.prototype.toSeq = function() { return this; }; Seq.prototype.toString = function() { return this.__toString('Seq {', '}'); }; Seq.prototype.cacheResult = function() { if (!this._cache && this.__iterateUncached) { this._cache = this.entrySeq().toArray(); this.size = this._cache.length; } return this; }; // abstract __iterateUncached(fn, reverse) Seq.prototype.__iterate = function(fn, reverse) { return seqIterate(this, fn, reverse, true); }; // abstract __iteratorUncached(type, reverse) Seq.prototype.__iterator = function(type, reverse) { return seqIterator(this, type, reverse, true); }; createClass(KeyedSeq, Seq); function KeyedSeq(value) { return value === null || value === undefined ? emptySequence().toKeyedSeq() : isIterable(value) ? (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) : keyedSeqFromValue(value); } KeyedSeq.prototype.toKeyedSeq = function() { return this; }; createClass(IndexedSeq, Seq); function IndexedSeq(value) { return value === null || value === undefined ? emptySequence() : !isIterable(value) ? indexedSeqFromValue(value) : isKeyed(value) ? value.entrySeq() : value.toIndexedSeq(); } IndexedSeq.of = function(/*...values*/) { return IndexedSeq(arguments); }; IndexedSeq.prototype.toIndexedSeq = function() { return this; }; IndexedSeq.prototype.toString = function() { return this.__toString('Seq [', ']'); }; IndexedSeq.prototype.__iterate = function(fn, reverse) { return seqIterate(this, fn, reverse, false); }; IndexedSeq.prototype.__iterator = function(type, reverse) { return seqIterator(this, type, reverse, false); }; createClass(SetSeq, Seq); function SetSeq(value) { return ( value === null || value === undefined ? emptySequence() : !isIterable(value) ? indexedSeqFromValue(value) : isKeyed(value) ? value.entrySeq() : value ).toSetSeq(); } SetSeq.of = function(/*...values*/) { return SetSeq(arguments); }; SetSeq.prototype.toSetSeq = function() { return this; }; Seq.isSeq = isSeq; Seq.Keyed = KeyedSeq; Seq.Set = SetSeq; Seq.Indexed = IndexedSeq; var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@'; Seq.prototype[IS_SEQ_SENTINEL] = true; createClass(ArraySeq, IndexedSeq); function ArraySeq(array) { this._array = array; this.size = array.length; } ArraySeq.prototype.get = function(index, notSetValue) { return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue; }; ArraySeq.prototype.__iterate = function(fn, reverse) { var array = this._array; var maxIndex = array.length - 1; for (var ii = 0; ii <= maxIndex; ii++) { if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) { return ii + 1; } } return ii; }; ArraySeq.prototype.__iterator = function(type, reverse) { var array = this._array; var maxIndex = array.length - 1; var ii = 0; return new Iterator(function() {return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])} ); }; createClass(ObjectSeq, KeyedSeq); function ObjectSeq(object) { var keys = Object.keys(object); this._object = object; this._keys = keys; this.size = keys.length; } ObjectSeq.prototype.get = function(key, notSetValue) { if (notSetValue !== undefined && !this.has(key)) { return notSetValue; } return this._object[key]; }; ObjectSeq.prototype.has = function(key) { return this._object.hasOwnProperty(key); }; ObjectSeq.prototype.__iterate = function(fn, reverse) { var object = this._object; var keys = this._keys; var maxIndex = keys.length - 1; for (var ii = 0; ii <= maxIndex; ii++) { var key = keys[reverse ? maxIndex - ii : ii]; if (fn(object[key], key, this) === false) { return ii + 1; } } return ii; }; ObjectSeq.prototype.__iterator = function(type, reverse) { var object = this._object; var keys = this._keys; var maxIndex = keys.length - 1; var ii = 0; return new Iterator(function() { var key = keys[reverse ? maxIndex - ii : ii]; return ii++ > maxIndex ? iteratorDone() : iteratorValue(type, key, object[key]); }); }; ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true; createClass(IterableSeq, IndexedSeq); function IterableSeq(iterable) { this._iterable = iterable; this.size = iterable.length || iterable.size; } IterableSeq.prototype.__iterateUncached = function(fn, reverse) { if (reverse) { return this.cacheResult().__iterate(fn, reverse); } var iterable = this._iterable; var iterator = getIterator(iterable); var iterations = 0; if (isIterator(iterator)) { var step; while (!(step = iterator.next()).done) { if (fn(step.value, iterations++, this) === false) { break; } } } return iterations; }; IterableSeq.prototype.__iteratorUncached = function(type, reverse) { if (reverse) { return this.cacheResult().__iterator(type, reverse); } var iterable = this._iterable; var iterator = getIterator(iterable); if (!isIterator(iterator)) { return new Iterator(iteratorDone); } var iterations = 0; return new Iterator(function() { var step = iterator.next(); return step.done ? step : iteratorValue(type, iterations++, step.value); }); }; createClass(IteratorSeq, IndexedSeq); function IteratorSeq(iterator) { this._iterator = iterator; this._iteratorCache = []; } IteratorSeq.prototype.__iterateUncached = function(fn, reverse) { if (reverse) { return this.cacheResult().__iterate(fn, reverse); } var iterator = this._iterator; var cache = this._iteratorCache; var iterations = 0; while (iterations < cache.length) { if (fn(cache[iterations], iterations++, this) === false) { return iterations; } } var step; while (!(step = iterator.next()).done) { var val = step.value; cache[iterations] = val; if (fn(val, iterations++, this) === false) { break; } } return iterations; }; IteratorSeq.prototype.__iteratorUncached = function(type, reverse) { if (reverse) { return this.cacheResult().__iterator(type, reverse); } var iterator = this._iterator; var cache = this._iteratorCache; var iterations = 0; return new Iterator(function() { if (iterations >= cache.length) { var step = iterator.next(); if (step.done) { return step; } cache[iterations] = step.value; } return iteratorValue(type, iterations, cache[iterations++]); }); }; // # pragma Helper functions function isSeq(maybeSeq) { return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]); } var EMPTY_SEQ; function emptySequence() { return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([])); } function keyedSeqFromValue(value) { var seq = Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() : isIterator(value) ? new IteratorSeq(value).fromEntrySeq() : hasIterator(value) ? new IterableSeq(value).fromEntrySeq() : typeof value === 'object' ? new ObjectSeq(value) : undefined; if (!seq) { throw new TypeError( 'Expected Array or iterable object of [k, v] entries, '+ 'or keyed object: ' + value ); } return seq; } function indexedSeqFromValue(value) { var seq = maybeIndexedSeqFromValue(value); if (!seq) { throw new TypeError( 'Expected Array or iterable object of values: ' + value ); } return seq; } function seqFromValue(value) { var seq = maybeIndexedSeqFromValue(value) || (typeof value === 'object' && new ObjectSeq(value)); if (!seq) { throw new TypeError( 'Expected Array or iterable object of values, or keyed object: ' + value ); } return seq; } function maybeIndexedSeqFromValue(value) { return ( isArrayLike(value) ? new ArraySeq(value) : isIterator(value) ? new IteratorSeq(value) : hasIterator(value) ? new IterableSeq(value) : undefined ); } function seqIterate(seq, fn, reverse, useKeys) { var cache = seq._cache; if (cache) { var maxIndex = cache.length - 1; for (var ii = 0; ii <= maxIndex; ii++) { var entry = cache[reverse ? maxIndex - ii : ii]; if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) { return ii + 1; } } return ii; } return seq.__iterateUncached(fn, reverse); } function seqIterator(seq, type, reverse, useKeys) { var cache = seq._cache; if (cache) { var maxIndex = cache.length - 1; var ii = 0; return new Iterator(function() { var entry = cache[reverse ? maxIndex - ii : ii]; return ii++ > maxIndex ? iteratorDone() : iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]); }); } return seq.__iteratorUncached(type, reverse); } function fromJS(json, converter) { return converter ? fromJSWith(converter, json, '', {'': json}) : fromJSDefault(json); } function fromJSWith(converter, json, key, parentJSON) { if (Array.isArray(json)) { return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)})); } if (isPlainObj(json)) { return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)})); } return json; } function fromJSDefault(json) { if (Array.isArray(json)) { return IndexedSeq(json).map(fromJSDefault).toList(); } if (isPlainObj(json)) { return KeyedSeq(json).map(fromJSDefault).toMap(); } return json; } function isPlainObj(value) { return value && (value.constructor === Object || value.constructor === undefined); } /** * An extension of the "same-value" algorithm as [described for use by ES6 Map * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality) * * NaN is considered the same as NaN, however -0 and 0 are considered the same * value, which is different from the algorithm described by * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is). * * This is extended further to allow Objects to describe the values they * represent, by way of `valueOf` or `equals` (and `hashCode`). * * Note: because of this extension, the key equality of Immutable.Map and the * value equality of Immutable.Set will differ from ES6 Map and Set. * * ### Defining custom values * * The easiest way to describe the value an object represents is by implementing * `valueOf`. For example, `Date` represents a value by returning a unix * timestamp for `valueOf`: * * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ... * var date2 = new Date(1234567890000); * date1.valueOf(); // 1234567890000 * assert( date1 !== date2 ); * assert( Immutable.is( date1, date2 ) ); * * Note: overriding `valueOf` may have other implications if you use this object * where JavaScript expects a primitive, such as implicit string coercion. * * For more complex types, especially collections, implementing `valueOf` may * not be performant. An alternative is to implement `equals` and `hashCode`. * * `equals` takes another object, presumably of similar type, and returns true * if the it is equal. Equality is symmetrical, so the same result should be * returned if this and the argument are flipped. * * assert( a.equals(b) === b.equals(a) ); * * `hashCode` returns a 32bit integer number representing the object which will * be used to determine how to store the value object in a Map or Set. You must * provide both or neither methods, one must not exist without the other. * * Also, an important relationship between these methods must be upheld: if two * values are equal, they *must* return the same hashCode. If the values are not * equal, they might have the same hashCode; this is called a hash collision, * and while undesirable for performance reasons, it is acceptable. * * if (a.equals(b)) { * assert( a.hashCode() === b.hashCode() ); * } * * All Immutable collections implement `equals` and `hashCode`. * */ function is(valueA, valueB) { if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) { return true; } if (!valueA || !valueB) { return false; } if (typeof valueA.valueOf === 'function' && typeof valueB.valueOf === 'function') { valueA = valueA.valueOf(); valueB = valueB.valueOf(); if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) { return true; } if (!valueA || !valueB) { return false; } } if (typeof valueA.equals === 'function' && typeof valueB.equals === 'function' && valueA.equals(valueB)) { return true; } return false; } function deepEqual(a, b) { if (a === b) { return true; } if ( !isIterable(b) || a.size !== undefined && b.size !== undefined && a.size !== b.size || a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash || isKeyed(a) !== isKeyed(b) || isIndexed(a) !== isIndexed(b) || isOrdered(a) !== isOrdered(b) ) { return false; } if (a.size === 0 && b.size === 0) { return true; } var notAssociative = !isAssociative(a); if (isOrdered(a)) { var entries = a.entries(); return b.every(function(v, k) { var entry = entries.next().value; return entry && is(entry[1], v) && (notAssociative || is(entry[0], k)); }) && entries.next().done; } var flipped = false; if (a.size === undefined) { if (b.size === undefined) { if (typeof a.cacheResult === 'function') { a.cacheResult(); } } else { flipped = true; var _ = a; a = b; b = _; } } var allEqual = true; var bSize = b.__iterate(function(v, k) { if (notAssociative ? !a.has(v) : flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) { allEqual = false; return false; } }); return allEqual && a.size === bSize; } createClass(Repeat, IndexedSeq); function Repeat(value, times) { if (!(this instanceof Repeat)) { return new Repeat(value, times); } this._value = value; this.size = times === undefined ? Infinity : Math.max(0, times); if (this.size === 0) { if (EMPTY_REPEAT) { return EMPTY_REPEAT; } EMPTY_REPEAT = this; } } Repeat.prototype.toString = function() { if (this.size === 0) { return 'Repeat []'; } return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]'; }; Repeat.prototype.get = function(index, notSetValue) { return this.has(index) ? this._value : notSetValue; }; Repeat.prototype.includes = function(searchValue) { return is(this._value, searchValue); }; Repeat.prototype.slice = function(begin, end) { var size = this.size; return wholeSlice(begin, end, size) ? this : new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size)); }; Repeat.prototype.reverse = function() { return this; }; Repeat.prototype.indexOf = function(searchValue) { if (is(this._value, searchValue)) { return 0; } return -1; }; Repeat.prototype.lastIndexOf = function(searchValue) { if (is(this._value, searchValue)) { return this.size; } return -1; }; Repeat.prototype.__iterate = function(fn, reverse) { for (var ii = 0; ii < this.size; ii++) { if (fn(this._value, ii, this) === false) { return ii + 1; } } return ii; }; Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this; var ii = 0; return new Iterator(function() {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()} ); }; Repeat.prototype.equals = function(other) { return other instanceof Repeat ? is(this._value, other._value) : deepEqual(other); }; var EMPTY_REPEAT; function invariant(condition, error) { if (!condition) throw new Error(error); } createClass(Range, IndexedSeq); function Range(start, end, step) { if (!(this instanceof Range)) { return new Range(start, end, step); } invariant(step !== 0, 'Cannot step a Range by 0'); start = start || 0; if (end === undefined) { end = Infinity; } step = step === undefined ? 1 : Math.abs(step); if (end < start) { step = -step; } this._start = start; this._end = end; this._step = step; this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1); if (this.size === 0) { if (EMPTY_RANGE) { return EMPTY_RANGE; } EMPTY_RANGE = this; } } Range.prototype.toString = function() { if (this.size === 0) { return 'Range []'; } return 'Range [ ' + this._start + '...' + this._end + (this._step !== 1 ? ' by ' + this._step : '') + ' ]'; }; Range.prototype.get = function(index, notSetValue) { return this.has(index) ? this._start + wrapIndex(this, index) * this._step : notSetValue; }; Range.prototype.includes = function(searchValue) { var possibleIndex = (searchValue - this._start) / this._step; return possibleIndex >= 0 && possibleIndex < this.size && possibleIndex === Math.floor(possibleIndex); }; Range.prototype.slice = function(begin, end) { if (wholeSlice(begin, end, this.size)) { return this; } begin = resolveBegin(begin, this.size); end = resolveEnd(end, this.size); if (end <= begin) { return new Range(0, 0); } return new Range(this.get(begin, this._end), this.get(end, this._end), this._step); }; Range.prototype.indexOf = function(searchValue) { var offsetValue = searchValue - this._start; if (offsetValue % this._step === 0) { var index = offsetValue / this._step; if (index >= 0 && index < this.size) { return index } } return -1; }; Range.prototype.lastIndexOf = function(searchValue) { return this.indexOf(searchValue); }; Range.prototype.__iterate = function(fn, reverse) { var maxIndex = this.size - 1; var step = this._step; var value = reverse ? this._start + maxIndex * step : this._start; for (var ii = 0; ii <= maxIndex; ii++) { if (fn(value, ii, this) === false) { return ii + 1; } value += reverse ? -step : step; } return ii; }; Range.prototype.__iterator = function(type, reverse) { var maxIndex = this.size - 1; var step = this._step; var value = reverse ? this._start + maxIndex * step : this._start; var ii = 0; return new Iterator(function() { var v = value; value += reverse ? -step : step; return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v); }); }; Range.prototype.equals = function(other) { return other instanceof Range ? this._start === other._start && this._end === other._end && this._step === other._step : deepEqual(this, other); }; var EMPTY_RANGE; createClass(Collection, Iterable); function Collection() { throw TypeError('Abstract'); } createClass(KeyedCollection, Collection);function KeyedCollection() {} createClass(IndexedCollection, Collection);function IndexedCollection() {} createClass(SetCollection, Collection);function SetCollection() {} Collection.Keyed = KeyedCollection; Collection.Indexed = IndexedCollection; Collection.Set = SetCollection; var imul = typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ? Math.imul : function imul(a, b) { a = a | 0; // int b = b | 0; // int var c = a & 0xffff; var d = b & 0xffff; // Shift by 0 fixes the sign on the high part. return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int }; // v8 has an optimization for storing 31-bit signed numbers. // Values which have either 00 or 11 as the high order bits qualify. // This function drops the highest order bit in a signed number, maintaining // the sign bit. function smi(i32) { return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF); } function hash(o) { if (o === false || o === null || o === undefined) { return 0; } if (typeof o.valueOf === 'function') { o = o.valueOf(); if (o === false || o === null || o === undefined) { return 0; } } if (o === true) { return 1; } var type = typeof o; if (type === 'number') { if (o !== o || o === Infinity) { return 0; } var h = o | 0; if (h !== o) { h ^= o * 0xFFFFFFFF; } while (o > 0xFFFFFFFF) { o /= 0xFFFFFFFF; h ^= o; } return smi(h); } if (type === 'string') { return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o); } if (typeof o.hashCode === 'function') { return o.hashCode(); } if (type === 'object') { return hashJSObj(o); } if (typeof o.toString === 'function') { return hashString(o.toString()); } throw new Error('Value type ' + type + ' cannot be hashed.'); } function cachedHashString(string) { var hash = stringHashCache[string]; if (hash === undefined) { hash = hashString(string); if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) { STRING_HASH_CACHE_SIZE = 0; stringHashCache = {}; } STRING_HASH_CACHE_SIZE++; stringHashCache[string] = hash; } return hash; } // http://jsperf.com/hashing-strings function hashString(string) { // This is the hash from JVM // The hash code for a string is computed as // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1], // where s[i] is the ith character of the string and n is the length of // the string. We "mod" the result to make it between 0 (inclusive) and 2^31 // (exclusive) by dropping high bits. var hash = 0; for (var ii = 0; ii < string.length; ii++) { hash = 31 * hash + string.charCodeAt(ii) | 0; } return smi(hash); } function hashJSObj(obj) { var hash; if (usingWeakMap) { hash = weakMap.get(obj); if (hash !== undefined) { return hash; } } hash = obj[UID_HASH_KEY]; if (hash !== undefined) { return hash; } if (!canDefineProperty) { hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY]; if (hash !== undefined) { return hash; } hash = getIENodeHash(obj); if (hash !== undefined) { return hash; } } hash = ++objHashUID; if (objHashUID & 0x40000000) { objHashUID = 0; } if (usingWeakMap) { weakMap.set(obj, hash); } else if (isExtensible !== undefined && isExtensible(obj) === false) { throw new Error('Non-extensible objects are not allowed as keys.'); } else if (canDefineProperty) { Object.defineProperty(obj, UID_HASH_KEY, { 'enumerable': false, 'configurable': false, 'writable': false, 'value': hash }); } else if (obj.propertyIsEnumerable !== undefined && obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) { // Since we can't define a non-enumerable property on the object // we'll hijack one of the less-used non-enumerable properties to // save our hash on it. Since this is a function it will not show up in // `JSON.stringify` which is what we want. obj.propertyIsEnumerable = function() { return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments); }; obj.propertyIsEnumerable[UID_HASH_KEY] = hash; } else if (obj.nodeType !== undefined) { // At this point we couldn't get the IE `uniqueID` to use as a hash // and we couldn't use a non-enumerable property to exploit the // dontEnum bug so we simply add the `UID_HASH_KEY` on the node // itself. obj[UID_HASH_KEY] = hash; } else { throw new Error('Unable to set a non-enumerable property on object.'); } return hash; } // Get references to ES5 object methods. var isExtensible = Object.isExtensible; // True if Object.defineProperty works as expected. IE8 fails this test. var canDefineProperty = (function() { try { Object.defineProperty({}, '@', {}); return true; } catch (e) { return false; } }()); // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it // and avoid memory leaks from the IE cloneNode bug. function getIENodeHash(node) { if (node && node.nodeType > 0) { switch (node.nodeType) { case 1: // Element return node.uniqueID; case 9: // Document return node.documentElement && node.documentElement.uniqueID; } } } // If possible, use a WeakMap. var usingWeakMap = typeof WeakMap === 'function'; var weakMap; if (usingWeakMap) { weakMap = new WeakMap(); } var objHashUID = 0; var UID_HASH_KEY = '__immutablehash__'; if (typeof Symbol === 'function') { UID_HASH_KEY = Symbol(UID_HASH_KEY); } var STRING_HASH_CACHE_MIN_STRLEN = 16; var STRING_HASH_CACHE_MAX_SIZE = 255; var STRING_HASH_CACHE_SIZE = 0; var stringHashCache = {}; function assertNotInfinite(size) { invariant( size !== Infinity, 'Cannot perform this action with an infinite size.' ); } createClass(Map, KeyedCollection); // @pragma Construction function Map(value) { return value === null || value === undefined ? emptyMap() : isMap(value) && !isOrdered(value) ? value : emptyMap().withMutations(function(map ) { var iter = KeyedIterable(value); assertNotInfinite(iter.size); iter.forEach(function(v, k) {return map.set(k, v)}); }); } Map.of = function() {var keyValues = SLICE$0.call(arguments, 0); return emptyMap().withMutations(function(map ) { for (var i = 0; i < keyValues.length; i += 2) { if (i + 1 >= keyValues.length) { throw new Error('Missing value for key: ' + keyValues[i]); } map.set(keyValues[i], keyValues[i + 1]); } }); }; Map.prototype.toString = function() { return this.__toString('Map {', '}'); }; // @pragma Access Map.prototype.get = function(k, notSetValue) { return this._root ? this._root.get(0, undefined, k, notSetValue) : notSetValue; }; // @pragma Modification Map.prototype.set = function(k, v) { return updateMap(this, k, v); }; Map.prototype.setIn = function(keyPath, v) { return this.updateIn(keyPath, NOT_SET, function() {return v}); }; Map.prototype.remove = function(k) { return updateMap(this, k, NOT_SET); }; Map.prototype.deleteIn = function(keyPath) { return this.updateIn(keyPath, function() {return NOT_SET}); }; Map.prototype.update = function(k, notSetValue, updater) { return arguments.length === 1 ? k(this) : this.updateIn([k], notSetValue, updater); }; Map.prototype.updateIn = function(keyPath, notSetValue, updater) { if (!updater) { updater = notSetValue; notSetValue = undefined; } var updatedValue = updateInDeepMap( this, forceIterator(keyPath), notSetValue, updater ); return updatedValue === NOT_SET ? undefined : updatedValue; }; Map.prototype.clear = function() { if (this.size === 0) { return this; } if (this.__ownerID) { this.size = 0; this._root = null; this.__hash = undefined; this.__altered = true; return this; } return emptyMap(); }; // @pragma Composition Map.prototype.merge = function(/*...iters*/) { return mergeIntoMapWith(this, undefined, arguments); }; Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); return mergeIntoMapWith(this, merger, iters); }; Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1); return this.updateIn( keyPath, emptyMap(), function(m ) {return typeof m.merge === 'function' ? m.merge.apply(m, iters) : iters[iters.length - 1]} ); }; Map.prototype.mergeDeep = function(/*...iters*/) { return mergeIntoMapWith(this, deepMerger, arguments); }; Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1); return mergeIntoMapWith(this, deepMergerWith(merger), iters); }; Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1); return this.updateIn( keyPath, emptyMap(), function(m ) {return typeof m.mergeDeep === 'function' ? m.mergeDeep.apply(m, iters) : iters[iters.length - 1]} ); }; Map.prototype.sort = function(comparator) { // Late binding return OrderedMap(sortFactory(this, comparator)); }; Map.prototype.sortBy = function(mapper, comparator) { // Late binding return OrderedMap(sortFactory(this, comparator, mapper)); }; // @pragma Mutability Map.prototype.withMutations = function(fn) { var mutable = this.asMutable(); fn(mutable); return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this; }; Map.prototype.asMutable = function() { return this.__ownerID ? this : this.__ensureOwner(new OwnerID()); }; Map.prototype.asImmutable = function() { return this.__ensureOwner(); }; Map.prototype.wasAltered = function() { return this.__altered; }; Map.prototype.__iterator = function(type, reverse) { return new MapIterator(this, type, reverse); }; Map.prototype.__iterate = function(fn, reverse) {var this$0 = this; var iterations = 0; this._root && this._root.iterate(function(entry ) { iterations++; return fn(entry[1], entry[0], this$0); }, reverse); return iterations; }; Map.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } if (!ownerID) { this.__ownerID = ownerID; this.__altered = false; return this; } return makeMap(this.size, this._root, ownerID, this.__hash); }; function isMap(maybeMap) { return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]); } Map.isMap = isMap; var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@'; var MapPrototype = Map.prototype; MapPrototype[IS_MAP_SENTINEL] = true; MapPrototype[DELETE] = MapPrototype.remove; MapPrototype.removeIn = MapPrototype.deleteIn; // #pragma Trie Nodes function ArrayMapNode(ownerID, entries) { this.ownerID = ownerID; this.entries = entries; } ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) { var entries = this.entries; for (var ii = 0, len = entries.length; ii < len; ii++) { if (is(key, entries[ii][0])) { return entries[ii][1]; } } return notSetValue; }; ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { var removed = value === NOT_SET; var entries = this.entries; var idx = 0; for (var len = entries.length; idx < len; idx++) { if (is(key, entries[idx][0])) { break; } } var exists = idx < len; if (exists ? entries[idx][1] === value : removed) { return this; } SetRef(didAlter); (removed || !exists) && SetRef(didChangeSize); if (removed && entries.length === 1) { return; // undefined } if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) { return createNodes(ownerID, entries, key, value); } var isEditable = ownerID && ownerID === this.ownerID; var newEntries = isEditable ? entries : arrCopy(entries); if (exists) { if (removed) { idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop()); } else { newEntries[idx] = [key, value]; } } else { newEntries.push([key, value]); } if (isEditable) { this.entries = newEntries; return this; } return new ArrayMapNode(ownerID, newEntries); }; function BitmapIndexedNode(ownerID, bitmap, nodes) { this.ownerID = ownerID; this.bitmap = bitmap; this.nodes = nodes; } BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) { if (keyHash === undefined) { keyHash = hash(key); } var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK)); var bitmap = this.bitmap; return (bitmap & bit) === 0 ? notSetValue : this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue); }; BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { if (keyHash === undefined) { keyHash = hash(key); } var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; var bit = 1 << keyHashFrag; var bitmap = this.bitmap; var exists = (bitmap & bit) !== 0; if (!exists && value === NOT_SET) { return this; } var idx = popCount(bitmap & (bit - 1)); var nodes = this.nodes; var node = exists ? nodes[idx] : undefined; var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter); if (newNode === node) { return this; } if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) { return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode); } if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) { return nodes[idx ^ 1]; } if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) { return newNode; } var isEditable = ownerID && ownerID === this.ownerID; var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit; var newNodes = exists ? newNode ? setIn(nodes, idx, newNode, isEditable) : spliceOut(nodes, idx, isEditable) : spliceIn(nodes, idx, newNode, isEditable); if (isEditable) { this.bitmap = newBitmap; this.nodes = newNodes; return this; } return new BitmapIndexedNode(ownerID, newBitmap, newNodes); }; function HashArrayMapNode(ownerID, count, nodes) { this.ownerID = ownerID; this.count = count; this.nodes = nodes; } HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) { if (keyHash === undefined) { keyHash = hash(key); } var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; var node = this.nodes[idx]; return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue; }; HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { if (keyHash === undefined) { keyHash = hash(key); } var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; var removed = value === NOT_SET; var nodes = this.nodes; var node = nodes[idx]; if (removed && !node) { return this; } var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter); if (newNode === node) { return this; } var newCount = this.count; if (!node) { newCount++; } else if (!newNode) { newCount--; if (newCount < MIN_HASH_ARRAY_MAP_SIZE) { return packNodes(ownerID, nodes, newCount, idx); } } var isEditable = ownerID && ownerID === this.ownerID; var newNodes = setIn(nodes, idx, newNode, isEditable); if (isEditable) { this.count = newCount; this.nodes = newNodes; return this; } return new HashArrayMapNode(ownerID, newCount, newNodes); }; function HashCollisionNode(ownerID, keyHash, entries) { this.ownerID = ownerID; this.keyHash = keyHash; this.entries = entries; } HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) { var entries = this.entries; for (var ii = 0, len = entries.length; ii < len; ii++) { if (is(key, entries[ii][0])) { return entries[ii][1]; } } return notSetValue; }; HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { if (keyHash === undefined) { keyHash = hash(key); } var removed = value === NOT_SET; if (keyHash !== this.keyHash) { if (removed) { return this; } SetRef(didAlter); SetRef(didChangeSize); return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]); } var entries = this.entries; var idx = 0; for (var len = entries.length; idx < len; idx++) { if (is(key, entries[idx][0])) { break; } } var exists = idx < len; if (exists ? entries[idx][1] === value : removed) { return this; } SetRef(didAlter); (removed || !exists) && SetRef(didChangeSize); if (removed && len === 2) { return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]); } var isEditable = ownerID && ownerID === this.ownerID; var newEntries = isEditable ? entries : arrCopy(entries); if (exists) { if (removed) { idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop()); } else { newEntries[idx] = [key, value]; } } else { newEntries.push([key, value]); } if (isEditable) { this.entries = newEntries; return this; } return new HashCollisionNode(ownerID, this.keyHash, newEntries); }; function ValueNode(ownerID, keyHash, entry) { this.ownerID = ownerID; this.keyHash = keyHash; this.entry = entry; } ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) { return is(key, this.entry[0]) ? this.entry[1] : notSetValue; }; ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { var removed = value === NOT_SET; var keyMatch = is(key, this.entry[0]); if (keyMatch ? value === this.entry[1] : removed) { return this; } SetRef(didAlter); if (removed) { SetRef(didChangeSize); return; // undefined } if (keyMatch) { if (ownerID && ownerID === this.ownerID) { this.entry[1] = value; return this; } return new ValueNode(ownerID, this.keyHash, [key, value]); } SetRef(didChangeSize); return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]); }; // #pragma Iterators ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = function (fn, reverse) { var entries = this.entries; for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) { if (fn(entries[reverse ? maxIndex - ii : ii]) === false) { return false; } } } BitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = function (fn, reverse) { var nodes = this.nodes; for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) { var node = nodes[reverse ? maxIndex - ii : ii]; if (node && node.iterate(fn, reverse) === false) { return false; } } } ValueNode.prototype.iterate = function (fn, reverse) { return fn(this.entry); } createClass(MapIterator, Iterator); function MapIterator(map, type, reverse) { this._type = type; this._reverse = reverse; this._stack = map._root && mapIteratorFrame(map._root); } MapIterator.prototype.next = function() { var type = this._type; var stack = this._stack; while (stack) { var node = stack.node; var index = stack.index++; var maxIndex; if (node.entry) { if (index === 0) { return mapIteratorValue(type, node.entry); } } else if (node.entries) { maxIndex = node.entries.length - 1; if (index <= maxIndex) { return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]); } } else { maxIndex = node.nodes.length - 1; if (index <= maxIndex) { var subNode = node.nodes[this._reverse ? maxIndex - index : index]; if (subNode) { if (subNode.entry) { return mapIteratorValue(type, subNode.entry); } stack = this._stack = mapIteratorFrame(subNode, stack); } continue; } } stack = this._stack = this._stack.__prev; } return iteratorDone(); }; function mapIteratorValue(type, entry) { return iteratorValue(type, entry[0], entry[1]); } function mapIteratorFrame(node, prev) { return { node: node, index: 0, __prev: prev }; } function makeMap(size, root, ownerID, hash) { var map = Object.create(MapPrototype); map.size = size; map._root = root; map.__ownerID = ownerID; map.__hash = hash; map.__altered = false; return map; } var EMPTY_MAP; function emptyMap() { return EMPTY_MAP || (EMPTY_MAP = makeMap(0)); } function updateMap(map, k, v) { var newRoot; var newSize; if (!map._root) { if (v === NOT_SET) { return map; } newSize = 1; newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]); } else { var didChangeSize = MakeRef(CHANGE_LENGTH); var didAlter = MakeRef(DID_ALTER); newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter); if (!didAlter.value) { return map; } newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0); } if (map.__ownerID) { map.size = newSize; map._root = newRoot; map.__hash = undefined; map.__altered = true; return map; } return newRoot ? makeMap(newSize, newRoot) : emptyMap(); } function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) { if (!node) { if (value === NOT_SET) { return node; } SetRef(didAlter); SetRef(didChangeSize); return new ValueNode(ownerID, keyHash, [key, value]); } return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter); } function isLeafNode(node) { return node.constructor === ValueNode || node.constructor === HashCollisionNode; } function mergeIntoNode(node, ownerID, shift, keyHash, entry) { if (node.keyHash === keyHash) { return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]); } var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK; var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK; var newNode; var nodes = idx1 === idx2 ? [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] : ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]); return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes); } function createNodes(ownerID, entries, key, value) { if (!ownerID) { ownerID = new OwnerID(); } var node = new ValueNode(ownerID, hash(key), [key, value]); for (var ii = 0; ii < entries.length; ii++) { var entry = entries[ii]; node = node.update(ownerID, 0, undefined, entry[0], entry[1]); } return node; } function packNodes(ownerID, nodes, count, excluding) { var bitmap = 0; var packedII = 0; var packedNodes = new Array(count); for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) { var node = nodes[ii]; if (node !== undefined && ii !== excluding) { bitmap |= bit; packedNodes[packedII++] = node; } } return new BitmapIndexedNode(ownerID, bitmap, packedNodes); } function expandNodes(ownerID, nodes, bitmap, including, node) { var count = 0; var expandedNodes = new Array(SIZE); for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) { expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined; } expandedNodes[including] = node; return new HashArrayMapNode(ownerID, count + 1, expandedNodes); } function mergeIntoMapWith(map, merger, iterables) { var iters = []; for (var ii = 0; ii < iterables.length; ii++) { var value = iterables[ii]; var iter = KeyedIterable(value); if (!isIterable(value)) { iter = iter.map(function(v ) {return fromJS(v)}); } iters.push(iter); } return mergeIntoCollectionWith(map, merger, iters); } function deepMerger(existing, value, key) { return existing && existing.mergeDeep && isIterable(value) ? existing.mergeDeep(value) : is(existing, value) ? existing : value; } function deepMergerWith(merger) { return function(existing, value, key) { if (existing && existing.mergeDeepWith && isIterable(value)) { return existing.mergeDeepWith(merger, value); } var nextValue = merger(existing, value, key); return is(existing, nextValue) ? existing : nextValue; }; } function mergeIntoCollectionWith(collection, merger, iters) { iters = iters.filter(function(x ) {return x.size !== 0}); if (iters.length === 0) { return collection; } if (collection.size === 0 && !collection.__ownerID && iters.length === 1) { return collection.constructor(iters[0]); } return collection.withMutations(function(collection ) { var mergeIntoMap = merger ? function(value, key) { collection.update(key, NOT_SET, function(existing ) {return existing === NOT_SET ? value : merger(existing, value, key)} ); } : function(value, key) { collection.set(key, value); } for (var ii = 0; ii < iters.length; ii++) { iters[ii].forEach(mergeIntoMap); } }); } function updateInDeepMap(existing, keyPathIter, notSetValue, updater) { var isNotSet = existing === NOT_SET; var step = keyPathIter.next(); if (step.done) { var existingValue = isNotSet ? notSetValue : existing; var newValue = updater(existingValue); return newValue === existingValue ? existing : newValue; } invariant( isNotSet || (existing && existing.set), 'invalid keyPath' ); var key = step.value; var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET); var nextUpdated = updateInDeepMap( nextExisting, keyPathIter, notSetValue, updater ); return nextUpdated === nextExisting ? existing : nextUpdated === NOT_SET ? existing.remove(key) : (isNotSet ? emptyMap() : existing).set(key, nextUpdated); } function popCount(x) { x = x - ((x >> 1) & 0x55555555); x = (x & 0x33333333) + ((x >> 2) & 0x33333333); x = (x + (x >> 4)) & 0x0f0f0f0f; x = x + (x >> 8); x = x + (x >> 16); return x & 0x7f; } function setIn(array, idx, val, canEdit) { var newArray = canEdit ? array : arrCopy(array); newArray[idx] = val; return newArray; } function spliceIn(array, idx, val, canEdit) { var newLen = array.length + 1; if (canEdit && idx + 1 === newLen) { array[idx] = val; return array; } var newArray = new Array(newLen); var after = 0; for (var ii = 0; ii < newLen; ii++) { if (ii === idx) { newArray[ii] = val; after = -1; } else { newArray[ii] = array[ii + after]; } } return newArray; } function spliceOut(array, idx, canEdit) { var newLen = array.length - 1; if (canEdit && idx === newLen) { array.pop(); return array; } var newArray = new Array(newLen); var after = 0; for (var ii = 0; ii < newLen; ii++) { if (ii === idx) { after = 1; } newArray[ii] = array[ii + after]; } return newArray; } var MAX_ARRAY_MAP_SIZE = SIZE / 4; var MAX_BITMAP_INDEXED_SIZE = SIZE / 2; var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4; createClass(List, IndexedCollection); // @pragma Construction function List(value) { var empty = emptyList(); if (value === null || value === undefined) { return empty; } if (isList(value)) { return value; } var iter = IndexedIterable(value); var size = iter.size; if (size === 0) { return empty; } assertNotInfinite(size); if (size > 0 && size < SIZE) { return makeList(0, size, SHIFT, null, new VNode(iter.toArray())); } return empty.withMutations(function(list ) { list.setSize(size); iter.forEach(function(v, i) {return list.set(i, v)}); }); } List.of = function(/*...values*/) { return this(arguments); }; List.prototype.toString = function() { return this.__toString('List [', ']'); }; // @pragma Access List.prototype.get = function(index, notSetValue) { index = wrapIndex(this, index); if (index >= 0 && index < this.size) { index += this._origin; var node = listNodeFor(this, index); return node && node.array[index & MASK]; } return notSetValue; }; // @pragma Modification List.prototype.set = function(index, value) { return updateList(this, index, value); }; List.prototype.remove = function(index) { return !this.has(index) ? this : index === 0 ? this.shift() : index === this.size - 1 ? this.pop() : this.splice(index, 1); }; List.prototype.insert = function(index, value) { return this.splice(index, 0, value); }; List.prototype.clear = function() { if (this.size === 0) { return this; } if (this.__ownerID) { this.size = this._origin = this._capacity = 0; this._level = SHIFT; this._root = this._tail = null; this.__hash = undefined; this.__altered = true; return this; } return emptyList(); }; List.prototype.push = function(/*...values*/) { var values = arguments; var oldSize = this.size; return this.withMutations(function(list ) { setListBounds(list, 0, oldSize + values.length); for (var ii = 0; ii < values.length; ii++) { list.set(oldSize + ii, values[ii]); } }); }; List.prototype.pop = function() { return setListBounds(this, 0, -1); }; List.prototype.unshift = function(/*...values*/) { var values = arguments; return this.withMutations(function(list ) { setListBounds(list, -values.length); for (var ii = 0; ii < values.length; ii++) { list.set(ii, values[ii]); } }); }; List.prototype.shift = function() { return setListBounds(this, 1); }; // @pragma Composition List.prototype.merge = function(/*...iters*/) { return mergeIntoListWith(this, undefined, arguments); }; List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); return mergeIntoListWith(this, merger, iters); }; List.prototype.mergeDeep = function(/*...iters*/) { return mergeIntoListWith(this, deepMerger, arguments); }; List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1); return mergeIntoListWith(this, deepMergerWith(merger), iters); }; List.prototype.setSize = function(size) { return setListBounds(this, 0, size); }; // @pragma Iteration List.prototype.slice = function(begin, end) { var size = this.size; if (wholeSlice(begin, end, size)) { return this; } return setListBounds( this, resolveBegin(begin, size), resolveEnd(end, size) ); }; List.prototype.__iterator = function(type, reverse) { var index = 0; var values = iterateList(this, reverse); return new Iterator(function() { var value = values(); return value === DONE ? iteratorDone() : iteratorValue(type, index++, value); }); }; List.prototype.__iterate = function(fn, reverse) { var index = 0; var values = iterateList(this, reverse); var value; while ((value = values()) !== DONE) { if (fn(value, index++, this) === false) { break; } } return index; }; List.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } if (!ownerID) { this.__ownerID = ownerID; return this; } return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash); }; function isList(maybeList) { return !!(maybeList && maybeList[IS_LIST_SENTINEL]); } List.isList = isList; var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@'; var ListPrototype = List.prototype; ListPrototype[IS_LIST_SENTINEL] = true; ListPrototype[DELETE] = ListPrototype.remove; ListPrototype.setIn = MapPrototype.setIn; ListPrototype.deleteIn = ListPrototype.removeIn = MapPrototype.removeIn; ListPrototype.update = MapPrototype.update; ListPrototype.updateIn = MapPrototype.updateIn; ListPrototype.mergeIn = MapPrototype.mergeIn; ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn; ListPrototype.withMutations = MapPrototype.withMutations; ListPrototype.asMutable = MapPrototype.asMutable; ListPrototype.asImmutable = MapPrototype.asImmutable; ListPrototype.wasAltered = MapPrototype.wasAltered; function VNode(array, ownerID) { this.array = array; this.ownerID = ownerID; } // TODO: seems like these methods are very similar VNode.prototype.removeBefore = function(ownerID, level, index) { if (index === level ? 1 << level : 0 || this.array.length === 0) { return this; } var originIndex = (index >>> level) & MASK; if (originIndex >= this.array.length) { return new VNode([], ownerID); } var removingFirst = originIndex === 0; var newChild; if (level > 0) { var oldChild = this.array[originIndex]; newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index); if (newChild === oldChild && removingFirst) { return this; } } if (removingFirst && !newChild) { return this; } var editable = editableVNode(this, ownerID); if (!removingFirst) { for (var ii = 0; ii < originIndex; ii++) { editable.array[ii] = undefined; } } if (newChild) { editable.array[originIndex] = newChild; } return editable; }; VNode.prototype.removeAfter = function(ownerID, level, index) { if (index === (level ? 1 << level : 0) || this.array.length === 0) { return this; } var sizeIndex = ((index - 1) >>> level) & MASK; if (sizeIndex >= this.array.length) { return this; } var newChild; if (level > 0) { var oldChild = this.array[sizeIndex]; newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index); if (newChild === oldChild && sizeIndex === this.array.length - 1) { return this; } } var editable = editableVNode(this, ownerID); editable.array.splice(sizeIndex + 1); if (newChild) { editable.array[sizeIndex] = newChild; } return editable; }; var DONE = {}; function iterateList(list, reverse) { var left = list._origin; var right = list._capacity; var tailPos = getTailOffset(right); var tail = list._tail; return iterateNodeOrLeaf(list._root, list._level, 0); function iterateNodeOrLeaf(node, level, offset) { return level === 0 ? iterateLeaf(node, offset) : iterateNode(node, level, offset); } function iterateLeaf(node, offset) { var array = offset === tailPos ? tail && tail.array : node && node.array; var from = offset > left ? 0 : left - offset; var to = right - offset; if (to > SIZE) { to = SIZE; } return function() { if (from === to) { return DONE; } var idx = reverse ? --to : from++; return array && array[idx]; }; } function iterateNode(node, level, offset) { var values; var array = node && node.array; var from = offset > left ? 0 : (left - offset) >> level; var to = ((right - offset) >> level) + 1; if (to > SIZE) { to = SIZE; } return function() { do { if (values) { var value = values(); if (value !== DONE) { return value; } values = null; } if (from === to) { return DONE; } var idx = reverse ? --to : from++; values = iterateNodeOrLeaf( array && array[idx], level - SHIFT, offset + (idx << level) ); } while (true); }; } } function makeList(origin, capacity, level, root, tail, ownerID, hash) { var list = Object.create(ListPrototype); list.size = capacity - origin; list._origin = origin; list._capacity = capacity; list._level = level; list._root = root; list._tail = tail; list.__ownerID = ownerID; list.__hash = hash; list.__altered = false; return list; } var EMPTY_LIST; function emptyList() { return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT)); } function updateList(list, index, value) { index = wrapIndex(list, index); if (index !== index) { return list; } if (index >= list.size || index < 0) { return list.withMutations(function(list ) { index < 0 ? setListBounds(list, index).set(0, value) : setListBounds(list, 0, index + 1).set(index, value) }); } index += list._origin; var newTail = list._tail; var newRoot = list._root; var didAlter = MakeRef(DID_ALTER); if (index >= getTailOffset(list._capacity)) { newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter); } else { newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter); } if (!didAlter.value) { return list; } if (list.__ownerID) { list._root = newRoot; list._tail = newTail; list.__hash = undefined; list.__altered = true; return list; } return makeList(list._origin, list._capacity, list._level, newRoot, newTail); } function updateVNode(node, ownerID, level, index, value, didAlter) { var idx = (index >>> level) & MASK; var nodeHas = node && idx < node.array.length; if (!nodeHas && value === undefined) { return node; } var newNode; if (level > 0) { var lowerNode = node && node.array[idx]; var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter); if (newLowerNode === lowerNode) { return node; } newNode = editableVNode(node, ownerID); newNode.array[idx] = newLowerNode; return newNode; } if (nodeHas && node.array[idx] === value) { return node; } SetRef(didAlter); newNode = editableVNode(node, ownerID); if (value === undefined && idx === newNode.array.length - 1) { newNode.array.pop(); } else { newNode.array[idx] = value; } return newNode; } function editableVNode(node, ownerID) { if (ownerID && node && ownerID === node.ownerID) { return node; } return new VNode(node ? node.array.slice() : [], ownerID); } function listNodeFor(list, rawIndex) { if (rawIndex >= getTailOffset(list._capacity)) { return list._tail; } if (rawIndex < 1 << (list._level + SHIFT)) { var node = list._root; var level = list._level; while (node && level > 0) { node = node.array[(rawIndex >>> level) & MASK]; level -= SHIFT; } return node; } } function setListBounds(list, begin, end) { // Sanitize begin & end using this shorthand for ToInt32(argument) // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32 if (begin !== undefined) { begin = begin | 0; } if (end !== undefined) { end = end | 0; } var owner = list.__ownerID || new OwnerID(); var oldOrigin = list._origin; var oldCapacity = list._capacity; var newOrigin = oldOrigin + begin; var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end; if (newOrigin === oldOrigin && newCapacity === oldCapacity) { return list; } // If it's going to end after it starts, it's empty. if (newOrigin >= newCapacity) { return list.clear(); } var newLevel = list._level; var newRoot = list._root; // New origin might need creating a higher root. var offsetShift = 0; while (newOrigin + offsetShift < 0) { newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner); newLevel += SHIFT; offsetShift += 1 << newLevel; } if (offsetShift) { newOrigin += offsetShift; oldOrigin += offsetShift; newCapacity += offsetShift; oldCapacity += offsetShift; } var oldTailOffset = getTailOffset(oldCapacity); var newTailOffset = getTailOffset(newCapacity); // New size might need creating a higher root. while (newTailOffset >= 1 << (newLevel + SHIFT)) { newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner); newLevel += SHIFT; } // Locate or create the new tail. var oldTail = list._tail; var newTail = newTailOffset < oldTailOffset ? listNodeFor(list, newCapacity - 1) : newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail; // Merge Tail into tree. if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) { newRoot = editableVNode(newRoot, owner); var node = newRoot; for (var level = newLevel; level > SHIFT; level -= SHIFT) { var idx = (oldTailOffset >>> level) & MASK; node = node.array[idx] = editableVNode(node.array[idx], owner); } node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail; } // If the size has been reduced, there's a chance the tail needs to be trimmed. if (newCapacity < oldCapacity) { newTail = newTail && newTail.removeAfter(owner, 0, newCapacity); } // If the new origin is within the tail, then we do not need a root. if (newOrigin >= newTailOffset) { newOrigin -= newTailOffset; newCapacity -= newTailOffset; newLevel = SHIFT; newRoot = null; newTail = newTail && newTail.removeBefore(owner, 0, newOrigin); // Otherwise, if the root has been trimmed, garbage collect. } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) { offsetShift = 0; // Identify the new top root node of the subtree of the old root. while (newRoot) { var beginIndex = (newOrigin >>> newLevel) & MASK; if (beginIndex !== (newTailOffset >>> newLevel) & MASK) { break; } if (beginIndex) { offsetShift += (1 << newLevel) * beginIndex; } newLevel -= SHIFT; newRoot = newRoot.array[beginIndex]; } // Trim the new sides of the new root. if (newRoot && newOrigin > oldOrigin) { newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift); } if (newRoot && newTailOffset < oldTailOffset) { newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift); } if (offsetShift) { newOrigin -= offsetShift; newCapacity -= offsetShift; } } if (list.__ownerID) { list.size = newCapacity - newOrigin; list._origin = newOrigin; list._capacity = newCapacity; list._level = newLevel; list._root = newRoot; list._tail = newTail; list.__hash = undefined; list.__altered = true; return list; } return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail); } function mergeIntoListWith(list, merger, iterables) { var iters = []; var maxSize = 0; for (var ii = 0; ii < iterables.length; ii++) { var value = iterables[ii]; var iter = IndexedIterable(value); if (iter.size > maxSize) { maxSize = iter.size; } if (!isIterable(value)) { iter = iter.map(function(v ) {return fromJS(v)}); } iters.push(iter); } if (maxSize > list.size) { list = list.setSize(maxSize); } return mergeIntoCollectionWith(list, merger, iters); } function getTailOffset(size) { return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT); } createClass(OrderedMap, Map); // @pragma Construction function OrderedMap(value) { return value === null || value === undefined ? emptyOrderedMap() : isOrderedMap(value) ? value : emptyOrderedMap().withMutations(function(map ) { var iter = KeyedIterable(value); assertNotInfinite(iter.size); iter.forEach(function(v, k) {return map.set(k, v)}); }); } OrderedMap.of = function(/*...values*/) { return this(arguments); }; OrderedMap.prototype.toString = function() { return this.__toString('OrderedMap {', '}'); }; // @pragma Access OrderedMap.prototype.get = function(k, notSetValue) { var index = this._map.get(k); return index !== undefined ? this._list.get(index)[1] : notSetValue; }; // @pragma Modification OrderedMap.prototype.clear = function() { if (this.size === 0) { return this; } if (this.__ownerID) { this.size = 0; this._map.clear(); this._list.clear(); return this; } return emptyOrderedMap(); }; OrderedMap.prototype.set = function(k, v) { return updateOrderedMap(this, k, v); }; OrderedMap.prototype.remove = function(k) { return updateOrderedMap(this, k, NOT_SET); }; OrderedMap.prototype.wasAltered = function() { return this._map.wasAltered() || this._list.wasAltered(); }; OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this; return this._list.__iterate( function(entry ) {return entry && fn(entry[1], entry[0], this$0)}, reverse ); }; OrderedMap.prototype.__iterator = function(type, reverse) { return this._list.fromEntrySeq().__iterator(type, reverse); }; OrderedMap.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } var newMap = this._map.__ensureOwner(ownerID); var newList = this._list.__ensureOwner(ownerID); if (!ownerID) { this.__ownerID = ownerID; this._map = newMap; this._list = newList; return this; } return makeOrderedMap(newMap, newList, ownerID, this.__hash); }; function isOrderedMap(maybeOrderedMap) { return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap); } OrderedMap.isOrderedMap = isOrderedMap; OrderedMap.prototype[IS_ORDERED_SENTINEL] = true; OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove; function makeOrderedMap(map, list, ownerID, hash) { var omap = Object.create(OrderedMap.prototype); omap.size = map ? map.size : 0; omap._map = map; omap._list = list; omap.__ownerID = ownerID; omap.__hash = hash; return omap; } var EMPTY_ORDERED_MAP; function emptyOrderedMap() { return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList())); } function updateOrderedMap(omap, k, v) { var map = omap._map; var list = omap._list; var i = map.get(k); var has = i !== undefined; var newMap; var newList; if (v === NOT_SET) { // removed if (!has) { return omap; } if (list.size >= SIZE && list.size >= map.size * 2) { newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx}); newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap(); if (omap.__ownerID) { newMap.__ownerID = newList.__ownerID = omap.__ownerID; } } else { newMap = map.remove(k); newList = i === list.size - 1 ? list.pop() : list.set(i, undefined); } } else { if (has) { if (v === list.get(i)[1]) { return omap; } newMap = map; newList = list.set(i, [k, v]); } else { newMap = map.set(k, list.size); newList = list.set(list.size, [k, v]); } } if (omap.__ownerID) { omap.size = newMap.size; omap._map = newMap; omap._list = newList; omap.__hash = undefined; return omap; } return makeOrderedMap(newMap, newList); } createClass(ToKeyedSequence, KeyedSeq); function ToKeyedSequence(indexed, useKeys) { this._iter = indexed; this._useKeys = useKeys; this.size = indexed.size; } ToKeyedSequence.prototype.get = function(key, notSetValue) { return this._iter.get(key, notSetValue); }; ToKeyedSequence.prototype.has = function(key) { return this._iter.has(key); }; ToKeyedSequence.prototype.valueSeq = function() { return this._iter.valueSeq(); }; ToKeyedSequence.prototype.reverse = function() {var this$0 = this; var reversedSequence = reverseFactory(this, true); if (!this._useKeys) { reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()}; } return reversedSequence; }; ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this; var mappedSequence = mapFactory(this, mapper, context); if (!this._useKeys) { mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)}; } return mappedSequence; }; ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; var ii; return this._iter.__iterate( this._useKeys ? function(v, k) {return fn(v, k, this$0)} : ((ii = reverse ? resolveSize(this) : 0), function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}), reverse ); }; ToKeyedSequence.prototype.__iterator = function(type, reverse) { if (this._useKeys) { return this._iter.__iterator(type, reverse); } var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); var ii = reverse ? resolveSize(this) : 0; return new Iterator(function() { var step = iterator.next(); return step.done ? step : iteratorValue(type, reverse ? --ii : ii++, step.value, step); }); }; ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true; createClass(ToIndexedSequence, IndexedSeq); function ToIndexedSequence(iter) { this._iter = iter; this.size = iter.size; } ToIndexedSequence.prototype.includes = function(value) { return this._iter.includes(value); }; ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; var iterations = 0; return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse); }; ToIndexedSequence.prototype.__iterator = function(type, reverse) { var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); var iterations = 0; return new Iterator(function() { var step = iterator.next(); return step.done ? step : iteratorValue(type, iterations++, step.value, step) }); }; createClass(ToSetSequence, SetSeq); function ToSetSequence(iter) { this._iter = iter; this.size = iter.size; } ToSetSequence.prototype.has = function(key) { return this._iter.includes(key); }; ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse); }; ToSetSequence.prototype.__iterator = function(type, reverse) { var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); return new Iterator(function() { var step = iterator.next(); return step.done ? step : iteratorValue(type, step.value, step.value, step); }); }; createClass(FromEntriesSequence, KeyedSeq); function FromEntriesSequence(entries) { this._iter = entries; this.size = entries.size; } FromEntriesSequence.prototype.entrySeq = function() { return this._iter.toSeq(); }; FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this; return this._iter.__iterate(function(entry ) { // Check if entry exists first so array access doesn't throw for holes // in the parent iteration. if (entry) { validateEntry(entry); var indexedIterable = isIterable(entry); return fn( indexedIterable ? entry.get(1) : entry[1], indexedIterable ? entry.get(0) : entry[0], this$0 ); } }, reverse); }; FromEntriesSequence.prototype.__iterator = function(type, reverse) { var iterator = this._iter.__iterator(ITERATE_VALUES, reverse); return new Iterator(function() { while (true) { var step = iterator.next(); if (step.done) { return step; } var entry = step.value; // Check if entry exists first so array access doesn't throw for holes // in the parent iteration. if (entry) { validateEntry(entry); var indexedIterable = isIterable(entry); return iteratorValue( type, indexedIterable ? entry.get(0) : entry[0], indexedIterable ? entry.get(1) : entry[1], step ); } } }); }; ToIndexedSequence.prototype.cacheResult = ToKeyedSequence.prototype.cacheResult = ToSetSequence.prototype.cacheResult = FromEntriesSequence.prototype.cacheResult = cacheResultThrough; function flipFactory(iterable) { var flipSequence = makeSequence(iterable); flipSequence._iter = iterable; flipSequence.size = iterable.size; flipSequence.flip = function() {return iterable}; flipSequence.reverse = function () { var reversedSequence = iterable.reverse.apply(this); // super.reverse() reversedSequence.flip = function() {return iterable.reverse()}; return reversedSequence; }; flipSequence.has = function(key ) {return iterable.includes(key)}; flipSequence.includes = function(key ) {return iterable.has(key)}; flipSequence.cacheResult = cacheResultThrough; flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse); } flipSequence.__iteratorUncached = function(type, reverse) { if (type === ITERATE_ENTRIES) { var iterator = iterable.__iterator(type, reverse); return new Iterator(function() { var step = iterator.next(); if (!step.done) { var k = step.value[0]; step.value[0] = step.value[1]; step.value[1] = k; } return step; }); } return iterable.__iterator( type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES, reverse ); } return flipSequence; } function mapFactory(iterable, mapper, context) { var mappedSequence = makeSequence(iterable); mappedSequence.size = iterable.size; mappedSequence.has = function(key ) {return iterable.has(key)}; mappedSequence.get = function(key, notSetValue) { var v = iterable.get(key, NOT_SET); return v === NOT_SET ? notSetValue : mapper.call(context, v, key, iterable); }; mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; return iterable.__iterate( function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false}, reverse ); } mappedSequence.__iteratorUncached = function (type, reverse) { var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); return new Iterator(function() { var step = iterator.next(); if (step.done) { return step; } var entry = step.value; var key = entry[0]; return iteratorValue( type, key, mapper.call(context, entry[1], key, iterable), step ); }); } return mappedSequence; } function reverseFactory(iterable, useKeys) { var reversedSequence = makeSequence(iterable); reversedSequence._iter = iterable; reversedSequence.size = iterable.size; reversedSequence.reverse = function() {return iterable}; if (iterable.flip) { reversedSequence.flip = function () { var flipSequence = flipFactory(iterable); flipSequence.reverse = function() {return iterable.flip()}; return flipSequence; }; } reversedSequence.get = function(key, notSetValue) {return iterable.get(useKeys ? key : -1 - key, notSetValue)}; reversedSequence.has = function(key ) {return iterable.has(useKeys ? key : -1 - key)}; reversedSequence.includes = function(value ) {return iterable.includes(value)}; reversedSequence.cacheResult = cacheResultThrough; reversedSequence.__iterate = function (fn, reverse) {var this$0 = this; return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse); }; reversedSequence.__iterator = function(type, reverse) {return iterable.__iterator(type, !reverse)}; return reversedSequence; } function filterFactory(iterable, predicate, context, useKeys) { var filterSequence = makeSequence(iterable); if (useKeys) { filterSequence.has = function(key ) { var v = iterable.get(key, NOT_SET); return v !== NOT_SET && !!predicate.call(context, v, key, iterable); }; filterSequence.get = function(key, notSetValue) { var v = iterable.get(key, NOT_SET); return v !== NOT_SET && predicate.call(context, v, key, iterable) ? v : notSetValue; }; } filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; var iterations = 0; iterable.__iterate(function(v, k, c) { if (predicate.call(context, v, k, c)) { iterations++; return fn(v, useKeys ? k : iterations - 1, this$0); } }, reverse); return iterations; }; filterSequence.__iteratorUncached = function (type, reverse) { var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); var iterations = 0; return new Iterator(function() { while (true) { var step = iterator.next(); if (step.done) { return step; } var entry = step.value; var key = entry[0]; var value = entry[1]; if (predicate.call(context, value, key, iterable)) { return iteratorValue(type, useKeys ? key : iterations++, value, step); } } }); } return filterSequence; } function countByFactory(iterable, grouper, context) { var groups = Map().asMutable(); iterable.__iterate(function(v, k) { groups.update( grouper.call(context, v, k, iterable), 0, function(a ) {return a + 1} ); }); return groups.asImmutable(); } function groupByFactory(iterable, grouper, context) { var isKeyedIter = isKeyed(iterable); var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable(); iterable.__iterate(function(v, k) { groups.update( grouper.call(context, v, k, iterable), function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)} ); }); var coerce = iterableClass(iterable); return groups.map(function(arr ) {return reify(iterable, coerce(arr))}); } function sliceFactory(iterable, begin, end, useKeys) { var originalSize = iterable.size; // Sanitize begin & end using this shorthand for ToInt32(argument) // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32 if (begin !== undefined) { begin = begin | 0; } if (end !== undefined) { if (end === Infinity) { end = originalSize; } else { end = end | 0; } } if (wholeSlice(begin, end, originalSize)) { return iterable; } var resolvedBegin = resolveBegin(begin, originalSize); var resolvedEnd = resolveEnd(end, originalSize); // begin or end will be NaN if they were provided as negative numbers and // this iterable's size is unknown. In that case, cache first so there is // a known size and these do not resolve to NaN. if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) { return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys); } // Note: resolvedEnd is undefined when the original sequence's length is // unknown and this slice did not supply an end and should contain all // elements after resolvedBegin. // In that case, resolvedSize will be NaN and sliceSize will remain undefined. var resolvedSize = resolvedEnd - resolvedBegin; var sliceSize; if (resolvedSize === resolvedSize) { sliceSize = resolvedSize < 0 ? 0 : resolvedSize; } var sliceSeq = makeSequence(iterable); // If iterable.size is undefined, the size of the realized sliceSeq is // unknown at this point unless the number of items to slice is 0 sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined; if (!useKeys && isSeq(iterable) && sliceSize >= 0) { sliceSeq.get = function (index, notSetValue) { index = wrapIndex(this, index); return index >= 0 && index < sliceSize ? iterable.get(index + resolvedBegin, notSetValue) : notSetValue; } } sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this; if (sliceSize === 0) { return 0; } if (reverse) { return this.cacheResult().__iterate(fn, reverse); } var skipped = 0; var isSkipping = true; var iterations = 0; iterable.__iterate(function(v, k) { if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) { iterations++; return fn(v, useKeys ? k : iterations - 1, this$0) !== false && iterations !== sliceSize; } }); return iterations; }; sliceSeq.__iteratorUncached = function(type, reverse) { if (sliceSize !== 0 && reverse) { return this.cacheResult().__iterator(type, reverse); } // Don't bother instantiating parent iterator if taking 0. var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse); var skipped = 0; var iterations = 0; return new Iterator(function() { while (skipped++ < resolvedBegin) { iterator.next(); } if (++iterations > sliceSize) { return iteratorDone(); } var step = iterator.next(); if (useKeys || type === ITERATE_VALUES) { return step; } else if (type === ITERATE_KEYS) { return iteratorValue(type, iterations - 1, undefined, step); } else { return iteratorValue(type, iterations - 1, step.value[1], step); } }); } return sliceSeq; } function takeWhileFactory(iterable, predicate, context) { var takeSequence = makeSequence(iterable); takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this; if (reverse) { return this.cacheResult().__iterate(fn, reverse); } var iterations = 0; iterable.__iterate(function(v, k, c) {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)} ); return iterations; }; takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this; if (reverse) { return this.cacheResult().__iterator(type, reverse); } var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); var iterating = true; return new Iterator(function() { if (!iterating) { return iteratorDone(); } var step = iterator.next(); if (step.done) { return step; } var entry = step.value; var k = entry[0]; var v = entry[1]; if (!predicate.call(context, v, k, this$0)) { iterating = false; return iteratorDone(); } return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step); }); }; return takeSequence; } function skipWhileFactory(iterable, predicate, context, useKeys) { var skipSequence = makeSequence(iterable); skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this; if (reverse) { return this.cacheResult().__iterate(fn, reverse); } var isSkipping = true; var iterations = 0; iterable.__iterate(function(v, k, c) { if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) { iterations++; return fn(v, useKeys ? k : iterations - 1, this$0); } }); return iterations; }; skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this; if (reverse) { return this.cacheResult().__iterator(type, reverse); } var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse); var skipping = true; var iterations = 0; return new Iterator(function() { var step, k, v; do { step = iterator.next(); if (step.done) { if (useKeys || type === ITERATE_VALUES) { return step; } else if (type === ITERATE_KEYS) { return iteratorValue(type, iterations++, undefined, step); } else { return iteratorValue(type, iterations++, step.value[1], step); } } var entry = step.value; k = entry[0]; v = entry[1]; skipping && (skipping = predicate.call(context, v, k, this$0)); } while (skipping); return type === ITERATE_ENTRIES ? step : iteratorValue(type, k, v, step); }); }; return skipSequence; } function concatFactory(iterable, values) { var isKeyedIterable = isKeyed(iterable); var iters = [iterable].concat(values).map(function(v ) { if (!isIterable(v)) { v = isKeyedIterable ? keyedSeqFromValue(v) : indexedSeqFromValue(Array.isArray(v) ? v : [v]); } else if (isKeyedIterable) { v = KeyedIterable(v); } return v; }).filter(function(v ) {return v.size !== 0}); if (iters.length === 0) { return iterable; } if (iters.length === 1) { var singleton = iters[0]; if (singleton === iterable || isKeyedIterable && isKeyed(singleton) || isIndexed(iterable) && isIndexed(singleton)) { return singleton; } } var concatSeq = new ArraySeq(iters); if (isKeyedIterable) { concatSeq = concatSeq.toKeyedSeq(); } else if (!isIndexed(iterable)) { concatSeq = concatSeq.toSetSeq(); } concatSeq = concatSeq.flatten(true); concatSeq.size = iters.reduce( function(sum, seq) { if (sum !== undefined) { var size = seq.size; if (size !== undefined) { return sum + size; } } }, 0 ); return concatSeq; } function flattenFactory(iterable, depth, useKeys) { var flatSequence = makeSequence(iterable); flatSequence.__iterateUncached = function(fn, reverse) { var iterations = 0; var stopped = false; function flatDeep(iter, currentDepth) {var this$0 = this; iter.__iterate(function(v, k) { if ((!depth || currentDepth < depth) && isIterable(v)) { flatDeep(v, currentDepth + 1); } else if (fn(v, useKeys ? k : iterations++, this$0) === false) { stopped = true; } return !stopped; }, reverse); } flatDeep(iterable, 0); return iterations; } flatSequence.__iteratorUncached = function(type, reverse) { var iterator = iterable.__iterator(type, reverse); var stack = []; var iterations = 0; return new Iterator(function() { while (iterator) { var step = iterator.next(); if (step.done !== false) { iterator = stack.pop(); continue; } var v = step.value; if (type === ITERATE_ENTRIES) { v = v[1]; } if ((!depth || stack.length < depth) && isIterable(v)) { stack.push(iterator); iterator = v.__iterator(type, reverse); } else { return useKeys ? step : iteratorValue(type, iterations++, v, step); } } return iteratorDone(); }); } return flatSequence; } function flatMapFactory(iterable, mapper, context) { var coerce = iterableClass(iterable); return iterable.toSeq().map( function(v, k) {return coerce(mapper.call(context, v, k, iterable))} ).flatten(true); } function interposeFactory(iterable, separator) { var interposedSequence = makeSequence(iterable); interposedSequence.size = iterable.size && iterable.size * 2 -1; interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this; var iterations = 0; iterable.__iterate(function(v, k) {return (!iterations || fn(separator, iterations++, this$0) !== false) && fn(v, iterations++, this$0) !== false}, reverse ); return iterations; }; interposedSequence.__iteratorUncached = function(type, reverse) { var iterator = iterable.__iterator(ITERATE_VALUES, reverse); var iterations = 0; var step; return new Iterator(function() { if (!step || iterations % 2) { step = iterator.next(); if (step.done) { return step; } } return iterations % 2 ? iteratorValue(type, iterations++, separator) : iteratorValue(type, iterations++, step.value, step); }); }; return interposedSequence; } function sortFactory(iterable, comparator, mapper) { if (!comparator) { comparator = defaultComparator; } var isKeyedIterable = isKeyed(iterable); var index = 0; var entries = iterable.toSeq().map( function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]} ).toArray(); entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach( isKeyedIterable ? function(v, i) { entries[i].length = 2; } : function(v, i) { entries[i] = v[1]; } ); return isKeyedIterable ? KeyedSeq(entries) : isIndexed(iterable) ? IndexedSeq(entries) : SetSeq(entries); } function maxFactory(iterable, comparator, mapper) { if (!comparator) { comparator = defaultComparator; } if (mapper) { var entry = iterable.toSeq() .map(function(v, k) {return [v, mapper(v, k, iterable)]}) .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a}); return entry && entry[0]; } else { return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a}); } } function maxCompare(comparator, a, b) { var comp = comparator(b, a); // b is considered the new max if the comparator declares them equal, but // they are not equal and b is in fact a nullish value. return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0; } function zipWithFactory(keyIter, zipper, iters) { var zipSequence = makeSequence(keyIter); zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min(); // Note: this a generic base implementation of __iterate in terms of // __iterator which may be more generically useful in the future. zipSequence.__iterate = function(fn, reverse) { /* generic: var iterator = this.__iterator(ITERATE_ENTRIES, reverse); var step; var iterations = 0; while (!(step = iterator.next()).done) { iterations++; if (fn(step.value[1], step.value[0], this) === false) { break; } } return iterations; */ // indexed: var iterator = this.__iterator(ITERATE_VALUES, reverse); var step; var iterations = 0; while (!(step = iterator.next()).done) { if (fn(step.value, iterations++, this) === false) { break; } } return iterations; }; zipSequence.__iteratorUncached = function(type, reverse) { var iterators = iters.map(function(i ) {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))} ); var iterations = 0; var isDone = false; return new Iterator(function() { var steps; if (!isDone) { steps = iterators.map(function(i ) {return i.next()}); isDone = steps.some(function(s ) {return s.done}); } if (isDone) { return iteratorDone(); } return iteratorValue( type, iterations++, zipper.apply(null, steps.map(function(s ) {return s.value})) ); }); }; return zipSequence } // #pragma Helper Functions function reify(iter, seq) { return isSeq(iter) ? seq : iter.constructor(seq); } function validateEntry(entry) { if (entry !== Object(entry)) { throw new TypeError('Expected [K, V] tuple: ' + entry); } } function resolveSize(iter) { assertNotInfinite(iter.size); return ensureSize(iter); } function iterableClass(iterable) { return isKeyed(iterable) ? KeyedIterable : isIndexed(iterable) ? IndexedIterable : SetIterable; } function makeSequence(iterable) { return Object.create( ( isKeyed(iterable) ? KeyedSeq : isIndexed(iterable) ? IndexedSeq : SetSeq ).prototype ); } function cacheResultThrough() { if (this._iter.cacheResult) { this._iter.cacheResult(); this.size = this._iter.size; return this; } else { return Seq.prototype.cacheResult.call(this); } } function defaultComparator(a, b) { return a > b ? 1 : a < b ? -1 : 0; } function forceIterator(keyPath) { var iter = getIterator(keyPath); if (!iter) { // Array might not be iterable in this environment, so we need a fallback // to our wrapped type. if (!isArrayLike(keyPath)) { throw new TypeError('Expected iterable or array-like: ' + keyPath); } iter = getIterator(Iterable(keyPath)); } return iter; } createClass(Record, KeyedCollection); function Record(defaultValues, name) { var hasInitialized; var RecordType = function Record(values) { if (values instanceof RecordType) { return values; } if (!(this instanceof RecordType)) { return new RecordType(values); } if (!hasInitialized) { hasInitialized = true; var keys = Object.keys(defaultValues); setProps(RecordTypePrototype, keys); RecordTypePrototype.size = keys.length; RecordTypePrototype._name = name; RecordTypePrototype._keys = keys; RecordTypePrototype._defaultValues = defaultValues; } this._map = Map(values); }; var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype); RecordTypePrototype.constructor = RecordType; return RecordType; } Record.prototype.toString = function() { return this.__toString(recordName(this) + ' {', '}'); }; // @pragma Access Record.prototype.has = function(k) { return this._defaultValues.hasOwnProperty(k); }; Record.prototype.get = function(k, notSetValue) { if (!this.has(k)) { return notSetValue; } var defaultVal = this._defaultValues[k]; return this._map ? this._map.get(k, defaultVal) : defaultVal; }; // @pragma Modification Record.prototype.clear = function() { if (this.__ownerID) { this._map && this._map.clear(); return this; } var RecordType = this.constructor; return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap())); }; Record.prototype.set = function(k, v) { if (!this.has(k)) { throw new Error('Cannot set unknown key "' + k + '" on ' + recordName(this)); } if (this._map && !this._map.has(k)) { var defaultVal = this._defaultValues[k]; if (v === defaultVal) { return this; } } var newMap = this._map && this._map.set(k, v); if (this.__ownerID || newMap === this._map) { return this; } return makeRecord(this, newMap); }; Record.prototype.remove = function(k) { if (!this.has(k)) { return this; } var newMap = this._map && this._map.remove(k); if (this.__ownerID || newMap === this._map) { return this; } return makeRecord(this, newMap); }; Record.prototype.wasAltered = function() { return this._map.wasAltered(); }; Record.prototype.__iterator = function(type, reverse) {var this$0 = this; return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse); }; Record.prototype.__iterate = function(fn, reverse) {var this$0 = this; return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse); }; Record.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } var newMap = this._map && this._map.__ensureOwner(ownerID); if (!ownerID) { this.__ownerID = ownerID; this._map = newMap; return this; } return makeRecord(this, newMap, ownerID); }; var RecordPrototype = Record.prototype; RecordPrototype[DELETE] = RecordPrototype.remove; RecordPrototype.deleteIn = RecordPrototype.removeIn = MapPrototype.removeIn; RecordPrototype.merge = MapPrototype.merge; RecordPrototype.mergeWith = MapPrototype.mergeWith; RecordPrototype.mergeIn = MapPrototype.mergeIn; RecordPrototype.mergeDeep = MapPrototype.mergeDeep; RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith; RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn; RecordPrototype.setIn = MapPrototype.setIn; RecordPrototype.update = MapPrototype.update; RecordPrototype.updateIn = MapPrototype.updateIn; RecordPrototype.withMutations = MapPrototype.withMutations; RecordPrototype.asMutable = MapPrototype.asMutable; RecordPrototype.asImmutable = MapPrototype.asImmutable; function makeRecord(likeRecord, map, ownerID) { var record = Object.create(Object.getPrototypeOf(likeRecord)); record._map = map; record.__ownerID = ownerID; return record; } function recordName(record) { return record._name || record.constructor.name || 'Record'; } function setProps(prototype, names) { try { names.forEach(setProp.bind(undefined, prototype)); } catch (error) { // Object.defineProperty failed. Probably IE8. } } function setProp(prototype, name) { Object.defineProperty(prototype, name, { get: function() { return this.get(name); }, set: function(value) { invariant(this.__ownerID, 'Cannot set on an immutable record.'); this.set(name, value); } }); } createClass(Set, SetCollection); // @pragma Construction function Set(value) { return value === null || value === undefined ? emptySet() : isSet(value) && !isOrdered(value) ? value : emptySet().withMutations(function(set ) { var iter = SetIterable(value); assertNotInfinite(iter.size); iter.forEach(function(v ) {return set.add(v)}); }); } Set.of = function(/*...values*/) { return this(arguments); }; Set.fromKeys = function(value) { return this(KeyedIterable(value).keySeq()); }; Set.prototype.toString = function() { return this.__toString('Set {', '}'); }; // @pragma Access Set.prototype.has = function(value) { return this._map.has(value); }; // @pragma Modification Set.prototype.add = function(value) { return updateSet(this, this._map.set(value, true)); }; Set.prototype.remove = function(value) { return updateSet(this, this._map.remove(value)); }; Set.prototype.clear = function() { return updateSet(this, this._map.clear()); }; // @pragma Composition Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0); iters = iters.filter(function(x ) {return x.size !== 0}); if (iters.length === 0) { return this; } if (this.size === 0 && !this.__ownerID && iters.length === 1) { return this.constructor(iters[0]); } return this.withMutations(function(set ) { for (var ii = 0; ii < iters.length; ii++) { SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)}); } }); }; Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0); if (iters.length === 0) { return this; } iters = iters.map(function(iter ) {return SetIterable(iter)}); var originalSet = this; return this.withMutations(function(set ) { originalSet.forEach(function(value ) { if (!iters.every(function(iter ) {return iter.includes(value)})) { set.remove(value); } }); }); }; Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0); if (iters.length === 0) { return this; } iters = iters.map(function(iter ) {return SetIterable(iter)}); var originalSet = this; return this.withMutations(function(set ) { originalSet.forEach(function(value ) { if (iters.some(function(iter ) {return iter.includes(value)})) { set.remove(value); } }); }); }; Set.prototype.merge = function() { return this.union.apply(this, arguments); }; Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1); return this.union.apply(this, iters); }; Set.prototype.sort = function(comparator) { // Late binding return OrderedSet(sortFactory(this, comparator)); }; Set.prototype.sortBy = function(mapper, comparator) { // Late binding return OrderedSet(sortFactory(this, comparator, mapper)); }; Set.prototype.wasAltered = function() { return this._map.wasAltered(); }; Set.prototype.__iterate = function(fn, reverse) {var this$0 = this; return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse); }; Set.prototype.__iterator = function(type, reverse) { return this._map.map(function(_, k) {return k}).__iterator(type, reverse); }; Set.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } var newMap = this._map.__ensureOwner(ownerID); if (!ownerID) { this.__ownerID = ownerID; this._map = newMap; return this; } return this.__make(newMap, ownerID); }; function isSet(maybeSet) { return !!(maybeSet && maybeSet[IS_SET_SENTINEL]); } Set.isSet = isSet; var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; var SetPrototype = Set.prototype; SetPrototype[IS_SET_SENTINEL] = true; SetPrototype[DELETE] = SetPrototype.remove; SetPrototype.mergeDeep = SetPrototype.merge; SetPrototype.mergeDeepWith = SetPrototype.mergeWith; SetPrototype.withMutations = MapPrototype.withMutations; SetPrototype.asMutable = MapPrototype.asMutable; SetPrototype.asImmutable = MapPrototype.asImmutable; SetPrototype.__empty = emptySet; SetPrototype.__make = makeSet; function updateSet(set, newMap) { if (set.__ownerID) { set.size = newMap.size; set._map = newMap; return set; } return newMap === set._map ? set : newMap.size === 0 ? set.__empty() : set.__make(newMap); } function makeSet(map, ownerID) { var set = Object.create(SetPrototype); set.size = map ? map.size : 0; set._map = map; set.__ownerID = ownerID; return set; } var EMPTY_SET; function emptySet() { return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap())); } createClass(OrderedSet, Set); // @pragma Construction function OrderedSet(value) { return value === null || value === undefined ? emptyOrderedSet() : isOrderedSet(value) ? value : emptyOrderedSet().withMutations(function(set ) { var iter = SetIterable(value); assertNotInfinite(iter.size); iter.forEach(function(v ) {return set.add(v)}); }); } OrderedSet.of = function(/*...values*/) { return this(arguments); }; OrderedSet.fromKeys = function(value) { return this(KeyedIterable(value).keySeq()); }; OrderedSet.prototype.toString = function() { return this.__toString('OrderedSet {', '}'); }; function isOrderedSet(maybeOrderedSet) { return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet); } OrderedSet.isOrderedSet = isOrderedSet; var OrderedSetPrototype = OrderedSet.prototype; OrderedSetPrototype[IS_ORDERED_SENTINEL] = true; OrderedSetPrototype.__empty = emptyOrderedSet; OrderedSetPrototype.__make = makeOrderedSet; function makeOrderedSet(map, ownerID) { var set = Object.create(OrderedSetPrototype); set.size = map ? map.size : 0; set._map = map; set.__ownerID = ownerID; return set; } var EMPTY_ORDERED_SET; function emptyOrderedSet() { return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap())); } createClass(Stack, IndexedCollection); // @pragma Construction function Stack(value) { return value === null || value === undefined ? emptyStack() : isStack(value) ? value : emptyStack().unshiftAll(value); } Stack.of = function(/*...values*/) { return this(arguments); }; Stack.prototype.toString = function() { return this.__toString('Stack [', ']'); }; // @pragma Access Stack.prototype.get = function(index, notSetValue) { var head = this._head; index = wrapIndex(this, index); while (head && index--) { head = head.next; } return head ? head.value : notSetValue; }; Stack.prototype.peek = function() { return this._head && this._head.value; }; // @pragma Modification Stack.prototype.push = function(/*...values*/) { if (arguments.length === 0) { return this; } var newSize = this.size + arguments.length; var head = this._head; for (var ii = arguments.length - 1; ii >= 0; ii--) { head = { value: arguments[ii], next: head }; } if (this.__ownerID) { this.size = newSize; this._head = head; this.__hash = undefined; this.__altered = true; return this; } return makeStack(newSize, head); }; Stack.prototype.pushAll = function(iter) { iter = IndexedIterable(iter); if (iter.size === 0) { return this; } assertNotInfinite(iter.size); var newSize = this.size; var head = this._head; iter.reverse().forEach(function(value ) { newSize++; head = { value: value, next: head }; }); if (this.__ownerID) { this.size = newSize; this._head = head; this.__hash = undefined; this.__altered = true; return this; } return makeStack(newSize, head); }; Stack.prototype.pop = function() { return this.slice(1); }; Stack.prototype.unshift = function(/*...values*/) { return this.push.apply(this, arguments); }; Stack.prototype.unshiftAll = function(iter) { return this.pushAll(iter); }; Stack.prototype.shift = function() { return this.pop.apply(this, arguments); }; Stack.prototype.clear = function() { if (this.size === 0) { return this; } if (this.__ownerID) { this.size = 0; this._head = undefined; this.__hash = undefined; this.__altered = true; return this; } return emptyStack(); }; Stack.prototype.slice = function(begin, end) { if (wholeSlice(begin, end, this.size)) { return this; } var resolvedBegin = resolveBegin(begin, this.size); var resolvedEnd = resolveEnd(end, this.size); if (resolvedEnd !== this.size) { // super.slice(begin, end); return IndexedCollection.prototype.slice.call(this, begin, end); } var newSize = this.size - resolvedBegin; var head = this._head; while (resolvedBegin--) { head = head.next; } if (this.__ownerID) { this.size = newSize; this._head = head; this.__hash = undefined; this.__altered = true; return this; } return makeStack(newSize, head); }; // @pragma Mutability Stack.prototype.__ensureOwner = function(ownerID) { if (ownerID === this.__ownerID) { return this; } if (!ownerID) { this.__ownerID = ownerID; this.__altered = false; return this; } return makeStack(this.size, this._head, ownerID, this.__hash); }; // @pragma Iteration Stack.prototype.__iterate = function(fn, reverse) { if (reverse) { return this.reverse().__iterate(fn); } var iterations = 0; var node = this._head; while (node) { if (fn(node.value, iterations++, this) === false) { break; } node = node.next; } return iterations; }; Stack.prototype.__iterator = function(type, reverse) { if (reverse) { return this.reverse().__iterator(type); } var iterations = 0; var node = this._head; return new Iterator(function() { if (node) { var value = node.value; node = node.next; return iteratorValue(type, iterations++, value); } return iteratorDone(); }); }; function isStack(maybeStack) { return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]); } Stack.isStack = isStack; var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@'; var StackPrototype = Stack.prototype; StackPrototype[IS_STACK_SENTINEL] = true; StackPrototype.withMutations = MapPrototype.withMutations; StackPrototype.asMutable = MapPrototype.asMutable; StackPrototype.asImmutable = MapPrototype.asImmutable; StackPrototype.wasAltered = MapPrototype.wasAltered; function makeStack(size, head, ownerID, hash) { var map = Object.create(StackPrototype); map.size = size; map._head = head; map.__ownerID = ownerID; map.__hash = hash; map.__altered = false; return map; } var EMPTY_STACK; function emptyStack() { return EMPTY_STACK || (EMPTY_STACK = makeStack(0)); } /** * Contributes additional methods to a constructor */ function mixin(ctor, methods) { var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; }; Object.keys(methods).forEach(keyCopier); Object.getOwnPropertySymbols && Object.getOwnPropertySymbols(methods).forEach(keyCopier); return ctor; } Iterable.Iterator = Iterator; mixin(Iterable, { // ### Conversion to other types toArray: function() { assertNotInfinite(this.size); var array = new Array(this.size || 0); this.valueSeq().__iterate(function(v, i) { array[i] = v; }); return array; }, toIndexedSeq: function() { return new ToIndexedSequence(this); }, toJS: function() { return this.toSeq().map( function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value} ).__toJS(); }, toJSON: function() { return this.toSeq().map( function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value} ).__toJS(); }, toKeyedSeq: function() { return new ToKeyedSequence(this, true); }, toMap: function() { // Use Late Binding here to solve the circular dependency. return Map(this.toKeyedSeq()); }, toObject: function() { assertNotInfinite(this.size); var object = {}; this.__iterate(function(v, k) { object[k] = v; }); return object; }, toOrderedMap: function() { // Use Late Binding here to solve the circular dependency. return OrderedMap(this.toKeyedSeq()); }, toOrderedSet: function() { // Use Late Binding here to solve the circular dependency. return OrderedSet(isKeyed(this) ? this.valueSeq() : this); }, toSet: function() { // Use Late Binding here to solve the circular dependency. return Set(isKeyed(this) ? this.valueSeq() : this); }, toSetSeq: function() { return new ToSetSequence(this); }, toSeq: function() { return isIndexed(this) ? this.toIndexedSeq() : isKeyed(this) ? this.toKeyedSeq() : this.toSetSeq(); }, toStack: function() { // Use Late Binding here to solve the circular dependency. return Stack(isKeyed(this) ? this.valueSeq() : this); }, toList: function() { // Use Late Binding here to solve the circular dependency. return List(isKeyed(this) ? this.valueSeq() : this); }, // ### Common JavaScript methods and properties toString: function() { return '[Iterable]'; }, __toString: function(head, tail) { if (this.size === 0) { return head + tail; } return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail; }, // ### ES6 Collection methods (ES6 Array and Map) concat: function() {var values = SLICE$0.call(arguments, 0); return reify(this, concatFactory(this, values)); }, includes: function(searchValue) { return this.some(function(value ) {return is(value, searchValue)}); }, entries: function() { return this.__iterator(ITERATE_ENTRIES); }, every: function(predicate, context) { assertNotInfinite(this.size); var returnValue = true; this.__iterate(function(v, k, c) { if (!predicate.call(context, v, k, c)) { returnValue = false; return false; } }); return returnValue; }, filter: function(predicate, context) { return reify(this, filterFactory(this, predicate, context, true)); }, find: function(predicate, context, notSetValue) { var entry = this.findEntry(predicate, context); return entry ? entry[1] : notSetValue; }, forEach: function(sideEffect, context) { assertNotInfinite(this.size); return this.__iterate(context ? sideEffect.bind(context) : sideEffect); }, join: function(separator) { assertNotInfinite(this.size); separator = separator !== undefined ? '' + separator : ','; var joined = ''; var isFirst = true; this.__iterate(function(v ) { isFirst ? (isFirst = false) : (joined += separator); joined += v !== null && v !== undefined ? v.toString() : ''; }); return joined; }, keys: function() { return this.__iterator(ITERATE_KEYS); }, map: function(mapper, context) { return reify(this, mapFactory(this, mapper, context)); }, reduce: function(reducer, initialReduction, context) { assertNotInfinite(this.size); var reduction; var useFirst; if (arguments.length < 2) { useFirst = true; } else { reduction = initialReduction; } this.__iterate(function(v, k, c) { if (useFirst) { useFirst = false; reduction = v; } else { reduction = reducer.call(context, reduction, v, k, c); } }); return reduction; }, reduceRight: function(reducer, initialReduction, context) { var reversed = this.toKeyedSeq().reverse(); return reversed.reduce.apply(reversed, arguments); }, reverse: function() { return reify(this, reverseFactory(this, true)); }, slice: function(begin, end) { return reify(this, sliceFactory(this, begin, end, true)); }, some: function(predicate, context) { return !this.every(not(predicate), context); }, sort: function(comparator) { return reify(this, sortFactory(this, comparator)); }, values: function() { return this.__iterator(ITERATE_VALUES); }, // ### More sequential methods butLast: function() { return this.slice(0, -1); }, isEmpty: function() { return this.size !== undefined ? this.size === 0 : !this.some(function() {return true}); }, count: function(predicate, context) { return ensureSize( predicate ? this.toSeq().filter(predicate, context) : this ); }, countBy: function(grouper, context) { return countByFactory(this, grouper, context); }, equals: function(other) { return deepEqual(this, other); }, entrySeq: function() { var iterable = this; if (iterable._cache) { // We cache as an entries array, so we can just return the cache! return new ArraySeq(iterable._cache); } var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq(); entriesSequence.fromEntrySeq = function() {return iterable.toSeq()}; return entriesSequence; }, filterNot: function(predicate, context) { return this.filter(not(predicate), context); }, findEntry: function(predicate, context, notSetValue) { var found = notSetValue; this.__iterate(function(v, k, c) { if (predicate.call(context, v, k, c)) { found = [k, v]; return false; } }); return found; }, findKey: function(predicate, context) { var entry = this.findEntry(predicate, context); return entry && entry[0]; }, findLast: function(predicate, context, notSetValue) { return this.toKeyedSeq().reverse().find(predicate, context, notSetValue); }, findLastEntry: function(predicate, context, notSetValue) { return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue); }, findLastKey: function(predicate, context) { return this.toKeyedSeq().reverse().findKey(predicate, context); }, first: function() { return this.find(returnTrue); }, flatMap: function(mapper, context) { return reify(this, flatMapFactory(this, mapper, context)); }, flatten: function(depth) { return reify(this, flattenFactory(this, depth, true)); }, fromEntrySeq: function() { return new FromEntriesSequence(this); }, get: function(searchKey, notSetValue) { return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue); }, getIn: function(searchKeyPath, notSetValue) { var nested = this; // Note: in an ES6 environment, we would prefer: // for (var key of searchKeyPath) { var iter = forceIterator(searchKeyPath); var step; while (!(step = iter.next()).done) { var key = step.value; nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET; if (nested === NOT_SET) { return notSetValue; } } return nested; }, groupBy: function(grouper, context) { return groupByFactory(this, grouper, context); }, has: function(searchKey) { return this.get(searchKey, NOT_SET) !== NOT_SET; }, hasIn: function(searchKeyPath) { return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET; }, isSubset: function(iter) { iter = typeof iter.includes === 'function' ? iter : Iterable(iter); return this.every(function(value ) {return iter.includes(value)}); }, isSuperset: function(iter) { iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter); return iter.isSubset(this); }, keyOf: function(searchValue) { return this.findKey(function(value ) {return is(value, searchValue)}); }, keySeq: function() { return this.toSeq().map(keyMapper).toIndexedSeq(); }, last: function() { return this.toSeq().reverse().first(); }, lastKeyOf: function(searchValue) { return this.toKeyedSeq().reverse().keyOf(searchValue); }, max: function(comparator) { return maxFactory(this, comparator); }, maxBy: function(mapper, comparator) { return maxFactory(this, comparator, mapper); }, min: function(comparator) { return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator); }, minBy: function(mapper, comparator) { return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper); }, rest: function() { return this.slice(1); }, skip: function(amount) { return this.slice(Math.max(0, amount)); }, skipLast: function(amount) { return reify(this, this.toSeq().reverse().skip(amount).reverse()); }, skipWhile: function(predicate, context) { return reify(this, skipWhileFactory(this, predicate, context, true)); }, skipUntil: function(predicate, context) { return this.skipWhile(not(predicate), context); }, sortBy: function(mapper, comparator) { return reify(this, sortFactory(this, comparator, mapper)); }, take: function(amount) { return this.slice(0, Math.max(0, amount)); }, takeLast: function(amount) { return reify(this, this.toSeq().reverse().take(amount).reverse()); }, takeWhile: function(predicate, context) { return reify(this, takeWhileFactory(this, predicate, context)); }, takeUntil: function(predicate, context) { return this.takeWhile(not(predicate), context); }, valueSeq: function() { return this.toIndexedSeq(); }, // ### Hashable Object hashCode: function() { return this.__hash || (this.__hash = hashIterable(this)); } // ### Internal // abstract __iterate(fn, reverse) // abstract __iterator(type, reverse) }); // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@'; // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@'; // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; var IterablePrototype = Iterable.prototype; IterablePrototype[IS_ITERABLE_SENTINEL] = true; IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values; IterablePrototype.__toJS = IterablePrototype.toArray; IterablePrototype.__toStringMapper = quoteString; IterablePrototype.inspect = IterablePrototype.toSource = function() { return this.toString(); }; IterablePrototype.chain = IterablePrototype.flatMap; IterablePrototype.contains = IterablePrototype.includes; mixin(KeyedIterable, { // ### More sequential methods flip: function() { return reify(this, flipFactory(this)); }, mapEntries: function(mapper, context) {var this$0 = this; var iterations = 0; return reify(this, this.toSeq().map( function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)} ).fromEntrySeq() ); }, mapKeys: function(mapper, context) {var this$0 = this; return reify(this, this.toSeq().flip().map( function(k, v) {return mapper.call(context, k, v, this$0)} ).flip() ); } }); var KeyedIterablePrototype = KeyedIterable.prototype; KeyedIterablePrototype[IS_KEYED_SENTINEL] = true; KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries; KeyedIterablePrototype.__toJS = IterablePrototype.toObject; KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)}; mixin(IndexedIterable, { // ### Conversion to other types toKeyedSeq: function() { return new ToKeyedSequence(this, false); }, // ### ES6 Collection methods (ES6 Array and Map) filter: function(predicate, context) { return reify(this, filterFactory(this, predicate, context, false)); }, findIndex: function(predicate, context) { var entry = this.findEntry(predicate, context); return entry ? entry[0] : -1; }, indexOf: function(searchValue) { var key = this.keyOf(searchValue); return key === undefined ? -1 : key; }, lastIndexOf: function(searchValue) { var key = this.lastKeyOf(searchValue); return key === undefined ? -1 : key; }, reverse: function() { return reify(this, reverseFactory(this, false)); }, slice: function(begin, end) { return reify(this, sliceFactory(this, begin, end, false)); }, splice: function(index, removeNum /*, ...values*/) { var numArgs = arguments.length; removeNum = Math.max(removeNum | 0, 0); if (numArgs === 0 || (numArgs === 2 && !removeNum)) { return this; } // If index is negative, it should resolve relative to the size of the // collection. However size may be expensive to compute if not cached, so // only call count() if the number is in fact negative. index = resolveBegin(index, index < 0 ? this.count() : this.size); var spliced = this.slice(0, index); return reify( this, numArgs === 1 ? spliced : spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum)) ); }, // ### More collection methods findLastIndex: function(predicate, context) { var entry = this.findLastEntry(predicate, context); return entry ? entry[0] : -1; }, first: function() { return this.get(0); }, flatten: function(depth) { return reify(this, flattenFactory(this, depth, false)); }, get: function(index, notSetValue) { index = wrapIndex(this, index); return (index < 0 || (this.size === Infinity || (this.size !== undefined && index > this.size))) ? notSetValue : this.find(function(_, key) {return key === index}, undefined, notSetValue); }, has: function(index) { index = wrapIndex(this, index); return index >= 0 && (this.size !== undefined ? this.size === Infinity || index < this.size : this.indexOf(index) !== -1 ); }, interpose: function(separator) { return reify(this, interposeFactory(this, separator)); }, interleave: function(/*...iterables*/) { var iterables = [this].concat(arrCopy(arguments)); var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables); var interleaved = zipped.flatten(true); if (zipped.size) { interleaved.size = zipped.size * iterables.length; } return reify(this, interleaved); }, keySeq: function() { return Range(0, this.size); }, last: function() { return this.get(-1); }, skipWhile: function(predicate, context) { return reify(this, skipWhileFactory(this, predicate, context, false)); }, zip: function(/*, ...iterables */) { var iterables = [this].concat(arrCopy(arguments)); return reify(this, zipWithFactory(this, defaultZipper, iterables)); }, zipWith: function(zipper/*, ...iterables */) { var iterables = arrCopy(arguments); iterables[0] = this; return reify(this, zipWithFactory(this, zipper, iterables)); } }); IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true; IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true; mixin(SetIterable, { // ### ES6 Collection methods (ES6 Array and Map) get: function(value, notSetValue) { return this.has(value) ? value : notSetValue; }, includes: function(value) { return this.has(value); }, // ### More sequential methods keySeq: function() { return this.valueSeq(); } }); SetIterable.prototype.has = IterablePrototype.includes; SetIterable.prototype.contains = SetIterable.prototype.includes; // Mixin subclasses mixin(KeyedSeq, KeyedIterable.prototype); mixin(IndexedSeq, IndexedIterable.prototype); mixin(SetSeq, SetIterable.prototype); mixin(KeyedCollection, KeyedIterable.prototype); mixin(IndexedCollection, IndexedIterable.prototype); mixin(SetCollection, SetIterable.prototype); // #pragma Helper functions function keyMapper(v, k) { return k; } function entryMapper(v, k) { return [k, v]; } function not(predicate) { return function() { return !predicate.apply(this, arguments); } } function neg(predicate) { return function() { return -predicate.apply(this, arguments); } } function quoteString(value) { return typeof value === 'string' ? JSON.stringify(value) : String(value); } function defaultZipper() { return arrCopy(arguments); } function defaultNegComparator(a, b) { return a < b ? 1 : a > b ? -1 : 0; } function hashIterable(iterable) { if (iterable.size === Infinity) { return 0; } var ordered = isOrdered(iterable); var keyed = isKeyed(iterable); var h = ordered ? 1 : 0; var size = iterable.__iterate( keyed ? ordered ? function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } : function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } : ordered ? function(v ) { h = 31 * h + hash(v) | 0; } : function(v ) { h = h + hash(v) | 0; } ); return murmurHashOfSize(size, h); } function murmurHashOfSize(size, h) { h = imul(h, 0xCC9E2D51); h = imul(h << 15 | h >>> -15, 0x1B873593); h = imul(h << 13 | h >>> -13, 5); h = (h + 0xE6546B64 | 0) ^ size; h = imul(h ^ h >>> 16, 0x85EBCA6B); h = imul(h ^ h >>> 13, 0xC2B2AE35); h = smi(h ^ h >>> 16); return h; } function hashMerge(a, b) { return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int } var Immutable = { Iterable: Iterable, Seq: Seq, Collection: Collection, Map: Map, OrderedMap: OrderedMap, List: List, Stack: Stack, Set: Set, OrderedSet: OrderedSet, Record: Record, Range: Range, Repeat: Repeat, is: is, fromJS: fromJS }; return Immutable; })); drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/immutable.min.js000066400000000000000000001571101514731163200255260ustar00rootroot00000000000000/** * Copyright (c) 2014-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Immutable=e()}(this,function(){"use strict";function t(t,e){e&&(t.prototype=Object.create(e.prototype)),t.prototype.constructor=t}function e(t){return o(t)?t:O(t)}function r(t){return u(t)?t:x(t)}function n(t){return s(t)?t:k(t)}function i(t){return o(t)&&!a(t)?t:A(t)}function o(t){return!(!t||!t[ar])}function u(t){return!(!t||!t[hr])}function s(t){return!(!t||!t[fr])}function a(t){return u(t)||s(t)}function h(t){return!(!t||!t[cr])}function f(t){return t.value=!1,t}function c(t){t&&(t.value=!0)}function _(){}function p(t,e){e=e||0;for(var r=Math.max(0,t.length-e),n=Array(r),i=0;r>i;i++)n[i]=t[i+e];return n}function v(t){return void 0===t.size&&(t.size=t.__iterate(y)),t.size}function l(t,e){if("number"!=typeof e){var r=e>>>0;if(""+r!==e||4294967295===r)return NaN;e=r}return 0>e?v(t)+e:e}function y(){return!0}function d(t,e,r){return(0===t||void 0!==r&&-r>=t)&&(void 0===e||void 0!==r&&e>=r)}function m(t,e){return w(t,e,0)}function g(t,e){return w(t,e,e)}function w(t,e,r){return void 0===t?r:0>t?Math.max(0,e+t):void 0===e?t:Math.min(e,t)}function S(t){this.next=t}function z(t,e,r,n){var i=0===t?e:1===t?r:[e,r];return n?n.value=i:n={value:i,done:!1},n}function I(){return{value:void 0,done:!0}}function b(t){return!!M(t)}function q(t){return t&&"function"==typeof t.next}function D(t){var e=M(t);return e&&e.call(t)}function M(t){var e=t&&(zr&&t[zr]||t[Ir]);return"function"==typeof e?e:void 0}function E(t){return t&&"number"==typeof t.length}function O(t){return null===t||void 0===t?T():o(t)?t.toSeq():C(t)}function x(t){return null===t||void 0===t?T().toKeyedSeq():o(t)?u(t)?t.toSeq():t.fromEntrySeq():B(t)}function k(t){return null===t||void 0===t?T():o(t)?u(t)?t.entrySeq():t.toIndexedSeq():W(t)}function A(t){return(null===t||void 0===t?T():o(t)?u(t)?t.entrySeq():t:W(t)).toSetSeq()}function j(t){this._array=t,this.size=t.length}function R(t){var e=Object.keys(t);this._object=t,this._keys=e, this.size=e.length}function U(t){this._iterable=t,this.size=t.length||t.size}function K(t){this._iterator=t,this._iteratorCache=[]}function L(t){return!(!t||!t[qr])}function T(){return Dr||(Dr=new j([]))}function B(t){var e=Array.isArray(t)?new j(t).fromEntrySeq():q(t)?new K(t).fromEntrySeq():b(t)?new U(t).fromEntrySeq():"object"==typeof t?new R(t):void 0;if(!e)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+t);return e}function W(t){var e=J(t);if(!e)throw new TypeError("Expected Array or iterable object of values: "+t);return e}function C(t){var e=J(t)||"object"==typeof t&&new R(t);if(!e)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+t);return e}function J(t){return E(t)?new j(t):q(t)?new K(t):b(t)?new U(t):void 0}function N(t,e,r,n){var i=t._cache;if(i){for(var o=i.length-1,u=0;o>=u;u++){var s=i[r?o-u:u];if(e(s[1],n?s[0]:u,t)===!1)return u+1}return u}return t.__iterateUncached(e,r)}function P(t,e,r,n){var i=t._cache;if(i){var o=i.length-1,u=0;return new S(function(){var t=i[r?o-u:u];return u++>o?I():z(e,n?t[0]:u-1,t[1])})}return t.__iteratorUncached(e,r)}function H(t,e){return e?V(e,t,"",{"":t}):Y(t)}function V(t,e,r,n){return Array.isArray(e)?t.call(n,r,k(e).map(function(r,n){return V(t,r,n,e)})):Q(e)?t.call(n,r,x(e).map(function(r,n){return V(t,r,n,e)})):e}function Y(t){return Array.isArray(t)?k(t).map(Y).toList():Q(t)?x(t).map(Y).toMap():t}function Q(t){return t&&(t.constructor===Object||void 0===t.constructor)}function X(t,e){if(t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1;if("function"==typeof t.valueOf&&"function"==typeof e.valueOf){if(t=t.valueOf(),e=e.valueOf(),t===e||t!==t&&e!==e)return!0;if(!t||!e)return!1}return"function"==typeof t.equals&&"function"==typeof e.equals&&t.equals(e)?!0:!1}function F(t,e){if(t===e)return!0;if(!o(e)||void 0!==t.size&&void 0!==e.size&&t.size!==e.size||void 0!==t.__hash&&void 0!==e.__hash&&t.__hash!==e.__hash||u(t)!==u(e)||s(t)!==s(e)||h(t)!==h(e))return!1;if(0===t.size&&0===e.size)return!0; var r=!a(t);if(h(t)){var n=t.entries();return e.every(function(t,e){var i=n.next().value;return i&&X(i[1],t)&&(r||X(i[0],e))})&&n.next().done}var i=!1;if(void 0===t.size)if(void 0===e.size)"function"==typeof t.cacheResult&&t.cacheResult();else{i=!0;var f=t;t=e,e=f}var c=!0,_=e.__iterate(function(e,n){return(r?t.has(e):i?X(e,t.get(n,yr)):X(t.get(n,yr),e))?void 0:(c=!1,!1)});return c&&t.size===_}function G(t,e){if(!(this instanceof G))return new G(t,e);if(this._value=t,this.size=void 0===e?1/0:Math.max(0,e),0===this.size){if(Mr)return Mr;Mr=this}}function Z(t,e){if(!t)throw Error(e)}function $(t,e,r){if(!(this instanceof $))return new $(t,e,r);if(Z(0!==r,"Cannot step a Range by 0"),t=t||0,void 0===e&&(e=1/0),r=void 0===r?1:Math.abs(r),t>e&&(r=-r),this._start=t,this._end=e,this._step=r,this.size=Math.max(0,Math.ceil((e-t)/r-1)+1),0===this.size){if(Er)return Er;Er=this}}function tt(){throw TypeError("Abstract")}function et(){}function rt(){}function nt(){}function it(t){return t>>>1&1073741824|3221225471&t}function ot(t){if(t===!1||null===t||void 0===t)return 0;if("function"==typeof t.valueOf&&(t=t.valueOf(),t===!1||null===t||void 0===t))return 0;if(t===!0)return 1;var e=typeof t;if("number"===e){if(t!==t||t===1/0)return 0;var r=0|t;for(r!==t&&(r^=4294967295*t);t>4294967295;)t/=4294967295,r^=t;return it(r)}if("string"===e)return t.length>Kr?ut(t):st(t);if("function"==typeof t.hashCode)return t.hashCode();if("object"===e)return at(t);if("function"==typeof t.toString)return st(""+t);throw Error("Value type "+e+" cannot be hashed.")}function ut(t){var e=Br[t];return void 0===e&&(e=st(t),Tr===Lr&&(Tr=0,Br={}),Tr++,Br[t]=e),e}function st(t){for(var e=0,r=0;t.length>r;r++)e=31*e+t.charCodeAt(r)|0;return it(e)}function at(t){var e;if(jr&&(e=Or.get(t),void 0!==e))return e;if(e=t[Ur],void 0!==e)return e;if(!Ar){if(e=t.propertyIsEnumerable&&t.propertyIsEnumerable[Ur],void 0!==e)return e;if(e=ht(t),void 0!==e)return e}if(e=++Rr,1073741824&Rr&&(Rr=0),jr)Or.set(t,e);else{if(void 0!==kr&&kr(t)===!1)throw Error("Non-extensible objects are not allowed as keys."); if(Ar)Object.defineProperty(t,Ur,{enumerable:!1,configurable:!1,writable:!1,value:e});else if(void 0!==t.propertyIsEnumerable&&t.propertyIsEnumerable===t.constructor.prototype.propertyIsEnumerable)t.propertyIsEnumerable=function(){return this.constructor.prototype.propertyIsEnumerable.apply(this,arguments)},t.propertyIsEnumerable[Ur]=e;else{if(void 0===t.nodeType)throw Error("Unable to set a non-enumerable property on object.");t[Ur]=e}}return e}function ht(t){if(t&&t.nodeType>0)switch(t.nodeType){case 1:return t.uniqueID;case 9:return t.documentElement&&t.documentElement.uniqueID}}function ft(t){Z(t!==1/0,"Cannot perform this action with an infinite size.")}function ct(t){return null===t||void 0===t?zt():_t(t)&&!h(t)?t:zt().withMutations(function(e){var n=r(t);ft(n.size),n.forEach(function(t,r){return e.set(r,t)})})}function _t(t){return!(!t||!t[Wr])}function pt(t,e){this.ownerID=t,this.entries=e}function vt(t,e,r){this.ownerID=t,this.bitmap=e,this.nodes=r}function lt(t,e,r){this.ownerID=t,this.count=e,this.nodes=r}function yt(t,e,r){this.ownerID=t,this.keyHash=e,this.entries=r}function dt(t,e,r){this.ownerID=t,this.keyHash=e,this.entry=r}function mt(t,e,r){this._type=e,this._reverse=r,this._stack=t._root&&wt(t._root)}function gt(t,e){return z(t,e[0],e[1])}function wt(t,e){return{node:t,index:0,__prev:e}}function St(t,e,r,n){var i=Object.create(Cr);return i.size=t,i._root=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function zt(){return Jr||(Jr=St(0))}function It(t,e,r){var n,i;if(t._root){var o=f(dr),u=f(mr);if(n=bt(t._root,t.__ownerID,0,void 0,e,r,o,u),!u.value)return t;i=t.size+(o.value?r===yr?-1:1:0)}else{if(r===yr)return t;i=1,n=new pt(t.__ownerID,[[e,r]])}return t.__ownerID?(t.size=i,t._root=n,t.__hash=void 0,t.__altered=!0,t):n?St(i,n):zt()}function bt(t,e,r,n,i,o,u,s){return t?t.update(e,r,n,i,o,u,s):o===yr?t:(c(s),c(u),new dt(e,n,[i,o]))}function qt(t){return t.constructor===dt||t.constructor===yt}function Dt(t,e,r,n,i){if(t.keyHash===n)return new yt(e,n,[t.entry,i]);var o,u=(0===r?t.keyHash:t.keyHash>>>r)&lr,s=(0===r?n:n>>>r)&lr,a=u===s?[Dt(t,e,r+pr,n,i)]:(o=new dt(e,n,i), s>u?[t,o]:[o,t]);return new vt(e,1<o;o++){var u=e[o];i=i.update(t,0,void 0,u[0],u[1])}return i}function Et(t,e,r,n){for(var i=0,o=0,u=Array(r),s=0,a=1,h=e.length;h>s;s++,a<<=1){var f=e[s];void 0!==f&&s!==n&&(i|=a,u[o++]=f)}return new vt(t,i,u)}function Ot(t,e,r,n,i){for(var o=0,u=Array(vr),s=0;0!==r;s++,r>>>=1)u[s]=1&r?e[o++]:void 0;return u[n]=i,new lt(t,o+1,u)}function xt(t,e,n){for(var i=[],u=0;n.length>u;u++){var s=n[u],a=r(s);o(s)||(a=a.map(function(t){return H(t)})),i.push(a)}return jt(t,e,i)}function kt(t,e,r){return t&&t.mergeDeep&&o(e)?t.mergeDeep(e):X(t,e)?t:e}function At(t){return function(e,r,n){if(e&&e.mergeDeepWith&&o(r))return e.mergeDeepWith(t,r);var i=t(e,r,n);return X(e,i)?e:i}}function jt(t,e,r){return r=r.filter(function(t){return 0!==t.size}),0===r.length?t:0!==t.size||t.__ownerID||1!==r.length?t.withMutations(function(t){for(var n=e?function(r,n){t.update(n,yr,function(t){return t===yr?r:e(t,r,n)})}:function(e,r){t.set(r,e)},i=0;r.length>i;i++)r[i].forEach(n)}):t.constructor(r[0])}function Rt(t,e,r,n){var i=t===yr,o=e.next();if(o.done){var u=i?r:t,s=n(u);return s===u?t:s}Z(i||t&&t.set,"invalid keyPath");var a=o.value,h=i?yr:t.get(a,yr),f=Rt(h,e,r,n);return f===h?t:f===yr?t.remove(a):(i?zt():t).set(a,f)}function Ut(t){return t-=t>>1&1431655765,t=(858993459&t)+(t>>2&858993459),t=t+(t>>4)&252645135,t+=t>>8,t+=t>>16,127&t}function Kt(t,e,r,n){var i=n?t:p(t);return i[e]=r,i}function Lt(t,e,r,n){var i=t.length+1;if(n&&e+1===i)return t[e]=r,t;for(var o=Array(i),u=0,s=0;i>s;s++)s===e?(o[s]=r,u=-1):o[s]=t[s+u];return o}function Tt(t,e,r){var n=t.length-1;if(r&&e===n)return t.pop(),t;for(var i=Array(n),o=0,u=0;n>u;u++)u===e&&(o=1),i[u]=t[u+o];return i}function Bt(t){var e=Pt();if(null===t||void 0===t)return e;if(Wt(t))return t;var r=n(t),i=r.size;return 0===i?e:(ft(i),i>0&&vr>i?Nt(0,i,pr,null,new Ct(r.toArray())):e.withMutations(function(t){t.setSize(i),r.forEach(function(e,r){return t.set(r,e)})}))}function Wt(t){ return!(!t||!t[Vr])}function Ct(t,e){this.array=t,this.ownerID=e}function Jt(t,e){function r(t,e,r){return 0===e?n(t,r):i(t,e,r)}function n(t,r){var n=r===s?a&&a.array:t&&t.array,i=r>o?0:o-r,h=u-r;return h>vr&&(h=vr),function(){if(i===h)return Xr;var t=e?--h:i++;return n&&n[t]}}function i(t,n,i){var s,a=t&&t.array,h=i>o?0:o-i>>n,f=(u-i>>n)+1;return f>vr&&(f=vr),function(){for(;;){if(s){var t=s();if(t!==Xr)return t;s=null}if(h===f)return Xr;var o=e?--f:h++;s=r(a&&a[o],n-pr,i+(o<=t.size||0>e)return t.withMutations(function(t){0>e?Xt(t,e).set(0,r):Xt(t,0,e+1).set(e,r)});e+=t._origin;var n=t._tail,i=t._root,o=f(mr);return e>=Gt(t._capacity)?n=Vt(n,t.__ownerID,0,e,r,o):i=Vt(i,t.__ownerID,t._level,e,r,o),o.value?t.__ownerID?(t._root=i,t._tail=n,t.__hash=void 0,t.__altered=!0,t):Nt(t._origin,t._capacity,t._level,i,n):t}function Vt(t,e,r,n,i,o){var u=n>>>r&lr,s=t&&t.array.length>u;if(!s&&void 0===i)return t;var a;if(r>0){var h=t&&t.array[u],f=Vt(h,e,r-pr,n,i,o);return f===h?t:(a=Yt(t,e),a.array[u]=f,a)}return s&&t.array[u]===i?t:(c(o),a=Yt(t,e),void 0===i&&u===a.array.length-1?a.array.pop():a.array[u]=i,a)}function Yt(t,e){return e&&t&&e===t.ownerID?t:new Ct(t?t.array.slice():[],e)}function Qt(t,e){if(e>=Gt(t._capacity))return t._tail;if(1<e){for(var r=t._root,n=t._level;r&&n>0;)r=r.array[e>>>n&lr],n-=pr;return r}}function Xt(t,e,r){void 0!==e&&(e=0|e),void 0!==r&&(r=0|r);var n=t.__ownerID||new _,i=t._origin,o=t._capacity,u=i+e,s=void 0===r?o:0>r?o+r:i+r;if(u===i&&s===o)return t;if(u>=s)return t.clear();for(var a=t._level,h=t._root,f=0;0>u+f;)h=new Ct(h&&h.array.length?[void 0,h]:[],n),a+=pr,f+=1<=1<p?Qt(t,s-1):p>c?new Ct([],n):v;if(v&&p>c&&o>u&&v.array.length){h=Yt(h,n);for(var y=h,d=a;d>pr;d-=pr){var m=c>>>d&lr;y=y.array[m]=Yt(y.array[m],n)}y.array[c>>>pr&lr]=v}if(o>s&&(l=l&&l.removeAfter(n,0,s)),u>=p)u-=p,s-=p,a=pr,h=null,l=l&&l.removeBefore(n,0,u);else if(u>i||c>p){for(f=0;h;){var g=u>>>a&lr;if(g!==p>>>a&lr)break;g&&(f+=(1<i&&(h=h.removeBefore(n,a,u-f)),h&&c>p&&(h=h.removeAfter(n,a,p-f)),f&&(u-=f,s-=f)}return t.__ownerID?(t.size=s-u,t._origin=u,t._capacity=s,t._level=a,t._root=h,t._tail=l,t.__hash=void 0,t.__altered=!0,t):Nt(u,s,a,h,l)}function Ft(t,e,r){for(var i=[],u=0,s=0;r.length>s;s++){var a=r[s],h=n(a);h.size>u&&(u=h.size),o(a)||(h=h.map(function(t){return H(t)})),i.push(h)}return u>t.size&&(t=t.setSize(u)),jt(t,e,i)}function Gt(t){return vr>t?0:t-1>>>pr<=vr&&u.size>=2*o.size?(i=u.filter(function(t,e){return void 0!==t&&s!==e}),n=i.toKeyedSeq().map(function(t){return t[0]}).flip().toMap(),t.__ownerID&&(n.__ownerID=i.__ownerID=t.__ownerID)):(n=o.remove(e),i=s===u.size-1?u.pop():u.set(s,void 0))}else if(a){if(r===u.get(s)[1])return t;n=o,i=u.set(s,[e,r])}else n=o.set(e,u.size),i=u.set(u.size,[e,r]);return t.__ownerID?(t.size=n.size,t._map=n,t._list=i,t.__hash=void 0,t):te(n,i)}function ne(t,e){this._iter=t,this._useKeys=e,this.size=t.size}function ie(t){this._iter=t,this.size=t.size}function oe(t){this._iter=t,this.size=t.size}function ue(t){this._iter=t,this.size=t.size}function se(t){var e=Ee(t);return e._iter=t,e.size=t.size,e.flip=function(){return t},e.reverse=function(){var e=t.reverse.apply(this); return e.flip=function(){return t.reverse()},e},e.has=function(e){return t.includes(e)},e.includes=function(e){return t.has(e)},e.cacheResult=Oe,e.__iterateUncached=function(e,r){var n=this;return t.__iterate(function(t,r){return e(r,t,n)!==!1},r)},e.__iteratorUncached=function(e,r){if(e===Sr){var n=t.__iterator(e,r);return new S(function(){var t=n.next();if(!t.done){var e=t.value[0];t.value[0]=t.value[1],t.value[1]=e}return t})}return t.__iterator(e===wr?gr:wr,r)},e}function ae(t,e,r){var n=Ee(t);return n.size=t.size,n.has=function(e){return t.has(e)},n.get=function(n,i){var o=t.get(n,yr);return o===yr?i:e.call(r,o,n,t)},n.__iterateUncached=function(n,i){var o=this;return t.__iterate(function(t,i,u){return n(e.call(r,t,i,u),i,o)!==!1},i)},n.__iteratorUncached=function(n,i){var o=t.__iterator(Sr,i);return new S(function(){var i=o.next();if(i.done)return i;var u=i.value,s=u[0];return z(n,s,e.call(r,u[1],s,t),i)})},n}function he(t,e){var r=Ee(t);return r._iter=t,r.size=t.size,r.reverse=function(){return t},t.flip&&(r.flip=function(){var e=se(t);return e.reverse=function(){return t.flip()},e}),r.get=function(r,n){return t.get(e?r:-1-r,n)},r.has=function(r){return t.has(e?r:-1-r)},r.includes=function(e){return t.includes(e)},r.cacheResult=Oe,r.__iterate=function(e,r){var n=this;return t.__iterate(function(t,r){return e(t,r,n)},!r)},r.__iterator=function(e,r){return t.__iterator(e,!r)},r}function fe(t,e,r,n){var i=Ee(t);return n&&(i.has=function(n){var i=t.get(n,yr);return i!==yr&&!!e.call(r,i,n,t)},i.get=function(n,i){var o=t.get(n,yr);return o!==yr&&e.call(r,o,n,t)?o:i}),i.__iterateUncached=function(i,o){var u=this,s=0;return t.__iterate(function(t,o,a){return e.call(r,t,o,a)?(s++,i(t,n?o:s-1,u)):void 0},o),s},i.__iteratorUncached=function(i,o){var u=t.__iterator(Sr,o),s=0;return new S(function(){for(;;){var o=u.next();if(o.done)return o;var a=o.value,h=a[0],f=a[1];if(e.call(r,f,h,t))return z(i,n?h:s++,f,o)}})},i}function ce(t,e,r){var n=ct().asMutable();return t.__iterate(function(i,o){n.update(e.call(r,i,o,t),0,function(t){ return t+1})}),n.asImmutable()}function _e(t,e,r){var n=u(t),i=(h(t)?Zt():ct()).asMutable();t.__iterate(function(o,u){i.update(e.call(r,o,u,t),function(t){return t=t||[],t.push(n?[u,o]:o),t})});var o=Me(t);return i.map(function(e){return be(t,o(e))})}function pe(t,e,r,n){var i=t.size;if(void 0!==e&&(e=0|e),void 0!==r&&(r=r===1/0?i:0|r),d(e,r,i))return t;var o=m(e,i),u=g(r,i);if(o!==o||u!==u)return pe(t.toSeq().cacheResult(),e,r,n);var s,a=u-o;a===a&&(s=0>a?0:a);var h=Ee(t);return h.size=0===s?s:t.size&&s||void 0,!n&&L(t)&&s>=0&&(h.get=function(e,r){return e=l(this,e),e>=0&&s>e?t.get(e+o,r):r}),h.__iterateUncached=function(e,r){var i=this;if(0===s)return 0;if(r)return this.cacheResult().__iterate(e,r);var u=0,a=!0,h=0;return t.__iterate(function(t,r){return a&&(a=u++s)return I();var t=i.next();return n||e===wr?t:e===gr?z(e,a-1,void 0,t):z(e,a-1,t.value[1],t)})},h}function ve(t,e,r){var n=Ee(t);return n.__iterateUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterate(n,i);var u=0;return t.__iterate(function(t,i,s){return e.call(r,t,i,s)&&++u&&n(t,i,o)}),u},n.__iteratorUncached=function(n,i){var o=this;if(i)return this.cacheResult().__iterator(n,i);var u=t.__iterator(Sr,i),s=!0;return new S(function(){if(!s)return I();var t=u.next();if(t.done)return t;var i=t.value,a=i[0],h=i[1];return e.call(r,h,a,o)?n===Sr?t:z(n,a,h,t):(s=!1,I())})},n}function le(t,e,r,n){var i=Ee(t);return i.__iterateUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterate(i,o);var s=!0,a=0;return t.__iterate(function(t,o,h){return s&&(s=e.call(r,t,o,h))?void 0:(a++,i(t,n?o:a-1,u))}),a},i.__iteratorUncached=function(i,o){var u=this;if(o)return this.cacheResult().__iterator(i,o);var s=t.__iterator(Sr,o),a=!0,h=0;return new S(function(){var t,o,f;do{if(t=s.next(),t.done)return n||i===wr?t:i===gr?z(i,h++,void 0,t):z(i,h++,t.value[1],t); var c=t.value;o=c[0],f=c[1],a&&(a=e.call(r,f,o,u))}while(a);return i===Sr?t:z(i,o,f,t)})},i}function ye(t,e){var n=u(t),i=[t].concat(e).map(function(t){return o(t)?n&&(t=r(t)):t=n?B(t):W(Array.isArray(t)?t:[t]),t}).filter(function(t){return 0!==t.size});if(0===i.length)return t;if(1===i.length){var a=i[0];if(a===t||n&&u(a)||s(t)&&s(a))return a}var h=new j(i);return n?h=h.toKeyedSeq():s(t)||(h=h.toSetSeq()),h=h.flatten(!0),h.size=i.reduce(function(t,e){if(void 0!==t){var r=e.size;if(void 0!==r)return t+r}},0),h}function de(t,e,r){var n=Ee(t);return n.__iterateUncached=function(n,i){function u(t,h){var f=this;t.__iterate(function(t,i){return(!e||e>h)&&o(t)?u(t,h+1):n(t,r?i:s++,f)===!1&&(a=!0),!a},i)}var s=0,a=!1;return u(t,0),s},n.__iteratorUncached=function(n,i){var u=t.__iterator(n,i),s=[],a=0;return new S(function(){for(;u;){var t=u.next();if(t.done===!1){var h=t.value;if(n===Sr&&(h=h[1]),e&&!(e>s.length)||!o(h))return r?t:z(n,a++,h,t);s.push(u),u=h.__iterator(n,i)}else u=s.pop()}return I()})},n}function me(t,e,r){var n=Me(t);return t.toSeq().map(function(i,o){return n(e.call(r,i,o,t))}).flatten(!0)}function ge(t,e){var r=Ee(t);return r.size=t.size&&2*t.size-1,r.__iterateUncached=function(r,n){var i=this,o=0;return t.__iterate(function(t,n){return(!o||r(e,o++,i)!==!1)&&r(t,o++,i)!==!1},n),o},r.__iteratorUncached=function(r,n){var i,o=t.__iterator(wr,n),u=0;return new S(function(){return(!i||u%2)&&(i=o.next(),i.done)?i:u%2?z(r,u++,e):z(r,u++,i.value,i)})},r}function we(t,e,r){e||(e=xe);var n=u(t),i=0,o=t.toSeq().map(function(e,n){return[n,e,i++,r?r(e,n,t):e]}).toArray();return o.sort(function(t,r){return e(t[3],r[3])||t[2]-r[2]}).forEach(n?function(t,e){o[e].length=2}:function(t,e){o[e]=t[1]}),n?x(o):s(t)?k(o):A(o)}function Se(t,e,r){if(e||(e=xe),r){var n=t.toSeq().map(function(e,n){return[e,r(e,n,t)]}).reduce(function(t,r){return ze(e,t[1],r[1])?r:t});return n&&n[0]}return t.reduce(function(t,r){return ze(e,t,r)?r:t})}function ze(t,e,r){var n=t(r,e);return 0===n&&r!==e&&(void 0===r||null===r||r!==r)||n>0}function Ie(t,r,n){ var i=Ee(t);return i.size=new j(n).map(function(t){return t.size}).min(),i.__iterate=function(t,e){for(var r,n=this.__iterator(wr,e),i=0;!(r=n.next()).done&&t(r.value,i++,this)!==!1;);return i},i.__iteratorUncached=function(t,i){var o=n.map(function(t){return t=e(t),D(i?t.reverse():t)}),u=0,s=!1;return new S(function(){var e;return s||(e=o.map(function(t){return t.next()}),s=e.some(function(t){return t.done})),s?I():z(t,u++,r.apply(null,e.map(function(t){return t.value})))})},i}function be(t,e){return L(t)?e:t.constructor(e)}function qe(t){if(t!==Object(t))throw new TypeError("Expected [K, V] tuple: "+t)}function De(t){return ft(t.size),v(t)}function Me(t){return u(t)?r:s(t)?n:i}function Ee(t){return Object.create((u(t)?x:s(t)?k:A).prototype)}function Oe(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):O.prototype.cacheResult.call(this)}function xe(t,e){return t>e?1:e>t?-1:0}function ke(t){var r=D(t);if(!r){if(!E(t))throw new TypeError("Expected iterable or array-like: "+t);r=D(e(t))}return r}function Ae(t,e){var r,n=function(o){if(o instanceof n)return o;if(!(this instanceof n))return new n(o);if(!r){r=!0;var u=Object.keys(t);Ue(i,u),i.size=u.length,i._name=e,i._keys=u,i._defaultValues=t}this._map=ct(o)},i=n.prototype=Object.create(Gr);return i.constructor=n,n}function je(t,e,r){var n=Object.create(Object.getPrototypeOf(t));return n._map=e,n.__ownerID=r,n}function Re(t){return t._name||t.constructor.name||"Record"}function Ue(t,e){try{e.forEach(Ke.bind(void 0,t))}catch(r){}}function Ke(t,e){Object.defineProperty(t,e,{get:function(){return this.get(e)},set:function(t){Z(this.__ownerID,"Cannot set on an immutable record."),this.set(e,t)}})}function Le(t){return null===t||void 0===t?Ce():Te(t)&&!h(t)?t:Ce().withMutations(function(e){var r=i(t);ft(r.size),r.forEach(function(t){return e.add(t)})})}function Te(t){return!(!t||!t[Zr])}function Be(t,e){return t.__ownerID?(t.size=e.size,t._map=e,t):e===t._map?t:0===e.size?t.__empty():t.__make(e)}function We(t,e){var r=Object.create($r); return r.size=t?t.size:0,r._map=t,r.__ownerID=e,r}function Ce(){return tn||(tn=We(zt()))}function Je(t){return null===t||void 0===t?He():Ne(t)?t:He().withMutations(function(e){var r=i(t);ft(r.size),r.forEach(function(t){return e.add(t)})})}function Ne(t){return Te(t)&&h(t)}function Pe(t,e){var r=Object.create(en);return r.size=t?t.size:0,r._map=t,r.__ownerID=e,r}function He(){return rn||(rn=Pe(ee()))}function Ve(t){return null===t||void 0===t?Xe():Ye(t)?t:Xe().unshiftAll(t)}function Ye(t){return!(!t||!t[nn])}function Qe(t,e,r,n){var i=Object.create(on);return i.size=t,i._head=e,i.__ownerID=r,i.__hash=n,i.__altered=!1,i}function Xe(){return un||(un=Qe(0))}function Fe(t,e){var r=function(r){t.prototype[r]=e[r]};return Object.keys(e).forEach(r),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(e).forEach(r),t}function Ge(t,e){return e}function Ze(t,e){return[e,t]}function $e(t){return function(){return!t.apply(this,arguments)}}function tr(t){return function(){return-t.apply(this,arguments)}}function er(t){return"string"==typeof t?JSON.stringify(t):t+""}function rr(){return p(arguments)}function nr(t,e){return e>t?1:t>e?-1:0}function ir(t){if(t.size===1/0)return 0;var e=h(t),r=u(t),n=e?1:0,i=t.__iterate(r?e?function(t,e){n=31*n+ur(ot(t),ot(e))|0}:function(t,e){n=n+ur(ot(t),ot(e))|0}:e?function(t){n=31*n+ot(t)|0}:function(t){n=n+ot(t)|0});return or(i,n)}function or(t,e){return e=xr(e,3432918353),e=xr(e<<15|e>>>-15,461845907),e=xr(e<<13|e>>>-13,5),e=(e+3864292196|0)^t,e=xr(e^e>>>16,2246822507),e=xr(e^e>>>13,3266489909),e=it(e^e>>>16)}function ur(t,e){return t^e+2654435769+(t<<6)+(t>>2)|0}var sr=Array.prototype.slice;t(r,e),t(n,e),t(i,e),e.isIterable=o,e.isKeyed=u,e.isIndexed=s,e.isAssociative=a,e.isOrdered=h,e.Keyed=r,e.Indexed=n,e.Set=i;var ar="@@__IMMUTABLE_ITERABLE__@@",hr="@@__IMMUTABLE_KEYED__@@",fr="@@__IMMUTABLE_INDEXED__@@",cr="@@__IMMUTABLE_ORDERED__@@",_r="delete",pr=5,vr=1<=i;i++)if(t(r[e?n-i:i],i,this)===!1)return i+1;return i},j.prototype.__iterator=function(t,e){var r=this._array,n=r.length-1,i=0;return new S(function(){return i>n?I():z(t,i,r[e?n-i++:i++])})},t(R,x),R.prototype.get=function(t,e){return void 0===e||this.has(t)?this._object[t]:e},R.prototype.has=function(t){return this._object.hasOwnProperty(t)},R.prototype.__iterate=function(t,e){for(var r=this._object,n=this._keys,i=n.length-1,o=0;i>=o;o++){var u=n[e?i-o:o];if(t(r[u],u,this)===!1)return o+1}return o},R.prototype.__iterator=function(t,e){var r=this._object,n=this._keys,i=n.length-1,o=0;return new S(function(){var u=n[e?i-o:o];return o++>i?I():z(t,u,r[u])})},R.prototype[cr]=!0,t(U,k),U.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e); var r=this._iterable,n=D(r),i=0;if(q(n))for(var o;!(o=n.next()).done&&t(o.value,i++,this)!==!1;);return i},U.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var r=this._iterable,n=D(r);if(!q(n))return new S(I);var i=0;return new S(function(){var e=n.next();return e.done?e:z(t,i++,e.value)})},t(K,k),K.prototype.__iterateUncached=function(t,e){if(e)return this.cacheResult().__iterate(t,e);for(var r=this._iterator,n=this._iteratorCache,i=0;n.length>i;)if(t(n[i],i++,this)===!1)return i;for(var o;!(o=r.next()).done;){var u=o.value;if(n[i]=u,t(u,i++,this)===!1)break}return i},K.prototype.__iteratorUncached=function(t,e){if(e)return this.cacheResult().__iterator(t,e);var r=this._iterator,n=this._iteratorCache,i=0;return new S(function(){if(i>=n.length){var e=r.next();if(e.done)return e;n[i]=e.value}return z(t,i,n[i++])})};var Dr;t(G,k),G.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},G.prototype.get=function(t,e){return this.has(t)?this._value:e},G.prototype.includes=function(t){return X(this._value,t)},G.prototype.slice=function(t,e){var r=this.size;return d(t,e,r)?this:new G(this._value,g(e,r)-m(t,r))},G.prototype.reverse=function(){return this},G.prototype.indexOf=function(t){return X(this._value,t)?0:-1},G.prototype.lastIndexOf=function(t){return X(this._value,t)?this.size:-1},G.prototype.__iterate=function(t,e){for(var r=0;this.size>r;r++)if(t(this._value,r,this)===!1)return r+1;return r},G.prototype.__iterator=function(t,e){var r=this,n=0;return new S(function(){return r.size>n?z(t,n++,r._value):I()})},G.prototype.equals=function(t){return t instanceof G?X(this._value,t._value):F(t)};var Mr;t($,k),$.prototype.toString=function(){return 0===this.size?"Range []":"Range [ "+this._start+"..."+this._end+(1!==this._step?" by "+this._step:"")+" ]"},$.prototype.get=function(t,e){return this.has(t)?this._start+l(this,t)*this._step:e},$.prototype.includes=function(t){var e=(t-this._start)/this._step;return e>=0&&this.size>e&&e===Math.floor(e); },$.prototype.slice=function(t,e){return d(t,e,this.size)?this:(t=m(t,this.size),e=g(e,this.size),t>=e?new $(0,0):new $(this.get(t,this._end),this.get(e,this._end),this._step))},$.prototype.indexOf=function(t){var e=t-this._start;if(e%this._step===0){var r=e/this._step;if(r>=0&&this.size>r)return r}return-1},$.prototype.lastIndexOf=function(t){return this.indexOf(t)},$.prototype.__iterate=function(t,e){for(var r=this.size-1,n=this._step,i=e?this._start+r*n:this._start,o=0;r>=o;o++){if(t(i,o,this)===!1)return o+1;i+=e?-n:n}return o},$.prototype.__iterator=function(t,e){var r=this.size-1,n=this._step,i=e?this._start+r*n:this._start,o=0;return new S(function(){var u=i;return i+=e?-n:n,o>r?I():z(t,o++,u)})},$.prototype.equals=function(t){return t instanceof $?this._start===t._start&&this._end===t._end&&this._step===t._step:F(this,t)};var Er;t(tt,e),t(et,tt),t(rt,tt),t(nt,tt),tt.Keyed=et,tt.Indexed=rt,tt.Set=nt;var Or,xr="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(t,e){t=0|t,e=0|e;var r=65535&t,n=65535&e;return r*n+((t>>>16)*n+r*(e>>>16)<<16>>>0)|0},kr=Object.isExtensible,Ar=function(){try{return Object.defineProperty({},"@",{}),!0}catch(t){return!1}}(),jr="function"==typeof WeakMap;jr&&(Or=new WeakMap);var Rr=0,Ur="__immutablehash__";"function"==typeof Symbol&&(Ur=Symbol(Ur));var Kr=16,Lr=255,Tr=0,Br={};t(ct,et),ct.of=function(){var t=sr.call(arguments,0);return zt().withMutations(function(e){for(var r=0;t.length>r;r+=2){if(r+1>=t.length)throw Error("Missing value for key: "+t[r]);e.set(t[r],t[r+1])}})},ct.prototype.toString=function(){return this.__toString("Map {","}")},ct.prototype.get=function(t,e){return this._root?this._root.get(0,void 0,t,e):e},ct.prototype.set=function(t,e){return It(this,t,e)},ct.prototype.setIn=function(t,e){return this.updateIn(t,yr,function(){return e})},ct.prototype.remove=function(t){return It(this,t,yr)},ct.prototype.deleteIn=function(t){return this.updateIn(t,function(){return yr})},ct.prototype.update=function(t,e,r){return 1===arguments.length?t(this):this.updateIn([t],e,r); },ct.prototype.updateIn=function(t,e,r){r||(r=e,e=void 0);var n=Rt(this,ke(t),e,r);return n===yr?void 0:n},ct.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):zt()},ct.prototype.merge=function(){return xt(this,void 0,arguments)},ct.prototype.mergeWith=function(t){var e=sr.call(arguments,1);return xt(this,t,e)},ct.prototype.mergeIn=function(t){var e=sr.call(arguments,1);return this.updateIn(t,zt(),function(t){return"function"==typeof t.merge?t.merge.apply(t,e):e[e.length-1]})},ct.prototype.mergeDeep=function(){return xt(this,kt,arguments)},ct.prototype.mergeDeepWith=function(t){var e=sr.call(arguments,1);return xt(this,At(t),e)},ct.prototype.mergeDeepIn=function(t){var e=sr.call(arguments,1);return this.updateIn(t,zt(),function(t){return"function"==typeof t.mergeDeep?t.mergeDeep.apply(t,e):e[e.length-1]})},ct.prototype.sort=function(t){return Zt(we(this,t))},ct.prototype.sortBy=function(t,e){return Zt(we(this,e,t))},ct.prototype.withMutations=function(t){var e=this.asMutable();return t(e),e.wasAltered()?e.__ensureOwner(this.__ownerID):this},ct.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new _)},ct.prototype.asImmutable=function(){return this.__ensureOwner()},ct.prototype.wasAltered=function(){return this.__altered},ct.prototype.__iterator=function(t,e){return new mt(this,t,e)},ct.prototype.__iterate=function(t,e){var r=this,n=0;return this._root&&this._root.iterate(function(e){return n++,t(e[1],e[0],r)},e),n},ct.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?St(this.size,this._root,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},ct.isMap=_t;var Wr="@@__IMMUTABLE_MAP__@@",Cr=ct.prototype;Cr[Wr]=!0,Cr[_r]=Cr.remove,Cr.removeIn=Cr.deleteIn,pt.prototype.get=function(t,e,r,n){for(var i=this.entries,o=0,u=i.length;u>o;o++)if(X(r,i[o][0]))return i[o][1];return n},pt.prototype.update=function(t,e,r,n,i,o,u){for(var s=i===yr,a=this.entries,h=0,f=a.length;f>h&&!X(n,a[h][0]);h++); var _=f>h;if(_?a[h][1]===i:s)return this;if(c(u),(s||!_)&&c(o),!s||1!==a.length){if(!_&&!s&&a.length>=Nr)return Mt(t,a,n,i);var v=t&&t===this.ownerID,l=v?a:p(a);return _?s?h===f-1?l.pop():l[h]=l.pop():l[h]=[n,i]:l.push([n,i]),v?(this.entries=l,this):new pt(t,l)}},vt.prototype.get=function(t,e,r,n){void 0===e&&(e=ot(r));var i=1<<((0===t?e:e>>>t)&lr),o=this.bitmap;return 0===(o&i)?n:this.nodes[Ut(o&i-1)].get(t+pr,e,r,n)},vt.prototype.update=function(t,e,r,n,i,o,u){void 0===r&&(r=ot(n));var s=(0===e?r:r>>>e)&lr,a=1<=Pr)return Ot(t,_,h,s,v);if(f&&!v&&2===_.length&&qt(_[1^c]))return _[1^c];if(f&&v&&1===_.length&&qt(v))return v;var l=t&&t===this.ownerID,y=f?v?h:h^a:h|a,d=f?v?Kt(_,c,v,l):Tt(_,c,l):Lt(_,c,v,l);return l?(this.bitmap=y,this.nodes=d,this):new vt(t,y,d)},lt.prototype.get=function(t,e,r,n){void 0===e&&(e=ot(r));var i=(0===t?e:e>>>t)&lr,o=this.nodes[i];return o?o.get(t+pr,e,r,n):n},lt.prototype.update=function(t,e,r,n,i,o,u){void 0===r&&(r=ot(n));var s=(0===e?r:r>>>e)&lr,a=i===yr,h=this.nodes,f=h[s];if(a&&!f)return this;var c=bt(f,t,e+pr,r,n,i,o,u);if(c===f)return this;var _=this.count;if(f){if(!c&&(_--,Hr>_))return Et(t,h,_,s)}else _++;var p=t&&t===this.ownerID,v=Kt(h,s,c,p);return p?(this.count=_,this.nodes=v,this):new lt(t,_,v)},yt.prototype.get=function(t,e,r,n){for(var i=this.entries,o=0,u=i.length;u>o;o++)if(X(r,i[o][0]))return i[o][1];return n},yt.prototype.update=function(t,e,r,n,i,o,u){void 0===r&&(r=ot(n));var s=i===yr;if(r!==this.keyHash)return s?this:(c(u),c(o),Dt(this,t,e,r,[n,i]));for(var a=this.entries,h=0,f=a.length;f>h&&!X(n,a[h][0]);h++);var _=f>h;if(_?a[h][1]===i:s)return this;if(c(u),(s||!_)&&c(o),s&&2===f)return new dt(t,this.keyHash,a[1^h]);var v=t&&t===this.ownerID,l=v?a:p(a);return _?s?h===f-1?l.pop():l[h]=l.pop():l[h]=[n,i]:l.push([n,i]),v?(this.entries=l,this):new yt(t,this.keyHash,l)},dt.prototype.get=function(t,e,r,n){return X(r,this.entry[0])?this.entry[1]:n; },dt.prototype.update=function(t,e,r,n,i,o,u){var s=i===yr,a=X(n,this.entry[0]);return(a?i===this.entry[1]:s)?this:(c(u),s?void c(o):a?t&&t===this.ownerID?(this.entry[1]=i,this):new dt(t,this.keyHash,[n,i]):(c(o),Dt(this,t,e,ot(n),[n,i])))},pt.prototype.iterate=yt.prototype.iterate=function(t,e){for(var r=this.entries,n=0,i=r.length-1;i>=n;n++)if(t(r[e?i-n:n])===!1)return!1},vt.prototype.iterate=lt.prototype.iterate=function(t,e){for(var r=this.nodes,n=0,i=r.length-1;i>=n;n++){var o=r[e?i-n:n];if(o&&o.iterate(t,e)===!1)return!1}},dt.prototype.iterate=function(t,e){return t(this.entry)},t(mt,S),mt.prototype.next=function(){for(var t=this._type,e=this._stack;e;){var r,n=e.node,i=e.index++;if(n.entry){if(0===i)return gt(t,n.entry)}else if(n.entries){if(r=n.entries.length-1,r>=i)return gt(t,n.entries[this._reverse?r-i:i])}else if(r=n.nodes.length-1,r>=i){var o=n.nodes[this._reverse?r-i:i];if(o){if(o.entry)return gt(t,o.entry);e=this._stack=wt(o,e)}continue}e=this._stack=this._stack.__prev}return I()};var Jr,Nr=vr/4,Pr=vr/2,Hr=vr/4;t(Bt,rt),Bt.of=function(){return this(arguments)},Bt.prototype.toString=function(){return this.__toString("List [","]")},Bt.prototype.get=function(t,e){if(t=l(this,t),t>=0&&this.size>t){t+=this._origin;var r=Qt(this,t);return r&&r.array[t&lr]}return e},Bt.prototype.set=function(t,e){return Ht(this,t,e)},Bt.prototype.remove=function(t){return this.has(t)?0===t?this.shift():t===this.size-1?this.pop():this.splice(t,1):this},Bt.prototype.insert=function(t,e){return this.splice(t,0,e)},Bt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=this._origin=this._capacity=0,this._level=pr,this._root=this._tail=null,this.__hash=void 0,this.__altered=!0,this):Pt()},Bt.prototype.push=function(){var t=arguments,e=this.size;return this.withMutations(function(r){Xt(r,0,e+t.length);for(var n=0;t.length>n;n++)r.set(e+n,t[n])})},Bt.prototype.pop=function(){return Xt(this,0,-1)},Bt.prototype.unshift=function(){var t=arguments;return this.withMutations(function(e){Xt(e,-t.length);for(var r=0;t.length>r;r++)e.set(r,t[r]); })},Bt.prototype.shift=function(){return Xt(this,1)},Bt.prototype.merge=function(){return Ft(this,void 0,arguments)},Bt.prototype.mergeWith=function(t){var e=sr.call(arguments,1);return Ft(this,t,e)},Bt.prototype.mergeDeep=function(){return Ft(this,kt,arguments)},Bt.prototype.mergeDeepWith=function(t){var e=sr.call(arguments,1);return Ft(this,At(t),e)},Bt.prototype.setSize=function(t){return Xt(this,0,t)},Bt.prototype.slice=function(t,e){var r=this.size;return d(t,e,r)?this:Xt(this,m(t,r),g(e,r))},Bt.prototype.__iterator=function(t,e){var r=0,n=Jt(this,e);return new S(function(){var e=n();return e===Xr?I():z(t,r++,e)})},Bt.prototype.__iterate=function(t,e){for(var r,n=0,i=Jt(this,e);(r=i())!==Xr&&t(r,n++,this)!==!1;);return n},Bt.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Nt(this._origin,this._capacity,this._level,this._root,this._tail,t,this.__hash):(this.__ownerID=t,this)},Bt.isList=Wt;var Vr="@@__IMMUTABLE_LIST__@@",Yr=Bt.prototype;Yr[Vr]=!0,Yr[_r]=Yr.remove,Yr.setIn=Cr.setIn,Yr.deleteIn=Yr.removeIn=Cr.removeIn,Yr.update=Cr.update,Yr.updateIn=Cr.updateIn,Yr.mergeIn=Cr.mergeIn,Yr.mergeDeepIn=Cr.mergeDeepIn,Yr.withMutations=Cr.withMutations,Yr.asMutable=Cr.asMutable,Yr.asImmutable=Cr.asImmutable,Yr.wasAltered=Cr.wasAltered,Ct.prototype.removeBefore=function(t,e,r){if(r===e?1<>>e&lr;if(n>=this.array.length)return new Ct([],t);var i,o=0===n;if(e>0){var u=this.array[n];if(i=u&&u.removeBefore(t,e-pr,r),i===u&&o)return this}if(o&&!i)return this;var s=Yt(this,t);if(!o)for(var a=0;n>a;a++)s.array[a]=void 0;return i&&(s.array[n]=i),s},Ct.prototype.removeAfter=function(t,e,r){if(r===(e?1<>>e&lr;if(n>=this.array.length)return this;var i;if(e>0){var o=this.array[n];if(i=o&&o.removeAfter(t,e-pr,r),i===o&&n===this.array.length-1)return this}var u=Yt(this,t);return u.array.splice(n+1),i&&(u.array[n]=i),u};var Qr,Xr={};t(Zt,ct),Zt.of=function(){return this(arguments)},Zt.prototype.toString=function(){return this.__toString("OrderedMap {","}"); },Zt.prototype.get=function(t,e){var r=this._map.get(t);return void 0!==r?this._list.get(r)[1]:e},Zt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):ee()},Zt.prototype.set=function(t,e){return re(this,t,e)},Zt.prototype.remove=function(t){return re(this,t,yr)},Zt.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},Zt.prototype.__iterate=function(t,e){var r=this;return this._list.__iterate(function(e){return e&&t(e[1],e[0],r)},e)},Zt.prototype.__iterator=function(t,e){return this._list.fromEntrySeq().__iterator(t,e)},Zt.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t),r=this._list.__ensureOwner(t);return t?te(e,r,t,this.__hash):(this.__ownerID=t,this._map=e,this._list=r,this)},Zt.isOrderedMap=$t,Zt.prototype[cr]=!0,Zt.prototype[_r]=Zt.prototype.remove;var Fr;t(ne,x),ne.prototype.get=function(t,e){return this._iter.get(t,e)},ne.prototype.has=function(t){return this._iter.has(t)},ne.prototype.valueSeq=function(){return this._iter.valueSeq()},ne.prototype.reverse=function(){var t=this,e=he(this,!0);return this._useKeys||(e.valueSeq=function(){return t._iter.toSeq().reverse()}),e},ne.prototype.map=function(t,e){var r=this,n=ae(this,t,e);return this._useKeys||(n.valueSeq=function(){return r._iter.toSeq().map(t,e)}),n},ne.prototype.__iterate=function(t,e){var r,n=this;return this._iter.__iterate(this._useKeys?function(e,r){return t(e,r,n)}:(r=e?De(this):0,function(i){return t(i,e?--r:r++,n)}),e)},ne.prototype.__iterator=function(t,e){if(this._useKeys)return this._iter.__iterator(t,e);var r=this._iter.__iterator(wr,e),n=e?De(this):0;return new S(function(){var i=r.next();return i.done?i:z(t,e?--n:n++,i.value,i)})},ne.prototype[cr]=!0,t(ie,k),ie.prototype.includes=function(t){return this._iter.includes(t)},ie.prototype.__iterate=function(t,e){var r=this,n=0;return this._iter.__iterate(function(e){return t(e,n++,r)},e)},ie.prototype.__iterator=function(t,e){var r=this._iter.__iterator(wr,e),n=0; return new S(function(){var e=r.next();return e.done?e:z(t,n++,e.value,e)})},t(oe,A),oe.prototype.has=function(t){return this._iter.includes(t)},oe.prototype.__iterate=function(t,e){var r=this;return this._iter.__iterate(function(e){return t(e,e,r)},e)},oe.prototype.__iterator=function(t,e){var r=this._iter.__iterator(wr,e);return new S(function(){var e=r.next();return e.done?e:z(t,e.value,e.value,e)})},t(ue,x),ue.prototype.entrySeq=function(){return this._iter.toSeq()},ue.prototype.__iterate=function(t,e){var r=this;return this._iter.__iterate(function(e){if(e){qe(e);var n=o(e);return t(n?e.get(1):e[1],n?e.get(0):e[0],r)}},e)},ue.prototype.__iterator=function(t,e){var r=this._iter.__iterator(wr,e);return new S(function(){for(;;){var e=r.next();if(e.done)return e;var n=e.value;if(n){qe(n);var i=o(n);return z(t,i?n.get(0):n[0],i?n.get(1):n[1],e)}}})},ie.prototype.cacheResult=ne.prototype.cacheResult=oe.prototype.cacheResult=ue.prototype.cacheResult=Oe,t(Ae,et),Ae.prototype.toString=function(){return this.__toString(Re(this)+" {","}")},Ae.prototype.has=function(t){return this._defaultValues.hasOwnProperty(t)},Ae.prototype.get=function(t,e){if(!this.has(t))return e;var r=this._defaultValues[t];return this._map?this._map.get(t,r):r},Ae.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var t=this.constructor;return t._empty||(t._empty=je(this,zt()))},Ae.prototype.set=function(t,e){if(!this.has(t))throw Error('Cannot set unknown key "'+t+'" on '+Re(this));if(this._map&&!this._map.has(t)){var r=this._defaultValues[t];if(e===r)return this}var n=this._map&&this._map.set(t,e);return this.__ownerID||n===this._map?this:je(this,n)},Ae.prototype.remove=function(t){if(!this.has(t))return this;var e=this._map&&this._map.remove(t);return this.__ownerID||e===this._map?this:je(this,e)},Ae.prototype.wasAltered=function(){return this._map.wasAltered()},Ae.prototype.__iterator=function(t,e){var n=this;return r(this._defaultValues).map(function(t,e){return n.get(e)}).__iterator(t,e)},Ae.prototype.__iterate=function(t,e){ var n=this;return r(this._defaultValues).map(function(t,e){return n.get(e)}).__iterate(t,e)},Ae.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map&&this._map.__ensureOwner(t);return t?je(this,e,t):(this.__ownerID=t,this._map=e,this)};var Gr=Ae.prototype;Gr[_r]=Gr.remove,Gr.deleteIn=Gr.removeIn=Cr.removeIn,Gr.merge=Cr.merge,Gr.mergeWith=Cr.mergeWith,Gr.mergeIn=Cr.mergeIn,Gr.mergeDeep=Cr.mergeDeep,Gr.mergeDeepWith=Cr.mergeDeepWith,Gr.mergeDeepIn=Cr.mergeDeepIn,Gr.setIn=Cr.setIn,Gr.update=Cr.update,Gr.updateIn=Cr.updateIn,Gr.withMutations=Cr.withMutations,Gr.asMutable=Cr.asMutable,Gr.asImmutable=Cr.asImmutable,t(Le,nt),Le.of=function(){return this(arguments)},Le.fromKeys=function(t){return this(r(t).keySeq())},Le.prototype.toString=function(){return this.__toString("Set {","}")},Le.prototype.has=function(t){return this._map.has(t)},Le.prototype.add=function(t){return Be(this,this._map.set(t,!0))},Le.prototype.remove=function(t){return Be(this,this._map.remove(t))},Le.prototype.clear=function(){return Be(this,this._map.clear())},Le.prototype.union=function(){var t=sr.call(arguments,0);return t=t.filter(function(t){return 0!==t.size}),0===t.length?this:0!==this.size||this.__ownerID||1!==t.length?this.withMutations(function(e){for(var r=0;t.length>r;r++)i(t[r]).forEach(function(t){return e.add(t)})}):this.constructor(t[0])},Le.prototype.intersect=function(){var t=sr.call(arguments,0);if(0===t.length)return this;t=t.map(function(t){return i(t)});var e=this;return this.withMutations(function(r){e.forEach(function(e){t.every(function(t){return t.includes(e)})||r.remove(e)})})},Le.prototype.subtract=function(){var t=sr.call(arguments,0);if(0===t.length)return this;t=t.map(function(t){return i(t)});var e=this;return this.withMutations(function(r){e.forEach(function(e){t.some(function(t){return t.includes(e)})&&r.remove(e)})})},Le.prototype.merge=function(){return this.union.apply(this,arguments)},Le.prototype.mergeWith=function(t){var e=sr.call(arguments,1);return this.union.apply(this,e)}, Le.prototype.sort=function(t){return Je(we(this,t))},Le.prototype.sortBy=function(t,e){return Je(we(this,e,t))},Le.prototype.wasAltered=function(){return this._map.wasAltered()},Le.prototype.__iterate=function(t,e){var r=this;return this._map.__iterate(function(e,n){return t(n,n,r)},e)},Le.prototype.__iterator=function(t,e){return this._map.map(function(t,e){return e}).__iterator(t,e)},Le.prototype.__ensureOwner=function(t){if(t===this.__ownerID)return this;var e=this._map.__ensureOwner(t);return t?this.__make(e,t):(this.__ownerID=t,this._map=e,this)},Le.isSet=Te;var Zr="@@__IMMUTABLE_SET__@@",$r=Le.prototype;$r[Zr]=!0,$r[_r]=$r.remove,$r.mergeDeep=$r.merge,$r.mergeDeepWith=$r.mergeWith,$r.withMutations=Cr.withMutations,$r.asMutable=Cr.asMutable,$r.asImmutable=Cr.asImmutable,$r.__empty=Ce,$r.__make=We;var tn;t(Je,Le),Je.of=function(){return this(arguments)},Je.fromKeys=function(t){return this(r(t).keySeq())},Je.prototype.toString=function(){return this.__toString("OrderedSet {","}")},Je.isOrderedSet=Ne;var en=Je.prototype;en[cr]=!0,en.__empty=He,en.__make=Pe;var rn;t(Ve,rt),Ve.of=function(){return this(arguments)},Ve.prototype.toString=function(){return this.__toString("Stack [","]")},Ve.prototype.get=function(t,e){var r=this._head;for(t=l(this,t);r&&t--;)r=r.next;return r?r.value:e},Ve.prototype.peek=function(){return this._head&&this._head.value},Ve.prototype.push=function(){if(0===arguments.length)return this;for(var t=this.size+arguments.length,e=this._head,r=arguments.length-1;r>=0;r--)e={value:arguments[r],next:e};return this.__ownerID?(this.size=t,this._head=e,this.__hash=void 0,this.__altered=!0,this):Qe(t,e)},Ve.prototype.pushAll=function(t){if(t=n(t),0===t.size)return this;ft(t.size);var e=this.size,r=this._head;return t.reverse().forEach(function(t){e++,r={value:t,next:r}}),this.__ownerID?(this.size=e,this._head=r,this.__hash=void 0,this.__altered=!0,this):Qe(e,r)},Ve.prototype.pop=function(){return this.slice(1)},Ve.prototype.unshift=function(){return this.push.apply(this,arguments)},Ve.prototype.unshiftAll=function(t){ return this.pushAll(t)},Ve.prototype.shift=function(){return this.pop.apply(this,arguments)},Ve.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Xe()},Ve.prototype.slice=function(t,e){if(d(t,e,this.size))return this;var r=m(t,this.size),n=g(e,this.size);if(n!==this.size)return rt.prototype.slice.call(this,t,e);for(var i=this.size-r,o=this._head;r--;)o=o.next;return this.__ownerID?(this.size=i,this._head=o,this.__hash=void 0,this.__altered=!0,this):Qe(i,o)},Ve.prototype.__ensureOwner=function(t){return t===this.__ownerID?this:t?Qe(this.size,this._head,t,this.__hash):(this.__ownerID=t,this.__altered=!1,this)},Ve.prototype.__iterate=function(t,e){if(e)return this.reverse().__iterate(t);for(var r=0,n=this._head;n&&t(n.value,r++,this)!==!1;)n=n.next;return r},Ve.prototype.__iterator=function(t,e){if(e)return this.reverse().__iterator(t);var r=0,n=this._head;return new S(function(){if(n){var e=n.value;return n=n.next,z(t,r++,e)}return I()})},Ve.isStack=Ye;var nn="@@__IMMUTABLE_STACK__@@",on=Ve.prototype;on[nn]=!0,on.withMutations=Cr.withMutations,on.asMutable=Cr.asMutable,on.asImmutable=Cr.asImmutable,on.wasAltered=Cr.wasAltered;var un;e.Iterator=S,Fe(e,{toArray:function(){ft(this.size);var t=Array(this.size||0);return this.valueSeq().__iterate(function(e,r){t[r]=e}),t},toIndexedSeq:function(){return new ie(this)},toJS:function(){return this.toSeq().map(function(t){return t&&"function"==typeof t.toJS?t.toJS():t}).__toJS()},toJSON:function(){return this.toSeq().map(function(t){return t&&"function"==typeof t.toJSON?t.toJSON():t}).__toJS()},toKeyedSeq:function(){return new ne(this,!0)},toMap:function(){return ct(this.toKeyedSeq())},toObject:function(){ft(this.size);var t={};return this.__iterate(function(e,r){t[r]=e}),t},toOrderedMap:function(){return Zt(this.toKeyedSeq())},toOrderedSet:function(){return Je(u(this)?this.valueSeq():this)},toSet:function(){return Le(u(this)?this.valueSeq():this)},toSetSeq:function(){return new oe(this); },toSeq:function(){return s(this)?this.toIndexedSeq():u(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Ve(u(this)?this.valueSeq():this)},toList:function(){return Bt(u(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(t,e){return 0===this.size?t+e:t+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+e},concat:function(){var t=sr.call(arguments,0);return be(this,ye(this,t))},includes:function(t){return this.some(function(e){return X(e,t)})},entries:function(){return this.__iterator(Sr)},every:function(t,e){ft(this.size);var r=!0;return this.__iterate(function(n,i,o){return t.call(e,n,i,o)?void 0:(r=!1,!1)}),r},filter:function(t,e){return be(this,fe(this,t,e,!0))},find:function(t,e,r){var n=this.findEntry(t,e);return n?n[1]:r},forEach:function(t,e){return ft(this.size),this.__iterate(e?t.bind(e):t)},join:function(t){ft(this.size),t=void 0!==t?""+t:",";var e="",r=!0;return this.__iterate(function(n){r?r=!1:e+=t,e+=null!==n&&void 0!==n?""+n:""}),e},keys:function(){return this.__iterator(gr)},map:function(t,e){return be(this,ae(this,t,e))},reduce:function(t,e,r){ft(this.size);var n,i;return arguments.length<2?i=!0:n=e,this.__iterate(function(e,o,u){i?(i=!1,n=e):n=t.call(r,n,e,o,u)}),n},reduceRight:function(t,e,r){var n=this.toKeyedSeq().reverse();return n.reduce.apply(n,arguments)},reverse:function(){return be(this,he(this,!0))},slice:function(t,e){return be(this,pe(this,t,e,!0))},some:function(t,e){return!this.every($e(t),e)},sort:function(t){return be(this,we(this,t))},values:function(){return this.__iterator(wr)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(t,e){return v(t?this.toSeq().filter(t,e):this)},countBy:function(t,e){return ce(this,t,e)},equals:function(t){return F(this,t)},entrySeq:function(){var t=this;if(t._cache)return new j(t._cache);var e=t.toSeq().map(Ze).toIndexedSeq();return e.fromEntrySeq=function(){return t.toSeq()},e},filterNot:function(t,e){ return this.filter($e(t),e)},findEntry:function(t,e,r){var n=r;return this.__iterate(function(r,i,o){return t.call(e,r,i,o)?(n=[i,r],!1):void 0}),n},findKey:function(t,e){var r=this.findEntry(t,e);return r&&r[0]},findLast:function(t,e,r){return this.toKeyedSeq().reverse().find(t,e,r)},findLastEntry:function(t,e,r){return this.toKeyedSeq().reverse().findEntry(t,e,r)},findLastKey:function(t,e){return this.toKeyedSeq().reverse().findKey(t,e)},first:function(){return this.find(y)},flatMap:function(t,e){return be(this,me(this,t,e))},flatten:function(t){return be(this,de(this,t,!0))},fromEntrySeq:function(){return new ue(this)},get:function(t,e){return this.find(function(e,r){return X(r,t)},void 0,e)},getIn:function(t,e){for(var r,n=this,i=ke(t);!(r=i.next()).done;){var o=r.value;if(n=n&&n.get?n.get(o,yr):yr,n===yr)return e}return n},groupBy:function(t,e){return _e(this,t,e)},has:function(t){return this.get(t,yr)!==yr},hasIn:function(t){return this.getIn(t,yr)!==yr},isSubset:function(t){return t="function"==typeof t.includes?t:e(t),this.every(function(e){return t.includes(e)})},isSuperset:function(t){return t="function"==typeof t.isSubset?t:e(t),t.isSubset(this)},keyOf:function(t){return this.findKey(function(e){return X(e,t)})},keySeq:function(){return this.toSeq().map(Ge).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(t){return this.toKeyedSeq().reverse().keyOf(t)},max:function(t){return Se(this,t)},maxBy:function(t,e){return Se(this,e,t)},min:function(t){return Se(this,t?tr(t):nr)},minBy:function(t,e){return Se(this,e?tr(e):nr,t)},rest:function(){return this.slice(1)},skip:function(t){return this.slice(Math.max(0,t))},skipLast:function(t){return be(this,this.toSeq().reverse().skip(t).reverse())},skipWhile:function(t,e){return be(this,le(this,t,e,!0))},skipUntil:function(t,e){return this.skipWhile($e(t),e)},sortBy:function(t,e){return be(this,we(this,e,t))},take:function(t){return this.slice(0,Math.max(0,t))},takeLast:function(t){return be(this,this.toSeq().reverse().take(t).reverse()); },takeWhile:function(t,e){return be(this,ve(this,t,e))},takeUntil:function(t,e){return this.takeWhile($e(t),e)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=ir(this))}});var sn=e.prototype;sn[ar]=!0,sn[br]=sn.values,sn.__toJS=sn.toArray,sn.__toStringMapper=er,sn.inspect=sn.toSource=function(){return""+this},sn.chain=sn.flatMap,sn.contains=sn.includes,Fe(r,{flip:function(){return be(this,se(this))},mapEntries:function(t,e){var r=this,n=0;return be(this,this.toSeq().map(function(i,o){return t.call(e,[o,i],n++,r)}).fromEntrySeq())},mapKeys:function(t,e){var r=this;return be(this,this.toSeq().flip().map(function(n,i){return t.call(e,n,i,r)}).flip())}});var an=r.prototype;an[hr]=!0,an[br]=sn.entries,an.__toJS=sn.toObject,an.__toStringMapper=function(t,e){return JSON.stringify(e)+": "+er(t)},Fe(n,{toKeyedSeq:function(){return new ne(this,!1)},filter:function(t,e){return be(this,fe(this,t,e,!1))},findIndex:function(t,e){var r=this.findEntry(t,e);return r?r[0]:-1},indexOf:function(t){var e=this.keyOf(t);return void 0===e?-1:e},lastIndexOf:function(t){var e=this.lastKeyOf(t);return void 0===e?-1:e},reverse:function(){return be(this,he(this,!1))},slice:function(t,e){return be(this,pe(this,t,e,!1))},splice:function(t,e){var r=arguments.length;if(e=Math.max(0|e,0),0===r||2===r&&!e)return this;t=m(t,0>t?this.count():this.size);var n=this.slice(0,t);return be(this,1===r?n:n.concat(p(arguments,2),this.slice(t+e)))},findLastIndex:function(t,e){var r=this.findLastEntry(t,e);return r?r[0]:-1},first:function(){return this.get(0)},flatten:function(t){return be(this,de(this,t,!1))},get:function(t,e){return t=l(this,t),0>t||this.size===1/0||void 0!==this.size&&t>this.size?e:this.find(function(e,r){return r===t},void 0,e)},has:function(t){return t=l(this,t),t>=0&&(void 0!==this.size?this.size===1/0||this.size>t:-1!==this.indexOf(t))},interpose:function(t){return be(this,ge(this,t))},interleave:function(){var t=[this].concat(p(arguments)),e=Ie(this.toSeq(),k.of,t),r=e.flatten(!0);return e.size&&(r.size=e.size*t.length), be(this,r)},keySeq:function(){return $(0,this.size)},last:function(){return this.get(-1)},skipWhile:function(t,e){return be(this,le(this,t,e,!1))},zip:function(){var t=[this].concat(p(arguments));return be(this,Ie(this,rr,t))},zipWith:function(t){var e=p(arguments);return e[0]=this,be(this,Ie(this,t,e))}}),n.prototype[fr]=!0,n.prototype[cr]=!0,Fe(i,{get:function(t,e){return this.has(t)?t:e},includes:function(t){return this.has(t)},keySeq:function(){return this.valueSeq()}}),i.prototype.has=sn.includes,i.prototype.contains=i.prototype.includes,Fe(x,r.prototype),Fe(k,n.prototype),Fe(A,i.prototype),Fe(et,r.prototype),Fe(rt,n.prototype),Fe(nt,i.prototype);var hn={Iterable:e,Seq:O,Collection:tt,Map:ct,OrderedMap:Zt,List:Bt,Stack:Ve,Set:Le,OrderedSet:Je,Record:Ae,Range:$,Repeat:G,is:X,fromJS:H};return hn});drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/insQ.js000066400000000000000000000124111514731163200236710ustar00rootroot00000000000000var insertionQ = (function () { "use strict"; var sequence = 100, isAnimationSupported = false, animation_string = 'animationName', keyframeprefix = '', domPrefixes = 'Webkit Moz O ms Khtml'.split(' '), pfx = '', elm = document.createElement('div'), options = { strictlyNew: true, timeout: 20 }; if (elm.style.animationName) { isAnimationSupported = true; } if (isAnimationSupported === false) { for (var i = 0; i < domPrefixes.length; i++) { if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { pfx = domPrefixes[i]; animation_string = pfx + 'AnimationName'; keyframeprefix = '-' + pfx.toLowerCase() + '-'; isAnimationSupported = true; break; } } } function listen(selector, callback) { var styleAnimation, animationName = 'insQ_' + (sequence++); var eventHandler = function (event) { if (event.animationName === animationName || event[animation_string] === animationName) { if (!isTagged(event.target)) { callback(event.target); } } }; styleAnimation = document.createElement('style'); styleAnimation.innerHTML = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }' + "\n" + selector + ' { animation-duration: 0.001s; animation-name: ' + animationName + '; ' + keyframeprefix + 'animation-duration: 0.001s; ' + keyframeprefix + 'animation-name: ' + animationName + '; ' + ' } '; document.head.appendChild(styleAnimation); var bindAnimationLater = setTimeout(function () { document.addEventListener('animationstart', eventHandler, false); document.addEventListener('MSAnimationStart', eventHandler, false); document.addEventListener('webkitAnimationStart', eventHandler, false); //event support is not consistent with DOM prefixes }, options.timeout); //starts listening later to skip elements found on startup. this might need tweaking return { destroy: function () { clearTimeout(bindAnimationLater); if (styleAnimation) { document.head.removeChild(styleAnimation); styleAnimation = null; } document.removeEventListener('animationstart', eventHandler); document.removeEventListener('MSAnimationStart', eventHandler); document.removeEventListener('webkitAnimationStart', eventHandler); } }; } function tag(el) { el.QinsQ = true; //bug in V8 causes memory leaks when weird characters are used as field names. I don't want to risk leaking DOM trees so the key is not '-+-' anymore } function isTagged(el) { return (options.strictlyNew && (el.QinsQ === true)); } function topmostUntaggedParent(el) { if (isTagged(el.parentNode)) { return el; } else { return topmostUntaggedParent(el.parentNode); } } function tagAll(e) { tag(e); e = e.firstChild; for (; e; e = e.nextSibling) { if (e !== undefined && e.nodeType === 1) { tagAll(e); } } } //aggregates multiple insertion events into a common parent function catchInsertions(selector, callback) { var insertions = []; //throttle summary var sumUp = (function () { var to; return function () { clearTimeout(to); to = setTimeout(function () { insertions.forEach(tagAll); callback(insertions); insertions = []; }, 10); }; })(); return listen(selector, function (el) { if (isTagged(el)) { return; } tag(el); var myparent = topmostUntaggedParent(el); if (insertions.indexOf(myparent) < 0) { insertions.push(myparent); } sumUp(); }); } //insQ function var exports = function (selector) { if (isAnimationSupported && selector.match(/[^{}]/)) { if (options.strictlyNew) { tagAll(document.body); //prevents from catching things on show } return { every: function (callback) { return listen(selector, callback); }, summary: function (callback) { return catchInsertions(selector, callback); } }; } else { return false; } }; //allows overriding defaults exports.config = function (opt) { for (var o in opt) { if (opt.hasOwnProperty(o)) { options[o] = opt[o]; } } }; return exports; })(); if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { module.exports = insertionQ; } drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/insQ.min.js000066400000000000000000000040551514731163200244600ustar00rootroot00000000000000// insertion-query v1.0.3 (2016-01-20) // license:MIT // Zbyszek Tenerowicz (http://naugtur.pl/) var insertionQ=function(){"use strict";function a(a,b){var d,e="insQ_"+g++,f=function(a){(a.animationName===e||a[i]===e)&&(c(a.target)||b(a.target))};d=document.createElement("style"),d.innerHTML="@"+j+"keyframes "+e+" { from { outline: 1px solid transparent } to { outline: 0px solid transparent } }\n"+a+" { animation-duration: 0.001s; animation-name: "+e+"; "+j+"animation-duration: 0.001s; "+j+"animation-name: "+e+"; } ",document.head.appendChild(d);var h=setTimeout(function(){document.addEventListener("animationstart",f,!1),document.addEventListener("MSAnimationStart",f,!1),document.addEventListener("webkitAnimationStart",f,!1)},n.timeout);return{destroy:function(){clearTimeout(h),d&&(document.head.removeChild(d),d=null),document.removeEventListener("animationstart",f),document.removeEventListener("MSAnimationStart",f),document.removeEventListener("webkitAnimationStart",f)}}}function b(a){a.QinsQ=!0}function c(a){return n.strictlyNew&&a.QinsQ===!0}function d(a){return c(a.parentNode)?a:d(a.parentNode)}function e(a){for(b(a),a=a.firstChild;a;a=a.nextSibling)void 0!==a&&1===a.nodeType&&e(a)}function f(f,g){var h=[],i=function(){var a;return function(){clearTimeout(a),a=setTimeout(function(){h.forEach(e),g(h),h=[]},10)}}();return a(f,function(a){if(!c(a)){b(a);var e=d(a);h.indexOf(e)<0&&h.push(e),i()}})}var g=100,h=!1,i="animationName",j="",k="Webkit Moz O ms Khtml".split(" "),l="",m=document.createElement("div"),n={strictlyNew:!0,timeout:20};if(m.style.animationName&&(h=!0),h===!1)for(var o=0;o // This file is licensed under the BSD 3-Clause License. // License text available at https://opensource.org/licenses/BSD-3-Clause "use strict"; var currentPath = window.location.protocol + "//" + window.location.host + window.location.pathname; var specURL = currentPath + '?format=openapi'; var redoc = document.createElement("redoc"); var redocSettings = JSON.parse(document.getElementById('redoc-settings').innerHTML); if (redocSettings.url) { specURL = redocSettings.url; } delete redocSettings.url; if (redocSettings.fetchSchemaWithQuery) { var query = new URLSearchParams(window.location.search || '').entries(); var url = specURL.split('?'); var usp = new URLSearchParams(url[1] || ''); for (var it = query.next(); !it.done; it = query.next()) { usp.set(it.value[0], it.value[1]); } url[1] = usp.toString(); specURL = url[1] ? url.join('?') : url[0]; } delete redocSettings.fetchSchemaWithQuery; redoc.setAttribute("spec-url", specURL); function camelToKebab(str) { return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); } for (var p in redocSettings) { if (redocSettings.hasOwnProperty(p)) { if (redocSettings[p] !== null && redocSettings[p] !== undefined && redocSettings[p] !== false) { redoc.setAttribute(camelToKebab(p), redocSettings[p].toString()); } } } document.body.replaceChild(redoc, document.getElementById('redoc-placeholder')); function hideEmptyVersion() { // 'span.api-info-version' is for redoc 1.x, 'div.api-info span' is for redoc 2-alpha var apiVersion = document.querySelector('span.api-info-version') || document.querySelector('div.api-info span'); if (!apiVersion) { console.log("WARNING: could not find API versionString element (span.api-info-version)"); return; } var versionString = apiVersion.innerText; if (versionString) { // trim spaces and surrounding () versionString = versionString.replace(/ /g, ''); versionString = versionString.replace(/(^\()|(\)$)/g, ''); } if (!versionString) { // hide version element if empty apiVersion.classList.add("hidden"); } } if (document.querySelector('span.api-info-version') || document.querySelector('div.api-info span')) { hideEmptyVersion(); } else { insertionQ('span.api-info-version').every(hideEmptyVersion); insertionQ('div.api-info span').every(hideEmptyVersion); } drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc-old/000077500000000000000000000000001514731163200242725ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc-old/LICENSE000066400000000000000000000020731514731163200253010ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015, Rebilly, 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. drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc-old/redoc.min.js000066400000000000000000041241501514731163200265150ustar00rootroot00000000000000/*! * ReDoc - OpenAPI/Swagger-generated API Reference Documentation * ------------------------------------------------------------- * Version: "1.22.3" * Repo: https://github.com/Rebilly/ReDoc */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(function(){try{return require("esprima")}catch(e){}}(),function(){try{return require("jquery")}catch(e){}}()):"function"==typeof define&&define.amd?define("Redoc",["esprima","jquery"],t):"object"==typeof exports?exports.Redoc=t(function(){try{return require("esprima")}catch(e){}}(),function(){try{return require("jquery")}catch(e){}}()):e.Redoc=t(e.esprima,e.jquery)}("undefined"!=typeof self?self:this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=249)}([function(e,t,n){var r=n(5),o=n(8),i=n(25),a=n(20),s=n(58),l=function(e,t,n){var u,c,p,d,f=e&l.F,h=e&l.G,g=e&l.S,m=e&l.P,y=e&l.B,v=h?r:g?r[t]||(r[t]={}):(r[t]||{}).prototype,b=h?o:o[t]||(o[t]={}),_=b.prototype||(b.prototype={});h&&(n=t);for(u in n)c=!f&&v&&void 0!==v[u],p=(c?v:n)[u],d=y&&c?s(p,r):m&&"function"==typeof p?s(Function.call,p):p,v&&a(v,u,p,e&l.U),b[u]!=p&&i(b,u,d),m&&_[u]!=p&&(_[u]=p)};r.core=o,l.F=1,l.G=2,l.S=4,l.P=8,l.B=16,l.W=32,l.U=64,l.R=128,e.exports=l},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),function(e){function r(){if(!Do){var e=jo.Symbol;if(e&&e.iterator)Do=e.iterator;else for(var t=Object.getOwnPropertyNames(Map.prototype),n=0;n-1)return t.push(e[n]),t;t.push(e[n])}return t}function k(e){if(e.length>1){return" ("+x(e.slice().reverse()).map(function(e){return a(e.token)}).join(" -> ")+")"}return""}function C(e,t,n,r){var o=[t],i=n(o),a=r?w(i,r):Error(i);return a.addKey=S,a.keys=o,a.injectors=[e],a.constructResolvingMessage=n,a[_i]=r,a}function S(e,t){this.injectors.push(e),this.keys.push(t),this.message=this.constructResolvingMessage(this.keys)}function O(e,t){return C(e,t,function(e){return"No provider for "+a(e[0].token)+"!"+k(e)})}function P(e,t){return C(e,t,function(e){return"Cannot instantiate cyclic dependency!"+k(e)})}function M(e,t,n,r){return C(e,r,function(e){var n=a(e[0].token);return t.message+": Error during instantiation of "+n+"!"+k(e)+"."},t)}function E(e){return Error("Invalid provider - only instances of Provider and Type are allowed, got: "+e)}function T(e,t){for(var n=[],r=0,o=t.length;r-1&&e.splice(n,1)}function ve(e,t){var n=Fa.get(e);if(n)throw new Error("Duplicate module registered for "+e+" - "+n.moduleType.name+" vs "+t.moduleType.name);Fa.set(e,t)}function be(e){var t=Fa.get(e);if(!t)throw new Error("No module with ID "+e+" loaded");return t}function _e(e){return e.reduce(function(e,t){var n=Array.isArray(t)?_e(t):t;return e.concat(n)},[])}function we(e,t,n){if(!e)throw new Error("Cannot find '"+n+"' in '"+t+"'");return e}function xe(e){return e.map(function(e){return e.nativeElement})}function ke(e,t,n){e.childNodes.forEach(function(e){e instanceof Ga&&(t(e)&&n.push(e),ke(e,t,n))})}function Ce(e,t,n){e instanceof Ga&&e.childNodes.forEach(function(e){t(e)&&n.push(e),e instanceof Ga&&Ce(e,t,n)})}function Se(e){return Ja.get(e)||null}function Oe(e){Ja.set(e.nativeNode,e)}function Pe(e){Ja.delete(e.nativeNode)}function Me(e,t){var n=Ee(e),r=Ee(t);if(n&&r)return Te(e,t,Me);var o=e&&("object"==typeof e||"function"==typeof e),a=t&&("object"==typeof t||"function"==typeof t);return!(n||!o||r||!a)||i(e,t)}function Ee(e){return!!Ae(e)&&(Array.isArray(e)||!(e instanceof Map)&&r()in e)}function Te(e,t,n){for(var o=e[r()](),i=t[r()]();;){var a=o.next(),s=i.next();if(a.done&&s.done)return!0;if(a.done||s.done)return!1;if(!n(a.value,s.value))return!1}}function Ie(e,t){if(Array.isArray(e))for(var n=0;n0&&jt(e,t,0,n)&&(f=!0),d>1&&jt(e,t,1,r)&&(f=!0),d>2&&jt(e,t,2,o)&&(f=!0),d>3&&jt(e,t,3,i)&&(f=!0),d>4&&jt(e,t,4,a)&&(f=!0),d>5&&jt(e,t,5,s)&&(f=!0),d>6&&jt(e,t,6,l)&&(f=!0),d>7&&jt(e,t,7,u)&&(f=!0),d>8&&jt(e,t,8,c)&&(f=!0),d>9&&jt(e,t,9,p)&&(f=!0),f}function Nt(e,t,n){for(var r=!1,o=0;o0?o[n-1]:null,r)}function Xt(e,t){var n=at(t);if(n&&n!==e&&!(16&t.state)){t.state|=16;var r=n.template._projectedViews;r||(r=n.template._projectedViews=[]),r.push(t),Gt(t.parent.def,t.parentNodeDef)}}function Gt(e,t){if(!(4&t.flags)){e.nodeFlags|=4,t.flags|=4;for(var n=t.parent;n;)n.childFlags|=4,n=n.parent}}function Jt(e,t){var n=e.viewContainer._embeddedViews;if((null==t||t>=n.length)&&(t=n.length-1),t<0)return null;var r=n[t];return r.viewContainerParent=null,rn(n,t),Os.dirtyParentQueries(r),tn(r),r}function Kt(e){if(16&e.state){var t=at(e);if(t){var n=t.template._projectedViews;n&&(rn(n,n.indexOf(e)),Os.dirtyParentQueries(e))}}}function Qt(e,t,n){var r=e.viewContainer._embeddedViews,o=r[t];return rn(r,t),null==n&&(n=r.length),nn(r,n,o),Os.dirtyParentQueries(o),tn(o),en(e,n>0?r[n-1]:null,o),o}function en(e,t,n){var r=t?lt(t,t.def.lastRenderRootNode):e.renderElement;vt(n,2,n.renderer.parentNode(r),n.renderer.nextSibling(r),void 0)}function tn(e){vt(e,3,null,null,void 0)}function nn(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function rn(e,t){t>=e.length-1?e.pop():e.splice(t,1)}function on(e,t,n,r,o,i){return new Vs(e,t,n,r,o,i)}function an(e){return e.viewDefFactory}function sn(e,t,n){return new Hs(e,t,n)}function ln(e){return new qs(e)}function un(e,t){return new Us(e,t)}function cn(e,t){return new $s(e,t)}function pn(e,t){var n=e.def.nodes[t];if(1&n.flags){var r=Ve(e,n.nodeIndex);return n.element.template?r.template:r.renderElement}if(2&n.flags)return ze(e,n.nodeIndex).renderText;if(20240&n.flags)return Be(e,n.nodeIndex).instance;throw new Error("Illegal state: read nodeValue for node index "+t)}function dn(e){return new Ys(e.renderer)}function fn(e,t,n,r){return new Ws(e,t,n,r)}function hn(e,t,n,r,o,i,a,s){var l=[];if(a)for(var u in a){var c=a[u],p=c[0],d=c[1];l[p]={flags:8,name:u,nonMinifiedName:d,ns:null,securityContext:null,suffix:null}}var f=[];if(s)for(var h in s)f.push({type:1,propName:h,target:null,eventName:s[h]});return t|=16384,yn(e,t,n,r,o,o,i,l,f)}function gn(e,t,n){return e|=16,yn(-1,e,null,0,t,t,n)}function mn(e,t,n,r,o){return yn(-1,e,t,0,n,r,o)}function yn(e,t,n,r,o,i,a,s,l){var u=ft(n),c=u.matchedQueries,p=u.references,d=u.matchedQueryIds;l||(l=[]),s||(s=[]);var f=ht(a);return{nodeIndex:-1,parent:null,renderParent:null,bindingIndex:-1,outputIndex:-1,checkIndex:e,flags:t,childFlags:0,directChildFlags:0,childMatchedQueries:0,matchedQueries:c,matchedQueryIds:d,references:p,ngContentIndex:-1,childCount:r,bindings:s,bindingFlags:Ct(s),outputs:l,element:null,provider:{token:o,value:i,deps:f},text:null,query:null,ngContent:null}}function vn(e,t){return Cn(e,t)}function bn(e,t){for(var n=e;n.parent&&!ct(n);)n=n.parent;return Sn(n.parent,st(n),!0,t.provider.value,t.provider.deps)}function _n(e,t){var n=(32768&t.flags)>0,r=Sn(e,t.parent,n,t.provider.value,t.provider.deps);if(t.outputs.length)for(var o=0;o0&&et(e,t,0,n)&&(h=!0,g=En(e,d,t,0,n,g)),m>1&&et(e,t,1,r)&&(h=!0,g=En(e,d,t,1,r,g)),m>2&&et(e,t,2,o)&&(h=!0,g=En(e,d,t,2,o,g)),m>3&&et(e,t,3,i)&&(h=!0,g=En(e,d,t,3,i,g)),m>4&&et(e,t,4,a)&&(h=!0,g=En(e,d,t,4,a,g)),m>5&&et(e,t,5,s)&&(h=!0,g=En(e,d,t,5,s,g)),m>6&&et(e,t,6,l)&&(h=!0,g=En(e,d,t,6,l,g)),m>7&&et(e,t,7,u)&&(h=!0,g=En(e,d,t,7,u,g)),m>8&&et(e,t,8,c)&&(h=!0,g=En(e,d,t,8,c,g)),m>9&&et(e,t,9,p)&&(h=!0,g=En(e,d,t,9,p,g)),g&&f.ngOnChanges(g),2&e.state&&65536&t.flags&&f.ngOnInit(),262144&t.flags&&f.ngDoCheck(),h}function kn(e,t,n){for(var r=Be(e,t.nodeIndex),o=r.instance,i=!1,a=void 0,s=0;s0,r=t.provider;switch(201347067&t.flags){case 512:return Sn(e,t.parent,n,r.value,r.deps);case 1024:return On(e,t.parent,n,r.value,r.deps);case 2048:return Pn(e,t.parent,n,r.deps[0]);case 256:return r.value}}function Sn(e,t,n,r,o){var i=o.length;switch(i){case 0:return new r;case 1:return new r(Pn(e,t,n,o[0]));case 2:return new r(Pn(e,t,n,o[0]),Pn(e,t,n,o[1]));case 3:return new r(Pn(e,t,n,o[0]),Pn(e,t,n,o[1]),Pn(e,t,n,o[2]));default:for(var a=new Array(i),s=0;s0&&tt(e,t,0,n)&&(f=!0),h>1&&tt(e,t,1,r)&&(f=!0),h>2&&tt(e,t,2,o)&&(f=!0),h>3&&tt(e,t,3,i)&&(f=!0),h>4&&tt(e,t,4,a)&&(f=!0),h>5&&tt(e,t,5,s)&&(f=!0),h>6&&tt(e,t,6,l)&&(f=!0),h>7&&tt(e,t,7,u)&&(f=!0),h>8&&tt(e,t,8,c)&&(f=!0),h>9&&tt(e,t,9,p)&&(f=!0),f){var g=He(e,t.nodeIndex),m=void 0;switch(201347067&t.flags){case 32:m=new Array(d.length),h>0&&(m[0]=n),h>1&&(m[1]=r),h>2&&(m[2]=o),h>3&&(m[3]=i),h>4&&(m[4]=a),h>5&&(m[5]=s),h>6&&(m[6]=l),h>7&&(m[7]=u),h>8&&(m[8]=c),h>9&&(m[9]=p);break;case 64:m={},h>0&&(m[d[0].name]=n),h>1&&(m[d[1].name]=r),h>2&&(m[d[2].name]=o),h>3&&(m[d[3].name]=i),h>4&&(m[d[4].name]=a),h>5&&(m[d[5].name]=s),h>6&&(m[d[6].name]=l),h>7&&(m[d[7].name]=u),h>8&&(m[d[8].name]=c),h>9&&(m[d[9].name]=p);break;case 128:var y=n;switch(h){case 1:m=y.transform(n);break;case 2:m=y.transform(r);break;case 3:m=y.transform(r,o);break;case 4:m=y.transform(r,o,i);break;case 5:m=y.transform(r,o,i,a);break;case 6:m=y.transform(r,o,i,a,s);break;case 7:m=y.transform(r,o,i,a,s,l);break;case 8:m=y.transform(r,o,i,a,s,l,u);break;case 9:m=y.transform(r,o,i,a,s,l,u,c);break;case 10:m=y.transform(r,o,i,a,s,l,u,c,p)}}g.value=m}return f}function Wn(e,t,n){for(var r=t.bindings,o=!1,i=0;i0&&tt(e,t,0,n)&&(d=!0),h>1&&tt(e,t,1,r)&&(d=!0),h>2&&tt(e,t,2,o)&&(d=!0),h>3&&tt(e,t,3,i)&&(d=!0),h>4&&tt(e,t,4,a)&&(d=!0),h>5&&tt(e,t,5,s)&&(d=!0),h>6&&tt(e,t,6,l)&&(d=!0),h>7&&tt(e,t,7,u)&&(d=!0),h>8&&tt(e,t,8,c)&&(d=!0),h>9&&tt(e,t,9,p)&&(d=!0),d){var g=t.text.prefix;h>0&&(g+=Kn(n,f[0])),h>1&&(g+=Kn(r,f[1])),h>2&&(g+=Kn(o,f[2])),h>3&&(g+=Kn(i,f[3])),h>4&&(g+=Kn(a,f[4])),h>5&&(g+=Kn(s,f[5])),h>6&&(g+=Kn(l,f[6])),h>7&&(g+=Kn(u,f[7])),h>8&&(g+=Kn(c,f[8])),h>9&&(g+=Kn(p,f[9]));var m=ze(e,t.nodeIndex).renderText;e.renderer.setValue(m,g)}return d}function Jn(e,t,n){for(var r=t.bindings,o=!1,i=0;i0)u=g,er(g)||(c=g);else for(;u&&h===u.nodeIndex+u.childCount;){var b=u.parent;b&&(b.childFlags|=u.childFlags,b.childMatchedQueries|=u.childMatchedQueries),u=b,c=u&&er(u)?u.renderParent:u}}var _=function(e,n,r,o){return t[n].element.handleEvent(e,r,o)};return{factory:null,nodeFlags:a,rootNodeFlags:s,nodeMatchedQueries:l,flags:e,nodes:t,updateDirectives:n||Ps,updateRenderer:r||Ps,handleEvent:_,bindingCount:o,outputCount:i,lastRenderRootNode:f}}function er(e){return 0!=(1&e.flags)&&null===e.element.name}function tr(e,t,n){var r=t.element&&t.element.template;if(r){if(!r.lastRenderRootNode)throw new Error("Illegal State: Embedded templates without nodes are not allowed!");if(r.lastRenderRootNode&&16777216&r.lastRenderRootNode.flags)throw new Error("Illegal State: Last root node of a template can't have embedded views, at index "+t.nodeIndex+"!")}if(20224&t.flags){if(0==(1&(e?e.flags:0)))throw new Error("Illegal State: StaticProvider/Directive nodes need to be children of elements or anchors, at index "+t.nodeIndex+"!")}if(t.query){if(67108864&t.flags&&(!e||0==(16384&e.flags)))throw new Error("Illegal State: Content Query nodes need to be children of directives, at index "+t.nodeIndex+"!");if(134217728&t.flags&&e)throw new Error("Illegal State: View Query nodes have to be top level nodes, at index "+t.nodeIndex+"!")}if(t.childCount){var o=e?e.nodeIndex+e.childCount:n-1;if(t.nodeIndex<=o&&t.nodeIndex+t.childCount>o)throw new Error("Illegal State: childCount of node leads outside of parent, at index "+t.nodeIndex+"!")}}function nr(e,t,n,r){var o=ir(e.root,e.renderer,e,t,n);return ar(o,e.component,r),sr(o),o}function rr(e,t,n){var r=ir(e,e.renderer,null,null,t);return ar(r,n,n),sr(r),r}function or(e,t,n,r){var o,i=t.element.componentRendererType;return o=i?e.root.rendererFactory.createRenderer(r,i):e.root.renderer,ir(e.root,o,e,t.element.componentProvider,n)}function ir(e,t,n,r,o){var i=new Array(o.nodes.length),a=o.outputCount?new Array(o.outputCount):null;return{def:o,parent:n,viewContainerParent:null,parentNodeDef:r,context:null,component:null,nodes:i,state:13,root:e,renderer:t,oldValues:new Array(o.bindingCount),disposables:a}}function ar(e,t,n){e.component=t,e.context=n}function sr(e){var t;if(ct(e)){var n=e.parentNodeDef;t=Ve(e.parent,n.parent.nodeIndex).renderElement}for(var r=e.def,o=e.nodes,i=0;i0&&nt(e,t,0,n),d>1&&nt(e,t,1,r),d>2&&nt(e,t,2,o),d>3&&nt(e,t,3,i),d>4&&nt(e,t,4,a),d>5&&nt(e,t,5,s),d>6&&nt(e,t,6,l),d>7&&nt(e,t,7,u),d>8&&nt(e,t,8,c),d>9&&nt(e,t,9,p)}function mr(e,t,n){for(var r=0;r=this._providers.length)throw I(e);return this._providers[e]},e.prototype._new=function(e){if(this._constructionCounter++>this._getMaxNumberOfObjects())throw P(this,e.key);return this._instantiateProvider(e)},e.prototype._getMaxNumberOfObjects=function(){return this.objs.length},e.prototype._instantiateProvider=function(e){if(e.multiProvider){for(var t=new Array(e.resolvedFactories.length),n=0;n0)e._bootstrapComponents.forEach(function(e){return t.bootstrap(e)});else{if(!e.instance.ngDoBootstrap)throw new Error("The module "+a(e.instance.constructor)+' was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. Please define one of these.');e.instance.ngDoBootstrap(t)}this._modules.push(e)},t}(Sa);Oa.decorators=[{type:ci}],Oa.ctorParameters=function(){return[{type:yi}]};var Pa=function(){function e(){}return e.prototype.bootstrap=function(e,t){},e.prototype.tick=function(){},e.prototype.componentTypes=function(){},e.prototype.components=function(){},e.prototype.attachView=function(e){},e.prototype.detachView=function(e){},e.prototype.viewCount=function(){},e.prototype.isStable=function(){},e}(),Ma=function(e){function t(t,n,r,i,a,s){var l=e.call(this)||this;l._zone=t,l._console=n,l._injector=r,l._exceptionHandler=i,l._componentFactoryResolver=a,l._initStatus=s,l._bootstrapListeners=[],l._rootComponents=[],l._rootComponentTypes=[],l._views=[],l._runningTick=!1,l._enforceNoNewChanges=!1,l._stable=!0,l._enforceNoNewChanges=ce(),l._zone.onMicrotaskEmpty.subscribe({next:function(){l._zone.run(function(){l.tick()})}});var u=new Oo.Observable(function(e){l._stable=l._zone.isStable&&!l._zone.hasPendingMacrotasks&&!l._zone.hasPendingMicrotasks,l._zone.runOutsideAngular(function(){e.next(l._stable),e.complete()})}),c=new Oo.Observable(function(e){var t;l._zone.runOutsideAngular(function(){t=l._zone.onStable.subscribe(function(){ga.assertNotInAngularZone(),o(function(){l._stable||l._zone.hasPendingMacrotasks||l._zone.hasPendingMicrotasks||(l._stable=!0,e.next(!0))})})});var n=l._zone.onUnstable.subscribe(function(){ga.assertInAngularZone(),l._stable&&(l._stable=!1,l._zone.runOutsideAngular(function(){e.next(!1)}))});return function(){t.unsubscribe(),n.unsubscribe()}});return l._isStable=Object(Po.merge)(u,Mo.share.call(c)),l}return So.a(t,e),t.prototype.attachView=function(e){var t=e;this._views.push(t),t.attachToAppRef(this)},t.prototype.detachView=function(e){var t=e;ye(this._views,t),t.detachFromAppRef()},t.prototype.bootstrap=function(e,t){var n=this;if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");var r;r=e instanceof Qi?e:this._componentFactoryResolver.resolveComponentFactory(e),this._rootComponentTypes.push(r.componentType);var o=r instanceof aa?null:this._injector.get(sa),i=t||r.selector,a=r.create(yi.NULL,[],i,o);a.onDestroy(function(){n._unloadComponent(a)});var s=a.injector.get(ma,null);return s&&a.injector.get(ya).registerApplication(a.location.nativeElement,s),this._loadComponent(a),ce()&&this._console.log("Angular is running in the development mode. Call enableProdMode() to enable the production mode."),a},t.prototype._loadComponent=function(e){this.attachView(e.hostView),this.tick(),this._rootComponents.push(e),this._injector.get($i,[]).concat(this._bootstrapListeners).forEach(function(t){return t(e)})},t.prototype._unloadComponent=function(e){this.detachView(e.hostView),ye(this._rootComponents,e)},t.prototype.tick=function(){var e=this;if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");var n=t._tickScope();try{this._runningTick=!0,this._views.forEach(function(e){return e.detectChanges()}),this._enforceNoNewChanges&&this._views.forEach(function(e){return e.checkNoChanges()})}catch(t){this._zone.runOutsideAngular(function(){return e._exceptionHandler.handleError(t)})}finally{this._runningTick=!1,pa(n)}},t.prototype.ngOnDestroy=function(){this._views.slice().forEach(function(e){return e.destroy()})},Object.defineProperty(t.prototype,"viewCount",{get:function(){return this._views.length},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"componentTypes",{get:function(){return this._rootComponentTypes},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"components",{get:function(){return this._rootComponents},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"isStable",{get:function(){return this._isStable},enumerable:!0,configurable:!0}),t}(Pa);Ma._tickScope=ca("ApplicationRef#tick()"),Ma.decorators=[{type:ci}],Ma.ctorParameters=function(){return[{type:ga},{type:Wi},{type:yi},{type:xi},{type:na},{type:Vi}]};var Ea=function(){function e(e,t,n,r,o,i){this.id=e,this.templateUrl=t,this.slotCount=n,this.encapsulation=r,this.styles=o,this.animations=i}return e}(),Ta=function(){function e(){}return e.prototype.injector=function(){},e.prototype.component=function(){},e.prototype.providerTokens=function(){},e.prototype.references=function(){},e.prototype.context=function(){},e.prototype.source=function(){},e}(),Ia=function(){function e(){}return e.prototype.selectRootElement=function(e,t){},e.prototype.createElement=function(e,t,n){},e.prototype.createViewRoot=function(e){},e.prototype.createTemplateAnchor=function(e,t){},e.prototype.createText=function(e,t,n){},e.prototype.projectNodes=function(e,t){},e.prototype.attachViewAfter=function(e,t){},e.prototype.detachView=function(e){},e.prototype.destroyView=function(e,t){},e.prototype.listen=function(e,t,n){},e.prototype.listenGlobal=function(e,t,n){},e.prototype.setElementProperty=function(e,t,n){},e.prototype.setElementAttribute=function(e,t,n){},e.prototype.setBindingDebugInfo=function(e,t,n){},e.prototype.setElementClass=function(e,t,n){},e.prototype.setElementStyle=function(e,t,n){},e.prototype.invokeElementMethod=function(e,t,n){},e.prototype.setText=function(e,t){},e.prototype.animate=function(e,t,n,r,o,i,a){},e}(),Aa=(new Io("Renderer2Interceptor"),function(){function e(){}return e.prototype.renderComponent=function(e){},e}()),Ra=function(){function e(){}return e.prototype.createRenderer=function(e,t){},e.prototype.begin=function(){},e.prototype.end=function(){},e.prototype.whenRenderingDone=function(){},e}(),Na={};Na.Important=1,Na.DashCase=2,Na[Na.Important]="Important",Na[Na.DashCase]="DashCase";var ja=function(){function e(){}return e.prototype.data=function(){},e.prototype.destroy=function(){},e.prototype.createElement=function(e,t){},e.prototype.createComment=function(e){},e.prototype.createText=function(e){},e.prototype.appendChild=function(e,t){},e.prototype.insertBefore=function(e,t,n){},e.prototype.removeChild=function(e,t){},e.prototype.selectRootElement=function(e){},e.prototype.parentNode=function(e){},e.prototype.nextSibling=function(e){},e.prototype.setAttribute=function(e,t,n,r){},e.prototype.removeAttribute=function(e,t,n){},e.prototype.addClass=function(e,t){},e.prototype.removeClass=function(e,t){},e.prototype.setStyle=function(e,t,n,r){},e.prototype.removeStyle=function(e,t,n){},e.prototype.setProperty=function(e,t,n){},e.prototype.setValue=function(e,t){},e.prototype.listen=function(e,t,n){},e}(),Da=function(){function e(e){this.nativeElement=e}return e}(),La=function(){function e(){}return e.prototype.load=function(e){},e}(),Fa=new Map,za=function(){function e(){this._dirty=!0,this._results=[],this._emitter=new ha}return Object.defineProperty(e.prototype,"changes",{get:function(){return this._emitter},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._results.length},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"first",{get:function(){return this._results[0]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"last",{get:function(){return this._results[this.length-1]},enumerable:!0,configurable:!0}),e.prototype.map=function(e){return this._results.map(e)},e.prototype.filter=function(e){return this._results.filter(e)},e.prototype.find=function(e){return this._results.find(e)},e.prototype.reduce=function(e,t){return this._results.reduce(e,t)},e.prototype.forEach=function(e){this._results.forEach(e)},e.prototype.some=function(e){return this._results.some(e)},e.prototype.toArray=function(){return this._results.slice()},e.prototype[r()]=function(){return this._results[r()]()},e.prototype.toString=function(){return this._results.toString()},e.prototype.reset=function(e){this._results=_e(e),this._dirty=!1},e.prototype.notifyOnChanges=function(){this._emitter.emit(this)},e.prototype.setDirty=function(){this._dirty=!0},Object.defineProperty(e.prototype,"dirty",{get:function(){return this._dirty},enumerable:!0,configurable:!0}),e.prototype.destroy=function(){this._emitter.complete(),this._emitter.unsubscribe()},e}(),Va=function(){function e(){}return e}(),Ba={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"},Ha=function(){function e(e,t){this._compiler=e,this._config=t||Ba}return e.prototype.load=function(e){return this._compiler instanceof Xi?this.loadFactory(e):this.loadAndCompile(e)},e.prototype.loadAndCompile=function(e){var t=this,r=e.split("#"),o=r[0],i=r[1];return void 0===i&&(i="default"),n(216)(o).then(function(e){return e[i]}).then(function(e){return we(e,o,i)}).then(function(e){return t._compiler.compileModuleAsync(e)})},e.prototype.loadFactory=function(e){var t=e.split("#"),r=t[0],o=t[1],i="NgFactory";return void 0===o&&(o="default",i=""),n(216)(this._config.factoryPathPrefix+r+this._config.factoryPathSuffix).then(function(e){return e[o+i]}).then(function(e){return we(e,r,o)})},e}();Ha.decorators=[{type:ci}],Ha.ctorParameters=function(){return[{type:Xi},{type:Va,decorators:[{type:ui}]}]};var qa=function(){function e(){}return e.prototype.elementRef=function(){},e.prototype.createEmbeddedView=function(e){},e}(),Ua=function(){function e(){}return e.prototype.element=function(){},e.prototype.injector=function(){},e.prototype.parentInjector=function(){},e.prototype.clear=function(){},e.prototype.get=function(e){},e.prototype.length=function(){},e.prototype.createEmbeddedView=function(e,t,n){},e.prototype.createComponent=function(e,t,n,r,o){},e.prototype.insert=function(e,t){},e.prototype.move=function(e,t){},e.prototype.indexOf=function(e){},e.prototype.remove=function(e){},e.prototype.detach=function(e){},e}(),$a=function(){function e(){}return e.prototype.markForCheck=function(){},e.prototype.detach=function(){},e.prototype.detectChanges=function(){},e.prototype.checkNoChanges=function(){},e.prototype.reattach=function(){},e}(),Ya=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return So.a(t,e),t.prototype.destroy=function(){},t.prototype.destroyed=function(){},t.prototype.onDestroy=function(e){},t}($a),Wa=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return So.a(t,e),t.prototype.context=function(){},t.prototype.rootNodes=function(){},t}(Ya),Za=function(){function e(e,t){this.name=e,this.callback=t}return e}(),Xa=function(){function e(e,t,n){this._debugContext=n,this.nativeNode=e,t&&t instanceof Ga?t.addChild(this):this.parent=null,this.listeners=[]}return Object.defineProperty(e.prototype,"injector",{get:function(){return this._debugContext.injector},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"componentInstance",{get:function(){return this._debugContext.component},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"context",{get:function(){return this._debugContext.context},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"references",{get:function(){return this._debugContext.references},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"providerTokens",{get:function(){return this._debugContext.providerTokens},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"source",{get:function(){return"Deprecated since v4"},enumerable:!0,configurable:!0}),e}(),Ga=function(e){function t(t,n,r){var o=e.call(this,t,n,r)||this;return o.properties={},o.attributes={},o.classes={},o.styles={},o.childNodes=[],o.nativeElement=t,o}return So.a(t,e),t.prototype.addChild=function(e){e&&(this.childNodes.push(e),e.parent=this)},t.prototype.removeChild=function(e){var t=this.childNodes.indexOf(e);-1!==t&&(e.parent=null,this.childNodes.splice(t,1))},t.prototype.insertChildrenAfter=function(e,t){var n=this,r=this.childNodes.indexOf(e);-1!==r&&((o=this.childNodes).splice.apply(o,[r+1,0].concat(t)),t.forEach(function(e){e.parent&&e.parent.removeChild(e),e.parent=n}));var o},t.prototype.insertBefore=function(e,t){var n=this.childNodes.indexOf(e);-1===n?this.addChild(t):(t.parent&&t.parent.removeChild(t),t.parent=this,this.childNodes.splice(n,0,t))},t.prototype.query=function(e){return this.queryAll(e)[0]||null},t.prototype.queryAll=function(e){var t=[];return ke(this,e,t),t},t.prototype.queryAllNodes=function(e){var t=[];return Ce(this,e,t),t},Object.defineProperty(t.prototype,"children",{get:function(){return this.childNodes.filter(function(e){return e instanceof t})},enumerable:!0,configurable:!0}),t.prototype.triggerEventHandler=function(e,t){this.listeners.forEach(function(n){n.name==e&&n.callback(t)})},t}(Xa),Ja=new Map,Ka=function(){function e(e){this.wrapped=e}return e.wrap=function(t){return new e(t)},e}(),Qa=function(){function e(){this.hasWrappedValue=!1}return e.prototype.unwrap=function(e){return e instanceof Ka?(this.hasWrappedValue=!0,e.wrapped):e},e.prototype.reset=function(){this.hasWrappedValue=!1},e}(),es=function(){function e(e,t,n){this.previousValue=e,this.currentValue=t,this.firstChange=n}return e.prototype.isFirstChange=function(){return this.firstChange},e}(),ts=function(){function e(){}return e.prototype.supports=function(e){return Ee(e)},e.prototype.create=function(e,t){return new rs(t||e)},e}(),ns=function(e,t){return t},rs=function(){function e(e){this._length=0,this._collection=null,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||ns}return Object.defineProperty(e.prototype,"collection",{get:function(){return this._collection},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._length},enumerable:!0,configurable:!0}),e.prototype.forEachItem=function(e){var t;for(t=this._itHead;null!==t;t=t._next)e(t)},e.prototype.forEachOperation=function(e){for(var t=this._itHead,n=this._removalsHead,r=0,o=null;t||n;){var i=!n||t&&t.currentIndex"+a(this.currentIndex)+"]"},e}(),is=function(){function e(){this._head=null,this._tail=null}return e.prototype.add=function(e){null===this._head?(this._head=this._tail=e,e._nextDup=null,e._prevDup=null):(this._tail._nextDup=e,e._prevDup=this._tail,e._nextDup=null,this._tail=e)},e.prototype.get=function(e,t){var n;for(n=this._head;null!==n;n=n._nextDup)if((null===t||t<=n.currentIndex)&&i(n.trackById,e))return n;return null},e.prototype.remove=function(e){var t=e._prevDup,n=e._nextDup;return null===t?this._head=n:t._nextDup=n,null===n?this._tail=t:n._prevDup=t,null===this._head},e}(),as=function(){function e(){this.map=new Map}return e.prototype.put=function(e){var t=e.trackById,n=this.map.get(t);n||(n=new is,this.map.set(t,n)),n.add(e)},e.prototype.get=function(e,t){var n=e,r=this.map.get(n);return r?r.get(e,t):null},e.prototype.remove=function(e){var t=e.trackById;return this.map.get(t).remove(e)&&this.map.delete(t),e},Object.defineProperty(e.prototype,"isEmpty",{get:function(){return 0===this.map.size},enumerable:!0,configurable:!0}),e.prototype.clear=function(){this.map.clear()},e.prototype.toString=function(){return"_DuplicateMap("+a(this.map)+")"},e}(),ss=function(){function e(){}return e.prototype.supports=function(e){return e instanceof Map||Ae(e)},e.prototype.create=function(e){return new ls},e}(),ls=function(){function e(){this._records=new Map,this._mapHead=null,this._appendAfter=null,this._previousMapHead=null,this._changesHead=null,this._changesTail=null,this._additionsHead=null,this._additionsTail=null,this._removalsHead=null,this._removalsTail=null}return Object.defineProperty(e.prototype,"isDirty",{get:function(){return null!==this._additionsHead||null!==this._changesHead||null!==this._removalsHead},enumerable:!0,configurable:!0}),e.prototype.forEachItem=function(e){var t;for(t=this._mapHead;null!==t;t=t._next)e(t)},e.prototype.forEachPreviousItem=function(e){var t;for(t=this._previousMapHead;null!==t;t=t._nextPrevious)e(t)},e.prototype.forEachChangedItem=function(e){var t;for(t=this._changesHead;null!==t;t=t._nextChanged)e(t)},e.prototype.forEachAddedItem=function(e){var t;for(t=this._additionsHead;null!==t;t=t._nextAdded)e(t)},e.prototype.forEachRemovedItem=function(e){var t;for(t=this._removalsHead;null!==t;t=t._nextRemoved)e(t)},e.prototype.diff=function(e){if(e){if(!(e instanceof Map||Ae(e)))throw new Error("Error trying to diff '"+a(e)+"'. Only maps and objects are allowed")}else e=new Map;return this.check(e)?this:null},e.prototype.onDestroy=function(){},e.prototype.check=function(e){var t=this;this._reset();var n=this._mapHead;if(this._appendAfter=null,this._forEach(e,function(e,r){if(n&&n.key===r)t._maybeAddToChanges(n,e),t._appendAfter=n,n=n._next;else{var o=t._getOrCreateRecordForKey(r,e);n=t._insertBeforeOrAppend(n,o)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(var r=n;null!==r;r=r._nextRemoved)r===this._mapHead&&(this._mapHead=null),this._records.delete(r.key),r._nextRemoved=r._next,r.previousValue=r.currentValue,r.currentValue=null,r._prev=null,r._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty},e.prototype._insertBeforeOrAppend=function(e,t){if(e){var n=e._prev;return t._next=e,t._prev=n,e._prev=t,n&&(n._next=t),e===this._mapHead&&(this._mapHead=t),this._appendAfter=e,e}return this._appendAfter?(this._appendAfter._next=t,t._prev=this._appendAfter):this._mapHead=t,this._appendAfter=t,null},e.prototype._getOrCreateRecordForKey=function(e,t){if(this._records.has(e)){var n=this._records.get(e);this._maybeAddToChanges(n,t);var r=n._prev,o=n._next;return r&&(r._next=o),o&&(o._prev=r),n._next=null,n._prev=null,n}var i=new us(e);return this._records.set(e,i),i.currentValue=t,this._addToAdditions(i),i},e.prototype._reset=function(){if(this.isDirty){var e=void 0;for(this._previousMapHead=this._mapHead,e=this._previousMapHead;null!==e;e=e._next)e._nextPrevious=e._next;for(e=this._changesHead;null!==e;e=e._nextChanged)e.previousValue=e.currentValue;for(e=this._additionsHead;null!=e;e=e._nextAdded)e.previousValue=e.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}},e.prototype._maybeAddToChanges=function(e,t){i(t,e.currentValue)||(e.previousValue=e.currentValue,e.currentValue=t,this._addToChanges(e))},e.prototype._addToAdditions=function(e){null===this._additionsHead?this._additionsHead=this._additionsTail=e:(this._additionsTail._nextAdded=e,this._additionsTail=e)},e.prototype._addToChanges=function(e){null===this._changesHead?this._changesHead=this._changesTail=e:(this._changesTail._nextChanged=e,this._changesTail=e)},e.prototype._forEach=function(e,t){e instanceof Map?e.forEach(t):Object.keys(e).forEach(function(n){return t(e[n],n)})},e}(),us=function(){function e(e){this.key=e,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}return e}(),cs=function(){function e(e){this.factories=e}return e.create=function(t,n){if(null!=n){var r=n.factories.slice();return t=t.concat(r),new e(t)}return new e(t)},e.extend=function(t){return{provide:e,useFactory:function(n){if(!n)throw new Error("Cannot extend IterableDiffers without a parent injector");return e.create(t,n)},deps:[[e,new di,new ui]]}},e.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(null!=t)return t;throw new Error("Cannot find a differ supporting object '"+e+"' of type '"+Ne(e)+"'")},e}(),ps=function(){function e(e){this.factories=e}return e.create=function(t,n){if(n){var r=n.factories.slice();t=t.concat(r)}return new e(t)},e.extend=function(t){return{provide:e,useFactory:function(n){if(!n)throw new Error("Cannot extend KeyValueDiffers without a parent injector");return e.create(t,n)},deps:[[e,new di,new ui]]}},e.prototype.find=function(e){var t=this.factories.find(function(t){return t.supports(e)});if(t)return t;throw new Error("Cannot find a differ supporting object '"+e+"'")},e}(),ds=[new ss],fs=[new ts],hs=new cs(fs),gs=new ps(ds),ms=[{provide:Ui,useValue:"unknown"},Oa,{provide:Sa,useExisting:Oa},{provide:Ei,useFactory:je,deps:[]},ya,Wi],ys=de(null,"core",ms),vs=new Io("LocaleId"),bs=new Io("Translations"),_s=new Io("TranslationsFormat"),ws={};ws.Error=0,ws.Warning=1,ws.Ignore=2,ws[ws.Error]="Error",ws[ws.Warning]="Warning",ws[ws.Ignore]="Ignore";var xs=function(){function e(e){}return e}();xs.decorators=[{type:ri,args:[{providers:[Ma,{provide:Pa,useExisting:Ma},Vi,Xi,Hi,{provide:cs,useFactory:De},{provide:ps,useFactory:Le},{provide:vs,useFactory:Fe,deps:[[new li(vs),new ui,new di]]}]}]}],xs.ctorParameters=function(){return[{type:Pa}]};var ks={};ks.NONE=0,ks.HTML=1,ks.STYLE=2,ks.SCRIPT=3,ks.URL=4,ks.RESOURCE_URL=5,ks[ks.NONE]="NONE",ks[ks.HTML]="HTML",ks[ks.STYLE]="STYLE",ks[ks.SCRIPT]="SCRIPT",ks[ks.URL]="URL",ks[ks.RESOURCE_URL]="RESOURCE_URL";var Cs=function(){function e(){}return e.prototype.sanitize=function(e,t){},e}(),Ss=function(){function e(){}return e.prototype.view=function(){},e.prototype.nodeIndex=function(){},e.prototype.injector=function(){},e.prototype.component=function(){},e.prototype.providerTokens=function(){},e.prototype.references=function(){},e.prototype.context=function(){},e.prototype.componentRenderElement=function(){},e.prototype.renderNode=function(){},e.prototype.logError=function(e){for(var t=[],n=1;n=0;t--){var n=Jt(this._data,t);Os.destroyView(n)}},e.prototype.get=function(e){var t=this._embeddedViews[e];if(t){var n=new qs(t);return n.attachToViewContainerRef(this),n}return null},Object.defineProperty(e.prototype,"length",{get:function(){return this._embeddedViews.length},enumerable:!0,configurable:!0}),e.prototype.createEmbeddedView=function(e,t,n){var r=e.createEmbeddedView(t||{});return this.insert(r,n),r},e.prototype.createComponent=function(e,t,n,r,o){var i=n||this.parentInjector;o||e instanceof aa||(o=i.get(sa));var a=e.create(i,r,void 0,o);return this.insert(a.hostView,t),a},e.prototype.insert=function(e,t){if(e.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");var n=e,r=n._view;return Zt(this._view,this._data,t,r),n.attachToViewContainerRef(this),e},e.prototype.move=function(e,t){if(e.destroyed)throw new Error("Cannot move a destroyed View in a ViewContainer!");var n=this._embeddedViews.indexOf(e._view);return Qt(this._data,n,t),e},e.prototype.indexOf=function(e){return this._embeddedViews.indexOf(e._view)},e.prototype.remove=function(e){var t=Jt(this._data,e);t&&Os.destroyView(t)},e.prototype.detach=function(e){var t=Jt(this._data,e);return t?new qs(t):null},e}(),qs=function(){function e(e){this._view=e,this._viewContainerRef=null,this._appRef=null}return Object.defineProperty(e.prototype,"rootNodes",{get:function(){return yt(this._view)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"context",{get:function(){return this._view.context},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return 0!=(128&this._view.state)},enumerable:!0,configurable:!0}),e.prototype.markForCheck=function(){rt(this._view)},e.prototype.detach=function(){this._view.state&=-5},e.prototype.detectChanges=function(){var e=this._view.root.rendererFactory;e.begin&&e.begin(),Os.checkAndUpdateView(this._view),e.end&&e.end()},e.prototype.checkNoChanges=function(){Os.checkNoChangesView(this._view)},e.prototype.reattach=function(){this._view.state|=4},e.prototype.onDestroy=function(e){this._view.disposables||(this._view.disposables=[]),this._view.disposables.push(e)},e.prototype.destroy=function(){this._appRef?this._appRef.detachView(this):this._viewContainerRef&&this._viewContainerRef.detach(this._viewContainerRef.indexOf(this)),Os.destroyView(this._view)},e.prototype.detachFromAppRef=function(){this._appRef=null,tn(this._view),Os.dirtyParentQueries(this._view)},e.prototype.attachToAppRef=function(e){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=e},e.prototype.attachToViewContainerRef=function(e){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=e},e}(),Us=function(e){function t(t,n){var r=e.call(this)||this;return r._parentView=t,r._def=n,r}return So.a(t,e),t.prototype.createEmbeddedView=function(e){return new qs(Os.createEmbeddedView(this._parentView,this._def,this._def.element.template,e))},Object.defineProperty(t.prototype,"elementRef",{get:function(){return new Da(Ve(this._parentView,this._def.nodeIndex).renderElement)},enumerable:!0,configurable:!0}),t}(qa),$s=function(){function e(e,t){this.view=e,this.elDef=t}return e.prototype.get=function(e,t){void 0===t&&(t=yi.THROW_IF_NOT_FOUND);var n=!!this.elDef&&0!=(33554432&this.elDef.flags);return Os.resolveDep(this.view,this.elDef,n,{flags:0,token:e,tokenKey:Ge(e)},t)},e}(),Ys=function(){function e(e){this.delegate=e}return e.prototype.selectRootElement=function(e){return this.delegate.selectRootElement(e)},e.prototype.createElement=function(e,t){var n=kt(t),r=n[0],o=n[1],i=this.delegate.createElement(o,r);return e&&this.delegate.appendChild(e,i),i},e.prototype.createViewRoot=function(e){return e},e.prototype.createTemplateAnchor=function(e){var t=this.delegate.createComment("");return e&&this.delegate.appendChild(e,t),t},e.prototype.createText=function(e,t){var n=this.delegate.createText(t);return e&&this.delegate.appendChild(e,n),n},e.prototype.projectNodes=function(e,t){for(var n=0;n-1)return r;if(r=n.getPluralCategory(e),t.indexOf(r)>-1)return r;if(t.indexOf("other")>-1)return"other";throw new Error('No plural message found for value "'+e+'"')}function a(e,t){"string"==typeof t&&(t=parseInt(t,10));var n=t,r=n.toString().replace(/^[^.]*\.?/,""),o=Math.floor(Math.abs(n)),i=r.length,a=parseInt(r,10),s=parseInt(n.toString().replace(/^[^.]*\.?|0+$/g,""),10)||0;switch(e.split("-")[0].toLowerCase()){case"af":case"asa":case"az":case"bem":case"bez":case"bg":case"brx":case"ce":case"cgg":case"chr":case"ckb":case"ee":case"el":case"eo":case"es":case"eu":case"fo":case"fur":case"gsw":case"ha":case"haw":case"hu":case"jgo":case"jmc":case"ka":case"kk":case"kkj":case"kl":case"ks":case"ksb":case"ky":case"lb":case"lg":case"mas":case"mgo":case"ml":case"mn":case"nb":case"nd":case"ne":case"nn":case"nnh":case"nyn":case"om":case"or":case"os":case"ps":case"rm":case"rof":case"rwk":case"saq":case"seh":case"sn":case"so":case"sq":case"ta":case"te":case"teo":case"tk":case"tr":case"ug":case"uz":case"vo":case"vun":case"wae":case"xog":return 1===n?U.One:U.Other;case"ak":case"ln":case"mg":case"pa":case"ti":return n===Math.floor(n)&&n>=0&&n<=1?U.One:U.Other;case"am":case"as":case"bn":case"fa":case"gu":case"hi":case"kn":case"mr":case"zu":return 0===o||1===n?U.One:U.Other;case"ar":return 0===n?U.Zero:1===n?U.One:2===n?U.Two:n%100===Math.floor(n%100)&&n%100>=3&&n%100<=10?U.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=99?U.Many:U.Other;case"ast":case"ca":case"de":case"en":case"et":case"fi":case"fy":case"gl":case"it":case"nl":case"sv":case"sw":case"ur":case"yi":return 1===o&&0===i?U.One:U.Other;case"be":return n%10==1&&n%100!=11?U.One:n%10===Math.floor(n%10)&&n%10>=2&&n%10<=4&&!(n%100>=12&&n%100<=14)?U.Few:n%10==0||n%10===Math.floor(n%10)&&n%10>=5&&n%10<=9||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=14?U.Many:U.Other;case"br":return n%10==1&&n%100!=11&&n%100!=71&&n%100!=91?U.One:n%10==2&&n%100!=12&&n%100!=72&&n%100!=92?U.Two:n%10===Math.floor(n%10)&&(n%10>=3&&n%10<=4||n%10==9)&&!(n%100>=10&&n%100<=19||n%100>=70&&n%100<=79||n%100>=90&&n%100<=99)?U.Few:0!==n&&n%1e6==0?U.Many:U.Other;case"bs":case"hr":case"sr":return 0===i&&o%10==1&&o%100!=11||a%10==1&&a%100!=11?U.One:0===i&&o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)||a%10===Math.floor(a%10)&&a%10>=2&&a%10<=4&&!(a%100>=12&&a%100<=14)?U.Few:U.Other;case"cs":case"sk":return 1===o&&0===i?U.One:o===Math.floor(o)&&o>=2&&o<=4&&0===i?U.Few:0!==i?U.Many:U.Other;case"cy":return 0===n?U.Zero:1===n?U.One:2===n?U.Two:3===n?U.Few:6===n?U.Many:U.Other;case"da":return 1===n||0!==s&&(0===o||1===o)?U.One:U.Other;case"dsb":case"hsb":return 0===i&&o%100==1||a%100==1?U.One:0===i&&o%100==2||a%100==2?U.Two:0===i&&o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4||a%100===Math.floor(a%100)&&a%100>=3&&a%100<=4?U.Few:U.Other;case"ff":case"fr":case"hy":case"kab":return 0===o||1===o?U.One:U.Other;case"fil":return 0===i&&(1===o||2===o||3===o)||0===i&&o%10!=4&&o%10!=6&&o%10!=9||0!==i&&a%10!=4&&a%10!=6&&a%10!=9?U.One:U.Other;case"ga":return 1===n?U.One:2===n?U.Two:n===Math.floor(n)&&n>=3&&n<=6?U.Few:n===Math.floor(n)&&n>=7&&n<=10?U.Many:U.Other;case"gd":return 1===n||11===n?U.One:2===n||12===n?U.Two:n===Math.floor(n)&&(n>=3&&n<=10||n>=13&&n<=19)?U.Few:U.Other;case"gv":return 0===i&&o%10==1?U.One:0===i&&o%10==2?U.Two:0!==i||o%100!=0&&o%100!=20&&o%100!=40&&o%100!=60&&o%100!=80?0!==i?U.Many:U.Other:U.Few;case"he":return 1===o&&0===i?U.One:2===o&&0===i?U.Two:0!==i||n>=0&&n<=10||n%10!=0?U.Other:U.Many;case"is":return 0===s&&o%10==1&&o%100!=11||0!==s?U.One:U.Other;case"ksh":return 0===n?U.Zero:1===n?U.One:U.Other;case"kw":case"naq":case"se":case"smn":return 1===n?U.One:2===n?U.Two:U.Other;case"lag":return 0===n?U.Zero:0!==o&&1!==o||0===n?U.Other:U.One;case"lt":return n%10!=1||n%100>=11&&n%100<=19?n%10===Math.floor(n%10)&&n%10>=2&&n%10<=9&&!(n%100>=11&&n%100<=19)?U.Few:0!==a?U.Many:U.Other:U.One;case"lv":case"prg":return n%10==0||n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19||2===i&&a%100===Math.floor(a%100)&&a%100>=11&&a%100<=19?U.Zero:n%10==1&&n%100!=11||2===i&&a%10==1&&a%100!=11||2!==i&&a%10==1?U.One:U.Other;case"mk":return 0===i&&o%10==1||a%10==1?U.One:U.Other;case"mt":return 1===n?U.One:0===n||n%100===Math.floor(n%100)&&n%100>=2&&n%100<=10?U.Few:n%100===Math.floor(n%100)&&n%100>=11&&n%100<=19?U.Many:U.Other;case"pl":return 1===o&&0===i?U.One:0===i&&o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?U.Few:0===i&&1!==o&&o%10===Math.floor(o%10)&&o%10>=0&&o%10<=1||0===i&&o%10===Math.floor(o%10)&&o%10>=5&&o%10<=9||0===i&&o%100===Math.floor(o%100)&&o%100>=12&&o%100<=14?U.Many:U.Other;case"pt":return n===Math.floor(n)&&n>=0&&n<=2&&2!==n?U.One:U.Other;case"ro":return 1===o&&0===i?U.One:0!==i||0===n||1!==n&&n%100===Math.floor(n%100)&&n%100>=1&&n%100<=19?U.Few:U.Other;case"ru":case"uk":return 0===i&&o%10==1&&o%100!=11?U.One:0===i&&o%10===Math.floor(o%10)&&o%10>=2&&o%10<=4&&!(o%100>=12&&o%100<=14)?U.Few:0===i&&o%10==0||0===i&&o%10===Math.floor(o%10)&&o%10>=5&&o%10<=9||0===i&&o%100===Math.floor(o%100)&&o%100>=11&&o%100<=14?U.Many:U.Other;case"shi":return 0===o||1===n?U.One:n===Math.floor(n)&&n>=2&&n<=10?U.Few:U.Other;case"si":return 0===n||1===n||0===o&&1===a?U.One:U.Other;case"sl":return 0===i&&o%100==1?U.One:0===i&&o%100==2?U.Two:0===i&&o%100===Math.floor(o%100)&&o%100>=3&&o%100<=4||0!==i?U.Few:U.Other;case"tzm":return n===Math.floor(n)&&n>=0&&n<=1||n===Math.floor(n)&&n>=11&&n<=99?U.One:U.Other;default:return U.Other}}function s(e,t){t=encodeURIComponent(t);for(var n=0,r=e.split(";");n1?"short":"narrow":"long",n}function v(e){return e.reduce(function(e,t){return Object.assign({},e,t)},{})}function b(e){return function(t,n){return f(t,n,e)}}function _(e,t,n){var r=be[e];if(r)return r(t,n);var o=e,i=we.get(o);if(!i){i=[];var a=void 0;ve.exec(e);for(var s=e;s;)a=ve.exec(s),a?(i=i.concat(a.slice(1)),s=i.pop()):(i.push(s),s=null);we.set(o,i)}return i.reduce(function(e,r){var o=_e[r];return e+(o?o(t,n):w(r))},"")}function w(e){return"''"===e?"'":e.replace(/(^'|'$)/g,"").replace(/''/g,"'")}function x(e,t,n,r,o,i,a){if(void 0===i&&(i=null),void 0===a&&(a=!1),null==n)return null;if("number"!=typeof(n="string"==typeof n&&C(n)?+n:n))throw u(e,n);var s=void 0,l=void 0,c=void 0;if(r!==me.Currency&&(s=1,l=0,c=3),o){var p=o.match(ke);if(null===p)throw new Error(o+" is not a valid digit info for number pipes");null!=p[1]&&(s=k(p[1])),null!=p[3]&&(l=k(p[3])),null!=p[5]&&(c=k(p[5]))}return ye.format(n,t,r,{minimumIntegerDigits:s,minimumFractionDigits:l,maximumFractionDigits:c,currency:i,currencyAsSymbol:a})}function k(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t}function C(e){return!isNaN(e-parseFloat(e))}function S(e){return null==e||""===e}function O(e){return e instanceof Date&&!isNaN(e.valueOf())}function P(e){var t=new Date(0),n=0,r=0,o=e[8]?t.setUTCFullYear:t.setFullYear,i=e[8]?t.setUTCHours:t.setHours;e[9]&&(n=M(e[9]+e[10]),r=M(e[9]+e[11])),o.call(t,M(e[1]),M(e[2])-1,M(e[3]));var a=M(e[4]||"0")-n,s=M(e[5]||"0")-r,l=M(e[6]||"0"),u=Math.round(1e3*parseFloat("0."+(e[7]||0)));return i.call(t,a,s,l,u),t}function M(e){return parseInt(e,10)}function E(e){return e===Fe}function T(e){return e===ze}function I(e){return e===Ve}function A(e){return e===Be}Object.defineProperty(t,"__esModule",{value:!0}),n.d(t,"NgLocaleLocalization",function(){return q}),n.d(t,"NgLocalization",function(){return H}),n.d(t,"ɵparseCookieValue",function(){return s}),n.d(t,"CommonModule",function(){return je}),n.d(t,"DeprecatedI18NPipesModule",function(){return De}),n.d(t,"NgClass",function(){return $}),n.d(t,"NgFor",function(){return G}),n.d(t,"NgForOf",function(){return Z}),n.d(t,"NgForOfContext",function(){return W}),n.d(t,"NgIf",function(){return J}),n.d(t,"NgIfContext",function(){return K}),n.d(t,"NgPlural",function(){return re}),n.d(t,"NgPluralCase",function(){return oe}),n.d(t,"NgStyle",function(){return ie}),n.d(t,"NgSwitch",function(){return ee}),n.d(t,"NgSwitchCase",function(){return te}),n.d(t,"NgSwitchDefault",function(){return ne}),n.d(t,"NgTemplateOutlet",function(){return ae}),n.d(t,"NgComponentOutlet",function(){return Y}),n.d(t,"DOCUMENT",function(){return Le}),n.d(t,"AsyncPipe",function(){return de}),n.d(t,"DatePipe",function(){return Me}),n.d(t,"I18nPluralPipe",function(){return Te}),n.d(t,"I18nSelectPipe",function(){return Ie}),n.d(t,"JsonPipe",function(){return Ae}),n.d(t,"LowerCasePipe",function(){return fe}),n.d(t,"CurrencyPipe",function(){return Oe}),n.d(t,"DecimalPipe",function(){return Ce}),n.d(t,"PercentPipe",function(){return Se}),n.d(t,"SlicePipe",function(){return Re}),n.d(t,"UpperCasePipe",function(){return ge}),n.d(t,"TitleCasePipe",function(){return he}),n.d(t,"ɵPLATFORM_BROWSER_ID",function(){return Fe}),n.d(t,"ɵPLATFORM_SERVER_ID",function(){return ze}),n.d(t,"ɵPLATFORM_WORKER_APP_ID",function(){return Ve}),n.d(t,"ɵPLATFORM_WORKER_UI_ID",function(){return Be}),n.d(t,"isPlatformBrowser",function(){return E}),n.d(t,"isPlatformServer",function(){return T}),n.d(t,"isPlatformWorkerApp",function(){return I}),n.d(t,"isPlatformWorkerUi",function(){return A}),n.d(t,"VERSION",function(){return He}),n.d(t,"PlatformLocation",function(){return j}),n.d(t,"LOCATION_INITIALIZED",function(){return D}),n.d(t,"LocationStrategy",function(){return L}),n.d(t,"APP_BASE_HREF",function(){return F}),n.d(t,"HashLocationStrategy",function(){return V}),n.d(t,"PathLocationStrategy",function(){return B}),n.d(t,"Location",function(){return z}),n.d(t,"ɵa",function(){return se}),n.d(t,"ɵb",function(){return Ne});var R=n(142),N=n(1),j=function(){function e(){}return e.prototype.getBaseHrefFromDOM=function(){},e.prototype.onPopState=function(e){},e.prototype.onHashChange=function(e){},e.prototype.pathname=function(){},e.prototype.search=function(){},e.prototype.hash=function(){},e.prototype.replaceState=function(e,t,n){},e.prototype.pushState=function(e,t,n){},e.prototype.forward=function(){},e.prototype.back=function(){},e}(),D=new N.InjectionToken("Location Initialized"),L=function(){function e(){}return e.prototype.path=function(e){},e.prototype.prepareExternalUrl=function(e){},e.prototype.pushState=function(e,t,n,r){},e.prototype.replaceState=function(e,t,n,r){},e.prototype.forward=function(){},e.prototype.back=function(){},e.prototype.onPopState=function(e){},e.prototype.getBaseHref=function(){},e}(),F=new N.InjectionToken("appBaseHref"),z=function(){function e(t){var n=this;this._subject=new N.EventEmitter,this._platformStrategy=t;var r=this._platformStrategy.getBaseHref();this._baseHref=e.stripTrailingSlash(o(r)),this._platformStrategy.onPopState(function(e){n._subject.emit({url:n.path(!0),pop:!0,type:e.type})})}return e.prototype.path=function(e){return void 0===e&&(e=!1),this.normalize(this._platformStrategy.path(e))},e.prototype.isCurrentPathEqualTo=function(t,n){return void 0===n&&(n=""),this.path()==this.normalize(t+e.normalizeQueryParams(n))},e.prototype.normalize=function(t){return e.stripTrailingSlash(r(this._baseHref,o(t)))},e.prototype.prepareExternalUrl=function(e){return e&&"/"!==e[0]&&(e="/"+e),this._platformStrategy.prepareExternalUrl(e)},e.prototype.go=function(e,t){void 0===t&&(t=""),this._platformStrategy.pushState(null,"",e,t)},e.prototype.replaceState=function(e,t){void 0===t&&(t=""),this._platformStrategy.replaceState(null,"",e,t)},e.prototype.forward=function(){this._platformStrategy.forward()},e.prototype.back=function(){this._platformStrategy.back()},e.prototype.subscribe=function(e,t,n){return this._subject.subscribe({next:e,error:t,complete:n})},e.normalizeQueryParams=function(e){return e&&"?"!==e[0]?"?"+e:e},e.joinWithSlash=function(e,t){if(0==e.length)return t;if(0==t.length)return e;var n=0;return e.endsWith("/")&&n++,t.startsWith("/")&&n++,2==n?e+t.substring(1):1==n?e+t:e+"/"+t},e.stripTrailingSlash=function(e){var t=e.match(/#|\?|$/),n=t&&t.index||e.length,r=n-("/"===e[n-1]?1:0);return e.slice(0,r)+e.slice(n)},e}();z.decorators=[{type:N.Injectable}],z.ctorParameters=function(){return[{type:L}]};var V=function(e){function t(t,n){var r=e.call(this)||this;return r._platformLocation=t,r._baseHref="",null!=n&&(r._baseHref=n),r}return R.a(t,e),t.prototype.onPopState=function(e){this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e)},t.prototype.getBaseHref=function(){return this._baseHref},t.prototype.path=function(e){void 0===e&&(e=!1);var t=this._platformLocation.hash;return null==t&&(t="#"),t.length>0?t.substring(1):t},t.prototype.prepareExternalUrl=function(e){var t=z.joinWithSlash(this._baseHref,e);return t.length>0?"#"+t:t},t.prototype.pushState=function(e,t,n,r){var o=this.prepareExternalUrl(n+z.normalizeQueryParams(r));0==o.length&&(o=this._platformLocation.pathname),this._platformLocation.pushState(e,t,o)},t.prototype.replaceState=function(e,t,n,r){var o=this.prepareExternalUrl(n+z.normalizeQueryParams(r));0==o.length&&(o=this._platformLocation.pathname),this._platformLocation.replaceState(e,t,o)},t.prototype.forward=function(){this._platformLocation.forward()},t.prototype.back=function(){this._platformLocation.back()},t}(L);V.decorators=[{type:N.Injectable}],V.ctorParameters=function(){return[{type:j},{type:void 0,decorators:[{type:N.Optional},{type:N.Inject,args:[F]}]}]};var B=function(e){function t(t,n){var r=e.call(this)||this;if(r._platformLocation=t,null==n&&(n=r._platformLocation.getBaseHrefFromDOM()),null==n)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");return r._baseHref=n,r}return R.a(t,e),t.prototype.onPopState=function(e){this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e)},t.prototype.getBaseHref=function(){return this._baseHref},t.prototype.prepareExternalUrl=function(e){return z.joinWithSlash(this._baseHref,e)},t.prototype.path=function(e){void 0===e&&(e=!1);var t=this._platformLocation.pathname+z.normalizeQueryParams(this._platformLocation.search),n=this._platformLocation.hash;return n&&e?""+t+n:t},t.prototype.pushState=function(e,t,n,r){var o=this.prepareExternalUrl(n+z.normalizeQueryParams(r));this._platformLocation.pushState(e,t,o)},t.prototype.replaceState=function(e,t,n,r){var o=this.prepareExternalUrl(n+z.normalizeQueryParams(r));this._platformLocation.replaceState(e,t,o)},t.prototype.forward=function(){this._platformLocation.forward()},t.prototype.back=function(){this._platformLocation.back()},t}(L);B.decorators=[{type:N.Injectable}],B.ctorParameters=function(){return[{type:j},{type:void 0,decorators:[{type:N.Optional},{type:N.Inject,args:[F]}]}]};var H=function(){function e(){}return e.prototype.getPluralCategory=function(e){},e}(),q=function(e){function t(t){var n=e.call(this)||this;return n.locale=t,n}return R.a(t,e),t.prototype.getPluralCategory=function(e){switch(a(this.locale,e)){case U.Zero:return"zero";case U.One:return"one";case U.Two:return"two";case U.Few:return"few";case U.Many:return"many";default:return"other"}},t}(H);q.decorators=[{type:N.Injectable}],q.ctorParameters=function(){return[{type:void 0,decorators:[{type:N.Inject,args:[N.LOCALE_ID]}]}]};var U={};U.Zero=0,U.One=1,U.Two=2,U.Few=3,U.Many=4,U.Other=5,U[U.Zero]="Zero",U[U.One]="One",U[U.Two]="Two",U[U.Few]="Few",U[U.Many]="Many",U[U.Other]="Other";var $=function(){function e(e,t,n,r){this._iterableDiffers=e,this._keyValueDiffers=t,this._ngEl=n,this._renderer=r,this._initialClasses=[]}return Object.defineProperty(e.prototype,"klass",{set:function(e){this._applyInitialClasses(!0),this._initialClasses="string"==typeof e?e.split(/\s+/):[],this._applyInitialClasses(!1),this._applyClasses(this._rawClass,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngClass",{set:function(e){this._cleanupClasses(this._rawClass),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof e?e.split(/\s+/):e,this._rawClass&&(Object(N["ɵisListLikeIterable"])(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())},enumerable:!0,configurable:!0}),e.prototype.ngDoCheck=function(){if(this._iterableDiffer){var e=this._iterableDiffer.diff(this._rawClass);e&&this._applyIterableChanges(e)}else if(this._keyValueDiffer){var t=this._keyValueDiffer.diff(this._rawClass);t&&this._applyKeyValueChanges(t)}},e.prototype._cleanupClasses=function(e){this._applyClasses(e,!0),this._applyInitialClasses(!1)},e.prototype._applyKeyValueChanges=function(e){var t=this;e.forEachAddedItem(function(e){return t._toggleClass(e.key,e.currentValue)}),e.forEachChangedItem(function(e){return t._toggleClass(e.key,e.currentValue)}),e.forEachRemovedItem(function(e){e.previousValue&&t._toggleClass(e.key,!1)})},e.prototype._applyIterableChanges=function(e){var t=this;e.forEachAddedItem(function(e){if("string"!=typeof e.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got "+Object(N["ɵstringify"])(e.item));t._toggleClass(e.item,!0)}),e.forEachRemovedItem(function(e){return t._toggleClass(e.item,!1)})},e.prototype._applyInitialClasses=function(e){var t=this;this._initialClasses.forEach(function(n){return t._toggleClass(n,!e)})},e.prototype._applyClasses=function(e,t){var n=this;e&&(Array.isArray(e)||e instanceof Set?e.forEach(function(e){return n._toggleClass(e,!t)}):Object.keys(e).forEach(function(r){null!=e[r]&&n._toggleClass(r,!t)}))},e.prototype._toggleClass=function(e,t){var n=this;(e=e.trim())&&e.split(/\s+/g).forEach(function(e){n._renderer.setElementClass(n._ngEl.nativeElement,e,!!t)})},e}();$.decorators=[{type:N.Directive,args:[{selector:"[ngClass]"}]}],$.ctorParameters=function(){return[{type:N.IterableDiffers},{type:N.KeyValueDiffers},{type:N.ElementRef},{type:N.Renderer}]},$.propDecorators={klass:[{type:N.Input,args:["class"]}],ngClass:[{type:N.Input}]};var Y=function(){function e(e){this._viewContainerRef=e,this._componentRef=null,this._moduleRef=null}return e.prototype.ngOnChanges=function(e){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){var t=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(e.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){var n=t.get(N.NgModuleRef);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(n.injector)}else this._moduleRef=null;var r=this._moduleRef?this._moduleRef.componentFactoryResolver:t.get(N.ComponentFactoryResolver),o=r.resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(o,this._viewContainerRef.length,t,this.ngComponentOutletContent)}},e.prototype.ngOnDestroy=function(){this._moduleRef&&this._moduleRef.destroy()},e}();Y.decorators=[{type:N.Directive,args:[{selector:"[ngComponentOutlet]"}]}],Y.ctorParameters=function(){return[{type:N.ViewContainerRef}]},Y.propDecorators={ngComponentOutlet:[{type:N.Input}],ngComponentOutletInjector:[{type:N.Input}],ngComponentOutletContent:[{type:N.Input}],ngComponentOutletNgModuleFactory:[{type:N.Input}]};var W=function(){function e(e,t,n,r){this.$implicit=e,this.ngForOf=t,this.index=n,this.count=r}return Object.defineProperty(e.prototype,"first",{get:function(){return 0===this.index},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"last",{get:function(){return this.index===this.count-1},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"even",{get:function(){return this.index%2==0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"odd",{get:function(){return!this.even},enumerable:!0,configurable:!0}),e}(),Z=function(){function e(e,t,n){this._viewContainer=e,this._template=t,this._differs=n,this._differ=null}return Object.defineProperty(e.prototype,"ngForTrackBy",{get:function(){return this._trackByFn},set:function(e){Object(N.isDevMode)()&&null!=e&&"function"!=typeof e&&console&&console.warn&&console.warn("trackBy must be a function, but received "+JSON.stringify(e)+". See https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html#!#change-propagation for more information."),this._trackByFn=e},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"ngForTemplate",{set:function(e){e&&(this._template=e)},enumerable:!0,configurable:!0}),e.prototype.ngOnChanges=function(e){if("ngForOf"in e){var t=e.ngForOf.currentValue;if(!this._differ&&t)try{this._differ=this._differs.find(t).create(this.ngForTrackBy)}catch(e){throw new Error("Cannot find a differ supporting object '"+t+"' of type '"+l(t)+"'. NgFor only supports binding to Iterables such as Arrays.")}}},e.prototype.ngDoCheck=function(){if(this._differ){var e=this._differ.diff(this.ngForOf);e&&this._applyChanges(e)}},e.prototype._applyChanges=function(e){var t=this,n=[];e.forEachOperation(function(e,r,o){if(null==e.previousIndex){var i=t._viewContainer.createEmbeddedView(t._template,new W(null,t.ngForOf,-1,-1),o),a=new X(e,i);n.push(a)}else if(null==o)t._viewContainer.remove(r);else{var i=t._viewContainer.get(r);t._viewContainer.move(i,o);var a=new X(e,i);n.push(a)}});for(var r=0;r/g,">")}function S(e){Ie.attributeMap(e).forEach(function(t,n){"xmlns:ns1"!==n&&0!==n.indexOf("ns1:")||Ie.removeAttribute(e,n)});for(var t=0,n=Ie.childNodesAsList(e);t0},t.prototype.tagName=function(e){return e.tagName},t.prototype.attributeMap=function(e){for(var t=new Map,n=e.attributes,r=0;r-1},t}(le);Ce.decorators=[{type:L.Injectable}],Ce.ctorParameters=function(){return[{type:void 0,decorators:[{type:L.Inject,args:[W]}]},{type:ke,decorators:[{type:L.Inject,args:[xe]}]}]};var Se=["alt","control","meta","shift"],Oe={alt:function(e){return e.altKey},control:function(e){return e.ctrlKey},meta:function(e){return e.metaKey},shift:function(e){return e.shiftKey}},Pe=function(e){function t(t){return e.call(this,t)||this}return j.a(t,e),t.prototype.supports=function(e){return null!=t.parseEventName(e)},t.prototype.addEventListener=function(e,n,o){var i=t.parseEventName(n),a=t.eventCallback(i.fullKey,o,this.manager.getZone());return this.manager.getZone().runOutsideAngular(function(){return r().onAndCancel(e,i.domEventName,a)})},t.parseEventName=function(e){var n=e.toLowerCase().split("."),r=n.shift();if(0===n.length||"keydown"!==r&&"keyup"!==r)return null;var o=t._normalizeKey(n.pop()),i="";if(Se.forEach(function(e){var t=n.indexOf(e);t>-1&&(n.splice(t,1),i+=e+".")}),i+=o,0!=n.length||0===o.length)return null;var a={};return a.domEventName=r,a.fullKey=i,a},t.getEventFullKey=function(e){var t="",n=r().getEventKey(e);return n=n.toLowerCase()," "===n?n="space":"."===n&&(n="dot"),Se.forEach(function(r){if(r!=n){(0,Oe[r])(e)&&(t+=r+".")}}),t+=n},t.eventCallback=function(e,n,r){return function(o){t.getEventFullKey(o)===e&&r.runGuarded(function(){return n(o)})}},t._normalizeKey=function(e){switch(e){case"esc":return"escape";default:return e}},t}(le);Pe.decorators=[{type:L.Injectable}],Pe.ctorParameters=function(){return[{type:void 0,decorators:[{type:L.Inject,args:[W]}]}]};var Me=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:\/?#]*(?:[\/?#]|$))/gi,Ee=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+\/]+=*$/i,Te=null,Ie=null,Ae=w("area,br,col,hr,img,wbr"),Re=w("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),Ne=w("rp,rt"),je=x(Ne,Re),De=x(Re,w("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Le=x(Ne,w("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Fe=x(Ae,De,Le,je),ze=w("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),Ve=w("srcset"),Be=w("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),He=x(ze,Ve,Be),qe=function(){function e(){this.sanitizedSomething=!1,this.buf=[]}return e.prototype.sanitizeChildren=function(e){for(var t=e.firstChild;t;)if(Ie.isElementNode(t)?this.startElement(t):Ie.isTextNode(t)?this.chars(Ie.nodeValue(t)):this.sanitizedSomething=!0,Ie.firstChild(t))t=Ie.firstChild(t);else for(;t;){Ie.isElementNode(t)&&this.endElement(t);var n=k(t,Ie.nextSibling(t));if(n){t=n;break}t=k(t,Ie.parentElement(t))}return this.buf.join("")},e.prototype.startElement=function(e){var t=this,n=Ie.nodeName(e).toLowerCase();if(!Fe.hasOwnProperty(n))return void(this.sanitizedSomething=!0);this.buf.push("<"),this.buf.push(n),Ie.attributeMap(e).forEach(function(e,n){var r=n.toLowerCase();if(!He.hasOwnProperty(r))return void(t.sanitizedSomething=!0);ze[r]&&(e=v(e)),Ve[r]&&(e=b(e)),t.buf.push(" "),t.buf.push(n),t.buf.push('="'),t.buf.push(C(e)),t.buf.push('"')}),this.buf.push(">")},e.prototype.endElement=function(e){var t=Ie.nodeName(e).toLowerCase();Fe.hasOwnProperty(t)&&!Ae.hasOwnProperty(t)&&(this.buf.push(""))},e.prototype.chars=function(e){this.buf.push(C(e))},e}(),Ue=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,$e=/([^\#-~ |!])/g,Ye=new RegExp("^([-,.\"'%_!# a-zA-Z0-9]+|(?:(?:matrix|translate|scale|rotate|skew|perspective)(?:X|Y|3d)?|(?:rgb|hsl)a?|(?:repeating-)?(?:linear|radial)-gradient|(?:calc|attr))\\([-0-9.%, #a-zA-Z]+\\))$","g"),We=/^url\(([^)]+)\)$/,Ze=function(){function e(){}return e.prototype.sanitize=function(e,t){},e.prototype.bypassSecurityTrustHtml=function(e){},e.prototype.bypassSecurityTrustStyle=function(e){},e.prototype.bypassSecurityTrustScript=function(e){},e.prototype.bypassSecurityTrustUrl=function(e){},e.prototype.bypassSecurityTrustResourceUrl=function(e){},e}(),Xe=function(e){function t(t){var n=e.call(this)||this;return n._doc=t,n}return j.a(t,e),t.prototype.sanitize=function(e,t){if(null==t)return null;switch(e){case L.SecurityContext.NONE:return t;case L.SecurityContext.HTML:return t instanceof Je?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"HTML"),O(this._doc,String(t)));case L.SecurityContext.STYLE:return t instanceof Ke?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"Style"),M(t));case L.SecurityContext.SCRIPT:if(t instanceof Qe)return t.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(t,"Script"),new Error("unsafe value used in a script context");case L.SecurityContext.URL:return t instanceof tt||t instanceof et?t.changingThisBreaksApplicationSecurity:(this.checkNotSafeValue(t,"URL"),v(String(t)));case L.SecurityContext.RESOURCE_URL:if(t instanceof tt)return t.changingThisBreaksApplicationSecurity;throw this.checkNotSafeValue(t,"ResourceURL"),new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error("Unexpected SecurityContext "+e+" (see http://g.co/ng/security#xss)")}},t.prototype.checkNotSafeValue=function(e,t){if(e instanceof Ge)throw new Error("Required a safe "+t+", got a "+e.getTypeName()+" (see http://g.co/ng/security#xss)")},t.prototype.bypassSecurityTrustHtml=function(e){return new Je(e)},t.prototype.bypassSecurityTrustStyle=function(e){return new Ke(e)},t.prototype.bypassSecurityTrustScript=function(e){return new Qe(e)},t.prototype.bypassSecurityTrustUrl=function(e){return new et(e)},t.prototype.bypassSecurityTrustResourceUrl=function(e){return new tt(e)},t}(Ze);Xe.decorators=[{type:L.Injectable}],Xe.ctorParameters=function(){return[{type:void 0,decorators:[{type:L.Inject,args:[W]}]}]};var Ge=function(){function e(e){this.changingThisBreaksApplicationSecurity=e}return e.prototype.getTypeName=function(){},e.prototype.toString=function(){return"SafeValue must use [property]=binding: "+this.changingThisBreaksApplicationSecurity+" (see http://g.co/ng/security#xss)"},e}(),Je=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return j.a(t,e),t.prototype.getTypeName=function(){return"HTML"},t}(Ge),Ke=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return j.a(t,e),t.prototype.getTypeName=function(){return"Style"},t}(Ge),Qe=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return j.a(t,e),t.prototype.getTypeName=function(){return"Script"},t}(Ge),et=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return j.a(t,e),t.prototype.getTypeName=function(){return"URL"},t}(Ge),tt=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return j.a(t,e),t.prototype.getTypeName=function(){return"ResourceURL"},t}(Ge),nt=[{provide:L.PLATFORM_ID,useValue:D["ɵPLATFORM_BROWSER_ID"]},{provide:L.PLATFORM_INITIALIZER,useValue:E,multi:!0},{provide:D.PlatformLocation,useClass:Z},{provide:W,useFactory:I,deps:[]}],rt=[{provide:L.Sanitizer,useExisting:Ze},{provide:Ze,useClass:Xe}],ot=Object(L.createPlatformFactory)(L.platformCore,"browser",nt),it=function(){function e(e){if(e)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}return e.withServerTransition=function(t){return{ngModule:e,providers:[{provide:L.APP_ID,useValue:t.appId},{provide:G,useExisting:L.APP_ID},J]}},e}();it.decorators=[{type:L.NgModule,args:[{providers:[rt,{provide:L.ErrorHandler,useFactory:T,deps:[]},{provide:ae,useClass:_e,multi:!0},{provide:ae,useClass:Pe,multi:!0},{provide:ae,useClass:Ce,multi:!0},{provide:xe,useClass:ke},ge,{provide:L.RendererFactory2,useExisting:ge},{provide:ue,useExisting:ce},ce,L.Testability,se,ie,X,Q],exports:[D.CommonModule,L.ApplicationModule]}]}],it.ctorParameters=function(){return[{type:it,decorators:[{type:L.Optional},{type:L.SkipSelf}]}]};var at="undefined"!=typeof window&&window||{},st=function(){function e(e,t){this.msPerTick=e,this.numTicks=t}return e}(),lt=function(){function e(e){this.appRef=e.injector.get(L.ApplicationRef)}return e.prototype.timeChangeDetection=function(e){var t=e&&e.record,n=null!=at.console.profile;t&&n&&at.console.profile("Change Detection");for(var o=r().performanceNow(),i=0;i<5||r().performanceNow()-o<500;)this.appRef.tick(),i++;var a=r().performanceNow();t&&n&&at.console.profileEnd("Change Detection");var s=(a-o)/i;return at.console.log("ran "+i+" change detection cycles"),at.console.log(s.toFixed(2)+" ms per check"),new st(s,i)},e}(),ut="profiler",ct=function(){function e(){}return e.all=function(){return function(e){return!0}},e.css=function(e){return function(t){return null!=t.nativeElement&&r().elementMatches(t.nativeElement,e)}},e.directive=function(e){return function(t){return-1!==t.providerTokens.indexOf(e)}},e}(),pt=new L.Version("4.4.6")},function(e,t,n){"use strict";function r(e){return e.discriminator||e["x-extendedDiscriminator"]}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=n(443),a=n(41),s=n(88),l=n(91),u=n(231),c=n(29),p=n(7),d=n(73),f=function(){function e(e){this._schema={},this.spec=new l.BehaviorSubject(null),this.options=e.options}return e.prototype.load=function(e){var t=this;return new Promise(function(n,r){t.parser=new i,t.parser.bundle(e,{http:{withCredentials:!1}}).then(function(o){"string"==typeof e&&(t.specUrl=e),t.rawSpec=o,t._schema=c.snapshot(o);try{t.init(),t.spec.next(t._schema),n(t._schema)}catch(e){r(e)}},function(e){return r(e)})})},e.prototype.init=function(){var e,t=this.specUrl?s.parse(s.resolve(window.location.href,this.specUrl)):{protocol:window.location.protocol,host:window.location.host},n=this._schema.schemes;n&&n.length?"http"===(e=n[0])&&n.indexOf("https")>=0&&(e="https"):e=t.protocol?t.protocol.slice(0,-1):"http";var r=this._schema.host||t.host;this.basePath=this._schema.basePath||"",this.apiUrl=e+"://"+r+this.basePath,this.apiProtocol=e,this.apiUrl.endsWith("/")&&(this.apiUrl=this.apiUrl.substr(0,this.apiUrl.length-1)),this.preprocess()},e.prototype.preprocess=function(){var e=new u.MdRenderer;if(!this._schema.info)throw Error('Specification Error: Required field "info" is not specified at the top level of the specification');if(this._schema.info.description||(this._schema.info.description=""),this._schema.securityDefinitions&&!this.options.noAutoAuth){var t=n(148).SecurityDefinitions;e.addPreprocessor(t.insertTagIntoDescription)}this._schema.info["x-redoc-html-description"]=e.renderMd(this._schema.info.description),this._schema.info["x-redoc-markdown-headers"]=e.headings},Object.defineProperty(e.prototype,"schema",{get:function(){return this._schema},set:function(e){this._schema=e,this.spec.next(this._schema)},enumerable:!0,configurable:!0}),e.prototype.byPointer=function(e){var t=null;if(void 0==e)return null;try{t=a.JsonPointer.get(this._schema,decodeURIComponent(e))}catch(n){"#"!==e.charAt(0)&&(e="#"+e);try{t=this.parser.$refs.get(decodeURIComponent(e))}catch(e){}}return t},e.prototype.resolveRefs=function(e){var t=this;return Object.keys(e).forEach(function(n){if(e[n].$ref){var r=t.byPointer(e[n].$ref);r._pointer=e[n].$ref,e[n]=r}}),e},e.prototype.getOperationParams=function(e){function t(e,t){if(!Array.isArray(e))throw new Error("parameters must be an array. Got "+typeof e+" at "+t);return e.map(function(e,n){return e._pointer=a.JsonPointer.join(t,n),e})}"parameters"===a.JsonPointer.baseName(e)&&(e=a.JsonPointer.dirName(e));var n=a.JsonPointer.join(a.JsonPointer.dirName(e),["parameters"]),r=this.byPointer(n)||[],o=a.JsonPointer.join(e,["parameters"]),i=this.byPointer(o)||[],s={};return i.forEach(function(e){return s[e.name]=!0}),r=r.filter(function(e){return!s[e.name]}),r=t(r,n),i=t(i,o),i=this.resolveRefs(i),r=this.resolveRefs(r),i.concat(r)},e.prototype.getTagsMap=function(){for(var e=this._schema.tags||[],t={},n=0,r=e;n-1&&i.push({name:a.JsonPointer.baseName(e),$ref:e})}var l,u=r["x-extendedDiscriminator"];if(r["x-derived-from"]){l=[e].concat(r["x-derived-from"].filter(function(e){if(!e)return!1;var t=n.byPointer(e);return t&&t.discriminator}))}else l=[e];for(var c=0,p=Object.keys(o);c=0)return"break"}(b))break}if(!(m<0)){var _=void 0;if(u){for(var w=h.allOf||[],x=0,k=w;x0?o(r(e),9007199254740991):0}},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(11);t.SpecManager=r.SpecManager;var o=function(){function e(e){this.specMgr=e,this.componentSchema=null,this.dereferencedCache={}}return e.prototype.ngOnInit=function(){this.preinit()},e.prototype.preinit=function(){this.componentSchema=this.specMgr.byPointer(this.pointer||""),this.init()},e.prototype.ngOnDestroy=function(){this.destroy()},e.prototype.init=function(){},e.prototype.destroy=function(){},e}();t.BaseComponent=o;var i=function(e){function t(t,n){var r=e.call(this,t)||this;return r.specMgr=t,r.app=n,r}return __extends(t,e),t.prototype.subscribeForSearch=function(){var e=this;this.searchSubscription=this.app.searchContainingPointers.subscribe(function(t){for(var n=0;n=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function u(e){if(e>65535){e-=65536;var t=55296+(e>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}function c(e,t){var n=0;return i(v,t)?v[t]:35===t.charCodeAt(0)&&y.test(t)&&(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10),l(n))?u(n):e}function p(e){return e.indexOf("&")<0?e:e.replace(m,c)}function d(e){return w[e]}function f(e){return b.test(e)?e.replace(_,d):e}var h=Object.prototype.hasOwnProperty,g=/\\([\\!"#$%&'()*+,.\/:;<=>?@[\]^_`{|}~-])/g,m=/&([a-z#][a-z0-9]{1,31});/gi,y=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,v=n(232),b=/[&<>"]/,_=/[&<>"]/g,w={"&":"&","<":"<",">":">",'"':"""};t.assign=a,t.isString=o,t.has=i,t.unescapeMd=s,t.isValidEntityCode=l,t.fromCodePoint=u,t.replaceEntities=p,t.escapeHtml=f},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var r=n(5),o=n(25),i=n(19),a=n(56)("src"),s=Function.toString,l=(""+s).split("toString");n(8).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:l.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t,n){var r=n(0),o=n(3),i=n(45),a=/"/g,s=function(e,t,n,r){var o=String(i(e)),s="<"+t;return""!==n&&(s+=" "+n+'="'+String(r).replace(a,""")+'"'),s+">"+o+""};e.exports=function(e,t){var n={};n[e]=t(s),r(r.P+r.F*o(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t,n){"use strict";(function(e){function r(){return i.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function o(e,t){if(r()=r())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r().toString(16)+" bytes");return 0|e}function g(e){return+e!=e&&(e=0),i.alloc(+e)}function m(e,t){if(i.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return U(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return W(e).length;default:if(r)return U(e).length;t=(""+t).toLowerCase(),r=!0}}function y(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return A(this,t,n);case"utf8":case"utf-8":return M(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return P(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function v(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function b(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if("string"==typeof t&&(t=i.from(t,r)),i.isBuffer(t))return 0===t.length?-1:_(e,t,n,r,o);if("number"==typeof t)return t&=255,i.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):_(e,[t],n,r,o);throw new TypeError("val must be string, number or Buffer")}function _(e,t,n,r,o){function i(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}var a=1,s=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a=2,s/=2,l/=2,n/=2}var u;if(o){var c=-1;for(u=n;us&&(n=s-l),u=n;u>=0;u--){for(var p=!0,d=0;do&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var a=0;a239?4:i>223?3:i>191?2:1;if(o+s<=n){var l,u,c,p;switch(s){case 1:i<128&&(a=i);break;case 2:l=e[o+1],128==(192&l)&&(p=(31&i)<<6|63&l)>127&&(a=p);break;case 3:l=e[o+1],u=e[o+2],128==(192&l)&&128==(192&u)&&(p=(15&i)<<12|(63&l)<<6|63&u)>2047&&(p<55296||p>57343)&&(a=p);break;case 4:l=e[o+1],u=e[o+2],c=e[o+3],128==(192&l)&&128==(192&u)&&128==(192&c)&&(p=(15&i)<<18|(63&l)<<12|(63&u)<<6|63&c)>65535&&p<1114112&&(a=p)}}null===a?(a=65533,s=1):a>65535&&(a-=65536,r.push(a>>>10&1023|55296),a=56320|1023&a),r.push(a),o+=s}return E(r)}function E(e){var t=e.length;if(t<=Q)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr)&&(n=r);for(var o="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,n,r,o,a){if(!i.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function D(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o>>8*(r?o:1-o)}function L(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o>>8*(r?o:3-o)&255}function F(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function z(e,t,n,r,o){return o||F(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),J.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,o){return o||F(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),J.write(e,t,n,r,52,8),n+8}function B(e){if(e=H(e).replace(ee,""),e.length<2)return"";for(;e.length%4!=0;)e+="=";return e}function H(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function q(e){return e<16?"0"+e.toString(16):e.toString(16)}function U(e,t){t=t||1/0;for(var n,r=e.length,o=null,i=[],a=0;a55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function $(e){for(var t=[],n=0;n>8,o=n%256,i.push(o),i.push(r);return i}function W(e){return G.toByteArray(B(e))}function Z(e,t,n,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+n]=e[o];return o}function X(e){return e!==e}var G=n(444),J=n(445),K=n(446);t.Buffer=i,t.SlowBuffer=g,t.INSPECT_MAX_BYTES=50,i.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=r(),i.poolSize=8192,i._augment=function(e){return e.__proto__=i.prototype,e},i.from=function(e,t,n){return a(null,e,t,n)},i.TYPED_ARRAY_SUPPORT&&(i.prototype.__proto__=Uint8Array.prototype,i.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&i[Symbol.species]===i&&Object.defineProperty(i,Symbol.species,{value:null,configurable:!0})),i.alloc=function(e,t,n){return l(null,e,t,n)},i.allocUnsafe=function(e){return u(null,e)},i.allocUnsafeSlow=function(e){return u(null,e)},i.isBuffer=function(e){return!(null==e||!e._isBuffer)},i.compare=function(e,t){if(!i.isBuffer(e)||!i.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,a=Math.min(n,r);o0&&(e=this.toString("hex",0,n).match(/.{2}/g).join(" "),this.length>n&&(e+=" ... ")),""},i.prototype.compare=function(e,t,n,r,o){if(!i.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,o>>>=0,this===e)return 0;for(var a=o-r,s=n-t,l=Math.min(a,s),u=this.slice(r,o),c=e.slice(t,n),p=0;po)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return x(this,e,t,n);case"ascii":return k(this,e,t,n);case"latin1":case"binary":return C(this,e,t,n);case"base64":return S(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},i.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Q=4096;i.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n)<0&&(e=0):e>n&&(e=n),t<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(o*=256);)r+=this[e+--t]*o;return r},i.prototype.readUInt8=function(e,t){return t||N(e,1,this.length),this[e]},i.prototype.readUInt16LE=function(e,t){return t||N(e,2,this.length),this[e]|this[e+1]<<8},i.prototype.readUInt16BE=function(e,t){return t||N(e,2,this.length),this[e]<<8|this[e+1]},i.prototype.readUInt32LE=function(e,t){return t||N(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},i.prototype.readUInt32BE=function(e,t){return t||N(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},i.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||N(e,t,this.length);for(var r=this[e],o=1,i=0;++i=o&&(r-=Math.pow(2,8*t)),r},i.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||N(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return o*=128,i>=o&&(i-=Math.pow(2,8*t)),i},i.prototype.readInt8=function(e,t){return t||N(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},i.prototype.readInt16LE=function(e,t){t||N(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt16BE=function(e,t){t||N(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},i.prototype.readInt32LE=function(e,t){return t||N(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},i.prototype.readInt32BE=function(e,t){return t||N(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},i.prototype.readFloatLE=function(e,t){return t||N(e,4,this.length),J.read(this,e,!0,23,4)},i.prototype.readFloatBE=function(e,t){return t||N(e,4,this.length),J.read(this,e,!1,23,4)},i.prototype.readDoubleLE=function(e,t){return t||N(e,8,this.length),J.read(this,e,!0,52,8)},i.prototype.readDoubleBE=function(e,t){return t||N(e,8,this.length),J.read(this,e,!1,52,8)},i.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t|=0,n|=0,!r){j(this,e,t,n,Math.pow(2,8*n)-1,0)}var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+n},i.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,1,255,0),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},i.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,65535,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):L(this,e,t,!0),t+4},i.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,4294967295,0),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},i.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);j(this,e,t,n,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+n},i.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);j(this,e,t,n,o-1,-o)}var i=n-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+n},i.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,1,127,-128),i.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},i.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},i.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,2,32767,-32768),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},i.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,2147483647,-2147483648),i.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):L(this,e,t,!0),t+4},i.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||j(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),i.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):L(this,e,t,!1),t+4},i.prototype.writeFloatLE=function(e,t,n){return z(this,e,t,!0,n)},i.prototype.writeFloatBE=function(e,t,n){return z(this,e,t,!1,n)},i.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},i.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},i.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+n];else if(a<1e3||!i.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;a";return this.unstrustedSpec?n:this.sanitizer.bypassSecurityTrustHtml(n)},e=t=__decorate([r.Pipe({name:"marked"}),__metadata("design:paramtypes",[o.DomSanitizer,l.OptionsService])],e);var t}();t.MarkedPipe=d;var f=function(){function e(e){this.sanitizer=e}return e.prototype.transform=function(e){return i.isBlank(e)?e:i.isString(e)?this.sanitizer.bypassSecurityTrustHtml(e):e},e=__decorate([r.Pipe({name:"safe"}),__metadata("design:paramtypes",[o.DomSanitizer])],e)}();t.SafePipe=f;var h={"c++":"cpp","c#":"csharp","objective-c":"objectivec",shell:"bash",viml:"vim"},g=function(){function e(e){this.sanitizer=e}return t=e,e.prototype.transform=function(e,n){if(i.isBlank(n)||0===n.length)throw new u("Prism pipe requires one argument");if(i.isBlank(e))return e;if(!i.isString(e))throw new c(t,e);var r=n[0].toString().trim().toLowerCase();h[r]&&(r=h[r]);var o=Prism.languages[r];return o||(o=Prism.languages.clike),this.sanitizer.bypassSecurityTrustHtml(Prism.highlight(e,o))},e=t=__decorate([r.Pipe({name:"prism"}),__metadata("design:paramtypes",[o.DomSanitizer])],e);var t}();t.PrismPipe=g;var m=function(){function e(){}return t=e,e.prototype.transform=function(e){if(i.isBlank(e))return e;if(!i.isString(e))throw new c(t,e);return encodeURIComponent(e)},e=t=__decorate([r.Pipe({name:"encodeURIComponent"})],e);var t}();t.EncodeURIComponentPipe=m;var y={csv:"Comma Separated",ssv:"Space Separated",tsv:"Tab Separated",pipes:"Pipe Separated"},v=function(){function e(){}return e.prototype.transform=function(e){var t=e.collectionFormat;return t||(t="csv"),"multi"===t?"Multiple "+e.in+" params of":y[t]},e=__decorate([r.Pipe({name:"collectionFormat"})],e)}();t.CollectionFormatPipe=v,t.REDOC_PIPES=[d,f,g,m,s.JsonFormatter,p,v]},function(e,t,n){var r=n(12),o=n(57);e.exports=n(14)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(45);e.exports=function(e){return Object(r(e))}},function(e,t,n){"use strict";function r(e,t){function n(){e.classList.add("ps--focus")}function r(){e.classList.remove("ps--focus")}var o=this;o.settings=l();for(var i in t)o.settings[i]=t[i];o.containerWidth=null,o.containerHeight=null,o.contentWidth=null,o.contentHeight=null,o.isRtl="rtl"===u.css(e,"direction"),o.isNegativeScroll=function(){var t=e.scrollLeft,n=null;return e.scrollLeft=-1,n=e.scrollLeft<0,e.scrollLeft=t,n}(),o.negativeScrollAdjustment=o.isNegativeScroll?e.scrollWidth-e.clientWidth:0,o.event=new c,o.ownerDocument=e.ownerDocument||document,o.scrollbarXRail=u.appendTo(u.create("div","ps__scrollbar-x-rail"),e),o.scrollbarX=u.appendTo(u.create("div","ps__scrollbar-x"),o.scrollbarXRail),o.scrollbarX.setAttribute("tabindex",0),o.event.bind(o.scrollbarX,"focus",n),o.event.bind(o.scrollbarX,"blur",r),o.scrollbarXActive=null,o.scrollbarXWidth=null,o.scrollbarXLeft=null,o.scrollbarXBottom=s.toInt(u.css(o.scrollbarXRail,"bottom")),o.isScrollbarXUsingBottom=o.scrollbarXBottom===o.scrollbarXBottom,o.scrollbarXTop=o.isScrollbarXUsingBottom?null:s.toInt(u.css(o.scrollbarXRail,"top")),o.railBorderXWidth=s.toInt(u.css(o.scrollbarXRail,"borderLeftWidth"))+s.toInt(u.css(o.scrollbarXRail,"borderRightWidth")),u.css(o.scrollbarXRail,"display","block"),o.railXMarginWidth=s.toInt(u.css(o.scrollbarXRail,"marginLeft"))+s.toInt(u.css(o.scrollbarXRail,"marginRight")),u.css(o.scrollbarXRail,"display",""),o.railXWidth=null,o.railXRatio=null,o.scrollbarYRail=u.appendTo(u.create("div","ps__scrollbar-y-rail"),e),o.scrollbarY=u.appendTo(u.create("div","ps__scrollbar-y"),o.scrollbarYRail),o.scrollbarY.setAttribute("tabindex",0),o.event.bind(o.scrollbarY,"focus",n),o.event.bind(o.scrollbarY,"blur",r),o.scrollbarYActive=null,o.scrollbarYHeight=null,o.scrollbarYTop=null,o.scrollbarYRight=s.toInt(u.css(o.scrollbarYRail,"right")),o.isScrollbarYUsingRight=o.scrollbarYRight===o.scrollbarYRight,o.scrollbarYLeft=o.isScrollbarYUsingRight?null:s.toInt(u.css(o.scrollbarYRail,"left")),o.scrollbarYOuterWidth=o.isRtl?s.outerWidth(o.scrollbarY):null,o.railBorderYWidth=s.toInt(u.css(o.scrollbarYRail,"borderTopWidth"))+s.toInt(u.css(o.scrollbarYRail,"borderBottomWidth")),u.css(o.scrollbarYRail,"display","block"),o.railYMarginHeight=s.toInt(u.css(o.scrollbarYRail,"marginTop"))+s.toInt(u.css(o.scrollbarYRail,"marginBottom")),u.css(o.scrollbarYRail,"display",""),o.railYHeight=null,o.railYRatio=null}function o(e){return e.getAttribute("data-ps-id")}function i(e,t){e.setAttribute("data-ps-id",t)}function a(e){e.removeAttribute("data-ps-id")}var s=n(51),l=n(589),u=n(65),c=n(590),p=n(591),d={};t.add=function(e,t){var n=p();return i(e,n),d[n]=new r(e,t),d[n]},t.remove=function(e){delete d[o(e)],a(e)},t.get=function(e){return d[o(e)]}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){"use strict";function r(e){return JSON.stringify(e)}function o(e){return"string"==typeof e}function i(e){return"function"==typeof e}function a(e){return void 0==e}function s(e){return e.endsWith("/")?e.substring(0,e.length-1):e}function l(e,t){return e.reduce(function(e,n){return w.call(e,n[t])?e[n[t]].push(n):e[n[t]]=[n],e},{})}function u(e,t){if(void 0===t&&(t=!1),"default"===e)return t?"error":"success";if(e<100||e>599)throw new Error("invalid HTTP code");var n="success";return e>=300&&e<400?n="redirect":e>=400?n="error":e<200&&(n="info"),n}function c(e,t){for(var n=Object.keys(t),r=-1,o=n.length;++r0||function(e){return"[object SafariRemoteNotification]"===e.toString()}(!window.safari||safari.pushNotification),t.snapshot=h,t.isJsonLike=g,t.isXmlLike=m,t.isTextLike=y,t.getJsonLikeSample=v,t.getXmlLikeSample=b,t.getTextLikeSample=_},function(e,t,n){var r=n(75),o=n(45);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(19),o=n(26),i=n(122)("IE_PROTO"),a=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,i)?e[i]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?a:null}},function(e,t,n){var r=n(58),o=n(75),i=n(26),a=n(15),s=n(253);e.exports=function(e,t){var n=1==e,l=2==e,u=3==e,c=4==e,p=6==e,d=5==e||p,f=t||s;return function(t,s,h){for(var g,m,y=i(t),v=o(y),b=r(s,h,3),_=a(v.length),w=0,x=n?f(t,_):l?f(t,0):void 0;_>w;w++)if((d||w in v)&&(g=v[w],m=b(g,w,y),e))if(n)x[w]=m;else if(m)switch(e){case 3:return!0;case 5:return g;case 6:return w;case 2:x.push(g)}else if(c)return!1;return p?-1:u||c?c:x}}},function(e,t,n){var r=n(0),o=n(8),i=n(3);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],a={};a[e]=t(n),r(r.S+r.F*i(function(){n(1)}),"Object",a)}},function(e,t){function n(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function o(e){if(c===setTimeout)return setTimeout(e,0);if((c===n||!c)&&setTimeout)return c=setTimeout,setTimeout(e,0);try{return c(e,0)}catch(t){try{return c.call(null,e,0)}catch(t){return c.call(this,e,0)}}}function i(e){if(p===clearTimeout)return clearTimeout(e);if((p===r||!p)&&clearTimeout)return p=clearTimeout,clearTimeout(e);try{return p(e)}catch(t){try{return p.call(null,e)}catch(t){return p.call(this,e)}}}function a(){g&&f&&(g=!1,f.length?h=f.concat(h):m=-1,h.length&&s())}function s(){if(!g){var e=o(a);g=!0;for(var t=h.length;t;){for(f=h,h=[];++m1)for(var n=1;n0?r:n)(e)}},function(e,t,n){var r=n(101),o=n(57),i=n(30),a=n(44),s=n(19),l=n(175),u=Object.getOwnPropertyDescriptor;t.f=n(14)?u:function(e,t){if(e=i(e),t=a(t,!0),l)try{return u(e,t)}catch(e){}if(s(e,t))return o(!r.f.call(e,t),e[t])}},function(e,t,n){"use strict";if(n(14)){var r=n(78),o=n(5),i=n(3),a=n(0),s=n(107),l=n(141),u=n(58),c=n(77),p=n(57),d=n(25),f=n(76),h=n(37),g=n(15),m=n(206),y=n(55),v=n(44),b=n(19),_=n(126),w=n(4),x=n(26),k=n(124),C=n(53),S=n(31),O=n(59).f,P=n(125),M=n(56),E=n(9),T=n(32),I=n(121),A=n(207),R=n(106),N=n(67),j=n(128),D=n(80),L=n(138),F=n(204),z=n(12),V=n(38),B=z.f,H=V.f,q=o.RangeError,U=o.TypeError,$=o.Uint8Array,Y=Array.prototype,W=l.ArrayBuffer,Z=l.DataView,X=T(0),G=T(2),J=T(3),K=T(4),Q=T(5),ee=T(6),te=I(!0),ne=I(!1),re=R.values,oe=R.keys,ie=R.entries,ae=Y.lastIndexOf,se=Y.reduce,le=Y.reduceRight,ue=Y.join,ce=Y.sort,pe=Y.slice,de=Y.toString,fe=Y.toLocaleString,he=E("iterator"),ge=E("toStringTag"),me=M("typed_constructor"),ye=M("def_constructor"),ve=s.CONSTR,be=s.TYPED,_e=s.VIEW,we=T(1,function(e,t){return Oe(A(e,e[ye]),t)}),xe=i(function(){return 1===new $(new Uint16Array([1]).buffer)[0]}),ke=!!$&&!!$.prototype.set&&i(function(){new $(1).set({})}),Ce=function(e,t){var n=h(e);if(n<0||n%t)throw q("Wrong offset!");return n},Se=function(e){if(w(e)&&be in e)return e;throw U(e+" is not a typed array!")},Oe=function(e,t){if(!(w(e)&&me in e))throw U("It is not a typed array constructor!");return new e(t)},Pe=function(e,t){return Me(A(e,e[ye]),t)},Me=function(e,t){for(var n=0,r=t.length,o=Oe(e,r);r>n;)o[n]=t[n++];return o},Ee=function(e,t,n){B(e,t,{get:function(){return this._d[n]}})},Te=function(e){var t,n,r,o,i,a,s=x(e),l=arguments.length,c=l>1?arguments[1]:void 0,p=void 0!==c,d=P(s);if(void 0!=d&&!k(d)){for(a=d.call(s),r=[],t=0;!(i=a.next()).done;t++)r.push(i.value);s=r}for(p&&l>2&&(c=u(c,arguments[2],2)),t=0,n=g(s.length),o=Oe(this,n);n>t;t++)o[t]=p?c(s[t],t):s[t];return o},Ie=function(){for(var e=0,t=arguments.length,n=Oe(this,t);t>e;)n[e]=arguments[e++];return n},Ae=!!$&&i(function(){fe.call(new $(1))}),Re=function(){return fe.apply(Ae?pe.call(Se(this)):Se(this),arguments)},Ne={copyWithin:function(e,t){return F.call(Se(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return K(Se(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return L.apply(Se(this),arguments)},filter:function(e){return Pe(this,G(Se(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return Q(Se(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ee(Se(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){X(Se(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return ne(Se(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return te(Se(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return ue.apply(Se(this),arguments)},lastIndexOf:function(e){return ae.apply(Se(this),arguments)},map:function(e){return we(Se(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return se.apply(Se(this),arguments)},reduceRight:function(e){return le.apply(Se(this),arguments)},reverse:function(){for(var e,t=this,n=Se(t).length,r=Math.floor(n/2),o=0;o1?arguments[1]:void 0)},sort:function(e){return ce.call(Se(this),e)},subarray:function(e,t){var n=Se(this),r=n.length,o=y(e,r);return new(A(n,n[ye]))(n.buffer,n.byteOffset+o*n.BYTES_PER_ELEMENT,g((void 0===t?r:y(t,r))-o))}},je=function(e,t){return Pe(this,pe.call(Se(this),e,t))},De=function(e){Se(this);var t=Ce(arguments[1],1),n=this.length,r=x(e),o=g(r.length),i=0;if(o+t>n)throw q("Wrong length!");for(;i255?255:255&r),o.v[f](n*t+o.o,r,xe)},E=function(e,t){B(e,t,{get:function(){return P(this,t)},set:function(e){return M(this,t,e)},enumerable:!0})};b?(h=n(function(e,n,r,o){c(e,h,u,"_d");var i,a,s,l,p=0,f=0;if(w(n)){if(!(n instanceof W||"ArrayBuffer"==(l=_(n))||"SharedArrayBuffer"==l))return be in n?Me(h,n):Te.call(h,n);i=n,f=Ce(r,t);var y=n.byteLength;if(void 0===o){if(y%t)throw q("Wrong length!");if((a=y-f)<0)throw q("Wrong length!")}else if((a=g(o)*t)+f>y)throw q("Wrong length!");s=a/t}else s=m(n),a=s*t,i=new W(a);for(d(e,"_d",{b:i,o:f,l:a,e:s,v:new Z(i)});p=0?e.substr(t).toLowerCase():""},t.getHash=function(e){var t=e.indexOf("#");return t>=0?e.substr(t):"#"},t.stripHash=function(e){var t=e.indexOf("#");return t>=0&&(e=e.substr(0,t)),e},t.isHttp=function(e){var t=s.getProtocol(e);return"http"===t||"https"===t||void 0===t&&r.browser},t.isFileSystemPath=function(e){if(r.browser)return!1;var t=s.getProtocol(e);return void 0===t||"file"===t},t.fromFileSystemPath=function(e){for(var t=0;to*r?t.INVIEW_POSITION.ABOVE:o*e.getBoundingClientRect().bottom<=o*r?t.INVIEW_POSITION.BELLOW:t.INVIEW_POSITION.INVIEW},e.prototype.scrollToPos=function(e){this.$scrollParent.scrollTo?this.$scrollParent.scrollTo(0,Math.floor(e)):this.$scrollParent.scrollTop=e},e.prototype.scrollTo=function(e,t){if(void 0===t&&(t=0),e){var n=e.getBoundingClientRect(),r=this.scrollY()+n.top-this.scrollYOffset()+t+1;return this.scrollToPos(r),r}},e.prototype.saveScroll=function(){var e=this._stickElement;if(e){var t=e.offsetParent;this._savedPosition=e.offsetTop+t.offsetTop}},e.prototype.setStickElement=function(e){this._stickElement=e},e.prototype.restoreScroll=function(){var e=this._stickElement;if(e){var t=e.offsetParent,n=e.offsetTop+t.offsetTop,r=this.scrollY()+(n-this._savedPosition);this.scrollToPos(r)}},e.prototype.relativeScrollPos=function(e){return-e.getBoundingClientRect().top+this.scrollYOffset()-1},e.prototype.scrollHandler=function(e){var t=this.scrollY()-this.prevOffsetY>0;this.prevOffsetY=this.scrollY(),this.scroll.next({isScrolledDown:t,evt:e})},e.prototype.bind=function(){var e=this;this.prevOffsetY=this.scrollY(),this._cancel=o.BrowserDomAdapter.onAndCancel(this.$scrollParent,"scroll",a.throttle(function(t){e.scrollHandler(t)},100,this))},e.prototype.unbind=function(){this._cancel()},e=__decorate([r.Injectable(),__metadata("design:paramtypes",[i.OptionsService])],e)}();t.ScrollService=s},function(e,t,n){"use strict";function r(e,t){return e.settings.minScrollbarLength&&(t=Math.max(t,e.settings.minScrollbarLength)),e.settings.maxScrollbarLength&&(t=Math.min(t,e.settings.maxScrollbarLength)),t}function o(e,t){var n={width:t.railXWidth};t.isRtl?n.left=t.negativeScrollAdjustment+e.scrollLeft+t.containerWidth-t.contentWidth:n.left=e.scrollLeft,t.isScrollbarXUsingBottom?n.bottom=t.scrollbarXBottom-e.scrollTop:n.top=t.scrollbarXTop+e.scrollTop,a.css(t.scrollbarXRail,n);var r={top:e.scrollTop,height:t.railYHeight};t.isScrollbarYUsingRight?t.isRtl?r.right=t.contentWidth-(t.negativeScrollAdjustment+e.scrollLeft)-t.scrollbarYRight-t.scrollbarYOuterWidth:r.right=t.scrollbarYRight-e.scrollLeft:t.isRtl?r.left=t.negativeScrollAdjustment+e.scrollLeft+2*t.containerWidth-t.contentWidth-t.scrollbarYLeft-t.scrollbarYOuterWidth:r.left=t.scrollbarYLeft+e.scrollLeft,a.css(t.scrollbarYRail,r),a.css(t.scrollbarX,{left:t.scrollbarXLeft,width:t.scrollbarXWidth-t.railBorderXWidth}),a.css(t.scrollbarY,{top:t.scrollbarYTop,height:t.scrollbarYHeight-t.railBorderYWidth})}var i=n(51),a=n(65),s=n(27),l=n(52);e.exports=function(e){var t=s.get(e);t.containerWidth=e.clientWidth,t.containerHeight=e.clientHeight,t.contentWidth=e.scrollWidth,t.contentHeight=e.scrollHeight;var n;e.contains(t.scrollbarXRail)||(n=a.queryChildren(e,".ps__scrollbar-x-rail"),n.length>0&&n.forEach(function(e){a.remove(e)}),a.appendTo(t.scrollbarXRail,e)),e.contains(t.scrollbarYRail)||(n=a.queryChildren(e,".ps__scrollbar-y-rail"),n.length>0&&n.forEach(function(e){a.remove(e)}),a.appendTo(t.scrollbarYRail,e)),!t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth),t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight),o(e,t),t.scrollbarXActive?e.classList.add("ps--active-x"):(e.classList.remove("ps--active-x"),t.scrollbarXWidth=0,t.scrollbarXLeft=0,l(e,"left",0)),t.scrollbarYActive?e.classList.add("ps--active-y"):(e.classList.remove("ps--active-y"),t.scrollbarYHeight=0,t.scrollbarYTop=0,l(e,"top",0))}},function(e,t,n){var r=n(4);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(56)("meta"),o=n(4),i=n(19),a=n(12).f,s=0,l=Object.isExtensible||function(){return!0},u=!n(3)(function(){return l(Object.preventExtensions({}))}),c=function(e){a(e,r,{value:{i:"O"+ ++s,w:{}}})},p=function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},d=function(e,t){if(!i(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},f=function(e){return u&&h.NEED&&l(e)&&!i(e,r)&&c(e),e},h=e.exports={KEY:r,NEED:!1,fastKey:p,getWeak:d,onFreeze:f}},function(e,t,n){"use strict";var r=n(84),o=n(419),i=n(212),a=n(423),s=function(){function e(e){this._isScalar=!1,e&&(this._subscribe=e)}return e.prototype.lift=function(t){var n=new e;return n.source=this,n.operator=t,n},e.prototype.subscribe=function(e,t,n){var r=this.operator,i=o.toSubscriber(e,t,n);if(r?r.call(i,this.source):i.add(this.source||!i.syncErrorThrowable?this._subscribe(i):this._trySubscribe(i)),i.syncErrorThrowable&&(i.syncErrorThrowable=!1,i.syncErrorThrown))throw i.syncErrorValue;return i},e.prototype._trySubscribe=function(e){try{return this._subscribe(e)}catch(t){e.syncErrorThrown=!0,e.syncErrorValue=t,e.error(t)}},e.prototype.forEach=function(e,t){var n=this;if(t||(r.root.Rx&&r.root.Rx.config&&r.root.Rx.config.Promise?t=r.root.Rx.config.Promise:r.root.Promise&&(t=r.root.Promise)),!t)throw new Error("no Promise impl found");return new t(function(t,r){var o;o=n.subscribe(function(t){if(o)try{e(t)}catch(e){r(e),o.unsubscribe()}else e(t)},r,t)})},e.prototype._subscribe=function(e){return this.source.subscribe(e)},e.prototype[i.observable]=function(){return this},e.prototype.pipe=function(){for(var e=[],t=0;t0&&(c=e.exports.formatter.apply(null,u)),n&&n.message&&(c+=(c?" \n":"")+n.message);var p=new t(c);return o(p,n),i(p),a(p,r),p}}function o(e,t){u(e,t),a(e,t)}function i(e){e.toJSON=s,e.inspect=l}function a(e,t){if(t&&"object"==typeof t)for(var n=Object.keys(t),r=0;r=0))try{e[o]=t[o]}catch(e){}}}function s(){var e={},t=Object.keys(this);t=t.concat(v);for(var n=0;n=0)return t.splice(n,1),t.join("\n")}return e}}function d(e){if(!b)return!1;var t=Object.getOwnPropertyDescriptor(e,"stack");return!!t&&"function"==typeof t.get}function f(e,t){var n=Object.getOwnPropertyDescriptor(e,"stack");Object.defineProperty(e,"stack",{get:function(){return c(n.get.apply(e),t.stack)},enumerable:!1,configurable:!0})}function h(e){var t=Object.getOwnPropertyDescriptor(e,"stack");Object.defineProperty(e,"stack",{get:function(){return p(t.get.apply(e))},enumerable:!1,configurable:!0})}var g=n(474),m=Array.prototype.slice,y=["name","message","stack"],v=["name","message","description","number","code","fileName","lineNumber","columnNumber","sourceURL","line","column","stack"];e.exports=r(Error),e.exports.error=r(Error),e.exports.eval=r(EvalError),e.exports.range=r(RangeError),e.exports.reference=r(ReferenceError),e.exports.syntax=r(SyntaxError),e.exports.type=r(TypeError),e.exports.uri=r(URIError),e.exports.formatter=g;var b=function(){return!(!Object.getOwnPropertyDescriptor||!Object.defineProperty||"undefined"!=typeof navigator&&/Android/.test(navigator.userAgent))}()},function(e,t,n){"use strict";function r(e){var t,n=["ps--in-scrolling"];return t=void 0===e?["ps--x","ps--y"]:["ps--"+e],n.concat(t)}var o=n(65),i=t.toInt=function(e){return parseInt(e,10)||0};t.isEditable=function(e){return o.matches(e,"input,[contenteditable]")||o.matches(e,"select,[contenteditable]")||o.matches(e,"textarea,[contenteditable]")||o.matches(e,"button,[contenteditable]")},t.removePsClasses=function(e){for(var t=0;t=i.contentHeight-i.containerHeight&&(n=i.contentHeight-i.containerHeight,n-e.scrollTop<=2?n=e.scrollTop:e.scrollTop=n,e.dispatchEvent(o("ps-y-reach-end"))),"left"===t&&n>=i.contentWidth-i.containerWidth&&(n=i.contentWidth-i.containerWidth,n-e.scrollLeft<=2?n=e.scrollLeft:e.scrollLeft=n,e.dispatchEvent(o("ps-x-reach-end"))),void 0===i.lastTop&&(i.lastTop=e.scrollTop),void 0===i.lastLeft&&(i.lastLeft=e.scrollLeft),"top"===t&&ni.lastTop&&e.dispatchEvent(o("ps-scroll-down")),"left"===t&&ni.lastLeft&&e.dispatchEvent(o("ps-scroll-right")),"top"===t&&n!==i.lastTop&&(e.scrollTop=i.lastTop=n,e.dispatchEvent(o("ps-scroll-y"))),"left"===t&&n!==i.lastLeft&&(e.scrollLeft=i.lastLeft=n,e.dispatchEvent(o("ps-scroll-x")))}},function(e,t,n){var r=n(2),o=n(177),i=n(123),a=n(122)("IE_PROTO"),s=function(){},l=function(){var e,t=n(176)("iframe"),r=i.length;for(t.style.display="none",n(179).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(" drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc/000077500000000000000000000000001514731163200235165ustar00rootroot00000000000000drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc/LICENSE000066400000000000000000000021031514731163200245170ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2015-present, Rebilly, 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. drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc/redoc-logo.png000066400000000000000000000115511514731163200262610ustar00rootroot00000000000000‰PNG  IHDRããwŽ£L pHYs  šœëiTXtXML:com.adobe.xmp ‚“ïB $IDATxÚí�}lWÕ‡©´ÒR#ŽlÓ™ Jå%d¨dŽÄ…÷E�s¸l³ˆât‰c":Ýt² YÇ$Ì÷…2Åè†Ugi$´„Íd²ÁFQÔÅ?ÜŒç¤R™€ŠÝ÷„Ó¤iZè9÷œ{Ï9÷ù$Ï_ʯ¿{Î÷iï=÷¼ èììÅC# # #22 # #22 # #2@a2úȬKV S…›…„mÂ[B‡Ð …ó¡ðžÐ&¼(üIxT¸[¸N˜%Lj”§Fª¹¯—•MÆú ¶œ¿†¥s¨¾�ÝíQÊ»‹¸mÍ]Fýr¿Õ²‘–PޤÇHüzO«yžQŒ©Ë8ŲqÖP~¤)G ÷ëõ�®gïÔ¥,ã}–#¦5”9†”c�Ðwç]áÜädÔûÕtX =O¢Ôˆ�”_þâPÈ„ R“q†ECcUr2êã¸æ ÏzŒ¸Â~]¸K8!“”±É°ý·výÛdd”ÿÿáÉì‹÷„é™”ˆUÂ>ö¿5E›"±‹ýÂh„LFÆí~^R2ªs "Ñé³1B!ã=†íý¡º£KMÆÕËø‘p"BF/â@ámöÞÜý3R‘ñùˆeTLd”5zgZ´óõȘ°ŒY˜Œk-Úø´eä6!‹q¨pȰmwöüpÀAÈBe¼Þ¢]')cÙ_m d¡"VꉦmúÅ”e,åK„,\Æz‹¶|º·Ïb:\ÄÓá²pÕ �X´ã¼äe$™s{βh¿½B52„t׎ê.l—EÛý¦¯ÏDF„DH»6œkÑf Ñ‘ ¤»¶«Þ´h¯Æ£}.2"$Bš·Û2˶: Bºk¯1³múUÏÈH²ÿíT¡_›9ÿ«ˆŒ!ÍÚh‘e»4öçó‘‘ dÿÚf´åDµ€øtd$é¦Mª-gÚ(nëïÏAF‚�Çn�U–mð¶Éò8d$yôv˜Ÿáú¿gò³˜(ž^& —]HùÞ_Z^w‹éÏc Uz8]šUV!ÕzCaO†uª#Ë,c"úY´\6!õ6»3\ëU6?—m7Ò¥Ùq�–BH=ïô… ׸QM(³Œ«‘ÏÿFW© )ßk°ÚË4õ©ÛÚSl>[5¦ÍD›¤�DTƒh3³|dDÆÒ )ßcˆð\ÆëùyÖïÁm*·©¥R½ Z³>ŸÛ>'2€ÃBùþ„72~ÿVW¿ôxµÁ«�R )?ïbáýŒß»Mæê;ñÒŸ—þ¥RŸÕààûªCQÏrùݘÇt¸Ò)Ÿýyµ�°ƒï©VúOuýý˜(NJ!¤|æw…w|?µ>ñ"퇌$i!åsNutâMDd$É ©Y®ÚcI’BÊ¿9Wø›Ãgò„¾Û I2BÊÿ7V¿€w98öŽpNí…Œ$z!å¿}IíÀ¦G•]ŠøÏþn&…Œ¤´Bê=LÏžðôºh“Zטg;!#‰MÈ/7¯z|o{‡š�w!#‰MHŸtß.ª}�‘ ä^Èóù Bö~fâ/…Ê¢ÛI™…lõµ»ô2–x¢x™÷eµ}‰ÿ3¡*¤_P,¡‚öe5aÝÑŽòFF³/«ÿï¼]˜ò­;Ûn@Jû²ö†ÚŒø;.ö¨AÆþu$R±/kOÔnõj!–A-¶j„÷eÝ) Šm„�}Y‘‘ÛTnS’`_VdäÕ¯6’—þÀ¾¬� Ét8`_Vdd¢8AHd$ �ÈH‘‘ $2„ PHd$ˆ�ÈH2!‘‘ d B"#AÈ@„DF‚��‰Œ! B"$2„ DHd$ˆ�ÈH2!‘‘ d B"#AÈ@„DF‚�æ<æãdã�el¡tHÀB®.“Œ;(¸�?(‹Œû)¸�jËÊe�Q1–’!� Ù«Œí†z5åB"rBŒ2n1¼È-” ‰@È{c”±ÁâBÇQ*$p!÷¹8‚.ogX\èC” ‰@È)±ÉX-tXl-?‰2!9 ù •ŒúBﳸÐ…Ê„ä$£:³e·a�®ŠQÆ)–·k(’£�‹ ëó‰e¬Z-…\B™�œdœmX››£“Q_h}†aäåJhÊ…x–qAÞ Š’Ñæž¼ç2–¡” ñ(ã:ÚlŒRF}±Ó3ÎzhæðW’xq‚Å7©Ç†heÔÝè`æü.}Zq-eDˆ8\xÍ¢/Ž]ÆÏ o9:êZÍ o®¦ #…“|,%É 8X-JnöZÔÞaáSQ˨b²¾˜N€HyÊÅ/…ÂeÔB^K‡BÄ\’ŒŒZÈt*Dˆz¾¬LMF5`%� ‘QïêÙ5»I¹”†HØèr )8µ�— èl˜=Â)É˨…/¼B§C€¨ÅÄg»~ŬŒZȽ;À! AíãtŽ�÷�AËØMÊ:µ —Å%—¨Ù^gøš|…ŒÝ¤T³$äyræ ð+µS…Ï™@QÉØMÊ!•Â&ÝP øz6¼K–Ç´¼(eì!¦ÚWgªp³ð€°MÏwí ˜Àb„ôYááB;¾+#ø�F@F@Fdd@F@Fdd@F@FddHŒÿ¢sŒ—xÕ˜IEND®B`‚drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/redoc/redoc.min.js000066400000000000000000037641171514731163200257550ustar00rootroot00000000000000/*! For license information please see redoc.standalone.js.LICENSE.txt */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("null")):"function"==typeof define&&define.amd?define(["null"],t):"object"==typeof exports?exports.Redoc=t(require("null")):e.Redoc=t(e.null)}(this,(function(e){return function(){var t={5499:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;const r=n(3325),o=n(6479),i=n(5522),a=n(1603),s=["/properties"],l="http://json-schema.org/draft-07/schema";class c extends r.default{_addVocabularies(){super._addVocabularies(),o.default.forEach((e=>this.addVocabulary(e))),this.opts.discriminator&&this.addKeyword(i.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;const e=this.opts.$data?this.$dataMetaSchema(a,s):a;this.addMetaSchema(e,l,!1),this.refs["http://json-schema.org/schema"]=l}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(l)?l:void 0)}}e.exports=t=c,Object.defineProperty(t,"__esModule",{value:!0}),t.default=c;var u=n(1321);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return u.KeywordCxt}});var p=n(4475);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return p._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return p.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return p.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return p.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return p.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return p.CodeGen}})},4667:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regexpCode=t.getProperty=t.safeStringify=t.stringify=t.strConcat=t.addCodeArg=t.str=t._=t.nil=t._Code=t.Name=t.IDENTIFIER=t._CodeOrName=void 0;class n{}t._CodeOrName=n,t.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class r extends n{constructor(e){if(super(),!t.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}t.Name=r;class o extends n{constructor(e){super(),this._items="string"==typeof e?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const e=this._items[0];return""===e||'""'===e}get str(){var e;return null!==(e=this._str)&&void 0!==e?e:this._str=this._items.reduce(((e,t)=>`${e}${t}`),"")}get names(){var e;return null!==(e=this._names)&&void 0!==e?e:this._names=this._items.reduce(((e,t)=>(t instanceof r&&(e[t.str]=(e[t.str]||0)+1),e)),{})}}function i(e,...t){const n=[e[0]];let r=0;for(;r"),GTE:new r._Code(">="),LT:new r._Code("<"),LTE:new r._Code("<="),EQ:new r._Code("==="),NEQ:new r._Code("!=="),NOT:new r._Code("!"),OR:new r._Code("||"),AND:new r._Code("&&"),ADD:new r._Code("+")};class s{optimizeNodes(){return this}optimizeNames(e,t){return this}}class l extends s{constructor(e,t,n){super(),this.varKind=e,this.name=t,this.rhs=n}render({es5:e,_n:t}){const n=e?o.varKinds.var:this.varKind,r=void 0===this.rhs?"":` = ${this.rhs}`;return`${n} ${this.name}${r};`+t}optimizeNames(e,t){if(e[this.name.str])return this.rhs&&(this.rhs=R(this.rhs,e,t)),this}get names(){return this.rhs instanceof r._CodeOrName?this.rhs.names:{}}}class c extends s{constructor(e,t,n){super(),this.lhs=e,this.rhs=t,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,t){if(!(this.lhs instanceof r.Name)||e[this.lhs.str]||this.sideEffects)return this.rhs=R(this.rhs,e,t),this}get names(){return C(this.lhs instanceof r.Name?{}:{...this.lhs.names},this.rhs)}}class u extends c{constructor(e,t,n,r){super(e,n,r),this.op=t}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}}class p extends s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}}class d extends s{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}}class f extends s{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}}class h extends s{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,t){return this.code=R(this.code,e,t),this}get names(){return this.code instanceof r._CodeOrName?this.code.names:{}}}class m extends s{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce(((t,n)=>t+n.render(e)),"")}optimizeNodes(){const{nodes:e}=this;let t=e.length;for(;t--;){const n=e[t].optimizeNodes();Array.isArray(n)?e.splice(t,1,...n):n?e[t]=n:e.splice(t,1)}return e.length>0?this:void 0}optimizeNames(e,t){const{nodes:n}=this;let r=n.length;for(;r--;){const o=n[r];o.optimizeNames(e,t)||(j(e,o.names),n.splice(r,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce(((e,t)=>$(e,t.names)),{})}}class g extends m{render(e){return"{"+e._n+super.render(e)+"}"+e._n}}class y extends m{}class v extends g{}v.kind="else";class b extends g{constructor(e,t){super(t),this.condition=e}render(e){let t=`if(${this.condition})`+super.render(e);return this.else&&(t+="else "+this.else.render(e)),t}optimizeNodes(){super.optimizeNodes();const e=this.condition;if(!0===e)return this.nodes;let t=this.else;if(t){const e=t.optimizeNodes();t=this.else=Array.isArray(e)?new v(e):e}return t?!1===e?t instanceof b?t:t.nodes:this.nodes.length?this:new b(T(e),t instanceof b?[t]:t.nodes):!1!==e&&this.nodes.length?this:void 0}optimizeNames(e,t){var n;if(this.else=null===(n=this.else)||void 0===n?void 0:n.optimizeNames(e,t),super.optimizeNames(e,t)||this.else)return this.condition=R(this.condition,e,t),this}get names(){const e=super.names;return C(e,this.condition),this.else&&$(e,this.else.names),e}}b.kind="if";class w extends g{}w.kind="for";class x extends w{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iteration=R(this.iteration,e,t),this}get names(){return $(super.names,this.iteration.names)}}class k extends w{constructor(e,t,n,r){super(),this.varKind=e,this.name=t,this.from=n,this.to=r}render(e){const t=e.es5?o.varKinds.var:this.varKind,{name:n,from:r,to:i}=this;return`for(${t} ${n}=${r}; ${n}<${i}; ${n}++)`+super.render(e)}get names(){const e=C(super.names,this.from);return C(e,this.to)}}class _ extends w{constructor(e,t,n,r){super(),this.loop=e,this.varKind=t,this.name=n,this.iterable=r}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,t){if(super.optimizeNames(e,t))return this.iterable=R(this.iterable,e,t),this}get names(){return $(super.names,this.iterable.names)}}class O extends g{constructor(e,t,n){super(),this.name=e,this.args=t,this.async=n}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}}O.kind="func";class S extends m{render(e){return"return "+super.render(e)}}S.kind="return";class E extends g{render(e){let t="try"+super.render(e);return this.catch&&(t+=this.catch.render(e)),this.finally&&(t+=this.finally.render(e)),t}optimizeNodes(){var e,t;return super.optimizeNodes(),null===(e=this.catch)||void 0===e||e.optimizeNodes(),null===(t=this.finally)||void 0===t||t.optimizeNodes(),this}optimizeNames(e,t){var n,r;return super.optimizeNames(e,t),null===(n=this.catch)||void 0===n||n.optimizeNames(e,t),null===(r=this.finally)||void 0===r||r.optimizeNames(e,t),this}get names(){const e=super.names;return this.catch&&$(e,this.catch.names),this.finally&&$(e,this.finally.names),e}}class P extends g{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}}P.kind="catch";class A extends g{render(e){return"finally"+super.render(e)}}function $(e,t){for(const n in t)e[n]=(e[n]||0)+(t[n]||0);return e}function C(e,t){return t instanceof r._CodeOrName?$(e,t.names):e}function R(e,t,n){return e instanceof r.Name?i(e):(o=e)instanceof r._Code&&o._items.some((e=>e instanceof r.Name&&1===t[e.str]&&void 0!==n[e.str]))?new r._Code(e._items.reduce(((e,t)=>(t instanceof r.Name&&(t=i(t)),t instanceof r._Code?e.push(...t._items):e.push(t),e)),[])):e;var o;function i(e){const r=n[e.str];return void 0===r||1!==t[e.str]?e:(delete t[e.str],r)}}function j(e,t){for(const n in t)e[n]=(e[n]||0)-(t[n]||0)}function T(e){return"boolean"==typeof e||"number"==typeof e||null===e?!e:r._`!${L(e)}`}A.kind="finally",t.CodeGen=class{constructor(e,t={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...t,_n:t.lines?"\n":""},this._extScope=e,this._scope=new o.Scope({parent:e}),this._nodes=[new y]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,t){const n=this._extScope.value(e,t);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,t){return this._extScope.getValue(e,t)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,t,n,r){const o=this._scope.toName(t);return void 0!==n&&r&&(this._constants[o.str]=n),this._leafNode(new l(e,o,n)),o}const(e,t,n){return this._def(o.varKinds.const,e,t,n)}let(e,t,n){return this._def(o.varKinds.let,e,t,n)}var(e,t,n){return this._def(o.varKinds.var,e,t,n)}assign(e,t,n){return this._leafNode(new c(e,t,n))}add(e,n){return this._leafNode(new u(e,t.operators.ADD,n))}code(e){return"function"==typeof e?e():e!==r.nil&&this._leafNode(new h(e)),this}object(...e){const t=["{"];for(const[n,o]of e)t.length>1&&t.push(","),t.push(n),(n!==o||this.opts.es5)&&(t.push(":"),r.addCodeArg(t,o));return t.push("}"),new r._Code(t)}if(e,t,n){if(this._blockNode(new b(e)),t&&n)this.code(t).else().code(n).endIf();else if(t)this.code(t).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new b(e))}else(){return this._elseNode(new v)}endIf(){return this._endBlockNode(b,v)}_for(e,t){return this._blockNode(e),t&&this.code(t).endFor(),this}for(e,t){return this._for(new x(e),t)}forRange(e,t,n,r,i=(this.opts.es5?o.varKinds.var:o.varKinds.let)){const a=this._scope.toName(e);return this._for(new k(i,a,t,n),(()=>r(a)))}forOf(e,t,n,i=o.varKinds.const){const a=this._scope.toName(e);if(this.opts.es5){const e=t instanceof r.Name?t:this.var("_arr",t);return this.forRange("_i",0,r._`${e}.length`,(t=>{this.var(a,r._`${e}[${t}]`),n(a)}))}return this._for(new _("of",i,a,t),(()=>n(a)))}forIn(e,t,n,i=(this.opts.es5?o.varKinds.var:o.varKinds.const)){if(this.opts.ownProperties)return this.forOf(e,r._`Object.keys(${t})`,n);const a=this._scope.toName(e);return this._for(new _("in",i,a,t),(()=>n(a)))}endFor(){return this._endBlockNode(w)}label(e){return this._leafNode(new p(e))}break(e){return this._leafNode(new d(e))}return(e){const t=new S;if(this._blockNode(t),this.code(e),1!==t.nodes.length)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(S)}try(e,t,n){if(!t&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');const r=new E;if(this._blockNode(r),this.code(e),t){const e=this.name("e");this._currNode=r.catch=new P(e),t(e)}return n&&(this._currNode=r.finally=new A,this.code(n)),this._endBlockNode(P,A)}throw(e){return this._leafNode(new f(e))}block(e,t){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(t),this}endBlock(e){const t=this._blockStarts.pop();if(void 0===t)throw new Error("CodeGen: not in self-balancing block");const n=this._nodes.length-t;if(n<0||void 0!==e&&n!==e)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=t,this}func(e,t=r.nil,n,o){return this._blockNode(new O(e,t,n)),o&&this.code(o).endFunc(),this}endFunc(){return this._endBlockNode(O)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,t){const n=this._currNode;if(n instanceof e||t&&n instanceof t)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${t?`${e.kind}/${t.kind}`:e.kind}"`)}_elseNode(e){const t=this._currNode;if(!(t instanceof b))throw new Error('CodeGen: "else" without "if"');return this._currNode=t.else=e,this}get _root(){return this._nodes[0]}get _currNode(){const e=this._nodes;return e[e.length-1]}set _currNode(e){const t=this._nodes;t[t.length-1]=e}},t.not=T;const I=D(t.operators.AND);t.and=function(...e){return e.reduce(I)};const N=D(t.operators.OR);function D(e){return(t,n)=>t===r.nil?n:n===r.nil?t:r._`${L(t)} ${e} ${L(n)}`}function L(e){return e instanceof r.Name?e:r._`(${e})`}t.or=function(...e){return e.reduce(N)}},7791:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValueScope=t.ValueScopeName=t.Scope=t.varKinds=t.UsedValueState=void 0;const r=n(4667);class o extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}}var i;!function(e){e[e.Started=0]="Started",e[e.Completed=1]="Completed"}(i=t.UsedValueState||(t.UsedValueState={})),t.varKinds={const:new r.Name("const"),let:new r.Name("let"),var:new r.Name("var")};class a{constructor({prefixes:e,parent:t}={}){this._names={},this._prefixes=e,this._parent=t}toName(e){return e instanceof r.Name?e:this.name(e)}name(e){return new r.Name(this._newName(e))}_newName(e){return`${e}${(this._names[e]||this._nameGroup(e)).index++}`}_nameGroup(e){var t,n;if((null===(n=null===(t=this._parent)||void 0===t?void 0:t._prefixes)||void 0===n?void 0:n.has(e))||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}}t.Scope=a;class s extends r.Name{constructor(e,t){super(t),this.prefix=e}setValue(e,{property:t,itemIndex:n}){this.value=e,this.scopePath=r._`.${new r.Name(t)}[${n}]`}}t.ValueScopeName=s;const l=r._`\n`;t.ValueScope=class extends a{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?l:r.nil}}get(){return this._scope}name(e){return new s(e,this._newName(e))}value(e,t){var n;if(void 0===t.ref)throw new Error("CodeGen: ref must be passed in value");const r=this.toName(e),{prefix:o}=r,i=null!==(n=t.key)&&void 0!==n?n:t.ref;let a=this._values[o];if(a){const e=a.get(i);if(e)return e}else a=this._values[o]=new Map;a.set(i,r);const s=this._scope[o]||(this._scope[o]=[]),l=s.length;return s[l]=t.ref,r.setValue(t,{property:o,itemIndex:l}),r}getValue(e,t){const n=this._values[e];if(n)return n.get(t)}scopeRefs(e,t=this._values){return this._reduceValues(t,(t=>{if(void 0===t.scopePath)throw new Error(`CodeGen: name "${t}" has no value`);return r._`${e}${t.scopePath}`}))}scopeCode(e=this._values,t,n){return this._reduceValues(e,(e=>{if(void 0===e.value)throw new Error(`CodeGen: name "${e}" has no value`);return e.value.code}),t,n)}_reduceValues(e,n,a={},s){let l=r.nil;for(const c in e){const u=e[c];if(!u)continue;const p=a[c]=a[c]||new Map;u.forEach((e=>{if(p.has(e))return;p.set(e,i.Started);let a=n(e);if(a){const n=this.opts.es5?t.varKinds.var:t.varKinds.const;l=r._`${l}${n} ${e} = ${a};${this.opts._n}`}else{if(!(a=null==s?void 0:s(e)))throw new o(e);l=r._`${l}${a}${this.opts._n}`}p.set(e,i.Completed)}))}return l}}},1885:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendErrors=t.resetErrorsCount=t.reportExtraError=t.reportError=t.keyword$DataError=t.keywordError=void 0;const r=n(4475),o=n(6124),i=n(5018);function a(e,t){const n=e.const("err",t);e.if(r._`${i.default.vErrors} === null`,(()=>e.assign(i.default.vErrors,r._`[${n}]`)),r._`${i.default.vErrors}.push(${n})`),e.code(r._`${i.default.errors}++`)}function s(e,t){const{gen:n,validateName:o,schemaEnv:i}=e;i.$async?n.throw(r._`new ${e.ValidationError}(${t})`):(n.assign(r._`${o}.errors`,t),n.return(!1))}t.keywordError={message:({keyword:e})=>r.str`should pass "${e}" keyword validation`},t.keyword$DataError={message:({keyword:e,schemaType:t})=>t?r.str`"${e}" keyword must be ${t} ($data)`:r.str`"${e}" keyword is invalid ($data)`},t.reportError=function(e,n=t.keywordError,o,i){const{it:l}=e,{gen:u,compositeRule:p,allErrors:d}=l,f=c(e,n,o);(null!=i?i:p||d)?a(u,f):s(l,r._`[${f}]`)},t.reportExtraError=function(e,n=t.keywordError,r){const{it:o}=e,{gen:l,compositeRule:u,allErrors:p}=o;a(l,c(e,n,r)),u||p||s(o,i.default.vErrors)},t.resetErrorsCount=function(e,t){e.assign(i.default.errors,t),e.if(r._`${i.default.vErrors} !== null`,(()=>e.if(t,(()=>e.assign(r._`${i.default.vErrors}.length`,t)),(()=>e.assign(i.default.vErrors,null)))))},t.extendErrors=function({gen:e,keyword:t,schemaValue:n,data:o,errsCount:a,it:s}){if(void 0===a)throw new Error("ajv implementation error");const l=e.name("err");e.forRange("i",a,i.default.errors,(a=>{e.const(l,r._`${i.default.vErrors}[${a}]`),e.if(r._`${l}.instancePath === undefined`,(()=>e.assign(r._`${l}.instancePath`,r.strConcat(i.default.instancePath,s.errorPath)))),e.assign(r._`${l}.schemaPath`,r.str`${s.errSchemaPath}/${t}`),s.opts.verbose&&(e.assign(r._`${l}.schema`,n),e.assign(r._`${l}.data`,o))}))};const l={keyword:new r.Name("keyword"),schemaPath:new r.Name("schemaPath"),params:new r.Name("params"),propertyName:new r.Name("propertyName"),message:new r.Name("message"),schema:new r.Name("schema"),parentSchema:new r.Name("parentSchema")};function c(e,t,n){const{createErrors:o}=e.it;return!1===o?r._`{}`:function(e,t,n={}){const{gen:o,it:a}=e,s=[u(a,n),p(e,n)];return function(e,{params:t,message:n},o){const{keyword:a,data:s,schemaValue:c,it:u}=e,{opts:p,propertyName:d,topSchemaRef:f,schemaPath:h}=u;o.push([l.keyword,a],[l.params,"function"==typeof t?t(e):t||r._`{}`]),p.messages&&o.push([l.message,"function"==typeof n?n(e):n]),p.verbose&&o.push([l.schema,c],[l.parentSchema,r._`${f}${h}`],[i.default.data,s]),d&&o.push([l.propertyName,d])}(e,t,s),o.object(...s)}(e,t,n)}function u({errorPath:e},{instancePath:t}){const n=t?r.str`${e}${o.getErrorPath(t,o.Type.Str)}`:e;return[i.default.instancePath,r.strConcat(i.default.instancePath,n)]}function p({keyword:e,it:{errSchemaPath:t}},{schemaPath:n,parentSchema:i}){let a=i?t:r.str`${t}/${e}`;return n&&(a=r.str`${a}${o.getErrorPath(n,o.Type.Str)}`),[l.schemaPath,a]}},7805:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resolveSchema=t.getCompilingSchema=t.resolveRef=t.compileSchema=t.SchemaEnv=void 0;const r=n(4475),o=n(8451),i=n(5018),a=n(9826),s=n(6124),l=n(1321),c=n(540);class u{constructor(e){var t;let n;this.refs={},this.dynamicAnchors={},"object"==typeof e.schema&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=null!==(t=e.baseId)&&void 0!==t?t:a.normalizeId(null==n?void 0:n[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=null==n?void 0:n.$async,this.refs={}}}function p(e){const t=f.call(this,e);if(t)return t;const n=a.getFullPath(e.root.baseId),{es5:s,lines:c}=this.opts.code,{ownProperties:u}=this.opts,p=new r.CodeGen(this.scope,{es5:s,lines:c,ownProperties:u});let d;e.$async&&(d=p.scopeValue("Error",{ref:o.default,code:r._`require("ajv/dist/runtime/validation_error").default`}));const h=p.scopeName("validate");e.validateName=h;const m={gen:p,allErrors:this.opts.allErrors,data:i.default.data,parentData:i.default.parentData,parentDataProperty:i.default.parentDataProperty,dataNames:[i.default.data],dataPathArr:[r.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:p.scopeValue("schema",!0===this.opts.code.source?{ref:e.schema,code:r.stringify(e.schema)}:{ref:e.schema}),validateName:h,ValidationError:d,schema:e.schema,schemaEnv:e,rootId:n,baseId:e.baseId||n,schemaPath:r.nil,errSchemaPath:e.schemaPath||(this.opts.jtd?"":"#"),errorPath:r._`""`,opts:this.opts,self:this};let g;try{this._compilations.add(e),l.validateFunctionCode(m),p.optimize(this.opts.code.optimize);const t=p.toString();g=`const visitedNodesForRef = new WeakMap(); ${p.scopeRefs(i.default.scope)}return ${t}`,this.opts.code.process&&(g=this.opts.code.process(g,e));const n=new Function(`${i.default.self}`,`${i.default.scope}`,g)(this,this.scope.get());if(this.scope.value(h,{ref:n}),n.errors=null,n.schema=e.schema,n.schemaEnv=e,e.$async&&(n.$async=!0),!0===this.opts.code.source&&(n.source={validateName:h,validateCode:t,scopeValues:p._values}),this.opts.unevaluated){const{props:e,items:t}=m;n.evaluated={props:e instanceof r.Name?void 0:e,items:t instanceof r.Name?void 0:t,dynamicProps:e instanceof r.Name,dynamicItems:t instanceof r.Name},n.source&&(n.source.evaluated=r.stringify(n.evaluated))}return e.validate=n,e}catch(t){throw delete e.validate,delete e.validateName,g&&this.logger.error("Error compiling schema, function code:",g),t}finally{this._compilations.delete(e)}}function d(e){return a.inlineRef(e.schema,this.opts.inlineRefs)?e.schema:e.validate?e:p.call(this,e)}function f(e){for(const r of this._compilations)if(n=e,(t=r).schema===n.schema&&t.root===n.root&&t.baseId===n.baseId)return r;var t,n}function h(e,t){let n;for(;"string"==typeof(n=this.refs[t]);)t=n;return n||this.schemas[t]||m.call(this,e,t)}function m(e,t){const n=c.parse(t),r=a._getFullPath(n);let o=a.getFullPath(e.baseId);if(Object.keys(e.schema).length>0&&r===o)return y.call(this,n,e);const i=a.normalizeId(r),s=this.refs[i]||this.schemas[i];if("string"==typeof s){const t=m.call(this,e,s);if("object"!=typeof(null==t?void 0:t.schema))return;return y.call(this,n,t)}if("object"==typeof(null==s?void 0:s.schema)){if(s.validate||p.call(this,s),i===a.normalizeId(t)){const{schema:t}=s,{schemaId:n}=this.opts,r=t[n];return r&&(o=a.resolveUrl(o,r)),new u({schema:t,schemaId:n,root:e,baseId:o})}return y.call(this,n,s)}}t.SchemaEnv=u,t.compileSchema=p,t.resolveRef=function(e,t,n){var r;const o=a.resolveUrl(t,n),i=e.refs[o];if(i)return i;let s=h.call(this,e,o);if(void 0===s){const n=null===(r=e.localRefs)||void 0===r?void 0:r[o],{schemaId:i}=this.opts;n&&(s=new u({schema:n,schemaId:i,root:e,baseId:t}))}if(void 0===s&&this.opts.loadSchemaSync){const r=this.opts.loadSchemaSync(t,n,o);!r||this.refs[o]||this.schemas[o]||(this.addSchema(r,o,void 0),s=h.call(this,e,o))}return void 0!==s?e.refs[o]=d.call(this,s):void 0},t.getCompilingSchema=f,t.resolveSchema=m;const g=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function y(e,{baseId:t,schema:n,root:r}){var o;if("/"!==(null===(o=e.fragment)||void 0===o?void 0:o[0]))return;for(const r of e.fragment.slice(1).split("/")){if("boolean"==typeof n)return;if(void 0===(n=n[s.unescapeFragment(r)]))return;const e="object"==typeof n&&n[this.opts.schemaId];!g.has(r)&&e&&(t=a.resolveUrl(t,e))}let i;if("boolean"!=typeof n&&n.$ref&&!s.schemaHasRulesButRef(n,this.RULES)){const e=a.resolveUrl(t,n.$ref);i=m.call(this,r,e)}const{schemaId:l}=this.opts;return i=i||new u({schema:n,schemaId:l,root:r,baseId:t}),i.schema!==i.root.schema?i:void 0}},5018:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o={data:new r.Name("data"),valCxt:new r.Name("valCxt"),instancePath:new r.Name("instancePath"),parentData:new r.Name("parentData"),parentDataProperty:new r.Name("parentDataProperty"),rootData:new r.Name("rootData"),dynamicAnchors:new r.Name("dynamicAnchors"),vErrors:new r.Name("vErrors"),errors:new r.Name("errors"),this:new r.Name("this"),self:new r.Name("self"),scope:new r.Name("scope"),json:new r.Name("json"),jsonPos:new r.Name("jsonPos"),jsonLen:new r.Name("jsonLen"),jsonPart:new r.Name("jsonPart")};t.default=o},4143:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(9826);class o extends Error{constructor(e,t,n){super(n||`can't resolve reference ${t} from id ${e}`),this.missingRef=r.resolveUrl(e,t),this.missingSchema=r.normalizeId(r.getFullPath(this.missingRef))}}t.default=o},9826:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSchemaRefs=t.resolveUrl=t.normalizeId=t._getFullPath=t.getFullPath=t.inlineRef=void 0;const r=n(6124),o=n(4063),i=n(4029),a=n(540),s=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);t.inlineRef=function(e,t=!0){return"boolean"==typeof e||(!0===t?!c(e):!!t&&u(e)<=t)};const l=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function c(e){for(const t in e){if(l.has(t))return!0;const n=e[t];if(Array.isArray(n)&&n.some(c))return!0;if("object"==typeof n&&c(n))return!0}return!1}function u(e){let t=0;for(const n in e){if("$ref"===n)return 1/0;if(t++,!s.has(n)&&("object"==typeof e[n]&&r.eachItem(e[n],(e=>t+=u(e))),t===1/0))return 1/0}return t}function p(e="",t){return!1!==t&&(e=h(e)),d(a.parse(e))}function d(e){return a.serialize(e).split("#")[0]+"#"}t.getFullPath=p,t._getFullPath=d;const f=/#\/?$/;function h(e){return e?e.replace(f,""):""}t.normalizeId=h,t.resolveUrl=function(e,t){return t=h(t),a.resolve(e,t)};const m=/^[a-z_][-a-z0-9._]*$/i;t.getSchemaRefs=function(e){if("boolean"==typeof e)return{};const{schemaId:t}=this.opts,n=h(e[t]),r={"":n},s=p(n,!1),l={},c=new Set;return i(e,{allKeys:!0},((e,n,o,i)=>{if(void 0===i)return;const p=s+n;let f=r[i];function g(t){if(t=h(f?a.resolve(f,t):t),c.has(t))throw d(t);c.add(t);let n=this.refs[t];return"string"==typeof n&&(n=this.refs[n]),"object"==typeof n?u(e,n.schema,t):t!==h(p)&&("#"===t[0]?(u(e,l[t],t),l[t]=e):this.refs[t]=p),t}function y(e){if("string"==typeof e){if(!m.test(e))throw new Error(`invalid anchor "${e}"`);g.call(this,`#${e}`)}}"string"==typeof e[t]&&(f=g.call(this,e[t])),y.call(this,e.$anchor),y.call(this,e.$dynamicAnchor),r[n]=f})),l;function u(e,t,n){if(void 0!==t&&!o(e,t))throw d(n)}function d(e){return new Error(`reference "${e}" resolves to more than one schema`)}}},3664:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getRules=t.isJSONType=void 0;const n=new Set(["string","number","integer","boolean","null","object","array"]);t.isJSONType=function(e){return"string"==typeof e&&n.has(e)},t.getRules=function(){const e={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...e,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},e.number,e.string,e.array,e.object],post:{rules:[]},all:{},keywords:{}}}},6124:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkStrictMode=t.getErrorPath=t.Type=t.useFunc=t.setEvaluated=t.evaluatedPropsToName=t.mergeEvaluated=t.eachItem=t.unescapeJsonPointer=t.escapeJsonPointer=t.escapeFragment=t.unescapeFragment=t.schemaRefOrVal=t.schemaHasRulesButRef=t.schemaHasRules=t.checkUnknownRules=t.alwaysValidSchema=t.toHash=void 0;const r=n(4475),o=n(4667);function i(e,t=e.schema){const{opts:n,self:r}=e;if(!n.strictSchema)return;if("boolean"==typeof t)return;const o=r.RULES.keywords;for(const n in t)o[n]||h(e,`unknown keyword: "${n}"`)}function a(e,t){if("boolean"==typeof e)return!e;for(const n in e)if(t[n])return!0;return!1}function s(e){return"number"==typeof e?`${e}`:e.replace(/~/g,"~0").replace(/\//g,"~1")}function l(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function c({mergeNames:e,mergeToName:t,mergeValues:n,resultToName:o}){return(i,a,s,l)=>{const c=void 0===s?a:s instanceof r.Name?(a instanceof r.Name?e(i,a,s):t(i,a,s),s):a instanceof r.Name?(t(i,s,a),a):n(a,s);return l!==r.Name||c instanceof r.Name?c:o(i,c)}}function u(e,t){if(!0===t)return e.var("props",!0);const n=e.var("props",r._`{}`);return void 0!==t&&p(e,n,t),n}function p(e,t,n){Object.keys(n).forEach((n=>e.assign(r._`${t}${r.getProperty(n)}`,!0)))}t.toHash=function(e){const t={};for(const n of e)t[n]=!0;return t},t.alwaysValidSchema=function(e,t){return"boolean"==typeof t?t:0===Object.keys(t).length||(i(e,t),!a(t,e.self.RULES.all))},t.checkUnknownRules=i,t.schemaHasRules=a,t.schemaHasRulesButRef=function(e,t){if("boolean"==typeof e)return!e;for(const n in e)if("$ref"!==n&&t.all[n])return!0;return!1},t.schemaRefOrVal=function({topSchemaRef:e,schemaPath:t},n,o,i){if(!i){if("number"==typeof n||"boolean"==typeof n)return n;if("string"==typeof n)return r._`${n}`}return r._`${e}${t}${r.getProperty(o)}`},t.unescapeFragment=function(e){return l(decodeURIComponent(e))},t.escapeFragment=function(e){return encodeURIComponent(s(e))},t.escapeJsonPointer=s,t.unescapeJsonPointer=l,t.eachItem=function(e,t){if(Array.isArray(e))for(const n of e)t(n);else t(e)},t.mergeEvaluated={props:c({mergeNames:(e,t,n)=>e.if(r._`${n} !== true && ${t} !== undefined`,(()=>{e.if(r._`${t} === true`,(()=>e.assign(n,!0)),(()=>e.assign(n,r._`${n} || {}`).code(r._`Object.assign(${n}, ${t})`)))})),mergeToName:(e,t,n)=>e.if(r._`${n} !== true`,(()=>{!0===t?e.assign(n,!0):(e.assign(n,r._`${n} || {}`),p(e,n,t))})),mergeValues:(e,t)=>!0===e||{...e,...t},resultToName:u}),items:c({mergeNames:(e,t,n)=>e.if(r._`${n} !== true && ${t} !== undefined`,(()=>e.assign(n,r._`${t} === true ? true : ${n} > ${t} ? ${n} : ${t}`))),mergeToName:(e,t,n)=>e.if(r._`${n} !== true`,(()=>e.assign(n,!0===t||r._`${n} > ${t} ? ${n} : ${t}`))),mergeValues:(e,t)=>!0===e||Math.max(e,t),resultToName:(e,t)=>e.var("items",t)})},t.evaluatedPropsToName=u,t.setEvaluated=p;const d={};var f;function h(e,t,n=e.opts.strictSchema){if(n){if(t=`strict mode: ${t}`,!0===n)throw new Error(t);e.self.logger.warn(t)}}t.useFunc=function(e,t){return e.scopeValue("func",{ref:t,code:d[t.code]||(d[t.code]=new o._Code(t.code))})},function(e){e[e.Num=0]="Num",e[e.Str=1]="Str"}(f=t.Type||(t.Type={})),t.getErrorPath=function(e,t,n){if(e instanceof r.Name){const o=t===f.Num;return n?o?r._`"[" + ${e} + "]"`:r._`"['" + ${e} + "']"`:o?r._`"/" + ${e}`:r._`"/" + ${e}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return n?r.getProperty(e).toString():"/"+s(e)},t.checkStrictMode=h},4566:function(e,t){"use strict";function n(e,t){return t.rules.some((t=>r(e,t)))}function r(e,t){var n;return void 0!==e[t.keyword]||(null===(n=t.definition.implements)||void 0===n?void 0:n.some((t=>void 0!==e[t])))}Object.defineProperty(t,"__esModule",{value:!0}),t.shouldUseRule=t.shouldUseGroup=t.schemaHasRulesForType=void 0,t.schemaHasRulesForType=function({schema:e,self:t},r){const o=t.RULES.types[r];return o&&!0!==o&&n(e,o)},t.shouldUseGroup=n,t.shouldUseRule=r},7627:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.boolOrEmptySchema=t.topBoolOrEmptySchema=void 0;const r=n(1885),o=n(4475),i=n(5018),a={message:"boolean schema is false"};function s(e,t){const{gen:n,data:o}=e,i={gen:n,keyword:"false schema",data:o,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:e};r.reportError(i,a,void 0,t)}t.topBoolOrEmptySchema=function(e){const{gen:t,schema:n,validateName:r}=e;!1===n?s(e,!1):"object"==typeof n&&!0===n.$async?t.return(i.default.data):(t.assign(o._`${r}.errors`,null),t.return(!0))},t.boolOrEmptySchema=function(e,t){const{gen:n,schema:r}=e;!1===r?(n.var(t,!1),s(e)):n.var(t,!0)}},7927:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportTypeError=t.checkDataTypes=t.checkDataType=t.coerceAndCheckDataType=t.getJSONTypes=t.getSchemaTypes=t.DataType=void 0;const r=n(3664),o=n(4566),i=n(1885),a=n(4475),s=n(6124);var l;function c(e){const t=Array.isArray(e)?e:e?[e]:[];if(t.every(r.isJSONType))return t;throw new Error("type must be JSONType or JSONType[]: "+t.join(","))}!function(e){e[e.Correct=0]="Correct",e[e.Wrong=1]="Wrong"}(l=t.DataType||(t.DataType={})),t.getSchemaTypes=function(e){const t=c(e.type);if(t.includes("null")){if(!1===e.nullable)throw new Error("type: null contradicts nullable: false")}else{if(!t.length&&void 0!==e.nullable)throw new Error('"nullable" cannot be used without "type"');!0===e.nullable&&t.push("null")}return t},t.getJSONTypes=c,t.coerceAndCheckDataType=function(e,t){const{gen:n,data:r,opts:i}=e,s=function(e,t){return t?e.filter((e=>u.has(e)||"array"===t&&"array"===e)):[]}(t,i.coerceTypes),c=t.length>0&&!(0===s.length&&1===t.length&&o.schemaHasRulesForType(e,t[0]));if(c){const o=d(t,r,i.strictNumbers,l.Wrong);n.if(o,(()=>{s.length?function(e,t,n){const{gen:r,data:o,opts:i}=e,s=r.let("dataType",a._`typeof ${o}`),l=r.let("coerced",a._`undefined`);"array"===i.coerceTypes&&r.if(a._`${s} == 'object' && Array.isArray(${o}) && ${o}.length == 1`,(()=>r.assign(o,a._`${o}[0]`).assign(s,a._`typeof ${o}`).if(d(t,o,i.strictNumbers),(()=>r.assign(l,o))))),r.if(a._`${l} !== undefined`);for(const e of n)(u.has(e)||"array"===e&&"array"===i.coerceTypes)&&c(e);function c(e){switch(e){case"string":return void r.elseIf(a._`${s} == "number" || ${s} == "boolean"`).assign(l,a._`"" + ${o}`).elseIf(a._`${o} === null`).assign(l,a._`""`);case"number":return void r.elseIf(a._`${s} == "boolean" || ${o} === null || (${s} == "string" && ${o} && ${o} == +${o})`).assign(l,a._`+${o}`);case"integer":return void r.elseIf(a._`${s} === "boolean" || ${o} === null || (${s} === "string" && ${o} && ${o} == +${o} && !(${o} % 1))`).assign(l,a._`+${o}`);case"boolean":return void r.elseIf(a._`${o} === "false" || ${o} === 0 || ${o} === null`).assign(l,!1).elseIf(a._`${o} === "true" || ${o} === 1`).assign(l,!0);case"null":return r.elseIf(a._`${o} === "" || ${o} === 0 || ${o} === false`),void r.assign(l,null);case"array":r.elseIf(a._`${s} === "string" || ${s} === "number" || ${s} === "boolean" || ${o} === null`).assign(l,a._`[${o}]`)}}r.else(),h(e),r.endIf(),r.if(a._`${l} !== undefined`,(()=>{r.assign(o,l),function({gen:e,parentData:t,parentDataProperty:n},r){e.if(a._`${t} !== undefined`,(()=>e.assign(a._`${t}[${n}]`,r)))}(e,l)}))}(e,t,s):h(e)}))}return c};const u=new Set(["string","number","integer","boolean","null"]);function p(e,t,n,r=l.Correct){const o=r===l.Correct?a.operators.EQ:a.operators.NEQ;let i;switch(e){case"null":return a._`${t} ${o} null`;case"array":i=a._`Array.isArray(${t})`;break;case"object":i=a._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":i=s(a._`!(${t} % 1) && !isNaN(${t})`);break;case"number":i=s();break;default:return a._`typeof ${t} ${o} ${e}`}return r===l.Correct?i:a.not(i);function s(e=a.nil){return a.and(a._`typeof ${t} == "number"`,e,n?a._`isFinite(${t})`:a.nil)}}function d(e,t,n,r){if(1===e.length)return p(e[0],t,n,r);let o;const i=s.toHash(e);if(i.array&&i.object){const e=a._`typeof ${t} != "object"`;o=i.null?e:a._`!${t} || ${e}`,delete i.null,delete i.array,delete i.object}else o=a.nil;i.number&&delete i.integer;for(const e in i)o=a.and(o,p(e,t,n,r));return o}t.checkDataType=p,t.checkDataTypes=d;const f={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>"string"==typeof e?a._`{type: ${e}}`:a._`{type: ${t}}`};function h(e){const t=function(e){const{gen:t,data:n,schema:r}=e,o=s.schemaRefOrVal(e,r,"type");return{gen:t,keyword:"type",data:n,schema:r.type,schemaCode:o,schemaValue:o,parentSchema:r,params:{},it:e}}(e);i.reportError(t,f)}t.reportTypeError=h},2537:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;const r=n(4475),o=n(6124);function i(e,t,n){const{gen:i,compositeRule:a,data:s,opts:l}=e;if(void 0===n)return;const c=r._`${s}${r.getProperty(t)}`;if(a)return void o.checkStrictMode(e,`default is ignored for: ${c}`);let u=r._`${c} === undefined`;"empty"===l.useDefaults&&(u=r._`${u} || ${c} === null || ${c} === ""`),i.if(u,r._`${c} = ${r.stringify(n)}`)}t.assignDefaults=function(e,t){const{properties:n,items:r}=e.schema;if("object"===t&&n)for(const t in n)i(e,t,n[t].default);else"array"===t&&Array.isArray(r)&&r.forEach(((t,n)=>i(e,n,t.default)))}},1321:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;const r=n(7627),o=n(7927),i=n(4566),a=n(7927),s=n(2537),l=n(6488),c=n(4688),u=n(4475),p=n(5018),d=n(9826),f=n(6124),h=n(1885);function m({gen:e,validateName:t,schema:n,schemaEnv:r,opts:o},i){o.code.es5?e.func(t,u._`${p.default.data}, ${p.default.valCxt}`,r.$async,(()=>{e.code(u._`"use strict"; ${g(n,o)}`),function(e,t){e.if(p.default.valCxt,(()=>{e.var(p.default.instancePath,u._`${p.default.valCxt}.${p.default.instancePath}`),e.var(p.default.parentData,u._`${p.default.valCxt}.${p.default.parentData}`),e.var(p.default.parentDataProperty,u._`${p.default.valCxt}.${p.default.parentDataProperty}`),e.var(p.default.rootData,u._`${p.default.valCxt}.${p.default.rootData}`),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`${p.default.valCxt}.${p.default.dynamicAnchors}`)}),(()=>{e.var(p.default.instancePath,u._`""`),e.var(p.default.parentData,u._`undefined`),e.var(p.default.parentDataProperty,u._`undefined`),e.var(p.default.rootData,p.default.data),t.dynamicRef&&e.var(p.default.dynamicAnchors,u._`{}`)}))}(e,o),e.code(i)})):e.func(t,u._`${p.default.data}, ${function(e){return u._`{${p.default.instancePath}="", ${p.default.parentData}, ${p.default.parentDataProperty}, ${p.default.rootData}=${p.default.data}${e.dynamicRef?u._`, ${p.default.dynamicAnchors}={}`:u.nil}}={}`}(o)}`,r.$async,(()=>e.code(g(n,o)).code(i)))}function g(e,t){const n="object"==typeof e&&e[t.schemaId];return n&&(t.code.source||t.code.process)?u._`/*# sourceURL=${n} */`:u.nil}function y({schema:e,self:t}){if("boolean"==typeof e)return!e;for(const n in e)if(t.RULES.all[n])return!0;return!1}function v(e){return"boolean"!=typeof e.schema}function b(e){f.checkUnknownRules(e),function(e){const{schema:t,errSchemaPath:n,opts:r,self:o}=e;t.$ref&&r.ignoreKeywordsWithRef&&f.schemaHasRulesButRef(t,o.RULES)&&o.logger.warn(`$ref: keywords ignored in schema at path "${n}"`)}(e)}function w(e,t){if(e.opts.jtd)return k(e,[],!1,t);const n=o.getSchemaTypes(e.schema);k(e,n,!o.coerceAndCheckDataType(e,n),t)}function x({gen:e,schemaEnv:t,schema:n,errSchemaPath:r,opts:o}){const i=n.$comment;if(!0===o.$comment)e.code(u._`${p.default.self}.logger.log(${i})`);else if("function"==typeof o.$comment){const n=u.str`${r}/$comment`,o=e.scopeValue("root",{ref:t.root});e.code(u._`${p.default.self}.opts.$comment(${i}, ${n}, ${o}.schema)`)}}function k(e,t,n,r){const{gen:o,schema:s,data:l,allErrors:c,opts:d,self:h}=e,{RULES:m}=h;function g(f){i.shouldUseGroup(s,f)&&(f.type?(o.if(a.checkDataType(f.type,l,d.strictNumbers)),_(e,f),1===t.length&&t[0]===f.type&&n&&(o.else(),a.reportTypeError(e)),o.endIf()):_(e,f),c||o.if(u._`${p.default.errors} === ${r||0}`))}!s.$ref||!d.ignoreKeywordsWithRef&&f.schemaHasRulesButRef(s,m)?(d.jtd||function(e,t){!e.schemaEnv.meta&&e.opts.strictTypes&&(function(e,t){t.length&&(e.dataTypes.length?(t.forEach((t=>{O(e.dataTypes,t)||S(e,`type "${t}" not allowed by context "${e.dataTypes.join(",")}"`)})),e.dataTypes=e.dataTypes.filter((e=>O(t,e)))):e.dataTypes=t)}(e,t),e.opts.allowUnionTypes||function(e,t){t.length>1&&(2!==t.length||!t.includes("null"))&&S(e,"use allowUnionTypes to allow union type keyword")}(e,t),function(e,t){const n=e.self.RULES.all;for(const r in n){const o=n[r];if("object"==typeof o&&i.shouldUseRule(e.schema,o)){const{type:n}=o.definition;n.length&&!n.some((e=>{return r=e,(n=t).includes(r)||"number"===r&&n.includes("integer");var n,r}))&&S(e,`missing type "${n.join(",")}" for keyword "${r}"`)}}}(e,e.dataTypes))}(e,t),o.block((()=>{for(const e of m.rules)g(e);g(m.post)}))):o.block((()=>P(e,"$ref",m.all.$ref.definition)))}function _(e,t){const{gen:n,schema:r,opts:{useDefaults:o}}=e;o&&s.assignDefaults(e,t.type),n.block((()=>{for(const n of t.rules)i.shouldUseRule(r,n)&&P(e,n.keyword,n.definition,t.type)}))}function O(e,t){return e.includes(t)||"integer"===t&&e.includes("number")}function S(e,t){t+=` at "${e.schemaEnv.baseId+e.errSchemaPath}" (strictTypes)`,f.checkStrictMode(e,t,e.opts.strictTypes)}t.validateFunctionCode=function(e){v(e)&&(b(e),y(e))?function(e){const{schema:t,opts:n,gen:r}=e;m(e,(()=>{n.$comment&&t.$comment&&x(e),function(e){const{schema:t,opts:n}=e;void 0!==t.default&&n.useDefaults&&n.strictSchema&&f.checkStrictMode(e,"default is ignored in the schema root")}(e),r.let(p.default.vErrors,null),r.let(p.default.errors,0),n.unevaluated&&function(e){const{gen:t,validateName:n}=e;e.evaluated=t.const("evaluated",u._`${n}.evaluated`),t.if(u._`${e.evaluated}.dynamicProps`,(()=>t.assign(u._`${e.evaluated}.props`,u._`undefined`))),t.if(u._`${e.evaluated}.dynamicItems`,(()=>t.assign(u._`${e.evaluated}.items`,u._`undefined`)))}(e),w(e),function(e){const{gen:t,schemaEnv:n,validateName:r,ValidationError:o,opts:i}=e;n.$async?t.if(u._`${p.default.errors} === 0`,(()=>t.return(p.default.data)),(()=>t.throw(u._`new ${o}(${p.default.vErrors})`))):(t.assign(u._`${r}.errors`,p.default.vErrors),i.unevaluated&&function({gen:e,evaluated:t,props:n,items:r}){n instanceof u.Name&&e.assign(u._`${t}.props`,n),r instanceof u.Name&&e.assign(u._`${t}.items`,r)}(e),t.return(u._`${p.default.errors} === 0`))}(e)}))}(e):m(e,(()=>r.topBoolOrEmptySchema(e)))};class E{constructor(e,t,n){if(l.validateKeywordUsage(e,t,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=t.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=f.schemaRefOrVal(e,this.schema,n,this.$data),this.schemaType=t.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=t,this.$data)this.schemaCode=e.gen.const("vSchema",C(this.$data,e));else if(this.schemaCode=this.schemaValue,!l.validSchemaType(this.schema,t.schemaType,t.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(t.schemaType)}`);("code"in t?t.trackErrors:!1!==t.errors)&&(this.errsCount=e.gen.const("_errs",p.default.errors))}result(e,t,n){this.gen.if(u.not(e)),n?n():this.error(),t?(this.gen.else(),t(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,t){this.result(e,void 0,t)}fail(e){if(void 0===e)return this.error(),void(this.allErrors||this.gen.if(!1));this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);const{schemaCode:t}=this;this.fail(u._`${t} !== undefined && (${u.or(this.invalid$data(),e)})`)}error(e,t,n){if(t)return this.setParams(t),this._error(e,n),void this.setParams({});this._error(e,n)}_error(e,t){(e?h.reportExtraError:h.reportError)(this,this.def.error,t)}$dataError(){h.reportError(this,this.def.$dataError||h.keyword$DataError)}reset(){if(void 0===this.errsCount)throw new Error('add "trackErrors" to keyword definition');h.resetErrorsCount(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,t){t?Object.assign(this.params,e):this.params=e}block$data(e,t,n=u.nil){this.gen.block((()=>{this.check$data(e,n),t()}))}check$data(e=u.nil,t=u.nil){if(!this.$data)return;const{gen:n,schemaCode:r,schemaType:o,def:i}=this;n.if(u.or(u._`${r} === undefined`,t)),e!==u.nil&&n.assign(e,!0),(o.length||i.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==u.nil&&n.assign(e,!1)),n.else()}invalid$data(){const{gen:e,schemaCode:t,schemaType:n,def:r,it:o}=this;return u.or(function(){if(n.length){if(!(t instanceof u.Name))throw new Error("ajv implementation error");const e=Array.isArray(n)?n:[n];return u._`${a.checkDataTypes(e,t,o.opts.strictNumbers,a.DataType.Wrong)}`}return u.nil}(),function(){if(r.validateSchema){const n=e.scopeValue("validate$data",{ref:r.validateSchema});return u._`!${n}(${t})`}return u.nil}())}subschema(e,t){const n=c.getSubschema(this.it,e);c.extendSubschemaData(n,this.it,e),c.extendSubschemaMode(n,e);const o={...this.it,...n,items:void 0,props:void 0};return function(e,t){v(e)&&(b(e),y(e))?function(e,t){const{schema:n,gen:r,opts:o}=e;o.$comment&&n.$comment&&x(e),function(e){const t=e.schema[e.opts.schemaId];t&&(e.baseId=d.resolveUrl(e.baseId,t))}(e),function(e){if(e.schema.$async&&!e.schemaEnv.$async)throw new Error("async schema in sync schema")}(e);const i=r.const("_errs",p.default.errors);w(e,i),r.var(t,u._`${i} === ${p.default.errors}`)}(e,t):r.boolOrEmptySchema(e,t)}(o,t),o}mergeEvaluated(e,t){const{it:n,gen:r}=this;n.opts.unevaluated&&(!0!==n.props&&void 0!==e.props&&(n.props=f.mergeEvaluated.props(r,e.props,n.props,t)),!0!==n.items&&void 0!==e.items&&(n.items=f.mergeEvaluated.items(r,e.items,n.items,t)))}mergeValidEvaluated(e,t){const{it:n,gen:r}=this;if(n.opts.unevaluated&&(!0!==n.props||!0!==n.items))return r.if(t,(()=>this.mergeEvaluated(e,u.Name))),!0}}function P(e,t,n,r){const o=new E(e,n,t);"code"in n?n.code(o,r):o.$data&&n.validate?l.funcKeywordCode(o,n):"macro"in n?l.macroKeywordCode(o,n):(n.compile||n.validate)&&l.funcKeywordCode(o,n)}t.KeywordCxt=E;const A=/^\/(?:[^~]|~0|~1)*$/,$=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function C(e,{dataLevel:t,dataNames:n,dataPathArr:r}){let o,i;if(""===e)return p.default.rootData;if("/"===e[0]){if(!A.test(e))throw new Error(`Invalid JSON-pointer: ${e}`);o=e,i=p.default.rootData}else{const a=$.exec(e);if(!a)throw new Error(`Invalid JSON-pointer: ${e}`);const s=+a[1];if(o=a[2],"#"===o){if(s>=t)throw new Error(l("property/index",s));return r[t-s]}if(s>t)throw new Error(l("data",s));if(i=n[t-s],!o)return i}let a=i;const s=o.split("/");for(const e of s)e&&(i=u._`${i}${u.getProperty(f.unescapeJsonPointer(e))}`,a=u._`${a} && ${i}`);return a;function l(e,n){return`Cannot access ${e} ${n} levels up, current level is ${t}`}}t.getData=C},6488:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateKeywordUsage=t.validSchemaType=t.funcKeywordCode=t.macroKeywordCode=void 0;const r=n(4475),o=n(5018),i=n(8619),a=n(1885);function s(e){const{gen:t,data:n,it:o}=e;t.if(o.parentData,(()=>t.assign(n,r._`${o.parentData}[${o.parentDataProperty}]`)))}function l(e,t,n){if(void 0===n)throw new Error(`keyword "${t}" failed to compile`);return e.scopeValue("keyword","function"==typeof n?{ref:n}:{ref:n,code:r.stringify(n)})}t.macroKeywordCode=function(e,t){const{gen:n,keyword:o,schema:i,parentSchema:a,it:s}=e,c=t.macro.call(s.self,i,a,s),u=l(n,o,c);!1!==s.opts.validateSchema&&s.self.validateSchema(c,!0);const p=n.name("valid");e.subschema({schema:c,schemaPath:r.nil,errSchemaPath:`${s.errSchemaPath}/${o}`,topSchemaRef:u,compositeRule:!0},p),e.pass(p,(()=>e.error(!0)))},t.funcKeywordCode=function(e,t){var n;const{gen:c,keyword:u,schema:p,parentSchema:d,$data:f,it:h}=e;!function({schemaEnv:e},t){if(t.async&&!e.$async)throw new Error("async keyword in sync schema")}(h,t);const m=!f&&t.compile?t.compile.call(h.self,p,d,h):t.validate,g=l(c,u,m),y=c.let("valid");function v(n=(t.async?r._`await `:r.nil)){const a=h.opts.passContext?o.default.this:o.default.self,s=!("compile"in t&&!f||!1===t.schema);c.assign(y,r._`${n}${i.callValidateCode(e,g,a,s)}`,t.modifying)}function b(e){var n;c.if(r.not(null!==(n=t.valid)&&void 0!==n?n:y),e)}e.block$data(y,(function(){if(!1===t.errors)v(),t.modifying&&s(e),b((()=>e.error()));else{const n=t.async?function(){const e=c.let("ruleErrs",null);return c.try((()=>v(r._`await `)),(t=>c.assign(y,!1).if(r._`${t} instanceof ${h.ValidationError}`,(()=>c.assign(e,r._`${t}.errors`)),(()=>c.throw(t))))),e}():function(){const e=r._`${g}.errors`;return c.assign(e,null),v(r.nil),e}();t.modifying&&s(e),b((()=>function(e,t){const{gen:n}=e;n.if(r._`Array.isArray(${t})`,(()=>{n.assign(o.default.vErrors,r._`${o.default.vErrors} === null ? ${t} : ${o.default.vErrors}.concat(${t})`).assign(o.default.errors,r._`${o.default.vErrors}.length`),a.extendErrors(e)}),(()=>e.error()))}(e,n)))}})),e.ok(null!==(n=t.valid)&&void 0!==n?n:y)},t.validSchemaType=function(e,t,n=!1){return!t.length||t.some((t=>"array"===t?Array.isArray(e):"object"===t?e&&"object"==typeof e&&!Array.isArray(e):typeof e==t||n&&void 0===e))},t.validateKeywordUsage=function({schema:e,opts:t,self:n,errSchemaPath:r},o,i){if(Array.isArray(o.keyword)?!o.keyword.includes(i):o.keyword!==i)throw new Error("ajv implementation error");const a=o.dependencies;if(null==a?void 0:a.some((t=>!Object.prototype.hasOwnProperty.call(e,t))))throw new Error(`parent schema must have dependencies of ${i}: ${a.join(",")}`);if(o.validateSchema&&!o.validateSchema(e[i])){const e=`keyword "${i}" value is invalid at path "${r}": `+n.errorsText(o.validateSchema.errors);if("log"!==t.validateSchema)throw new Error(e);n.logger.error(e)}}},4688:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.extendSubschemaMode=t.extendSubschemaData=t.getSubschema=void 0;const r=n(4475),o=n(6124);t.getSubschema=function(e,{keyword:t,schemaProp:n,schema:i,schemaPath:a,errSchemaPath:s,topSchemaRef:l}){if(void 0!==t&&void 0!==i)throw new Error('both "keyword" and "schema" passed, only one allowed');if(void 0!==t){const i=e.schema[t];return void 0===n?{schema:i,schemaPath:r._`${e.schemaPath}${r.getProperty(t)}`,errSchemaPath:`${e.errSchemaPath}/${t}`}:{schema:i[n],schemaPath:r._`${e.schemaPath}${r.getProperty(t)}${r.getProperty(n)}`,errSchemaPath:`${e.errSchemaPath}/${t}/${o.escapeFragment(n)}`}}if(void 0!==i){if(void 0===a||void 0===s||void 0===l)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:i,schemaPath:a,topSchemaRef:l,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')},t.extendSubschemaData=function(e,t,{dataProp:n,dataPropType:i,data:a,dataTypes:s,propertyName:l}){if(void 0!==a&&void 0!==n)throw new Error('both "data" and "dataProp" passed, only one allowed');const{gen:c}=t;if(void 0!==n){const{errorPath:a,dataPathArr:s,opts:l}=t;u(c.let("data",r._`${t.data}${r.getProperty(n)}`,!0)),e.errorPath=r.str`${a}${o.getErrorPath(n,i,l.jsPropertySyntax)}`,e.parentDataProperty=r._`${n}`,e.dataPathArr=[...s,e.parentDataProperty]}function u(n){e.data=n,e.dataLevel=t.dataLevel+1,e.dataTypes=[],t.definedProperties=new Set,e.parentData=t.data,e.dataNames=[...t.dataNames,n]}void 0!==a&&(u(a instanceof r.Name?a:c.let("data",a,!0)),void 0!==l&&(e.propertyName=l)),s&&(e.dataTypes=s)},t.extendSubschemaMode=function(e,{jtdDiscriminator:t,jtdMetadata:n,compositeRule:r,createErrors:o,allErrors:i}){void 0!==r&&(e.compositeRule=r),void 0!==o&&(e.createErrors=o),void 0!==i&&(e.allErrors=i),e.jtdDiscriminator=t,e.jtdMetadata=n}},3325:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodeGen=t.Name=t.nil=t.stringify=t.str=t._=t.KeywordCxt=void 0;var r=n(1321);Object.defineProperty(t,"KeywordCxt",{enumerable:!0,get:function(){return r.KeywordCxt}});var o=n(4475);Object.defineProperty(t,"_",{enumerable:!0,get:function(){return o._}}),Object.defineProperty(t,"str",{enumerable:!0,get:function(){return o.str}}),Object.defineProperty(t,"stringify",{enumerable:!0,get:function(){return o.stringify}}),Object.defineProperty(t,"nil",{enumerable:!0,get:function(){return o.nil}}),Object.defineProperty(t,"Name",{enumerable:!0,get:function(){return o.Name}}),Object.defineProperty(t,"CodeGen",{enumerable:!0,get:function(){return o.CodeGen}});const i=n(8451),a=n(4143),s=n(3664),l=n(7805),c=n(4475),u=n(9826),p=n(7927),d=n(6124),f=n(425),h=["removeAdditional","useDefaults","coerceTypes"],m=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),g={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},y={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'};function v(e){var t,n,r,o,i,a,s,l,c,u,p,d,f,h,m,g,y,v,b,w,x,k;const _=e.strict,O=null===(t=e.code)||void 0===t?void 0:t.optimize,S=!0===O||void 0===O?1:O||0;return{strictSchema:null===(r=null!==(n=e.strictSchema)&&void 0!==n?n:_)||void 0===r||r,strictNumbers:null===(i=null!==(o=e.strictNumbers)&&void 0!==o?o:_)||void 0===i||i,strictTypes:null!==(s=null!==(a=e.strictTypes)&&void 0!==a?a:_)&&void 0!==s?s:"log",strictTuples:null!==(c=null!==(l=e.strictTuples)&&void 0!==l?l:_)&&void 0!==c?c:"log",strictRequired:null!==(p=null!==(u=e.strictRequired)&&void 0!==u?u:_)&&void 0!==p&&p,code:e.code?{...e.code,optimize:S}:{optimize:S},loopRequired:null!==(d=e.loopRequired)&&void 0!==d?d:200,loopEnum:null!==(f=e.loopEnum)&&void 0!==f?f:200,meta:null===(h=e.meta)||void 0===h||h,messages:null===(m=e.messages)||void 0===m||m,inlineRefs:null===(g=e.inlineRefs)||void 0===g||g,schemaId:null!==(y=e.schemaId)&&void 0!==y?y:"$id",addUsedSchema:null===(v=e.addUsedSchema)||void 0===v||v,validateSchema:null===(b=e.validateSchema)||void 0===b||b,validateFormats:null===(w=e.validateFormats)||void 0===w||w,unicodeRegExp:null===(x=e.unicodeRegExp)||void 0===x||x,int32range:null===(k=e.int32range)||void 0===k||k}}class b{constructor(e={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...v(e)};const{es5:t,lines:n}=this.opts.code;this.scope=new c.ValueScope({scope:{},prefixes:m,es5:t,lines:n}),this.logger=function(e){if(!1===e)return E;if(void 0===e)return console;if(e.log&&e.warn&&e.error)return e;throw new Error("logger must implement log, warn and error methods")}(e.logger);const r=e.validateFormats;e.validateFormats=!1,this.RULES=s.getRules(),w.call(this,g,e,"NOT SUPPORTED"),w.call(this,y,e,"DEPRECATED","warn"),this._metaOpts=S.call(this),e.formats&&_.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&O.call(this,e.keywords),"object"==typeof e.meta&&this.addMetaSchema(e.meta),k.call(this),e.validateFormats=r}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){const{$data:e,meta:t,schemaId:n}=this.opts;let r=f;"id"===n&&(r={...f},r.id=r.$id,delete r.$id),t&&e&&this.addMetaSchema(r,r[n],!1)}defaultMeta(){const{meta:e,schemaId:t}=this.opts;return this.opts.defaultMeta="object"==typeof e?e[t]||e:void 0}validate(e,t){let n;if("string"==typeof e){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);const r=n(t);return"$async"in n||(this.errors=n.errors),r}compile(e,t){const n=this._addSchema(e,t);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,t){if("function"!=typeof this.opts.loadSchema)throw new Error("options.loadSchema should be a function");const{loadSchema:n}=this.opts;return r.call(this,e,t);async function r(e,t){await o.call(this,e.$schema);const n=this._addSchema(e,t);return n.validate||i.call(this,n)}async function o(e){e&&!this.getSchema(e)&&await r.call(this,{$ref:e},!0)}async function i(e){try{return this._compileSchemaEnv(e)}catch(t){if(!(t instanceof a.default))throw t;return s.call(this,t),await l.call(this,t.missingSchema),i.call(this,e)}}function s({missingSchema:e,missingRef:t}){if(this.refs[e])throw new Error(`AnySchema ${e} is loaded but ${t} cannot be resolved`)}async function l(e){const n=await c.call(this,e);this.refs[e]||await o.call(this,n.$schema),this.refs[e]||this.addSchema(n,e,t)}async function c(e){const t=this._loading[e];if(t)return t;try{return await(this._loading[e]=n(e))}finally{delete this._loading[e]}}}addSchema(e,t,n,r=this.opts.validateSchema){if(Array.isArray(e)){for(const t of e)this.addSchema(t,void 0,n,r);return this}let o;if("object"==typeof e){const{schemaId:t}=this.opts;if(o=e[t],void 0!==o&&"string"!=typeof o)throw new Error(`schema ${t} must be string`)}return t=u.normalizeId(t||o),this._checkUnique(t),this.schemas[t]=this._addSchema(e,n,t,r,!0),this}addMetaSchema(e,t,n=this.opts.validateSchema){return this.addSchema(e,t,!0,n),this}validateSchema(e,t){if("boolean"==typeof e)return!0;let n;if(n=e.$schema,void 0!==n&&"string"!=typeof n)throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;const r=this.validate(n,e);if(!r&&t){const e="schema is invalid: "+this.errorsText();if("log"!==this.opts.validateSchema)throw new Error(e);this.logger.error(e)}return r}getSchema(e){let t;for(;"string"==typeof(t=x.call(this,e));)e=t;if(void 0===t){const{schemaId:n}=this.opts,r=new l.SchemaEnv({schema:{},schemaId:n});if(t=l.resolveSchema.call(this,r,e),!t)return;this.refs[e]=t}return t.validate||this._compileSchemaEnv(t)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{const t=x.call(this,e);return"object"==typeof t&&this._cache.delete(t.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{const t=e;this._cache.delete(t);let n=e[this.opts.schemaId];return n&&(n=u.normalizeId(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(const t of e)this.addKeyword(t);return this}addKeyword(e,t){let n;if("string"==typeof e)n=e,"object"==typeof t&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),t.keyword=n);else{if("object"!=typeof e||void 0!==t)throw new Error("invalid addKeywords parameters");if(n=(t=e).keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}if(A.call(this,n,t),!t)return d.eachItem(n,(e=>$.call(this,e))),this;R.call(this,t);const r={...t,type:p.getJSONTypes(t.type),schemaType:p.getJSONTypes(t.schemaType)};return d.eachItem(n,0===r.type.length?e=>$.call(this,e,r):e=>r.type.forEach((t=>$.call(this,e,r,t)))),this}getKeyword(e){const t=this.RULES.all[e];return"object"==typeof t?t.definition:!!t}removeKeyword(e){const{RULES:t}=this;delete t.keywords[e],delete t.all[e];for(const n of t.rules){const t=n.rules.findIndex((t=>t.keyword===e));t>=0&&n.rules.splice(t,1)}return this}addFormat(e,t){return"string"==typeof t&&(t=new RegExp(t)),this.formats[e]=t,this}errorsText(e=this.errors,{separator:t=", ",dataVar:n="data"}={}){return e&&0!==e.length?e.map((e=>`${n}${e.instancePath} ${e.message}`)).reduce(((e,n)=>e+t+n)):"No errors"}$dataMetaSchema(e,t){const n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(const r of t){const t=r.split("/").slice(1);let o=e;for(const e of t)o=o[e];for(const e in n){const t=n[e];if("object"!=typeof t)continue;const{$data:r}=t.definition,i=o[e];r&&i&&(o[e]=T(i))}}return e}_removeAllSchemas(e,t){for(const n in e){const r=e[n];t&&!t.test(n)||("string"==typeof r?delete e[n]:r&&!r.meta&&(this._cache.delete(r.schema),delete e[n]))}}_addSchema(e,t,n,r=this.opts.validateSchema,o=this.opts.addUsedSchema){let i;const{schemaId:a}=this.opts;if("object"==typeof e)i=e[a];else{if(this.opts.jtd)throw new Error("schema must be object");if("boolean"!=typeof e)throw new Error("schema must be object or boolean")}let s=this._cache.get(e);if(void 0!==s)return s;const c=u.getSchemaRefs.call(this,e);return n=u.normalizeId(i||n),s=new l.SchemaEnv({schema:e,schemaId:a,meta:t,baseId:n,localRefs:c}),this._cache.set(s.schema,s),o&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=s),r&&this.validateSchema(e,!0),s}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):l.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){const t=this.opts;this.opts=this._metaOpts;try{l.compileSchema.call(this,e)}finally{this.opts=t}}}function w(e,t,n,r="error"){for(const o in e){const i=o;i in t&&this.logger[r](`${n}: option ${o}. ${e[i]}`)}}function x(e){return e=u.normalizeId(e),this.schemas[e]||this.refs[e]}function k(){const e=this.opts.schemas;if(e)if(Array.isArray(e))this.addSchema(e);else for(const t in e)this.addSchema(e[t],t)}function _(){for(const e in this.opts.formats){const t=this.opts.formats[e];t&&this.addFormat(e,t)}}function O(e){if(Array.isArray(e))this.addVocabulary(e);else{this.logger.warn("keywords option as map is deprecated, pass array");for(const t in e){const n=e[t];n.keyword||(n.keyword=t),this.addKeyword(n)}}}function S(){const e={...this.opts};for(const t of h)delete e[t];return e}t.default=b,b.ValidationError=i.default,b.MissingRefError=a.default;const E={log(){},warn(){},error(){}},P=/^[a-z_$][a-z0-9_$:-]*$/i;function A(e,t){const{RULES:n}=this;if(d.eachItem(e,(e=>{if(n.keywords[e])throw new Error(`Keyword ${e} is already defined`);if(!P.test(e))throw new Error(`Keyword ${e} has invalid name`)})),t&&t.$data&&!("code"in t)&&!("validate"in t))throw new Error('$data keyword must have "code" or "validate" function')}function $(e,t,n){var r;const o=null==t?void 0:t.post;if(n&&o)throw new Error('keyword with "post" flag cannot have "type"');const{RULES:i}=this;let a=o?i.post:i.rules.find((({type:e})=>e===n));if(a||(a={type:n,rules:[]},i.rules.push(a)),i.keywords[e]=!0,!t)return;const s={keyword:e,definition:{...t,type:p.getJSONTypes(t.type),schemaType:p.getJSONTypes(t.schemaType)}};t.before?C.call(this,a,s,t.before):a.rules.push(s),i.all[e]=s,null===(r=t.implements)||void 0===r||r.forEach((e=>this.addKeyword(e)))}function C(e,t,n){const r=e.rules.findIndex((e=>e.keyword===n));r>=0?e.rules.splice(r,0,t):(e.rules.push(t),this.logger.warn(`rule ${n} is not defined`))}function R(e){let{metaSchema:t}=e;void 0!==t&&(e.$data&&this.opts.$data&&(t=T(t)),e.validateSchema=this.compile(t,!0))}const j={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function T(e){return{anyOf:[e,j]}}},412:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4063);r.code='require("ajv/dist/runtime/equal").default',t.default=r},5872:function(e,t){"use strict";function n(e){const t=e.length;let n,r=0,o=0;for(;o=55296&&n<=56319&&or.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>r._`{limit: ${e}}`},code(e){const{parentSchema:t,it:n}=e,{items:r}=t;Array.isArray(r)?a(e,r):o.checkStrictMode(n,'"additionalItems" is ignored when "items" is not an array of schemas')}};function a(e,t){const{gen:n,schema:i,data:a,keyword:s,it:l}=e;l.items=!0;const c=n.const("len",r._`${a}.length`);if(!1===i)e.setParams({len:t.length}),e.pass(r._`${c} <= ${t.length}`);else if("object"==typeof i&&!o.alwaysValidSchema(l,i)){const i=n.var("valid",r._`${c} <= ${t.length}`);n.if(r.not(i),(()=>function(i){n.forRange("i",t.length,c,(t=>{e.subschema({keyword:s,dataProp:t,dataPropType:o.Type.Num},i),l.allErrors||n.if(r.not(i),(()=>n.break()))}))}(i))),e.ok(i)}}t.validateAdditionalItems=a,t.default=i},1422:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(8619),o=n(4475),i=n(5018),a=n(6124),s={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:{message:"must NOT have additional properties",params:({params:e})=>o._`{additionalProperty: ${e.additionalProperty}}`},code(e){const{gen:t,parentSchema:n,data:s,errsCount:l,it:c}=e,{schema:u=c.opts.defaultAdditionalProperties}=e;if(!l)throw new Error("ajv implementation error");const{allErrors:p,opts:d}=c;if(c.props=!0,"all"!==d.removeAdditional&&a.alwaysValidSchema(c,u))return;const f=r.allSchemaProperties(n.properties),h=r.allSchemaProperties(n.patternProperties);function m(e){t.code(o._`delete ${s}[${e}]`)}function g(n){if("all"===d.removeAdditional||d.removeAdditional&&!1===u)m(n);else{if(!1===u)return e.setParams({additionalProperty:n}),e.error(),void(p||t.break());if("object"==typeof u&&!a.alwaysValidSchema(c,u)){const r=t.name("valid");"failing"===d.removeAdditional?(y(n,r,!1),t.if(o.not(r),(()=>{e.reset(),m(n)}))):(y(n,r),p||t.if(o.not(r),(()=>t.break())))}}}function y(t,n,r){const o={keyword:"additionalProperties",dataProp:t,dataPropType:a.Type.Str};!1===r&&Object.assign(o,{compositeRule:!0,createErrors:!1,allErrors:!1}),e.subschema(o,n)}t.forIn("key",s,(i=>{f.length||h.length?t.if(function(i){let s;if(f.length>8){const e=a.schemaRefOrVal(c,n.properties,"properties");s=r.isOwnProperty(t,e,i)}else s=f.length?o.or(...f.map((e=>o._`${i} === ${e}`))):o.nil;return h.length&&(s=o.or(s,...h.map((t=>o._`${r.usePattern(e,t)}.test(${i})`)))),o.not(s)}(i),(()=>g(i))):g(i)})),e.ok(o._`${l} === ${i.default.errors}`)}};t.default=s},5716:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(6124),o={keyword:"allOf",schemaType:"array",code(e){const{gen:t,schema:n,it:o}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");const i=t.name("valid");n.forEach(((t,n)=>{if(r.alwaysValidSchema(o,t))return;const a=e.subschema({keyword:"allOf",schemaProp:n},i);e.ok(i),e.mergeEvaluated(a)}))}};t.default=o},1668:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:n(8619).validateUnion,error:{message:"must match a schema in anyOf"}};t.default=r},9564:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:{message:({params:{min:e,max:t}})=>void 0===t?r.str`must contain at least ${e} valid item(s)`:r.str`must contain at least ${e} and no more than ${t} valid item(s)`,params:({params:{min:e,max:t}})=>void 0===t?r._`{minContains: ${e}}`:r._`{minContains: ${e}, maxContains: ${t}}`},code(e){const{gen:t,schema:n,parentSchema:i,data:a,it:s}=e;let l,c;const{minContains:u,maxContains:p}=i;s.opts.next?(l=void 0===u?1:u,c=p):l=1;const d=t.const("len",r._`${a}.length`);if(e.setParams({min:l,max:c}),void 0===c&&0===l)return void o.checkStrictMode(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');if(void 0!==c&&l>c)return o.checkStrictMode(s,'"minContains" > "maxContains" is always invalid'),void e.fail();if(o.alwaysValidSchema(s,n)){let t=r._`${d} >= ${l}`;return void 0!==c&&(t=r._`${t} && ${d} <= ${c}`),void e.pass(t)}s.items=!0;const f=t.name("valid");if(void 0===c&&1===l)h(f,(()=>t.if(f,(()=>t.break()))));else{t.let(f,!1);const e=t.name("_valid"),n=t.let("count",0);h(e,(()=>t.if(e,(()=>function(e){t.code(r._`${e}++`),void 0===c?t.if(r._`${e} >= ${l}`,(()=>t.assign(f,!0).break())):(t.if(r._`${e} > ${c}`,(()=>t.assign(f,!1).break())),1===l?t.assign(f,!0):t.if(r._`${e} >= ${l}`,(()=>t.assign(f,!0))))}(n)))))}function h(n,r){t.forRange("i",0,d,(t=>{e.subschema({keyword:"contains",dataProp:t,dataPropType:o.Type.Num,compositeRule:!0},n),r()}))}e.result(f,(()=>e.reset()))}};t.default=i},1117:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateSchemaDeps=t.validatePropertyDeps=t.error=void 0;const r=n(4475),o=n(6124),i=n(8619);t.error={message:({params:{property:e,depsCount:t,deps:n}})=>{const o=1===t?"property":"properties";return r.str`must have ${o} ${n} when property ${e} is present`},params:({params:{property:e,depsCount:t,deps:n,missingProperty:o}})=>r._`{property: ${e}, missingProperty: ${o}, depsCount: ${t}, deps: ${n}}`};const a={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(e){const[t,n]=function({schema:e}){const t={},n={};for(const r in e)"__proto__"!==r&&((Array.isArray(e[r])?t:n)[r]=e[r]);return[t,n]}(e);s(e,t),l(e,n)}};function s(e,t=e.schema){const{gen:n,data:o,it:a}=e;if(0===Object.keys(t).length)return;const s=n.let("missing");for(const l in t){const c=t[l];if(0===c.length)continue;const u=i.propertyInData(n,o,l,a.opts.ownProperties);e.setParams({property:l,depsCount:c.length,deps:c.join(", ")}),a.allErrors?n.if(u,(()=>{for(const t of c)i.checkReportMissingProp(e,t)})):(n.if(r._`${u} && (${i.checkMissingProp(e,c,s)})`),i.reportMissingProp(e,s),n.else())}}function l(e,t=e.schema){const{gen:n,data:r,keyword:a,it:s}=e,l=n.name("valid");for(const c in t)o.alwaysValidSchema(s,t[c])||(n.if(i.propertyInData(n,r,c,s.opts.ownProperties),(()=>{const t=e.subschema({keyword:a,schemaProp:c},l);e.mergeValidEvaluated(t,l)}),(()=>n.var(l,!0))),e.ok(l))}t.validatePropertyDeps=s,t.validateSchemaDeps=l,t.default=a},5184:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:e})=>r.str`must match "${e.ifClause}" schema`,params:({params:e})=>r._`{failingKeyword: ${e.ifClause}}`},code(e){const{gen:t,parentSchema:n,it:i}=e;void 0===n.then&&void 0===n.else&&o.checkStrictMode(i,'"if" without "then" and "else" is ignored');const s=a(i,"then"),l=a(i,"else");if(!s&&!l)return;const c=t.let("valid",!0),u=t.name("_valid");if(function(){const t=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},u);e.mergeEvaluated(t)}(),e.reset(),s&&l){const n=t.let("ifClause");e.setParams({ifClause:n}),t.if(u,p("then",n),p("else",n))}else s?t.if(u,p("then")):t.if(r.not(u),p("else"));function p(n,o){return()=>{const i=e.subschema({keyword:n},u);t.assign(c,u),e.mergeValidEvaluated(i,c),o?t.assign(o,r._`${n}`):e.setParams({ifClause:n})}}e.pass(c,(()=>e.error(!0)))}};function a(e,t){const n=e.schema[t];return void 0!==n&&!o.alwaysValidSchema(e,n)}t.default=i},9616:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(3074),o=n(6988),i=n(6348),a=n(9822),s=n(9564),l=n(1117),c=n(4002),u=n(1422),p=n(9690),d=n(9883),f=n(8435),h=n(1668),m=n(9684),g=n(5716),y=n(5184),v=n(5642);t.default=function(e=!1){const t=[f.default,h.default,m.default,g.default,y.default,v.default,c.default,u.default,l.default,p.default,d.default];return e?t.push(o.default,a.default):t.push(r.default,i.default),t.push(s.default),t}},6348:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;const r=n(4475),o=n(6124),i=n(8619),a={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:n}=e;if(Array.isArray(t))return s(e,"additionalItems",t);n.items=!0,o.alwaysValidSchema(n,t)||e.ok(i.validateArray(e))}};function s(e,t,n=e.schema){const{gen:i,parentSchema:a,data:s,keyword:l,it:c}=e;!function(e){const{opts:r,errSchemaPath:i}=c,a=n.length,s=a===e.minItems&&(a===e.maxItems||!1===e[t]);if(r.strictTuples&&!s){const e=`"${l}" is ${a}-tuple, but minItems or maxItems/${t} are not specified or different at path "${i}"`;o.checkStrictMode(c,e,r.strictTuples)}}(a),c.opts.unevaluated&&n.length&&!0!==c.items&&(c.items=o.mergeEvaluated.items(i,n.length,c.items));const u=i.name("valid"),p=i.const("len",r._`${s}.length`);n.forEach(((t,n)=>{o.alwaysValidSchema(c,t)||(i.if(r._`${p} > ${n}`,(()=>e.subschema({keyword:l,schemaProp:n,dataProp:n},u))),e.ok(u))}))}t.validateTuple=s,t.default=a},9822:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i=n(8619),a=n(3074),s={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:e}})=>r.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>r._`{limit: ${e}}`},code(e){const{schema:t,parentSchema:n,it:r}=e,{prefixItems:s}=n;r.items=!0,o.alwaysValidSchema(r,t)||(s?a.validateAdditionalItems(e,s):e.ok(i.validateArray(e)))}};t.default=s},8435:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(6124),o={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(e){const{gen:t,schema:n,it:o}=e;if(r.alwaysValidSchema(o,n))return void e.fail();const i=t.name("valid");e.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},i),e.result(i,(()=>e.error()),(()=>e.reset()))},error:{message:"must NOT be valid"}};t.default=o},9684:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:{message:"must match exactly one schema in oneOf",params:({params:e})=>r._`{passingSchemas: ${e.passing}}`},code(e){const{gen:t,schema:n,parentSchema:i,it:a}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(a.opts.discriminator&&i.discriminator)return;const s=n,l=t.let("valid",!1),c=t.let("passing",null),u=t.name("_valid");e.setParams({passing:c}),t.block((function(){s.forEach(((n,i)=>{let s;o.alwaysValidSchema(a,n)?t.var(u,!0):s=e.subschema({keyword:"oneOf",schemaProp:i,compositeRule:!0},u),i>0&&t.if(r._`${u} && ${l}`).assign(l,!1).assign(c,r._`[${c}, ${i}]`).else(),t.if(u,(()=>{t.assign(l,!0),t.assign(c,i),s&&e.mergeEvaluated(s,r.Name)}))}))})),e.result(l,(()=>e.reset()),(()=>e.error(!0)))}};t.default=i},9883:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(8619),o=n(4475),i=n(6124),a=n(6124),s={keyword:"patternProperties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,data:s,parentSchema:l,it:c}=e,{opts:u}=c,p=r.allSchemaProperties(n),d=p.filter((e=>i.alwaysValidSchema(c,n[e])));if(0===p.length||d.length===p.length&&(!c.opts.unevaluated||!0===c.props))return;const f=u.strictSchema&&!u.allowMatchingProperties&&l.properties,h=t.name("valid");!0===c.props||c.props instanceof o.Name||(c.props=a.evaluatedPropsToName(t,c.props));const{props:m}=c;function g(e){for(const t in f)new RegExp(e).test(t)&&i.checkStrictMode(c,`property ${t} matches pattern ${e} (use allowMatchingProperties)`)}function y(n){t.forIn("key",s,(i=>{t.if(o._`${r.usePattern(e,n)}.test(${i})`,(()=>{const r=d.includes(n);r||e.subschema({keyword:"patternProperties",schemaProp:n,dataProp:i,dataPropType:a.Type.Str},h),c.opts.unevaluated&&!0!==m?t.assign(o._`${m}[${i}]`,!0):r||c.allErrors||t.if(o.not(h),(()=>t.break()))}))}))}!function(){for(const e of p)f&&g(e),c.allErrors?y(e):(t.var(h,!0),y(e),t.if(h))}()}};t.default=s},6988:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(6348),o={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:e=>r.validateTuple(e,"items")};t.default=o},9690:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(1321),o=n(8619),i=n(6124),a=n(1422),s={keyword:"properties",type:"object",schemaType:"object",code(e){const{gen:t,schema:n,parentSchema:s,data:l,it:c}=e;("all"===c.opts.removeAdditional&&void 0===s.additionalProperties||!1===c.opts.defaultAdditionalProperties)&&a.default.code(new r.KeywordCxt(c,a.default,"additionalProperties"));const u=o.allSchemaProperties(n);for(const e of u)c.definedProperties.add(e);c.opts.unevaluated&&u.length&&!0!==c.props&&(c.props=i.mergeEvaluated.props(t,i.toHash(u),c.props));const p=u.filter((e=>!i.alwaysValidSchema(c,n[e])));if(0===p.length)return;const d=t.name("valid");for(const n of p)f(n)?h(n):(t.if(o.propertyInData(t,l,n,c.opts.ownProperties)),h(n),c.allErrors||t.else().var(d,!0),t.endIf()),e.it.definedProperties.add(n),e.ok(d);function f(e){return c.opts.useDefaults&&!c.compositeRule&&void 0!==n[e].default}function h(t){e.subschema({keyword:"properties",schemaProp:t,dataProp:t},d)}}};t.default=s},4002:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:{message:"property name must be valid",params:({params:e})=>r._`{propertyName: ${e.propertyName}}`},code(e){const{gen:t,schema:n,data:i,it:a}=e;if(o.alwaysValidSchema(a,n))return;const s=t.name("valid");t.forIn("key",i,(n=>{e.setParams({propertyName:n}),e.subschema({keyword:"propertyNames",data:n,dataTypes:["string"],propertyName:n,compositeRule:!0},s),t.if(r.not(s),(()=>{e.error(!0),a.allErrors||t.break()}))})),e.ok(s)}};t.default=i},5642:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(6124),o={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:e,parentSchema:t,it:n}){void 0===t.if&&r.checkStrictMode(n,`"${e}" without "if" is ignored`)}};t.default=o},8619:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateUnion=t.validateArray=t.usePattern=t.callValidateCode=t.schemaProperties=t.allSchemaProperties=t.noPropertyInData=t.propertyInData=t.isOwnProperty=t.hasPropFunc=t.reportMissingProp=t.checkMissingProp=t.checkReportMissingProp=void 0;const r=n(4475),o=n(6124),i=n(5018);function a(e){return e.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:r._`Object.prototype.hasOwnProperty`})}function s(e,t,n){return r._`${a(e)}.call(${t}, ${n})`}function l(e,t,n,o){const i=r._`${t}${r.getProperty(n)} === undefined`;return o?r.or(i,r.not(s(e,t,n))):i}function c(e){return e?Object.keys(e).filter((e=>"__proto__"!==e)):[]}t.checkReportMissingProp=function(e,t){const{gen:n,data:o,it:i}=e;n.if(l(n,o,t,i.opts.ownProperties),(()=>{e.setParams({missingProperty:r._`${t}`},!0),e.error()}))},t.checkMissingProp=function({gen:e,data:t,it:{opts:n}},o,i){return r.or(...o.map((o=>r.and(l(e,t,o,n.ownProperties),r._`${i} = ${o}`))))},t.reportMissingProp=function(e,t){e.setParams({missingProperty:t},!0),e.error()},t.hasPropFunc=a,t.isOwnProperty=s,t.propertyInData=function(e,t,n,o){const i=r._`${t}${r.getProperty(n)} !== undefined`;return o?r._`${i} && ${s(e,t,n)}`:i},t.noPropertyInData=l,t.allSchemaProperties=c,t.schemaProperties=function(e,t){return c(t).filter((n=>!o.alwaysValidSchema(e,t[n])))},t.callValidateCode=function({schemaCode:e,data:t,it:{gen:n,topSchemaRef:o,schemaPath:a,errorPath:s},it:l},c,u,p){const d=p?r._`${e}, ${t}, ${o}${a}`:t,f=[[i.default.instancePath,r.strConcat(i.default.instancePath,s)],[i.default.parentData,l.parentData],[i.default.parentDataProperty,l.parentDataProperty],[i.default.rootData,i.default.rootData]];l.opts.dynamicRef&&f.push([i.default.dynamicAnchors,i.default.dynamicAnchors]);const h=r._`${d}, ${n.object(...f)}`;return u!==r.nil?r._`${c}.call(${u}, ${h})`:r._`${c}(${h})`},t.usePattern=function({gen:e,it:{opts:t}},n){const o=t.unicodeRegExp?"u":"";return e.scopeValue("pattern",{key:n,ref:new RegExp(n,o),code:r._`new RegExp(${n}, ${o})`})},t.validateArray=function(e){const{gen:t,data:n,keyword:i,it:a}=e,s=t.name("valid");if(a.allErrors){const e=t.let("valid",!0);return l((()=>t.assign(e,!1))),e}return t.var(s,!0),l((()=>t.break())),s;function l(a){const l=t.const("len",r._`${n}.length`);t.forRange("i",0,l,(n=>{e.subschema({keyword:i,dataProp:n,dataPropType:o.Type.Num},s),t.if(r.not(s),a)}))}},t.validateUnion=function(e){const{gen:t,schema:n,keyword:i,it:a}=e;if(!Array.isArray(n))throw new Error("ajv implementation error");if(n.some((e=>o.alwaysValidSchema(a,e)))&&!a.opts.unevaluated)return;const s=t.let("valid",!1),l=t.name("_valid");t.block((()=>n.forEach(((n,o)=>{const a=e.subschema({keyword:i,schemaProp:o,compositeRule:!0},l);t.assign(s,r._`${s} || ${l}`),e.mergeValidEvaluated(a,l)||t.if(r.not(s))})))),e.result(s,(()=>e.reset()),(()=>e.error(!0)))}},5060:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};t.default=n},8223:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(5060),o=n(4028),i=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",r.default,o.default];t.default=i},4028:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.callRef=t.getValidate=void 0;const r=n(4143),o=n(8619),i=n(4475),a=n(5018),s=n(7805),l=n(6124),c={keyword:"$ref",schemaType:"string",code(e){const{gen:t,schema:n,it:o}=e,{baseId:a,schemaEnv:l,validateName:c,opts:d,self:f}=o,{root:h}=l;if(("#"===n||"#/"===n)&&a===h.baseId)return function(){if(l===h)return p(e,c,l,l.$async);const n=t.scopeValue("root",{ref:h});return p(e,i._`${n}.validate`,h,h.$async)}();const m=s.resolveRef.call(f,h,a,n);if(void 0===m)throw new r.default(a,n);return m instanceof s.SchemaEnv?function(t){const n=u(e,t);p(e,n,t,t.$async)}(m):function(r){const o=t.scopeValue("schema",!0===d.code.source?{ref:r,code:i.stringify(r)}:{ref:r}),a=t.name("valid"),s=e.subschema({schema:r,dataTypes:[],schemaPath:i.nil,topSchemaRef:o,errSchemaPath:n},a);e.mergeEvaluated(s),e.ok(a)}(m)}};function u(e,t){const{gen:n}=e;return t.validate?n.scopeValue("validate",{ref:t.validate}):i._`${n.scopeValue("wrapper",{ref:t})}.validate`}function p(e,t,n,r){const{gen:s,it:c}=e,{allErrors:u,schemaEnv:p,opts:d}=c,f=d.passContext?a.default.this:i.nil;function h(e){const t=i._`${e}.errors`;s.assign(a.default.vErrors,i._`${a.default.vErrors} === null ? ${t} : ${a.default.vErrors}.concat(${t})`),s.assign(a.default.errors,i._`${a.default.vErrors}.length`)}function m(e){var t;if(!c.opts.unevaluated)return;const r=null===(t=null==n?void 0:n.validate)||void 0===t?void 0:t.evaluated;if(!0!==c.props)if(r&&!r.dynamicProps)void 0!==r.props&&(c.props=l.mergeEvaluated.props(s,r.props,c.props));else{const t=s.var("props",i._`${e}.evaluated.props`);c.props=l.mergeEvaluated.props(s,t,c.props,i.Name)}if(!0!==c.items)if(r&&!r.dynamicItems)void 0!==r.items&&(c.items=l.mergeEvaluated.items(s,r.items,c.items));else{const t=s.var("items",i._`${e}.evaluated.items`);c.items=l.mergeEvaluated.items(s,t,c.items,i.Name)}}r?function(){if(!p.$async)throw new Error("async schema referenced by sync schema");const n=s.let("valid");s.try((()=>{s.code(i._`await ${o.callValidateCode(e,t,f)}`),m(t),u||s.assign(n,!0)}),(e=>{s.if(i._`!(${e} instanceof ${c.ValidationError})`,(()=>s.throw(e))),h(e),u||s.assign(n,!1)})),e.ok(n)}():function(){const n=s.name("visitedNodes");s.code(i._`const ${n} = visitedNodesForRef.get(${t}) || new Set()`),s.if(i._`!${n}.has(${e.data})`,(()=>{s.code(i._`visitedNodesForRef.set(${t}, ${n})`),s.code(i._`const dataNode = ${e.data}`),s.code(i._`${n}.add(dataNode)`);const r=e.result(o.callValidateCode(e,t,f),(()=>m(t)),(()=>h(t)));return s.code(i._`${n}.delete(dataNode)`),r}))}()}t.getValidate=u,t.callRef=p,t.default=c},5522:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6545),i={keyword:"discriminator",type:"object",schemaType:"object",error:{message:({params:{discrError:e,tagName:t}})=>e===o.DiscrError.Tag?`tag "${t}" must be string`:`value of tag "${t}" must be in oneOf`,params:({params:{discrError:e,tag:t,tagName:n}})=>r._`{error: ${e}, tag: ${n}, tagValue: ${t}}`},code(e){const{gen:t,data:n,schema:i,parentSchema:a,it:s}=e,{oneOf:l}=a;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");const c=i.propertyName;if("string"!=typeof c)throw new Error("discriminator: requires propertyName");if(!l)throw new Error("discriminator: requires oneOf keyword");const u=t.let("valid",!1),p=t.const("tag",r._`${n}${r.getProperty(c)}`);function d(n){const o=t.name("valid"),i=e.subschema({keyword:"oneOf",schemaProp:n},o);return e.mergeEvaluated(i,r.Name),o}function f(e){return e.hasOwnProperty("$ref")}t.if(r._`typeof ${p} == "string"`,(()=>function(){const n=function(){var e;const t={},n=o(a);let r=!0;for(let t=0;te.error(!1,{discrError:o.DiscrError.Tag,tag:p,tagName:c}))),e.ok(u)}};t.default=i},6545:function(e,t){"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.DiscrError=void 0,(n=t.DiscrError||(t.DiscrError={})).Tag="tag",n.Mapping="mapping"},6479:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(8223),o=n(3799),i=n(9616),a=n(3815),s=n(4826),l=[r.default,o.default,i.default(),a.default,s.metadataVocabulary,s.contentVocabulary];t.default=l},157:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>r.str`must match format "${e}"`,params:({schemaCode:e})=>r._`{format: ${e}}`},code(e,t){const{gen:n,data:o,$data:i,schema:a,schemaCode:s,it:l}=e,{opts:c,errSchemaPath:u,schemaEnv:p,self:d}=l;c.validateFormats&&(i?function(){const i=n.scopeValue("formats",{ref:d.formats,code:c.code.formats}),a=n.const("fDef",r._`${i}[${s}]`),l=n.let("fType"),u=n.let("format");n.if(r._`typeof ${a} == "object" && !(${a} instanceof RegExp)`,(()=>n.assign(l,r._`${a}.type || "string"`).assign(u,r._`${a}.validate`)),(()=>n.assign(l,r._`"string"`).assign(u,a))),e.fail$data(r.or(!1===c.strictSchema?r.nil:r._`${s} && !${u}`,function(){const e=p.$async?r._`(${a}.async ? await ${u}(${o}) : ${u}(${o}))`:r._`${u}(${o})`,n=r._`(typeof ${u} == "function" ? ${e} : ${u}.test(${o}))`;return r._`${u} && ${u} !== true && ${l} === ${t} && !${n}`}()))}():function(){const i=d.formats[a];if(!i)return void function(){if(!1!==c.strictSchema)throw new Error(e());function e(){return`unknown format "${a}" ignored in schema at path "${u}"`}d.logger.warn(e())}();if(!0===i)return;const[s,l,f]=function(e){const t=e instanceof RegExp?r.regexpCode(e):c.code.formats?r._`${c.code.formats}${r.getProperty(a)}`:void 0,o=n.scopeValue("formats",{key:a,ref:e,code:t});return"object"!=typeof e||e instanceof RegExp?["string",e,o]:[e.type||"string",e.validate,r._`${o}.validate`]}(i);s===t&&e.pass(function(){if("object"==typeof i&&!(i instanceof RegExp)&&i.async){if(!p.$async)throw new Error("async format in sync schema");return r._`await ${f}(${o})`}return"function"==typeof l?r._`${f}(${o})`:r._`${f}.test(${o})`}())}())}};t.default=o},3815:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=[n(157).default];t.default=r},4826:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.contentVocabulary=t.metadataVocabulary=void 0,t.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"],t.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]},7535:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i=n(412),a={keyword:"const",$data:!0,error:{message:"must be equal to constant",params:({schemaCode:e})=>r._`{allowedValue: ${e}}`},code(e){const{gen:t,data:n,$data:a,schemaCode:s,schema:l}=e;a||l&&"object"==typeof l?e.fail$data(r._`!${o.useFunc(t,i.default)}(${n}, ${s})`):e.fail(r._`${l} !== ${n}`)}};t.default=a},4147:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i=n(412),a={keyword:"enum",schemaType:"array",$data:!0,error:{message:"must be equal to one of the allowed values",params:({schemaCode:e})=>r._`{allowedValues: ${e}}`},code(e){const{gen:t,data:n,$data:a,schema:s,schemaCode:l,it:c}=e;if(!a&&0===s.length)throw new Error("enum must have non-empty array");const u=s.length>=c.opts.loopEnum,p=o.useFunc(t,i.default);let d;if(u||a)d=t.let("valid"),e.block$data(d,(function(){t.assign(d,!1),t.forOf("v",l,(e=>t.if(r._`${p}(${n}, ${e})`,(()=>t.assign(d,!0).break()))))}));else{if(!Array.isArray(s))throw new Error("ajv implementation error");const e=t.const("vSchema",l);d=r.or(...s.map(((t,o)=>function(e,t){const o=s[t];return"object"==typeof o&&null!==o?r._`${p}(${n}, ${e}[${t}])`:r._`${n} === ${o}`}(e,o))))}e.pass(d)}};t.default=a},3799:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(9640),o=n(7692),i=n(3765),a=n(8582),s=n(6711),l=n(7835),c=n(8950),u=n(7326),p=n(7535),d=n(4147),f=[r.default,o.default,i.default,a.default,s.default,l.default,c.default,u.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},p.default,d.default];t.default=f},8950:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const n="maxItems"===e?"more":"fewer";return r.str`must NOT have ${n} than ${t} items`},params:({schemaCode:e})=>r._`{limit: ${e}}`},code(e){const{keyword:t,data:n,schemaCode:o}=e,i="maxItems"===t?r.operators.GT:r.operators.LT;e.fail$data(r._`${n}.length ${i} ${o}`)}};t.default=o},3765:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=n(6124),i=n(5872),a={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const n="maxLength"===e?"more":"fewer";return r.str`must NOT have ${n} than ${t} characters`},params:({schemaCode:e})=>r._`{limit: ${e}}`},code(e){const{keyword:t,data:n,schemaCode:a,it:s}=e,l="maxLength"===t?r.operators.GT:r.operators.LT,c=!1===s.opts.unicode?r._`${n}.length`:r._`${o.useFunc(e.gen,i.default)}(${n})`;e.fail$data(r._`${c} ${l} ${a}`)}};t.default=a},9640:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o=r.operators,i={maximum:{okStr:"<=",ok:o.LTE,fail:o.GT},minimum:{okStr:">=",ok:o.GTE,fail:o.LT},exclusiveMaximum:{okStr:"<",ok:o.LT,fail:o.GTE},exclusiveMinimum:{okStr:">",ok:o.GT,fail:o.LTE}},a={message:({keyword:e,schemaCode:t})=>r.str`must be ${i[e].okStr} ${t}`,params:({keyword:e,schemaCode:t})=>r._`{comparison: ${i[e].okStr}, limit: ${t}}`},s={keyword:Object.keys(i),type:"number",schemaType:"number",$data:!0,error:a,code(e){const{keyword:t,data:n,schemaCode:o}=e;e.fail$data(r._`${n} ${i[t].fail} ${o} || isNaN(${n})`)}};t.default=s},6711:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:{message({keyword:e,schemaCode:t}){const n="maxProperties"===e?"more":"fewer";return r.str`must NOT have ${n} than ${t} items`},params:({schemaCode:e})=>r._`{limit: ${e}}`},code(e){const{keyword:t,data:n,schemaCode:o}=e,i="maxProperties"===t?r.operators.GT:r.operators.LT;e.fail$data(r._`Object.keys(${n}).length ${i} ${o}`)}};t.default=o},7692:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(4475),o={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:{message:({schemaCode:e})=>r.str`must be multiple of ${e}`,params:({schemaCode:e})=>r._`{multipleOf: ${e}}`},code(e){const{gen:t,data:n,schemaCode:o,it:i}=e,a=i.opts.multipleOfPrecision,s=t.let("res"),l=a?r._`Math.abs(Math.round(${s}) - ${s}) > 1e-${a}`:r._`${s} !== parseInt(${s})`;e.fail$data(r._`(${o} === 0 || (${s} = ${n}/${o}, ${l}))`)}};t.default=o},8582:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(8619),o=n(4475),i={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:{message:({schemaCode:e})=>o.str`must match pattern "${e}"`,params:({schemaCode:e})=>o._`{pattern: ${e}}`},code(e){const{data:t,$data:n,schema:i,schemaCode:a,it:s}=e,l=s.opts.unicodeRegExp?"u":"",c=n?o._`(new RegExp(${a}, ${l}))`:r.usePattern(e,i);e.fail$data(o._`!${c}.test(${t})`)}};t.default=i},7835:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(8619),o=n(4475),i=n(6124),a={keyword:"required",type:"object",schemaType:"array",$data:!0,error:{message:({params:{missingProperty:e}})=>o.str`must have required property '${e}'`,params:({params:{missingProperty:e}})=>o._`{missingProperty: ${e}}`},code(e){const{gen:t,schema:n,schemaCode:a,data:s,$data:l,it:c}=e,{opts:u}=c;if(!l&&0===n.length)return;const p=n.length>=u.loopRequired;if(c.allErrors?function(){if(p||l)e.block$data(o.nil,d);else for(const t of n)r.checkReportMissingProp(e,t)}():function(){const i=t.let("missing");if(p||l){const n=t.let("valid",!0);e.block$data(n,(()=>function(n,i){e.setParams({missingProperty:n}),t.forOf(n,a,(()=>{t.assign(i,r.propertyInData(t,s,n,u.ownProperties)),t.if(o.not(i),(()=>{e.error(),t.break()}))}),o.nil)}(i,n))),e.ok(n)}else t.if(r.checkMissingProp(e,n,i)),r.reportMissingProp(e,i),t.else()}(),u.strictRequired){const t=e.parentSchema.properties,{definedProperties:r}=e.it;for(const e of n)if(void 0===(null==t?void 0:t[e])&&!r.has(e)){const t=`required property "${e}" is not defined at "${c.schemaEnv.baseId+c.errSchemaPath}" (strictRequired)`;i.checkStrictMode(c,t,c.opts.strictRequired)}}function d(){t.forOf("prop",a,(n=>{e.setParams({missingProperty:n}),t.if(r.noPropertyInData(t,s,n,u.ownProperties),(()=>e.error()))}))}}};t.default=a},7326:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7927),o=n(4475),i=n(6124),a=n(412),s={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:{message:({params:{i:e,j:t}})=>o.str`must NOT have duplicate items (items ## ${t} and ${e} are identical)`,params:({params:{i:e,j:t}})=>o._`{i: ${e}, j: ${t}}`},code(e){const{gen:t,data:n,$data:s,schema:l,parentSchema:c,schemaCode:u,it:p}=e;if(!s&&!l)return;const d=t.let("valid"),f=c.items?r.getSchemaTypes(c.items):[];function h(i,a){const s=t.name("item"),l=r.checkDataTypes(f,s,p.opts.strictNumbers,r.DataType.Wrong),c=t.const("indices",o._`{}`);t.for(o._`;${i}--;`,(()=>{t.let(s,o._`${n}[${i}]`),t.if(l,o._`continue`),f.length>1&&t.if(o._`typeof ${s} == "string"`,o._`${s} += "_"`),t.if(o._`typeof ${c}[${s}] == "number"`,(()=>{t.assign(a,o._`${c}[${s}]`),e.error(),t.assign(d,!1).break()})).code(o._`${c}[${s}] = ${i}`)}))}function m(r,s){const l=i.useFunc(t,a.default),c=t.name("outer");t.label(c).for(o._`;${r}--;`,(()=>t.for(o._`${s} = ${r}; ${s}--;`,(()=>t.if(o._`${l}(${n}[${r}], ${n}[${s}])`,(()=>{e.error(),t.assign(d,!1).break(c)}))))))}e.block$data(d,(function(){const r=t.let("i",o._`${n}.length`),i=t.let("j");e.setParams({i:r,j:i}),t.assign(d,!0),t.if(o._`${r} > 1`,(()=>(f.length>0&&!f.some((e=>"object"===e||"array"===e))?h:m)(r,i)))}),o._`${u} === false`),e.ok(d)}};t.default=s},4029:function(e){"use strict";var t=e.exports=function(e,t,r){"function"==typeof t&&(r=t,t={}),n(t,"function"==typeof(r=t.cb||r)?r:r.pre||function(){},r.post||function(){},e,"",e)};function n(e,r,o,i,a,s,l,c,u,p){if(i&&"object"==typeof i&&!Array.isArray(i)){for(var d in r(i,a,s,l,c,u,p),i){var f=i[d];if(Array.isArray(f)){if(d in t.arrayKeywords)for(var h=0;hn.addProblemToIgnore(e))),fileDependencies:o.getFiles(),rootType:S.DefinitionRoot,refTypes:A.refTypes,visitorsData:A.visitorsData}}))}function k(e,t){switch(t){case d.OasMajorVersion.Version3:switch(e){case"Schema":return"schemas";case"Parameter":return"parameters";case"Response":return"responses";case"Example":return"examples";case"RequestBody":return"requestBodies";case"Header":return"headers";case"SecuritySchema":return"securitySchemes";case"Link":return"links";case"Callback":return"callbacks";default:return null}case d.OasMajorVersion.Version2:switch(e){case"Schema":return"definitions";case"Parameter":return"parameters";case"Response":return"responses";default:return null}}}function _(e,t,n,r,a,s){let l;const c={ref:{leave(o,l,c){if(!c.location||void 0===c.node)return void m.reportUnresolvedRef(c,l.report,l.location);if(c.location.source===r.source&&c.location.source===l.location.source&&"scalar"!==l.type.name&&!t)return;if(n&&y.isRedoclyRegistryURL(o.$ref))return;if(s&&f.isAbsoluteUrl(o.$ref))return;const d=k(l.type.name,e);d?t?(p(d,c,l),u(o,c,l)):(o.$ref=p(d,c,l),function(e,t,n){const o=i.makeRefId(n.location.source.absoluteRef,e.$ref);a.set(o,{document:r,isRemote:!1,node:t.node,nodePointer:e.$ref,resolved:!0})}(o,c,l)):u(o,c,l)}},DefinitionRoot:{enter(t){e===d.OasMajorVersion.Version3?l=t.components=t.components||{}:e===d.OasMajorVersion.Version2&&(l=t)}}};function u(e,t,n){g.isPlainObject(t.node)?(delete e.$ref,Object.assign(e,t.node)):n.parent[n.key]=t.node}function p(t,n,r){l[t]=l[t]||{};const o=function(e,t,n){const[r,o]=[e.location.source.absoluteRef,e.location.pointer],i=l[t];let a="";const s=o.slice(2).split("/").filter(Boolean);for(;s.length>0;)if(a=s.pop()+(a?`-${a}`:""),!i||!i[a]||h(i[a],e,n))return a;if(a=f.refBaseName(r)+(a?`_${a}`:""),!i[a]||h(i[a],e,n))return a;const c=a;let u=2;for(;i[a]&&!h(i[a],e,n);)a=`${c}-${u}`,u++;return i[a]||n.report({message:`Two schemas are referenced with the same name but different content. Renamed ${c} to ${a}.`,location:n.location,forceSeverity:"warn"}),a}(n,t,r);return l[t][o]=n.node,e===d.OasMajorVersion.Version3?`#/components/${t}/${o}`:`#/${t}/${o}`}function h(e,t,n){var r;return!(!f.isRef(e)||(null===(r=n.resolve(e).location)||void 0===r?void 0:r.absolutePointer)!==t.location.absolutePointer)||o(e,t.node)}return e===d.OasMajorVersion.Version3&&(c.DiscriminatorMapping={leave(n,r){for(const o of Object.keys(n)){const i=n[o],a=r.resolve({$ref:i});if(!a.location||void 0===a.node)return void m.reportUnresolvedRef(a,r.report,r.location.child(o));const s=k("Schema",e);t?p(s,a,r):n[o]=p(s,a,r)}}}),c}!function(e){e.Version2="oas2",e.Version3_0="oas3_0",e.Version3_1="oas3_1"}(w=t.OasVersion||(t.OasVersion={})),t.bundle=function(e){return r(this,void 0,void 0,(function*(){const{ref:t,doc:n,externalRefResolver:r=new i.BaseResolver(e.config.resolve),base:o=null}=e;if(!t&&!n)throw new Error("Document or reference is required.\n");const a=void 0!==n?n:yield r.resolveDocument(o,t,!0);if(a instanceof Error)throw a;return x(Object.assign(Object.assign({document:a},e),{config:e.config.lint,externalRefResolver:r}))}))},t.bundleDocument=x,t.mapTypeToComponent=k},6877:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"error","info-contact":"error","info-license":"error","info-license-url":"error","tag-description":"error","tags-alphabetical":"error","parameter-description":"error","no-identical-paths":"error","no-ambiguous-paths":"error","no-path-trailing-slash":"error","path-segment-plural":"error","path-declaration-must-exist":"error","path-not-include-query":"error","path-parameters-defined":"error","operation-description":"error","operation-2xx-response":"error","operation-4xx-response":"error",assertions:"error","operation-operationId":"error","operation-summary":"error","operation-operationId-unique":"error","operation-operationId-url-safe":"error","operation-parameters-unique":"error","operation-tag-defined":"error","operation-security-defined":"error","operation-singular-tag":"error","no-unresolved-refs":"error","no-enum-type-mismatch":"error","boolean-parameter-prefixes":"error","paths-kebab-case":"error","no-http-verbs-in-paths":"error","path-excludes-patterns":{severity:"error",patterns:[]},"request-mime-type":"error",spec:"error","no-invalid-schema-examples":"error","no-invalid-parameter-examples":"error","scalar-property-missing-example":"error"},oas3_0Rules:{"no-invalid-media-type-examples":"error","no-server-example.com":"error","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"error","no-undefined-server-variable":"error","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"error","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"error","no-undefined-server-variable":"error","no-servers-empty-enum":"error"}}},6242:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultPlugin=t.builtInConfigs=void 0;const r=n(8057),o=n(6877),i=n(9016),a=n(226),s=n(7523),l=n(226),c=n(7523),u=n(1753),p=n(7060);t.builtInConfigs={recommended:r.default,minimal:i.default,all:o.default,"redocly-registry":{decorators:{"registry-dependencies":"on"}}},t.defaultPlugin={id:"",rules:{oas3:a.rules,oas2:s.rules},preprocessors:{oas3:l.preprocessors,oas2:c.preprocessors},decorators:{oas3:u.decorators,oas2:p.decorators},configs:t.builtInConfigs}},7040:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))},o=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o{if(p.isString(e)&&s.isAbsoluteUrl(e))throw new Error(a.red("We don't support remote plugins yet."));const o=p.isString(e)?n(i.resolve(i.dirname(t),e)):e,l=o.id;if("string"!=typeof l)throw new Error(a.red(`Plugin must define \`id\` property in ${a.blue(e.toString())}.`));if(r.has(l)){const t=r.get(l);throw new Error(a.red(`Plugin "id" must be unique. Plugin ${a.blue(e.toString())} uses id "${a.blue(l)}" already seen in ${a.blue(t)}`))}r.set(l,e.toString());const c=Object.assign(Object.assign({id:l},o.configs?{configs:o.configs}:{}),o.typeExtension?{typeExtension:o.typeExtension}:{});if(o.rules){if(!o.rules.oas3&&!o.rules.oas2)throw new Error(`Plugin rules must have \`oas3\` or \`oas2\` rules "${e}.`);c.rules={},o.rules.oas3&&(c.rules.oas3=u.prefixRules(o.rules.oas3,l)),o.rules.oas2&&(c.rules.oas2=u.prefixRules(o.rules.oas2,l))}if(o.preprocessors){if(!o.preprocessors.oas3&&!o.preprocessors.oas2)throw new Error(`Plugin \`preprocessors\` must have \`oas3\` or \`oas2\` preprocessors "${e}.`);c.preprocessors={},o.preprocessors.oas3&&(c.preprocessors.oas3=u.prefixRules(o.preprocessors.oas3,l)),o.preprocessors.oas2&&(c.preprocessors.oas2=u.prefixRules(o.preprocessors.oas2,l))}if(o.decorators){if(!o.decorators.oas3&&!o.decorators.oas2)throw new Error(`Plugin \`decorators\` must have \`oas3\` or \`oas2\` decorators "${e}.`);c.decorators={},o.decorators.oas3&&(c.decorators.oas3=u.prefixRules(o.decorators.oas3,l)),o.decorators.oas2&&(c.decorators.oas2=u.prefixRules(o.decorators.oas2,l))}return c})).filter(p.notUndefined)}function h({rawConfig:e,configPath:t="",resolver:n}){var o,i;return r(this,void 0,void 0,(function*(){const{apis:r={},lint:a={}}=e;let s={};for(const[e,l]of Object.entries(r||{})){if(null===(i=null===(o=l.lint)||void 0===o?void 0:o.extends)||void 0===i?void 0:i.some(p.isNotString))throw new Error("Error configuration format not detected in extends value must contain strings");const r=v(a,l.lint),c=yield g({lintConfig:r,configPath:t,resolver:n});s[e]=Object.assign(Object.assign({},l),{lint:c})}return s}))}function m({lintConfig:e,configPath:t="",resolver:n=new l.BaseResolver},a=[],d=[]){var h,g,v;return r(this,void 0,void 0,(function*(){if(a.includes(t))throw new Error(`Circular dependency in config file: "${t}"`);const l=u.getUniquePlugins(f([...(null==e?void 0:e.plugins)||[],c.defaultPlugin],t)),b=null===(h=null==e?void 0:e.plugins)||void 0===h?void 0:h.filter(p.isString).map((e=>i.resolve(i.dirname(t),e))),w=s.isAbsoluteUrl(t)?t:t&&i.resolve(t),x=yield Promise.all((null===(g=null==e?void 0:e.extends)||void 0===g?void 0:g.map((e=>r(this,void 0,void 0,(function*(){if(!s.isAbsoluteUrl(e)&&!i.extname(e))return y(e,l);const o=s.isAbsoluteUrl(e)?e:s.isAbsoluteUrl(t)?new URL(e,t).href:i.resolve(i.dirname(t),e),c=yield function(e,t){return r(this,void 0,void 0,(function*(){try{const n=yield t.loadExternalRef(e),r=u.transformConfig(p.parseYaml(n.body));if(!r.lint)throw new Error(`Lint configuration format not detected: "${e}"`);return r.lint}catch(t){throw new Error(`Failed to load "${e}": ${t.message}`)}}))}(o,n);return yield m({lintConfig:c,configPath:o,resolver:n},[...a,w],d)})))))||[]),k=u.mergeExtends([...x,Object.assign(Object.assign({},e),{plugins:l,extends:void 0,extendPaths:[...a,w],pluginPaths:b})]),{plugins:_=[]}=k,O=o(k,["plugins"]);return Object.assign(Object.assign({},O),{extendPaths:null===(v=O.extendPaths)||void 0===v?void 0:v.filter((e=>e&&!s.isAbsoluteUrl(e))),plugins:u.getUniquePlugins(_),recommendedFallback:null==e?void 0:e.recommendedFallback,doNotResolveExamples:null==e?void 0:e.doNotResolveExamples})}))}function g(e,t=[],n=[]){return r(this,void 0,void 0,(function*(){const r=yield m(e,t,n);return Object.assign(Object.assign({},r),{rules:r.rules&&b(r.rules)})}))}function y(e,t){var n;const{pluginId:r,configName:o}=u.parsePresetName(e),i=t.find((e=>e.id===r));if(!i)throw new Error(`Invalid config ${a.red(e)}: plugin ${r} is not included.`);const s=null===(n=i.configs)||void 0===n?void 0:n[o];if(!s)throw new Error(r?`Invalid config ${a.red(e)}: plugin ${r} doesn't export config with name ${o}.`:`Invalid config ${a.red(e)}: there is no such built-in config.`);return s}function v(e,t){return Object.assign(Object.assign(Object.assign({},e),t),{rules:Object.assign(Object.assign({},null==e?void 0:e.rules),null==t?void 0:t.rules),oas2Rules:Object.assign(Object.assign({},null==e?void 0:e.oas2Rules),null==t?void 0:t.oas2Rules),oas3_0Rules:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Rules),null==t?void 0:t.oas3_0Rules),oas3_1Rules:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Rules),null==t?void 0:t.oas3_1Rules),preprocessors:Object.assign(Object.assign({},null==e?void 0:e.preprocessors),null==t?void 0:t.preprocessors),oas2Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas2Preprocessors),null==t?void 0:t.oas2Preprocessors),oas3_0Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Preprocessors),null==t?void 0:t.oas3_0Preprocessors),oas3_1Preprocessors:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Preprocessors),null==t?void 0:t.oas3_1Preprocessors),decorators:Object.assign(Object.assign({},null==e?void 0:e.decorators),null==t?void 0:t.decorators),oas2Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas2Decorators),null==t?void 0:t.oas2Decorators),oas3_0Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas3_0Decorators),null==t?void 0:t.oas3_0Decorators),oas3_1Decorators:Object.assign(Object.assign({},null==e?void 0:e.oas3_1Decorators),null==t?void 0:t.oas3_1Decorators),recommendedFallback:!(null==t?void 0:t.extends)&&e.recommendedFallback})}function b(e){if(!e)return e;const t={},n=[];for(const[r,o]of Object.entries(e))if(r.startsWith("assert/")&&"object"==typeof o&&null!==o){const e=o;n.push(Object.assign(Object.assign({},e),{assertionId:r.replace("assert/","")}))}else t[r]=o;return n.length>0&&(t.assertions=n),t}t.resolveConfig=function(e,t){var n,o,i,a,s;return r(this,void 0,void 0,(function*(){if(null===(o=null===(n=e.lint)||void 0===n?void 0:n.extends)||void 0===o?void 0:o.some(p.isNotString))throw new Error("Error configuration format not detected in extends value must contain strings");const r=new l.BaseResolver(u.getResolveConfig(e.resolve)),c=null!==(a=null===(i=null==e?void 0:e.lint)||void 0===i?void 0:i.extends)&&void 0!==a?a:["recommended"],f=!(null===(s=null==e?void 0:e.lint)||void 0===s?void 0:s.extends),m=Object.assign(Object.assign({},null==e?void 0:e.lint),{extends:c,recommendedFallback:f}),y=yield h({rawConfig:Object.assign(Object.assign({},e),{lint:m}),configPath:t,resolver:r}),v=yield g({lintConfig:m,configPath:t,resolver:r});return new d.Config(Object.assign(Object.assign({},e),{apis:y,lint:v}),t)}))},t.resolvePlugins=f,t.resolveApis=h,t.resolveLint=g,t.resolvePreset=y},3777:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Config=t.LintConfig=t.AVAILABLE_REGIONS=t.DOMAINS=t.DEFAULT_REGION=t.IGNORE_FILE=t.env=void 0;const r=n(5101),o=n(6470),i=n(5273),a=n(771),s=n(1510),l=n(2565);t.env="undefined"!=typeof process&&{}||{},t.IGNORE_FILE=".redocly.lint-ignore.yaml",t.DEFAULT_REGION="us",t.DOMAINS=function(){const e={us:"redocly.com",eu:"eu.redocly.com"},n=t.env.REDOCLY_DOMAIN;return(null==n?void 0:n.endsWith(".redocly.host"))&&(e[n.split(".")[0]]=n),"redoc.online"===n&&(e[n]=n),e}(),t.AVAILABLE_REGIONS=Object.keys(t.DOMAINS);class c{constructor(e,n){this.rawConfig=e,this.configFile=n,this.ignore={},this._usedRules=new Set,this._usedVersions=new Set,this.plugins=e.plugins||[],this.doNotResolveExamples=!!e.doNotResolveExamples,this.recommendedFallback=e.recommendedFallback||!1,this.rules={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.rules),e.oas2Rules),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.rules),e.oas3_0Rules),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.rules),e.oas3_1Rules)},this.preprocessors={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.preprocessors),e.oas2Preprocessors),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.preprocessors),e.oas3_0Preprocessors),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.preprocessors),e.oas3_1Preprocessors)},this.decorators={[s.OasVersion.Version2]:Object.assign(Object.assign({},e.decorators),e.oas2Decorators),[s.OasVersion.Version3_0]:Object.assign(Object.assign({},e.decorators),e.oas3_0Decorators),[s.OasVersion.Version3_1]:Object.assign(Object.assign({},e.decorators),e.oas3_1Decorators)},this.extendPaths=e.extendPaths||[],this.pluginPaths=e.pluginPaths||[];const a=this.configFile?o.dirname(this.configFile):"undefined"!=typeof process&&process.cwd()||"",l=o.join(a,t.IGNORE_FILE);if(r.hasOwnProperty("existsSync")&&r.existsSync(l)){this.ignore=i.parseYaml(r.readFileSync(l,"utf-8"))||{};for(const e of Object.keys(this.ignore)){this.ignore[o.resolve(o.dirname(l),e)]=this.ignore[e];for(const t of Object.keys(this.ignore[e]))this.ignore[e][t]=new Set(this.ignore[e][t]);delete this.ignore[e]}}}saveIgnore(){const e=this.configFile?o.dirname(this.configFile):process.cwd(),n=o.join(e,t.IGNORE_FILE),s={};for(const t of Object.keys(this.ignore)){const n=s[a.slash(o.relative(e,t))]=this.ignore[t];for(const e of Object.keys(n))n[e]=Array.from(n[e])}r.writeFileSync(n,"# This file instructs Redocly's linter to ignore the rules contained for specific parts of your API.\n# See https://redoc.ly/docs/cli/ for more information.\n"+i.stringifyYaml(s))}addIgnore(e){const t=this.ignore,n=e.location[0];if(void 0===n.pointer)return;const r=t[n.source.absoluteRef]=t[n.source.absoluteRef]||{};(r[e.ruleId]=r[e.ruleId]||new Set).add(n.pointer)}addProblemToIgnore(e){const t=e.location[0];if(void 0===t.pointer)return e;const n=(this.ignore[t.source.absoluteRef]||{})[e.ruleId],r=n&&n.has(t.pointer);return r?Object.assign(Object.assign({},e),{ignored:r}):e}extendTypes(e,t){let n=e;for(const e of this.plugins)if(void 0!==e.typeExtension)switch(t){case s.OasVersion.Version3_0:case s.OasVersion.Version3_1:if(!e.typeExtension.oas3)continue;n=e.typeExtension.oas3(n,t);case s.OasVersion.Version2:if(!e.typeExtension.oas2)continue;n=e.typeExtension.oas2(n,t);default:throw new Error("Not implemented")}return n}getRuleSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.rules[t][e]||"off";return"string"==typeof n?{severity:n}:Object.assign({severity:"error"},n)}getPreprocessorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.preprocessors[t][e]||"off";return"string"==typeof n?{severity:"on"===n?"error":n}:Object.assign({severity:"error"},n)}getDecoratorSettings(e,t){this._usedRules.add(e),this._usedVersions.add(t);const n=this.decorators[t][e]||"off";return"string"==typeof n?{severity:"on"===n?"error":n}:Object.assign({severity:"error"},n)}getUnusedRules(){const e=[],t=[],n=[];for(const r of Array.from(this._usedVersions))e.push(...Object.keys(this.rules[r]).filter((e=>!this._usedRules.has(e)))),t.push(...Object.keys(this.decorators[r]).filter((e=>!this._usedRules.has(e)))),n.push(...Object.keys(this.preprocessors[r]).filter((e=>!this._usedRules.has(e))));return{rules:e,preprocessors:n,decorators:t}}getRulesForOasVersion(e){switch(e){case s.OasMajorVersion.Version3:const e=[];return this.plugins.forEach((t=>{var n;return(null===(n=t.preprocessors)||void 0===n?void 0:n.oas3)&&e.push(t.preprocessors.oas3)})),this.plugins.forEach((t=>{var n;return(null===(n=t.rules)||void 0===n?void 0:n.oas3)&&e.push(t.rules.oas3)})),this.plugins.forEach((t=>{var n;return(null===(n=t.decorators)||void 0===n?void 0:n.oas3)&&e.push(t.decorators.oas3)})),e;case s.OasMajorVersion.Version2:const t=[];return this.plugins.forEach((e=>{var n;return(null===(n=e.preprocessors)||void 0===n?void 0:n.oas2)&&t.push(e.preprocessors.oas2)})),this.plugins.forEach((e=>{var n;return(null===(n=e.rules)||void 0===n?void 0:n.oas2)&&t.push(e.rules.oas2)})),this.plugins.forEach((e=>{var n;return(null===(n=e.decorators)||void 0===n?void 0:n.oas2)&&t.push(e.decorators.oas2)})),t}}skipRules(e){for(const t of e||[])for(const e of Object.values(s.OasVersion))this.rules[e][t]&&(this.rules[e][t]="off")}skipPreprocessors(e){for(const t of e||[])for(const e of Object.values(s.OasVersion))this.preprocessors[e][t]&&(this.preprocessors[e][t]="off")}skipDecorators(e){for(const t of e||[])for(const e of Object.values(s.OasVersion))this.decorators[e][t]&&(this.decorators[e][t]="off")}}t.LintConfig=c,t.Config=class{constructor(e,t){this.rawConfig=e,this.configFile=t,this.apis=e.apis||{},this.lint=new c(e.lint||{},t),this["features.openapi"]=e["features.openapi"]||{},this["features.mockServer"]=e["features.mockServer"]||{},this.resolve=l.getResolveConfig(null==e?void 0:e.resolve),this.region=e.region,this.organization=e.organization}}},8698:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),o(n(3777),t),o(n(3865),t),o(n(5030),t),o(n(6242),t),o(n(9129),t),o(n(2565),t),o(n(7040),t)},9129:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getConfig=t.findConfig=t.CONFIG_FILE_NAMES=t.loadConfig=void 0;const o=n(5101),i=n(6470),a=n(1094),s=n(771),l=n(3777),c=n(2565),u=n(7040);function p(e){if(!o.hasOwnProperty("existsSync"))return;const n=t.CONFIG_FILE_NAMES.map((t=>e?i.resolve(e,t):t)).filter(o.existsSync);if(n.length>1)throw new Error(`\n Multiple configuration files are not allowed. \n Found the following files: ${n.join(", ")}. \n Please use 'redocly.yaml' instead.\n `);return n[0]}function d(e=p()){return r(this,void 0,void 0,(function*(){if(!e)return{};try{const t=(yield s.loadYaml(e))||{};return c.transformConfig(t)}catch(t){throw new Error(`Error parsing config file at '${e}': ${t.message}`)}}))}t.loadConfig=function(e=p(),t,n){return r(this,void 0,void 0,(function*(){const o=yield d(e);return"function"==typeof n&&(yield n(o)),yield function({rawConfig:e,customExtends:t,configPath:n}){var o;return r(this,void 0,void 0,(function*(){void 0!==t?(e.lint=e.lint||{},e.lint.extends=t):s.isEmptyObject(e);const r=new a.RedoclyClient,i=yield r.getTokens();if(i.length){e.resolve||(e.resolve={}),e.resolve.http||(e.resolve.http={}),e.resolve.http.headers=[...null!==(o=e.resolve.http.headers)&&void 0!==o?o:[]];for(const t of i){const n=l.DOMAINS[t.region];e.resolve.http.headers.push({matches:`https://api.${n}/registry/**`,name:"Authorization",envVariable:void 0,value:t.token},..."us"===t.region?[{matches:"https://api.redoc.ly/registry/**",name:"Authorization",envVariable:void 0,value:t.token}]:[])}}return u.resolveConfig(e,n)}))}({rawConfig:o,customExtends:t,configPath:e})}))},t.CONFIG_FILE_NAMES=["redocly.yaml","redocly.yml",".redocly.yaml",".redocly.yml"],t.findConfig=p,t.getConfig=d},9016:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"warn","info-contact":"off","info-license":"off","info-license-url":"off","tag-description":"warn","tags-alphabetical":"off","parameter-description":"off","no-path-trailing-slash":"warn","no-identical-paths":"warn","no-ambiguous-paths":"warn","path-declaration-must-exist":"warn","path-not-include-query":"warn","path-parameters-defined":"warn","operation-description":"off","operation-2xx-response":"warn","operation-4xx-response":"off",assertions:"warn","operation-operationId":"warn","operation-summary":"warn","operation-operationId-unique":"warn","operation-parameters-unique":"warn","operation-tag-defined":"off","operation-security-defined":"warn","operation-operationId-url-safe":"warn","operation-singular-tag":"off","no-unresolved-refs":"error","no-enum-type-mismatch":"warn","boolean-parameter-prefixes":"off","paths-kebab-case":"off",spec:"error"},oas3_0Rules:{"no-invalid-media-type-examples":{severity:"warn",disallowAdditionalProperties:!0},"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"warn","no-example-value-and-externalValue":"warn","no-unused-components":"warn","no-undefined-server-variable":"warn","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"warn","no-example-value-and-externalValue":"warn","no-unused-components":"warn","no-undefined-server-variable":"warn","no-servers-empty-enum":"error"}}},8057:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={rules:{"info-description":"warn","info-contact":"off","info-license":"warn","info-license-url":"warn","tag-description":"warn","tags-alphabetical":"off","parameter-description":"off","no-path-trailing-slash":"error","no-identical-paths":"error","no-ambiguous-paths":"warn","path-declaration-must-exist":"error","path-not-include-query":"error","path-parameters-defined":"error","operation-description":"off","operation-2xx-response":"warn",assertions:"warn","operation-4xx-response":"warn","operation-operationId":"warn","operation-summary":"error","operation-operationId-unique":"error","operation-operationId-url-safe":"error","operation-parameters-unique":"error","operation-tag-defined":"off","operation-security-defined":"error","operation-singular-tag":"off","no-unresolved-refs":"error","no-enum-type-mismatch":"error","boolean-parameter-prefixes":"off","paths-kebab-case":"off",spec:"error"},oas3_0Rules:{"no-invalid-media-type-examples":{severity:"warn",disallowAdditionalProperties:!0},"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"warn","no-undefined-server-variable":"error","no-servers-empty-enum":"error"},oas3_1Rules:{"no-server-example.com":"warn","no-server-trailing-slash":"error","no-empty-servers":"error","no-example-value-and-externalValue":"error","no-unused-components":"warn","no-undefined-server-variable":"error","no-servers-empty-enum":"error"}}},5030:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initRules=void 0;const r=n(771);t.initRules=function(e,t,n,o){return e.flatMap((e=>Object.keys(e).map((r=>{const i=e[r],a="rules"===n?t.getRuleSettings(r,o):"preprocessors"===n?t.getPreprocessorSettings(r,o):t.getDecoratorSettings(r,o);if("off"===a.severity)return;const s=i(a);return Array.isArray(s)?s.map((e=>({severity:a.severity,ruleId:r,visitor:e}))):{severity:a.severity,ruleId:r,visitor:s}})))).flatMap((e=>e)).filter(r.notUndefined)}},3865:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},2565:function(e,t,n){"use strict";var r=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o-1){const[t,n]=e.split("/");return{pluginId:t,configName:n}}return{pluginId:"",configName:e}},t.transformApiDefinitionsToApis=s,t.prefixRules=function(e,t){if(!t)return e;const n={};for(const r of Object.keys(e))n[`${t}/${r}`]=e[r];return n},t.mergeExtends=function(e){const t={rules:{},oas2Rules:{},oas3_0Rules:{},oas3_1Rules:{},preprocessors:{},oas2Preprocessors:{},oas3_0Preprocessors:{},oas3_1Preprocessors:{},decorators:{},oas2Decorators:{},oas3_0Decorators:{},oas3_1Decorators:{},plugins:[],pluginPaths:[],extendPaths:[]};for(let n of e){if(n.extends)throw new Error(`\`extends\` is not supported in shared configs yet: ${JSON.stringify(n,null,2)}.`);Object.assign(t.rules,n.rules),Object.assign(t.oas2Rules,n.oas2Rules),i.assignExisting(t.oas2Rules,n.rules||{}),Object.assign(t.oas3_0Rules,n.oas3_0Rules),i.assignExisting(t.oas3_0Rules,n.rules||{}),Object.assign(t.oas3_1Rules,n.oas3_1Rules),i.assignExisting(t.oas3_1Rules,n.rules||{}),Object.assign(t.preprocessors,n.preprocessors),Object.assign(t.oas2Preprocessors,n.oas2Preprocessors),i.assignExisting(t.oas2Preprocessors,n.preprocessors||{}),Object.assign(t.oas3_0Preprocessors,n.oas3_0Preprocessors),i.assignExisting(t.oas3_0Preprocessors,n.preprocessors||{}),Object.assign(t.oas3_1Preprocessors,n.oas3_1Preprocessors),i.assignExisting(t.oas3_1Preprocessors,n.preprocessors||{}),Object.assign(t.decorators,n.decorators),Object.assign(t.oas2Decorators,n.oas2Decorators),i.assignExisting(t.oas2Decorators,n.decorators||{}),Object.assign(t.oas3_0Decorators,n.oas3_0Decorators),i.assignExisting(t.oas3_0Decorators,n.decorators||{}),Object.assign(t.oas3_1Decorators,n.oas3_1Decorators),i.assignExisting(t.oas3_1Decorators,n.decorators||{}),t.plugins.push(...n.plugins||[]),t.pluginPaths.push(...n.pluginPaths||[]),t.extendPaths.push(...new Set(n.extendPaths))}return t},t.getMergedConfig=function(e,t){var n,r,o,i,s,l;const c=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.lint)||void 0===t?void 0:t.extendPaths})),null===(r=null===(n=e.rawConfig)||void 0===n?void 0:n.lint)||void 0===r?void 0:r.extendPaths].flat().filter(Boolean),u=[...Object.values(e.apis).map((e=>{var t;return null===(t=null==e?void 0:e.lint)||void 0===t?void 0:t.pluginPaths})),null===(i=null===(o=e.rawConfig)||void 0===o?void 0:o.lint)||void 0===i?void 0:i.pluginPaths].flat().filter(Boolean);return t?new a.Config(Object.assign(Object.assign({},e.rawConfig),{lint:Object.assign(Object.assign({},e.apis[t]?e.apis[t].lint:e.rawConfig.lint),{extendPaths:c,pluginPaths:u}),"features.openapi":Object.assign(Object.assign({},e["features.openapi"]),null===(s=e.apis[t])||void 0===s?void 0:s["features.openapi"]),"features.mockServer":Object.assign(Object.assign({},e["features.mockServer"]),null===(l=e.apis[t])||void 0===l?void 0:l["features.mockServer"])}),e.configFile):e},t.transformConfig=function(e){if(e.apis&&e.apiDefinitions)throw new Error("Do not use 'apiDefinitions' field. Use 'apis' instead.\n");if(e["features.openapi"]&&e.referenceDocs)throw new Error("Do not use 'referenceDocs' field. Use 'features.openapi' instead.\n");const t=e,{apiDefinitions:n,referenceDocs:i}=t,a=r(t,["apiDefinitions","referenceDocs"]);return n&&process.stderr.write(`The ${o.yellow("apiDefinitions")} field is deprecated. Use ${o.green("apis")} instead. Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`),i&&process.stderr.write(`The ${o.yellow("referenceDocs")} field is deprecated. Use ${o.green("features.openapi")} instead. Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`),Object.assign({"features.openapi":i,apis:s(n)},a)},t.getResolveConfig=function(e){var t,n;return{http:{headers:null!==(n=null===(t=null==e?void 0:e.http)||void 0===t?void 0:t.headers)&&void 0!==n?n:[],customFetch:void 0}}},t.getUniquePlugins=function(e){const t=new Set,n=[];for(const r of e)t.has(r.id)?r.id&&process.stderr.write(`Duplicate plugin id "${o.yellow(r.id)}".\n`):(n.push(r),t.add(r.id));return n}},1988:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkIfMatchByStrategy=t.filter=void 0;const r=n(7468),o=n(771);function i(e){return Array.isArray(e)?e:[e]}t.filter=function(e,t,n){const{parent:i,key:a}=t;let s=!1;if(Array.isArray(e))for(let o=0;oe.includes(t))):"all"===n&&t.every((t=>e.includes(t)))):e===t)}},9244:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FilterIn=void 0;const r=n(1988);t.FilterIn=({property:e,value:t,matchStrategy:n})=>{const o=n||"any",i=n=>(null==n?void 0:n[e])&&!r.checkIfMatchByStrategy(null==n?void 0:n[e],t,o);return{any:{enter:(e,t)=>{r.filter(e,t,i)}}}}},8623:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FilterOut=void 0;const r=n(1988);t.FilterOut=({property:e,value:t,matchStrategy:n})=>{const o=n||"any",i=n=>r.checkIfMatchByStrategy(null==n?void 0:n[e],t,o);return{any:{enter:(e,t)=>{r.filter(e,t,i)}}}}},4555:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoDescriptionOverride=void 0;const r=n(771);t.InfoDescriptionOverride=({filePath:e})=>({Info:{leave(t,{report:n,location:o}){if(!e)throw new Error('Parameter "filePath" is not provided for "info-description-override" rule');try{t.description=r.readFileAsStringSync(e)}catch(e){n({message:`Failed to read markdown override file for "info.description".\n${e.message}`,location:o.child("description")})}}}})},7802:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationDescriptionOverride=void 0;const r=n(771);t.OperationDescriptionOverride=({operationIds:e})=>({Operation:{leave(t,{report:n,location:o}){if(!t.operationId)return;if(!e)throw new Error('Parameter "operationIds" is not provided for "operation-description-override" rule');const i=t.operationId;if(e[i])try{t.description=r.readFileAsStringSync(e[i])}catch(e){n({message:`Failed to read markdown override file for operation "${i}".\n${e.message}`,location:o.child("operationId").key()})}}}})},2287:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RegistryDependencies=void 0;const r=n(1094);t.RegistryDependencies=()=>{let e=new Set;return{DefinitionRoot:{leave(t,n){n.getVisitorData().links=Array.from(e)}},ref(t){if(t.$ref){const n=t.$ref.split("#/")[0];r.isRedoclyRegistryURL(n)&&e.add(n)}}}}},5830:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveXInternal=void 0;const r=n(771),o=n(7468);t.RemoveXInternal=({internalFlagProperty:e})=>{const t=e||"x-internal";return{any:{enter:(e,n)=>{!function(e,n){var i,a,s,l;const{parent:c,key:u}=n;let p=!1;if(Array.isArray(e))for(let r=0;r({Tag:{leave(t,{report:n}){if(!e)throw new Error('Parameter "tagNames" is not provided for "tag-description-override" rule');if(e[t.name])try{t.description=r.readFileAsStringSync(e[t.name])}catch(e){n({message:`Failed to read markdown override file for tag "${t.name}".\n${e.message}`})}}}})},7060:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decorators=void 0;const r=n(2287),o=n(7802),i=n(423),a=n(4555),s=n(5830),l=n(9244),c=n(8623);t.decorators={"registry-dependencies":r.RegistryDependencies,"operation-description-override":o.OperationDescriptionOverride,"tag-description-override":i.TagDescriptionOverride,"info-description-override":a.InfoDescriptionOverride,"remove-x-internal":s.RemoveXInternal,"filter-in":l.FilterIn,"filter-out":c.FilterOut}},1753:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decorators=void 0;const r=n(2287),o=n(7802),i=n(423),a=n(4555),s=n(5830),l=n(9244),c=n(8623);t.decorators={"registry-dependencies":r.RegistryDependencies,"operation-description-override":o.OperationDescriptionOverride,"tag-description-override":i.TagDescriptionOverride,"info-description-override":a.InfoDescriptionOverride,"remove-x-internal":s.RemoveXInternal,"filter-in":l.FilterIn,"filter-out":c.FilterOut}},5273:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.stringifyYaml=t.parseYaml=void 0;const r=n(3320),o=r.JSON_SCHEMA.extend({implicit:[r.types.merge],explicit:[r.types.binary,r.types.omap,r.types.pairs,r.types.set]});t.parseYaml=(e,t)=>r.load(e,Object.assign({schema:o},t)),t.stringifyYaml=(e,t)=>r.dump(e,t)},1510:function(e,t){"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.openAPIMajor=t.detectOpenAPI=t.OasMajorVersion=t.OasVersion=void 0,function(e){e.Version2="oas2",e.Version3_0="oas3_0",e.Version3_1="oas3_1"}(n=t.OasVersion||(t.OasVersion={})),function(e){e.Version2="oas2",e.Version3="oas3"}(r=t.OasMajorVersion||(t.OasMajorVersion={})),t.detectOpenAPI=function(e){if("object"!=typeof e)throw new Error("Document must be JSON object, got "+typeof e);if(!e.openapi&&!e.swagger)throw new Error("This doesn’t look like an OpenAPI document.\n");if(e.openapi&&"string"!=typeof e.openapi)throw new Error(`Invalid OpenAPI version: should be a string but got "${typeof e.openapi}"`);if(e.openapi&&e.openapi.startsWith("3.0"))return n.Version3_0;if(e.openapi&&e.openapi.startsWith("3.1"))return n.Version3_1;if(e.swagger&&"2.0"===e.swagger)return n.Version2;throw new Error(`Unsupported OpenAPI Version: ${e.openapi||e.swagger}`)},t.openAPIMajor=function(e){return e===n.Version2?r.Version2:r.Version3}},1094:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isRedoclyRegistryURL=t.RedoclyClient=void 0;const o=n(2116),i=n(6470),a=n(6918),s=n(8836),l=n(1390),c=n(3777),u=n(771),p=".redocly-config.json";t.RedoclyClient=class{constructor(e){this.accessTokens={},this.region=this.loadRegion(e),this.loadTokens(),this.domain=e?c.DOMAINS[e]:c.env.REDOCLY_DOMAIN||c.DOMAINS[c.DEFAULT_REGION],c.env.REDOCLY_DOMAIN=this.domain,this.registryApi=new l.RegistryApi(this.accessTokens,this.region)}loadRegion(e){if(e&&!c.DOMAINS[e])throw new Error(`Invalid argument: region in config file.\nGiven: ${s.green(e)}, choices: "us", "eu".`);return c.env.REDOCLY_DOMAIN?c.AVAILABLE_REGIONS.find((e=>c.DOMAINS[e]===c.env.REDOCLY_DOMAIN))||c.DEFAULT_REGION:e||c.DEFAULT_REGION}getRegion(){return this.region}hasTokens(){return u.isNotEmptyObject(this.accessTokens)}hasToken(){return!!this.accessTokens[this.region]}getAuthorizationHeader(){return r(this,void 0,void 0,(function*(){return this.accessTokens[this.region]}))}setAccessTokens(e){this.accessTokens=e}loadTokens(){const e=i.resolve(a.homedir(),p),t=this.readCredentialsFile(e);u.isNotEmptyObject(t)&&this.setAccessTokens(Object.assign(Object.assign({},t),t.token&&!t[this.region]&&{[this.region]:t.token})),c.env.REDOCLY_AUTHORIZATION&&this.setAccessTokens(Object.assign(Object.assign({},this.accessTokens),{[this.region]:c.env.REDOCLY_AUTHORIZATION}))}getAllTokens(){return Object.entries(this.accessTokens).filter((([e])=>c.AVAILABLE_REGIONS.includes(e))).map((([e,t])=>({region:e,token:t})))}getValidTokens(){return r(this,void 0,void 0,(function*(){const e=this.getAllTokens(),t=yield Promise.allSettled(e.map((({token:e,region:t})=>this.verifyToken(e,t))));return e.filter(((e,n)=>"fulfilled"===t[n].status)).map((({token:e,region:t})=>({token:e,region:t,valid:!0})))}))}getTokens(){return r(this,void 0,void 0,(function*(){return this.hasTokens()?yield this.getValidTokens():[]}))}isAuthorizedWithRedoclyByRegion(){return r(this,void 0,void 0,(function*(){if(!this.hasTokens())return!1;const e=this.accessTokens[this.region];if(!e)return!1;try{return yield this.verifyToken(e,this.region),!0}catch(e){return!1}}))}isAuthorizedWithRedocly(){return r(this,void 0,void 0,(function*(){return this.hasTokens()&&u.isNotEmptyObject(yield this.getValidTokens())}))}readCredentialsFile(e){return o.existsSync(e)?JSON.parse(o.readFileSync(e,"utf-8")):{}}verifyToken(e,t,n=!1){return r(this,void 0,void 0,(function*(){return this.registryApi.authStatus(e,t,n)}))}login(e,t=!1){return r(this,void 0,void 0,(function*(){const n=i.resolve(a.homedir(),p);try{yield this.verifyToken(e,this.region,t)}catch(e){throw new Error("Authorization failed. Please check if you entered a valid API key.")}const r=Object.assign(Object.assign({},this.readCredentialsFile(n)),{[this.region]:e,token:e});this.accessTokens=r,this.registryApi.setAccessTokens(r),o.writeFileSync(n,JSON.stringify(r,null,2))}))}logout(){const e=i.resolve(a.homedir(),p);o.existsSync(e)&&o.unlinkSync(e)}},t.isRedoclyRegistryURL=function(e){const t=c.env.REDOCLY_DOMAIN||c.DOMAINS[c.DEFAULT_REGION],n="redocly.com"===t?"redoc.ly":t;return!(!e.startsWith(`https://api.${t}/registry/`)&&!e.startsWith(`https://api.${n}/registry/`))}},1390:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.RegistryApi=void 0;const o=n(8150),i=n(3777),a=n(771),s=n(3244).i8;t.RegistryApi=class{constructor(e,t){this.accessTokens=e,this.region=t}get accessToken(){return a.isNotEmptyObject(this.accessTokens)&&this.accessTokens[this.region]}getBaseUrl(e=i.DEFAULT_REGION){return`https://api.${i.DOMAINS[e]}/registry`}setAccessTokens(e){return this.accessTokens=e,this}request(e="",t={},n){return r(this,void 0,void 0,(function*(){const r=Object.assign({},t.headers||{},{"x-redocly-cli-version":s});if(!r.hasOwnProperty("authorization"))throw new Error("Unauthorized");const i=yield o.default(`${this.getBaseUrl(n)}${e}`,Object.assign({},t,{headers:r}));if(401===i.status)throw new Error("Unauthorized");if(404===i.status){const e=yield i.json();throw new Error(e.code)}return i}))}authStatus(e,t,n=!1){return r(this,void 0,void 0,(function*(){try{const n=yield this.request("",{headers:{authorization:e}},t);return yield n.json()}catch(e){throw n&&console.log(e),e}}))}prepareFileUpload({organizationId:e,name:t,version:n,filesHash:o,filename:i,isUpsert:a}){return r(this,void 0,void 0,(function*(){const r=yield this.request(`/${e}/${t}/${n}/prepare-file-upload`,{method:"POST",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({filesHash:o,filename:i,isUpsert:a})},this.region);if(r.ok)return r.json();throw new Error("Could not prepare file upload")}))}pushApi({organizationId:e,name:t,version:n,rootFilePath:o,filePaths:i,branch:a,isUpsert:s,isPublic:l,batchId:c,batchSize:u}){return r(this,void 0,void 0,(function*(){if(!(yield this.request(`/${e}/${t}/${n}`,{method:"PUT",headers:{"content-type":"application/json",authorization:this.accessToken},body:JSON.stringify({rootFilePath:o,filePaths:i,branch:a,isUpsert:s,isPublic:l,batchId:c,batchSize:u})},this.region)).ok)throw new Error("Could not push api")}))}}},7468:function(e,t){"use strict";function n(e,t){return""===e&&(e="#/"),"/"===e[e.length-1]?e+t:e+"/"+t}Object.defineProperty(t,"__esModule",{value:!0}),t.isMappingRef=t.isAbsoluteUrl=t.refBaseName=t.pointerBaseName=t.parsePointer=t.parseRef=t.escapePointer=t.unescapePointer=t.Location=t.isRef=t.joinPointer=void 0,t.joinPointer=n,t.isRef=function(e){return e&&"string"==typeof e.$ref};class r{constructor(e,t){this.source=e,this.pointer=t}child(e){return new r(this.source,n(this.pointer,(Array.isArray(e)?e:[e]).map(i).join("/")))}key(){return Object.assign(Object.assign({},this),{reportOnKey:!0})}get absolutePointer(){return this.source.absoluteRef+("#/"===this.pointer?"":this.pointer)}}function o(e){return decodeURIComponent(e.replace(/~1/g,"/").replace(/~0/g,"~"))}function i(e){return"number"==typeof e?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}t.Location=r,t.unescapePointer=o,t.escapePointer=i,t.parseRef=function(e){const[t,n]=e.split("#/");return{uri:t||null,pointer:n?n.split("/").map(o).filter(Boolean):[]}},t.parsePointer=function(e){return e.substr(2).split("/").map(o)},t.pointerBaseName=function(e){const t=e.split("/");return t[t.length-1]},t.refBaseName=function(e){const t=e.split(/[\/\\]/);return t[t.length-1].replace(/\.[^.]+$/,"")},t.isAbsoluteUrl=function(e){return e.startsWith("http://")||e.startsWith("https://")},t.isMappingRef=function(e){return e.startsWith("#")||e.startsWith("https://")||e.startsWith("http://")||e.startsWith("./")||e.startsWith("../")||e.indexOf("/")>-1}},4182:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.resolveDocument=t.BaseResolver=t.makeDocumentFromString=t.makeRefId=t.YamlParseError=t.ResolveError=t.Source=void 0;const o=n(3197),i=n(6470),a=n(7468),s=n(5220),l=n(771);class c{constructor(e,t,n){this.absoluteRef=e,this.body=t,this.mimeType=n}getAst(e){var t;return void 0===this._ast&&(this._ast=null!==(t=e(this.body,{filename:this.absoluteRef}))&&void 0!==t?t:void 0,this._ast&&0===this._ast.kind&&""===this._ast.value&&1!==this._ast.startPosition&&(this._ast.startPosition=1,this._ast.endPosition=1)),this._ast}getLines(){return void 0===this._lines&&(this._lines=this.body.split(/\r\n|[\n\r]/g)),this._lines}}t.Source=c;class u extends Error{constructor(e){super(e.message),this.originalError=e,Object.setPrototypeOf(this,u.prototype)}}t.ResolveError=u;const p=/\((\d+):(\d+)\)$/;class d extends Error{constructor(e,t){super(e.message.split("\n")[0]),this.originalError=e,this.source=t,Object.setPrototypeOf(this,d.prototype);const[,n,r]=this.message.match(p)||[];this.line=parseInt(n,10),this.col=parseInt(r,10)}}function f(e,t){return e+"::"+t}function h(e,t){return{prev:e,node:t}}t.YamlParseError=d,t.makeRefId=f,t.makeDocumentFromString=function(e,t){const n=new c(t,e);try{return{source:n,parsed:l.parseYaml(e,{filename:t})}}catch(e){throw new d(e,n)}},t.BaseResolver=class{constructor(e={http:{headers:[]}}){this.config=e,this.cache=new Map}getFiles(){return new Set(Array.from(this.cache.keys()))}resolveExternalRef(e,t){return a.isAbsoluteUrl(t)?t:e&&a.isAbsoluteUrl(e)?new URL(t,e).href:i.resolve(e?i.dirname(e):process.cwd(),t)}loadExternalRef(e){return r(this,void 0,void 0,(function*(){try{if(a.isAbsoluteUrl(e)){const{body:t,mimeType:n}=yield l.readFileFromUrl(e,this.config.http);return new c(e,t,n)}return new c(e,yield o.promises.readFile(e,"utf-8"))}catch(e){throw new u(e)}}))}parseDocument(e,t=!1){var n;const r=e.absoluteRef.substr(e.absoluteRef.lastIndexOf("."));if(![".json",".json",".yml",".yaml"].includes(r)&&!(null===(n=e.mimeType)||void 0===n?void 0:n.match(/(json|yaml|openapi)/))&&!t)return{source:e,parsed:e.body};try{return{source:e,parsed:l.parseYaml(e.body,{filename:e.absoluteRef})}}catch(t){throw new d(t,e)}}resolveDocument(e,t,n=!1){return r(this,void 0,void 0,(function*(){const r=this.resolveExternalRef(e,t),o=this.cache.get(r);if(o)return o;const i=this.loadExternalRef(r).then((e=>this.parseDocument(e,n)));return this.cache.set(r,i),i}))}};const m={name:"unknown",properties:{}},g={name:"scalar",properties:{}};t.resolveDocument=function(e){return r(this,void 0,void 0,(function*(){const{rootDocument:t,externalRefResolver:n,rootType:o}=e,i=new Map,l=new Set,c=[];let u;!function e(t,o,u,p){function d(e,t,o){return r(this,void 0,void 0,(function*(){if(function(e,t){for(;e;){if(e.node===t)return!0;e=e.prev}return!1}(o.prev,t))throw new Error("Self-referencing circular pointer");const{uri:r,pointer:s}=a.parseRef(t.$ref),l=null!==r;let c;try{c=l?yield n.resolveDocument(e.source.absoluteRef,r):e}catch(n){const r={resolved:!1,isRemote:l,document:void 0,error:n},o=f(e.source.absoluteRef,t.$ref);return i.set(o,r),r}let u={resolved:!0,document:c,isRemote:l,node:e.parsed,nodePointer:"#/"},p=c.parsed;const m=s;for(let e of m){if("object"!=typeof p){p=void 0;break}if(void 0!==p[e])p=p[e],u.nodePointer=a.joinPointer(u.nodePointer,a.escapePointer(e));else{if(!a.isRef(p)){p=void 0;break}if(u=yield d(c,p,h(o,p)),c=u.document||c,"object"!=typeof u.node){p=void 0;break}p=u.node[e],u.nodePointer=a.joinPointer(u.nodePointer,a.escapePointer(e))}}u.node=p,u.document=c;const g=f(e.source.absoluteRef,t.$ref);return u.document&&a.isRef(p)&&(u=yield d(u.document,p,h(o,p))),i.set(g,u),Object.assign({},u)}))}!function t(n,r,i){if("object"!=typeof n||null===n)return;const u=`${r.name}::${i}`;if(!l.has(u))if(l.add(u),Array.isArray(n)){const e=r.items;if(r!==m&&void 0===e)return;for(let r=0;r{t.resolved&&e(t.node,t.document,t.nodePointer,r)}));c.push(t)}}}(t,p,o.source.absoluteRef+u)}(t.parsed,t,"#/",o);do{u=yield Promise.all(c)}while(c.length!==u.length);return i}))}},7275:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateJsonSchema=t.releaseAjvInstance=void 0;const r=n(5499),o=n(7468);let i=null;t.releaseAjvInstance=function(){i=null},t.validateJsonSchema=function(e,t,n,a,s,l){const c=function(e,t,n,o){const a=function(e,t){return i||(i=new r.default({schemaId:"$id",meta:!0,allErrors:!0,strictSchema:!1,inlineRefs:!1,validateSchema:!1,discriminator:!0,allowUnionTypes:!0,validateFormats:!1,defaultAdditionalProperties:!t,loadSchemaSync(t,n){const r=e({$ref:n},t.split("#")[0]);return!(!r||!r.location)&&Object.assign({$id:r.location.absolutePointer},r.node)},logger:!1})),i}(n,o);return a.getSchema(t.absolutePointer)||a.addSchema(Object.assign({$id:t.absolutePointer},e),t.absolutePointer),a.getSchema(t.absolutePointer)}(t,n,s,l);return c?{valid:!!c(e,{instancePath:a,parentData:{fake:{}},parentDataProperty:"fake",rootData:{},dynamicAnchors:{}}),errors:(c.errors||[]).map((function(e){let t=e.message,n="enum"===e.keyword?e.params.allowedValues:void 0;n&&(t+=` ${n.map((e=>`"${e}"`)).join(", ")}`),"type"===e.keyword&&(t=`type ${t}`);const r=e.instancePath.substring(a.length+1),i=r.substring(r.lastIndexOf("/")+1);if(i&&(t=`\`${i}\` property ${t}`),"additionalProperties"===e.keyword){const n=e.params.additionalProperty;t=`${t} \`${n}\``,e.instancePath+="/"+o.escapePointer(n)}return Object.assign(Object.assign({},e),{message:t,suggest:n})}))}:{valid:!0,errors:[]}}},9740:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.asserts=t.runOnValuesSet=t.runOnKeysSet=void 0;const r=n(771),o=n(5738);t.runOnKeysSet=new Set(["mutuallyExclusive","mutuallyRequired","enum","pattern","minLength","maxLength","casing","sortOrder","disallowed","required","requireAny","ref"]),t.runOnValuesSet=new Set(["pattern","enum","defined","undefined","nonEmpty","minLength","maxLength","casing","sortOrder","ref"]),t.asserts={pattern:(e,t,n)=>{if(void 0===e)return{isValid:!0};const i=r.isString(e)?[e]:e,a=o.regexFromString(t);for(let t of i)if(!(null==a?void 0:a.test(t)))return{isValid:!1,location:r.isString(e)?n:n.key()};return{isValid:!0}},enum:(e,t,n)=>{if(void 0===e)return{isValid:!0};const o=r.isString(e)?[e]:e;for(let i of o)if(!t.includes(i))return{isValid:!1,location:r.isString(e)?n:n.child(i).key()};return{isValid:!0}},defined:(e,t=!0,n)=>{const r=void 0!==e;return{isValid:t?r:!r,location:n}},required:(e,t,n)=>{for(const r of t)if(!e.includes(r))return{isValid:!1,location:n.key()};return{isValid:!0}},disallowed:(e,t,n)=>{if(void 0===e)return{isValid:!0};const o=r.isString(e)?[e]:e;for(let i of o)if(t.includes(i))return{isValid:!1,location:r.isString(e)?n:n.child(i).key()};return{isValid:!0}},undefined:(e,t=!0,n)=>{const r=void 0===e;return{isValid:t?r:!r,location:n}},nonEmpty:(e,t=!0,n)=>{const r=null==e||""===e;return{isValid:t?!r:r,location:n}},minLength:(e,t,n)=>void 0===e?{isValid:!0}:{isValid:e.length>=t,location:n},maxLength:(e,t,n)=>void 0===e?{isValid:!0}:{isValid:e.length<=t,location:n},casing:(e,t,n)=>{if(void 0===e)return{isValid:!0};const o=r.isString(e)?[e]:e;for(let i of o){let o=!1;switch(t){case"camelCase":o=!!i.match(/^[a-z][a-zA-Z0-9]+$/g);break;case"kebab-case":o=!!i.match(/^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/g);break;case"snake_case":o=!!i.match(/^([a-z][a-z0-9]*)(_[a-z0-9]+)*$/g);break;case"PascalCase":o=!!i.match(/^[A-Z][a-zA-Z0-9]+$/g);break;case"MACRO_CASE":o=!!i.match(/^([A-Z][A-Z0-9]*)(_[A-Z0-9]+)*$/g);break;case"COBOL-CASE":o=!!i.match(/^([A-Z][A-Z0-9]*)(-[A-Z0-9]+)*$/g);break;case"flatcase":o=!!i.match(/^[a-z][a-z0-9]+$/g)}if(!o)return{isValid:!1,location:r.isString(e)?n:n.child(i).key()}}return{isValid:!0}},sortOrder:(e,t,n)=>void 0===e?{isValid:!0}:{isValid:o.isOrdered(e,t),location:n},mutuallyExclusive:(e,t,n)=>({isValid:o.getIntersectionLength(e,t)<2,location:n.key()}),mutuallyRequired:(e,t,n)=>({isValid:!(o.getIntersectionLength(e,t)>0)||o.getIntersectionLength(e,t)===t.length,location:n.key()}),requireAny:(e,t,n)=>({isValid:o.getIntersectionLength(e,t)>=1,location:n.key()}),ref:(e,t,n,r)=>{if(void 0===r)return{isValid:!0};const i=r.hasOwnProperty("$ref");if("boolean"==typeof t)return{isValid:t?i:!i,location:i?n:n.key()};const a=o.regexFromString(t);return{isValid:i&&(null==a?void 0:a.test(r.$ref)),location:i?n:n.key()}}}},4015:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Assertions=void 0;const r=n(9740),o=n(5738);t.Assertions=e=>{let t=[];const n=Object.values(e).filter((e=>"object"==typeof e&&null!==e));for(const[e,i]of n.entries()){const n=i.assertionId&&`${i.assertionId} assertion`||`assertion #${e+1}`;if(!i.subject)throw new Error(`${n}: 'subject' is required`);const a=Array.isArray(i.subject)?i.subject:[i.subject],s=Object.keys(r.asserts).filter((e=>void 0!==i[e])).map((e=>({assertId:n,name:e,conditions:i[e],message:i.message,severity:i.severity||"error",suggest:i.suggest||[],runsOnKeys:r.runOnKeysSet.has(e),runsOnValues:r.runOnValuesSet.has(e)}))),l=s.find((e=>e.runsOnKeys&&!e.runsOnValues)),c=s.find((e=>e.runsOnValues&&!e.runsOnKeys));if(c&&!i.property)throw new Error(`${c.name} can't be used on all keys. Please provide a single property.`);if(l&&i.property)throw new Error(`${l.name} can't be used on a single property. Please use 'property'.`);for(const e of a){const n=o.buildSubjectVisitor(i.property,s,i.context),r=o.buildVisitorObject(e,i.context,n);t.push(r)}}return t}},5738:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.regexFromString=t.isOrdered=t.getIntersectionLength=t.buildSubjectVisitor=t.buildVisitorObject=void 0;const r=n(7468),o=n(9740);function i({values:e,rawValues:t,assert:n,location:r,report:i}){const a=o.asserts[n.name](e,n.conditions,r,t);a.isValid||i({message:n.message||`The ${n.assertId} doesn't meet required conditions`,location:a.location||r,forceSeverity:n.severity,suggest:n.suggest,ruleId:n.assertId})}t.buildVisitorObject=function(e,t,n){if(!t)return{[e]:n};let r={};const o=r;for(let n=0;ni?!i.includes(t):a?a.includes(t):void 0}:{},r=r[o.type]}return r[e]=n,o},t.buildSubjectVisitor=function(e,t,n){return(o,{report:a,location:s,rawLocation:l,key:c,type:u,resolve:p,rawNode:d})=>{var f;if(n){const e=n[n.length-1];if(e.type===u.name){const t=e.matchParentKeys,n=e.excludeParentKeys;if(t&&!t.includes(c))return;if(n&&n.includes(c))return}}e&&(e=Array.isArray(e)?e:[e]);for(const n of t){const t="ref"===n.name?l:s;if(e)for(const s of e)i({values:r.isRef(o[s])?null===(f=p(o[s]))||void 0===f?void 0:f.node:o[s],rawValues:d[s],assert:n,location:t.child(s),report:a});else{const e="ref"===n.name?d:Object.keys(o);i({values:Object.keys(o),rawValues:e,assert:n,location:t,report:a})}}}},t.getIntersectionLength=function(e,t){const n=new Set(t);let r=0;for(const t of e)n.has(t)&&r++;return r},t.isOrdered=function(e,t){const n=t.direction||t,r=t.property;for(let t=1;t=i:o<=i))return!1}return!0},t.regexFromString=function(e){const t=e.match(/^\/(.*)\/(.*)|(.*)/);return t&&new RegExp(t[1]||t[3],t[2])}},8265:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoContact=void 0;const r=n(780);t.InfoContact=()=>({Info(e,{report:t,location:n}){e.contact||t({message:r.missingRequiredField("Info","contact"),location:n.child("contact").key()})}})},8675:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoDescription=void 0;const r=n(780);t.InfoDescription=()=>({Info(e,t){r.validateDefinedAndNonEmpty("description",e,t)}})},9622:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoLicense=void 0;const r=n(780);t.InfoLicense=()=>({Info(e,{report:t}){e.license||t({message:r.missingRequiredField("Info","license"),location:{reportOnKey:!0}})}})},476:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.InfoLicenseUrl=void 0;const r=n(780);t.InfoLicenseUrl=()=>({License(e,t){r.validateDefinedAndNonEmpty("url",e,t)}})},3467:function(e,t){"use strict";function n(e,t){const n=e.split("/"),r=t.split("/");if(n.length!==r.length)return!1;let o=0,i=0,a=!0;for(let e=0;e({PathMap(e,{report:t,location:r}){const o=[];for(const i of Object.keys(e)){const e=o.find((e=>n(e,i)));e&&t({message:`Paths should resolve unambiguously. Found two ambiguous paths: \`${e}\` and \`${i}\`.`,location:r.child([i]).key()}),o.push(i)}}})},2319:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoEnumTypeMismatch=void 0;const r=n(780);t.NoEnumTypeMismatch=()=>({Schema(e,{report:t,location:n}){if(!e.enum||Array.isArray(e.enum)){if(e.enum&&e.type&&!Array.isArray(e.type)){const o=e.enum.filter((t=>!r.matchesJsonSchemaType(t,e.type,e.nullable)));for(const i of o)t({message:`All values of \`enum\` field must be of the same type as the \`type\` field: expected "${e.type}" but received "${r.oasTypeOf(i)}".`,location:n.child(["enum",e.enum.indexOf(i)])})}if(e.enum&&e.type&&Array.isArray(e.type)){const o={};for(const t of e.enum){o[t]=[];for(const n of e.type)r.matchesJsonSchemaType(t,n,e.nullable)||o[t].push(n);o[t].length!==e.type.length&&delete o[t]}for(const r of Object.keys(o))t({message:`Enum value \`${r}\` must be of one type. Allowed types: \`${e.type}\`.`,location:n.child(["enum",e.enum.indexOf(r)])})}}}})},525:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoHttpVerbsInPaths=void 0;const r=n(771),o=["get","head","post","put","patch","delete","options","trace"];t.NoHttpVerbsInPaths=({splitIntoWords:e})=>({PathItem(t,{key:n,report:i,location:a}){const s=n.toString();if(!s.startsWith("/"))return;const l=s.split("/");for(const t of l){if(!t||r.isPathParameter(t))continue;const n=n=>e?r.splitCamelCaseIntoWords(t).has(n):t.toLocaleLowerCase().includes(n);for(const e of o)n(e)&&i({message:`path \`${s}\` should not contain http verb ${e}`,location:a.key()})}}})},4628:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoIdenticalPaths=void 0,t.NoIdenticalPaths=()=>({PathMap(e,{report:t,location:n}){const r=new Map;for(const o of Object.keys(e)){const e=o.replace(/{.+?}/g,"{VARIABLE}"),i=r.get(e);i?t({message:`The path already exists which differs only by path parameter name(s): \`${i}\` and \`${o}\`.`,location:n.child([o]).key()}):r.set(e,o)}}})},1562:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoInvalidParameterExamples=void 0;const r=n(780);t.NoInvalidParameterExamples=e=>{var t;const n=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{Parameter:{leave(e,t){if(e.example&&r.validateExample(e.example,e.schema,t.location.child("example"),t,n),e.examples)for(const[n,o]of Object.entries(e.examples))"value"in o&&r.validateExample(o.value,e.schema,t.location.child(["examples",n]),t,!1)}}}}},78:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoInvalidSchemaExamples=void 0;const r=n(780);t.NoInvalidSchemaExamples=e=>{var t;const n=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{Schema:{leave(e,t){if(e.examples)for(const o of e.examples)r.validateExample(o,e,t.location.child(["examples",e.examples.indexOf(o)]),t,n);e.example&&r.validateExample(e.example,e,t.location.child("example"),t,!1)}}}}},700:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoPathTrailingSlash=void 0,t.NoPathTrailingSlash=()=>({PathItem(e,{report:t,key:n,location:r}){n.endsWith("/")&&"/"!==n&&t({message:`\`${n}\` should not have a trailing slash.`,location:r.key()})}})},5946:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operation2xxResponse=void 0,t.Operation2xxResponse=()=>({ResponsesMap(e,{report:t}){Object.keys(e).some((e=>"default"===e||/2[Xx0-9]{2}/.test(e)))||t({message:"Operation must have at least one `2xx` response.",location:{reportOnKey:!0}})}})},5281:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Operation4xxResponse=void 0,t.Operation4xxResponse=()=>({ResponsesMap(e,{report:t}){Object.keys(e).some((e=>/4[Xx0-9]{2}/.test(e)))||t({message:"Operation must have at least one `4xx` response.",location:{reportOnKey:!0}})}})},3408:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationDescription=void 0;const r=n(780);t.OperationDescription=()=>({Operation(e,t){r.validateDefinedAndNonEmpty("description",e,t)}})},8742:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationIdUnique=void 0,t.OperationIdUnique=()=>{const e=new Set;return{Operation(t,{report:n,location:r}){t.operationId&&(e.has(t.operationId)&&n({message:"Every operation must have a unique `operationId`.",location:r.child([t.operationId])}),e.add(t.operationId))}}}},5064:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationIdUrlSafe=void 0;const n=/^[A-Za-z0-9-._~:/?#\[\]@!\$&'()*+,;=]*$/;t.OperationIdUrlSafe=()=>({Operation(e,{report:t,location:r}){e.operationId&&!n.test(e.operationId)&&t({message:"Operation `operationId` should not have URL invalid characters.",location:r.child(["operationId"])})}})},8786:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationOperationId=void 0;const r=n(780);t.OperationOperationId=()=>({DefinitionRoot:{PathItem:{Operation(e,t){r.validateDefinedAndNonEmpty("operationId",e,t)}}}})},4112:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationParametersUnique=void 0,t.OperationParametersUnique=()=>{let e,t;return{PathItem:{enter(){e=new Set},Parameter(t,{report:n,key:r,parentLocations:o}){const i=`${t.in}___${t.name}`;e.has(i)&&n({message:`Paths must have unique \`name\` + \`in\` parameters.\nRepeats of \`in:${t.in}\` + \`name:${t.name}\`.`,location:o.PathItem.child(["parameters",r])}),e.add(`${t.in}___${t.name}`)},Operation:{enter(){t=new Set},Parameter(e,{report:n,key:r,parentLocations:o}){const i=`${e.in}___${e.name}`;t.has(i)&&n({message:`Operations must have unique \`name\` + \`in\` parameters. Repeats of \`in:${e.in}\` + \`name:${e.name}\`.`,location:o.Operation.child(["parameters",r])}),t.add(i)}}}}}},7892:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSecurityDefined=void 0,t.OperationSecurityDefined=()=>{let e=new Map;return{DefinitionRoot:{leave(t,{report:n}){for(const[t,r]of e.entries())if(!r.defined)for(const e of r.from)n({message:`There is no \`${t}\` security scheme defined.`,location:e.key()})}},SecurityScheme(t,{key:n}){e.set(n.toString(),{defined:!0,from:[]})},SecurityRequirement(t,{location:n}){for(const r of Object.keys(t)){const t=e.get(r),o=n.child([r]);t?t.from.push(o):e.set(r,{from:[o]})}}}}},8613:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSingularTag=void 0,t.OperationSingularTag=()=>({Operation(e,{report:t,location:n}){e.tags&&e.tags.length>1&&t({message:"Operation `tags` object should have only one tag.",location:n.child(["tags"]).key()})}})},9578:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationSummary=void 0;const r=n(780);t.OperationSummary=()=>({Operation(e,t){r.validateDefinedAndNonEmpty("summary",e,t)}})},5097:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperationTagDefined=void 0,t.OperationTagDefined=()=>{let e;return{DefinitionRoot(t){var n;e=new Set((null!==(n=t.tags)&&void 0!==n?n:[]).map((e=>e.name)))},Operation(t,{report:n,location:r}){if(t.tags)for(let o=0;o({Parameter(e,{report:t,location:n}){void 0===e.description?t({message:"Parameter object description must be present.",location:{reportOnKey:!0}}):e.description||t({message:"Parameter object description must be non-empty string.",location:n.child(["description"])})}})},7890:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathDeclarationMustExist=void 0,t.PathDeclarationMustExist=()=>({PathItem(e,{report:t,key:n}){-1!==n.indexOf("{}")&&t({message:"Path parameter declarations must be non-empty. `{}` is invalid.",location:{reportOnKey:!0}})}})},3689:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathExcludesPatterns=void 0,t.PathExcludesPatterns=({patterns:e})=>({PathItem(t,{report:n,key:r,location:o}){if(!e)throw new Error('Parameter "patterns" is not provided for "path-excludes-patterns" rule');const i=r.toString();if(i.startsWith("/")){const t=e.filter((e=>i.match(e)));for(const e of t)n({message:`path \`${i}\` should not match regex pattern: \`${e}\``,location:o.key()})}}})},2332:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathHttpVerbsOrder=void 0;const n=["get","head","post","put","patch","delete","options","trace"];t.PathHttpVerbsOrder=e=>{const t=e&&e.order||n;if(!Array.isArray(t))throw new Error("path-http-verbs-order `order` option must be an array");return{PathItem(e,{report:n,location:r}){const o=Object.keys(e).filter((e=>t.includes(e)));for(let e=0;e({PathMap:{PathItem(e,{report:t,key:n}){n.toString().includes("?")&&t({message:"Don't put query string items in the path, they belong in parameters with `in: query`.",location:{reportOnKey:!0}})}}})},7421:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathParamsDefined=void 0;const n=/\{([a-zA-Z0-9_.-]+)\}+/g;t.PathParamsDefined=()=>{let e,t,r;return{PathItem:{enter(o,{key:i}){t=new Set,r=i,e=new Set(Array.from(i.toString().matchAll(n)).map((e=>e[1])))},Parameter(n,{report:o,location:i}){"path"===n.in&&n.name&&(t.add(n.name),e.has(n.name)||o({message:`Path parameter \`${n.name}\` is not used in the path \`${r}\`.`,location:i.child(["name"])}))},Operation:{leave(n,{report:o,location:i}){for(const n of Array.from(e.keys()))t.has(n)||o({message:`The operation does not define the path parameter \`{${n}}\` expected by path \`${r}\`.`,location:i.child(["parameters"]).key()})},Parameter(n,{report:o,location:i}){"path"===n.in&&n.name&&(t.add(n.name),e.has(n.name)||o({message:`Path parameter \`${n.name}\` is not used in the path \`${r}\`.`,location:i.child(["name"])}))}}}}}},3807:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathSegmentPlural=void 0;const r=n(771);t.PathSegmentPlural=e=>{const{ignoreLastPathSegment:t,exceptions:n}=e;return{PathItem:{leave(e,{report:o,key:i,location:a}){const s=i.toString();if(s.startsWith("/")){const e=s.split("/");e.shift(),t&&e.length>1&&e.pop();for(const t of e)n&&n.includes(t)||!r.isPathParameter(t)&&r.isSingular(t)&&o({message:`path segment \`${t}\` should be plural.`,location:a.key()})}}}}}},9527:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PathsKebabCase=void 0,t.PathsKebabCase=()=>({PathItem(e,{report:t,key:n}){n.substr(1).split("/").filter((e=>""!==e)).every((e=>/^{.+}$/.test(e)||/^[a-z0-9-.]+$/.test(e)))||t({message:`\`${n}\` does not use kebab-case.`,location:{reportOnKey:!0}})}})},5839:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsHeader=void 0;const r=n(771);t.ResponseContainsHeader=e=>{const t=e.names||{};return{Operation:{Response:{enter:(e,{report:n,location:o,key:i})=>{var a;const s=t[i]||t[r.getMatchingStatusCodeRange(i)]||t[r.getMatchingStatusCodeRange(i).toLowerCase()]||[];for(const t of s)(null===(a=e.headers)||void 0===a?void 0:a[t])||n({message:`Response object must contain a "${t}" header.`,location:o.child("headers").key()})}}}}}},5669:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ScalarPropertyMissingExample=void 0;const r=n(1510),o=["string","integer","number","boolean","null"];t.ScalarPropertyMissingExample=()=>({SchemaProperties(e,{report:t,location:n,oasVersion:i,resolve:a}){for(const l of Object.keys(e)){const c=a(e[l]).node;c&&((s=c).type&&!(s.allOf||s.anyOf||s.oneOf)&&"binary"!==s.format&&(Array.isArray(s.type)?s.type.every((e=>o.includes(e))):o.includes(s.type)))&&void 0===c.example&&void 0===c.examples&&t({message:`Scalar property should have "example"${i===r.OasVersion.Version3_1?' or "examples"':""} defined.`,location:n.child(l).key()})}var s}})},6471:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OasSpec=void 0;const r=n(5220),o=n(780),i=n(7468),a=n(771);t.OasSpec=()=>({any(e,{report:t,type:n,location:s,key:l,resolve:c,ignoreNextVisitorsOnNode:u}){var p,d,f,h;const m=o.oasTypeOf(e);if(n.items)return void("array"!==m&&(t({message:`Expected type \`${n.name}\` (array) but got \`${m}\``}),u()));if("object"!==m)return t({message:`Expected type \`${n.name}\` (object) but got \`${m}\``}),void u();const g="function"==typeof n.required?n.required(e,l):n.required;for(let n of g||[])e.hasOwnProperty(n)||t({message:`The field \`${n}\` must be present on this level.`,location:[{reportOnKey:!0}]});const y=null===(p=n.allowed)||void 0===p?void 0:p.call(n,e);if(y&&a.isPlainObject(e))for(const r in e)y.includes(r)||n.extensionsPrefix&&r.startsWith(n.extensionsPrefix)||!Object.keys(n.properties).includes(r)||t({message:`The field \`${r}\` is not allowed here.`,location:s.child([r]).key()});const v=n.requiredOneOf||null;if(v){let r=!1;for(let t of v||[])e.hasOwnProperty(t)&&(r=!0);r||t({message:`Must contain at least one of the following fields: ${null===(d=n.requiredOneOf)||void 0===d?void 0:d.join(", ")}.`,location:[{reportOnKey:!0}]})}for(const a of Object.keys(e)){const l=s.child([a]);let u=e[a],p=n.properties[a];if(void 0===p&&(p=n.additionalProperties),"function"==typeof p&&(p=p(u,a)),r.isNamedType(p))continue;const d=p,m=o.oasTypeOf(u);if(void 0!==d){if(null!==d){if(!1!==d.resolvable&&i.isRef(u)&&(u=c(u).node),d.enum)d.enum.includes(u)||t({location:l,message:`\`${a}\` can be one of the following only: ${d.enum.map((e=>`"${e}"`)).join(", ")}.`,suggest:o.getSuggest(u,d.enum)});else if(d.type&&!o.matchesJsonSchemaType(u,d.type,!1))t({message:`Expected type \`${d.type}\` but got \`${m}\`.`,location:l});else if("array"===m&&(null===(f=d.items)||void 0===f?void 0:f.type)){const e=null===(h=d.items)||void 0===h?void 0:h.type;for(let n=0;ne[a]&&t({message:`The value of the ${a} field must be greater than or equal to ${d.minimum}`,location:s.child([a])})}}else{if(a.startsWith("x-"))continue;t({message:`Property \`${a}\` is not expected here.`,suggest:o.getSuggest(a,Object.keys(n.properties)),location:l.key()})}}}})},7281:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TagDescription=void 0;const r=n(780);t.TagDescription=()=>({Tag(e,t){r.validateDefinedAndNonEmpty("description",e,t)}})},6855:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TagsAlphabetical=void 0,t.TagsAlphabetical=()=>({DefinitionRoot(e,{report:t,location:n}){if(e.tags)for(let r=0;re.tags[r+1].name&&t({message:"The `tags` array should be in alphabetical order.",location:n.child(["tags",r])})}})},348:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reportUnresolvedRef=t.NoUnresolvedRefs=void 0;const r=n(4182);function o(e,t,n){var o;const i=e.error;i instanceof r.YamlParseError&&t({message:"Failed to parse: "+i.message,location:{source:i.source,pointer:void 0,start:{col:i.col,line:i.line}}});const a=null===(o=e.error)||void 0===o?void 0:o.message;t({location:n,message:"Can't resolve $ref"+(a?": "+a:"")})}t.NoUnresolvedRefs=()=>({ref:{leave(e,{report:t,location:n},r){void 0===r.node&&o(r,t,n)}},DiscriminatorMapping(e,{report:t,resolve:n,location:r}){for(const i of Object.keys(e)){const a=n({$ref:e[i]});if(void 0!==a.node)return;o(a,t,r.child(i))}}}),t.reportUnresolvedRef=o},9566:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BooleanParameterPrefixes=void 0,t.BooleanParameterPrefixes=e=>{const t=e.prefixes||["is","has"],n=new RegExp(`^(${t.join("|")})[A-Z-_]`),r=t.map((e=>`\`${e}\``)),o=1===r.length?r[0]:r.slice(0,-1).join(", ")+" or "+r[t.length-1];return{Parameter(e,{report:t,location:r}){"boolean"!==e.type||n.test(e.name)||t({message:`Boolean parameter \`${e.name}\` should have ${o} prefix.`,location:r.child("name")})}}}},7523:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preprocessors=t.rules=void 0;const r=n(6471),o=n(78),i=n(1562),a=n(8675),s=n(8265),l=n(9622),c=n(476),u=n(9566),p=n(7281),d=n(6855),f=n(9527),h=n(2319),m=n(700),g=n(5946),y=n(5281),v=n(4015),b=n(8742),w=n(4112),x=n(7421),k=n(5097),_=n(7890),O=n(5064),S=n(3408),E=n(5023),P=n(3529),A=n(8613),$=n(7892),C=n(348),R=n(2332),j=n(4628),T=n(8786),I=n(9578),N=n(3467),D=n(525),L=n(3689),M=n(7028),F=n(1750),z=n(3807),U=n(5839),V=n(7899),B=n(5669);t.rules={spec:r.OasSpec,"no-invalid-schema-examples":o.NoInvalidSchemaExamples,"no-invalid-parameter-examples":i.NoInvalidParameterExamples,"info-description":a.InfoDescription,"info-contact":s.InfoContact,"info-license":l.InfoLicense,"info-license-url":c.InfoLicenseUrl,"tag-description":p.TagDescription,"tags-alphabetical":d.TagsAlphabetical,"paths-kebab-case":f.PathsKebabCase,"no-enum-type-mismatch":h.NoEnumTypeMismatch,"boolean-parameter-prefixes":u.BooleanParameterPrefixes,"no-path-trailing-slash":m.NoPathTrailingSlash,"operation-2xx-response":g.Operation2xxResponse,"operation-4xx-response":y.Operation4xxResponse,assertions:v.Assertions,"operation-operationId-unique":b.OperationIdUnique,"operation-parameters-unique":w.OperationParametersUnique,"path-parameters-defined":x.PathParamsDefined,"operation-tag-defined":k.OperationTagDefined,"path-declaration-must-exist":_.PathDeclarationMustExist,"operation-operationId-url-safe":O.OperationIdUrlSafe,"operation-operationId":T.OperationOperationId,"operation-summary":I.OperationSummary,"operation-description":S.OperationDescription,"path-not-include-query":E.PathNotIncludeQuery,"path-params-defined":x.PathParamsDefined,"parameter-description":P.ParameterDescription,"operation-singular-tag":A.OperationSingularTag,"operation-security-defined":$.OperationSecurityDefined,"no-unresolved-refs":C.NoUnresolvedRefs,"no-identical-paths":j.NoIdenticalPaths,"no-ambiguous-paths":N.NoAmbiguousPaths,"path-http-verbs-order":R.PathHttpVerbsOrder,"no-http-verbs-in-paths":D.NoHttpVerbsInPaths,"path-excludes-patterns":L.PathExcludesPatterns,"request-mime-type":M.RequestMimeType,"response-mime-type":F.ResponseMimeType,"path-segment-plural":z.PathSegmentPlural,"response-contains-header":U.ResponseContainsHeader,"response-contains-property":V.ResponseContainsProperty,"scalar-property-missing-example":B.ScalarPropertyMissingExample},t.preprocessors={}},4508:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;const r=n(771);t.RemoveUnusedComponents=()=>{let e=new Map;function t(t,n,r){var o;e.set(t.absolutePointer,{used:(null===(o=e.get(t.absolutePointer))||void 0===o?void 0:o.used)||!1,componentType:n,name:r})}return{ref:{leave(t,{type:n,resolve:r,key:o}){if(["Schema","Parameter","Response","SecurityScheme"].includes(n.name)){const n=r(t);if(!n.location)return;e.set(n.location.absolutePointer,{used:!0,name:o.toString()})}}},DefinitionRoot:{leave(t,n){const o=n.getVisitorData();o.removedCount=0;let i=new Set;e.forEach((e=>{const{used:n,name:r,componentType:a}=e;!n&&a&&(i.add(a),delete t[a][r],o.removedCount++)}));for(const e of i)r.isEmptyObject(t[e])&&delete t[e]}},NamedSchemas:{Schema(e,{location:n,key:r}){e.allOf||t(n,"definitions",r.toString())}},NamedParameters:{Parameter(e,{location:n,key:r}){t(n,"parameters",r.toString())}},NamedResponses:{Response(e,{location:n,key:r}){t(n,"responses",r.toString())}},NamedSecuritySchemes:{SecurityScheme(e,{location:n,key:r}){t(n,"securityDefinitions",r.toString())}}}}},7028:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMimeType=void 0;const r=n(771);t.RequestMimeType=({allowedValues:e})=>({DefinitionRoot(t,n){r.validateMimeType({type:"consumes",value:t},n,e)},Operation:{leave(t,n){r.validateMimeType({type:"consumes",value:t},n,e)}}})},7899:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsProperty=void 0;const r=n(771);t.ResponseContainsProperty=e=>{const t=e.names||{};let n;return{Operation:{Response:{skip:(e,t)=>"204"==`${t}`,enter:(e,t)=>{n=t.key},Schema(e,{report:o,location:i}){var a;if("object"!==e.type)return;const s=t[n]||t[r.getMatchingStatusCodeRange(n)]||t[r.getMatchingStatusCodeRange(n).toLowerCase()]||[];for(const t of s)(null===(a=e.properties)||void 0===a?void 0:a[t])||o({message:`Response object must contain a top-level "${t}" property.`,location:i.child("properties").key()})}}}}}},1750:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseMimeType=void 0;const r=n(771);t.ResponseMimeType=({allowedValues:e})=>({DefinitionRoot(t,n){r.validateMimeType({type:"produces",value:t},n,e)},Operation:{leave(t,n){r.validateMimeType({type:"produces",value:t},n,e)}}})},962:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BooleanParameterPrefixes=void 0,t.BooleanParameterPrefixes=e=>{const t=e.prefixes||["is","has"],n=new RegExp(`^(${t.join("|")})[A-Z-_]`),r=t.map((e=>`\`${e}\``)),o=1===r.length?r[0]:r.slice(0,-1).join(", ")+" or "+r[t.length-1];return{Parameter:{Schema(e,{report:t,parentLocations:r},i){"boolean"!==e.type||n.test(i.Parameter.name)||t({message:`Boolean parameter \`${i.Parameter.name}\` should have ${o} prefix.`,location:r.Parameter.child(["name"])})}}}}},226:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.preprocessors=t.rules=void 0;const r=n(6471),o=n(5946),i=n(5281),a=n(4015),s=n(8742),l=n(4112),c=n(7421),u=n(5097),p=n(1265),d=n(2319),f=n(700),h=n(7890),m=n(5064),g=n(6855),y=n(5486),v=n(2947),b=n(8675),w=n(7281),x=n(8265),k=n(9622),_=n(3408),O=n(897),S=n(5023),E=n(3529),P=n(8613),A=n(476),$=n(7892),C=n(348),R=n(962),j=n(9527),T=n(2332),I=n(7020),N=n(9336),D=n(4628),L=n(6208),M=n(8786),F=n(9578),z=n(3467),U=n(472),V=n(525),B=n(3736),q=n(503),W=n(3807),H=n(3689),Y=n(78),K=n(1562),G=n(5839),Q=n(7557),X=n(5669);t.rules={spec:r.OasSpec,"info-description":b.InfoDescription,"info-contact":x.InfoContact,"info-license":k.InfoLicense,"info-license-url":A.InfoLicenseUrl,"operation-2xx-response":o.Operation2xxResponse,"operation-4xx-response":i.Operation4xxResponse,assertions:a.Assertions,"operation-operationId-unique":s.OperationIdUnique,"operation-parameters-unique":l.OperationParametersUnique,"path-parameters-defined":c.PathParamsDefined,"operation-tag-defined":u.OperationTagDefined,"no-example-value-and-externalValue":p.NoExampleValueAndExternalValue,"no-enum-type-mismatch":d.NoEnumTypeMismatch,"no-path-trailing-slash":f.NoPathTrailingSlash,"no-empty-servers":I.NoEmptyServers,"path-declaration-must-exist":h.PathDeclarationMustExist,"operation-operationId-url-safe":m.OperationIdUrlSafe,"operation-operationId":M.OperationOperationId,"operation-summary":F.OperationSummary,"tags-alphabetical":g.TagsAlphabetical,"no-server-example.com":y.NoServerExample,"no-server-trailing-slash":v.NoServerTrailingSlash,"tag-description":w.TagDescription,"operation-description":_.OperationDescription,"no-unused-components":O.NoUnusedComponents,"path-not-include-query":S.PathNotIncludeQuery,"path-params-defined":c.PathParamsDefined,"parameter-description":E.ParameterDescription,"operation-singular-tag":P.OperationSingularTag,"operation-security-defined":$.OperationSecurityDefined,"no-unresolved-refs":C.NoUnresolvedRefs,"paths-kebab-case":j.PathsKebabCase,"boolean-parameter-prefixes":R.BooleanParameterPrefixes,"path-http-verbs-order":T.PathHttpVerbsOrder,"no-invalid-media-type-examples":N.ValidContentExamples,"no-identical-paths":D.NoIdenticalPaths,"no-ambiguous-paths":z.NoAmbiguousPaths,"no-undefined-server-variable":L.NoUndefinedServerVariable,"no-servers-empty-enum":U.NoEmptyEnumServers,"no-http-verbs-in-paths":V.NoHttpVerbsInPaths,"path-excludes-patterns":H.PathExcludesPatterns,"request-mime-type":B.RequestMimeType,"response-mime-type":q.ResponseMimeType,"path-segment-plural":W.PathSegmentPlural,"no-invalid-schema-examples":Y.NoInvalidSchemaExamples,"no-invalid-parameter-examples":K.NoInvalidParameterExamples,"response-contains-header":G.ResponseContainsHeader,"response-contains-property":Q.ResponseContainsProperty,"scalar-property-missing-example":X.ScalarPropertyMissingExample},t.preprocessors={}},7020:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoEmptyServers=void 0,t.NoEmptyServers=()=>({DefinitionRoot(e,{report:t,location:n}){e.hasOwnProperty("servers")?Array.isArray(e.servers)&&0!==e.servers.length||t({message:"Servers must be a non-empty array.",location:n.child(["servers"]).key()}):t({message:"Servers must be present.",location:n.child(["openapi"]).key()})}})},1265:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoExampleValueAndExternalValue=void 0,t.NoExampleValueAndExternalValue=()=>({Example(e,{report:t,location:n}){e.value&&e.externalValue&&t({message:"Example object can have either `value` or `externalValue` fields.",location:n.child(["value"]).key()})}})},9336:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ValidContentExamples=void 0;const r=n(7468),o=n(780);t.ValidContentExamples=e=>{var t;const n=null===(t=e.disallowAdditionalProperties)||void 0===t||t;return{MediaType:{leave(e,t){const{location:i,resolve:a}=t;if(e.schema)if(e.example)s(e.example,i.child("example"));else if(e.examples)for(const t of Object.keys(e.examples))s(e.examples[t],i.child(["examples",t,"value"]),!0);function s(i,s,l){if(r.isRef(i)){const e=a(i);if(!e.location)return;s=l?e.location.child("value"):e.location,i=e.node}o.validateExample(l?i.value:i,e.schema,s,t,n)}}}}}},5486:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoServerExample=void 0,t.NoServerExample=()=>({Server(e,{report:t,location:n}){-1!==["example.com","localhost"].indexOf(e.url)&&t({message:"Server `url` should not point at example.com.",location:n.child(["url"])})}})},2947:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoServerTrailingSlash=void 0,t.NoServerTrailingSlash=()=>({Server(e,{report:t,location:n}){e.url&&e.url.endsWith("/")&&"/"!==e.url&&t({message:"Server `url` should not have a trailing slash.",location:n.child(["url"])})}})},472:function(e,t){"use strict";var n;function r(e){var t;if(e.variables&&0===Object.keys(e.variables).length)return;const r=[];for(var o in e.variables){const i=e.variables[o];if(!i.enum)continue;if(Array.isArray(i.enum)&&0===(null===(t=i.enum)||void 0===t?void 0:t.length)&&r.push(n.empty),!i.default)continue;const a=e.variables[o].default;i.enum&&!i.enum.includes(a)&&r.push(n.invalidDefaultValue)}return r.length?r:void 0}Object.defineProperty(t,"__esModule",{value:!0}),t.NoEmptyEnumServers=void 0,function(e){e.empty="empty",e.invalidDefaultValue="invalidDefaultValue"}(n||(n={})),t.NoEmptyEnumServers=()=>({DefinitionRoot(e,{report:t,location:o}){if(!e.servers||0===e.servers.length)return;const i=[];if(Array.isArray(e.servers))for(const t of e.servers){const e=r(t);e&&i.push(...e)}else{const t=r(e.servers);if(!t)return;i.push(...t)}for(const e of i)e===n.empty&&t({message:"Server variable with `enum` must be a non-empty array.",location:o.child(["servers"]).key()}),e===n.invalidDefaultValue&&t({message:"Server variable define `enum` and `default`. `enum` must include default value",location:o.child(["servers"]).key()})}})},6208:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoUndefinedServerVariable=void 0,t.NoUndefinedServerVariable=()=>({Server(e,{report:t,location:n}){var r;if(!e.url)return;const o=(null===(r=e.url.match(/{[^}]+}/g))||void 0===r?void 0:r.map((e=>e.slice(1,e.length-1))))||[],i=(null==e?void 0:e.variables)&&Object.keys(e.variables)||[];for(const e of o)i.includes(e)||t({message:`The \`${e}\` variable is not defined in the \`variables\` objects.`,location:n.child(["url"])});for(const e of i)o.includes(e)||t({message:`The \`${e}\` variable is not used in the server's \`url\` field.`,location:n.child(["variables",e]).key(),from:n.child("url")})}})},897:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NoUnusedComponents=void 0,t.NoUnusedComponents=()=>{let e=new Map;function t(t,n){var r;e.set(t.absolutePointer,{used:(null===(r=e.get(t.absolutePointer))||void 0===r?void 0:r.used)||!1,location:t,name:n})}return{ref(t,{type:n,resolve:r,key:o,location:i}){if(["Schema","Header","Parameter","Response","Example","RequestBody"].includes(n.name)){const n=r(t);if(!n.location)return;e.set(n.location.absolutePointer,{used:!0,name:o.toString(),location:i})}},DefinitionRoot:{leave(t,{report:n}){e.forEach((e=>{e.used||n({message:`Component: "${e.name}" is never used.`,location:e.location.key()})}))}},NamedSchemas:{Schema(e,{location:n,key:r}){e.allOf||t(n,r.toString())}},NamedParameters:{Parameter(e,{location:n,key:r}){t(n,r.toString())}},NamedResponses:{Response(e,{location:n,key:r}){t(n,r.toString())}},NamedExamples:{Example(e,{location:n,key:r}){t(n,r.toString())}},NamedRequestBodies:{RequestBody(e,{location:n,key:r}){t(n,r.toString())}},NamedHeaders:{Header(e,{location:n,key:r}){t(n,r.toString())}}}}},6350:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoveUnusedComponents=void 0;const r=n(771);t.RemoveUnusedComponents=()=>{let e=new Map;function t(t,n,r){var o;e.set(t.absolutePointer,{used:(null===(o=e.get(t.absolutePointer))||void 0===o?void 0:o.used)||!1,componentType:n,name:r})}return{ref:{leave(t,{type:n,resolve:r,key:o}){if(["Schema","Header","Parameter","Response","Example","RequestBody"].includes(n.name)){const n=r(t);if(!n.location)return;e.set(n.location.absolutePointer,{used:!0,name:o.toString()})}}},DefinitionRoot:{leave(t,n){const o=n.getVisitorData();o.removedCount=0,e.forEach((e=>{const{used:n,componentType:i,name:a}=e;if(!n&&i){let e=t.components[i];delete e[a],o.removedCount++,r.isEmptyObject(e)&&delete t.components[i]}})),r.isEmptyObject(t.components)&&delete t.components}},NamedSchemas:{Schema(e,{location:n,key:r}){e.allOf||t(n,"schemas",r.toString())}},NamedParameters:{Parameter(e,{location:n,key:r}){t(n,"parameters",r.toString())}},NamedResponses:{Response(e,{location:n,key:r}){t(n,"responses",r.toString())}},NamedExamples:{Example(e,{location:n,key:r}){t(n,"examples",r.toString())}},NamedRequestBodies:{RequestBody(e,{location:n,key:r}){t(n,"requestBodies",r.toString())}},NamedHeaders:{Header(e,{location:n,key:r}){t(n,"headers",r.toString())}}}}},3736:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RequestMimeType=void 0;const r=n(771);t.RequestMimeType=({allowedValues:e})=>({PathMap:{RequestBody:{leave(t,n){r.validateMimeTypeOAS3({type:"consumes",value:t},n,e)}},Callback:{RequestBody(){},Response:{leave(t,n){r.validateMimeTypeOAS3({type:"consumes",value:t},n,e)}}}},WebhooksMap:{Response:{leave(t,n){r.validateMimeTypeOAS3({type:"consumes",value:t},n,e)}}}})},7557:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseContainsProperty=void 0;const r=n(771);t.ResponseContainsProperty=e=>{const t=e.names||{};let n;return{Operation:{Response:{skip:(e,t)=>"204"==`${t}`,enter:(e,t)=>{n=t.key},MediaType:{Schema(e,{report:o,location:i}){var a;if("object"!==e.type)return;const s=t[n]||t[r.getMatchingStatusCodeRange(n)]||t[r.getMatchingStatusCodeRange(n).toLowerCase()]||[];for(const t of s)(null===(a=e.properties)||void 0===a?void 0:a[t])||o({message:`Response object must contain a top-level "${t}" property.`,location:i.child("properties").key()})}}}}}}},503:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ResponseMimeType=void 0;const r=n(771);t.ResponseMimeType=({allowedValues:e})=>({PathMap:{Response:{leave(t,n){r.validateMimeTypeOAS3({type:"produces",value:t},n,e)}},Callback:{Response(){},RequestBody:{leave(t,n){r.validateMimeTypeOAS3({type:"produces",value:t},n,e)}}}},WebhooksMap:{RequestBody:{leave(t,n){r.validateMimeTypeOAS3({type:"produces",value:t},n,e)}}}})},780:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateExample=t.getSuggest=t.validateDefinedAndNonEmpty=t.fieldNonEmpty=t.missingRequiredField=t.matchesJsonSchemaType=t.oasTypeOf=void 0;const r=n(9991),o=n(7468),i=n(7275);function a(e,t){return`${e} object should contain \`${t}\` field.`}function s(e,t){return`${e} object \`${t}\` must be non-empty string.`}t.oasTypeOf=function(e){return Array.isArray(e)?"array":null===e?"null":typeof e},t.matchesJsonSchemaType=function(e,t,n){if(n&&null===e)return null===e;switch(t){case"array":return Array.isArray(e);case"object":return"object"==typeof e&&null!==e&&!Array.isArray(e);case"null":return null===e;case"integer":return Number.isInteger(e);default:return typeof e===t}},t.missingRequiredField=a,t.fieldNonEmpty=s,t.validateDefinedAndNonEmpty=function(e,t,n){"object"==typeof t&&(void 0===t[e]?n.report({message:a(n.type.name,e),location:n.location.child([e]).key()}):t[e]||n.report({message:s(n.type.name,e),location:n.location.child([e]).key()}))},t.getSuggest=function(e,t){if("string"!=typeof e||!t.length)return[];const n=[];for(let o=0;oe.distance-t.distance)),n.map((e=>e.variant))},t.validateExample=function(e,t,n,{resolve:r,location:a,report:s},l){try{const{valid:c,errors:u}=i.validateJsonSchema(e,t,a.child("schema"),n.pointer,r,l);if(!c)for(let e of u)s({message:`Example value must conform to the schema: ${e.message}.`,location:Object.assign(Object.assign({},new o.Location(n.source,e.instancePath)),{reportOnKey:"additionalProperties"===e.keyword}),from:a,suggest:e.suggest})}catch(e){s({message:`Example validation errored: ${e.message}.`,location:a.child("schema"),from:a})}}},5220:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isNamedType=t.normalizeTypes=t.mapOf=t.listOf=void 0,t.listOf=function(e){return{name:`${e}List`,properties:{},items:e}},t.mapOf=function(e){return{name:`${e}Map`,properties:{},additionalProperties:()=>e}},t.normalizeTypes=function(e,t={}){const n={};for(const t of Object.keys(e))n[t]=Object.assign(Object.assign({},e[t]),{name:t});for(const e of Object.values(n))r(e);return n;function r(e){if(e.additionalProperties&&(e.additionalProperties=o(e.additionalProperties)),e.items&&(e.items=o(e.items)),e.properties){const n={};for(const[r,i]of Object.entries(e.properties))n[r]=o(i),t.doNotResolveExamples&&i&&i.isExample&&(n[r]=Object.assign(Object.assign({},i),{resolvable:!1}));e.properties=n}}function o(e){if("string"==typeof e){if(!n[e])throw new Error(`Unknown type name found: ${e}`);return n[e]}return"function"==typeof e?(t,n)=>o(e(t,n)):e&&e.name?(r(e=Object.assign({},e)),e):e&&e.directResolveAs?Object.assign(Object.assign({},e),{directResolveAs:o(e.directResolveAs)}):e}},t.isNamedType=function(e){return"string"==typeof(null==e?void 0:e.name)}},388:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas2Types=void 0;const r=n(5220),o=/^[0-9][0-9Xx]{2}$/,i={properties:{swagger:{type:"string"},info:"Info",host:{type:"string"},basePath:{type:"string"},schemes:{type:"array",items:{type:"string"}},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},paths:"PathMap",definitions:"NamedSchemas",parameters:"NamedParameters",responses:"NamedResponses",securityDefinitions:"NamedSecuritySchemes",security:r.listOf("SecurityRequirement"),tags:r.listOf("Tag"),externalDocs:"ExternalDocs"},required:["swagger","paths","info"]},a={properties:{$ref:{type:"string"},parameters:r.listOf("Parameter"),get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation"}},s={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},consumes:{type:"array",items:{type:"string"}},produces:{type:"array",items:{type:"string"}},parameters:r.listOf("Parameter"),responses:"ResponsesMap",schemes:{type:"array",items:{type:"string"}},deprecated:{type:"boolean"},security:r.listOf("SecurityRequirement"),"x-codeSamples":r.listOf("XCodeSample"),"x-code-samples":r.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}},required:["responses"]},l={properties:{default:"Response"},additionalProperties:(e,t)=>o.test(t)?"Response":void 0},c={properties:{description:{type:"string"},schema:"Schema",headers:r.mapOf("Header"),examples:"Examples"},required:["description"]},u={properties:{format:{type:"string"},title:{type:"string"},description:{type:"string"},default:null,multipleOf:{type:"number"},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"number"},minLength:{type:"number"},pattern:{type:"string"},maxItems:{type:"number"},minItems:{type:"number"},uniqueItems:{type:"boolean"},maxProperties:{type:"number"},minProperties:{type:"number"},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{type:"string",enum:["object","array","string","number","integer","boolean","null"]},items:e=>Array.isArray(e)?r.listOf("Schema"):"Schema",allOf:r.listOf("Schema"),properties:"SchemaProperties",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",discriminator:{type:"string"},readOnly:{type:"boolean"},xml:"Xml",externalDocs:"ExternalDocs",example:{isExample:!0},"x-tags":{type:"array",items:{type:"string"}}}},p={properties:{type:{enum:["basic","apiKey","oauth2"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header"]},flow:{enum:["implicit","password","application","accessCode"]},authorizationUrl:{type:"string"},tokenUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","scopes"];case"application":case"password":return["type","flow","tokenUrl","scopes"];default:return["type","flow","scopes"]}default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"basic":return["type","description"];case"apiKey":return["type","name","in","description"];case"oauth2":switch(null==e?void 0:e.flow){case"implicit":return["type","flow","authorizationUrl","description","scopes"];case"accessCode":return["type","flow","authorizationUrl","tokenUrl","description","scopes"];case"application":case"password":return["type","flow","tokenUrl","description","scopes"];default:return["type","flow","tokenUrl","authorizationUrl","description","scopes"]}default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas2Types={DefinitionRoot:i,Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs"},required:["name"]},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"]},SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},Info:{properties:{title:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License",version:{type:"string"}},required:["title","version"]},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}}},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"]},PathMap:{properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},PathItem:a,Parameter:{properties:{name:{type:"string"},in:{type:"string",enum:["query","header","path","formData","body"]},description:{type:"string"},required:{type:"boolean"},schema:"Schema",type:{type:"string",enum:["string","number","integer","boolean","array","file"]},format:{type:"string"},allowEmptyValue:{type:"boolean"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&e.in?"body"===e.in?["name","in","schema"]:"array"===e.type?["name","in","type","items"]:["name","in","type"]:["name","in"]},ParameterItems:{properties:{type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"]},Operation:s,Examples:{properties:{},additionalProperties:{isExample:!0}},Header:{properties:{description:{type:"string"},type:{type:"string",enum:["string","number","integer","boolean","array"]},format:{type:"string"},items:"ParameterItems",collectionFormat:{type:"string",enum:["csv","ssv","tsv","pipes","multi"]},default:null,maximum:{type:"integer"},exclusiveMaximum:{type:"boolean"},minimum:{type:"integer"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer"},minLength:{type:"integer"},pattern:{type:"string"},maxItems:{type:"integer"},minItems:{type:"integer"},uniqueItems:{type:"boolean"},enum:{type:"array"},multipleOf:{type:"number"}},required:e=>e&&"array"===e.type?["type","items"]:["type"]},ResponsesMap:l,Response:c,Schema:u,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}}},SchemaProperties:{properties:{},additionalProperties:"Schema"},NamedSchemas:r.mapOf("Schema"),NamedResponses:r.mapOf("Response"),NamedParameters:r.mapOf("Parameter"),NamedSecuritySchemes:r.mapOf("SecurityScheme"),SecurityScheme:p,XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}}}},5241:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3Types=void 0;const r=n(5220),o=n(7468),i=/^[0-9][0-9Xx]{2}$/,a={properties:{openapi:null,info:"Info",servers:r.listOf("Server"),security:r.listOf("SecurityRequirement"),tags:r.listOf("Tag"),externalDocs:"ExternalDocs",paths:"PathMap",components:"Components","x-webhooks":"WebhooksMap"},required:["openapi","paths","info"]},s={properties:{url:{type:"string"},description:{type:"string"},variables:r.mapOf("ServerVariable")},required:["url"]},l={properties:{$ref:{type:"string"},servers:r.listOf("Server"),parameters:r.listOf("Parameter"),summary:{type:"string"},description:{type:"string"},get:"Operation",put:"Operation",post:"Operation",delete:"Operation",options:"Operation",head:"Operation",patch:"Operation",trace:"Operation"}},c={properties:{name:{type:"string"},in:{enum:["query","header","path","cookie"]},description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:r.mapOf("Example"),content:"MediaTypeMap"},required:["name","in"],requiredOneOf:["schema","content"]},u={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:r.listOf("Parameter"),security:r.listOf("SecurityRequirement"),servers:r.listOf("Server"),requestBody:"RequestBody",responses:"ResponsesMap",deprecated:{type:"boolean"},callbacks:r.mapOf("Callback"),"x-codeSamples":r.listOf("XCodeSample"),"x-code-samples":r.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}},required:["responses"]},p={properties:{schema:"Schema",example:{isExample:!0},examples:r.mapOf("Example"),encoding:r.mapOf("Encoding")}},d={properties:{contentType:{type:"string"},headers:r.mapOf("Header"),style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"}}},f={properties:{description:{type:"string"},required:{type:"boolean"},deprecated:{type:"boolean"},allowEmptyValue:{type:"boolean"},style:{enum:["form","simple","label","matrix","spaceDelimited","pipeDelimited","deepObject"]},explode:{type:"boolean"},allowReserved:{type:"boolean"},schema:"Schema",example:{isExample:!0},examples:r.mapOf("Example"),content:"MediaTypeMap"}},h={properties:{default:"Response"},additionalProperties:(e,t)=>i.test(t)?"Response":void 0},m={properties:{description:{type:"string"},headers:r.mapOf("Header"),content:"MediaTypeMap",links:r.mapOf("Link")},required:["description"]},g={properties:{externalDocs:"ExternalDocs",discriminator:"Discriminator",title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"boolean"},exclusiveMinimum:{type:"boolean"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:{enum:["object","array","string","number","integer","boolean","null"]},allOf:r.listOf("Schema"),anyOf:r.listOf("Schema"),oneOf:r.listOf("Schema"),not:"Schema",properties:"SchemaProperties",items:e=>Array.isArray(e)?r.listOf("Schema"):"Schema",additionalItems:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},default:null,nullable:{type:"boolean"},readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",example:{isExample:!0},deprecated:{type:"boolean"},"x-tags":{type:"array",items:{type:"string"}}}},y={properties:{},additionalProperties:e=>o.isMappingRef(e)?{type:"string",directResolveAs:"Schema"}:{type:"string"}},v={properties:{type:{enum:["apiKey","http","oauth2","openIdConnect"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"SecuritySchemeFlows",openIdConnectUrl:{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":return["type","flows","description"];case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas3Types={DefinitionRoot:a,Tag:{properties:{name:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs"},required:["name"]},ExternalDocs:{properties:{description:{type:"string"},url:{type:"string"}},required:["url"]},Server:s,ServerVariable:{properties:{enum:{type:"array",items:{type:"string"}},default:{type:"string"},description:null},required:["default"]},SecurityRequirement:{properties:{},additionalProperties:{type:"array",items:{type:"string"}}},Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},contact:"Contact",license:"License"},required:["title","version"]},Contact:{properties:{name:{type:"string"},url:{type:"string"},email:{type:"string"}}},License:{properties:{name:{type:"string"},url:{type:"string"}},required:["name"]},PathMap:{properties:{},additionalProperties:(e,t)=>t.startsWith("/")?"PathItem":void 0},PathItem:l,Parameter:c,Operation:u,Callback:r.mapOf("PathItem"),RequestBody:{properties:{description:{type:"string"},required:{type:"boolean"},content:"MediaTypeMap"},required:["content"]},MediaTypeMap:{properties:{},additionalProperties:"MediaType"},MediaType:p,Example:{properties:{value:{isExample:!0},summary:{type:"string"},description:{type:"string"},externalValue:{type:"string"}}},Encoding:d,Header:f,ResponsesMap:h,Response:m,Link:{properties:{operationRef:{type:"string"},operationId:{type:"string"},parameters:null,requestBody:null,description:{type:"string"},server:"Server"}},Schema:g,Xml:{properties:{name:{type:"string"},namespace:{type:"string"},prefix:{type:"string"},attribute:{type:"boolean"},wrapped:{type:"boolean"}}},SchemaProperties:{properties:{},additionalProperties:"Schema"},DiscriminatorMapping:y,Discriminator:{properties:{propertyName:{type:"string"},mapping:"DiscriminatorMapping"},required:["propertyName"]},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks"}},NamedSchemas:r.mapOf("Schema"),NamedResponses:r.mapOf("Response"),NamedParameters:r.mapOf("Parameter"),NamedExamples:r.mapOf("Example"),NamedRequestBodies:r.mapOf("RequestBody"),NamedHeaders:r.mapOf("Header"),NamedSecuritySchemes:r.mapOf("SecurityScheme"),NamedLinks:r.mapOf("Link"),NamedCallbacks:r.mapOf("Callback"),ImplicitFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},authorizationUrl:{type:"string"}},required:["authorizationUrl","scopes"]},PasswordFlow:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"]},ClientCredentials:{properties:{refreshUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["tokenUrl","scopes"]},AuthorizationCode:{properties:{refreshUrl:{type:"string"},authorizationUrl:{type:"string"},scopes:{type:"object",additionalProperties:{type:"string"}},tokenUrl:{type:"string"}},required:["authorizationUrl","tokenUrl","scopes"]},SecuritySchemeFlows:{properties:{implicit:"ImplicitFlow",password:"PasswordFlow",clientCredentials:"ClientCredentials",authorizationCode:"AuthorizationCode"}},SecurityScheme:v,XCodeSample:{properties:{lang:{type:"string"},label:{type:"string"},source:{type:"string"}}},WebhooksMap:{properties:{},additionalProperties:()=>"PathItem"}}},2608:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Oas3_1Types=void 0;const r=n(5220),o=n(5241),i={properties:{openapi:null,info:"Info",servers:r.listOf("Server"),security:r.listOf("SecurityRequirement"),tags:r.listOf("Tag"),externalDocs:"ExternalDocs",paths:"PathMap",webhooks:"WebhooksMap",components:"Components",jsonSchemaDialect:{type:"string"}},required:["openapi","info"],requiredOneOf:["paths","components","webhooks"]},a={properties:{tags:{type:"array",items:{type:"string"}},summary:{type:"string"},description:{type:"string"},externalDocs:"ExternalDocs",operationId:{type:"string"},parameters:r.listOf("Parameter"),security:r.listOf("SecurityRequirement"),servers:r.listOf("Server"),requestBody:"RequestBody",responses:"ResponsesMap",deprecated:{type:"boolean"},callbacks:r.mapOf("Callback"),"x-codeSamples":r.listOf("XCodeSample"),"x-code-samples":r.listOf("XCodeSample"),"x-hideTryItPanel":{type:"boolean"}}},s={properties:{$id:{type:"string"},id:{type:"string"},$schema:{type:"string"},definitions:"NamedSchemas",$defs:"NamedSchemas",$vocabulary:{type:"string"},externalDocs:"ExternalDocs",discriminator:"Discriminator",myArbitraryKeyword:{type:"boolean"},title:{type:"string"},multipleOf:{type:"number",minimum:0},maximum:{type:"number"},minimum:{type:"number"},exclusiveMaximum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{type:"integer",minimum:0},minLength:{type:"integer",minimum:0},pattern:{type:"string"},maxItems:{type:"integer",minimum:0},minItems:{type:"integer",minimum:0},uniqueItems:{type:"boolean"},maxProperties:{type:"integer",minimum:0},minProperties:{type:"integer",minimum:0},required:{type:"array",items:{type:"string"}},enum:{type:"array"},type:e=>Array.isArray(e)?{type:"array",items:{enum:["object","array","string","number","integer","boolean","null"]}}:{enum:["object","array","string","number","integer","boolean","null"]},allOf:r.listOf("Schema"),anyOf:r.listOf("Schema"),oneOf:r.listOf("Schema"),not:"Schema",if:"Schema",then:"Schema",else:"Schema",dependentSchemas:r.listOf("Schema"),prefixItems:r.listOf("Schema"),contains:"Schema",minContains:{type:"integer",minimum:0},maxContains:{type:"integer",minimum:0},patternProperties:{type:"object"},propertyNames:"Schema",unevaluatedItems:"Schema",unevaluatedProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",summary:{type:"string"},properties:"SchemaProperties",items:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",additionalProperties:e=>"boolean"==typeof e?{type:"boolean"}:"Schema",description:{type:"string"},format:{type:"string"},contentEncoding:{type:"string"},contentMediaType:{type:"string"},default:null,readOnly:{type:"boolean"},writeOnly:{type:"boolean"},xml:"Xml",examples:{type:"array"},example:{isExample:!0},deprecated:{type:"boolean"},const:null,$comment:{type:"string"},"x-tags":{type:"array",items:{type:"string"}}}},l={properties:{type:{enum:["apiKey","http","oauth2","openIdConnect","mutualTLS"]},description:{type:"string"},name:{type:"string"},in:{type:"string",enum:["query","header","cookie"]},scheme:{type:"string"},bearerFormat:{type:"string"},flows:"SecuritySchemeFlows",openIdConnectUrl:{type:"string"}},required(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in"];case"http":return["type","scheme"];case"oauth2":return["type","flows"];case"openIdConnect":return["type","openIdConnectUrl"];default:return["type"]}},allowed(e){switch(null==e?void 0:e.type){case"apiKey":return["type","name","in","description"];case"http":return["type","scheme","bearerFormat","description"];case"oauth2":switch(null==e?void 0:e.flows){case"implicit":return["type","flows","authorizationUrl","refreshUrl","description","scopes"];case"password":case"clientCredentials":return["type","flows","tokenUrl","refreshUrl","description","scopes"];default:return["type","flows","authorizationUrl","refreshUrl","tokenUrl","description","scopes"]}case"openIdConnect":return["type","openIdConnectUrl","description"];default:return["type","description"]}},extensionsPrefix:"x-"};t.Oas3_1Types=Object.assign(Object.assign({},o.Oas3Types),{Info:{properties:{title:{type:"string"},version:{type:"string"},description:{type:"string"},termsOfService:{type:"string"},summary:{type:"string"},contact:"Contact",license:"License"},required:["title","version"]},DefinitionRoot:i,Schema:s,License:{properties:{name:{type:"string"},url:{type:"string"},identifier:{type:"string"}},required:["name"]},Components:{properties:{parameters:"NamedParameters",schemas:"NamedSchemas",responses:"NamedResponses",examples:"NamedExamples",requestBodies:"NamedRequestBodies",headers:"NamedHeaders",securitySchemes:"NamedSecuritySchemes",links:"NamedLinks",callbacks:"NamedCallbacks",pathItems:"NamedPathItems"}},NamedPathItems:r.mapOf("PathItem"),SecurityScheme:l,Operation:a})},771:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function s(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.isCustomRuleId=t.getMatchingStatusCodeRange=t.assignExisting=t.isNotString=t.isString=t.isNotEmptyObject=t.slash=t.isPathParameter=t.readFileAsStringSync=t.isSingular=t.validateMimeTypeOAS3=t.validateMimeType=t.splitCamelCaseIntoWords=t.omitObjectProps=t.pickObjectProps=t.readFileFromUrl=t.isEmptyArray=t.isEmptyObject=t.isPlainObject=t.notUndefined=t.loadYaml=t.popStack=t.pushStack=t.stringifyYaml=t.parseYaml=void 0;const o=n(3197),i=n(4099),a=n(8150),s=n(3450),l=n(5273),c=n(8698);var u=n(5273);function p(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function d(e,t){return t.match(/^https?:\/\//)||(e=e.replace(/^https?:\/\//,"")),i(e,t)}function f(e){return"string"==typeof e}Object.defineProperty(t,"parseYaml",{enumerable:!0,get:function(){return u.parseYaml}}),Object.defineProperty(t,"stringifyYaml",{enumerable:!0,get:function(){return u.stringifyYaml}}),t.pushStack=function(e,t){return{prev:e,value:t}},t.popStack=function(e){var t;return null!==(t=null==e?void 0:e.prev)&&void 0!==t?t:null},t.loadYaml=function(e){return r(this,void 0,void 0,(function*(){const t=yield o.promises.readFile(e,"utf-8");return l.parseYaml(t)}))},t.notUndefined=function(e){return void 0!==e},t.isPlainObject=p,t.isEmptyObject=function(e){return p(e)&&0===Object.keys(e).length},t.isEmptyArray=function(e){return Array.isArray(e)&&0===e.length},t.readFileFromUrl=function(e,t){return r(this,void 0,void 0,(function*(){const n={};for(const r of t.headers)d(e,r.matches)&&(n[r.name]=void 0!==r.envVariable?c.env[r.envVariable]||"":r.value);const r=yield(t.customFetch||a.default)(e,{headers:n});if(!r.ok)throw new Error(`Failed to load ${e}: ${r.status} ${r.statusText}`);return{body:yield r.text(),mimeType:r.headers.get("content-type")}}))},t.pickObjectProps=function(e,t){return Object.fromEntries(t.filter((t=>t in e)).map((t=>[t,e[t]])))},t.omitObjectProps=function(e,t){return Object.fromEntries(Object.entries(e).filter((([e])=>!t.includes(e))))},t.splitCamelCaseIntoWords=function(e){const t=e.split(/(?:[-._])|([A-Z][a-z]+)/).filter(Boolean).map((e=>e.toLocaleLowerCase())),n=e.split(/([A-Z]{2,})/).filter((e=>e&&e===e.toUpperCase())).map((e=>e.toLocaleLowerCase()));return new Set([...t,...n])},t.validateMimeType=function({type:e,value:t},{report:n,location:r},o){if(!o)throw new Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t[e])for(const i of t[e])o.includes(i)||n({message:`Mime type "${i}" is not allowed`,location:r.child(t[e].indexOf(i)).key()})},t.validateMimeTypeOAS3=function({type:e,value:t},{report:n,location:r},o){if(!o)throw new Error(`Parameter "allowedValues" is not provided for "${"consumes"===e?"request":"response"}-mime-type" rule`);if(t.content)for(const e of Object.keys(t.content))o.includes(e)||n({message:`Mime type "${e}" is not allowed`,location:r.child("content").child(e).key()})},t.isSingular=function(e){return s.isSingular(e)},t.readFileAsStringSync=function(e){return o.readFileSync(e,"utf-8")},t.isPathParameter=function(e){return e.startsWith("{")&&e.endsWith("}")},t.slash=function(e){return/^\\\\\?\\/.test(e)?e:e.replace(/\\/g,"/")},t.isNotEmptyObject=function(e){return!!e&&Object.keys(e).length>0},t.isString=f,t.isNotString=function(e){return!f(e)},t.assignExisting=function(e,t){for(let n of Object.keys(t))e.hasOwnProperty(n)&&(e[n]=t[n])},t.getMatchingStatusCodeRange=e=>`${e}`.replace(/^(\d)\d\d$/,((e,t)=>`${t}XX`)),t.isCustomRuleId=function(e){return e.includes("/")}},8065:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.normalizeVisitors=void 0,t.normalizeVisitors=function(e,t){const n={any:{enter:[],leave:[]}};for(const e of Object.keys(t))n[e]={enter:[],leave:[]};n.ref={enter:[],leave:[]};for(const{ruleId:t,severity:n,visitor:r}of e)o({ruleId:t,severity:n},r,null);for(const e of Object.keys(n))n[e].enter.sort(((e,t)=>t.depth-e.depth)),n[e].leave.sort(((e,t)=>e.depth-t.depth));return n;function r(e,t,o,i,a=[]){if(a.includes(t))return;a=[...a,t];const s=new Set;for(let n of Object.values(t.properties))n!==o?"object"==typeof n&&null!==n&&n.name&&s.add(n):l(e,a);t.additionalProperties&&"function"!=typeof t.additionalProperties&&(t.additionalProperties===o?l(e,a):void 0!==t.additionalProperties.name&&s.add(t.additionalProperties)),t.items&&(t.items===o?l(e,a):void 0!==t.items.name&&s.add(t.items));for(let t of Array.from(s.values()))r(e,t,o,i,a);function l(e,t){for(const r of t.slice(1))n[r.name]=n[r.name]||{enter:[],leave:[]},n[r.name].enter.push(Object.assign(Object.assign({},e),{visit:()=>{},depth:0,context:{isSkippedLevel:!0,seen:new Set,parent:i}}))}}function o(e,i,a,s=0){const l=Object.keys(t);if(0===s)l.push("any"),l.push("ref");else{if(i.any)throw new Error("any() is allowed only on top level");if(i.ref)throw new Error("ref() is allowed only on top level")}for(const c of l){const l=i[c],u=n[c];if(!l)continue;let p,d,f;const h="object"==typeof l;if("ref"===c&&h&&l.skip)throw new Error("ref() visitor does not support skip");"function"==typeof l?p=l:h&&(p=l.enter,d=l.leave,f=l.skip);const m={activatedOn:null,type:t[c],parent:a,isSkippedLevel:!1};if("object"==typeof l&&o(e,l,m,s+1),a&&r(e,a.type,t[c],a),p||h){if(p&&"function"!=typeof p)throw new Error("DEV: should be function");u.enter.push(Object.assign(Object.assign({},e),{visit:p||(()=>{}),skip:f,depth:s,context:m}))}if(d){if("function"!=typeof d)throw new Error("DEV: should be function");u.leave.push(Object.assign(Object.assign({},e),{visit:d,depth:s,context:m}))}}}}},9443:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.walkDocument=void 0;const r=n(7468),o=n(4182),i=n(771),a=n(5220);function s(e){var t,n;const r={};for(;e.parent;)(null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.location)&&(r[e.parent.type.name]=null===(n=e.parent.activatedOn)||void 0===n?void 0:n.value.location),e=e.parent;return r}t.walkDocument=function(e){const{document:t,rootType:n,normalizedVisitors:l,resolvedRefMap:c,ctx:u}=e,p={},d=new Set;!function e(t,n,f,h,m){var g,y,v,b,w,x,k,_,O,S,E;const P=(e,t=$.source.absoluteRef)=>{if(!r.isRef(e))return{location:f,node:e};const n=o.makeRefId(t,e.$ref),i=c.get(n);if(!i)return{location:void 0,node:void 0};const{resolved:a,node:s,document:l,nodePointer:u,error:p}=i;return{location:a?new r.Location(l.source,u):p instanceof o.YamlParseError?new r.Location(p.source,""):void 0,node:s,error:p}},A=f;let $=f;const{node:C,location:R,error:j}=P(t),T=new Set;if(r.isRef(t)){const e=l.ref.enter;for(const{visit:r,ruleId:o,severity:i,context:a}of e)if(!d.has(t)){T.add(a);r(t,{report:N.bind(void 0,o,i),resolve:P,rawNode:t,rawLocation:A,location:f,type:n,parent:h,key:m,parentLocations:{},oasVersion:u.oasVersion,getVisitorData:D.bind(void 0,o)},{node:C,location:R,error:j}),(null==R?void 0:R.source.absoluteRef)&&u.refTypes&&u.refTypes.set(null==R?void 0:R.source.absoluteRef,n)}}if(void 0!==C&&R&&"scalar"!==n.name){$=R;const o=null===(y=null===(g=p[n.name])||void 0===g?void 0:g.has)||void 0===y?void 0:y.call(g,C);let s=!1;const c=l.any.enter.concat((null===(v=l[n.name])||void 0===v?void 0:v.enter)||[]),u=[];for(const{context:e,visit:r,skip:a,ruleId:l,severity:p}of c)if(e.isSkippedLevel)!e.parent.activatedOn||e.parent.activatedOn.value.nextLevelTypeActivated||e.seen.has(t)||(e.seen.add(t),s=!0,u.push(e));else if(e.parent&&e.parent.activatedOn&&(null===(b=e.activatedOn)||void 0===b?void 0:b.value.withParentNode)!==e.parent.activatedOn.value.node&&(null===(w=e.parent.activatedOn.value.nextLevelTypeActivated)||void 0===w?void 0:w.value)!==n||!e.parent&&!o){u.push(e);const o={node:C,location:R,nextLevelTypeActivated:null,withParentNode:null===(k=null===(x=e.parent)||void 0===x?void 0:x.activatedOn)||void 0===k?void 0:k.value.node,skipped:null!==(S=(null===(O=null===(_=e.parent)||void 0===_?void 0:_.activatedOn)||void 0===O?void 0:O.value.skipped)||(null==a?void 0:a(C,m)))&&void 0!==S&&S};e.activatedOn=i.pushStack(e.activatedOn,o);let c=e.parent;for(;c;)c.activatedOn.value.nextLevelTypeActivated=i.pushStack(c.activatedOn.value.nextLevelTypeActivated,n),c=c.parent;if(!o.skipped){s=!0,T.add(e);const{ignoreNextVisitorsOnNode:n}=I(r,C,t,e,l,p);if(n)break}}if(s||!o)if(p[n.name]=p[n.name]||new Set,p[n.name].add(C),Array.isArray(C)){const t=n.items;if(void 0!==t)for(let n=0;n!o.includes(e)))),r.isRef(t)&&o.push(...Object.keys(t).filter((e=>"$ref"!==e&&!o.includes(e))));for(const i of o){let o=C[i],s=R;void 0===o&&(o=t[i],s=f);let l=n.properties[i];void 0===l&&(l=n.additionalProperties),"function"==typeof l&&(l=l(o,i)),!a.isNamedType(l)&&(null==l?void 0:l.directResolveAs)&&(l=l.directResolveAs,o={$ref:o}),l&&void 0===l.name&&!1!==l.resolvable&&(l={name:"scalar",properties:{}}),a.isNamedType(l)&&("scalar"!==l.name||r.isRef(o))&&e(o,l,s.child([i]),C,i)}}const d=l.any.leave,h=((null===(E=l[n.name])||void 0===E?void 0:E.leave)||[]).concat(d);for(const e of u.reverse())if(e.isSkippedLevel)e.seen.delete(C);else if(e.activatedOn=i.popStack(e.activatedOn),e.parent){let t=e.parent;for(;t;)t.activatedOn.value.nextLevelTypeActivated=i.popStack(t.activatedOn.value.nextLevelTypeActivated),t=t.parent}for(const{context:e,visit:n,ruleId:r,severity:o}of h)!e.isSkippedLevel&&T.has(e)&&I(n,C,t,e,r,o)}if($=f,r.isRef(t)){const e=l.ref.leave;for(const{visit:r,ruleId:o,severity:i,context:a}of e)if(T.has(a)){r(t,{report:N.bind(void 0,o,i),resolve:P,rawNode:t,rawLocation:A,location:f,type:n,parent:h,key:m,parentLocations:{},oasVersion:u.oasVersion,getVisitorData:D.bind(void 0,o)},{node:C,location:R,error:j})}}function I(e,t,r,o,i,a){const l=N.bind(void 0,i,a);let c=!1;return e(t,{report:l,resolve:P,rawNode:r,location:$,rawLocation:A,type:n,parent:h,key:m,parentLocations:s(o),oasVersion:u.oasVersion,ignoreNextVisitorsOnNode:()=>{c=!0},getVisitorData:D.bind(void 0,i)},function(e){var t;const n={};for(;e.parent;)n[e.parent.type.name]=null===(t=e.parent.activatedOn)||void 0===t?void 0:t.value.node,e=e.parent;return n}(o),o),{ignoreNextVisitorsOnNode:c}}function N(e,t,n){const r=n.location?Array.isArray(n.location)?n.location:[n.location]:[Object.assign(Object.assign({},$),{reportOnKey:!1})];u.problems.push(Object.assign(Object.assign({ruleId:n.ruleId||e,severity:n.forceSeverity||t},n),{suggest:n.suggest||[],location:r.map((e=>Object.assign(Object.assign(Object.assign({},$),{reportOnKey:!1}),e)))}))}function D(e){return u.visitorsData[e]=u.visitorsData[e]||{},u.visitorsData[e]}}(t.parsed,n,new r.Location(t.source,"#/"),void 0,"")}},5019:function(e,t,n){var r=n(5623);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(a).split("\\,").join(s).split("\\.").join(l)}(e),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",a="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function u(e){return e.split(o).join("\\").split(i).join("{").split(a).join("}").split(s).join(",").split(l).join(".")}function p(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var o=n.pre,i=n.body,a=n.post,s=o.split(",");s[s.length-1]+="{"+i+"}";var l=p(a);return a.length&&(s[s.length-1]+=l.shift(),s.push.apply(s,l)),t.push.apply(t,s),t}function d(e){return"{"+e+"}"}function f(e){return/^-?0\d/.test(e)}function h(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],o=r("{","}",e);if(!o)return[e];var i=o.pre,s=o.post.length?g(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!x&&!k)return o.post.match(/,.*\}/)?g(e=o.pre+"{"+o.body+a+o.post):[e];if(x)y=o.body.split(/\.\./);else if(1===(y=p(o.body)).length&&1===(y=g(y[0],!1).map(d)).length)return s.map((function(e){return o.pre+y[0]+e}));if(x){var _=c(y[0]),O=c(y[1]),S=Math.max(y[0].length,y[1].length),E=3==y.length?Math.abs(c(y[2])):1,P=h;O<_&&(E*=-1,P=m);var A=y.some(f);v=[];for(var $=_;P($,O);$+=E){var C;if(w)"\\"===(C=String.fromCharCode($))&&(C="");else if(C=String($),A){var R=S-C.length;if(R>0){var j=new Array(R+1).join("0");C=$<0?"-"+j+C.slice(1):j+C}}v.push(C)}}else{v=[];for(var T=0;T(g(t),!(!n.nocomment&&"#"===t.charAt(0))&&new v(t,n).match(e));e.exports=r;const o=n(5751);r.sep=o.sep;const i=Symbol("globstar **");r.GLOBSTAR=i;const a=n(5019),s={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},l="[^/]",c="[^/]*?",u=e=>e.split("").reduce(((e,t)=>(e[t]=!0,e)),{}),p=u("().*{}+?[]^$\\!"),d=u("[.("),f=/\/+/;r.filter=(e,t={})=>(n,o,i)=>r(n,e,t);const h=(e,t={})=>{const n={};return Object.keys(e).forEach((t=>n[t]=e[t])),Object.keys(t).forEach((e=>n[e]=t[e])),n};r.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return r;const t=r,n=(n,r,o)=>t(n,r,h(e,o));return(n.Minimatch=class extends t.Minimatch{constructor(t,n){super(t,h(e,n))}}).defaults=n=>t.defaults(h(e,n)).Minimatch,n.filter=(n,r)=>t.filter(n,h(e,r)),n.defaults=n=>t.defaults(h(e,n)),n.makeRe=(n,r)=>t.makeRe(n,h(e,r)),n.braceExpand=(n,r)=>t.braceExpand(n,h(e,r)),n.match=(n,r,o)=>t.match(n,r,h(e,o)),n},r.braceExpand=(e,t)=>m(e,t);const m=(e,t={})=>(g(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:a(e)),g=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},y=Symbol("subparse");r.makeRe=(e,t)=>new v(e,t||{}).makeRe(),r.match=(e,t,n={})=>{const r=new v(t,n);return e=e.filter((e=>r.match(e))),r.options.nonull&&!e.length&&e.push(t),e};class v{constructor(e,t){g(e),t||(t={}),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.make()}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();let n=this.globSet=this.braceExpand();t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,n),n=this.globParts=n.map((e=>e.split(f))),this.debug(this.pattern,n),n=n.map(((e,t,n)=>e.map(this.parse,this))),this.debug(this.pattern,n),n=n.filter((e=>-1===e.indexOf(!1))),this.debug(this.pattern,n),this.set=n}parseNegate(){if(this.options.nonegate)return;const e=this.pattern;let t=!1,n=0;for(let r=0;r>> no match, partial?",e,d,t,f),d!==s))}if("string"==typeof u?(c=p===u,this.debug("string match",u,p,c)):(c=p.match(u),this.debug("pattern match",u,p,c)),!c)return!1}if(o===s&&a===l)return!0;if(o===s)return n;if(a===l)return o===s-1&&""===e[o];throw new Error("wtf?")}braceExpand(){return m(this.pattern,this.options)}parse(e,t){g(e);const n=this.options;if("**"===e){if(!n.noglobstar)return i;e="*"}if(""===e)return"";let r="",o=!!n.nocase,a=!1;const u=[],f=[];let h,m,v,b,w=!1,x=-1,k=-1;const _="."===e.charAt(0)?"":n.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",O=()=>{if(h){switch(h){case"*":r+=c,o=!0;break;case"?":r+=l,o=!0;break;default:r+="\\"+h}this.debug("clearStateChar %j %j",h,r),h=!1}};for(let t,i=0;i(n||(n="\\"),t+t+n+"|"))),this.debug("tail=%j\n %s",e,e,v,r);const t="*"===v.type?c:"?"===v.type?l:"\\"+v.type;o=!0,r=r.slice(0,v.reStart)+t+"\\("+e}O(),a&&(r+="\\\\");const S=d[r.charAt(0)];for(let e=f.length-1;e>-1;e--){const n=f[e],o=r.slice(0,n.reStart),i=r.slice(n.reStart,n.reEnd-8);let a=r.slice(n.reEnd);const s=r.slice(n.reEnd-8,n.reEnd)+a,l=o.split("(").length-1;let c=a;for(let e=0;e(e=e.map((e=>"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===i?i:e._src)).reduce(((e,t)=>(e[e.length-1]===i&&t===i||e.push(t),e)),[]),e.forEach(((t,r)=>{t===i&&e[r-1]!==i&&(0===r?e.length>1?e[r+1]="(?:\\/|"+n+"\\/)?"+e[r+1]:e[r]=n:r===e.length-1?e[r-1]+="(?:\\/|"+n+")?":(e[r-1]+="(?:\\/|\\/"+n+"\\/)"+e[r+1],e[r+1]=i))})),e.filter((e=>e!==i)).join("/")))).join("|");o="^(?:"+o+")$",this.negate&&(o="^(?!"+o+").*$");try{this.regexp=new RegExp(o,r)}catch(e){this.regexp=!1}return this.regexp}match(e,t=this.partial){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;"/"!==o.sep&&(e=e.split(o.sep).join("/")),e=e.split(f),this.debug(this.pattern,"split",e);const r=this.set;let i;this.debug(this.pattern,"set",r);for(let t=e.length-1;t>=0&&(i=e[t],!i);t--);for(let o=0;o=0&&c>0){if(e===t)return[l,c];for(r=[],i=n.length;u>=0&&!s;)u==l?(r.push(u),l=n.indexOf(e,u+1)):1==r.length?s=[r.pop(),c]:((o=r.pop())=0?l:c;r.length&&(s=[i,a])}return s}e.exports=t,t.range=r},4480:function(e,t,n){"use strict";var r=n.g.process&&process.nextTick||n.g.setImmediate||function(e){setTimeout(e,0)};e.exports=function(e,t){return e?void t.then((function(t){r((function(){e(null,t)}))}),(function(t){r((function(){e(t)}))})):t}},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function o(){for(var e=[],t=0;tu;)if((s=l[u++])!=s)return!0}else for(;c>u;u++)if((e||u in l)&&l[u]===n)return e||u||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},2092:function(e,t,n){var r=n(9974),o=n(8361),i=n(7908),a=n(7466),s=n(5417),l=[].push,c=function(e){var t=1==e,n=2==e,c=3==e,u=4==e,p=6==e,d=7==e,f=5==e||p;return function(h,m,g,y){for(var v,b,w=i(h),x=o(w),k=r(m,g,3),_=a(x.length),O=0,S=y||s,E=t?S(h,_):n||d?S(h,0):void 0;_>O;O++)if((f||O in x)&&(b=k(v=x[O],O,w),e))if(t)E[O]=b;else if(b)switch(e){case 3:return!0;case 5:return v;case 6:return O;case 2:l.call(E,v)}else switch(e){case 4:return!1;case 7:l.call(E,v)}return p?-1:c||u?u:E}};e.exports={forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findIndex:c(6),filterOut:c(7)}},1194:function(e,t,n){var r=n(7293),o=n(5112),i=n(7392),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},5417:function(e,t,n){var r=n(111),o=n(3157),i=n(5112)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===t?0:t)}},4326:function(e){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},648:function(e,t,n){var r=n(1694),o=n(4326),i=n(5112)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},9920:function(e,t,n){var r=n(6656),o=n(3887),i=n(1236),a=n(3070);e.exports=function(e,t){for(var n=o(t),s=a.f,l=i.f,c=0;c=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},748:function(e){e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},2109:function(e,t,n){var r=n(7854),o=n(1236).f,i=n(8880),a=n(1320),s=n(3505),l=n(9920),c=n(4705);e.exports=function(e,t){var n,u,p,d,f,h=e.target,m=e.global,g=e.stat;if(n=m?r:g?r[h]||s(h,{}):(r[h]||{}).prototype)for(u in t){if(d=t[u],p=e.noTargetGet?(f=o(n,u))&&f.value:n[u],!c(m?u:h+(g?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;l(d,p)}(e.sham||p&&p.sham)&&i(d,"sham",!0),a(n,u,d,e)}}},7293:function(e){e.exports=function(e){try{return!!e()}catch(e){return!0}}},9974:function(e,t,n){var r=n(3099);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},5005:function(e,t,n){var r=n(857),o=n(7854),i=function(e){return"function"==typeof e?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},7854:function(e,t,n){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof n.g&&n.g)||function(){return this}()||Function("return this")()},6656:function(e,t,n){var r=n(7908),o={}.hasOwnProperty;e.exports=Object.hasOwn||function(e,t){return o.call(r(e),t)}},3501:function(e){e.exports={}},490:function(e,t,n){var r=n(5005);e.exports=r("document","documentElement")},4664:function(e,t,n){var r=n(9781),o=n(7293),i=n(317);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},8361:function(e,t,n){var r=n(7293),o=n(4326),i="".split;e.exports=r((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==o(e)?i.call(e,""):Object(e)}:Object},2788:function(e,t,n){var r=n(5465),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},9909:function(e,t,n){var r,o,i,a=n(8536),s=n(7854),l=n(111),c=n(8880),u=n(6656),p=n(5465),d=n(6200),f=n(3501),h="Object already initialized",m=s.WeakMap;if(a||p.state){var g=p.state||(p.state=new m),y=g.get,v=g.has,b=g.set;r=function(e,t){if(v.call(g,e))throw new TypeError(h);return t.facade=e,b.call(g,e,t),t},o=function(e){return y.call(g,e)||{}},i=function(e){return v.call(g,e)}}else{var w=d("state");f[w]=!0,r=function(e,t){if(u(e,w))throw new TypeError(h);return t.facade=e,c(e,w,t),t},o=function(e){return u(e,w)?e[w]:{}},i=function(e){return u(e,w)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!l(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},3157:function(e,t,n){var r=n(4326);e.exports=Array.isArray||function(e){return"Array"==r(e)}},4705:function(e,t,n){var r=n(7293),o=/#|\.prototype\./,i=function(e,t){var n=s[a(e)];return n==c||n!=l&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},s=i.data={},l=i.NATIVE="N",c=i.POLYFILL="P";e.exports=i},111:function(e){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},1913:function(e){e.exports=!1},133:function(e,t,n){var r=n(7392),o=n(7293);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},8536:function(e,t,n){var r=n(7854),o=n(2788),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},30:function(e,t,n){var r,o=n(9670),i=n(6048),a=n(748),s=n(3501),l=n(490),c=n(317),u=n(6200)("IE_PROTO"),p=function(){},d=function(e){return" drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/swagger-ui-dist/oauth2-redirect.js000066400000000000000000000024611514731163200307770ustar00rootroot00000000000000"use strict";function run(){var e,r,t,a=window.opener.swaggerUIRedirectOauth2,o=a.state,n=a.redirectUrl;if((t=(r=/code|token|error/.test(window.location.hash)?window.location.hash.substring(1).replace("?","&"):location.search.substring(1)).split("&")).forEach((function(e,r,t){t[r]='"'+e.replace("=",'":"')+'"'})),e=(r=r?JSON.parse("{"+t.join()+"}",(function(e,r){return""===e?r:decodeURIComponent(r)})):{}).state===o,"accessCode"!==a.auth.schema.get("flow")&&"authorizationCode"!==a.auth.schema.get("flow")&&"authorization_code"!==a.auth.schema.get("flow")||a.auth.code)a.callback({auth:a.auth,token:r,isValid:e,redirectUrl:n});else if(e||a.errCb({authId:a.auth.name,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),r.code)delete a.state,a.auth.code=r.code,a.callback({auth:a.auth,redirectUrl:n});else{let e;r.error&&(e="["+r.error+"]: "+(r.error_description?r.error_description+". ":"no accessCode received from the server. ")+(r.error_uri?"More info: "+r.error_uri:"")),a.errCb({authId:a.auth.name,source:"auth",level:"error",message:e||"[Authorization failed]: no accessCode received from the server"})}window.close()}"loading"!==document.readyState?run():document.addEventListener("DOMContentLoaded",(function(){run()}));drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-initializer.js000066400000000000000000000010331514731163200317500ustar00rootroot00000000000000window.onload = function() { // // the following lines will be replaced by docker/configurator, when it runs in a docker-container window.ui = SwaggerUIBundle({ url: "https://petstore.swagger.io/v2/swagger.json", dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout" }); // }; drf-yasg-nonfree-1.21.15/src/drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-bundle.js000066400000000000000000056055771514731163200313450ustar00rootroot00000000000000/*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ !function webpackUniversalModuleDefinition(s,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.SwaggerUIBundle=o():s.SwaggerUIBundle=o()}(this,(()=>(()=>{var s={251:(s,o)=>{o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<>1,L=-7,B=i?u-1:0,$=i?-1:1,U=s[o+B];for(B+=$,_=U&(1<<-L)-1,U>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(U?-1:1);w+=Math.pow(2,a),_-=j}return(U?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,U=a?0:_-1,V=a?1:-1,z=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+U]=255&x,U+=V,x/=256,u-=8);for(w=w<0;s[i+U]=255&w,U+=V,w/=256,j-=8);s[i+U-V]|=128*z}},462:(s,o,i)=>{"use strict";var a=i(40975);s.exports=a},659:(s,o,i)=>{var a=i(51873),u=Object.prototype,_=u.hasOwnProperty,w=u.toString,x=a?a.toStringTag:void 0;s.exports=function getRawTag(s){var o=_.call(s,x),i=s[x];try{s[x]=void 0;var a=!0}catch(s){}var u=w.call(s);return a&&(o?s[x]=i:delete s[x]),u}},694:(s,o,i)=>{"use strict";i(91599);var a=i(37257);i(12560),s.exports=a},953:(s,o,i)=>{"use strict";s.exports=i(53375)},1733:s=>{var o=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;s.exports=function asciiWords(s){return s.match(o)||[]}},1882:(s,o,i)=>{var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return"[object Function]"==o||"[object GeneratorFunction]"==o||"[object AsyncFunction]"==o||"[object Proxy]"==o}},1907:(s,o,i)=>{"use strict";var a=i(41505),u=Function.prototype,_=u.call,w=a&&u.bind.bind(_,_);s.exports=a?w:function(s){return function(){return _.apply(s,arguments)}}},2205:function(s,o,i){var a;a=void 0!==i.g?i.g:this,s.exports=function(s){if(s.CSS&&s.CSS.escape)return s.CSS.escape;var cssEscape=function(s){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var o,i=String(s),a=i.length,u=-1,_="",w=i.charCodeAt(0);++u=1&&o<=31||127==o||0==u&&o>=48&&o<=57||1==u&&o>=48&&o<=57&&45==w?"\\"+o.toString(16)+" ":0==u&&1==a&&45==o||!(o>=128||45==o||95==o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?"\\"+i.charAt(u):i.charAt(u):_+="�";return _};return s.CSS||(s.CSS={}),s.CSS.escape=cssEscape,cssEscape}(a)},2209:(s,o,i)=>{"use strict";var a,u=i(9404),_=function productionTypeChecker(){invariant(!1,"ImmutablePropTypes type checking code is stripped in production.")};_.isRequired=_;var w=function getProductionTypeChecker(){return _};function getPropType(s){var o=typeof s;return Array.isArray(s)?"array":s instanceof RegExp?"object":s instanceof u.Iterable?"Immutable."+s.toSource().split(" ")[0]:o}function createChainableTypeChecker(s){function checkType(o,i,a,u,_,w){for(var x=arguments.length,C=Array(x>6?x-6:0),j=6;j>",null!=i[a]?s.apply(void 0,[i,a,u,_,w].concat(C)):o?new Error("Required "+_+" `"+w+"` was not specified in `"+u+"`."):void 0}var o=checkType.bind(null,!1);return o.isRequired=checkType.bind(null,!0),o}function createIterableSubclassTypeChecker(s,o){return function createImmutableTypeChecker(s,o){return createChainableTypeChecker((function validate(i,a,u,_,w){var x=i[a];if(!o(x)){var C=getPropType(x);return new Error("Invalid "+_+" `"+w+"` of type `"+C+"` supplied to `"+u+"`, expected `"+s+"`.")}return null}))}("Iterable."+s,(function(s){return u.Iterable.isIterable(s)&&o(s)}))}(a={listOf:w,mapOf:w,orderedMapOf:w,setOf:w,orderedSetOf:w,stackOf:w,iterableOf:w,recordOf:w,shape:w,contains:w,mapContains:w,orderedMapContains:w,list:_,map:_,orderedMap:_,set:_,orderedSet:_,stack:_,seq:_,record:_,iterable:_}).iterable.indexed=createIterableSubclassTypeChecker("Indexed",u.Iterable.isIndexed),a.iterable.keyed=createIterableSubclassTypeChecker("Keyed",u.Iterable.isKeyed),s.exports=a},2404:(s,o,i)=>{var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},2523:s=>{s.exports=function baseFindIndex(s,o,i,a){for(var u=s.length,_=i+(a?1:-1);a?_--:++_{"use strict";var a=i(45951),u=Object.defineProperty;s.exports=function(s,o){try{u(a,s,{value:o,configurable:!0,writable:!0})}catch(i){a[s]=o}return o}},2694:(s,o,i)=>{"use strict";var a=i(6925);function emptyFunction(){}function emptyFunctionWithReset(){}emptyFunctionWithReset.resetWarningCache=emptyFunction,s.exports=function(){function shim(s,o,i,u,_,w){if(w!==a){var x=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw x.name="Invariant Violation",x}}function getShim(){return shim}shim.isRequired=shim;var s={array:shim,bigint:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,elementType:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim,checkPropTypes:emptyFunctionWithReset,resetWarningCache:emptyFunction};return s.PropTypes=s,s}},2874:s=>{s.exports={}},2875:(s,o,i)=>{"use strict";var a=i(23045),u=i(80376);s.exports=Object.keys||function keys(s){return a(s,u)}},2955:(s,o,i)=>{"use strict";var a,u=i(65606);function _defineProperty(s,o,i){return(o=function _toPropertyKey(s){var o=function _toPrimitive(s,o){if("object"!=typeof s||null===s)return s;var i=s[Symbol.toPrimitive];if(void 0!==i){var a=i.call(s,o||"default");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===o?String:Number)(s)}(s,"string");return"symbol"==typeof o?o:String(o)}(o))in s?Object.defineProperty(s,o,{value:i,enumerable:!0,configurable:!0,writable:!0}):s[o]=i,s}var _=i(86238),w=Symbol("lastResolve"),x=Symbol("lastReject"),C=Symbol("error"),j=Symbol("ended"),L=Symbol("lastPromise"),B=Symbol("handlePromise"),$=Symbol("stream");function createIterResult(s,o){return{value:s,done:o}}function readAndResolve(s){var o=s[w];if(null!==o){var i=s[$].read();null!==i&&(s[L]=null,s[w]=null,s[x]=null,o(createIterResult(i,!1)))}}function onReadable(s){u.nextTick(readAndResolve,s)}var U=Object.getPrototypeOf((function(){})),V=Object.setPrototypeOf((_defineProperty(a={get stream(){return this[$]},next:function next(){var s=this,o=this[C];if(null!==o)return Promise.reject(o);if(this[j])return Promise.resolve(createIterResult(void 0,!0));if(this[$].destroyed)return new Promise((function(o,i){u.nextTick((function(){s[C]?i(s[C]):o(createIterResult(void 0,!0))}))}));var i,a=this[L];if(a)i=new Promise(function wrapForNext(s,o){return function(i,a){s.then((function(){o[j]?i(createIterResult(void 0,!0)):o[B](i,a)}),a)}}(a,this));else{var _=this[$].read();if(null!==_)return Promise.resolve(createIterResult(_,!1));i=new Promise(this[B])}return this[L]=i,i}},Symbol.asyncIterator,(function(){return this})),_defineProperty(a,"return",(function _return(){var s=this;return new Promise((function(o,i){s[$].destroy(null,(function(s){s?i(s):o(createIterResult(void 0,!0))}))}))})),a),U);s.exports=function createReadableStreamAsyncIterator(s){var o,i=Object.create(V,(_defineProperty(o={},$,{value:s,writable:!0}),_defineProperty(o,w,{value:null,writable:!0}),_defineProperty(o,x,{value:null,writable:!0}),_defineProperty(o,C,{value:null,writable:!0}),_defineProperty(o,j,{value:s._readableState.endEmitted,writable:!0}),_defineProperty(o,B,{value:function value(s,o){var a=i[$].read();a?(i[L]=null,i[w]=null,i[x]=null,s(createIterResult(a,!1))):(i[w]=s,i[x]=o)},writable:!0}),o));return i[L]=null,_(s,(function(s){if(s&&"ERR_STREAM_PREMATURE_CLOSE"!==s.code){var o=i[x];return null!==o&&(i[L]=null,i[w]=null,i[x]=null,o(s)),void(i[C]=s)}var a=i[w];null!==a&&(i[L]=null,i[w]=null,i[x]=null,a(createIterResult(void 0,!0))),i[j]=!0})),s.on("readable",onReadable.bind(null,i)),i}},3110:(s,o,i)=>{const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register("null",j.NullElement).register("string",j.StringElement).register("number",j.NumberElement).register("boolean",j.BooleanElement).register("array",j.ArrayElement).register("object",j.ObjectElement).register("member",j.MemberElement).register("ref",j.RefElement).register("link",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},3121:(s,o,i)=>{"use strict";var a=i(65482),u=Math.min;s.exports=function(s){var o=a(s);return o>0?u(o,9007199254740991):0}},3209:(s,o,i)=>{var a=i(91596),u=i(53320),_=i(36306),w="__lodash_placeholder__",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var U=o[3];if(U){var V=s[3];s[3]=V?a(V,U,o[4]):U,s[4]=V?_(s[3],w):o[4]}return(U=o[5])&&(V=s[5],s[5]=V?u(V,U,o[6]):U,s[6]=V?_(s[5],w):o[6]),(U=o[7])&&(s[7]=U),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},3650:(s,o,i)=>{var a=i(74335)(Object.keys,Object);s.exports=a},3656:(s,o,i)=>{s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},4509:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},4640:s=>{"use strict";var o=String;s.exports=function(s){try{return o(s)}catch(s){return"Object"}}},4664:(s,o,i)=>{var a=i(79770),u=i(63345),_=Object.prototype.propertyIsEnumerable,w=Object.getOwnPropertySymbols,x=w?function(s){return null==s?[]:(s=Object(s),a(w(s),(function(o){return _.call(s,o)})))}:u;s.exports=x},4901:(s,o,i)=>{var a=i(72552),u=i(30294),_=i(40346),w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w["[object Arguments]"]=w["[object Array]"]=w["[object ArrayBuffer]"]=w["[object Boolean]"]=w["[object DataView]"]=w["[object Date]"]=w["[object Error]"]=w["[object Function]"]=w["[object Map]"]=w["[object Number]"]=w["[object Object]"]=w["[object RegExp]"]=w["[object Set]"]=w["[object String]"]=w["[object WeakMap]"]=!1,s.exports=function baseIsTypedArray(s){return _(s)&&u(s.length)&&!!w[a(s)]}},4993:(s,o,i)=>{"use strict";var a=i(16946),u=i(74239);s.exports=function(s){return a(u(s))}},5187:s=>{s.exports=function isNull(s){return null===s}},5419:s=>{s.exports=function(s,o,i,a){var u=new Blob(void 0!==a?[a,s]:[s],{type:i||"application/octet-stream"});if(void 0!==window.navigator.msSaveBlob)window.navigator.msSaveBlob(u,o);else{var _=window.URL&&window.URL.createObjectURL?window.URL.createObjectURL(u):window.webkitURL.createObjectURL(u),w=document.createElement("a");w.style.display="none",w.href=_,w.setAttribute("download",o),void 0===w.download&&w.setAttribute("target","_blank"),document.body.appendChild(w),w.click(),setTimeout((function(){document.body.removeChild(w),window.URL.revokeObjectURL(_)}),200)}}},5556:(s,o,i)=>{s.exports=i(2694)()},5861:(s,o,i)=>{var a=i(55580),u=i(68223),_=i(32804),w=i(76545),x=i(28303),C=i(72552),j=i(47473),L="[object Map]",B="[object Promise]",$="[object Set]",U="[object WeakMap]",V="[object DataView]",z=j(a),Y=j(u),Z=j(_),ee=j(w),ie=j(x),ae=C;(a&&ae(new a(new ArrayBuffer(1)))!=V||u&&ae(new u)!=L||_&&ae(_.resolve())!=B||w&&ae(new w)!=$||x&&ae(new x)!=U)&&(ae=function(s){var o=C(s),i="[object Object]"==o?s.constructor:void 0,a=i?j(i):"";if(a)switch(a){case z:return V;case Y:return L;case Z:return B;case ee:return $;case ie:return U}return o}),s.exports=ae},6048:s=>{s.exports=function negate(s){if("function"!=typeof s)throw new TypeError("Expected a function");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},6188:s=>{"use strict";s.exports=Math.max},6205:s=>{s.exports={ROOT:0,GROUP:1,POSITION:2,SET:3,RANGE:4,REPETITION:5,REFERENCE:6,CHAR:7}},6233:(s,o,i)=>{const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element="array"}primitive(){return"array"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a="object"===this.primitive()?this.first.value:this.first);for(let o=i;o{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}"fantasy-land/concat"(s){return this.concat(s)}"fantasy-land/map"(s){return new this.constructor(this.map(s))}"fantasy-land/chain"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}"fantasy-land/filter"(s){return new this.constructor(this.content.filter(s))}"fantasy-land/reduce"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},6499:(s,o,i)=>{"use strict";var a=i(1907),u=0,_=Math.random(),w=a(1..toString);s.exports=function(s){return"Symbol("+(void 0===s?"":s)+")_"+w(++u+_,36)}},6549:s=>{"use strict";s.exports=Object.getOwnPropertyDescriptor},6925:s=>{"use strict";s.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},7057:(s,o,i)=>{"use strict";var a=i(11470).charAt,u=i(90160),_=i(64932),w=i(60183),x=i(59550),C="String Iterator",j=_.set,L=_.getterFor(C);w(String,"String",(function(s){j(this,{type:C,string:u(s),index:0})}),(function next(){var s,o=L(this),i=o.string,u=o.index;return u>=i.length?x(void 0,!0):(s=a(i,u),o.index+=s.length,x(s,!1))}))},7176:(s,o,i)=>{"use strict";var a,u=i(73126),_=i(75795);try{a=[].__proto__===Array.prototype}catch(s){if(!s||"object"!=typeof s||!("code"in s)||"ERR_PROTO_ACCESS"!==s.code)throw s}var w=!!a&&_&&_(Object.prototype,"__proto__"),x=Object,C=x.getPrototypeOf;s.exports=w&&"function"==typeof w.get?u([w.get]):"function"==typeof C&&function getDunder(s){return C(null==s?s:x(s))}},7309:(s,o,i)=>{var a=i(62006)(i(24713));s.exports=a},7376:s=>{"use strict";s.exports=!0},7463:(s,o,i)=>{"use strict";var a=i(98828),u=i(62250),_=/#|\.prototype\./,isForced=function(s,o){var i=x[w(s)];return i===j||i!==C&&(u(o)?a(o):!!o)},w=isForced.normalize=function(s){return String(s).replace(_,".").toLowerCase()},x=isForced.data={},C=isForced.NATIVE="N",j=isForced.POLYFILL="P";s.exports=isForced},7666:(s,o,i)=>{var a=i(84851),u=i(953);function _extends(){var o;return s.exports=_extends=a?u(o=a).call(o):function(s){for(var o=1;o{const a=i(6205);o.wordBoundary=()=>({type:a.POSITION,value:"b"}),o.nonWordBoundary=()=>({type:a.POSITION,value:"B"}),o.begin=()=>({type:a.POSITION,value:"^"}),o.end=()=>({type:a.POSITION,value:"$"})},8068:s=>{"use strict";var o=(()=>{var s=Object.defineProperty,o=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,a=Object.getOwnPropertySymbols,u=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable,__defNormalProp=(o,i,a)=>i in o?s(o,i,{enumerable:!0,configurable:!0,writable:!0,value:a}):o[i]=a,__spreadValues=(s,o)=>{for(var i in o||(o={}))u.call(o,i)&&__defNormalProp(s,i,o[i]);if(a)for(var i of a(o))_.call(o,i)&&__defNormalProp(s,i,o[i]);return s},__publicField=(s,o,i)=>__defNormalProp(s,"symbol"!=typeof o?o+"":o,i),w={};((o,i)=>{for(var a in i)s(o,a,{get:i[a],enumerable:!0})})(w,{DEFAULT_OPTIONS:()=>C,DEFAULT_UUID_LENGTH:()=>x,default:()=>B});var x=6,C={dictionary:"alphanum",shuffle:!0,debug:!1,length:x,counter:0},j=class _ShortUniqueId{constructor(s={}){__publicField(this,"counter"),__publicField(this,"debug"),__publicField(this,"dict"),__publicField(this,"version"),__publicField(this,"dictIndex",0),__publicField(this,"dictRange",[]),__publicField(this,"lowerBound",0),__publicField(this,"upperBound",0),__publicField(this,"dictLength",0),__publicField(this,"uuidLength"),__publicField(this,"_digit_first_ascii",48),__publicField(this,"_digit_last_ascii",58),__publicField(this,"_alpha_lower_first_ascii",97),__publicField(this,"_alpha_lower_last_ascii",123),__publicField(this,"_hex_last_ascii",103),__publicField(this,"_alpha_upper_first_ascii",65),__publicField(this,"_alpha_upper_last_ascii",91),__publicField(this,"_number_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii]}),__publicField(this,"_alpha_dict_ranges",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alpha_lower_dict_ranges",{lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,"_alpha_upper_dict_ranges",{upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alphanum_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_alphanum_lower_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],lowerCase:[this._alpha_lower_first_ascii,this._alpha_lower_last_ascii]}),__publicField(this,"_alphanum_upper_dict_ranges",{digits:[this._digit_first_ascii,this._digit_last_ascii],upperCase:[this._alpha_upper_first_ascii,this._alpha_upper_last_ascii]}),__publicField(this,"_hex_dict_ranges",{decDigits:[this._digit_first_ascii,this._digit_last_ascii],alphaDigits:[this._alpha_lower_first_ascii,this._hex_last_ascii]}),__publicField(this,"_dict_ranges",{_number_dict_ranges:this._number_dict_ranges,_alpha_dict_ranges:this._alpha_dict_ranges,_alpha_lower_dict_ranges:this._alpha_lower_dict_ranges,_alpha_upper_dict_ranges:this._alpha_upper_dict_ranges,_alphanum_dict_ranges:this._alphanum_dict_ranges,_alphanum_lower_dict_ranges:this._alphanum_lower_dict_ranges,_alphanum_upper_dict_ranges:this._alphanum_upper_dict_ranges,_hex_dict_ranges:this._hex_dict_ranges}),__publicField(this,"log",((...s)=>{const o=[...s];o[0]="[short-unique-id] ".concat(s[0]),!0!==this.debug||"undefined"==typeof console||null===console||console.log(...o)})),__publicField(this,"_normalizeDictionary",((s,o)=>{let i;if(s&&Array.isArray(s)&&s.length>1)i=s;else{i=[],this.dictIndex=0;const o="_".concat(s,"_dict_ranges"),a=this._dict_ranges[o];let u=0;for(const[,s]of Object.entries(a)){const[o,i]=s;u+=Math.abs(i-o)}i=new Array(u);let _=0;for(const[,s]of Object.entries(a)){this.dictRange=s,this.lowerBound=this.dictRange[0],this.upperBound=this.dictRange[1];const o=this.lowerBound<=this.upperBound,a=this.lowerBound,u=this.upperBound;if(o)for(let s=a;su;s--)i[_++]=String.fromCharCode(s),this.dictIndex=s}i.length=_}if(o){for(let s=i.length-1;s>0;s--){const o=Math.floor(Math.random()*(s+1));[i[s],i[o]]=[i[o],i[s]]}}return i})),__publicField(this,"setDictionary",((s,o)=>{this.dict=this._normalizeDictionary(s,o),this.dictLength=this.dict.length,this.setCounter(0)})),__publicField(this,"seq",(()=>this.sequentialUUID())),__publicField(this,"sequentialUUID",(()=>{const s=this.dictLength,o=this.dict;let i=this.counter;const a=[];do{const u=i%s;i=Math.trunc(i/s),a.push(o[u])}while(0!==i);const u=a.join("");return this.counter+=1,u})),__publicField(this,"rnd",((s=this.uuidLength||x)=>this.randomUUID(s))),__publicField(this,"randomUUID",((s=this.uuidLength||x)=>{if(null==s||s<1)throw new Error("Invalid UUID Length Provided");const o=new Array(s),i=this.dictLength,a=this.dict;for(let u=0;uthis.formattedUUID(s,o))),__publicField(this,"formattedUUID",((s,o)=>{const i={$r:this.randomUUID,$s:this.sequentialUUID,$t:this.stamp};return s.replace(/\$[rs]\d{0,}|\$t0|\$t[1-9]\d{1,}/g,(s=>{const a=s.slice(0,2),u=Number.parseInt(s.slice(2),10);return"$s"===a?i[a]().padStart(u,"0"):"$t"===a&&o?i[a](u,o):i[a](u)}))})),__publicField(this,"availableUUIDs",((s=this.uuidLength)=>Number.parseFloat(([...new Set(this.dict)].length**s).toFixed(0)))),__publicField(this,"_collisionCache",new Map),__publicField(this,"approxMaxBeforeCollision",((s=this.availableUUIDs(this.uuidLength))=>{const o=s,i=this._collisionCache.get(o);if(void 0!==i)return i;const a=Number.parseFloat(Math.sqrt(Math.PI/2*s).toFixed(20));return this._collisionCache.set(o,a),a})),__publicField(this,"collisionProbability",((s=this.availableUUIDs(this.uuidLength),o=this.uuidLength)=>Number.parseFloat((this.approxMaxBeforeCollision(s)/this.availableUUIDs(o)).toFixed(20)))),__publicField(this,"uniqueness",((s=this.availableUUIDs(this.uuidLength))=>{const o=Number.parseFloat((1-this.approxMaxBeforeCollision(s)/s).toFixed(20));return o>1?1:o<0?0:o})),__publicField(this,"getVersion",(()=>this.version)),__publicField(this,"stamp",((s,o)=>{const i=Math.floor(+(o||new Date)/1e3).toString(16);if("number"==typeof s&&0===s)return i;if("number"!=typeof s||s<10)throw new Error(["Param finalLength must be a number greater than or equal to 10,","or 0 if you want the raw hexadecimal timestamp"].join("\n"));const a=s-9,u=Math.round(Math.random()*(a>15?15:a)),_=this.randomUUID(a);return"".concat(_.substring(0,u)).concat(i).concat(_.substring(u)).concat(u.toString(16))})),__publicField(this,"parseStamp",((s,o)=>{if(o&&!/t0|t[1-9]\d{1,}/.test(o))throw new Error("Cannot extract date from a formated UUID with no timestamp in the format");const i=o?o.replace(/\$[rs]\d{0,}|\$t0|\$t[1-9]\d{1,}/g,(s=>{const o={$r:s=>[...Array(s)].map((()=>"r")).join(""),$s:s=>[...Array(s)].map((()=>"s")).join(""),$t:s=>[...Array(s)].map((()=>"t")).join("")},i=s.slice(0,2),a=Number.parseInt(s.slice(2),10);return o[i](a)})).replace(/^(.*?)(t{8,})(.*)$/g,((o,i,a)=>s.substring(i.length,i.length+a.length))):s;if(8===i.length)return new Date(1e3*Number.parseInt(i,16));if(i.length<10)throw new Error("Stamp length invalid");const a=Number.parseInt(i.substring(i.length-1),16);return new Date(1e3*Number.parseInt(i.substring(a,a+8),16))})),__publicField(this,"setCounter",(s=>{this.counter=s})),__publicField(this,"validate",((s,o)=>{const i=o?this._normalizeDictionary(o):this.dict;return s.split("").every((s=>i.includes(s)))}));const o=__spreadValues(__spreadValues({},C),s);this.counter=0,this.debug=!1,this.dict=[],this.version="5.3.2";const{dictionary:i,shuffle:a,length:u,counter:_}=o;this.uuidLength=u,this.setDictionary(i,a),this.setCounter(_),this.debug=o.debug,this.log(this.dict),this.log("Generator instantiated with Dictionary Size ".concat(this.dictLength," and counter set to ").concat(this.counter)),this.log=this.log.bind(this),this.setDictionary=this.setDictionary.bind(this),this.setCounter=this.setCounter.bind(this),this.seq=this.seq.bind(this),this.sequentialUUID=this.sequentialUUID.bind(this),this.rnd=this.rnd.bind(this),this.randomUUID=this.randomUUID.bind(this),this.fmt=this.fmt.bind(this),this.formattedUUID=this.formattedUUID.bind(this),this.availableUUIDs=this.availableUUIDs.bind(this),this.approxMaxBeforeCollision=this.approxMaxBeforeCollision.bind(this),this.collisionProbability=this.collisionProbability.bind(this),this.uniqueness=this.uniqueness.bind(this),this.getVersion=this.getVersion.bind(this),this.stamp=this.stamp.bind(this),this.parseStamp=this.parseStamp.bind(this)}};__publicField(j,"default",j);var L,B=j;return L=w,((a,_,w,x)=>{if(_&&"object"==typeof _||"function"==typeof _)for(let C of i(_))u.call(a,C)||C===w||s(a,C,{get:()=>_[C],enumerable:!(x=o(_,C))||x.enumerable});return a})(s({},"__esModule",{value:!0}),L)})();s.exports=o.default,"undefined"!=typeof window&&(o=o.default)},9325:(s,o,i)=>{var a=i(34840),u="object"==typeof self&&self&&self.Object===Object&&self,_=a||u||Function("return this")();s.exports=_},9404:function(s){s.exports=function(){"use strict";var s=Array.prototype.slice;function createClass(s,o){o&&(s.prototype=Object.create(o.prototype)),s.prototype.constructor=s}function Iterable(s){return isIterable(s)?s:Seq(s)}function KeyedIterable(s){return isKeyed(s)?s:KeyedSeq(s)}function IndexedIterable(s){return isIndexed(s)?s:IndexedSeq(s)}function SetIterable(s){return isIterable(s)&&!isAssociative(s)?s:SetSeq(s)}function isIterable(s){return!(!s||!s[o])}function isKeyed(s){return!(!s||!s[i])}function isIndexed(s){return!(!s||!s[a])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}function isOrdered(s){return!(!s||!s[u])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var o="@@__IMMUTABLE_ITERABLE__@@",i="@@__IMMUTABLE_KEYED__@@",a="@@__IMMUTABLE_INDEXED__@@",u="@@__IMMUTABLE_ORDERED__@@",_="delete",w=5,x=1<>>0;if(""+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:s<0?Math.max(0,o+s):void 0===o?s:Math.min(o,s)}var $=0,U=1,V=2,z="function"==typeof Symbol&&Symbol.iterator,Y="@@iterator",Z=z||Y;function Iterator(s){this.next=s}function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!getIteratorFn(s)}function isIterator(s){return s&&"function"==typeof s.next}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(z&&s[z]||s[Y]);if("function"==typeof o)return o}function isArrayLike(s){return s&&"number"==typeof s.length}function Seq(s){return null==s?emptySequence():isIterable(s)?s.toSeq():seqFromValue(s)}function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isIterable(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():keyedSeqFromValue(s)}function IndexedSeq(s){return null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():indexedSeqFromValue(s)}function SetSeq(s){return(null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s:indexedSeqFromValue(s)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=$,Iterator.VALUES=U,Iterator.ENTRIES=V,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[Z]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!0)},Seq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!1)},IndexedSeq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var ee,ie,ae,ce="@@__IMMUTABLE_SEQ__@@";function ArraySeq(s){this._array=s,this.size=s.length}function ObjectSeq(s){var o=Object.keys(s);this._object=s,this._keys=o,this.size=o.length}function IterableSeq(s){this._iterable=s,this.size=s.length||s.size}function IteratorSeq(s){this._iterator=s,this._iteratorCache=[]}function isSeq(s){return!(!s||!s[ce])}function emptySequence(){return ee||(ee=new ArraySeq([]))}function keyedSeqFromValue(s){var o=Array.isArray(s)?new ArraySeq(s).fromEntrySeq():isIterator(s)?new IteratorSeq(s).fromEntrySeq():hasIterator(s)?new IterableSeq(s).fromEntrySeq():"object"==typeof s?new ObjectSeq(s):void 0;if(!o)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+s);return o}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(!o)throw new TypeError("Expected Array or iterable object of values: "+s);return o}function seqFromValue(s){var o=maybeIndexedSeqFromValue(s)||"object"==typeof s&&new ObjectSeq(s);if(!o)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+s);return o}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ArraySeq(s):isIterator(s)?new IteratorSeq(s):hasIterator(s)?new IterableSeq(s):void 0}function seqIterate(s,o,i,a){var u=s._cache;if(u){for(var _=u.length-1,w=0;w<=_;w++){var x=u[i?_-w:w];if(!1===o(x[1],a?x[0]:w,s))return w+1}return w}return s.__iterateUncached(o,i)}function seqIterator(s,o,i,a){var u=s._cache;if(u){var _=u.length-1,w=0;return new Iterator((function(){var s=u[i?_-w:w];return w++>_?iteratorDone():iteratorValue(o,a?s[0]:w-1,s[1])}))}return s.__iteratorUncached(o,i)}function fromJS(s,o){return o?fromJSWith(o,s,"",{"":s}):fromJSDefault(s)}function fromJSWith(s,o,i,a){return Array.isArray(o)?s.call(a,i,IndexedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):isPlainObj(o)?s.call(a,i,KeyedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):o}function fromJSDefault(s){return Array.isArray(s)?IndexedSeq(s).map(fromJSDefault).toList():isPlainObj(s)?KeyedSeq(s).map(fromJSDefault).toMap():s}function isPlainObj(s){return s&&(s.constructor===Object||void 0===s.constructor)}function is(s,o){if(s===o||s!=s&&o!=o)return!0;if(!s||!o)return!1;if("function"==typeof s.valueOf&&"function"==typeof o.valueOf){if((s=s.valueOf())===(o=o.valueOf())||s!=s&&o!=o)return!0;if(!s||!o)return!1}return!("function"!=typeof s.equals||"function"!=typeof o.equals||!s.equals(o))}function deepEqual(s,o){if(s===o)return!0;if(!isIterable(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)"function"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,j)):!is(s.get(a,j),o))return w=!1,!1}));return w&&s.size===x}function Repeat(s,o){if(!(this instanceof Repeat))return new Repeat(s,o);if(this._value=s,this.size=void 0===o?1/0:Math.max(0,o),0===this.size){if(ie)return ie;ie=this}}function invariant(s,o){if(!s)throw new Error(o)}function Range(s,o,i){if(!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,"Cannot step a Range by 0"),s=s||0,void 0===o&&(o=1/0),i=void 0===i?1:Math.abs(i),oa?iteratorDone():iteratorValue(s,u,i[o?a-u++:u++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function(s){return this._object.hasOwnProperty(s)},ObjectSeq.prototype.__iterate=function(s,o){for(var i=this._object,a=this._keys,u=a.length-1,_=0;_<=u;_++){var w=a[o?u-_:_];if(!1===s(i[w],w,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(s,o){var i=this._object,a=this._keys,u=a.length-1,_=0;return new Iterator((function(){var w=a[o?u-_:_];return _++>u?iteratorDone():iteratorValue(s,w,i[w])}))},ObjectSeq.prototype[u]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._iterable),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},IterableSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._iterable);if(!isIterator(i))return new Iterator(iteratorDone);var a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);for(var i,a=this._iterator,u=this._iteratorCache,_=0;_=a.length){var o=i.next();if(o.done)return o;a[u]=o.value}return iteratorValue(s,u,a[u++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(s,o){return this.has(s)?this._value:o},Repeat.prototype.includes=function(s){return is(this._value,s)},Repeat.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:new Repeat(this._value,resolveEnd(o,i)-resolveBegin(s,i))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(s){return is(this._value,s)?0:-1},Repeat.prototype.lastIndexOf=function(s){return is(this._value,s)?this.size:-1},Repeat.prototype.__iterate=function(s,o){for(var i=0;i=0&&o=0&&ii?iteratorDone():iteratorValue(s,_++,w)}))},Range.prototype.equals=function(s){return s instanceof Range?this._start===s._start&&this._end===s._end&&this._step===s._step:deepEqual(this,s)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var le="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}function hash(s){if(!1===s||null==s)return 0;if("function"==typeof s.valueOf&&(!1===(s=s.valueOf())||null==s))return 0;if(!0===s)return 1;var o=typeof s;if("number"===o){if(s!=s||s===1/0)return 0;var i=0|s;for(i!==s&&(i^=4294967295*s);s>4294967295;)i^=s/=4294967295;return smi(i)}if("string"===o)return s.length>Se?cachedHashString(s):hashString(s);if("function"==typeof s.hashCode)return s.hashCode();if("object"===o)return hashJSObj(s);if("function"==typeof s.toString)return hashString(s.toString());throw new Error("Value type "+o+" cannot be hashed.")}function cachedHashString(s){var o=Pe[s];return void 0===o&&(o=hashString(s),xe===we&&(xe=0,Pe={}),xe++,Pe[s]=o),o}function hashString(s){for(var o=0,i=0;i0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}var fe,ye="function"==typeof WeakMap;ye&&(fe=new WeakMap);var be=0,_e="__immutablehash__";"function"==typeof Symbol&&(_e=Symbol(_e));var Se=16,we=255,xe=0,Pe={};function assertNotInfinite(s){invariant(s!==1/0,"Cannot perform this action with an infinite size.")}function Map(s){return null==s?emptyMap():isMap(s)&&!isOrdered(s)?s:emptyMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isMap(s){return!(!s||!s[Re])}createClass(Map,KeyedCollection),Map.of=function(){var o=s.call(arguments,0);return emptyMap().withMutations((function(s){for(var i=0;i=o.length)throw new Error("Missing value for key: "+o[i]);s.set(o[i],o[i+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function(s,o){return updateMap(this,s,o)},Map.prototype.setIn=function(s,o){return this.updateIn(s,j,(function(){return o}))},Map.prototype.remove=function(s){return updateMap(this,s,j)},Map.prototype.deleteIn=function(s){return this.updateIn(s,(function(){return j}))},Map.prototype.update=function(s,o,i){return 1===arguments.length?s(this):this.updateIn([s],o,i)},Map.prototype.updateIn=function(s,o,i){i||(i=o,o=void 0);var a=updateInDeepMap(this,forceIterator(s),o,i);return a===j?void 0:a},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(o){return mergeIntoMapWith(this,o,s.call(arguments,1))},Map.prototype.mergeIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.merge?s.merge.apply(s,i):i[i.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(o),i)},Map.prototype.mergeDeepIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.mergeDeep?s.mergeDeep.apply(s,i):i[i.length-1]}))},Map.prototype.sort=function(s){return OrderedMap(sortFactory(this,s))},Map.prototype.sortBy=function(s,o){return OrderedMap(sortFactory(this,o,s))},Map.prototype.withMutations=function(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(s,o){return new MapIterator(this,s,o)},Map.prototype.__iterate=function(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Map.isMap=isMap;var Te,Re="@@__IMMUTABLE_MAP__@@",$e=Map.prototype;function ArrayMapNode(s,o){this.ownerID=s,this.entries=o}function BitmapIndexedNode(s,o,i){this.ownerID=s,this.bitmap=o,this.nodes=i}function HashArrayMapNode(s,o,i){this.ownerID=s,this.count=o,this.nodes=i}function HashCollisionNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entries=i}function ValueNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entry=i}function MapIterator(s,o,i){this._type=o,this._reverse=i,this._stack=s._root&&mapIteratorFrame(s._root)}function mapIteratorValue(s,o){return iteratorValue(s,o[0],o[1])}function mapIteratorFrame(s,o){return{node:s,index:0,__prev:o}}function makeMap(s,o,i,a){var u=Object.create($e);return u.size=s,u._root=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyMap(){return Te||(Te=makeMap(0))}function updateMap(s,o,i){var a,u;if(s._root){var _=MakeRef(L),w=MakeRef(B);if(a=updateNode(s._root,s.__ownerID,0,void 0,o,i,_,w),!w.value)return s;u=s.size+(_.value?i===j?-1:1:0)}else{if(i===j)return s;u=1,a=new ArrayMapNode(s.__ownerID,[[o,i]])}return s.__ownerID?(s.size=u,s._root=a,s.__hash=void 0,s.__altered=!0,s):a?makeMap(u,a):emptyMap()}function updateNode(s,o,i,a,u,_,w,x){return s?s.update(o,i,a,u,_,w,x):_===j?s:(SetRef(x),SetRef(w),new ValueNode(o,a,[u,_]))}function isLeafNode(s){return s.constructor===ValueNode||s.constructor===HashCollisionNode}function mergeIntoNode(s,o,i,a,u){if(s.keyHash===a)return new HashCollisionNode(o,a,[s.entry,u]);var _,x=(0===i?s.keyHash:s.keyHash>>>i)&C,j=(0===i?a:a>>>i)&C;return new BitmapIndexedNode(o,1<>>=1)w[C]=1&i?o[_++]:void 0;return w[a]=u,new HashArrayMapNode(s,_+1,w)}function mergeIntoMapWith(s,o,i){for(var a=[],u=0;u>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setIn(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}function spliceIn(s,o,i,a){var u=s.length+1;if(a&&o+1===u)return s[o]=i,s;for(var _=new Array(u),w=0,x=0;x=qe)return createNodes(s,C,a,u);var U=s&&s===this.ownerID,V=U?C:arrCopy(C);return $?x?L===B-1?V.pop():V[L]=V.pop():V[L]=[a,u]:V.push([a,u]),U?(this.entries=V,this):new ArrayMapNode(s,V)}},BitmapIndexedNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=1<<((0===s?o:o>>>s)&C),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+w,o,i,a):a},BitmapIndexedNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=1<=ze)return expandNodes(s,z,$,L,Z);if(U&&!Z&&2===z.length&&isLeafNode(z[1^V]))return z[1^V];if(U&&Z&&1===z.length&&isLeafNode(Z))return Z;var ee=s&&s===this.ownerID,ie=U?Z?$:$^B:$|B,ae=U?Z?setIn(z,V,Z,ee):spliceOut(z,V,ee):spliceIn(z,V,Z,ee);return ee?(this.bitmap=ie,this.nodes=ae,this):new BitmapIndexedNode(s,ie,ae)},HashArrayMapNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=(0===s?o:o>>>s)&C,_=this.nodes[u];return _?_.get(s+w,o,i,a):a},HashArrayMapNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=u===j,$=this.nodes,U=$[L];if(B&&!U)return this;var V=updateNode(U,s,o+w,i,a,u,_,x);if(V===U)return this;var z=this.count;if(U){if(!V&&--z0&&a=0&&s>>o&C;if(a>=this.array.length)return new VNode([],s);var u,_=0===a;if(o>0){var x=this.array[a];if((u=x&&x.removeBefore(s,o-w,i))===x&&_)return this}if(_&&!u)return this;var j=editableVNode(this,s);if(!_)for(var L=0;L>>o&C;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-w,i))===_&&u===this.array.length-1)return this}var x=editableVNode(this,s);return x.array.splice(u+1),a&&(x.array[u]=a),x};var Xe,Qe,et={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,o,i){return 0===o?iterateLeaf(s,i):iterateNode(s,o,i)}function iterateLeaf(s,w){var C=w===u?_&&_.array:s&&s.array,j=w>i?0:i-w,L=a-w;return L>x&&(L=x),function(){if(j===L)return et;var s=o?--L:j++;return C&&C[s]}}function iterateNode(s,u,_){var C,j=s&&s.array,L=_>i?0:i-_>>u,B=1+(a-_>>u);return B>x&&(B=x),function(){for(;;){if(C){var s=C();if(s!==et)return s;C=null}if(L===B)return et;var i=o?--B:L++;C=iterateNodeOrLeaf(j&&j[i],u-w,_+(i<=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_=MakeRef(B);return o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_),_.value?s.__ownerID?(s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s):makeList(s._origin,s._capacity,s._level,u,a):s}function updateVNode(s,o,i,a,u,_){var x,j=a>>>i&C,L=s&&j0){var B=s&&s.array[j],$=updateVNode(B,o,i-w,a,u,_);return $===B?s:((x=editableVNode(s,o)).array[j]=$,x)}return L&&s.array[j]===u?s:(SetRef(_),x=editableVNode(s,o),void 0===u&&j===x.array.length-1?x.array.pop():x.array[j]=u,x)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new VNode(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<0;)i=i.array[o>>>a&C],a-=w;return i}}function setListBounds(s,o,i){void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,x=u+o,j=void 0===i?_:i<0?_+i:u+i;if(x===u&&j===_)return s;if(x>=j)return s.clear();for(var L=s._level,B=s._root,$=0;x+$<0;)B=new VNode(B&&B.array.length?[void 0,B]:[],a),$+=1<<(L+=w);$&&(x+=$,u+=$,j+=$,_+=$);for(var U=getTailOffset(_),V=getTailOffset(j);V>=1<U?new VNode([],a):z;if(z&&V>U&&x<_&&z.array.length){for(var Z=B=editableVNode(B,a),ee=L;ee>w;ee-=w){var ie=U>>>ee&C;Z=Z.array[ie]=editableVNode(Z.array[ie],a)}Z.array[U>>>w&C]=z}if(j<_&&(Y=Y&&Y.removeAfter(a,0,j)),x>=V)x-=V,j-=V,L=w,B=null,Y=Y&&Y.removeBefore(a,0,x);else if(x>u||V>>L&C;if(ae!==V>>>L&C)break;ae&&($+=(1<u&&(B=B.removeBefore(a,L,x-$)),B&&Vu&&(u=x.size),isIterable(w)||(x=x.map((function(s){return fromJS(s)}))),a.push(x)}return u>s.size&&(s=s.setSize(u)),mergeIntoCollectionWith(s,o,a)}function getTailOffset(s){return s>>w<=x&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&C!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=C===w.size-1?w.pop():w.set(C,void 0))}else if(L){if(i===w.get(C)[1])return s;a=_,u=w.set(C,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s):makeOrderedMap(a,u)}function ToKeyedSequence(s,o){this._iter=s,this._useKeys=o,this.size=s.size}function ToIndexedSequence(s){this._iter=s,this.size=s.size}function ToSetSequence(s){this._iter=s,this.size=s.size}function FromEntriesSequence(s){this._iter=s,this.size=s.size}function flipFactory(s){var o=makeSequence(s);return o._iter=s,o.size=s.size,o.flip=function(){return s},o.reverse=function(){var o=s.reverse.apply(this);return o.flip=function(){return s.reverse()},o},o.has=function(o){return s.includes(o)},o.includes=function(o){return s.has(o)},o.cacheResult=cacheResultThrough,o.__iterateUncached=function(o,i){var a=this;return s.__iterate((function(s,i){return!1!==o(i,s,a)}),i)},o.__iteratorUncached=function(o,i){if(o===V){var a=s.__iterator(o,i);return new Iterator((function(){var s=a.next();if(!s.done){var o=s.value[0];s.value[0]=s.value[1],s.value[1]=o}return s}))}return s.__iterator(o===U?$:U,i)},o}function mapFactory(s,o,i){var a=makeSequence(s);return a.size=s.size,a.has=function(o){return s.has(o)},a.get=function(a,u){var _=s.get(a,j);return _===j?u:o.call(i,_,a,s)},a.__iterateUncached=function(a,u){var _=this;return s.__iterate((function(s,u,w){return!1!==a(o.call(i,s,u,w),u,_)}),u)},a.__iteratorUncached=function(a,u){var _=s.__iterator(V,u);return new Iterator((function(){var u=_.next();if(u.done)return u;var w=u.value,x=w[0];return iteratorValue(a,x,o.call(i,w[1],x,s),u)}))},a}function reverseFactory(s,o){var i=makeSequence(s);return i._iter=s,i.size=s.size,i.reverse=function(){return s},s.flip&&(i.flip=function(){var o=flipFactory(s);return o.reverse=function(){return s.flip()},o}),i.get=function(i,a){return s.get(o?i:-1-i,a)},i.has=function(i){return s.has(o?i:-1-i)},i.includes=function(o){return s.includes(o)},i.cacheResult=cacheResultThrough,i.__iterate=function(o,i){var a=this;return s.__iterate((function(s,i){return o(s,i,a)}),!i)},i.__iterator=function(o,i){return s.__iterator(o,!i)},i}function filterFactory(s,o,i,a){var u=makeSequence(s);return a&&(u.has=function(a){var u=s.get(a,j);return u!==j&&!!o.call(i,u,a,s)},u.get=function(a,u){var _=s.get(a,j);return _!==j&&o.call(i,_,a,s)?_:u}),u.__iterateUncached=function(u,_){var w=this,x=0;return s.__iterate((function(s,_,C){if(o.call(i,s,_,C))return x++,u(s,a?_:x-1,w)}),_),x},u.__iteratorUncached=function(u,_){var w=s.__iterator(V,_),x=0;return new Iterator((function(){for(;;){var _=w.next();if(_.done)return _;var C=_.value,j=C[0],L=C[1];if(o.call(i,L,j,s))return iteratorValue(u,a?j:x++,L,_)}}))},u}function countByFactory(s,o,i){var a=Map().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?OrderedMap():Map()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=iterableClass(s);return u.map((function(o){return reify(s,_(o))}))}function sliceFactory(s,o,i,a){var u=s.size;if(void 0!==o&&(o|=0),void 0!==i&&(i===1/0?i=u:i|=0),wholeSlice(o,i,u))return s;var _=resolveBegin(o,u),w=resolveEnd(i,u);if(_!=_||w!=w)return sliceFactory(s.toSeq().cacheResult(),o,i,a);var x,C=w-_;C==C&&(x=C<0?0:C);var j=makeSequence(s);return j.size=0===x?x:s.size&&x||void 0,!a&&isSeq(s)&&x>=0&&(j.get=function(o,i){return(o=wrapIndex(this,o))>=0&&ox)return iteratorDone();var s=u.next();return a||o===U?s:iteratorValue(o,C-1,o===$?void 0:s.value[1],s)}))},j}function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(V,u),x=!0;return new Iterator((function(){if(!x)return iteratorDone();var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?a===V?s:iteratorValue(a,C,j,s):(x=!1,iteratorDone())}))},a}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(V,_),C=!0,j=0;return new Iterator((function(){var s,_,L;do{if((s=x.next()).done)return a||u===U?s:iteratorValue(u,j++,u===$?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return u===V?s:iteratorValue(u,_,L,s)}))},u}function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isIterable(s)?i&&(s=KeyedIterable(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}var _=new ArraySeq(a);return i?_=_.toKeyedSeq():isIndexed(s)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=a.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),_}function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=0,w=!1;function flatDeep(s,x){var C=this;s.__iterate((function(s,u){return(!o||x0}function zipWithFactory(s,o,i){var a=makeSequence(s);return a.size=new ArraySeq(i).map((function(s){return s.size})).min(),a.__iterate=function(s,o){for(var i,a=this.__iterator(U,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},a.__iteratorUncached=function(s,a){var u=i.map((function(s){return s=Iterable(s),getIterator(a?s.reverse():s)})),_=0,w=!1;return new Iterator((function(){var i;return w||(i=u.map((function(s){return s.next()})),w=i.some((function(s){return s.done}))),w?iteratorDone():iteratorValue(s,_++,o.apply(null,i.map((function(s){return s.value}))))}))},a}function reify(s,o){return isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError("Expected [K, V] tuple: "+s)}function resolveSize(s){return assertNotInfinite(s.size),ensureSize(s)}function iterableClass(s){return isKeyed(s)?KeyedIterable:isIndexed(s)?IndexedIterable:SetIterable}function makeSequence(s){return Object.create((isKeyed(s)?KeyedSeq:isIndexed(s)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(s,o){return s>o?1:s=0;i--)o={value:arguments[i],next:o};return this.__ownerID?(this.size=s,this._head=o,this.__hash=void 0,this.__altered=!0,this):makeStack(s,o)},Stack.prototype.pushAll=function(s){if(0===(s=IndexedIterable(s)).size)return this;assertNotInfinite(s.size);var o=this.size,i=this._head;return s.reverse().forEach((function(s){o++,i={value:s,next:i}})),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(s){return this.pushAll(s)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(s,o){if(wholeSlice(s,o,this.size))return this;var i=resolveBegin(s,this.size);if(resolveEnd(o,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,s,o);for(var a=this.size-i,u=this._head;i--;)u=u.next;return this.__ownerID?(this.size=a,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(a,u)},Stack.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function(s,o){if(o)return this.reverse().__iterate(s);for(var i=0,a=this._head;a&&!1!==s(a.value,i++,this);)a=a.next;return i},Stack.prototype.__iterator=function(s,o){if(o)return this.reverse().__iterator(s);var i=0,a=this._head;return new Iterator((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return iteratorDone()}))},Stack.isStack=isStack;var at,ct="@@__IMMUTABLE_STACK__@@",lt=Stack.prototype;function makeStack(s,o,i,a){var u=Object.create(lt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return at||(at=makeStack(0))}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}lt[ct]=!0,lt.withMutations=$e.withMutations,lt.asMutable=$e.asMutable,lt.asImmutable=$e.asImmutable,lt.wasAltered=$e.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var s=new Array(this.size||0);return this.valueSeq().__iterate((function(o,i){s[i]=o})),s},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJS?s.toJS():s})).__toJS()},toJSON:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJSON?s.toJSON():s})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var s={};return this.__iterate((function(o,i){s[i]=o})),s},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(s,o){return 0===this.size?s+o:s+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+o},concat:function(){return reify(this,concatFactory(this,s.call(arguments,0)))},includes:function(s){return this.some((function(o){return is(o,s)}))},entries:function(){return this.__iterator(V)},every:function(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function(s,o){return reify(this,filterFactory(this,s,o,!0))},find:function(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function(s){assertNotInfinite(this.size),s=void 0!==s?""+s:",";var o="",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():""})),o},keys:function(){return this.__iterator($)},map:function(s,o){return reify(this,mapFactory(this,s,o))},reduce:function(s,o,i){var a,u;return assertNotInfinite(this.size),arguments.length<2?u=!0:a=o,this.__iterate((function(o,_,w){u?(u=!1,a=o):a=s.call(i,a,o,_,w)})),a},reduceRight:function(s,o,i){var a=this.toKeyedSeq().reverse();return a.reduce.apply(a,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function(s,o){return!this.every(not(s),o)},sort:function(s){return reify(this,sortFactory(this,s))},values:function(){return this.__iterator(U)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function(s,o){return countByFactory(this,s,o)},equals:function(s){return deepEqual(this,s)},entrySeq:function(){var s=this;if(s._cache)return new ArraySeq(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function(s,o){return this.filter(not(s),o)},findEntry:function(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function(){return this.find(returnTrue)},flatMap:function(s,o){return reify(this,flatMapFactory(this,s,o))},flatten:function(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn:function(s,o){for(var i,a=this,u=forceIterator(s);!(i=u.next()).done;){var _=i.value;if((a=a&&a.get?a.get(_,j):j)===j)return o}return a},groupBy:function(s,o){return groupByFactory(this,s,o)},has:function(s){return this.get(s,j)!==j},hasIn:function(s){return this.getIn(s,j)!==j},isSubset:function(s){return s="function"==typeof s.includes?s:Iterable(s),this.every((function(o){return s.includes(o)}))},isSuperset:function(s){return(s="function"==typeof s.isSubset?s:Iterable(s)).isSubset(this)},keyOf:function(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function(s){return maxFactory(this,s)},maxBy:function(s,o){return maxFactory(this,o,s)},min:function(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function(){return this.slice(1)},skip:function(s){return this.slice(Math.max(0,s))},skipLast:function(s){return reify(this,this.toSeq().reverse().skip(s).reverse())},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function(s,o){return this.skipWhile(not(s),o)},sortBy:function(s,o){return reify(this,sortFactory(this,o,s))},take:function(s){return this.slice(0,Math.max(0,s))},takeLast:function(s){return reify(this,this.toSeq().reverse().take(s).reverse())},takeWhile:function(s,o){return reify(this,takeWhileFactory(this,s,o))},takeUntil:function(s,o){return this.takeWhile(not(s),o)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ut=Iterable.prototype;ut[o]=!0,ut[Z]=ut.values,ut.__toJS=ut.toArray,ut.__toStringMapper=quoteString,ut.inspect=ut.toSource=function(){return this.toString()},ut.chain=ut.flatMap,ut.contains=ut.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){return!s.apply(this,arguments)}}function neg(s){return function(){return-s.apply(this,arguments)}}function quoteString(s){return"string"==typeof s?JSON.stringify(s):String(s)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(s,o){return so?-1:0}function hashIterable(s){if(s.size===1/0)return 0;var o=isOrdered(s),i=isKeyed(s),a=o?1:0;return murmurHashOfSize(s.__iterate(i?o?function(s,o){a=31*a+hashMerge(hash(s),hash(o))|0}:function(s,o){a=a+hashMerge(hash(s),hash(o))|0}:o?function(s){a=31*a+hash(s)|0}:function(s){a=a+hash(s)|0}),a)}function murmurHashOfSize(s,o){return o=le(o,3432918353),o=le(o<<15|o>>>-15,461845907),o=le(o<<13|o>>>-13,5),o=le((o=o+3864292196^s)^o>>>16,2246822507),o=smi((o=le(o^o>>>13,3266489909))^o>>>16)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}return pt[i]=!0,pt[Z]=ut.entries,pt.__toJS=ut.toObject,pt.__toStringMapper=function(s,o){return JSON.stringify(o)+": "+quoteString(s)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function(s,o){var i=arguments.length;if(o=Math.max(0|o,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function(){return this.get(0)},flatten:function(s){return reify(this,flattenFactory(this,s,!1))},get:function(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s{"use strict";i(71340);var a=i(92046);s.exports=a.Object.assign},9957:(s,o,i)=>{"use strict";var a=Function.prototype.call,u=Object.prototype.hasOwnProperty,_=i(66743);s.exports=_.call(a,u)},9999:(s,o,i)=>{var a=i(37217),u=i(83729),_=i(16547),w=i(74733),x=i(43838),C=i(93290),j=i(23007),L=i(92271),B=i(48948),$=i(50002),U=i(83349),V=i(5861),z=i(76189),Y=i(77199),Z=i(35529),ee=i(56449),ie=i(3656),ae=i(87730),ce=i(23805),le=i(38440),pe=i(95950),de=i(37241),fe="[object Arguments]",ye="[object Function]",be="[object Object]",_e={};_e[fe]=_e["[object Array]"]=_e["[object ArrayBuffer]"]=_e["[object DataView]"]=_e["[object Boolean]"]=_e["[object Date]"]=_e["[object Float32Array]"]=_e["[object Float64Array]"]=_e["[object Int8Array]"]=_e["[object Int16Array]"]=_e["[object Int32Array]"]=_e["[object Map]"]=_e["[object Number]"]=_e[be]=_e["[object RegExp]"]=_e["[object Set]"]=_e["[object String]"]=_e["[object Symbol]"]=_e["[object Uint8Array]"]=_e["[object Uint8ClampedArray]"]=_e["[object Uint16Array]"]=_e["[object Uint32Array]"]=!0,_e["[object Error]"]=_e[ye]=_e["[object WeakMap]"]=!1,s.exports=function baseClone(s,o,i,Se,we,xe){var Pe,Te=1&o,Re=2&o,$e=4&o;if(i&&(Pe=we?i(s,Se,we,xe):i(s)),void 0!==Pe)return Pe;if(!ce(s))return s;var qe=ee(s);if(qe){if(Pe=z(s),!Te)return j(s,Pe)}else{var ze=V(s),We=ze==ye||"[object GeneratorFunction]"==ze;if(ie(s))return C(s,Te);if(ze==be||ze==fe||We&&!we){if(Pe=Re||We?{}:Z(s),!Te)return Re?B(s,x(Pe,s)):L(s,w(Pe,s))}else{if(!_e[ze])return we?s:{};Pe=Y(s,ze,Te)}}xe||(xe=new a);var He=xe.get(s);if(He)return He;xe.set(s,Pe),le(s)?s.forEach((function(a){Pe.add(baseClone(a,o,i,a,s,xe))})):ae(s)&&s.forEach((function(a,u){Pe.set(u,baseClone(a,o,i,u,s,xe))}));var Ye=qe?void 0:($e?Re?U:$:Re?de:pe)(s);return u(Ye||s,(function(a,u){Ye&&(a=s[u=a]),_(Pe,u,baseClone(a,o,i,u,s,xe))})),Pe}},10023:(s,o,i)=>{const a=i(6205),INTS=()=>[{type:a.RANGE,from:48,to:57}],WORDS=()=>[{type:a.CHAR,value:95},{type:a.RANGE,from:97,to:122},{type:a.RANGE,from:65,to:90}].concat(INTS()),WHITESPACE=()=>[{type:a.CHAR,value:9},{type:a.CHAR,value:10},{type:a.CHAR,value:11},{type:a.CHAR,value:12},{type:a.CHAR,value:13},{type:a.CHAR,value:32},{type:a.CHAR,value:160},{type:a.CHAR,value:5760},{type:a.RANGE,from:8192,to:8202},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233},{type:a.CHAR,value:8239},{type:a.CHAR,value:8287},{type:a.CHAR,value:12288},{type:a.CHAR,value:65279}];o.words=()=>({type:a.SET,set:WORDS(),not:!1}),o.notWords=()=>({type:a.SET,set:WORDS(),not:!0}),o.ints=()=>({type:a.SET,set:INTS(),not:!1}),o.notInts=()=>({type:a.SET,set:INTS(),not:!0}),o.whitespace=()=>({type:a.SET,set:WHITESPACE(),not:!1}),o.notWhitespace=()=>({type:a.SET,set:WHITESPACE(),not:!0}),o.anyChar=()=>({type:a.SET,set:[{type:a.CHAR,value:10},{type:a.CHAR,value:13},{type:a.CHAR,value:8232},{type:a.CHAR,value:8233}],not:!0})},10043:(s,o,i)=>{"use strict";var a=i(54018),u=String,_=TypeError;s.exports=function(s){if(a(s))return s;throw new _("Can't set "+u(s)+" as a prototype")}},10076:s=>{"use strict";s.exports=Function.prototype.call},10124:(s,o,i)=>{var a=i(9325);s.exports=function(){return a.Date.now()}},10300:(s,o,i)=>{"use strict";var a=i(13930),u=i(82159),_=i(36624),w=i(4640),x=i(73448),C=TypeError;s.exports=function(s,o){var i=arguments.length<2?x(s):o;if(u(i))return _(a(i,s));throw new C(w(s)+" is not iterable")}},10316:(s,o,i)=>{const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||"element"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if("string"==typeof s||"number"==typeof s||"boolean"==typeof s||"null"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if("object"!=typeof s)throw new Error("Cannot set content to given value");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty("id","")}set id(s){this.setMetaProperty("id",s)}get classes(){return this.getMetaProperty("classes",[])}set classes(s){this.setMetaProperty("classes",s)}get title(){return this.getMetaProperty("title","")}set title(s){this.setMetaProperty("title",s)}get description(){return this.getMetaProperty("description","")}set description(s){this.setMetaProperty("description",s)}get links(){return this.getMetaProperty("links",[])}set links(s){this.setMetaProperty("links",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},10392:s=>{s.exports=function getValue(s,o){return null==s?void 0:s[o]}},10487:(s,o,i)=>{"use strict";var a=i(96897),u=i(30655),_=i(73126),w=i(12205);s.exports=function callBind(s){var o=_(arguments),i=s.length-(arguments.length-1);return a(o,1+(i>0?i:0),!0)},u?u(s.exports,"apply",{value:w}):s.exports.apply=w},10776:(s,o,i)=>{var a=i(30756),u=i(95950);s.exports=function getMatchData(s){for(var o=u(s),i=o.length;i--;){var _=o[i],w=s[_];o[i]=[_,w,a(w)]}return o}},10866:(s,o,i)=>{const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},11002:s=>{"use strict";s.exports=Function.prototype.apply},11042:(s,o,i)=>{"use strict";var a=i(85582),u=i(1907),_=i(24443),w=i(87170),x=i(36624),C=u([].concat);s.exports=a("Reflect","ownKeys")||function ownKeys(s){var o=_.f(x(s)),i=w.f;return i?C(o,i(s)):o}},11091:(s,o,i)=>{"use strict";var a=i(45951),u=i(76024),_=i(92361),w=i(62250),x=i(13846).f,C=i(7463),j=i(92046),L=i(28311),B=i(61626),$=i(49724);i(36128);var wrapConstructor=function(s){var Wrapper=function(o,i,a){if(this instanceof Wrapper){switch(arguments.length){case 0:return new s;case 1:return new s(o);case 2:return new s(o,i)}return new s(o,i,a)}return u(s,this,arguments)};return Wrapper.prototype=s.prototype,Wrapper};s.exports=function(s,o){var i,u,U,V,z,Y,Z,ee,ie,ae=s.target,ce=s.global,le=s.stat,pe=s.proto,de=ce?a:le?a[ae]:a[ae]&&a[ae].prototype,fe=ce?j:j[ae]||B(j,ae,{})[ae],ye=fe.prototype;for(V in o)u=!(i=C(ce?V:ae+(le?".":"#")+V,s.forced))&&de&&$(de,V),Y=fe[V],u&&(Z=s.dontCallGetSet?(ie=x(de,V))&&ie.value:de[V]),z=u&&Z?Z:o[V],(i||pe||typeof Y!=typeof z)&&(ee=s.bind&&u?L(z,a):s.wrap&&u?wrapConstructor(z):pe&&w(z)?_(z):z,(s.sham||z&&z.sham||Y&&Y.sham)&&B(ee,"sham",!0),B(fe,V,ee),pe&&($(j,U=ae+"Prototype")||B(j,U,{}),B(j[U],V,z),s.real&&ye&&(i||!ye[V])&&B(ye,V,z)))}},11287:s=>{s.exports=function getHolder(s){return s.placeholder}},11331:(s,o,i)=>{var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||"[object Object]"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,"constructor")&&o.constructor;return"function"==typeof i&&i instanceof i&&C.call(i)==L}},11470:(s,o,i)=>{"use strict";var a=i(1907),u=i(65482),_=i(90160),w=i(74239),x=a("".charAt),C=a("".charCodeAt),j=a("".slice),createMethod=function(s){return function(o,i){var a,L,B=_(w(o)),$=u(i),U=B.length;return $<0||$>=U?s?"":void 0:(a=C(B,$))<55296||a>56319||$+1===U||(L=C(B,$+1))<56320||L>57343?s?x(B,$):a:s?j(B,$,$+2):L-56320+(a-55296<<10)+65536}};s.exports={codeAt:createMethod(!1),charAt:createMethod(!0)}},11842:(s,o,i)=>{var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12205:(s,o,i)=>{"use strict";var a=i(66743),u=i(11002),_=i(13144);s.exports=function applyBind(){return _(a,u,arguments)}},12242:(s,o,i)=>{const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element="boolean"}primitive(){return"boolean"}}},12507:(s,o,i)=>{var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(""):o.slice(1);return x[s]()+C}}},12560:(s,o,i)=>{"use strict";i(99363);var a=i(19287),u=i(45951),_=i(14840),w=i(93742);for(var x in a)_(u[x],x),w[x]=w.Array},12651:(s,o,i)=>{var a=i(74218);s.exports=function getMapData(s,o){var i=s.__data__;return a(o)?i["string"==typeof o?"string":"hash"]:i.map}},12749:(s,o,i)=>{var a=i(81042),u=Object.prototype.hasOwnProperty;s.exports=function hashHas(s){var o=this.__data__;return a?void 0!==o[s]:u.call(o,s)}},13144:(s,o,i)=>{"use strict";var a=i(66743),u=i(11002),_=i(10076),w=i(47119);s.exports=w||a.call(_,u)},13222:(s,o,i)=>{var a=i(77556);s.exports=function toString(s){return null==s?"":a(s)}},13846:(s,o,i)=>{"use strict";var a=i(39447),u=i(13930),_=i(22574),w=i(75817),x=i(4993),C=i(70470),j=i(49724),L=i(73648),B=Object.getOwnPropertyDescriptor;o.f=a?B:function getOwnPropertyDescriptor(s,o){if(s=x(s),o=C(o),L)try{return B(s,o)}catch(s){}if(j(s,o))return w(!u(_.f,s,o),s[o])}},13930:(s,o,i)=>{"use strict";var a=i(41505),u=Function.prototype.call;s.exports=a?u.bind(u):function(){return u.apply(u,arguments)}},14248:s=>{s.exports=function arraySome(s,o){for(var i=-1,a=null==s?0:s.length;++i{s.exports=function arrayPush(s,o){for(var i=-1,a=o.length,u=s.length;++i{const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(s){this.attributes.set("path",s)}}},14744:s=>{"use strict";var o=function isMergeableObject(s){return function isNonNullObject(s){return!!s&&"object"==typeof s}(s)&&!function isSpecial(s){var o=Object.prototype.toString.call(s);return"[object RegExp]"===o||"[object Date]"===o||function isReactElement(s){return s.$$typeof===i}(s)}(s)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(s,o){return!1!==o.clone&&o.isMergeableObject(s)?deepmerge(function emptyTarget(s){return Array.isArray(s)?[]:{}}(s),s,o):s}function defaultArrayMerge(s,o,i){return s.concat(o).map((function(s){return cloneUnlessOtherwiseSpecified(s,i)}))}function getKeys(s){return Object.keys(s).concat(function getEnumerableOwnPropertySymbols(s){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s).filter((function(o){return Object.propertyIsEnumerable.call(s,o)})):[]}(s))}function propertyIsOnObject(s,o){try{return o in s}catch(s){return!1}}function mergeObject(s,o,i){var a={};return i.isMergeableObject(s)&&getKeys(s).forEach((function(o){a[o]=cloneUnlessOtherwiseSpecified(s[o],i)})),getKeys(o).forEach((function(u){(function propertyIsUnsafe(s,o){return propertyIsOnObject(s,o)&&!(Object.hasOwnProperty.call(s,o)&&Object.propertyIsEnumerable.call(s,o))})(s,u)||(propertyIsOnObject(s,u)&&i.isMergeableObject(o[u])?a[u]=function getMergeFunction(s,o){if(!o.customMerge)return deepmerge;var i=o.customMerge(s);return"function"==typeof i?i:deepmerge}(u,i)(s[u],o[u],i):a[u]=cloneUnlessOtherwiseSpecified(o[u],i))})),a}function deepmerge(s,i,a){(a=a||{}).arrayMerge=a.arrayMerge||defaultArrayMerge,a.isMergeableObject=a.isMergeableObject||o,a.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var u=Array.isArray(i);return u===Array.isArray(s)?u?a.arrayMerge(s,i,a):mergeObject(s,i,a):cloneUnlessOtherwiseSpecified(i,a)}deepmerge.all=function deepmergeAll(s,o){if(!Array.isArray(s))throw new Error("first argument should be an array");return s.reduce((function(s,i){return deepmerge(s,i,o)}),{})};var a=deepmerge;s.exports=a},14792:(s,o,i)=>{var a=i(13222),u=i(55808);s.exports=function capitalize(s){return u(a(s).toLowerCase())}},14840:(s,o,i)=>{"use strict";var a=i(52623),u=i(74284).f,_=i(61626),w=i(49724),x=i(54878),C=i(76264)("toStringTag");s.exports=function(s,o,i,j){var L=i?s:s&&s.prototype;L&&(w(L,C)||u(L,C,{configurable:!0,value:o}),j&&!a&&_(L,"toString",x))}},14974:s=>{s.exports=function safeGet(s,o){if(("constructor"!==o||"function"!=typeof s[o])&&"__proto__"!=o)return s[o]}},15287:(s,o)=>{"use strict";var i=Symbol.for("react.element"),a=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),_=Symbol.for("react.strict_mode"),w=Symbol.for("react.profiler"),x=Symbol.for("react.provider"),C=Symbol.for("react.context"),j=Symbol.for("react.forward_ref"),L=Symbol.for("react.suspense"),B=Symbol.for("react.memo"),$=Symbol.for("react.lazy"),U=Symbol.iterator;var V={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},z=Object.assign,Y={};function E(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||V}function F(){}function G(s,o,i){this.props=s,this.context=o,this.refs=Y,this.updater=i||V}E.prototype.isReactComponent={},E.prototype.setState=function(s,o){if("object"!=typeof s&&"function"!=typeof s&&null!=s)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,s,o,"setState")},E.prototype.forceUpdate=function(s){this.updater.enqueueForceUpdate(this,s,"forceUpdate")},F.prototype=E.prototype;var Z=G.prototype=new F;Z.constructor=G,z(Z,E.prototype),Z.isPureReactComponent=!0;var ee=Array.isArray,ie=Object.prototype.hasOwnProperty,ae={current:null},ce={key:!0,ref:!0,__self:!0,__source:!0};function M(s,o,a){var u,_={},w=null,x=null;if(null!=o)for(u in void 0!==o.ref&&(x=o.ref),void 0!==o.key&&(w=""+o.key),o)ie.call(o,u)&&!ce.hasOwnProperty(u)&&(_[u]=o[u]);var C=arguments.length-2;if(1===C)_.children=a;else if(1{var a=i(96131);s.exports=function arrayIncludes(s,o){return!!(null==s?0:s.length)&&a(s,o,0)>-1}},15340:()=>{},15377:(s,o,i)=>{"use strict";var a=i(92861).Buffer,u=i(64634),_=i(74372),w=ArrayBuffer.isView||function isView(s){try{return _(s),!0}catch(s){return!1}},x="undefined"!=typeof Uint8Array,C="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof Uint8Array,j=C&&(a.prototype instanceof Uint8Array||a.TYPED_ARRAY_SUPPORT);s.exports=function toBuffer(s,o){if(s instanceof a)return s;if("string"==typeof s)return a.from(s,o);if(C&&w(s)){if(0===s.byteLength)return a.alloc(0);if(j){var i=a.from(s.buffer,s.byteOffset,s.byteLength);if(i.byteLength===s.byteLength)return i}var _=s instanceof Uint8Array?s:new Uint8Array(s.buffer,s.byteOffset,s.byteLength),L=a.from(_);if(L.length===s.byteLength)return L}if(x&&s instanceof Uint8Array)return a.from(s);var B=u(s);if(B)for(var $=0;$255||~~U!==U)throw new RangeError("Array items must be numbers in the range 0-255.")}if(B||a.isBuffer(s)&&s.constructor&&"function"==typeof s.constructor.isBuffer&&s.constructor.isBuffer(s))return a.from(s);throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}},15389:(s,o,i)=>{var a=i(93663),u=i(87978),_=i(83488),w=i(56449),x=i(50583);s.exports=function baseIteratee(s){return"function"==typeof s?s:null==s?_:"object"==typeof s?w(s)?u(s[0],s[1]):a(s):x(s)}},15972:(s,o,i)=>{"use strict";var a=i(49724),u=i(62250),_=i(39298),w=i(92522),x=i(57382),C=w("IE_PROTO"),j=Object,L=j.prototype;s.exports=x?j.getPrototypeOf:function(s){var o=_(s);if(a(o,C))return o[C];var i=o.constructor;return u(i)&&o instanceof i?i.prototype:o instanceof j?L:null}},16038:(s,o,i)=>{var a=i(5861),u=i(40346);s.exports=function baseIsSet(s){return u(s)&&"[object Set]"==a(s)}},16426:s=>{s.exports=function(){var s=document.getSelection();if(!s.rangeCount)return function(){};for(var o=document.activeElement,i=[],a=0;a{var a=i(43360),u=i(75288),_=Object.prototype.hasOwnProperty;s.exports=function assignValue(s,o,i){var w=s[o];_.call(s,o)&&u(w,i)&&(void 0!==i||o in s)||a(s,o,i)}},16708:(s,o,i)=>{"use strict";var a,u=i(65606);function CorkedRequest(s){var o=this;this.next=null,this.entry=null,this.finish=function(){!function onCorkedFinish(s,o,i){var a=s.entry;s.entry=null;for(;a;){var u=a.callback;o.pendingcb--,u(i),a=a.next}o.corkedRequestsFree.next=s}(o,s)}}s.exports=Writable,Writable.WritableState=WritableState;var _={deprecate:i(94643)},w=i(40345),x=i(48287).Buffer,C=(void 0!==i.g?i.g:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){};var j,L=i(75896),B=i(65291).getHighWaterMark,$=i(86048).F,U=$.ERR_INVALID_ARG_TYPE,V=$.ERR_METHOD_NOT_IMPLEMENTED,z=$.ERR_MULTIPLE_CALLBACK,Y=$.ERR_STREAM_CANNOT_PIPE,Z=$.ERR_STREAM_DESTROYED,ee=$.ERR_STREAM_NULL_VALUES,ie=$.ERR_STREAM_WRITE_AFTER_END,ae=$.ERR_UNKNOWN_ENCODING,ce=L.errorOrDestroy;function nop(){}function WritableState(s,o,_){a=a||i(25382),s=s||{},"boolean"!=typeof _&&(_=o instanceof a),this.objectMode=!!s.objectMode,_&&(this.objectMode=this.objectMode||!!s.writableObjectMode),this.highWaterMark=B(this,s,"writableHighWaterMark",_),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var w=!1===s.decodeStrings;this.decodeStrings=!w,this.defaultEncoding=s.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(s){!function onwrite(s,o){var i=s._writableState,a=i.sync,_=i.writecb;if("function"!=typeof _)throw new z;if(function onwriteStateUpdate(s){s.writing=!1,s.writecb=null,s.length-=s.writelen,s.writelen=0}(i),o)!function onwriteError(s,o,i,a,_){--o.pendingcb,i?(u.nextTick(_,a),u.nextTick(finishMaybe,s,o),s._writableState.errorEmitted=!0,ce(s,a)):(_(a),s._writableState.errorEmitted=!0,ce(s,a),finishMaybe(s,o))}(s,i,a,o,_);else{var w=needFinish(i)||s.destroyed;w||i.corked||i.bufferProcessing||!i.bufferedRequest||clearBuffer(s,i),a?u.nextTick(afterWrite,s,i,w,_):afterWrite(s,i,w,_)}}(o,s)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==s.emitClose,this.autoDestroy=!!s.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new CorkedRequest(this)}function Writable(s){var o=this instanceof(a=a||i(25382));if(!o&&!j.call(Writable,this))return new Writable(s);this._writableState=new WritableState(s,this,o),this.writable=!0,s&&("function"==typeof s.write&&(this._write=s.write),"function"==typeof s.writev&&(this._writev=s.writev),"function"==typeof s.destroy&&(this._destroy=s.destroy),"function"==typeof s.final&&(this._final=s.final)),w.call(this)}function doWrite(s,o,i,a,u,_,w){o.writelen=a,o.writecb=w,o.writing=!0,o.sync=!0,o.destroyed?o.onwrite(new Z("write")):i?s._writev(u,o.onwrite):s._write(u,_,o.onwrite),o.sync=!1}function afterWrite(s,o,i,a){i||function onwriteDrain(s,o){0===o.length&&o.needDrain&&(o.needDrain=!1,s.emit("drain"))}(s,o),o.pendingcb--,a(),finishMaybe(s,o)}function clearBuffer(s,o){o.bufferProcessing=!0;var i=o.bufferedRequest;if(s._writev&&i&&i.next){var a=o.bufferedRequestCount,u=new Array(a),_=o.corkedRequestsFree;_.entry=i;for(var w=0,x=!0;i;)u[w]=i,i.isBuf||(x=!1),i=i.next,w+=1;u.allBuffers=x,doWrite(s,o,!0,o.length,u,"",_.finish),o.pendingcb++,o.lastBufferedRequest=null,_.next?(o.corkedRequestsFree=_.next,_.next=null):o.corkedRequestsFree=new CorkedRequest(o),o.bufferedRequestCount=0}else{for(;i;){var C=i.chunk,j=i.encoding,L=i.callback;if(doWrite(s,o,!1,o.objectMode?1:C.length,C,j,L),i=i.next,o.bufferedRequestCount--,o.writing)break}null===i&&(o.lastBufferedRequest=null)}o.bufferedRequest=i,o.bufferProcessing=!1}function needFinish(s){return s.ending&&0===s.length&&null===s.bufferedRequest&&!s.finished&&!s.writing}function callFinal(s,o){s._final((function(i){o.pendingcb--,i&&ce(s,i),o.prefinished=!0,s.emit("prefinish"),finishMaybe(s,o)}))}function finishMaybe(s,o){var i=needFinish(o);if(i&&(function prefinish(s,o){o.prefinished||o.finalCalled||("function"!=typeof s._final||o.destroyed?(o.prefinished=!0,s.emit("prefinish")):(o.pendingcb++,o.finalCalled=!0,u.nextTick(callFinal,s,o)))}(s,o),0===o.pendingcb&&(o.finished=!0,s.emit("finish"),o.autoDestroy))){var a=s._readableState;(!a||a.autoDestroy&&a.endEmitted)&&s.destroy()}return i}i(56698)(Writable,w),WritableState.prototype.getBuffer=function getBuffer(){for(var s=this.bufferedRequest,o=[];s;)o.push(s),s=s.next;return o},function(){try{Object.defineProperty(WritableState.prototype,"buffer",{get:_.deprecate((function writableStateBufferGetter(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(s){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(j=Function.prototype[Symbol.hasInstance],Object.defineProperty(Writable,Symbol.hasInstance,{value:function value(s){return!!j.call(this,s)||this===Writable&&(s&&s._writableState instanceof WritableState)}})):j=function realHasInstance(s){return s instanceof this},Writable.prototype.pipe=function(){ce(this,new Y)},Writable.prototype.write=function(s,o,i){var a=this._writableState,_=!1,w=!a.objectMode&&function _isUint8Array(s){return x.isBuffer(s)||s instanceof C}(s);return w&&!x.isBuffer(s)&&(s=function _uint8ArrayToBuffer(s){return x.from(s)}(s)),"function"==typeof o&&(i=o,o=null),w?o="buffer":o||(o=a.defaultEncoding),"function"!=typeof i&&(i=nop),a.ending?function writeAfterEnd(s,o){var i=new ie;ce(s,i),u.nextTick(o,i)}(this,i):(w||function validChunk(s,o,i,a){var _;return null===i?_=new ee:"string"==typeof i||o.objectMode||(_=new U("chunk",["string","Buffer"],i)),!_||(ce(s,_),u.nextTick(a,_),!1)}(this,a,s,i))&&(a.pendingcb++,_=function writeOrBuffer(s,o,i,a,u,_){if(!i){var w=function decodeChunk(s,o,i){s.objectMode||!1===s.decodeStrings||"string"!=typeof o||(o=x.from(o,i));return o}(o,a,u);a!==w&&(i=!0,u="buffer",a=w)}var C=o.objectMode?1:a.length;o.length+=C;var j=o.length-1))throw new ae(s);return this._writableState.defaultEncoding=s,this},Object.defineProperty(Writable.prototype,"writableBuffer",{enumerable:!1,get:function get(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(Writable.prototype,"writableHighWaterMark",{enumerable:!1,get:function get(){return this._writableState.highWaterMark}}),Writable.prototype._write=function(s,o,i){i(new V("_write()"))},Writable.prototype._writev=null,Writable.prototype.end=function(s,o,i){var a=this._writableState;return"function"==typeof s?(i=s,s=null,o=null):"function"==typeof o&&(i=o,o=null),null!=s&&this.write(s,o),a.corked&&(a.corked=1,this.uncork()),a.ending||function endWritable(s,o,i){o.ending=!0,finishMaybe(s,o),i&&(o.finished?u.nextTick(i):s.once("finish",i));o.ended=!0,s.writable=!1}(this,a,i),this},Object.defineProperty(Writable.prototype,"writableLength",{enumerable:!1,get:function get(){return this._writableState.length}}),Object.defineProperty(Writable.prototype,"destroyed",{enumerable:!1,get:function get(){return void 0!==this._writableState&&this._writableState.destroyed},set:function set(s){this._writableState&&(this._writableState.destroyed=s)}}),Writable.prototype.destroy=L.destroy,Writable.prototype._undestroy=L.undestroy,Writable.prototype._destroy=function(s,o){o(s)}},16946:(s,o,i)=>{"use strict";var a=i(1907),u=i(98828),_=i(45807),w=Object,x=a("".split);s.exports=u((function(){return!w("z").propertyIsEnumerable(0)}))?function(s){return"String"===_(s)?x(s,""):w(s)}:w},16962:(s,o)=>{o.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},o.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},17255:(s,o,i)=>{var a=i(47422);s.exports=function basePropertyDeep(s){return function(o){return a(o,s)}}},17285:s=>{function source(s){return s?"string"==typeof s?s:s.source:null}function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>source(s))).join("")}function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat("(",s,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},u=s.inherit(a,{begin:/\(/,end:/\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:"meta-string"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:"meta-string"}),x={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[a,w,_,u,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[a,u,w,_]}]}]},s.COMMENT(//,{relevance:10}),{begin://,relevance:10},i,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[x],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[x],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:x}]},{className:"tag",begin:concat(/<\//,lookahead(concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17400:(s,o,i)=>{var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},17533:s=>{s.exports=function yaml(s){var o="true false yes no null",i="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},w={end:",",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\{/,end:/\}/,contains:[w],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[w],illegal:"\\n",relevance:0},j=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+i},{className:"type",begin:"!<"+i+">"},{className:"type",begin:"!"+i},{className:"type",begin:"!!"+i},{className:"meta",begin:"&"+s.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+s.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:"number",begin:s.C_NUMBER_RE+"\\b",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:j}}},17670:(s,o,i)=>{var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},17965:(s,o,i)=>{"use strict";var a=i(16426),u={"text/plain":"Text","text/html":"Url",default:"Text"};s.exports=function copy(s,o){var i,_,w,x,C,j,L=!1;o||(o={}),i=o.debug||!1;try{if(w=a(),x=document.createRange(),C=document.getSelection(),(j=document.createElement("span")).textContent=s,j.ariaHidden="true",j.style.all="unset",j.style.position="fixed",j.style.top=0,j.style.clip="rect(0, 0, 0, 0)",j.style.whiteSpace="pre",j.style.webkitUserSelect="text",j.style.MozUserSelect="text",j.style.msUserSelect="text",j.style.userSelect="text",j.addEventListener("copy",(function(a){if(a.stopPropagation(),o.format)if(a.preventDefault(),void 0===a.clipboardData){i&&console.warn("unable to use e.clipboardData"),i&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=u[o.format]||u.default;window.clipboardData.setData(_,s)}else a.clipboardData.clearData(),a.clipboardData.setData(o.format,s);o.onCopy&&(a.preventDefault(),o.onCopy(a.clipboardData))})),document.body.appendChild(j),x.selectNodeContents(j),C.addRange(x),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");L=!0}catch(a){i&&console.error("unable to copy using execCommand: ",a),i&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(o.format||"text",s),o.onCopy&&o.onCopy(window.clipboardData),L=!0}catch(a){i&&console.error("unable to copy using clipboardData: ",a),i&&console.error("falling back to prompt"),_=function format(s){var o=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return s.replace(/#{\s*key\s*}/g,o)}("message"in o?o.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,s)}}finally{C&&("function"==typeof C.removeRange?C.removeRange(x):C.removeAllRanges()),j&&document.body.removeChild(j),w()}return L}},18073:(s,o,i)=>{var a=i(85087),u=i(54641),_=i(70981);s.exports=function createRecurry(s,o,i,w,x,C,j,L,B,$){var U=8&o;o|=U?32:64,4&(o&=~(U?64:32))||(o&=-4);var V=[s,o,x,U?C:void 0,U?j:void 0,U?void 0:C,U?void 0:j,L,B,$],z=i.apply(void 0,V);return a(s)&&u(z,V),z.placeholder=w,_(z,s,o)}},19123:(s,o,i)=>{var a=i(65606),u=i(31499),_=i(88310).Stream;function resolve(s,o,i){var a,_=function create_indent(s,o){return new Array(o||0).join(s||"")}(o,i=i||0),w=s;if("object"==typeof s&&((w=s[a=Object.keys(s)[0]])&&w._elem))return w._elem.name=a,w._elem.icount=i,w._elem.indent=o,w._elem.indents=_,w._elem.interrupt=w,w._elem;var x,C=[],j=[];function get_attributes(s){Object.keys(s).forEach((function(o){C.push(function attribute(s,o){return s+'="'+u(o)+'"'}(o,s[o]))}))}switch(typeof w){case"object":if(null===w)break;w._attr&&get_attributes(w._attr),w._cdata&&j.push(("/g,"]]]]>")+"]]>"),w.forEach&&(x=!1,j.push(""),w.forEach((function(s){"object"==typeof s?"_attr"==Object.keys(s)[0]?get_attributes(s._attr):j.push(resolve(s,o,i+1)):(j.pop(),x=!0,j.push(u(s)))})),x||j.push(""));break;default:j.push(u(w))}return{name:a,interrupt:!1,attributes:C,content:j,icount:i,indents:_,indent:o}}function format(s,o,i){if("object"!=typeof o)return s(!1,o);var a=o.interrupt?1:o.content.length;function proceed(){for(;o.content.length;){var u=o.content.shift();if(void 0!==u){if(interrupt(u))return;format(s,u)}}s(!1,(a>1?o.indents:"")+(o.name?"":"")+(o.indent&&!i?"\n":"")),i&&i()}function interrupt(o){return!!o.interrupt&&(o.interrupt.append=s,o.interrupt.end=proceed,o.interrupt=!1,s(!0),!0)}if(s(!1,o.indents+(o.name?"<"+o.name:"")+(o.attributes.length?" "+o.attributes.join(" "):"")+(a?o.name?">":"":o.name?"/>":"")+(o.indent&&a>1?"\n":"")),!a)return s(!1,o.indent?"\n":"");interrupt(o)||proceed()}s.exports=function xml(s,o){"object"!=typeof o&&(o={indent:o});var i=o.stream?new _:null,u="",w=!1,x=o.indent?!0===o.indent?" ":o.indent:"",C=!0;function delay(s){C?a.nextTick(s):s()}function append(s,o){if(void 0!==o&&(u+=o),s&&!w&&(i=i||new _,w=!0),s&&w){var a=u;delay((function(){i.emit("data",a)})),u=""}}function add(s,o){format(append,resolve(s,x,x?1:0),o)}function end(){if(i){var s=u;delay((function(){i.emit("data",s),i.emit("end"),i.readable=!1,i.emit("close")}))}}return delay((function(){C=!1})),o.declaration&&function addXmlDeclaration(s){var o={version:"1.0",encoding:s.encoding||"UTF-8"};s.standalone&&(o.standalone=s.standalone),add({"?xml":{_attr:o}}),u=u.replace("/>","?>")}(o.declaration),s&&s.forEach?s.forEach((function(o,i){var a;i+1===s.length&&(a=end),add(o,a)})):add(s,end),i?(i.readable=!0,i):u},s.exports.element=s.exports.Element=function element(){var s={_elem:resolve(Array.prototype.slice.call(arguments)),push:function(s){if(!this.append)throw new Error("not assigned to a parent!");var o=this,i=this._elem.indent;format(this.append,resolve(s,i,this._elem.icount+(i?1:0)),(function(){o.append(!0)}))},close:function(s){void 0!==s&&this.push(s),this.end&&this.end()}};return s}},19219:s=>{s.exports=function cacheHas(s,o){return s.has(o)}},19287:s=>{"use strict";s.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},19358:(s,o,i)=>{"use strict";var a=i(85582),u=i(49724),_=i(61626),w=i(88280),x=i(79192),C=i(19595),j=i(54829),L=i(34084),B=i(32096),$=i(39259),U=i(85884),V=i(39447),z=i(7376);s.exports=function(s,o,i,Y){var Z="stackTraceLimit",ee=Y?2:1,ie=s.split("."),ae=ie[ie.length-1],ce=a.apply(null,ie);if(ce){var le=ce.prototype;if(!z&&u(le,"cause")&&delete le.cause,!i)return ce;var pe=a("Error"),de=o((function(s,o){var i=B(Y?o:s,void 0),a=Y?new ce(s):new ce;return void 0!==i&&_(a,"message",i),U(a,de,a.stack,2),this&&w(le,this)&&L(a,this,de),arguments.length>ee&&$(a,arguments[ee]),a}));if(de.prototype=le,"Error"!==ae?x?x(de,pe):C(de,pe,{name:!0}):V&&Z in ce&&(j(de,ce,Z),j(de,ce,"prepareStackTrace")),C(de,ce),!z)try{le.name!==ae&&_(le,"name",ae),le.constructor=de}catch(s){}return de}}},19570:(s,o,i)=>{var a=i(37334),u=i(93243),_=i(83488),w=u?function(s,o){return u(s,"toString",{configurable:!0,enumerable:!1,value:a(o),writable:!0})}:_;s.exports=w},19595:(s,o,i)=>{"use strict";var a=i(49724),u=i(11042),_=i(13846),w=i(74284);s.exports=function(s,o,i){for(var x=u(o),C=w.f,j=_.f,L=0;L{"use strict";var a=i(23034);s.exports=a},19846:(s,o,i)=>{"use strict";var a=i(20798),u=i(98828),_=i(45951).String;s.exports=!!Object.getOwnPropertySymbols&&!u((function(){var s=Symbol("symbol detection");return!_(s)||!(Object(s)instanceof Symbol)||!Symbol.sham&&a&&a<41}))},19931:(s,o,i)=>{var a=i(31769),u=i(68090),_=i(68969),w=i(77797);s.exports=function baseUnset(s,o){return o=a(o,s),null==(s=_(s,o))||delete s[w(u(o))]}},20181:(s,o,i)=>{var a=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,_=/^0b[01]+$/i,w=/^0o[0-7]+$/i,x=parseInt,C="object"==typeof i.g&&i.g&&i.g.Object===Object&&i.g,j="object"==typeof self&&self&&self.Object===Object&&self,L=C||j||Function("return this")(),B=Object.prototype.toString,$=Math.max,U=Math.min,now=function(){return L.Date.now()};function isObject(s){var o=typeof s;return!!s&&("object"==o||"function"==o)}function toNumber(s){if("number"==typeof s)return s;if(function isSymbol(s){return"symbol"==typeof s||function isObjectLike(s){return!!s&&"object"==typeof s}(s)&&"[object Symbol]"==B.call(s)}(s))return NaN;if(isObject(s)){var o="function"==typeof s.valueOf?s.valueOf():s;s=isObject(o)?o+"":o}if("string"!=typeof s)return 0===s?s:+s;s=s.replace(a,"");var i=_.test(s);return i||w.test(s)?x(s.slice(2),i?2:8):u.test(s)?NaN:+s}s.exports=function debounce(s,o,i){var a,u,_,w,x,C,j=0,L=!1,B=!1,V=!0;if("function"!=typeof s)throw new TypeError("Expected a function");function invokeFunc(o){var i=a,_=u;return a=u=void 0,j=o,w=s.apply(_,i)}function shouldInvoke(s){var i=s-C;return void 0===C||i>=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?U(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,V&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B="maxWait"in i)?$(toNumber(i.maxWait)||0,o):_,V="trailing"in i?!!i.trailing:V),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},20317:s=>{s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},20334:(s,o,i)=>{"use strict";var a=i(48287).Buffer;class NonError extends Error{constructor(s){super(NonError._prepareSuperMessage(s)),Object.defineProperty(this,"name",{value:"NonError",configurable:!0,writable:!0}),Error.captureStackTrace&&Error.captureStackTrace(this,NonError)}static _prepareSuperMessage(s){try{return JSON.stringify(s)}catch{return String(s)}}}const u=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],_=Symbol(".toJSON called"),destroyCircular=({from:s,seen:o,to_:i,forceEnumerable:w,maxDepth:x,depth:C})=>{const j=i||(Array.isArray(s)?[]:{});if(o.push(s),C>=x)return j;if("function"==typeof s.toJSON&&!0!==s[_])return(s=>{s[_]=!0;const o=s.toJSON();return delete s[_],o})(s);for(const[i,u]of Object.entries(s))"function"==typeof a&&a.isBuffer(u)?j[i]="[object Buffer]":"function"!=typeof u&&(u&&"object"==typeof u?o.includes(s[i])?j[i]="[Circular]":(C++,j[i]=destroyCircular({from:s[i],seen:o.slice(),forceEnumerable:w,maxDepth:x,depth:C})):j[i]=u);for(const{property:o,enumerable:i}of u)"string"==typeof s[o]&&Object.defineProperty(j,o,{value:s[o],enumerable:!!w||i,configurable:!0,writable:!0});return j};s.exports={serializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;return"object"==typeof s&&null!==s?destroyCircular({from:s,seen:[],forceEnumerable:!0,maxDepth:i,depth:0}):"function"==typeof s?`[Function: ${s.name||"anonymous"}]`:s},deserializeError:(s,o={})=>{const{maxDepth:i=Number.POSITIVE_INFINITY}=o;if(s instanceof Error)return s;if("object"==typeof s&&null!==s&&!Array.isArray(s)){const o=new Error;return destroyCircular({from:s,seen:[],to_:o,maxDepth:i,depth:0}),o}return new NonError(s)}}},20426:s=>{var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},20575:(s,o,i)=>{"use strict";var a=i(3121);s.exports=function(s){return a(s.length)}},20798:(s,o,i)=>{"use strict";var a,u,_=i(45951),w=i(96794),x=_.process,C=_.Deno,j=x&&x.versions||C&&C.version,L=j&&j.v8;L&&(u=(a=L.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!u&&w&&(!(a=w.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=w.match(/Chrome\/(\d+)/))&&(u=+a[1]),s.exports=u},20850:(s,o,i)=>{"use strict";s.exports=i(46076)},20999:(s,o,i)=>{var a=i(69302),u=i(36800);s.exports=function createAssigner(s){return a((function(o,i){var a=-1,_=i.length,w=_>1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&"function"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},21549:(s,o,i)=>{var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o{var a=i(16547),u=i(43360);s.exports=function copyObject(s,o,i,_){var w=!i;i||(i={});for(var x=-1,C=o.length;++x{var a=i(51873),u=i(37828),_=i(75288),w=i(25911),x=i(20317),C=i(84247),j=a?a.prototype:void 0,L=j?j.valueOf:void 0;s.exports=function equalByTag(s,o,i,a,j,B,$){switch(i){case"[object DataView]":if(s.byteLength!=o.byteLength||s.byteOffset!=o.byteOffset)return!1;s=s.buffer,o=o.buffer;case"[object ArrayBuffer]":return!(s.byteLength!=o.byteLength||!B(new u(s),new u(o)));case"[object Boolean]":case"[object Date]":case"[object Number]":return _(+s,+o);case"[object Error]":return s.name==o.name&&s.message==o.message;case"[object RegExp]":case"[object String]":return s==o+"";case"[object Map]":var U=x;case"[object Set]":var V=1&a;if(U||(U=C),s.size!=o.size&&!V)return!1;var z=$.get(s);if(z)return z==o;a|=2,$.set(s,o);var Y=w(U(s),U(o),a,j,B,$);return $.delete(s),Y;case"[object Symbol]":if(L)return L.call(s)==L.call(o)}return!1}},22032:(s,o,i)=>{var a=i(81042);s.exports=function hashClear(){this.__data__=a?a(null):{},this.size=0}},22225:s=>{var o="\\ud800-\\udfff",i="\\u2700-\\u27bf",a="a-z\\xdf-\\xf6\\xf8-\\xff",u="A-Z\\xc0-\\xd6\\xd8-\\xde",_="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",w="["+_+"]",x="\\d+",C="["+i+"]",j="["+a+"]",L="[^"+o+_+x+i+a+u+"]",B="(?:\\ud83c[\\udde6-\\uddff]){2}",$="[\\ud800-\\udbff][\\udc00-\\udfff]",U="["+u+"]",V="(?:"+j+"|"+L+")",z="(?:"+U+"|"+L+")",Y="(?:['’](?:d|ll|m|re|s|t|ve))?",Z="(?:['’](?:D|LL|M|RE|S|T|VE))?",ee="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",ie="[\\ufe0e\\ufe0f]?",ae=ie+ee+("(?:\\u200d(?:"+["[^"+o+"]",B,$].join("|")+")"+ie+ee+")*"),ce="(?:"+[C,B,$].join("|")+")"+ae,le=RegExp([U+"?"+j+"+"+Y+"(?="+[w,U,"$"].join("|")+")",z+"+"+Z+"(?="+[w,U+V,"$"].join("|")+")",U+"?"+V+"+"+Y,U+"+"+Z,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",x,ce].join("|"),"g");s.exports=function unicodeWords(s){return s.match(le)||[]}},22551:(s,o,i)=>{"use strict";var a=i(96540),u=i(69982);function p(s){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+s,i=1;i