[
  {
    "path": ".coveragerc",
    "content": "[run]\nbranch = True\nsource = silk\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    tags:\n    - '*'\n\njobs:\n  build:\n    if: github.repository == 'jazzband/django-silk'\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n\n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: 3.14\n\n      - name: Install dependencies\n        run: |\n          python -m pip install -U pip\n          python -m pip install -U setuptools twine wheel\n\n      - name: Build package\n        run: |\n          python setup.py --version\n          python setup.py sdist --format=gztar bdist_wheel\n          twine check dist/*\n\n      - name: Upload packages to Jazzband\n        if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')\n        uses: pypa/gh-action-pypi-publish@master\n        with:\n          user: jazzband\n          password: ${{ secrets.JAZZBAND_RELEASE_KEY }}\n          repository_url: https://jazzband.co/projects/django-silk/upload\n"
  },
  {
    "path": ".github/workflows/test.yml",
    "content": "name: Test\n\non: [push, pull_request]\n\njobs:\n  build:\n    name: build (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }})\n    runs-on: ubuntu-latest\n    strategy:\n      fail-fast: false\n      matrix:\n        python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']\n        django-version: ['4.2', '5.1', '5.2', '6.0', 'main']\n        postgres-version: ['14', '18']\n        mariadb-version: ['10.6', '10.11', '11.4', '11.8']\n        exclude:\n          # Django 4.2 doesn't support Python >= 3.13\n          - django-version: '4.2'\n            python-version: '3.13'\n          - django-version: '4.2'\n            python-version: '3.14'\n\n          # Django 5.1 doesn't support Python >= 3.14\n          - django-version: '5.1'\n            python-version: '3.14'\n\n          # Django 6.0 doesn't support Python <3.12 (https://docs.djangoproject.com/en/dev/releases/6.0/#python-compatibility)\n          - django-version: '6.0'\n            python-version: '3.10'\n          - django-version: '6.0'\n            python-version: '3.11'\n          - django-version: 'main'\n            python-version: '3.10'\n          - django-version: 'main'\n            python-version: '3.11'\n\n    services:\n      postgres:\n        image: postgres:${{ matrix.postgres-version }}\n        env:\n          POSTGRES_USER: postgres\n          POSTGRES_PASSWORD: postgres\n          POSTGRES_DB: postgres\n        ports:\n        - 5432:5432\n        options: >-\n          --health-cmd pg_isready\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n\n      mariadb:\n        image: mariadb:${{ matrix.mariadb-version }}\n        env:\n          MYSQL_ROOT_PASSWORD: mysql\n          MYSQL_DATABASE: mysql\n        options: >-\n          --health-cmd \"mariadb-admin ping\"\n          --health-interval 10s\n          --health-timeout 5s\n          --health-retries 5\n        ports:\n        - 3306:3306\n\n    steps:\n    - uses: actions/checkout@v4\n\n    - name: Set up Python ${{ matrix.python-version }}\n      uses: actions/setup-python@v5\n      with:\n        python-version: ${{ matrix.python-version }}\n\n    - name: Get pip cache dir\n      id: pip-cache\n      run: |\n        echo \"dir=$(pip cache dir)\" >> $GITHUB_OUTPUT\n\n    - name: Cache\n      uses: actions/cache@v4\n      with:\n        path: ${{ steps.pip-cache.outputs.dir }}\n        key:\n          ${{ matrix.python-version }}-v1-${{ hashFiles('**/requirements.txt') }}-${{ hashFiles('**/setup.py') }}-${{ hashFiles('**/tox.ini') }}\n        restore-keys: |\n          ${{ matrix.python-version }}-v1-\n\n    - name: Install dependencies\n      run: |\n        python -m pip install --upgrade pip\n        python -m pip install --upgrade tox tox-gh-actions\n\n    - name: Tox tests\n      run: |\n        tox -v\n      env:\n        DJANGO: ${{ matrix.django-version }}\n\n    - name: Upload coverage\n      uses: codecov/codecov-action@v3\n      with:\n        name: Python ${{ matrix.python-version }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nenv/\nbin/\nbuild/\ndevelop-eggs/\ndist/\neggs/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n.eggs\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.pytest_cache/\n.coverage\n.cache\nnosetests.xml\ncoverage.xml\n\n# Translations\n*.mo\n\n# Mr Developer\n.mr.developer.cfg\n.project\n.pydevproject\n\n# Rope\n.ropeproject\n\n# Django stuff:\n*.log\n*.pot\n\n# Sphinx documentation\ndocs/_build/\n\n# Other\ndist\n.idea\n*db.sqlite*\n/django_silky/media\n*.prof\nproject/media/\nproject/tmp/\n.vscode/\n\n# Hardlinks\n/django_silky/silk\n\n# Pip\n/src\n\n# Sphinx\n_html\n\n# Tox\n.tox.ini.swp\n\n# Node\nnode_modules\n\n\n# Gulp\n.gulp-scss-cache\n.sass-cache\n\n*~\n.DS_Store\n\n### PyCharm ###\n# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm\n*.iml\n\n## Directory-based project format:\n.idea/\n\n## File-based project format:\n*.ipr\n*.iws\n\n## Plugin-specific files:\n\n# IntelliJ\n/out/\n\n# mpeltonen/sbt-idea plugin\n.idea_modules/\n\n# JIRA plugin\natlassian-ide-plugin.xml\n\n# Crashlytics plugin (for Android Studio and IntelliJ)\ncom_crashlytics_export_strings.xml\ncrashlytics.properties\ncrashlytics-build.properties\nfabric.properties\n\n# Virtual env\n.venv*\n\npackage-lock.json\n*.db\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n- repo: https://github.com/pre-commit/pre-commit-hooks\n  rev: 'v6.0.0'\n  hooks:\n  - id: check-merge-conflict\n- repo: https://github.com/hadialqattan/pycln\n  rev: v2.6.0\n  hooks:\n  - id: pycln\n    args: ['--all']\n- repo: https://github.com/asottile/yesqa\n  rev: v1.5.0\n  hooks:\n  - id: yesqa\n- repo: https://github.com/pycqa/isort\n  rev: '8.0.1'\n  hooks:\n  - id: isort\n    args: ['--profile', 'black']\n- repo: https://github.com/pre-commit/pre-commit-hooks\n  rev: 'v6.0.0'\n  hooks:\n  - id: end-of-file-fixer\n    exclude: >-\n      ^docs/[^/]*\\.svg$\n  - id: requirements-txt-fixer\n  - id: trailing-whitespace\n    types: [python]\n  - id: file-contents-sorter\n    files: |\n      CONTRIBUTORS.txt|\n      docs/spelling_wordlist.txt|\n      .gitignore|\n      .gitattributes\n  - id: check-case-conflict\n  - id: check-json\n  - id: check-xml\n  - id: check-toml\n  - id: check-xml\n  - id: check-yaml\n  - id: debug-statements\n  - id: check-added-large-files\n  - id: check-symlinks\n  - id: debug-statements\n  - id: detect-aws-credentials\n    args: ['--allow-missing-credentials']\n  - id: detect-private-key\n    exclude: ^examples|(?:tests/ssl)/\n- repo: https://github.com/asottile/pyupgrade\n  rev: 'v3.21.2'\n  hooks:\n  - id: pyupgrade\n    args: ['--keep-mock']\n- repo: https://github.com/adamchainz/django-upgrade\n  rev: '1.30.0'\n  hooks:\n  - id: django-upgrade\n    args: [--target-version, '4.2']\n- repo: https://github.com/hhatto/autopep8\n  rev: 'v2.3.2'\n  hooks:\n  - id: autopep8\n- repo: https://github.com/PyCQA/flake8\n  rev: '7.3.0'\n  hooks:\n  - id: flake8\n    exclude: '^docs/'\n- repo: https://github.com/Lucas-C/pre-commit-hooks-markup\n  rev: v1.0.1\n  hooks:\n  - id: rst-linter\n    files: >-\n      ^[^/]+[.]rst$\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Change Log\n## Unreleased\n\n## [5.5.0](https://github.com/jazzband/django-silk/tree/5.5.0) (2026-03-06)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.4.3..5.5.0)\n\n**Fixes:**\n - Fix context manager for `_process_response` (#827) @izabala033\n - Fix mouse event for sql navigation (#847) @albertyw\n\n**Features/Enhancements:**\n\n - Add support for Django 6.0 (#836) @albertyw\n - Add support for Python 3.14 (#834) @albertyw\n - Get paginator limit from URL params (#646) @strig\n - Hide pagination when there's only one page (#844) @ShlomoCode\n\n**Maintenance and Cleanup:**\n - Remove official support for Python 3.9 (#834) @albertyw\n - Dependency updates\n\n\n## [5.4.3](https://github.com/jazzband/django-silk/tree/5.4.3) (2025-09-08)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.4.2..5.4.3)\n\n**Fixes:**\n\n - Fix double EXPLAIN when calling explain on queryset (#654) @stereodamage\n - Fix serialization issues for binary and json fields (#821) @albertyw\n\n\n## [5.4.2](https://github.com/jazzband/django-silk/tree/5.4.2) (2025-08-17)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.4.1..5.4.2)\n\n**Fixes:**\n\n - Reverts #798 which causes issues when serializing JSONFields (#807) @albertyw\n - Also reverts #798 which has a race condition when modifying `execute_sql` (#816) @albertyw\n - Catch and ignore sql encoding errors (#810) @albertyw @bpascard\n\n**Maintenance and Cleanup:**\n\n - Document that context_processors.request is required (#815) @albertyw\n - Fix documentation formatting (#810) @albertyw\n - Test refactors (#814) @albertyw\n\n\n## [5.4.1](https://github.com/jazzband/django-silk/tree/5.4.1) (2025-08-10)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.4.0..5.4.1)\n\n**Fixes:**\n\n - Fixes curl/client values rendering in request_detail (#797) @bcmyguest\n - Fix serialization of non-unicode binary data, add cleanup in middleware (#798) @glennmatthews\n - Make transactions target the DB alias selected by the router (#801) @OscarVanL\n\n**Maintenance and Cleanup:**\n\n - Dependency updates\n - Documentation updates\n\n\n## [5.4.0](https://github.com/jazzband/django-silk/tree/5.4.0) (2025-05-03)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.3.2..5.4.0)\n\n**Note: this release removes support for Django 5.0**\n**Note: this release removes autoformatting of python snippets; continue formatting by pip installing `django-silk[formatting]`**\n\n**Features/Enhancements:**\n\n - Add support for Django 5.2 (#784) @albertyw\n - Support opening SQL details in a new window (#788) @joaopedroalbq\n - Avoid timeouts when deserializing large jsons (#768) @quertenmont\n - Make autopep8 optional (#782) @albertyw\n\n**Fixes:**\n\n - Fix masking sensitive data when an empty `SILKY_SENSITIVE_KEYS` is provided (#777) @ahsanshafiq742\n\n**Maintenance and Cleanup:**\n\n - Remove support for Django 5.0 (#783) @albertyw\n - Fix logger deprecations (#766) @rjdebastiani\n - Update dependencies and various autoupdate cleanups\n\n\n## [5.3.2](https://github.com/jazzband/django-silk/tree/5.3.2) (2024-12-05)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.3.1..5.3.2)\n\n**Fixes:**\n\n - Fix missing image from jQuery UI 1.13.2 (#757) @Tatsh\n\n**Maintenance and Cleanup:**\n\n - Adds updated documentation on middleware ordering (#758) @SoyJoseC\n - Updated python dependencies (#761, #760) @albertyw\n\n\n## [5.3.1](https://github.com/jazzband/django-silk/tree/5.3.1) (2024-11-08)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.3.0..5.3.1)\n\n**Fixes:**\n\n - Fix missing jQuery UI images (#754) @Tatsh\n - Fix swallowing exceptions when processing response in silk middleware (#753) @albertyw\n\n\n## [5.3.0](https://github.com/jazzband/django-silk/tree/5.3.0) (2024-10-25)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.2.0..5.3.0)\n\n**Note: this release removes support for Django 3.2 and Python 3.8**\n\n**Features/Enhancements:**\n\n - Support python 3.13 (#747)\n\n**Fixes:**\n\n - Upgrade jQuery-UI to 1.13.2 to fix XSS vulnerability (#742)\n\n**Maintenance and Cleanup:**\n\n - Remove Django 3.2 support (#736)\n - Drop support for python 3.8 (#749)\n - Update python dependencies (#748)\n\n\n## [5.2.0](https://github.com/jazzband/django-silk/tree/5.2.0) (2024-08-17)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.1.0..5.2.0)\n\n**Features/Enhancements:**\n\n - Support Django 5.1 (#734, #732) @albertyw\n\n**Fixes:**\n\n - Fix when Session, Authentication or Message middleware are not present (#667) @mgaligniana\n - Update 'tables_involved' property to include tables from UPDATE operation (#717) @emregeldegul\n - Fix double-escaping of the curl and Python example code (#709) @SpecLad\n - Correct units in profiling and requests pages (#725) @ka28kumar\n\n**Maintenance and Cleanup:**\n\n - Update python dependencies (#733) @albertyw\n - Refactor SQL query time calculation to use Django aggregation (#720) @beltagymohamed\n - Fix test failures on Windows (#707) @SpecLad\n - Update workflow actions (#700) @albertyw\n - Update test matrix to latest version of django, postgres, and mariadb #701) @albertyw\n\n\n## [5.1.0](https://github.com/jazzband/django-silk/tree/5.1.0) (2023-12-30)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.0.4..5.1.0)\n\n**Upgrading:**\n\nThis release includes [Fix deprecation warning for get_storage_class #669](https://github.com/jazzband/django-silk/pull/669)\nwhich deprecates `SILKY_STORAGE_CLASS`.  Users should instead use the Django\n`STORAGES` configuration.  See [README](https://github.com/albertyw/django-silk/blob/master/README.md#profiling)\nand [Django documentation](https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-STORAGES)\nfor more information.\n\nAlso, for python 3.12, the `cProfile` stdlib library cannot be enabled multiple times concurrently.\nSilk will therefore skip profiling if another profile is already enabled.\n\n\n**Features/Enhancements:**\n\n - Allow option to delete profiles (#652) @viralj\n\n**Fixes:**\n\n - Gracefully error out when there are concurrent profilers (#692) @albertyw\n - Always disable cProfile as part of cleanup (#699) @albertyw\n - Fix when Session, Authentication or Message middlewares are not present (#667) @mgaligniana\n\n**Maintenance and Cleanup:**\n\n - Fix deprecation warning for get_storage_class (#669) @albertyw\n - Support Django 4.2 (#685) @albertyw\n - Support python 3.12 (#683) @albertyw\n - Support Django 5 (#686) @albertyw\n - Remove deprecated datetime.timezone.utc (#687) @albertyw\n - Derive version from importlib (#697) @robinchow\n\n**Dependencies:**\n\n - Update python dependencies (#693) @albertyw\n\n\n## [5.0.4](https://github.com/jazzband/django-silk/tree/5.0.4) (2023-09-17)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.0.3..5.0.4)\n\n**Features/Enhancements:**\n\n - Handle case-insensitive sensitive headers (#674) @shtimn\n - Add a \"pagetitle\" block to Silky templates (#661) @vsajip\n - Allow to generate more informative profile file name (#638) @k4rl85\n\n**Maintenance and Cleanup:**\n\n - Remove unsupported versions of Django and Python (#668) @albertyw\n - Outsource all inline scripts and styles (#635) @sgelis\n - Remove support for looking up headers on django &lt;3.2 (#643) @albertyw\n\n**Dependencies:**\n\n - Update python dependencies (#677) @albertyw\n\n\n## [5.0.3](https://github.com/jazzband/django-silk/tree/5.0.3) (2023-01-12)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.0.2..5.0.3)\n\n**Fixes:**\n\n - #46 Retain ordering, view style and limit (#614)\n - #157 prevent encoding errors in params (#617)\n - #594 Silk fails on constraint check queries (#618) (Fixes compatibility with Django 4.1)\n\n**Features/Enhancements:**\n\n - #132 Add action on sql query list (#611)\n - traceback only when needed (#387)\n\n**Dependencies:**\n\n - #625 Drop dependency to jinja2\n\n\n## [5.0.2](https://github.com/jazzband/django-silk/tree/5.0.2) (2022-10-12)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.0.1...5.0.2)\n\n**Fixes:**\n\n - Multipart forms and RawPostDataException (#592)\n - Decrease unnecessary database hits (#587) (#588)\n\n**Features/Enhancements:**\n\n - Remove unneeded pytz package (#603)\n - Use contextlib in test_profile_parser (#590)\n - Add support for storages, that don't implement full filesystem path (#596)\n\n\n## [5.0.1](https://github.com/jazzband/django-silk/tree/5.0.1) (2022-07-03)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/5.0.0...5.0.1)\n\n**Fixes:**\n\n - Add jquery UI 1.13.1 images and fix collectstatic (#576)\n\n\n## [5.0.0](https://github.com/jazzband/django-silk/tree/5.0.0) (2022-06-20)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.4.0...5.0.0)\n\n**Features/Enhancements:**\n\n- Drop support for Django 2.2 (EOL) (#567)\n- Added silk_request_garbage_collect command for out-of-band garbage collection. (#541)\n\n\n## [4.4.1](https://github.com/jazzband/django-silk/tree/4.4.1) (2022-07-03)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.4.0...4.4.1)\n\n**Fixes:**\n\n - Add jquery UI 1.13.1 images and fix collectstatic (#576)\n\n\n## [4.4.0](https://github.com/jazzband/django-silk/tree/4.4.0) (2022-06-20)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.3.0...4.4.0)\n\n**Features/Enhancements:**\n\n- Switch 'Apply' and 'Clear all filters' ordering\n- Make filters on Requests tab more visible\n- Add small margin for filter selects\n- Add 'Clear all filters' button\n- Add message when there are no requests to display\n- Making the error logging more accurate and explicit\n- Fixing #530 - Adding support for SILKY_EXPLAIN_FLAGS\n\n**Maintenance and Cleanup:**\n\n- Remove unused js compilation pipeline (#561)\n- Fix pre-commit-config\n\n**Dependencies:**\n\n- Update jquery to 3.6.0 and jquery-ui to 1.13.1 [#508]\n- [pre-commit.ci] pre-commit autoupdate (#560, #571)\n- Add django-upgrade to pre-commit hooks (#566)\n\n**Moved to 5.0.0**\n\n- Drop support for Django 2.2 (EOL) (#567)\n\n\n## [4.3.0](https://github.com/jazzband/django-silk/tree/4.3.0) (2022-03-01)\n:release-by: Albert Wang (@albertyw)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.2.0...4.3.0)\n\n**Fixes:**\n\n- Use correct db in a multi db setup (https://github.com/jazzband/django-silk/issues/522)\n\n**Dependencies:**\n\n- Drop support for Python 3.6\n- Add Python 3.10 compatibility\n- Add Django 4.0 to tox.ini\n- Update django version (#544)\n- Django main (#528)\n- Remove unneeded dependency Pygments\n\n**Maintenance and Cleanup:**\n\n- Jazzband: Created local 'CODE_OF_CONDUCT.md' from remote 'CODE_OF_CONDUCT.md'\n- fix installation instructions in README\n- Replace assertDictContainsSubset (#536)\n- Fix issue avoid-misusing-assert-true found at https://codereview.doctor (#550)\n- pre-commit autoupdate\n\n## [4.2.0](https://github.com/jazzband/django-silk/tree/4.2.0) (2021-23-10)\n:release-by: Asif Saif Uddin (@auvipy)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.1.0...4.2.0)\n- #427 Passed wsgi request to SILKY_PYTHON_PROFILER_FUNC\n- Added Django 3.1 & 3.2 to test matrix\n- Replace url with re_path for Django 4.0\n- Move CI to GitHub Actions. [\\#460](https://github.com/jazzband/django-silk/pull/432) ([jezdez](https://github.com/jezdez))\n- Do not crash when silk app is not included in urls\n- Add the SILKY_JSON_ENSURE_ASCII configuration item to support Chinese\n- Add row view for requests page (#440)\n- RequestModelFactory: fallback if request body too large, fix #162 (#451)\n- Add query execution plan to sql_detail (#452)\n- Add Python 3.9 compatibility (#404)\n- Replace re_path with path\n- Fix transaction error for mysql\n- parse query when count joins to match only Keyword\n- fix: DB connection to ClearDB when multiple databases\n- fix: DataCollector sql_queries model not found on filter(request=self.request)\n- Generate missing row.css from sass\n- Filter null values from most time overall summary\n- Ensure sorting between longest requests\n- Filter null values from most db time summary\n- Ensure sorting between most db time requests\n- Temporary fix for testing Django 2.2\n- Fix egg metadata error\n- Fixed a bug that the profile tab could not be opened when the source code contains japanese\n- fix incorrectly made decorator\n- Ensure sorting between most db queries requests\n- Add tests that access the actual DB (#493)\n- remove python 2 style codes from across the codebase\n- Fix broken test on Windows 10 (SQLite) (#504)\n- Remove Make Migrations (#503)\n- Add Python 3.10 compatibility (#527)\n\n\n## [4.1.0](https://github.com/jazzband/django-silk/tree/4.1.0) (2020-08-07)\n\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.0.1...4.1.0)\n\n\n**New features/Implemented enhancements:**\n\n- Make compatible with Django 3.1 [\\#432](https://github.com/jazzband/django-silk/pull/432) ([Tirzono](https://github.com/Tirzono))\n\n\n**Fixed bugs:**\n\n- Capture entire key name during cleansing in \\_mask\\_credentials [\\#414](https://github.com/jazzband/django-silk/pull/414) ([ThePumpingLemma](https://github.com/ThePumpingLemma))\n- Clear DB error when configuring silk to use a non-' default' database [\\#417](https://github.com/jazzband/django-silk/pull/417) ([eshxcmhk](https://github.com/eshxcmhk))\n- Fix force\\_text RemovedInDjango40Warning [\\#422](https://github.com/jazzband/django-silk/pull/422) ([justinmayhew](https://github.com/justinmayhew))\n\n\n**Closed issues:**\n\n- \\_mask\\_credentials uses UGC in a regex substitution [\\#410](https://github.com/jazzband/django-silk/issues/410) ([barm](https://github.com/barm))\n- Django Silk is not compatible with Django 3.1: EmptyResultSet is removed in Django 3.1 [\\#431](https://github.com/jazzband/django-silk/issues/431) ([Tirzono](https://github.com/Tirzono))\n\n\n**Merged pull requests:**\n\n- Wrap re.sub() in try-except [\\#412](https://github.com/jazzband/django-silk/pull/412) ([bambookchos](https://github.com/bambookchos))\n- Replace the call to re.findall with re.sub in \\_mask\\_credentials so matched values are not treated as regex patterns [\\#413](https://github.com/jazzband/django-silk/pull/413) ([ThePumpingLemma](https://github.com/ThePumpingLemma))\n- Capture entire key name during cleansing in \\_mask\\_credentials [\\#414](https://github.com/jazzband/django-silk/pull/414) ([ThePumpingLemma](https://github.com/ThePumpingLemma))\n- Clear DB error when configuring silk to use a non-' default' database [\\#417](https://github.com/jazzband/django-silk/pull/417) ([eshxcmhk](https://github.com/eshxcmhk))\n- Fix force\\_text RemovedInDjango40Warning [\\#422](https://github.com/jazzband/django-silk/pull/422) ([justinmayhew](https://github.com/justinmayhew))\n- Make compatible with Django 3.1 [\\#432](https://github.com/jazzband/django-silk/pull/432) ([Tirzono](https://github.com/Tirzono))\n- Update README.md django-silk is tested with Django 3.1 [\\#433](https://github.com/jazzband/django-silk/pull/433) ([Tirzono](https://github.com/Tirzono))\n\n\n## [4.0.1](https://github.com/jazzband/django-silk/tree/4.0.1) (2020-03-12)\n\n[Full Changelog](https://github.com/jazzband/django-silk/compare/4.0.0...4.0.1)\n\n\n**New features/Implemented enhancements:**\n\n- Restructured clear db HTML [\\#399](https://github.com/jazzband/django-silk/pull/399) ([nasirhjafri](https://github.com/nasirhjafri))\n- JS workflow cleanup [\\#397](https://github.com/jazzband/django-silk/pull/397) ([nasirhjafri](https://github.com/nasirhjafri))\n- Refactor QA setup [\\#393](https://github.com/jazzband/django-silk/pull/393) ([aleksihakli](https://github.com/aleksihakli))\n\n\n**Fixed bugs:**\n\n- docs: Fix simple typo, tracebackk -> traceback [\\#406](https://github.com/jazzband/django-silk/pull/406) ([timgates42](https://github.com/timgates42))\n- Clear DB page doesn't work with PostgreSQL and SQLite [\\#396](https://github.com/jazzband/django-silk/pull/396) ([nasirhjafri](https://github.com/nasirhjafri))\n\n\n**Closed issues:**\n\n- The \"Clear DB\" page doesn't work with PostgreSQL [\\#395](https://github.com/jazzband/django-silk/issues/395) ([Ikalou](https://github.com/Ikalou))\n\n\n**Merged pull requests:**\n\n- docs: Fix simple typo, tracebackk -> traceback [\\#406](https://github.com/jazzband/django-silk/pull/406) ([timgates42](https://github.com/timgates42))\n- Restructured clear db HTML [\\#399](https://github.com/jazzband/django-silk/pull/399) ([nasirhjafri](https://github.com/nasirhjafri))\n- JS workflow cleanup [\\#397](https://github.com/jazzband/django-silk/pull/397) ([nasirhjafri](https://github.com/nasirhjafri))\n- Clear DB page doesn't work with PostgreSQL and SQLite [\\#396](https://github.com/jazzband/django-silk/pull/396) ([nasirhjafri](https://github.com/nasirhjafri))\n- Refactor QA setup [\\#393](https://github.com/jazzband/django-silk/pull/393) ([aleksihakli](https://github.com/aleksihakli))\n\n\n## [4.0.0](https://github.com/jazzband/django-silk/tree/4.0.0) (2020-01-09)\n\n[Full Changelog](https://github.com/jazzband/django-silk/compare/3.0.4...4.0.0)\n\n**New features/Implemented enhancements:**\n\n- Ability to clean up all requests/queries [\\#368](https://github.com/jazzband/django-silk/pull/368) ([nasirhjafri](https://github.com/nasirhjafri))\n- Used bulk_create to save number of queries [\\#370](https://github.com/jazzband/django-silk/pull/370) ([nasirhjafri](https://github.com/nasirhjafri))\n- Dropped Python 2 and 3.4 support [\\#380](https://github.com/jazzband/django-silk/pull/380) ([munza](https://github.com/munza))\n- Added Python 3.8 support [\\#380](https://github.com/jazzband/django-silk/pull/380) ([nasirhjafri](https://github.com/nasirhjafri))\n- Removed django<2.2 support and added django 3.0 support [\\#385](https://github.com/jazzband/django-silk/pull/385) ([nasirhjafri](https://github.com/nasirhjafri))\n- Add function support for enabling profiling [\\#391](https://github.com/jazzband/django-silk/pull/391) ([tredzko](https://github.com/tredzko))\n\n**Fixed bugs:**\n\n- Mask authorization header [\\#376](https://github.com/jazzband/django-silk/pull/376) ([StefanMich](https://github.com/StefanMich))\n\n**Closed issues:**\n\n- Ability to clean up all requests/queries [\\#365](https://github.com/jazzband/django-silk/issues/365)\n- Use bulk_create to save number of queries [\\#369](https://github.com/jazzband/django-silk/issues/369)\n- Headers are not sanitized [\\#375](https://github.com/jazzband/django-silk/issues/375)\n- Django 3 support [\\#382](https://github.com/jazzband/django-silk/issues/382)\n- Support functional cProfile enable [\\#390](https://github.com/jazzband/django-silk/issues/390)\n\n\n**Merged pull requests:**\n\n- Mask authorization header [\\#376](https://github.com/jazzband/django-silk/pull/376) ([StefanMich](https://github.com/StefanMich))\n- Ability to clean up all requests/queries [\\#368](https://github.com/jazzband/django-silk/pull/368) ([nasirhjafri](https://github.com/nasirhjafri))\n- Used bulk_create to save number of queries [\\#370](https://github.com/jazzband/django-silk/pull/370) ([nasirhjafri](https://github.com/nasirhjafri))\n- Dropped Python 2 and 3.4 support [\\#380](https://github.com/jazzband/django-silk/pull/380) ([munza](https://github.com/munza))\n- Added Python 3.8 support [\\#380](https://github.com/jazzband/django-silk/pull/380) ([nasirhjafri](https://github.com/nasirhjafri))\n- Removed django<2.2 support and added django 3.0 support [\\#385](https://github.com/jazzband/django-silk/pull/385) ([nasirhjafri](https://github.com/nasirhjafri))\n- Add function support for enabling profiling [\\#391](https://github.com/jazzband/django-silk/pull/391) ([tredzko](https://github.com/tredzko))\n\n\n## [3.0.4](https://github.com/jazzband/django-silk/tree/3.0.4) (2019-08-12)\n\n[Full Changelog](https://github.com/jazzband/django-silk/compare/3.0.2...3.0.4)\n\n**Implemented enhancements:**\n\n- templates: limit select width to its container one [\\#351](https://github.com/jazzband/django-silk/pull/351) ([xrmx](https://github.com/xrmx))\n- Clean up RemovedInDjango30Warning with {% load staticfiles %} [\\#353](https://github.com/jazzband/django-silk/pull/353) ([devmonkey22](https://github.com/devmonkey22))\n- Simplify pattern masking and handle dicts [\\#355](https://github.com/jazzband/django-silk/pull/355) ([Chris7](https://github.com/Chris7))\n\n**Fixed bugs:**\n\n- Fix masking sensitive data in batch JSON request [\\#342](https://github.com/jazzband/django-silk/pull/342) ([nikolaik](https://github.com/nikolaik))\n- Fix project url on PyPi [\\#343](https://github.com/jazzband/django-silk/pull/343) ([luzfcb](https://github.com/luzfcb))\n\n**Closed issues:**\n\n- Clean up RemovedInDjango30Warning warning re `load staticfiles` in Django 2.1+ [\\#352](https://github.com/jazzband/django-silk/issues/352)\n\n**Merged pull requests:**\n\n- Fix masking sensitive data in batch JSON request [\\#342](https://github.com/jazzband/django-silk/pull/342) ([nikolaik](https://github.com/nikolaik))\n- Fix project url on PyPi [\\#343](https://github.com/jazzband/django-silk/pull/343) ([luzfcb](https://github.com/luzfcb))\n- templates: limit select width to its container one [\\#351](https://github.com/jazzband/django-silk/pull/351) ([xrmx](https://github.com/xrmx))\n- Clean up RemovedInDjango30Warning with {% load staticfiles %} [\\#353](https://github.com/jazzband/django-silk/pull/353) ([devmonkey22](https://github.com/devmonkey22))\n- Simplify pattern masking and handle dicts [\\#355](https://github.com/jazzband/django-silk/pull/355) ([Chris7](https://github.com/Chris7))\n\n\n## [3.0.2](https://github.com/jazzband/django-silk/tree/3.0.2) (2019-04-23)\n\n[Full Changelog](https://github.com/jazzband/django-silk/compare/3.0.1...3.0.2)\n\n**Implemented enhancements:**\n\n- Add testing support for django 2.2 [\\#340](https://github.com/jazzband/django-silk/pull/340) ([mbeacom](https://github.com/mbeacom))\n- SILKY\\_MIDDLEWARE\\_CLASS option [\\#334](https://github.com/jazzband/django-silk/pull/334) ([vartagg](https://github.com/vartagg))\n\n**Fixed bugs:**\n\n- Long url path causes Http 500 [\\#312](https://github.com/jazzband/django-silk/issues/312)\n\n**Closed issues:**\n\n- Permission checking is skipped due to order of silk\\_profile decorator [\\#336](https://github.com/jazzband/django-silk/issues/336)\n- Support gprof2dot 2017.09.19 [\\#332](https://github.com/jazzband/django-silk/issues/332)\n- Duplicate \\#310 [\\#328](https://github.com/jazzband/django-silk/issues/328)\n- Profiling management commands [\\#327](https://github.com/jazzband/django-silk/issues/327)\n- NoReverseMatch at /cart/detail/ Reverse for 'cart\\_add' with arguments not found. [\\#324](https://github.com/jazzband/django-silk/issues/324)\n- Request body sanitization [\\#305](https://github.com/jazzband/django-silk/issues/305)\n- How to profile middleware? [\\#303](https://github.com/jazzband/django-silk/issues/303)\n- Disabling Silk for specific URLs [\\#292](https://github.com/jazzband/django-silk/issues/292)\n- silk\\_clear\\_request\\_log fails on Postgres [\\#290](https://github.com/jazzband/django-silk/issues/290)\n- silk profile is not work, with dango-version 2.0.2 and django-silk version 2.0.0 [\\#277](https://github.com/jazzband/django-silk/issues/277)\n- DataError: value too long for type character varying\\(190\\) [\\#179](https://github.com/jazzband/django-silk/issues/179)\n\n**Merged pull requests:**\n\n- Update gprof2dot requirement [\\#333](https://github.com/jazzband/django-silk/pull/333) ([Regzon](https://github.com/Regzon))\n- Make Request.garbage\\_collect cheaper [\\#331](https://github.com/jazzband/django-silk/pull/331) ([xrmx](https://github.com/xrmx))\n- Sort view filters values [\\#330](https://github.com/jazzband/django-silk/pull/330) ([xrmx](https://github.com/xrmx))\n- Update Travis CI matrix [\\#326](https://github.com/jazzband/django-silk/pull/326) ([kevin-brown](https://github.com/kevin-brown))\n- Fix unit for max response body size in readme [\\#325](https://github.com/jazzband/django-silk/pull/325) ([st4lk](https://github.com/st4lk))\n- Mask sensitive data [\\#322](https://github.com/jazzband/django-silk/pull/322) ([egichuri](https://github.com/egichuri))\n- Disclose security issues [\\#321](https://github.com/jazzband/django-silk/pull/321) ([acu192](https://github.com/acu192))\n- If there is no DataCollector\\(\\).request then don't wrap sql queries [\\#320](https://github.com/jazzband/django-silk/pull/320) ([rwlogel](https://github.com/rwlogel))\n- Prevent path or view\\_name being longer than 190 characters [\\#314](https://github.com/jazzband/django-silk/pull/314) ([smaccona](https://github.com/smaccona))\n- Disable postgres USER triggers [\\#299](https://github.com/jazzband/django-silk/pull/299) ([gforcada](https://github.com/gforcada))\n- Fix \\#297 remove explicit byte string from migration 0003 [\\#298](https://github.com/jazzband/django-silk/pull/298) ([florianm](https://github.com/florianm))\n- Modernize middleware [\\#296](https://github.com/jazzband/django-silk/pull/296) ([gforcada](https://github.com/gforcada))\n- Added a simple view in request detail context allowing to get python profile [\\#295](https://github.com/jazzband/django-silk/pull/295) ([laurentb2](https://github.com/laurentb2))\n\n## [3.0.1](https://github.com/jazzband/django-silk/tree/3.0.1) (2018-07-03)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/3.0.0...3.0.1)\n\n**Closed issues:**\n\n- ProgrammingError raised from silk\\_clear\\_request\\_log [\\#293](https://github.com/jazzband/django-silk/issues/293)\n- Make a new release of django-silk [\\#282](https://github.com/jazzband/django-silk/issues/282)\n\n**Merged pull requests:**\n\n- \\#290 Fix silk\\_clear\\_request\\_log errors on Postgres [\\#291](https://github.com/jazzband/django-silk/pull/291) ([devmonkey22](https://github.com/devmonkey22))\n\n## [3.0.0](https://github.com/jazzband/django-silk/tree/3.0.0) (2018-05-15)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/2.0.0...3.0.0)\n\n**Implemented enhancements:**\n\n- Limiting request/response data don't available in pypi version  [\\#218](https://github.com/jazzband/django-silk/issues/218)\n\n**Fixed bugs:**\n\n- silk\\_clear\\_request\\_log taking longer than 30 minutes [\\#239](https://github.com/jazzband/django-silk/issues/239)\n\n**Closed issues:**\n\n- Meta profiling does not work with Django 2.0 and higher [\\#274](https://github.com/jazzband/django-silk/issues/274)\n- Force opening a new window for SQL queries is very annoying [\\#271](https://github.com/jazzband/django-silk/issues/271)\n- DB Deadlock when stress testing with silk [\\#265](https://github.com/jazzband/django-silk/issues/265)\n- proplem with propagating code to pypi  [\\#264](https://github.com/jazzband/django-silk/issues/264)\n- PSA: Cleanup silk\\_requests before updating to 1.1.0 [\\#261](https://github.com/jazzband/django-silk/issues/261)\n- Release 2.0.0 [\\#259](https://github.com/jazzband/django-silk/issues/259)\n\n**Merged pull requests:**\n\n- Remove gitter links [\\#285](https://github.com/jazzband/django-silk/pull/285) ([albertyw](https://github.com/albertyw))\n- Release 3.0.0 [\\#283](https://github.com/jazzband/django-silk/pull/283) ([albertyw](https://github.com/albertyw))\n- Fix garbage collection logic for small tables [\\#280](https://github.com/jazzband/django-silk/pull/280) ([albertyw](https://github.com/albertyw))\n- Fix view name [\\#278](https://github.com/jazzband/django-silk/pull/278) ([drppi44](https://github.com/drppi44))\n- Revert \"Opening sql queries in new tab is very useful\" [\\#276](https://github.com/jazzband/django-silk/pull/276) ([albertyw](https://github.com/albertyw))\n- Fix issue \\#274 [\\#275](https://github.com/jazzband/django-silk/pull/275) ([MKolman](https://github.com/MKolman))\n- Truncate tables when running silk\\_clear\\_request\\_log [\\#270](https://github.com/jazzband/django-silk/pull/270) ([albertyw](https://github.com/albertyw))\n- Makes example\\_app.models.Product.photo.upload\\_to a string instead of bytes [\\#268](https://github.com/jazzband/django-silk/pull/268) ([vbawa](https://github.com/vbawa))\n- Make garbage collection filter more efficient [\\#267](https://github.com/jazzband/django-silk/pull/267) ([albertyw](https://github.com/albertyw))\n-  Drop support for Django \\< 1.11 and remove workarounds [\\#266](https://github.com/jazzband/django-silk/pull/266) ([jdufresne](https://github.com/jdufresne))\n\n## [2.0.0](https://github.com/jazzband/django-silk/tree/2.0.0) (2018-01-16)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/1.1.0...2.0.0)\n\n**Fixed bugs:**\n\n- Links for Readme.md not working. [\\#250](https://github.com/jazzband/django-silk/issues/250)\n\n**Closed issues:**\n\n- pypi version [\\#252](https://github.com/jazzband/django-silk/issues/252)\n- Remove support for django 1.7 [\\#247](https://github.com/jazzband/django-silk/issues/247)\n- migrations/0005\\_increase\\_request\\_prof\\_file\\_length.py does not match code [\\#244](https://github.com/jazzband/django-silk/issues/244)\n- Excessive number of queries in class method profile [\\#240](https://github.com/jazzband/django-silk/issues/240)\n- Django 2.0 support [\\#229](https://github.com/jazzband/django-silk/issues/229)\n- Create new release of silk [\\#187](https://github.com/jazzband/django-silk/issues/187)\n\n**Merged pull requests:**\n\n- Release 2.0.0 [\\#260](https://github.com/jazzband/django-silk/pull/260) ([albertyw](https://github.com/albertyw))\n- function declaration fix [\\#254](https://github.com/jazzband/django-silk/pull/254) ([Yolley](https://github.com/Yolley))\n- Opening sql queries in new tab is very useful [\\#253](https://github.com/jazzband/django-silk/pull/253) ([lokeshatbigbasket](https://github.com/lokeshatbigbasket))\n- Use force\\_text in ResponseModelFactory to avoid b' prefix in django 2 [\\#251](https://github.com/jazzband/django-silk/pull/251) ([aadu](https://github.com/aadu))\n- Remove django support 1.7 [\\#249](https://github.com/jazzband/django-silk/pull/249) ([albertyw](https://github.com/albertyw))\n- Remove django 1.6 references [\\#248](https://github.com/jazzband/django-silk/pull/248) ([albertyw](https://github.com/albertyw))\n- Update development status and python support to package classifiers [\\#246](https://github.com/jazzband/django-silk/pull/246) ([albertyw](https://github.com/albertyw))\n- fix migration for request.prof\\_file field [\\#245](https://github.com/jazzband/django-silk/pull/245) ([dennybiasiolli](https://github.com/dennybiasiolli))\n- fix alternative github tags installation url [\\#243](https://github.com/jazzband/django-silk/pull/243) ([dennybiasiolli](https://github.com/dennybiasiolli))\n\n## [1.1.0](https://github.com/jazzband/django-silk/tree/1.1.0) (2017-12-27)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/1.0.0...1.1.0)\n\n**Implemented enhancements:**\n\n- RemovedInDjango20Warning: on\\_delete will be a required arg for OneToOneField in Django 2.0. [\\#183](https://github.com/jazzband/django-silk/issues/183)\n- README missing info about how to import decorator [\\#180](https://github.com/jazzband/django-silk/issues/180)\n- Use redis for backend [\\#163](https://github.com/jazzband/django-silk/issues/163)\n- Difficult to install on windows: Needs wheels. [\\#149](https://github.com/jazzband/django-silk/issues/149)\n- Organise cProfile output as a sortable, more organised table. [\\#33](https://github.com/jazzband/django-silk/issues/33)\n\n**Closed issues:**\n\n- Silk is incompatible with django-fullclean [\\#219](https://github.com/jazzband/django-silk/issues/219)\n- The dashboard shows views with no queries as most time taken in database [\\#217](https://github.com/jazzband/django-silk/issues/217)\n- No end\\_time for any captured request [\\#213](https://github.com/jazzband/django-silk/issues/213)\n- Bad alignment in profile table [\\#206](https://github.com/jazzband/django-silk/issues/206)\n- Visualization not visible [\\#205](https://github.com/jazzband/django-silk/issues/205)\n- Storage class as a setting [\\#202](https://github.com/jazzband/django-silk/issues/202)\n- Consider moving project to jazzband [\\#184](https://github.com/jazzband/django-silk/issues/184)\n- Request detail page never loads [\\#175](https://github.com/jazzband/django-silk/issues/175)\n- Number of queries and time showing as 0 [\\#174](https://github.com/jazzband/django-silk/issues/174)\n- NameError: name 'silk\\_profile' is not defined [\\#172](https://github.com/jazzband/django-silk/issues/172)\n- Query time-outs [\\#158](https://github.com/jazzband/django-silk/issues/158)\n\n**Merged pull requests:**\n\n- Release 1.1.0 [\\#242](https://github.com/jazzband/django-silk/pull/242) ([albertyw](https://github.com/albertyw))\n- Update package versions for test project [\\#241](https://github.com/jazzband/django-silk/pull/241) ([albertyw](https://github.com/albertyw))\n- Return immediately [\\#235](https://github.com/jazzband/django-silk/pull/235) ([Stranger6667](https://github.com/Stranger6667))\n- Fix missing db\\_time field [\\#234](https://github.com/jazzband/django-silk/pull/234) ([albertyw](https://github.com/albertyw))\n- Test django 2 in travis [\\#233](https://github.com/jazzband/django-silk/pull/233) ([albertyw](https://github.com/albertyw))\n- Lint silk directory and fix a python 3 blocker [\\#232](https://github.com/jazzband/django-silk/pull/232) ([albertyw](https://github.com/albertyw))\n- Fix flaky test by rounding off floats [\\#231](https://github.com/jazzband/django-silk/pull/231) ([albertyw](https://github.com/albertyw))\n- Fix github silk links to point to jazzband [\\#230](https://github.com/jazzband/django-silk/pull/230) ([albertyw](https://github.com/albertyw))\n- Update docs to clarify how to install the middleware [\\#228](https://github.com/jazzband/django-silk/pull/228) ([albertyw](https://github.com/albertyw))\n- Fix Django 2 deprecations [\\#227](https://github.com/jazzband/django-silk/pull/227) ([albertyw](https://github.com/albertyw))\n- Add extra documentation covering environment variables and running tests [\\#226](https://github.com/jazzband/django-silk/pull/226) ([richardnias](https://github.com/richardnias))\n- Filter out views that took no time in the database for the most time … [\\#225](https://github.com/jazzband/django-silk/pull/225) ([hvdklauw](https://github.com/hvdklauw))\n- Removed typo errors and fixed contractions [\\#222](https://github.com/jazzband/django-silk/pull/222) ([basifat](https://github.com/basifat))\n- gprof2dot had a breaking change in 2017.09.19 [\\#221](https://github.com/jazzband/django-silk/pull/221) ([richardnias](https://github.com/richardnias))\n- Allow prof\\_file to be blank, not null [\\#220](https://github.com/jazzband/django-silk/pull/220) ([richardnias](https://github.com/richardnias))\n- Changed the theme of gprof2dot output to be more inline with rest of silk design [\\#210](https://github.com/jazzband/django-silk/pull/210) ([danielbradburn](https://github.com/danielbradburn))\n- configurable storage class [\\#204](https://github.com/jazzband/django-silk/pull/204) ([smcoll](https://github.com/smcoll))\n- increase Request.prof\\_file max\\_length to 300 [\\#203](https://github.com/jazzband/django-silk/pull/203) ([smcoll](https://github.com/smcoll))\n- \\#33 organise cprofile output as a sortable table [\\#200](https://github.com/jazzband/django-silk/pull/200) ([danielbradburn](https://github.com/danielbradburn))\n- left align pre tag text [\\#199](https://github.com/jazzband/django-silk/pull/199) ([smcoll](https://github.com/smcoll))\n- add .venv\\* to .gitignore [\\#198](https://github.com/jazzband/django-silk/pull/198) ([danielbradburn](https://github.com/danielbradburn))\n- Add missing gprof2dot to setup.py [\\#197](https://github.com/jazzband/django-silk/pull/197) ([danielbradburn](https://github.com/danielbradburn))\n- README changes for visualisation and sql summary table sorting [\\#195](https://github.com/jazzband/django-silk/pull/195) ([danielbradburn](https://github.com/danielbradburn))\n- Added UI element to filter requests by http verb [\\#194](https://github.com/jazzband/django-silk/pull/194) ([danielbradburn](https://github.com/danielbradburn))\n- Sortable sql table [\\#193](https://github.com/jazzband/django-silk/pull/193) ([danielbradburn](https://github.com/danielbradburn))\n- Visualize profile result [\\#192](https://github.com/jazzband/django-silk/pull/192) ([danielbradburn](https://github.com/danielbradburn))\n- Added status code filter [\\#191](https://github.com/jazzband/django-silk/pull/191) ([danielbradburn](https://github.com/danielbradburn))\n- Set jazzband to limit the number of rows of request/response data [\\#190](https://github.com/jazzband/django-silk/pull/190) ([albertyw](https://github.com/albertyw))\n- Add python 3.6 to travis config [\\#189](https://github.com/jazzband/django-silk/pull/189) ([albertyw](https://github.com/albertyw))\n- Add explicit on\\_delete to foreign key and one to one relationships [\\#188](https://github.com/jazzband/django-silk/pull/188) ([albertyw](https://github.com/albertyw))\n- Replace django-silk organization with jazzband [\\#186](https://github.com/jazzband/django-silk/pull/186) ([albertyw](https://github.com/albertyw))\n- Jazzband migration [\\#185](https://github.com/jazzband/django-silk/pull/185) ([mtford90](https://github.com/mtford90))\n- Deprecation: update to warning [\\#177](https://github.com/jazzband/django-silk/pull/177) ([lammertw](https://github.com/lammertw))\n- Add text-align property to pyprofile class for readability [\\#176](https://github.com/jazzband/django-silk/pull/176) ([jeffreyckchau](https://github.com/jeffreyckchau))\n- Mention collectstatic [\\#173](https://github.com/jazzband/django-silk/pull/173) ([goetzk](https://github.com/goetzk))\n\n## [1.0.0](https://github.com/jazzband/django-silk/tree/1.0.0) (2017-03-25)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.7.3...1.0.0)\n\n**Fixed bugs:**\n\n- Silk shows 0 time for all requests? [\\#161](https://github.com/jazzband/django-silk/issues/161)\n- Failed to install index for silk.Request model: \\(1071, 'Specified key was too long; max key length is 767 bytes'\\) [\\#38](https://github.com/jazzband/django-silk/issues/38)\n- IntegrityError: duplicate key value violates unique constraint \"silk\\_response\\_request\\_id\\_key\" [\\#26](https://github.com/jazzband/django-silk/issues/26)\n\n**Closed issues:**\n\n- There is no reference to download a profile [\\#170](https://github.com/jazzband/django-silk/issues/170)\n- Build fails occasionally due to \"missing manage.py\" [\\#32](https://github.com/jazzband/django-silk/issues/32)\n\n**Merged pull requests:**\n\n- Fixes \\#170 [\\#171](https://github.com/jazzband/django-silk/pull/171) ([perdy](https://github.com/perdy))\n- Wheel support [\\#168](https://github.com/jazzband/django-silk/pull/168) ([auvipy](https://github.com/auvipy))\n- Improved MySQL support [\\#167](https://github.com/jazzband/django-silk/pull/167) ([smaccona](https://github.com/smaccona))\n- some style improvements [\\#166](https://github.com/jazzband/django-silk/pull/166) ([auvipy](https://github.com/auvipy))\n- Update travis matrix and requirments dependencies versions [\\#165](https://github.com/jazzband/django-silk/pull/165) ([auvipy](https://github.com/auvipy))\n- Fixes \\#161 [\\#164](https://github.com/jazzband/django-silk/pull/164) ([perdy](https://github.com/perdy))\n\n## [0.7.3](https://github.com/jazzband/django-silk/tree/0.7.3) (2017-02-13)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.7.2...0.7.3)\n\n**Fixed bugs:**\n\n- Profiling files get copied into MEDIA\\_ROOT [\\#151](https://github.com/jazzband/django-silk/issues/151)\n- Bad requirements for postgres based installations [\\#142](https://github.com/jazzband/django-silk/issues/142)\n\n**Closed issues:**\n\n- Middleware setting in Django 1.10 [\\#159](https://github.com/jazzband/django-silk/issues/159)\n- When installing silk asking for mysql library. But I'm using postgresql. [\\#150](https://github.com/jazzband/django-silk/issues/150)\n- No Silk profiling was performed for this request. Use the silk\\_profile decorator/context manager to do so. [\\#147](https://github.com/jazzband/django-silk/issues/147)\n- ProgrammingError on postgresql [\\#146](https://github.com/jazzband/django-silk/issues/146)\n- \\[Error\\]\\[Bug\\]adding silk middleware in MIDDLEWARE causes ImportError [\\#108](https://github.com/jazzband/django-silk/issues/108)\n\n**Merged pull requests:**\n\n- Update middleware setting for Django \\>= 1.10 [\\#160](https://github.com/jazzband/django-silk/pull/160) ([ukjin1192](https://github.com/ukjin1192))\n- Add favorite icons [\\#156](https://github.com/jazzband/django-silk/pull/156) ([phuong](https://github.com/phuong))\n- Bugfix for issue \\#153 [\\#155](https://github.com/jazzband/django-silk/pull/155) ([Drache91](https://github.com/Drache91))\n- Improve profile storage [\\#152](https://github.com/jazzband/django-silk/pull/152) ([r3m0t](https://github.com/r3m0t))\n\n## [0.7.2](https://github.com/jazzband/django-silk/tree/0.7.2) (2016-12-03)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.7.1...0.7.2)\n\n**Closed issues:**\n\n- Pypi version upload [\\#141](https://github.com/jazzband/django-silk/issues/141)\n\n**Merged pull requests:**\n\n- Allow using Django 1.10 MIDDLEWARE setting instead of MIDDLEWARE\\_CLASSES [\\#148](https://github.com/jazzband/django-silk/pull/148) ([lockie](https://github.com/lockie))\n- Travis config to test on the different django database backends. [\\#145](https://github.com/jazzband/django-silk/pull/145) ([mattjegan](https://github.com/mattjegan))\n- Updates exception handling to use Django DatabaseError class [\\#144](https://github.com/jazzband/django-silk/pull/144) ([hanleyhansen](https://github.com/hanleyhansen))\n- Fix for byte string incompatibility in ResponseModelFactory.body\\(\\) on py3 [\\#143](https://github.com/jazzband/django-silk/pull/143) ([aljp](https://github.com/aljp))\n\n## [0.7.1](https://github.com/jazzband/django-silk/tree/0.7.1) (2016-10-01)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.7.0...0.7.1)\n\n**Merged pull requests:**\n\n- Operational Error When Silk Is Used On Big SQL Queries [\\#140](https://github.com/jazzband/django-silk/pull/140) ([hanleyhansen](https://github.com/hanleyhansen))\n\n## [0.7.0](https://github.com/jazzband/django-silk/tree/0.7.0) (2016-09-21)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.6.2...0.7.0)\n\n**Implemented enhancements:**\n\n- Select a path to save profiling files [\\#131](https://github.com/jazzband/django-silk/issues/131)\n\n**Merged pull requests:**\n\n- Remove trailing slashes in MANIFEST.in [\\#139](https://github.com/jazzband/django-silk/pull/139) ([leifdenby](https://github.com/leifdenby))\n- Django 1.10 compatibility [\\#138](https://github.com/jazzband/django-silk/pull/138) ([shanx](https://github.com/shanx))\n- Swap imports to avoid emitting warnings [\\#136](https://github.com/jazzband/django-silk/pull/136) ([blag](https://github.com/blag))\n- Profiler files path configurable [\\#135](https://github.com/jazzband/django-silk/pull/135) ([javaguirre](https://github.com/javaguirre))\n- Fix ignored content body [\\#134](https://github.com/jazzband/django-silk/pull/134) ([aehlke](https://github.com/aehlke))\n- Namespaced loggers [\\#133](https://github.com/jazzband/django-silk/pull/133) ([aehlke](https://github.com/aehlke))\n\n## [0.6.2](https://github.com/jazzband/django-silk/tree/0.6.2) (2016-07-28)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.6.1...0.6.2)\n\n**Closed issues:**\n\n- SnakeViz integration [\\#83](https://github.com/jazzband/django-silk/issues/83)\n\n**Merged pull requests:**\n\n- don't crash when a route is 404 [\\#129](https://github.com/jazzband/django-silk/pull/129) ([chrono](https://github.com/chrono))\n\n## [0.6.1](https://github.com/jazzband/django-silk/tree/0.6.1) (2016-07-13)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.6.0...0.6.1)\n\n**Closed issues:**\n\n- Latest version of django-silk not installing because of missing dependency [\\#127](https://github.com/jazzband/django-silk/issues/127)\n- README.md missing in v0.6 [\\#125](https://github.com/jazzband/django-silk/issues/125)\n\n**Merged pull requests:**\n\n- use any readme [\\#128](https://github.com/jazzband/django-silk/pull/128) ([SzySteve](https://github.com/SzySteve))\n\n## [0.6.0](https://github.com/jazzband/django-silk/tree/0.6.0) (2016-07-12)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.7...0.6.0)\n\n**Closed issues:**\n\n- Local Dev of Silk. Template Error. [\\#121](https://github.com/jazzband/django-silk/issues/121)\n- Using django six rather then maintaining one [\\#112](https://github.com/jazzband/django-silk/issues/112)\n- PyPi release [\\#106](https://github.com/jazzband/django-silk/issues/106)\n\n**Merged pull requests:**\n\n- update pillow requirement so installation succeeds [\\#124](https://github.com/jazzband/django-silk/pull/124) ([SzySteve](https://github.com/SzySteve))\n- Give users the ability to export .prof binary files for every request [\\#123](https://github.com/jazzband/django-silk/pull/123) ([hanleyhansen](https://github.com/hanleyhansen))\n- Make Silk Great Again and Upgrade Dev Project [\\#122](https://github.com/jazzband/django-silk/pull/122) ([hanleyhansen](https://github.com/hanleyhansen))\n- make file paths clickable that don't start with a slash [\\#120](https://github.com/jazzband/django-silk/pull/120) ([chrono](https://github.com/chrono))\n- clear data store in chunks [\\#119](https://github.com/jazzband/django-silk/pull/119) ([chrono](https://github.com/chrono))\n- remove claim to support django 1.6 [\\#118](https://github.com/jazzband/django-silk/pull/118) ([chrono](https://github.com/chrono))\n- removed six six utils and tests [\\#117](https://github.com/jazzband/django-silk/pull/117) ([auvipy](https://github.com/auvipy))\n- used django utils six instead of sils utls six in some module [\\#116](https://github.com/jazzband/django-silk/pull/116) ([auvipy](https://github.com/auvipy))\n- Lint fix and code cleaning [\\#114](https://github.com/jazzband/django-silk/pull/114) ([auvipy](https://github.com/auvipy))\n- small updates [\\#113](https://github.com/jazzband/django-silk/pull/113) ([auvipy](https://github.com/auvipy))\n- Render function instead of render\\_to\\_response [\\#111](https://github.com/jazzband/django-silk/pull/111) ([auvipy](https://github.com/auvipy))\n- remove south migrations as not needed in less then 1.7 [\\#110](https://github.com/jazzband/django-silk/pull/110) ([auvipy](https://github.com/auvipy))\n- versions upgrade and obsolete versions removal  [\\#109](https://github.com/jazzband/django-silk/pull/109) ([auvipy](https://github.com/auvipy))\n- Supporting django\\<1.8 [\\#107](https://github.com/jazzband/django-silk/pull/107) ([wm3ndez](https://github.com/wm3ndez))\n\n## [0.5.7](https://github.com/jazzband/django-silk/tree/0.5.7) (2016-03-16)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.6...0.5.7)\n\n**Implemented enhancements:**\n\n- Unittesting [\\#87](https://github.com/jazzband/django-silk/issues/87)\n- Add Ascending/Descending sort order GET parameter in RequestsView [\\#84](https://github.com/jazzband/django-silk/issues/84)\n- Support binary response bodies [\\#1](https://github.com/jazzband/django-silk/issues/1)\n\n**Fixed bugs:**\n\n- TemplateSyntaxError at /silk/ Invalid filter: 'silk\\_date\\_time' [\\#82](https://github.com/jazzband/django-silk/issues/82)\n\n**Closed issues:**\n\n- base64 encoded responses break unit tests for Python3 [\\#98](https://github.com/jazzband/django-silk/issues/98)\n- Refactor Unit Tests to test new sort ordering structure. [\\#96](https://github.com/jazzband/django-silk/issues/96)\n- Running tests from the Travis config file fails because of difference in django-admin/manage.py [\\#91](https://github.com/jazzband/django-silk/issues/91)\n- Support for missing URL names in Django 1.8 and 1.9 [\\#89](https://github.com/jazzband/django-silk/issues/89)\n- UnicodeDecodeError in sql.py: leads to 500 internal error [\\#85](https://github.com/jazzband/django-silk/issues/85)\n\n**Merged pull requests:**\n\n- remove simplejson [\\#105](https://github.com/jazzband/django-silk/pull/105) ([digitaldavenyc](https://github.com/digitaldavenyc))\n- Fixing Depreciation, Saving and Performance Tweaks [\\#104](https://github.com/jazzband/django-silk/pull/104) ([Wrhector](https://github.com/Wrhector))\n- Django 1.9 compatibility for the csrf context processor [\\#100](https://github.com/jazzband/django-silk/pull/100) ([blag](https://github.com/blag))\n- URL patterns are just Python lists for Django 1.9+ [\\#99](https://github.com/jazzband/django-silk/pull/99) ([blag](https://github.com/blag))\n- Refactor Unit Tests to test new sort ordering structure. [\\#97](https://github.com/jazzband/django-silk/pull/97) ([trik](https://github.com/trik))\n- Add Ascending/Descending sort order GET parameter in RequestsView [\\#95](https://github.com/jazzband/django-silk/pull/95) ([trik](https://github.com/trik))\n- Response bodies are now stored b64 encoded \\(support for binary responses\\). [\\#94](https://github.com/jazzband/django-silk/pull/94) ([trik](https://github.com/trik))\n- Unittests for models [\\#93](https://github.com/jazzband/django-silk/pull/93) ([Alkalit](https://github.com/Alkalit))\n- Conditional migration tests [\\#92](https://github.com/jazzband/django-silk/pull/92) ([florisdenhengst](https://github.com/florisdenhengst))\n- Added support for missing URL names in Django 1.8-1.9. [\\#90](https://github.com/jazzband/django-silk/pull/90) ([florisdenhengst](https://github.com/florisdenhengst))\n- Avoid errors when doing migrate command [\\#86](https://github.com/jazzband/django-silk/pull/86) ([msaelices](https://github.com/msaelices))\n- Namespace templatetags so they don't clash with existing application templatetags [\\#81](https://github.com/jazzband/django-silk/pull/81) ([lmortimer](https://github.com/lmortimer))\n- Added the use of Lambdas in settings.py to the README. [\\#77](https://github.com/jazzband/django-silk/pull/77) ([bryson](https://github.com/bryson))\n\n## [0.5.6](https://github.com/jazzband/django-silk/tree/0.5.6) (2015-09-06)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.5...0.5.6)\n\n**Closed issues:**\n\n- Post-processing static assets fails due to missing font files [\\#51](https://github.com/jazzband/django-silk/issues/51)\n\n**Merged pull requests:**\n\n- Fixed report handling timing not included in meta-timing [\\#76](https://github.com/jazzband/django-silk/pull/76) ([rodcloutier](https://github.com/rodcloutier))\n- Support UUID in request headers [\\#75](https://github.com/jazzband/django-silk/pull/75) ([rodcloutier](https://github.com/rodcloutier))\n- test on latest django versions in travis [\\#72](https://github.com/jazzband/django-silk/pull/72) ([nikolas](https://github.com/nikolas))\n\n## [0.5.5](https://github.com/jazzband/django-silk/tree/0.5.5) (2015-06-04)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.3...0.5.5)\n\n**Fixed bugs:**\n\n- Pin six.py within silk to avoid version incompatibility. [\\#70](https://github.com/jazzband/django-silk/issues/70)\n\n**Closed issues:**\n\n- IntegrityError: NOT NULL constraint failed: silk\\_request.view\\_name [\\#71](https://github.com/jazzband/django-silk/issues/71)\n\n## [0.5.3](https://github.com/jazzband/django-silk/tree/0.5.3) (2015-06-04)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.2...0.5.3)\n\n**Closed issues:**\n\n- null value in column \"view\\_name\" violates not-null constraint [\\#66](https://github.com/jazzband/django-silk/issues/66)\n- Migrations do not work with Django 1.5.9 [\\#64](https://github.com/jazzband/django-silk/issues/64)\n\n**Merged pull requests:**\n\n- It's not random, is it? [\\#69](https://github.com/jazzband/django-silk/pull/69) ([peterbe](https://github.com/peterbe))\n- Fix issue when view\\_name was Null [\\#67](https://github.com/jazzband/django-silk/pull/67) ([bartoszhernas](https://github.com/bartoszhernas))\n\n## [0.5.2](https://github.com/jazzband/django-silk/tree/0.5.2) (2015-04-15)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5.1...0.5.2)\n\n**Merged pull requests:**\n\n- Update model\\_factory.py [\\#62](https://github.com/jazzband/django-silk/pull/62) ([karabijavad](https://github.com/karabijavad))\n\n## [0.5.1](https://github.com/jazzband/django-silk/tree/0.5.1) (2015-04-08)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.5...0.5.1)\n\n**Implemented enhancements:**\n\n- UTC time in templates [\\#49](https://github.com/jazzband/django-silk/issues/49)\n\n**Fixed bugs:**\n\n- AttributeError: This StreamingHttpResponse instance has no `content` attribute [\\#50](https://github.com/jazzband/django-silk/issues/50)\n\n**Closed issues:**\n\n- Django 1.8 support [\\#55](https://github.com/jazzband/django-silk/issues/55)\n- Should not have to manually add a logger for silk [\\#53](https://github.com/jazzband/django-silk/issues/53)\n\n## [0.5](https://github.com/jazzband/django-silk/tree/0.5) (2015-04-08)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/v0.4...0.5)\n\n**Implemented enhancements:**\n\n- 'thread.\\_local' object has no attribute 'temp\\_identifier' \\(should log a warning stating that this is likely a middleware issue\\) [\\#52](https://github.com/jazzband/django-silk/issues/52)\n- Check to see if process\\_request of SilkyMiddleware has been called, and issue warnings on middleware placement if not [\\#42](https://github.com/jazzband/django-silk/issues/42)\n- Django 1.7 support [\\#29](https://github.com/jazzband/django-silk/issues/29)\n\n**Fixed bugs:**\n\n- Django 1.5 support broken [\\#60](https://github.com/jazzband/django-silk/issues/60)\n\n**Closed issues:**\n\n- Tests broken [\\#61](https://github.com/jazzband/django-silk/issues/61)\n- Deploying silk site-wide [\\#56](https://github.com/jazzband/django-silk/issues/56)\n- Migration error [\\#54](https://github.com/jazzband/django-silk/issues/54)\n- Silky doesn't work when django.middleware.gzip.GZipMiddleware is enabled [\\#43](https://github.com/jazzband/django-silk/issues/43)\n- static files not found problem [\\#41](https://github.com/jazzband/django-silk/issues/41)\n- No handlers could be found for logger \"silk\" [\\#35](https://github.com/jazzband/django-silk/issues/35)\n\n**Merged pull requests:**\n\n- Add configuration option for custom intercept logic. [\\#59](https://github.com/jazzband/django-silk/pull/59) ([kkaehler](https://github.com/kkaehler))\n- commit\\_on\\_success -\\> atomic, for 1.8, as commit\\_on\\_success was removed [\\#58](https://github.com/jazzband/django-silk/pull/58) ([karabijavad](https://github.com/karabijavad))\n- Update README.md [\\#57](https://github.com/jazzband/django-silk/pull/57) ([karabijavad](https://github.com/karabijavad))\n- Add a Gitter chat badge to README.md [\\#48](https://github.com/jazzband/django-silk/pull/48) ([gitter-badger](https://github.com/gitter-badger))\n- Tox integration added [\\#47](https://github.com/jazzband/django-silk/pull/47) ([brmc](https://github.com/brmc))\n- Edited ReadMe.md to avoid UnicodeDevodeError [\\#44](https://github.com/jazzband/django-silk/pull/44) ([brmc](https://github.com/brmc))\n- Added utf8 in curl query parameters [\\#39](https://github.com/jazzband/django-silk/pull/39) ([ilvar](https://github.com/ilvar))\n- Revert \"Fix errors in manifest file\" [\\#37](https://github.com/jazzband/django-silk/pull/37) ([mtford90](https://github.com/mtford90))\n- Fix IntegrityError caused by Request being saved 'None' raw\\_body [\\#36](https://github.com/jazzband/django-silk/pull/36) ([JannKleen](https://github.com/JannKleen))\n- Fix errors in manifest file [\\#34](https://github.com/jazzband/django-silk/pull/34) ([joaofrancese](https://github.com/joaofrancese))\n\n## [v0.4](https://github.com/jazzband/django-silk/tree/v0.4) (2014-08-17)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.3.2...v0.4)\n\n**Closed issues:**\n\n- Live demo link is broken [\\#30](https://github.com/jazzband/django-silk/issues/30)\n\n**Merged pull requests:**\n\n- Ability to not log every request, optimizations, db\\_index, and a management command [\\#31](https://github.com/jazzband/django-silk/pull/31) ([JoshData](https://github.com/JoshData))\n\n## [0.3.2](https://github.com/jazzband/django-silk/tree/0.3.2) (2014-07-22)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.3.1...0.3.2)\n\n**Fixed bugs:**\n\n- No data profiled [\\#25](https://github.com/jazzband/django-silk/issues/25)\n- Incorrect interface for execute\\_sql [\\#24](https://github.com/jazzband/django-silk/issues/24)\n\n**Closed issues:**\n\n- Don't pin versions in setup.py [\\#23](https://github.com/jazzband/django-silk/issues/23)\n- Ability to clear old runs [\\#14](https://github.com/jazzband/django-silk/issues/14)\n\n**Merged pull requests:**\n\n- Added tests for \\_should\\_intercept and fixed bug with requests not being ... [\\#28](https://github.com/jazzband/django-silk/pull/28) ([mackeian](https://github.com/mackeian))\n- Added missing requirement for running tests: mock [\\#27](https://github.com/jazzband/django-silk/pull/27) ([mackeian](https://github.com/mackeian))\n\n## [0.3.1](https://github.com/jazzband/django-silk/tree/0.3.1) (2014-07-05)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/0.3...0.3.1)\n\n**Implemented enhancements:**\n\n- Conform to charset flag in Content-Type header of request/response [\\#20](https://github.com/jazzband/django-silk/issues/20)\n- Enhance filtering  [\\#17](https://github.com/jazzband/django-silk/issues/17)\n\n**Fixed bugs:**\n\n- Conform to charset flag in Content-Type header of request/response [\\#20](https://github.com/jazzband/django-silk/issues/20)\n- HttpRequest body has UTF-8 Character  causes UnicodeDecodeError ? [\\#19](https://github.com/jazzband/django-silk/issues/19)\n\n**Closed issues:**\n\n- Problems with `six.moves.urllib` [\\#22](https://github.com/jazzband/django-silk/issues/22)\n- Incorrect string value: '\\xCE\\xBB, \\xCF\\x86...' for column 'raw\\_body' at row 1 [\\#21](https://github.com/jazzband/django-silk/issues/21)\n- Silk fails on binary staticfiles content [\\#16](https://github.com/jazzband/django-silk/issues/16)\n- Silk's static assets are served from the wrong path [\\#11](https://github.com/jazzband/django-silk/issues/11)\n\n## [0.3](https://github.com/jazzband/django-silk/tree/0.3) (2014-06-17)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/V0.2.2...0.3)\n\n## [V0.2.2](https://github.com/jazzband/django-silk/tree/V0.2.2) (2014-06-13)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/v0.2.2...V0.2.2)\n\n## [v0.2.2](https://github.com/jazzband/django-silk/tree/v0.2.2) (2014-06-13)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/v0.2...v0.2.2)\n\n**Closed issues:**\n\n- request: timestamp on list of requests [\\#15](https://github.com/jazzband/django-silk/issues/15)\n- AttributeError: 'thread.\\_local' object has no attribute 'temp\\_identifier' [\\#12](https://github.com/jazzband/django-silk/issues/12)\n\n## [v0.2](https://github.com/jazzband/django-silk/tree/v0.2) (2014-06-12)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/v0.1.1...v0.2)\n\n**Fixed bugs:**\n\n- Stacktrace inspector allows users to see any file on the filesystem [\\#10](https://github.com/jazzband/django-silk/issues/10)\n\n## [v0.1.1](https://github.com/jazzband/django-silk/tree/v0.1.1) (2014-06-07)\n[Full Changelog](https://github.com/jazzband/django-silk/compare/v0.1...v0.1.1)\n\n**Closed issues:**\n\n- Pip install direct from repo fails [\\#9](https://github.com/jazzband/django-silk/issues/9)\n- urls.py uses incorrect regex expressions [\\#7](https://github.com/jazzband/django-silk/issues/7)\n- requirements.txt must specify exact versions or version upper bounds [\\#6](https://github.com/jazzband/django-silk/issues/6)\n- Switch to PyPI for managing releases [\\#4](https://github.com/jazzband/django-silk/issues/4)\n\n**Merged pull requests:**\n\n- Ensure README file is properly closed by setup.py [\\#8](https://github.com/jazzband/django-silk/pull/8) ([svisser](https://github.com/svisser))\n- updated readme [\\#5](https://github.com/jazzband/django-silk/pull/5) ([rosscdh](https://github.com/rosscdh))\n\n## [v0.1](https://github.com/jazzband/django-silk/tree/v0.1) (2014-06-06)\n\n\n\\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*⏎\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Code of Conduct\n\nAs contributors and maintainers of the Jazzband projects, and in the interest of\nfostering an open and welcoming community, we pledge to respect all people who\ncontribute through reporting issues, posting feature requests, updating documentation,\nsubmitting pull requests or patches, and other activities.\n\nWe are committed to making participation in the Jazzband a harassment-free experience\nfor everyone, regardless of the level of experience, gender, gender identity and\nexpression, sexual orientation, disability, personal appearance, body size, race,\nethnicity, age, religion, or nationality.\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery\n- Personal attacks\n- Trolling or insulting/derogatory comments\n- Public or private harassment\n- Publishing other's private information, such as physical or electronic addresses,\n  without explicit permission\n- Other unethical or unprofessional conduct\n\nThe Jazzband roadies have the right and responsibility to remove, edit, or reject\ncomments, commits, code, wiki edits, issues, and other contributions that are not\naligned to this Code of Conduct, or to ban temporarily or permanently any contributor\nfor other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\nBy adopting this Code of Conduct, the roadies commit themselves to fairly and\nconsistently applying these principles to every aspect of managing the jazzband\nprojects. Roadies who do not follow or enforce the Code of Conduct may be permanently\nremoved from the Jazzband roadies.\n\nThis code of conduct applies both within project spaces and in public spaces when an\nindividual is representing the project or its community.\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by\ncontacting the roadies at `roadies@jazzband.co`. All complaints will be reviewed and\ninvestigated and will result in a response that is deemed necessary and appropriate to\nthe circumstances. Roadies are obligated to maintain confidentiality with regard to the\nreporter of an incident.\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version\n1.3.0, available at [https://contributor-covenant.org/version/1/3/0/][version]\n\n[homepage]: https://contributor-covenant.org\n[version]: https://contributor-covenant.org/version/1/3/0/\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "[![Jazzband](https://jazzband.co/static/img/jazzband.svg)](https://jazzband.co/)\n\nThis is a [Jazzband](https://jazzband.co/) project. By contributing you agree to abide by the [Contributor Code of Conduct](https://jazzband.co/about/conduct) and follow the [guidelines](https://jazzband.co/about/guidelines).\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Michael Ford\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include LICENSE\ninclude README*\nrecursive-include silk/templates *\nrecursive-include silk/static *\nrecursive-include silk/code_generation *.py\nrecursive-include silk/profiling *.py\nrecursive-include silk/utils *.py\nrecursive-include silk/views *.py\nrecursive-include silk *.py\n"
  },
  {
    "path": "README.md",
    "content": "# Silk\n\n[![GitHub Actions](https://github.com/jazzband/django-silk/workflows/Test/badge.svg)](https://github.com/jazzband/django-silk/actions)\n[![GitHub Actions](https://codecov.io/gh/jazzband/django-silk/branch/master/graph/badge.svg)](https://codecov.io/gh/jazzband/django-silk)\n[![PyPI Download](https://img.shields.io/pypi/v/django-silk.svg)](https://pypi.python.org/pypi/django-silk)\n[![PyPI Python Versions](https://img.shields.io/pypi/pyversions/django-silk.svg)](https://pypi.python.org/pypi/django-silk)\n[![Supported Django versions](https://img.shields.io/pypi/djversions/django-silk.svg)](https://pypi.python.org/pypi/django-silk)\n[![Jazzband](https://jazzband.co/static/img/badge.svg)](https://jazzband.co/)\n\nSilk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before presenting them in a user interface for further inspection:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/1.png\" width=\"720px\"/>\n\n## Contents\n\n* [Requirements](#requirements)\n* [Installation](#installation)\n* [Features](#features)\n* [Configuration](#configuration)\n  * [Authentication/Authorisation](#authenticationauthorisation)\n  * [Request/Response bodies](#requestresponse-bodies)\n  * [Meta-Profiling](#meta-profiling)\n  * [Recording a fraction of requests](#recording-a-fraction-of-requests)\n  * [Limiting request/response data](#limiting-requestresponse-data)\n  * [Clearing logged data](#clearing-logged-data)\n* [Contributing](#contributing)\n  * [Development Environment](#development-environment)\n\n## Requirements\n\nSilk has been tested with:\n\n* Django: 4.2, 5.1, 5.2, 6.0\n* Python: 3.10, 3.11, 3.12, 3.13, 3.14\n\n## Installation\n\nVia pip into a `virtualenv`:\n\n```bash\npip install django-silk\n```\n\nTo including optional formatting of python snippets:\n\n```bash\npip install django-silk[formatting]\n```\n\nIn `settings.py` add the following:\n\n```python\nMIDDLEWARE = [\n    ...\n    'silk.middleware.SilkyMiddleware',\n    ...\n]\n\nTEMPLATES = [{\n    ...\n    'OPTIONS': {\n        'context_processors': [\n            ...\n            'django.template.context_processors.request',\n        ],\n    },\n}]\n\n\nINSTALLED_APPS = (\n    ...\n    'silk'\n)\n```\n\n**Note:** The order of middleware is sensitive. If any middleware placed before `silk.middleware.SilkyMiddleware` returns a response without invoking its `get_response`, the `SilkyMiddleware` won’t run. To avoid this, ensure that middleware preceding `SilkyMiddleware` does not bypass or return a response without calling its `get_response`. For further details, check out the [Django documentation](https://docs.djangoproject.com/en/dev/topics/http/middleware/#middleware-order-and-layering).\n\n**Note:** If you are using `django.middleware.gzip.GZipMiddleware`, place that **before** `silk.middleware.SilkyMiddleware`, otherwise you will get an encoding error.\n\nIf you want to use custom middleware, for example you developed the subclass of `silk.middleware.SilkyMiddleware`, so you can use this combination of settings:\n\n```python\n# Specify the path where is the custom middleware placed\nSILKY_MIDDLEWARE_CLASS = 'path.to.your.middleware.MyCustomSilkyMiddleware'\n\n# Use this variable in list of middleware\nMIDDLEWARE = [\n    ...\n    SILKY_MIDDLEWARE_CLASS,\n    ...\n]\n```\n\nTo enable access to the user interface add the following to your `urls.py`:\n\n```python\nurlpatterns += [path('silk/', include('silk.urls', namespace='silk'))]\n```\n\nbefore running migrate:\n\n```bash\npython manage.py migrate\n\npython manage.py collectstatic\n```\n\n\nSilk will automatically begin interception of requests and you can proceed to add profiling\nif required. The UI can be reached at `/silk/`\n\n### Alternative Installation\n\nVia [github tags](https://github.com/jazzband/django-silk/releases):\n\n```bash\npip install git+https://github.com/jazzband/django-silk.git@<version>#egg=django_silk\n```\n\nYou can install from master using the following, but please be aware that the version in master\nmay not be working for all versions specified in [requirements](#requirements)\n\n```bash\npip install -e git+https://github.com/jazzband/django-silk.git#egg=django_silk\n```\n\n## Features\n\nSilk primarily consists of:\n\n* Middleware for intercepting Requests/Responses\n* A wrapper around SQL execution for profiling of database queries\n* A context manager/decorator for profiling blocks of code and functions either manually or dynamically.\n* A user interface for inspection and visualisation of the above.\n\n### Request Inspection\n\nThe Silk middleware intercepts and stores requests and responses in the configured database.\nThese requests can then be filtered and inspecting using Silk's UI through the request overview:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/1.png\" width=\"720px\"/>\n\nIt records things like:\n\n* Time taken\n* Num. queries\n* Time spent on queries\n* Request/Response headers\n* Request/Response bodies\n\nand so on.\n\nFurther details on each request are also available by clicking the relevant request:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/2.png\" width=\"720px\"/>\n\n### SQL Inspection\n\nSilk also intercepts SQL queries that are generated by each request. We can get a summary on things like\nthe tables involved, number of joins and execution time (the table can be sorted by clicking on a column header):\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/3.png\" width=\"720px\"/>\n\nBefore diving into the stack trace to figure out where this request is coming from:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/5.png\" width=\"720px\"/>\n\n### Profiling\n\nTurn on the SILKY_PYTHON_PROFILER setting to use Python's built-in `cProfile` profiler. Each request will be separately profiled and the profiler's output will be available on the request's Profiling page in the Silk UI.  Note that as of Python 3.12, `cProfile` cannot run concurrently so [django-silk under Python 3.12 and later will not profile if another profile is running](https://github.com/jazzband/django-silk/pull/692) (even its own profiler in another thread).\n\n```python\nSILKY_PYTHON_PROFILER = True\n```\n\nIf you would like to also generate a binary `.prof` file set the following:\n\n```python\nSILKY_PYTHON_PROFILER_BINARY = True\n```\n\nWhen enabled, a graph visualisation generated using [gprof2dot](https://github.com/jrfonseca/gprof2dot) and [viz.js](https://github.com/almende/vis) is shown in the profile detail page:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/10.png\" width=\"720px\"/>\n\n\nA custom storage class can be used for the saved generated binary `.prof` files:\n\n```python\n# For Django >= 4.2 and Django-Silk >= 5.1.0:\n# See https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-STORAGES\nSTORAGES = {\n    'SILKY_STORAGE': {\n        'BACKEND': 'path.to.StorageClass',\n    },\n    # ...\n}\n\n# For Django < 4.2 or Django-Silk < 5.1.0\nSILKY_STORAGE_CLASS = 'path.to.StorageClass'\n```\n\nThe default storage class is `silk.storage.ProfilerResultStorage`, and when using that you can specify a path of your choosing. You must ensure the specified directory exists.\n\n```python\n# If this is not set, MEDIA_ROOT will be used.\nSILKY_PYTHON_PROFILER_RESULT_PATH = '/path/to/profiles/'\n```\n\nA download button will become available with a binary `.prof` file for every request. This file can be used for further analysis using [snakeviz](https://github.com/jiffyclub/snakeviz) or other cProfile tools\n\nTo retrieve which endpoint generates a specific profile file it is possible to add a stub of the request path in the file name with the following:\n\n```python\nSILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME = True\n```\n\nSilk can also be used to profile specific blocks of code/functions. It provides a decorator and a context\nmanager for this purpose.\n\nFor example:\n\n```python\nfrom silk.profiling.profiler import silk_profile\n\n\n@silk_profile(name='View Blog Post')\ndef post(request, post_id):\n    p = Post.objects.get(pk=post_id)\n    return render(request, 'post.html', {\n        'post': p\n    })\n```\n\nWhenever a blog post is viewed we get an entry within the Silk UI:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/7.png\" width=\"720px\"/>\n\nSilk profiling not only provides execution time, but also collects SQL queries executed within the block in the same fashion as with requests:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/8.png\" width=\"720px\"/>\n\n#### Decorator\n\nThe silk decorator can be applied to both functions and methods\n\n```python\nfrom silk.profiling.profiler import silk_profile\n\n\n# Profile a view function\n@silk_profile(name='View Blog Post')\ndef post(request, post_id):\n    p = Post.objects.get(pk=post_id)\n    return render(request, 'post.html', {\n        'post': p\n    })\n\n\n# Profile a method in a view class\nclass MyView(View):\n    @silk_profile(name='View Blog Post')\n    def get(self, request):\n        p = Post.objects.get(pk=post_id)\n        return render(request, 'post.html', {\n            'post': p\n        })\n```\n\n#### Context Manager\n\nUsing a context manager means we can add additional context to the name which can be useful for\nnarrowing down slowness to particular database records.\n\n```python\ndef post(request, post_id):\n    with silk_profile(name='View Blog Post #%d' % self.pk):\n        p = Post.objects.get(pk=post_id)\n        return render(request, 'post.html', {\n            'post': p\n        })\n```\n\n#### Dynamic Profiling\n\nOne of Silk's more interesting features is dynamic profiling. If for example we wanted to profile a function in a dependency to which we only have read-only access (e.g. system python libraries owned by root) we can add the following to `settings.py` to apply a decorator at runtime:\n\n```python\nSILKY_DYNAMIC_PROFILING = [{\n    'module': 'path.to.module',\n    'function': 'MyClass.bar'\n}]\n```\n\nwhich is roughly equivalent to:\n\n```python\nclass MyClass:\n    @silk_profile()\n    def bar(self):\n        pass\n```\n\nThe below summarizes the possibilities:\n\n```python\n\n\"\"\"\nDynamic function decorator\n\"\"\"\n\nSILKY_DYNAMIC_PROFILING = [{\n    'module': 'path.to.module',\n    'function': 'foo'\n}]\n\n# ... is roughly equivalent to\n@silk_profile()\ndef foo():\n    pass\n\n\"\"\"\nDynamic method decorator\n\"\"\"\n\nSILKY_DYNAMIC_PROFILING = [{\n    'module': 'path.to.module',\n    'function': 'MyClass.bar'\n}]\n\n# ... is roughly equivalent to\nclass MyClass:\n\n    @silk_profile()\n    def bar(self):\n        pass\n\n\"\"\"\nDynamic code block profiling\n\"\"\"\n\nSILKY_DYNAMIC_PROFILING = [{\n    'module': 'path.to.module',\n    'function': 'foo',\n    # Line numbers are relative to the function as opposed to the file in which it resides\n    'start_line': 1,\n    'end_line': 2,\n    'name': 'Slow Foo'\n}]\n\n# ... is roughly equivalent to\ndef foo():\n    with silk_profile(name='Slow Foo'):\n        print (1)\n        print (2)\n    print(3)\n    print(4)\n```\n\nNote that dynamic profiling behaves in a similar fashion to that of the python mock framework in that\nwe modify the function in-place e.g:\n\n```python\n\"\"\" my.module \"\"\"\nfrom another.module import foo\n\n# ...do some stuff\nfoo()\n# ...do some other stuff\n```\n\n,we would profile `foo` by dynamically decorating `my.module.foo` as opposed to `another.module.foo`:\n\n```python\nSILKY_DYNAMIC_PROFILING = [{\n    'module': 'my.module',\n    'function': 'foo'\n}]\n```\n\nIf we were to apply the dynamic profile to the functions source module `another.module.foo` **after**\nit has already been imported, no profiling would be triggered.\n\n\n#### Custom Logic for Profiling\n\nSometimes you may want to dynamically control when the profiler runs. You can write your own logic for when to enable the profiler. To do this add the following to your `settings.py`:\n\nThis setting is mutually exclusive with SILKY_PYTHON_PROFILER and will be used over it if present. It will work with SILKY_DYNAMIC_PROFILING.\n\n```python\ndef my_custom_logic(request):\n    return 'profile_requests' in request.session\n\nSILKY_PYTHON_PROFILER_FUNC = my_custom_logic # profile only session has recording enabled.\n```\n\nYou can also use a `lambda`.\n\n```python\n# profile only session has recording enabled.\nSILKY_PYTHON_PROFILER_FUNC = lambda request: 'profile_requests' in request.session\n```\n\n### Code Generation\n\nSilk currently generates two bits of code per request:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/9.png\" width=\"720px\"/>\n\nBoth are intended for use in replaying the request. The curl command can be used to replay via command-line and the python code can be used within a Django unit test or simply as a standalone script.\n\n## Configuration\n\n### Authentication/Authorisation\n\nBy default anybody can access the Silk user interface by heading to `/silk/`. To enable your Django\nauth backend place the following in `settings.py`:\n\n```python\nSILKY_AUTHENTICATION = True  # User must login\nSILKY_AUTHORISATION = True  # User must have permissions\n```\n\nIf `SILKY_AUTHORISATION` is `True`, by default Silk will only authorise users with `is_staff` attribute set to `True`.\n\nYou can customise this using the following in `settings.py`:\n\n```python\ndef my_custom_perms(user):\n    return user.is_allowed_to_use_silk\n\nSILKY_PERMISSIONS = my_custom_perms\n```\n\nYou can also use a `lambda`.\n\n```python\nSILKY_PERMISSIONS = lambda user: user.is_superuser\n```\n\n### Request/Response bodies\n\nBy default, Silk will save down the request and response bodies for each request for future viewing\nno matter how large. If Silk is used in production under heavy volume with large bodies this can have\na huge impact on space/time performance. This behaviour can be configured with the following options:\n\n```python\nSILKY_MAX_REQUEST_BODY_SIZE = -1  # Silk takes anything <0 as no limit\nSILKY_MAX_RESPONSE_BODY_SIZE = 1024  # If response body>1024 bytes, ignore\n```\n\n### Meta-Profiling\n\nSometimes it is useful to be able to see what effect Silk is having on the request/response time. To do this add\nthe following to your `settings.py`:\n\n```python\nSILKY_META = True\n```\n\nSilk will then record how long it takes to save everything down to the database at the end of each\nrequest:\n\n<img src=\"https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/meta.png\"/>\n\nNote that in the above screenshot, this means that the request took 29ms (22ms from Django and 7ms from Silk)\n\n### Recording a Fraction of Requests\n\nOn high-load sites it may be helpful to only record a fraction of the requests that are made. To do this add the following to your `settings.py`:\n\nNote: This setting is mutually exclusive with SILKY_INTERCEPT_FUNC.\n\n```python\nSILKY_INTERCEPT_PERCENT = 50 # log only 50% of requests\n```\n\n#### Custom Logic for Recording Requests\n\nOn high-load sites it may also be helpful to write your own logic for when to intercept requests. To do this add the following to your `settings.py`:\n\nNote: This setting is mutually exclusive with SILKY_INTERCEPT_PERCENT.\n\n```python\ndef my_custom_logic(request):\n    return 'record_requests' in request.session\n\nSILKY_INTERCEPT_FUNC = my_custom_logic # log only session has recording enabled.\n```\n\nYou can also use a `lambda`.\n\n```python\n# log only session has recording enabled.\nSILKY_INTERCEPT_FUNC = lambda request: 'record_requests' in request.session\n```\n\n### Limiting request/response data\n\nTo make sure silky garbage collects old request/response data, a config var can be set to limit the number of request/response rows it stores.\n\n```python\nSILKY_MAX_RECORDED_REQUESTS = 10**4\n```\n\nThe garbage collection is only run on a percentage of requests to reduce overhead.  It can be adjusted with this config:\n\n```python\nSILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 10\n```\n\nIn case you want decouple silk's garbage collection from your webserver's request processing, set SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT=0 and trigger it manually, e.g. in a cron job:\n\n```bash\npython manage.py silk_request_garbage_collect\n```\n\n### Enable query analysis\n\nTo enable query analysis when supported by the dbms a config var can be set in order to execute queries with the analyze features.\n\n```python\nSILKY_ANALYZE_QUERIES = True\n```\n\n**Warning:** This setting may cause the database to execute the same query twice, depending on the backend. For instance, `EXPLAIN ANALYZE` in Postgres will [actually execute the query](https://www.postgresql.org/docs/current/sql-explain.html), which may result in unexpected data updates. Set this to True with caution.\n\nTo pass additional params for profiling when supported by the dbms (e.g. VERBOSE, FORMAT JSON), you can do this in the following manner.\n\n```python\nSILKY_EXPLAIN_FLAGS = {'format':'JSON', 'costs': True}\n```\n\n\n### Masking sensitive data on request body\n\nBy default, Silk is filtering values that contains the following keys (they are case insensitive)\n\n```python\nSILKY_SENSITIVE_KEYS = {'username', 'api', 'token', 'key', 'secret', 'password', 'signature'}\n```\n\nBut sometimes, you might want to have your own sensitive keywords, then above configuration can be modified\n\n```python\nSILKY_SENSITIVE_KEYS = {'custom-password'}\n```\n\n\n### Clearing logged data\n\nA management command will wipe out all logged data:\n\n```bash\npython manage.py silk_clear_request_log\n```\n\n## Contributing\n\n[![Jazzband](https://jazzband.co/static/img/jazzband.svg)](https://jazzband.co/)\n\nThis is a [Jazzband](https://jazzband.co/) project. By contributing you agree to abide by the [Contributor Code of Conduct](https://jazzband.co/about/conduct) and follow the [guidelines](https://jazzband.co/about/guidelines).\n\n### Development Environment\n\nSilk features a project named `project` that can be used for `silk` development. It has the `silk` code symlinked so\nyou can work on the sample `project` and on the `silk` package at the same time.\n\nIn order to setup local development you should first install all the dependencies for the test `project`. From the\nroot of the `project` directory:\n\n```bash\npip install -r requirements.txt\n```\n\nYou will also need to install `silk`'s dependencies. From the root of the git repository:\n\n```bash\npip install -e .\n```\n\nAt this point your virtual environment should have everything it needs to run both the sample `project` and\n`silk` successfully.\n\nBefore running, you must set the `DB_ENGINE` and `DB_NAME` environment variables:\n\n```bash\nexport DB_ENGINE=sqlite3\nexport DB_NAME=db.sqlite3\n```\n\nFor other combinations, check [`tox.ini`](./tox.ini).\n\nNow from the root of the sample `project` apply the migrations\n\n```bash\npython manage.py migrate\n```\n\nNow from the root of the sample `project` directory start the django server\n\n```bash\npython manage.py runserver\n```\n\n#### Running the tests\n\n```bash\ncd project\npython manage.py test\n```\n\nHappy profiling!\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = _build\n\n# User-friendly check for sphinx-build\nifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)\n$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)\nendif\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  latexpdfja to make LaTeX files and run them through platex/dvipdfmx\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make Texinfo files\"\n\t@echo \"  info       to make Texinfo files and run them through makeinfo\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  xml        to make Docutils-native XML files\"\n\t@echo \"  pseudoxml  to make pseudoxml-XML files for display purposes\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\nclean:\n\trm -rf $(BUILDDIR)/*\n\nhtml:\n\t$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/silk.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/silk.qhc\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/silk\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/silk\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\nlatexpdfja:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through platex and dvipdfmx...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished. The Texinfo files are in $(BUILDDIR)/texinfo.\"\n\t@echo \"Run \\`make' in that directory to run these through makeinfo\" \\\n\t      \"(use \\`make info' here to do that automatically).\"\n\ninfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo \"Running Texinfo files through makeinfo...\"\n\tmake -C $(BUILDDIR)/texinfo info\n\t@echo \"makeinfo finished; the Info files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n\nxml:\n\t$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml\n\t@echo\n\t@echo \"Build finished. The XML files are in $(BUILDDIR)/xml.\"\n\npseudoxml:\n\t$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml\n\t@echo\n\t@echo \"Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml.\"\n"
  },
  {
    "path": "docs/conf.py",
    "content": "#\n# silk documentation build configuration file, created by\n# sphinx-quickstart on Sun Jun 22 13:51:12 2014.\n#\n# This file is execfile()d with the current directory set to its\n# containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nimport pkg_resources\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n\n# -- General configuration ------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = []\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix of source filenames.\nsource_suffix = '.rst'\n\n# The encoding of source files.\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# General information about the project.\nproject = 'silk'\ncopyright = '2014, Michael Ford'\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The full version, including alpha/beta/rc tags.\nrelease = pkg_resources.get_distribution(\"django-silk\").version\n# The short X.Y version.\nversion = '.'.join(release.split('.')[:2])\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n# language = None\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n# today = ''\n# Else, today_fmt is used as the format for a strftime call.\n# today_fmt = '%B %d, %Y'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = ['_build']\n\n# The reST default role (used for this markup: `text`) to use for all\n# documents.\n# default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\n# add_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\n# add_module_names = True\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\n# show_authors = False\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\n# A list of ignored prefixes for module index sorting.\n# modindex_common_prefix = []\n\n# If true, keep warnings as \"system message\" paragraphs in the built documents.\n# keep_warnings = False\n\n\n# -- Options for HTML output ----------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = 'default'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n# html_theme_options = {}\n\n# Add any paths that contain custom themes here, relative to this directory.\n# html_theme_path = []\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n# html_title = None\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n# html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\n# html_logo = None\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\n# html_favicon = None\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n\n# Add any extra paths that contain custom files (such as robots.txt or\n# .htaccess) here, relative to this directory. These files are copied\n# directly to the root of the documentation.\n# html_extra_path = []\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\n# html_last_updated_fmt = '%b %d, %Y'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\n# html_use_smartypants = True\n\n# Custom sidebar templates, maps document names to template names.\n# html_sidebars = {}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\n# html_additional_pages = {}\n\n# If false, no module index is generated.\n# html_domain_indices = True\n\n# If false, no index is generated.\n# html_use_index = True\n\n# If true, the index is split into individual pages for each letter.\n# html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n# html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n# html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n# html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n# html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n# html_file_suffix = None\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'silkdoc'\n\n\n# -- Options for LaTeX output ---------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    # 'papersize': 'letterpaper',\n\n    # The font size ('10pt', '11pt' or '12pt').\n    # 'pointsize': '10pt',\n\n    # Additional stuff for the LaTeX preamble.\n    # 'preamble': '',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    ('index', 'silk.tex', 'silk Documentation',\n     'Michael Ford', 'manual'),\n]\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n# latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n# latex_use_parts = False\n\n# If true, show page references after internal links.\n# latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n# latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n# latex_appendices = []\n\n# If false, no module index is generated.\n# latex_domain_indices = True\n\n\n# -- Options for manual page output ---------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    ('index', 'silk', 'silk Documentation',\n     ['Michael Ford'], 1),\n    ('profiling', 'Profiling', 'Profiling',\n     ['Michael Ford'], 2),\n]\n\n# If true, show URL addresses after external links.\n# man_show_urls = False\n\n\n# -- Options for Texinfo output -------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    ('index', 'silk', 'silk Documentation',\n     'Michael Ford', 'silk', 'One line description of project.',\n     'Miscellaneous'),\n]\n\n# Documents to append as an appendix to all manuals.\n# texinfo_appendices = []\n\n# If false, no module index is generated.\n# texinfo_domain_indices = True\n\n# How to display URL addresses: 'footnote', 'no', or 'inline'.\n# texinfo_show_urls = 'footnote'\n\n# If true, do not generate a @detailmenu in the \"Top\" node's menu.\n# texinfo_no_detailmenu = False\n"
  },
  {
    "path": "docs/configuration.rst",
    "content": "Configuration\n=============\n\nAuthentication and Authorisation\n--------------------------------\n\nBy default anybody can access the Silk user interface by heading to `/silk/`. To enable your Django \nauth backend place the following in `settings.py`:\n\n\n.. code-block:: python\n\n\tSILKY_AUTHENTICATION = True  # User must login\n\tSILKY_AUTHORISATION = True  # User must have permissions\n\nIf ``SILKY_AUTHORISATION`` is ``True``, by default Silk will only authorise users with ``is_staff`` attribute set to ``True``.\n\nYou can customise this using the following in ``settings.py``:\n\n.. code-block:: python\n\n\tdef my_custom_perms(user):\n\t    return user.is_allowed_to_use_silk\n\n\tSILKY_PERMISSIONS = my_custom_perms\n\n\nRequest and Response bodies\n---------------------------\n\nBy default, Silk will save down the request and response bodies for each request for future viewing\nno matter how large. If Silk is used in production under heavy volume with large bodies this can have\na huge impact on space/time performance. This behaviour can be configured with following options:\n\n.. code-block:: python\n\n\tSILKY_MAX_REQUEST_BODY_SIZE = -1  # Silk takes anything <0 as no limit\n\tSILKY_MAX_RESPONSE_BODY_SIZE = 1024  # If response body>1024kb, ignore\n\n\nMeta-Profiling\n--------------\n\nSometimes its useful to be able to see what effect Silk is having on the request/response time. To do this add\nthe following to your `settings.py`:\n\n.. code-block:: python\n\n\tSILKY_META = True\n\nSilk will then record how long it takes to save everything down to the database at the end of each request:\n\n.. image:: /images/meta.png\n\nNote that in the above screenshot, this means that the request took 29ms (22ms from Django and 7ms from Silk)\n\nLimiting request and response data\n----------------------------------\n\nTo make sure silky garbage collects old request/response data, a config var can be set to limit the number of request/response rows it stores.\n\n.. code-block:: python\n\n    SILKY_MAX_RECORDED_REQUESTS = 10**4\n\nThe garbage collection is only run on a percentage of requests to reduce overhead.  It can be adjusted with this config:\n\n.. code-block:: python\n\n    SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 10\n"
  },
  {
    "path": "docs/index.rst",
    "content": ".. silk documentation master file, created by\n   sphinx-quickstart on Sun Jun 22 13:51:12 2014.\n   You can adapt this file completely to your liking, but it should at least\n   contain the root `toctree` directive.\n\nSilk\n================================\n\n.. toctree::\n   :maxdepth: 2\n\n   quickstart\n   profiling\n   configuration\n   troubleshooting\n\nSilk is a live profiling and inspection tool for the Django framework. Silk intercepts and stores HTTP requests and database queries before presenting them in a user interface for further inspection:\n\n.. image:: /images/1.png\n\nA **live demo** is available `here`_.\n\n.. _here: http://mtford.co.uk/silk/\n\nFeatures\n--------\n\n- Inspect HTTP requests and responses\n\n  - Query parameters\n\n  - Headers\n\n  - Bodies\n\n  - Execution Time\n\n  - Database Queries\n\n    - Number\n\n    - Time taken\n\n- SQL query inspection\n\n- Profiling of arbitrary code blocks via a Python context manager and decorator\n\n  - Execution Time\n\n  - Database Queries\n\n  - Can also be injected dynamically at runtime e.g. if read-only dependency.\n\n- Authentication/Authorisation for production use\n\n\nRequirements\n------------\n\n* Django: 4.2, 5.1, 5.2, 6.0\n* Python: 3.10, 3.11, 3.12, 3.13, 3.14\n"
  },
  {
    "path": "docs/profiling.rst",
    "content": "Profiling\n=========\n\nSilk can be used to profile arbitrary blocks of code and provides ``silk_profile``, a Python decorator and a context manager for this purpose. Profiles will then appear in the 'Profiling' tab within Silk's user interface.\n\nDecorator\n---------\n\nThe decorator can be applied to both functions and methods:\n\n.. code-block:: python\n\n\t@silk_profile(name='View Blog Post')\n\tdef post(request, post_id):\n\t    p = Post.objects.get(pk=post_id)\n\t    return render(request, 'post.html', {\n\t        'post': p\n\t    })\n\n\n.. code-block:: python\n\n\tclass MyView(View):    \n\t\t@silk_profile(name='View Blog Post')\n\t\tdef get(self, request):\n\t\t\tp = Post.objects.get(pk=post_id)\n\t    \treturn render(request, 'post.html', {\n\t        \t'post': p\n\t    \t})\n\nContext Manager\n---------------\n\n``silk_profile`` can also be used as a context manager:\n\n.. code-block:: python\n\n\tdef post(request, post_id):\n\t    with silk_profile(name='View Blog Post #%d' % self.pk):\n\t        p = Post.objects.get(pk=post_id)\n\t    \treturn render(request, 'post.html', {\n\t        \t'post': p\n\t    \t})\n\nDynamic Profiling\n-----------------\n\nDecorators and context managers can also be injected at run-time. This is useful if we want to narrow down slow requests/database queries to dependencies.\n\nDynamic profiling is configured via the ``SILKY_DYNAMIC_PROFILING`` option in your ``settings.py``:\n\n.. code-block:: python\n\n\t\"\"\"\n\tDynamic function decorator\n\t\"\"\"\n\n\tSILKY_DYNAMIC_PROFILING = [{\n\t    'module': 'path.to.module',\n\t    'function': 'foo'\n\t}]\n\n\t# ... is roughly equivalent to\n\t@silk_profile()\n\tdef foo():\n\t    pass\n\n\t\"\"\"\n\tDynamic method decorator\n\t\"\"\"\n\n\tSILKY_DYNAMIC_PROFILING = [{\n\t    'module': 'path.to.module',\n\t    'function': 'MyClass.bar'\n\t}]\n\n\t# ... is roughly equivalent to\n\tclass MyClass:\n\n\t    @silk_profile()\n\t    def bar(self):\n\t        pass\n\n\t\"\"\"\n\tDynamic code block profiling\n\t\"\"\"\n\n\tSILKY_DYNAMIC_PROFILING = [{\n\t    'module': 'path.to.module',\n\t    'function': 'foo',\n\t    # Line numbers are relative to the function as opposed to the file in which it resides\n\t    'start_line': 1,\n\t    'end_line': 2,\n\t    'name': 'Slow Foo'\n\t}]\n\n\t# ... is roughly equivalent to\n\tdef foo():\n\t    with silk_profile(name='Slow Foo'):\n\t        print (1)\n\t        print (2)\n\t    print(3)\n\t    print(4)\n\nNote that dynamic profiling behaves in a similar fashion to that of the python mock framework in that\nwe modify the function in-place e.g:\n\n.. code-block:: python\n\n\t\"\"\" my.module \"\"\"\n\tfrom another.module import foo\n\n\t# ...do some stuff\n\tfoo()\n\t# ...do some other stuff\n\n\nWe would profile ``foo`` by dynamically decorating `my.module.foo` as opposed to ``another.module.foo``:\n\n.. code-block:: python\n\n\tSILKY_DYNAMIC_PROFILING = [{\n\t    'module': 'my.module',\n\t    'function': 'foo'\n\t}]\n\nIf we were to apply the dynamic profile to the functions source module ``another.module.foo`` *after* it has already been imported, no profiling would be triggered.\n"
  },
  {
    "path": "docs/quickstart.rst",
    "content": "Quick Start\n===========\n\nSilk is installed like any other Django app.\n\nFirst install via pip:\n\n.. code-block:: bash\n\n\tpip install django-silk\n\nAdd the following to your ``settings.py``:\n\n.. code-block:: python\n\n\tMIDDLEWARE = [\n\t    ...\n\t    'silk.middleware.SilkyMiddleware',\n\t    ...\n\t]\n\n\tTEMPLATES = [{\n\t    ...\n\t    'OPTIONS': {\n\t        'context_processors': [\n\t            ...\n\t            'django.template.context_processors.request',\n\t        ],\n\t    },\n\t}]\n\n\n\tINSTALLED_APPS = [\n\t    ...\n\t    'silk.apps.SilkAppConfig'\n\t]\n\nAdd the following to your ``urls.py``:\n\n.. code-block:: python\n\n\turlpatterns += [path('silk', include('silk.urls', namespace='silk'))]\n\nRun ``migrate`` to create Silk's database tables:\n\n.. code-block:: bash\n\n    python manage.py migrate\n\nAnd voila! Silk will begin intercepting requests and queries which you can inspect by visiting ``/silk/``\n\nPython Snippet Formatting\n-------------------------\n\nSilk supports generating Python snippets to reproduce requests.\nTo enable autopep8 formatting of these snippets, install Silk with the `formatting` extras:\n\n.. code-block:: bash\n\n    pip install django-silk[formatting]\n\nOther Installation Options\n--------------------------\n\nYou can download a release from `github <https://github.com/jazzband/django-silk/releases>`_ and then install using pip:\n\n.. code-block:: bash\n\n\tpip install django-silk-<version>.tar.gz\n\nYou can also install directly from the github repo but please note that this version is not guaranteed to be working:\n\n.. code-block:: bash\n\n\tpip install -e git+https://github.com/jazzband/django-silk.git#egg=django_silk\n"
  },
  {
    "path": "docs/troubleshooting.rst",
    "content": "Troubleshooting\n===============\n\nThe below details common problems when using Silk, most of which have been derived from the solutions to github issues.\n\nUnicode\n-------\n\nSilk saves down the request and response bodies of each HTTP request by default. These bodies are often UTF encoded and hence it is important that Silk's database tables are also UTF encoded. Django has no facility for enforcing this and instead assumes that the configured database defaults to UTF.\n\nIf you see errors like:\n\n\n\tIncorrect string value: '\\xCE\\xBB, \\xCF\\x86...' for column 'raw_body' at row...\n\n\nThen it's likely your database is not configured correctly for UTF encoding.\n\nSee this `github issue <https://github.com/jazzband/django-silk/issues/21>`_ for more details and workarounds.\n\nContext Processor\n-----------------\n\nSilk requires the template context to include a ``request`` object in order to save and analyze it.\n\nIf you see errors like:\n\n.. code-block:: text\n\n    File \"/service/venv/lib/python3.12/site-packages/silk/templatetags/silk_nav.py\", line 9, in navactive\n      path = request.path\n             ^^^^^^^^^^^^\n    AttributeError: 'str' object has no attribute 'path'\n\nInclude ``django.template.context_processors.request`` in your Django settings' ``TEMPLATES`` context processors as `recommended <https://github.com/jazzband/django-silk/issues/805>`_.\n\nMiddleware\n----------\n\nThe order of middleware is sensitive. If any middleware placed before ``silk.middleware.SilkyMiddleware`` returns a response without invoking its ``get_response``, the ``SilkyMiddleware`` won’t run. To avoid this, ensure that middleware preceding ``SilkyMiddleware`` does not bypass or return a response without calling its ``get_response``. For further details, check out the `Django documentation <https://docs.djangoproject.com/en/dev/topics/http/middleware/#middleware-order-and-layering>`.\n\nGarbage Collection\n------------------\n\nTo `avoid <https://github.com/jazzband/django-silk/issues/265>`_ `deadlock <https://github.com/jazzband/django-silk/issues/294>`_ `issues <https://github.com/jazzband/django-silk/issues/371>`_, you might want to decouple silk's garbage collection from your webserver's request processing, set ``SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT=0`` and trigger it manually, e.g. in a cron job:\n\n.. code-block:: bash\n\n    python manage.py silk_request_garbage_collect\n"
  },
  {
    "path": "gulpfile.js",
    "content": "let gulp = require('gulp'),\n    sass = require('gulp-sass');\n\n\ngulp.task('watch', function () {\n    gulp.watch('scss/**/*.scss', gulp.series('sass'));\n});\n\ngulp.task('sass', function () {\n    return gulp.src('scss/**/*.scss')\n        .pipe(sass().on('error', sass.logError))\n        .pipe(gulp.dest('silk/static/silk/css'));\n});\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"silk\",\n  \"version\": \"5.5.0\",\n  \"description\": \"https://github.com/jazzband/django-silk\",\n  \"main\": \"index.js\",\n  \"directories\": {\n    \"doc\": \"docs\",\n    \"test\": \"tests\"\n  },\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/jazzband/django-silk.git\"\n  },\n  \"author\": \"\",\n  \"license\": \"ISC\",\n  \"bugs\": {\n    \"url\": \"https://github.com/jazzband/django-silk/issues\"\n  },\n  \"homepage\": \"https://github.com/jazzband/django-silk\",\n  \"devDependencies\": {\n    \"gulp\": \"^4.0.2\",\n    \"gulp-sass\": \"^4.0.2\"\n  },\n  \"dependencies\": {}\n}\n"
  },
  {
    "path": "project/example_app/__init__.py",
    "content": ""
  },
  {
    "path": "project/example_app/admin.py",
    "content": "from django.contrib import admin\nfrom django.urls import reverse\n\nfrom .models import Blind\n\n\n@admin.register(Blind)\nclass BlindAdmin(admin.ModelAdmin):\n    list_display = ('desc', 'thumbnail', 'name', 'child_safe')\n    list_editable = ('name', 'child_safe')\n\n    @admin.display(\n        description='Photo'\n    )\n    def thumbnail(self, obj):\n        try:\n            img_tag = '<img src=\"%s\" width=\"200px\"/>' % obj.photo.url\n        except ValueError:\n            return ''\n        url = self._blind_url(obj)\n        return f'<a href=\"{url}\">{img_tag}</a>'\n\n    def _blind_url(self, obj):\n        url = reverse('admin:example_app_blind_change', args=(obj.id, ))\n        return url\n\n    @admin.display(\n        description='Blind'\n    )\n    def desc(self, obj):\n        desc = str(obj)\n        url = self._blind_url(obj)\n        return f'<a href=\"{url}\">{desc}</a>'\n"
  },
  {
    "path": "project/example_app/migrations/0001_initial.py",
    "content": "# Generated by Django 1.9.7 on 2016-07-08 13:19\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    initial = True\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='Blind',\n            fields=[\n                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),\n                ('photo', models.ImageField(upload_to=b'products')),\n                ('name', models.TextField()),\n                ('child_safe', models.BooleanField(default=False)),\n            ],\n            options={\n                'abstract': False,\n            },\n        ),\n    ]\n"
  },
  {
    "path": "project/example_app/migrations/0002_alter_blind_photo.py",
    "content": "# Generated by Django 3.2 on 2021-04-12 22:45\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('example_app', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='blind',\n            name='photo',\n            field=models.ImageField(upload_to='products'),\n        ),\n    ]\n"
  },
  {
    "path": "project/example_app/migrations/0003_blind_unique_name_if_provided.py",
    "content": "# Generated by Django 3.2.16 on 2022-10-28 08:08\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('example_app', '0002_alter_blind_photo'),\n    ]\n\n    operations = [\n        migrations.AddConstraint(\n            model_name='blind',\n            constraint=models.UniqueConstraint(condition=models.Q(('name', ''), _negated=True), fields=('name',), name='unique_name_if_provided'),\n        ),\n    ]\n"
  },
  {
    "path": "project/example_app/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "project/example_app/models.py",
    "content": "from django.db import models\n\n# Create your models here.\nfrom django.db.models import BooleanField, ImageField, TextField\n\n\nclass Product(models.Model):\n    photo = ImageField(upload_to='products')\n\n    class Meta:\n        abstract = True\n\n\nclass Blind(Product):\n    name = TextField()\n    child_safe = BooleanField(default=False)\n\n    def __str__(self):\n        return self.name\n\n    class Meta:\n        constraints = [\n            models.UniqueConstraint(\n                fields=[\"name\"],\n                condition=~models.Q(name=\"\"),\n                name=\"unique_name_if_provided\",\n            ),\n        ]\n"
  },
  {
    "path": "project/example_app/templates/example_app/blind_form.html",
    "content": "<html>\n<body>\n<h1>Example App</h1>\n<p>Use this app for testing and playing around with Silk. Displays a Blind creation form.</p>\n<form method=\"post\" action=\"\">\n    {% csrf_token %}\n    {{ form.as_p }}\n    <button type=\"submit\">Save</button>\n</form>\n</body>\n</html>\n"
  },
  {
    "path": "project/example_app/templates/example_app/index.html",
    "content": "<html>\n<head>\n<style>\n    .blind {\n        max-width: 200px\n    }\n</style>\n</head>\n<body>\n<h1>Example App</h1>\n<p>Use this app for testing and playing around with Silk. Displays a range of Blinds. Use admin to add them.</p>\n<table>\n    <tr>\n        <th>Photo</th>\n        <th>Name</th>\n        <th>Child safe?</th>\n    </tr>\n    {% for blind in blinds %}\n        <tr>\n            <td>{% if blind.photo %}<img class=\"blind\" src=\"{{ blind.photo.url }}\">{% endif %}</td>\n            <td>{{ blind.name }}</td>\n            <td>{% if blind.child_safe %}Yes{% else %}No{% endif %}</td>\n        </tr>\n    {% endfor %}\n</table>\n</body>\n</html>\n"
  },
  {
    "path": "project/example_app/templates/example_app/login.html",
    "content": "<!DOCTYPE html>\n<html>\n<head lang=\"en\">\n    <meta charset=\"UTF-8\">\n    <title></title>\n</head>\n<body>\n\n{% if form.errors %}\n    <p>Your username and password didn't match. Please try again.</p>\n{% endif %}\n\n<form method=\"post\" action=\"{% url 'django.contrib.auth.views.login' %}\">\n    {% csrf_token %}\n    <table>\n        <tr>\n            <td>{{ form.username.label_tag }}</td>\n            <td>{{ form.username }}</td>\n        </tr>\n        <tr>\n            <td>{{ form.password.label_tag }}</td>\n            <td>{{ form.password }}</td>\n        </tr>\n    </table>\n\n    <input type=\"submit\" value=\"login\"/>\n    <input type=\"hidden\" name=\"next\" value=\"{{ next }}\"/>\n</form>\n\n</body>\n</html>\n"
  },
  {
    "path": "project/example_app/tests.py",
    "content": "# Create your tests here.\n"
  },
  {
    "path": "project/example_app/urls.py",
    "content": "from django.urls import path\n\nfrom . import views\n\napp_name = 'example_app'\nurlpatterns = [\n    path(route='', view=views.index, name='index'),\n    path(route='create', view=views.ExampleCreateView.as_view(), name='create'),\n]\n"
  },
  {
    "path": "project/example_app/views.py",
    "content": "from time import sleep\n\n# Create your views here.\nfrom django.shortcuts import render\nfrom django.urls import reverse_lazy\nfrom django.views.generic import CreateView\nfrom example_app import models\n\nfrom silk.profiling.profiler import silk_profile\n\n\ndef index(request):\n    @silk_profile()\n    def do_something_long():\n        sleep(1.345)\n\n    with silk_profile(name='Why do this take so long?'):\n        do_something_long()\n    return render(request, 'example_app/index.html', {'blinds': models.Blind.objects.all()})\n\n\nclass ExampleCreateView(CreateView):\n    model = models.Blind\n    fields = ['name']\n    success_url = reverse_lazy('example_app:index')\n"
  },
  {
    "path": "project/manage.py",
    "content": "#!/usr/bin/env python\n\"\"\"Define the Django Silk management entry.\"\"\"\nimport os\nimport sys\n\nif __name__ == \"__main__\":\n    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"project.settings\")\n\n    from django.core.management import execute_from_command_line\n\n    execute_from_command_line(sys.argv)\n"
  },
  {
    "path": "project/project/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "project/project/settings.py",
    "content": "import os\n\nBASE_DIR = os.path.dirname(os.path.dirname(__file__))\n\nSECRET_KEY = 'ey5!m&h-uj6c7dzp@(o1%96okkq4!&bjja%oi*v3r=2t(!$7os'\n\nDEBUG = True\nDEBUG_PROPAGATE_EXCEPTIONS = True\n\nALLOWED_HOSTS = []\n\nINSTALLED_APPS = (\n    'django.contrib.staticfiles',\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.messages',\n    'django.contrib.sessions',\n    'silk',\n    'example_app'\n)\n\nROOT_URLCONF = 'project.urls'\n\nDEFAULT_AUTO_FIELD = 'django.db.models.AutoField'\n\nMIDDLEWARE = [\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.middleware.common.CommonMiddleware',\n    'django.middleware.csrf.CsrfViewMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n    'django.middleware.clickjacking.XFrameOptionsMiddleware',\n    'silk.middleware.SilkyMiddleware'\n]\n\nWSGI_APPLICATION = 'wsgi.application'\n\nDB_ENGINE = os.environ.get(\"DB_ENGINE\", \"postgresql\")\n\nDATABASES = {\n    \"default\": {\n        \"ENGINE\": f\"django.db.backends.{DB_ENGINE}\",\n        \"NAME\": os.environ.get(\"DB_NAME\", \"postgres\"),\n        \"USER\": os.environ.get(\"DB_USER\", 'postgres'),\n        \"PASSWORD\": os.environ.get(\"DB_PASSWORD\", \"postgres\"),\n        \"HOST\": os.environ.get(\"DB_HOST\", \"127.0.0.1\"),\n        \"PORT\": os.environ.get(\"DB_PORT\", 5432),\n        \"ATOMIC_REQUESTS\": True\n    },\n}\n\nLANGUAGE_CODE = 'en-us'\n\nTIME_ZONE = 'UTC'\n\nUSE_I18N = True\n\nUSE_TZ = True\n\nLOGGING = {\n    'version': 1,\n    'formatters': {\n        'mosayc': {\n            'format': '%(asctime)-15s %(levelname)-7s %(message)s [%(funcName)s (%(filename)s:%(lineno)s)]',\n        }\n    },\n    'handlers': {\n        'console': {\n            'level': 'DEBUG',\n            'class': 'logging.StreamHandler',\n            'formatter': 'mosayc'\n        }\n    },\n    'loggers': {\n        'silk': {\n            'handlers': ['console'],\n            'level': 'DEBUG'\n        }\n    },\n}\n\nSTATIC_URL = '/static/'\n\nSTATICFILES_FINDERS = (\n    'django.contrib.staticfiles.finders.FileSystemFinder',\n    'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n)\n\nTEMP_DIR = os.path.join(BASE_DIR, \"tmp\")\nSTATIC_ROOT = os.path.join(TEMP_DIR, \"static\")\n\nif not os.path.exists(STATIC_ROOT):\n    os.makedirs(STATIC_ROOT)\n\nMEDIA_ROOT = BASE_DIR + '/media/'\nMEDIA_URL = '/media/'\n\nif not os.path.exists(MEDIA_ROOT):\n    os.mkdir(MEDIA_ROOT)\n\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [],\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.request',\n            ],\n        },\n    },\n]\n\nLOGIN_URL = '/login/'\nLOGIN_REDIRECT_URL = '/'\n\nSILKY_META = True\nSILKY_PYTHON_PROFILER = True\nSILKY_PYTHON_PROFILER_BINARY = True\n# Do not garbage collect for tests\nSILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 0\n# SILKY_AUTHENTICATION = True\n# SILKY_AUTHORISATION = True\n"
  },
  {
    "path": "project/project/urls.py",
    "content": "from django.conf import settings\nfrom django.conf.urls.static import static\nfrom django.contrib import admin\nfrom django.contrib.auth import views\nfrom django.urls import include, path\n\nurlpatterns = [\n    path(\n        route='silk/',\n        view=include('silk.urls', namespace='silk'),\n    ),\n    path(\n        route='example_app/',\n        view=include('example_app.urls', namespace='example_app'),\n    ),\n    path(route='admin/', view=admin.site.urls),\n]\n\n\nurlpatterns += [\n    path(\n        route='login/',\n        view=views.LoginView.as_view(\n            template_name='example_app/login.html'\n        ),\n        name='login',\n    ),\n]\n\n\nurlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) + \\\n    static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n"
  },
  {
    "path": "project/tests/__init__.py",
    "content": "from . import *  # noqa: F401, F403\n"
  },
  {
    "path": "project/tests/data/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "project/tests/data/dynamic.py",
    "content": "def foo():\n    print('1')\n    print('2')\n    print('3')\n\n\ndef foo2():\n    print('1')\n    print('2')\n    print('3')\n"
  },
  {
    "path": "project/tests/factories.py",
    "content": "import factory\nimport factory.fuzzy\nfrom example_app.models import Blind\n\nfrom silk.models import Request, Response, SQLQuery\n\nHTTP_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'OPTIONS']\nSTATUS_CODES = [200, 201, 300, 301, 302, 401, 403, 404]\n\n\nclass SQLQueryFactory(factory.django.DjangoModelFactory):\n\n    query = factory.Sequence(lambda num: 'SELECT foo FROM bar WHERE foo=%s' % num)\n    traceback = factory.Sequence(lambda num: 'Traceback #%s' % num)\n\n    class Meta:\n        model = SQLQuery\n\n\nclass RequestMinFactory(factory.django.DjangoModelFactory):\n\n    path = factory.Faker('uri_path')\n    method = factory.fuzzy.FuzzyChoice(HTTP_METHODS)\n\n    class Meta:\n        model = Request\n\n\nclass ResponseFactory(factory.django.DjangoModelFactory):\n    request = factory.SubFactory(RequestMinFactory)\n    status_code = factory.fuzzy.FuzzyChoice(STATUS_CODES)\n\n    class Meta:\n        model = Response\n\n\nclass BlindFactory(factory.django.DjangoModelFactory):\n    name = factory.Faker('pystr', min_chars=5, max_chars=10)\n    child_safe = factory.Faker('pybool')\n    photo = factory.django.ImageField()\n\n    class Meta:\n        model = Blind\n"
  },
  {
    "path": "project/tests/test_app_config.py",
    "content": "from django.apps import apps as proj_apps\nfrom django.test import TestCase\n\nfrom silk.apps import SilkAppConfig\n\n\nclass TestAppConfig(TestCase):\n    \"\"\"\n    Test if correct AppConfig class is loaded by Django.\n    \"\"\"\n\n    def test_app_config_loaded(self):\n        silk_app_config = proj_apps.get_app_config(\"silk\")\n        self.assertIsInstance(silk_app_config, SilkAppConfig)\n"
  },
  {
    "path": "project/tests/test_code.py",
    "content": "from collections import namedtuple\n\nfrom django.test import TestCase\n\nfrom silk.views.code import _code, _code_context, _code_context_from_request\n\nFILE_PATH = __file__\nLINE_NUM = 5\nEND_LINE_NUM = 10\n\nwith open(__file__) as f:\n    ACTUAL_LINES = [line + '\\n' for line in f.read().split('\\n')]\n\n\nclass CodeTestCase(TestCase):\n\n    def assertActualLineEqual(self, actual_line, end_line_num=None):\n        expected_actual_line = ACTUAL_LINES[LINE_NUM - 1:end_line_num or LINE_NUM]\n        self.assertEqual(actual_line, expected_actual_line)\n\n    def assertCodeEqual(self, code):\n        expected_code = [line.strip('\\n') for line in ACTUAL_LINES[0:LINE_NUM + 10]] + ['']\n        self.assertEqual(code, expected_code)\n\n    def test_code(self):\n        for end_line_num in None, END_LINE_NUM:\n            actual_line, code = _code(FILE_PATH, LINE_NUM, end_line_num)\n            self.assertActualLineEqual(actual_line, end_line_num)\n            self.assertCodeEqual(code)\n\n    def test_code_context(self):\n        for end_line_num in None, END_LINE_NUM:\n            for prefix in '', 'salchicha_':\n                context = _code_context(FILE_PATH, LINE_NUM, end_line_num, prefix)\n                self.assertActualLineEqual(context[prefix + 'actual_line'], end_line_num)\n                self.assertCodeEqual(context[prefix + 'code'])\n                self.assertEqual(context[prefix + 'file_path'], FILE_PATH)\n                self.assertEqual(context[prefix + 'line_num'], LINE_NUM)\n\n    def test_code_context_from_request(self):\n        for end_line_num in None, END_LINE_NUM:\n            for prefix in '', 'salchicha_':\n                request = namedtuple('Request', 'GET')(dict(file_path=FILE_PATH, line_num=LINE_NUM))\n                context = _code_context_from_request(request, end_line_num, prefix)\n                self.assertActualLineEqual(context[prefix + 'actual_line'], end_line_num)\n                self.assertCodeEqual(context[prefix + 'code'])\n                self.assertEqual(context[prefix + 'file_path'], FILE_PATH)\n                self.assertEqual(context[prefix + 'line_num'], LINE_NUM)\n"
  },
  {
    "path": "project/tests/test_code_gen_curl.py",
    "content": "import shlex\nfrom unittest import TestCase\n\nfrom silk.code_generation.curl import curl_cmd\n\n\nclass TestCodeGenCurl(TestCase):\n    def test_post_json(self):\n        result = curl_cmd(\n            url=\"https://example.org/alpha/beta\",\n            method=\"POST\",\n            body={\"gamma\": \"delta\"},\n            content_type=\"application/json\",\n        )\n\n        result_words = shlex.split(result)\n\n        self.assertEqual(result_words, [\n            'curl', '-X', 'POST',\n            '-H', 'content-type: application/json',\n            '-d', '{\"gamma\": \"delta\"}',\n            'https://example.org/alpha/beta'\n        ])\n"
  },
  {
    "path": "project/tests/test_code_gen_django.py",
    "content": "import textwrap\nfrom unittest import TestCase\n\nfrom silk.code_generation.django_test_client import gen\n\n\nclass TestCodeGenDjango(TestCase):\n    def test_post(self):\n        result = gen(\n            path=\"/alpha/beta\",\n            method=\"POST\",\n            data={\"gamma\": \"delta\", \"epsilon\": \"zeta\"},\n            content_type=\"application/x-www-form-urlencoded\",\n        )\n\n        self.assertEqual(result, textwrap.dedent(\"\"\"\\\n            from django.test import Client\n            c = Client()\n            response = c.post(path='/alpha/beta',\n                              data={'gamma': 'delta', 'epsilon': 'zeta'},\n                              content_type='application/x-www-form-urlencoded')\n        \"\"\"))\n"
  },
  {
    "path": "project/tests/test_collector.py",
    "content": "import cProfile\nimport os.path\nimport sys\n\nfrom django.test import TestCase\nfrom tests.util import DictStorage\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\n\nfrom .factories import RequestMinFactory\n\n\nclass TestCollector(TestCase):\n    def test_singleton(self):\n        a = DataCollector()\n        b = DataCollector()\n        c = DataCollector()\n        self.assertTrue(a == b == c)\n\n    def test_query_registration(self):\n        mock_query = {}\n        DataCollector().register_query(mock_query)\n        self.assertIn(mock_query, list(DataCollector().queries.values()))\n\n    def test_clear(self):\n        self.test_query_registration()\n        DataCollector().clear()\n        self.assertFalse(DataCollector().queries)\n\n    def test_finalise(self):\n        request = RequestMinFactory()\n        DataCollector().configure(request)\n        with self.subTest(\"Default file-based storage\"):\n            DataCollector().finalise()\n            file = DataCollector().request.prof_file\n            self.assertIsNotNone(file)\n            with file.storage.open(file.name) as f:\n                content = f.read()\n                self.assertTrue(content)\n\n        # Some storages, such as S3Boto3Storage, don't support local file system path.\n        # Simulate this behaviour using DictStorage.\n        with self.subTest(\"Pathless storage\"):\n            request.prof_file.storage = DictStorage()\n            DataCollector().finalise()\n            file = DataCollector().request.prof_file\n            self.assertIsNotNone(file)\n            with file.storage.open(file.name) as f:\n                content = f.read()\n                self.assertTrue(content)\n                self.assertGreater(len(content), 0)\n\n    def test_configure_exception(self):\n        other_profiler = cProfile.Profile()\n        other_profiler.enable()\n        collector = DataCollector()\n        collector.configure()\n        other_profiler.disable()\n        if sys.version_info >= (3, 12):\n            self.assertEqual(collector.local.pythonprofiler, None)\n        else:\n            self.assertIsNotNone(collector.local.pythonprofiler)\n            collector.stop_python_profiler()\n\n    def test_profile_file_name_with_disabled_extended_file_name(self):\n        SilkyConfig().SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME = False\n        request_path = 'normal/uri/'\n        resulting_prefix = self._get_prof_file_name(request_path)\n        self.assertEqual(resulting_prefix, '')\n\n    def test_profile_file_name_with_enabled_extended_file_name(self):\n\n        SilkyConfig().SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME = True\n        request_path = 'normal/uri/'\n        resulting_prefix = self._get_prof_file_name(request_path)\n        self.assertEqual(resulting_prefix, 'normal_uri_')\n\n    def test_profile_file_name_with_path_traversal_and_special_char(self):\n        SilkyConfig().SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME = True\n        request_path = 'spÉciàl/.././大/uri/@É/'\n        resulting_prefix = self._get_prof_file_name(request_path)\n        self.assertEqual(resulting_prefix, 'special_uri_e_')\n\n    def test_profile_file_name_with_long_path(self):\n        SilkyConfig().SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME = True\n        request_path = 'long/path/' + 'a' * 100\n        resulting_prefix = self._get_prof_file_name(request_path)\n        # the path is limited to 50 char plus the last `_`\n        self.assertEqual(len(resulting_prefix), 51)\n\n    @classmethod\n    def _get_prof_file_name(cls, request_path: str) -> str:\n        request = RequestMinFactory()\n        request.path = request_path\n        DataCollector().configure(request)\n        DataCollector().finalise()\n        file_path = DataCollector().request.prof_file.name\n        filename = os.path.basename(file_path)\n        return filename.replace(f\"{request.id}.prof\", \"\")\n"
  },
  {
    "path": "project/tests/test_command_garbage_collect.py",
    "content": "from django.core import management\nfrom django.test import TestCase\n\nfrom silk import models\nfrom silk.config import SilkyConfig\n\nfrom .factories import RequestMinFactory\n\n\nclass TestViewClearDB(TestCase):\n    def test_garbage_collect_command(self):\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = 2\n        RequestMinFactory.create_batch(3)\n        self.assertEqual(models.Request.objects.count(), 3)\n        management.call_command(\"silk_request_garbage_collect\")\n        self.assertEqual(models.Request.objects.count(), 2)\n        management.call_command(\"silk_request_garbage_collect\", max_requests=1)\n        self.assertEqual(models.Request.objects.count(), 1)\n        management.call_command(\n            \"silk_request_garbage_collect\", max_requests=0, verbosity=2\n        )\n        self.assertEqual(models.Request.objects.count(), 0)\n"
  },
  {
    "path": "project/tests/test_compat.py",
    "content": "import json\nfrom unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.model_factory import ResponseModelFactory\n\nDJANGO_META_CONTENT_TYPE = 'CONTENT_TYPE'\nHTTP_CONTENT_TYPE = 'content-type'\n\n\nclass TestByteStringCompatForResponse(TestCase):\n\n    def test_bytes_compat(self):\n        \"\"\"\n        Test ResponseModelFactory formats json with bytes content\n        \"\"\"\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'application/json;'}\n        d = {'k': 'v'}\n        mock.content = bytes(json.dumps(d), 'utf-8')\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n"
  },
  {
    "path": "project/tests/test_config_auth.py",
    "content": "from django.contrib.auth.models import User\nfrom django.test import TestCase\nfrom django.urls import NoReverseMatch, reverse\n\nfrom silk.config import SilkyConfig, default_permissions\nfrom silk.middleware import silky_reverse\n\n\nclass TestAuth(TestCase):\n    def test_authentication(self):\n        SilkyConfig().SILKY_AUTHENTICATION = True\n        response = self.client.get(silky_reverse('requests'))\n        self.assertEqual(response.status_code, 302)\n        url = response.url\n        try:\n            # If we run tests within the django_silk project, a login url is available from example_app\n            self.assertIn(reverse('login'), url)\n        except NoReverseMatch:\n            # Otherwise the Django default login url is used, in which case we can test for that instead\n            self.assertIn('http://testserver/login/', url)\n\n    def test_default_authorisation(self):\n        SilkyConfig().SILKY_AUTHENTICATION = True\n        SilkyConfig().SILKY_AUTHORISATION = True\n        SilkyConfig().SILKY_PERMISSIONS = default_permissions\n        username_and_password = 'bob'  # bob is an imbecile and uses the same pass as his username\n        user = User.objects.create(username=username_and_password)\n        user.set_password(username_and_password)\n        user.save()\n        self.client.login(username=username_and_password, password=username_and_password)\n        response = self.client.get(silky_reverse('requests'))\n        self.assertEqual(response.status_code, 403)\n        user.is_staff = True\n        user.save()\n        response = self.client.get(silky_reverse('requests'))\n        self.assertEqual(response.status_code, 200)\n\n    def test_custom_authorisation(self):\n        SilkyConfig().SILKY_AUTHENTICATION = True\n        SilkyConfig().SILKY_AUTHORISATION = True\n\n        def custom_authorisation(user):\n            return user.username.startswith('mike')\n\n        SilkyConfig().SILKY_PERMISSIONS = custom_authorisation\n        username_and_password = 'bob'  # bob is an imbecile and uses the same pass as his username\n        user = User.objects.create(username=username_and_password)\n        user.set_password(username_and_password)\n        user.save()\n        self.client.login(username=username_and_password, password=username_and_password)\n        response = self.client.get(silky_reverse('requests'))\n        self.assertEqual(response.status_code, 403)\n        user.username = 'mike2'\n        user.save()\n        response = self.client.get(silky_reverse('requests'))\n        self.assertEqual(response.status_code, 200)\n"
  },
  {
    "path": "project/tests/test_config_long_urls.py",
    "content": "from unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.model_factory import RequestModelFactory\n\n\nclass TestLongRequestUrl(TestCase):\n\n    def test_no_long_url(self):\n        url = '1234567890' * 19  # 190-character URL\n        mock_request = Mock()\n        mock_request.headers = {'content-type': 'text/plain'}\n        mock_request.GET = {}\n        mock_request.path = url\n        mock_request.method = 'get'\n        request_model = RequestModelFactory(mock_request).construct_request_model()\n        self.assertEqual(request_model.path, url)\n\n    def test_long_url(self):\n        url = '1234567890' * 200  # 2000-character URL\n        mock_request = Mock()\n        mock_request.headers = {'content-type': 'text/plain'}\n        mock_request.GET = {}\n        mock_request.method = 'get'\n        mock_request.path = url\n        request_model = RequestModelFactory(mock_request).construct_request_model()\n        self.assertEqual(request_model.path, f'{url[:94]}...{url[1907:]}')\n        self.assertEqual(len(request_model.path), 190)\n"
  },
  {
    "path": "project/tests/test_config_max_body_size.py",
    "content": "from unittest.mock import Mock\n\nfrom django.test import TestCase\nfrom django.urls import reverse\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\nfrom silk.model_factory import RequestModelFactory, ResponseModelFactory\nfrom silk.models import Request\n\n\nclass TestMaxBodySizeRequest(TestCase):\n\n    def test_no_max_request(self):\n        SilkyConfig().SILKY_MAX_REQUEST_BODY_SIZE = -1\n        mock_request = Mock()\n        mock_request.headers = {'content-type': 'text/plain'}\n        mock_request.GET = {}\n        mock_request.path = reverse('silk:requests')\n        mock_request.method = 'get'\n        mock_request.body = b'a' * 1000  # 1000 bytes?\n        request_model = RequestModelFactory(mock_request).construct_request_model()\n        self.assertTrue(request_model.raw_body)\n\n    def test_max_request(self):\n        SilkyConfig().SILKY_MAX_REQUEST_BODY_SIZE = 10  # 10kb\n        mock_request = Mock()\n        mock_request.headers = {'content-type': 'text/plain'}\n        mock_request.GET = {}\n        mock_request.method = 'get'\n        mock_request.body = b'a' * 1024 * 100  # 100kb\n        mock_request.path = reverse('silk:requests')\n        request_model = RequestModelFactory(mock_request).construct_request_model()\n        self.assertFalse(request_model.raw_body)\n\n\nclass TestMaxBodySizeResponse(TestCase):\n\n    def setUp(self):\n        DataCollector().request = Request.objects.create()\n\n    def test_no_max_response(self):\n        SilkyConfig().SILKY_MAX_RESPONSE_BODY_SIZE = -1\n        mock_response = Mock()\n        mock_response.headers = {'content-type': 'text/plain'}\n        mock_response.content = b'a' * 1000  # 1000 bytes?\n        mock_response.status_code = 200\n        mock_response.get = mock_response.headers.get\n        response_model = ResponseModelFactory(mock_response).construct_response_model()\n        self.assertTrue(response_model.raw_body)\n\n    def test_max_response(self):\n        SilkyConfig().SILKY_MAX_RESPONSE_BODY_SIZE = 10  # 10kb\n        mock_response = Mock()\n        mock_response.headers = {'content-type': 'text/plain'}\n        mock_response.content = b'a' * 1024 * 100  # 100kb\n        mock_response.status_code = 200\n        mock_response.get = mock_response.headers.get\n        response_model = ResponseModelFactory(mock_response).construct_response_model()\n        self.assertFalse(response_model.raw_body)\n"
  },
  {
    "path": "project/tests/test_config_meta.py",
    "content": "from unittest.mock import NonCallableMock\n\nfrom django.test import TestCase\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\nfrom silk.middleware import SilkyMiddleware\nfrom silk.models import Request\n\nfrom .util import delete_all_models\n\n\ndef fake_get_response():\n    def fake_response():\n        return 'hello world'\n    return fake_response\n\n\nclass TestConfigMeta(TestCase):\n    def _mock_response(self):\n        response = NonCallableMock()\n        response.headers = {}\n        response.status_code = 200\n        response.queries = []\n        response.get = response.headers.get\n        response.content = ''\n        return response\n\n    def _execute_request(self):\n        delete_all_models(Request)\n        DataCollector().configure(Request.objects.create())\n        response = self._mock_response()\n        SilkyMiddleware(fake_get_response)._process_response('', response)\n        self.assertTrue(response.status_code == 200)\n        objs = Request.objects.all()\n        self.assertEqual(objs.count(), 1)\n        r = objs[0]\n        return r\n\n    def test_enabled(self):\n        SilkyConfig().SILKY_META = True\n        r = self._execute_request()\n        self.assertTrue(r.meta_time is not None\n                        or r.meta_num_queries is not None\n                        or r.meta_time_spent_queries is not None)\n\n    def test_disabled(self):\n        SilkyConfig().SILKY_META = False\n        r = self._execute_request()\n        self.assertFalse(r.meta_time)\n"
  },
  {
    "path": "project/tests/test_db.py",
    "content": "\"\"\"\nTest profiling of DB queries without mocking, to catch possible\nincompatibility\n\"\"\"\nfrom django.shortcuts import reverse\nfrom django.test import Client, TestCase\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\nfrom silk.models import Request\nfrom silk.profiling.profiler import silk_profile\n\nfrom .factories import BlindFactory\n\n\nclass TestDbQueries(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        BlindFactory.create_batch(size=5)\n        SilkyConfig().SILKY_META = False\n\n    def test_profile_request_to_db(self):\n        DataCollector().configure(Request(reverse('example_app:index')))\n\n        with silk_profile(name='test_profile'):\n            resp = self.client.get(reverse('example_app:index'))\n\n        DataCollector().profiles.values()\n        assert len(resp.context['blinds']) == 5\n\n    def test_profile_request_to_db_with_constraints(self):\n        DataCollector().configure(Request(reverse('example_app:create')))\n\n        resp = self.client.post(reverse('example_app:create'), {'name': 'Foo'})\n        self.assertEqual(resp.status_code, 302)\n\n\nclass TestAnalyzeQueries(TestCase):\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        BlindFactory.create_batch(size=5)\n        SilkyConfig().SILKY_META = False\n        SilkyConfig().SILKY_ANALYZE_QUERIES = True\n\n    @classmethod\n    def tearDownClass(cls):\n        super().tearDownClass()\n        SilkyConfig().SILKLY_ANALYZE_QUERIES = False\n\n    def test_analyze_queries(self):\n        DataCollector().configure(Request(reverse('example_app:index')))\n        client = Client()\n\n        with silk_profile(name='test_profile'):\n            resp = client.get(reverse('example_app:index'))\n\n        DataCollector().profiles.values()\n        assert len(resp.context['blinds']) == 5\n\n\nclass TestAnalyzeQueriesExplainParams(TestAnalyzeQueries):\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        SilkyConfig().SILKY_EXPLAIN_FLAGS = {'verbose': True}\n\n    @classmethod\n    def tearDownClass(cls):\n        super().tearDownClass()\n        SilkyConfig().SILKY_EXPLAIN_FLAGS = None\n"
  },
  {
    "path": "project/tests/test_dynamic_profiling.py",
    "content": "from unittest.mock import patch\n\nfrom django.test import TestCase\n\nimport silk\nfrom silk.profiling.dynamic import (\n    _get_module,\n    _get_parent_module,\n    profile_function_or_method,\n)\n\nfrom .test_lib.assertion import dict_contains\nfrom .util import mock_data_collector\n\n\nclass TestGetModule(TestCase):\n    \"\"\"test for _get_module\"\"\"\n\n    def test_singular(self):\n        module = _get_module('silk')\n        self.assertEqual(module.__class__.__name__, 'module')\n        self.assertEqual('silk', module.__name__)\n        self.assertTrue(hasattr(module, 'models'))\n\n    def test_dot(self):\n        module = _get_module('silk.models')\n        self.assertEqual(module.__class__.__name__, 'module')\n        self.assertEqual('silk.models', module.__name__)\n        self.assertTrue(hasattr(module, 'SQLQuery'))\n\n\nclass TestGetParentModule(TestCase):\n    \"\"\"test for silk.tools._get_parent_module\"\"\"\n\n    def test_singular(self):\n        parent = _get_parent_module(silk)\n        self.assertIsInstance(parent, dict)\n\n    def test_dot(self):\n        import silk.utils\n\n        parent = _get_parent_module(silk.utils)\n        self.assertEqual(parent, silk)\n\n\nclass MyClass:\n    def foo(self):\n        pass\n\n\ndef foo():\n    pass\n\n\ndef source_file_name():\n    file_name = __file__\n    if file_name[-1] == 'c':\n        file_name = file_name[:-1]\n    return file_name\n\n\nclass TestProfileFunction(TestCase):\n    def test_method_as_str(self):\n        # noinspection PyShadowingNames\n        def foo(_):\n            pass\n\n        # noinspection PyUnresolvedReferences\n        with patch.object(MyClass, 'foo', foo):\n            profile_function_or_method('tests.test_dynamic_profiling', 'MyClass.foo', 'test')\n            dc = mock_data_collector()\n            with patch('silk.profiling.profiler.DataCollector', return_value=dc) as mock_DataCollector:\n                MyClass().foo()\n                self.assertEqual(mock_DataCollector.return_value.register_profile.call_count, 1)\n                call_args = mock_DataCollector.return_value.register_profile.call_args[0][0]\n                self.assertTrue(dict_contains({\n                    'func_name': foo.__name__,\n                    'dynamic': True,\n                    'file_path': source_file_name(),\n                    'name': 'test',\n                    'line_num': foo.__code__.co_firstlineno\n                }, call_args))\n\n    def test_func_as_str(self):\n        name = foo.__name__\n        line_num = foo.__code__.co_firstlineno\n        profile_function_or_method('tests.test_dynamic_profiling', 'foo', 'test')\n        dc = mock_data_collector()\n        with patch('silk.profiling.profiler.DataCollector', return_value=dc) as mock_DataCollector:\n            foo()\n            self.assertEqual(mock_DataCollector.return_value.register_profile.call_count, 1)\n            call_args = mock_DataCollector.return_value.register_profile.call_args[0][0]\n            self.assertTrue(dict_contains({\n                'func_name': name,\n                'dynamic': True,\n                'file_path': source_file_name(),\n                'name': 'test',\n                'line_num': line_num\n            }, call_args))\n"
  },
  {
    "path": "project/tests/test_encoding.py",
    "content": "import json\nfrom unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.model_factory import RequestModelFactory, ResponseModelFactory\n\nHTTP_CONTENT_TYPE = 'content-type'\n\n\nclass TestEncodingForRequests(TestCase):\n    \"\"\"\n    Check that the RequestModelFactory deals with encodings correctly via charset\n    \"\"\"\n\n    def test_utf_plain(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'text/plain; charset=UTF-8'}\n        mock_request.body = '语'\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertFalse(body)\n        self.assertEqual(raw_body, mock_request.body)\n\n    def test_plain(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'text/plain'}\n        mock_request.body = 'sdfsdf'\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertFalse(body)\n        self.assertEqual(raw_body, mock_request.body)\n\n    def test_utf_json_not_encoded(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = {'x': '语'}\n        mock_request.body = json.dumps(d)\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(raw_body, mock_request.body)\n\n    def test_utf_json_encoded(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = {'x': '语'}\n        mock_request.body = json.dumps(d).encode('UTF-8')\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(raw_body, mock_request.body.decode('UTF-8'))\n\n    def test_utf_json_encoded_no_charset(self):\n        \"\"\"default to UTF-8\"\"\"\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json'}\n        d = {'x': '语'}\n        mock_request.body = json.dumps(d).encode('UTF-8')\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(raw_body, mock_request.body.decode('UTF-8'))\n\n    def test_invalid_encoding_json(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=asdas-8'}\n        d = {'x': '语'}\n        mock_request.body = json.dumps(d).encode('UTF-8')\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(raw_body, raw_body)\n\n\nclass TestEncodingForResponse(TestCase):\n    \"\"\"\n    Check that the ResponseModelFactory deals with encodings correctly via charset\n    \"\"\"\n\n    def test_utf_plain(self):\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'text/plain; charset=UTF-8'}\n        mock.content = '语'\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertFalse(body)\n        self.assertEqual(content, mock.content)\n\n    def test_plain(self):\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'text/plain'}\n        mock.content = 'sdfsdf'\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertFalse(body)\n        self.assertEqual(content, mock.content)\n\n    def test_utf_json_not_encoded(self):\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = {'x': '语'}\n        mock.content = json.dumps(d)\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(content, mock.content)\n\n    def test_utf_json_encoded(self):\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = {'x': '语'}\n        mock.content = json.dumps(d)\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(content, mock.content)\n\n    def test_utf_json_encoded_no_charset(self):\n        \"\"\"default to UTF-8\"\"\"\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'application/json'}\n        d = {'x': '语'}\n        mock.content = json.dumps(d)\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(content, mock.content)\n\n    def test_invalid_encoding_json(self):\n        mock = Mock()\n        mock.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=asdas-8'}\n        d = {'x': '语'}\n        mock.content = json.dumps(d)\n        mock.get = mock.headers.get\n        factory = ResponseModelFactory(mock)\n        body, content = factory.body()\n        self.assertDictEqual(json.loads(body), d)\n        self.assertEqual(mock.content, content)\n"
  },
  {
    "path": "project/tests/test_end_points.py",
    "content": "import random\n\nfrom django.db.models import Count, F\nfrom django.test import TestCase\nfrom django.urls import reverse\n\nfrom silk import models\nfrom silk.config import SilkyConfig\nfrom silk.middleware import silky_reverse\n\nfrom .test_lib.mock_suite import MockSuite\n\n\nclass TestEndPoints(TestCase):\n    \"\"\"\n    Hit all the endpoints to check everything actually renders/no error 500s etc.\n    Each test will ensure that an object with something to display is chosen to be rendered e.g.\n    a request/profile that has queries\n    \"\"\"\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        # We're not testing auth here.\n        SilkyConfig().SILKY_AUTHORISATION = False\n        SilkyConfig().SILKY_AUTHENTICATION = False\n        mock_suite = MockSuite()\n        for _ in range(0, 100):\n            mock_suite.mock_request()\n\n    def test_summary(self):\n        response = self.client.get(silky_reverse('summary'))\n        self.assertTrue(response.status_code == 200)\n\n    def test_requests(self):\n        response = self.client.get(silky_reverse('requests'))\n        self.assertTrue(response.status_code == 200)\n\n    def test_request_detail_on_get_request(self):\n        request_id = random.choice(\n            models.Request.objects.filter(method='GET').values_list('id', flat=True),\n        )\n        response = self.client.get(silky_reverse('request_detail', kwargs={\n            'request_id': request_id\n        }))\n        self.assertEqual(response.status_code, 200)\n\n    def test_request_detail_on_post_request(self):\n        request_id = random.choice(\n            models.Request.objects.filter(method='POST').values_list('id', flat=True),\n        )\n        response = self.client.get(silky_reverse('request_detail', kwargs={\n            'request_id': request_id\n        }))\n        self.assertEqual(response.status_code, 200)\n\n    def test_request_sql(self):\n        request_query_data = random.choice(\n            models.SQLQuery.objects\n            .values('request_id')\n            .filter(request_id__isnull=False)\n        )\n        request_id = request_query_data['request_id']\n        base_url = silky_reverse('request_sql', kwargs={'request_id': request_id})\n        response = self.client.get(base_url)\n        self.assertTrue(response.status_code == 200)\n\n        # Test with valid page size\n        response = self.client.get(base_url + \"?per_page=100\")\n        self.assertTrue(response.status_code == 200)\n\n        # Test with invalid page size\n        response = self.client.get(base_url + \"?per_page=notanumber\")\n        self.assertTrue(response.status_code == 200)\n\n    def test_request_sql_detail(self):\n        kwargs = random.choice(\n            models.SQLQuery.objects\n            .annotate(sql_id=F('id'))\n            .values('sql_id', 'request_id')\n            .filter(request_id__isnull=False)\n        )\n        response = self.client.get(silky_reverse('request_sql_detail', kwargs=kwargs))\n        self.assertTrue(response.status_code == 200)\n\n    def test_raw(self):\n        request_query_data = random.choice(\n            models.Request.objects\n            .values('id')\n            .filter(body__isnull=False)\n        )\n        request_id = request_query_data['id']\n        url = reverse('silk:raw', kwargs={\n            'request_id': request_id\n        }) + '?typ=request&subtyp=processed'\n        response = self.client.get(url)\n        code = response.status_code\n        self.assertTrue(code == 200)\n\n    def test_request_profiling(self):\n        request_id = random.choice(\n            models.Profile.objects\n            .values('request_id')\n            .filter(request_id__isnull=False)\n        )\n        response = self.client.get(silky_reverse('request_profiling', kwargs=request_id))\n        self.assertTrue(response.status_code == 200)\n\n    def test_request_profile_detail(self):\n        kwargs = random.choice(\n            models.Profile.objects\n            .annotate(profile_id=F('id'))\n            .values('profile_id', 'request_id')\n            .filter(request_id__isnull=False)\n        )\n        response = self.client.get(silky_reverse('request_profile_detail', kwargs=kwargs))\n        self.assertTrue(response.status_code == 200)\n\n    def test_request_and_profile_sql(self):\n        kwargs = random.choice(\n            models.Profile.objects\n            .annotate(num=Count('queries'), profile_id=F('id'))\n            .values('profile_id', 'request_id')\n            .filter(request_id__isnull=False, num__gt=0)\n        )\n        response = self.client.get(silky_reverse('request_and_profile_sql', kwargs=kwargs))\n        self.assertTrue(response.status_code == 200)\n\n    def test_request_and_profile_sql_detail(self):\n        random_profile = random.choice(\n            models.Profile.objects\n            .annotate(num=Count('queries'), profile_id=F('id'))\n            .values('profile_id', 'request_id')\n            .filter(request_id__isnull=False, num__gt=0)\n        )\n        random_sql_query = random.choice(\n            models.SQLQuery.objects\n            .annotate(sql_id=F('id'))\n            .values('sql_id')\n            .filter(profiles__id=random_profile['profile_id'])\n        )\n        kwargs = {}\n        kwargs.update(random_profile)\n        kwargs.update(random_sql_query)\n        response = self.client.get(silky_reverse('request_and_profile_sql_detail', kwargs=kwargs))\n        self.assertTrue(response.status_code == 200)\n\n    def test_profile_detail(self):\n        profile_query_data = random.choice(models.Profile.objects.values('id'))\n        profile_id = profile_query_data['id']\n        response = self.client.get(silky_reverse('profile_detail', kwargs={\n            'profile_id': profile_id\n        }))\n        self.assertTrue(response.status_code == 200)\n\n    def test_profile_sql(self):\n        profile_query_data = random.choice(\n            models.Profile.objects\n            .annotate(num=Count('queries'))\n            .values('id')\n            .filter(num__gt=0)\n        )\n        profile_id = profile_query_data['id']\n        response = self.client.get(silky_reverse('profile_sql', kwargs={'profile_id': profile_id}))\n        self.assertTrue(response.status_code == 200)\n\n    def test_profile_sql_detail(self):\n        profile_query_data = random.choice(\n            models.Profile.objects\n            .annotate(num=Count('queries'))\n            .values('id')\n            .filter(num__gt=0)\n        )\n        profile_id = profile_query_data['id']\n        sql_id = random.choice(models.SQLQuery.objects.filter(profiles=profile_id)).pk\n        response = self.client.get(silky_reverse('profile_sql_detail', kwargs={'profile_id': profile_id,\n                                                                               'sql_id': sql_id}))\n        self.assertTrue(response.status_code == 200)\n\n    def test_profiling(self):\n        response = self.client.get(silky_reverse('profiling'))\n        self.assertTrue(response.status_code == 200)\n"
  },
  {
    "path": "project/tests/test_execute_sql.py",
    "content": "from unittest.mock import Mock, NonCallableMagicMock, NonCallableMock, patch\n\nfrom django.test import TestCase\nfrom django.utils.encoding import force_str\n\nfrom silk.collector import DataCollector\nfrom silk.models import Request, SQLQuery\nfrom silk.sql import execute_sql\n\nfrom .util import delete_all_models\n\n_simple_mock_query_sql = 'SELECT * FROM table_name WHERE column1 = %s'\n_simple_mock_query_params = ('asdf',)\n_non_unicode_binary_mock_query_params = (b'\\x0a\\x00\\x00\\xff',)\n_unicode_binary_mock_query_params = ('🫠'.encode(),)\n\n\ndef mock_sql(mock_query_params):\n    mock_sql_query = Mock(spec_set=['_execute_sql', 'query', 'as_sql', 'connection'])\n    mock_sql_query._execute_sql = Mock()\n    mock_sql_query.query = NonCallableMock(spec_set=['model'])\n    mock_sql_query.query.model = Mock()\n    mock_sql_query.as_sql = Mock(return_value=(_simple_mock_query_sql, mock_query_params))\n\n    mock_sql_query.connection = NonCallableMock(\n        spec_set=['cursor', 'features', 'ops'],\n        cursor=Mock(\n            spec_set=['__call__'],\n            return_value=NonCallableMagicMock(spec_set=['__enter__', '__exit__', 'execute'])\n        ),\n        features=NonCallableMock(\n            spec_set=['supports_explaining_query_execution'],\n            supports_explaining_query_execution=True\n        ),\n        ops=NonCallableMock(spec_set=['explain_query_prefix'],\n                            explain_query_prefix=Mock(return_value='')),\n    )\n\n    return mock_sql_query, mock_query_params\n\n\nclass BaseTestCase(TestCase):\n    def tearDown(self):\n        DataCollector().stop_python_profiler()\n\n    def call_execute_sql(self, request, mock_query_params):\n        DataCollector().configure(request=request)\n        delete_all_models(SQLQuery)\n        self.query_string = _simple_mock_query_sql\n        self.mock_sql, self.query_params = mock_sql(mock_query_params)\n        self.kwargs = {\n            'one': 1,\n            'two': 2\n        }\n        self.args = [1, 2]\n        execute_sql(self.mock_sql, *self.args, **self.kwargs)\n\n\nclass TestCallNoRequest(BaseTestCase):\n    def setUp(self):\n        super().setUp()\n        self.call_execute_sql(None, _simple_mock_query_params)\n\n    def test_called(self):\n        self.mock_sql._execute_sql.assert_called_once_with(*self.args, **self.kwargs)\n\n    def test_count(self):\n        self.assertEqual(0, len(DataCollector().queries))\n\n\nclass TestCallRequest(BaseTestCase):\n    def test_query_simple(self):\n        self.call_execute_sql(Request(), _simple_mock_query_params)\n        self.mock_sql._execute_sql.assert_called_once_with(*self.args, **self.kwargs)\n        self.assertEqual(1, len(DataCollector().queries))\n        query = list(DataCollector().queries.values())[0]\n        expected = self.query_string % tuple(force_str(param) for param in self.query_params)\n        self.assertEqual(query['query'], expected)\n\n    def test_query_unicode(self):\n        self.call_execute_sql(Request(), _unicode_binary_mock_query_params)\n        self.mock_sql._execute_sql.assert_called_once_with(*self.args, **self.kwargs)\n        self.assertEqual(1, len(DataCollector().queries))\n        query = list(DataCollector().queries.values())[0]\n        expected = self.query_string % tuple(force_str(param) for param in self.query_params)\n        self.assertEqual(query['query'], expected)\n\n    def test_query_non_unicode(self):\n        self.call_execute_sql(Request(), _non_unicode_binary_mock_query_params)\n        self.mock_sql._execute_sql.assert_called_once_with(*self.args, **self.kwargs)\n        self.assertEqual(0, len(DataCollector().queries))\n\n\nclass TestCallSilky(BaseTestCase):\n    def test_no_effect(self):\n        DataCollector().configure()\n        sql, _ = mock_sql(_simple_mock_query_params)\n        sql.query.model = NonCallableMagicMock(spec_set=['__module__'])\n        sql.query.model.__module__ = 'silk.models'\n        # No SQLQuery models should be created for silk requests for obvious reasons\n        with patch('silk.sql.DataCollector', return_value=Mock()) as mock_DataCollector:\n            execute_sql(sql)\n            self.assertFalse(mock_DataCollector().register_query.call_count)\n\n\nclass TestCollectorInteraction(BaseTestCase):\n    def _query(self):\n        try:\n            query = list(DataCollector().queries.values())[0]\n        except IndexError:\n            self.fail('No queries created')\n        return query\n\n    def test_request(self):\n        DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))\n        sql, _ = mock_sql(_simple_mock_query_params)\n        execute_sql(sql)\n        query = self._query()\n        self.assertEqual(query['request'], DataCollector().request)\n\n    def test_registration(self):\n        DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))\n        sql, _ = mock_sql(_simple_mock_query_params)\n        execute_sql(sql)\n        query = self._query()\n        self.assertIn(query, DataCollector().queries.values())\n\n    def test_explain_simple(self):\n        DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))\n        sql, params = mock_sql(_simple_mock_query_params)\n        prefix = \"EXPLAIN\"\n        mock_cursor = sql.connection.cursor.return_value.__enter__.return_value\n        sql.connection.ops.explain_query_prefix.return_value = prefix\n        execute_sql(sql)\n        self.assertNotIn(prefix, params)\n        mock_cursor.execute.assert_called_once_with(f\"{prefix} {_simple_mock_query_sql}\", params)\n\n    def test_explain_unicode(self):\n        DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))\n        sql, params = mock_sql(_unicode_binary_mock_query_params)\n        prefix = \"EXPLAIN\"\n        mock_cursor = sql.connection.cursor.return_value.__enter__.return_value\n        sql.connection.ops.explain_query_prefix.return_value = prefix\n        execute_sql(sql)\n        self.assertNotIn(prefix, params)\n        mock_cursor.execute.assert_called_once_with(f\"{prefix} {_simple_mock_query_sql}\", params)\n\n    def test_explain_non_unicode(self):\n        DataCollector().configure(request=Request.objects.create(path='/path/to/somewhere'))\n        sql, params = mock_sql(_non_unicode_binary_mock_query_params)\n        prefix = \"EXPLAIN\"\n        mock_cursor = sql.connection.cursor.return_value.__enter__.return_value\n        sql.connection.ops.explain_query_prefix.return_value = prefix\n        execute_sql(sql)\n        self.assertNotIn(prefix, params)\n        self.assertFalse(mock_cursor.execute.called)\n"
  },
  {
    "path": "project/tests/test_filters.py",
    "content": "import calendar\nimport random\nfrom datetime import datetime, timedelta, timezone\nfrom itertools import groupby\nfrom math import floor\n\nfrom django.test import TestCase\nfrom django.utils import timezone as django_timezone\n\nfrom silk import models\nfrom silk.request_filters import (\n    AfterDateFilter,\n    BeforeDateFilter,\n    FunctionNameFilter,\n    MethodFilter,\n    NameFilter,\n    NumQueriesFilter,\n    OverallTimeFilter,\n    PathFilter,\n    SecondsFilter,\n    StatusCodeFilter,\n    TimeSpentOnQueriesFilter,\n    ViewNameFilter,\n)\n\nfrom .test_lib.mock_suite import MockSuite\nfrom .util import delete_all_models\n\nmock_suite = MockSuite()\n\n\nclass TestRequestFilters(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n\n    def _time_stamp(self, dt):\n        return calendar.timegm(dt.utctimetuple())\n\n    def test_seconds_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        n = 0\n        for r in requests:\n            r.start_time = django_timezone.now() - timedelta(seconds=n)\n            r.save()\n            n += 1\n        requests = models.Request.objects.filter(SecondsFilter(5))\n        for r in requests:\n            dt = r.start_time\n            seconds = self._time_stamp(django_timezone.now()) - self._time_stamp(dt)\n            self.assertTrue(seconds < 6)  # 6 to give a bit of leeway in case takes too long\n\n    def test_view_name_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        r = random.choice(requests)\n        view_name = r.view_name\n        requests = models.Request.objects.filter(ViewNameFilter(view_name))\n        for r in requests:\n            self.assertTrue(r.view_name == view_name)\n\n    def test_path_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        r = random.choice(requests)\n        path = r.path\n        requests = models.Request.objects.filter(PathFilter(path))\n        for r in requests:\n            self.assertTrue(r.path == path)\n\n    def test_num_queries_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        counts = sorted(x.queries.count() for x in requests)\n        c = counts[int(floor(len(counts) / 2))]\n        num_queries_filter = NumQueriesFilter(c)\n        query_set = models.Request.objects.all()\n        query_set = num_queries_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(num_queries_filter)\n        for f in filtered:\n            self.assertGreaterEqual(f.queries.count(), c)\n\n    def test_time_spent_queries_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        time_taken = sorted(sum(q.time_taken for q in x.queries.all()) for x in requests)\n        c = time_taken[int(floor(len(time_taken) / 2))]\n        time_taken_filter = TimeSpentOnQueriesFilter(c)\n        query_set = models.Request.objects.all()\n        query_set = time_taken_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(time_taken_filter)\n        for f in filtered:\n            self.assertGreaterEqual(sum(q.time_taken for q in f.queries.all()), c)\n\n    def test_time_spent_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 10)]\n        time_taken = sorted(x.time_taken for x in requests)\n        c = time_taken[int(floor(len(time_taken) / 2))]\n        time_taken_filter = OverallTimeFilter(c)\n        query_set = models.Request.objects.all()\n        query_set = time_taken_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(time_taken_filter)\n        for f in filtered:\n            self.assertGreaterEqual(round(f.time_taken), round(c))\n\n    def test_status_code_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 50)]\n        requests = sorted(requests, key=lambda x: x.response.status_code)\n        by_status_code = groupby(requests, key=lambda x: x.response.status_code)\n        for status_code, expected in by_status_code:\n            status_code_filter = StatusCodeFilter(status_code)\n            query_set = models.Request.objects.all()\n            query_set = status_code_filter.contribute_to_query_set(query_set)\n            filtered = query_set.filter(status_code_filter)\n            self.assertEqual(len(list(expected)), filtered.count())\n\n    def test_method_filter(self):\n        requests = [mock_suite.mock_request() for _ in range(0, 50)]\n        requests = sorted(requests, key=lambda x: x.method)\n        by_method = groupby(requests, key=lambda x: x.method)\n        for method, expected in by_method:\n            method_filter = MethodFilter(method)\n            query_set = models.Request.objects.all()\n            query_set = method_filter.contribute_to_query_set(query_set)\n            filtered = query_set.filter(method_filter)\n            self.assertEqual(len(list(expected)), filtered.count())\n\n\nclass TestRequestAfterDateFilter(TestCase):\n    def assertFilter(self, dt, f):\n        requests = models.Request.objects.filter(f)\n        for r in requests:\n            self.assertTrue(r.start_time > dt)\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        cls.requests = [mock_suite.mock_request() for _ in range(0, 10)]\n\n    def test_after_date_filter(self):\n        r = random.choice(self.requests)\n        dt = r.start_time\n        f = AfterDateFilter(dt)\n        self.assertFilter(dt, f)\n\n    def test_after_date_filter_str(self):\n        r = random.choice(self.requests)\n        dt = r.start_time\n        fmt = AfterDateFilter.fmt\n        dt_str = dt.strftime(fmt)\n        date_filter = AfterDateFilter\n        f = date_filter(dt_str)\n        new_dt = datetime.strptime(dt_str, fmt)\n        new_dt = django_timezone.make_aware(new_dt, timezone.utc)\n        self.assertFilter(new_dt, f)\n\n\nclass TestRequestBeforeDateFilter(TestCase):\n    def assertFilter(self, dt, f):\n        requests = models.Request.objects.filter(f)\n        for r in requests:\n            self.assertTrue(r.start_time < dt)\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        cls.requests = [mock_suite.mock_request() for _ in range(0, 10)]\n\n    def test_before_date_filter(self):\n        r = random.choice(self.requests)\n        dt = r.start_time\n        f = BeforeDateFilter(dt)\n        self.assertFilter(dt, f)\n\n    def test_before_date_filter_str(self):\n        r = random.choice(self.requests)\n        dt = r.start_time\n        fmt = BeforeDateFilter.fmt\n        dt_str = dt.strftime(fmt)\n        date_filter = BeforeDateFilter\n        f = date_filter(dt_str)\n        new_dt = datetime.strptime(dt_str, fmt)\n        new_dt = django_timezone.make_aware(new_dt, timezone.utc)\n        self.assertFilter(new_dt, f)\n\n\nclass TestProfileFilters(TestCase):\n    def setUp(self):\n        delete_all_models(models.Profile)\n\n    def test_name_filter(self):\n        profiles = mock_suite.mock_profiles(n=10)\n        p = random.choice(profiles)\n        name = p.name\n        requests = models.Profile.objects.filter(NameFilter(name))\n        for p in requests:\n            self.assertTrue(p.name == name)\n\n    def test_function_name_filter(self):\n        profiles = mock_suite.mock_profiles(n=10)\n        p = random.choice(profiles)\n        func_name = p.func_name\n        requests = models.Profile.objects.filter(FunctionNameFilter(func_name))\n        for p in requests:\n            self.assertTrue(p.func_name == func_name)\n\n    def test_num_queries_filter(self):\n        profiles = mock_suite.mock_profiles(n=10)\n        counts = sorted(x.queries.count() for x in profiles)\n        c = counts[int(floor(len(counts) / 2))]\n        num_queries_filter = NumQueriesFilter(c)\n        query_set = models.Profile.objects.all()\n        query_set = num_queries_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(num_queries_filter)\n        for f in filtered:\n            self.assertGreaterEqual(f.queries.count(), c)\n\n    def test_time_spent_queries_filter(self):\n        profiles = mock_suite.mock_profiles(n=10)\n        time_taken = sorted(sum(q.time_taken for q in x.queries.all()) for x in profiles)\n        c = time_taken[int(floor(len(time_taken) / 2))]\n        time_taken_filter = TimeSpentOnQueriesFilter(c)\n        query_set = models.Profile.objects.all()\n        query_set = time_taken_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(time_taken_filter)\n        for f in filtered:\n            self.assertGreaterEqual(sum(q.time_taken for q in f.queries.all()), c)\n\n    def test_time_spent_filter(self):\n        profiles = [mock_suite.mock_request() for _ in range(0, 10)]\n        time_taken = sorted(x.time_taken for x in profiles)\n        c = time_taken[int(floor(len(time_taken) / 2))]\n        time_taken_filter = OverallTimeFilter(c)\n        query_set = models.Profile.objects.all()\n        query_set = time_taken_filter.contribute_to_query_set(query_set)\n        filtered = query_set.filter(time_taken_filter)\n        for f in filtered:\n            self.assertGreaterEqual(f.time_taken, c)\n"
  },
  {
    "path": "project/tests/test_lib/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "project/tests/test_lib/assertion.py",
    "content": "def dict_contains(child_dict, parent_dict):\n    for key, value in child_dict.items():\n        if key not in parent_dict:\n            return False\n        if parent_dict[key] != value:\n            return False\n    return True\n"
  },
  {
    "path": "project/tests/test_lib/mock_suite.py",
    "content": "import json\nimport os\nimport random\nimport traceback\nfrom datetime import timedelta\n\nfrom django.core import management\nfrom django.utils import timezone\n\nfrom silk import models\nfrom silk.models import Profile, SQLQuery\n\n\nclass MockSuite:\n    \"\"\"\n    Provides some fake data to play around with. Also useful for testing\n    \"\"\"\n    methods = ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'OPTIONS']\n    path_components = ['path', 'to', 'somewhere', 'around', 'here', 'bobs', 'your', 'uncle']\n    status_codes = [200, 201, 300, 301, 302, 403, 404, 500]\n    profile_names = ['slow_bit_of_code', 'terrible_dependency', 'what_on_earth_is_this_code_doing']\n    file_path = [os.path.realpath(__file__)]\n    func_names = ['', '', '', 'foo', 'bar']\n    view_names = ['app:blah', 'index', 'root', 'xxx:xyx']\n    sql_queries = ['''\n    SELECT Book.title AS Title,\n    COUNT(*) AS Authors\n     FROM  Book\n     JOIN  Book_author\n       ON  Book.isbn = Book_author.isbn\n     GROUP BY Book.title;\n ''',\n                   '''\n    SELECT * FROM table\n    ''', '''\n    SELECT *\n    FROM  Book\n    WHERE price > 100.00\n    ORDER BY title;\n  ''', '''\n  SELECT title,\n       COUNT(*) AS Authors\n FROM  Book\n NATURAL JOIN Book_author\n GROUP BY title;\n  ''',\n                   '''\n                   SELECT A.Col1, A.Col2, B.Col1,B.Col2\n      FROM (SELECT RealTableZ.Col1, RealTableY.Col2, RealTableY.ID AS ID\n              FROM RealTableZ\n   LEFT OUTER JOIN RealTableY\n                ON RealTableZ.ForeignKeyY=RealTableY.ID\n             WHERE RealTableY.Col11>14\n            ) AS B\n        INNER JOIN A\n                ON A.ForeignKeyY=B.ID\n                   ''']\n\n    response_content_types = ['text/html', 'application/json', 'text/css']\n    response_content = {\n        'text/html': ['<html></html>'],\n        'text/css': ['#blah {font-weight: bold}'],\n        'application/json': ['[1, 2, 3]']\n    }\n    request_content_types = ['application/json']\n    request_content = {\n        'application/json': ['{\"blah\": 5}']\n    }\n\n    def _random_method(self):\n        return random.choice(self.methods)\n\n    def _random_path(self):\n        num_components = random.randint(1, 5)\n        return '/' + '/'.join(random.sample(self.path_components, num_components)) + '/'\n\n    def _random_query(self):\n        return random.choice(self.sql_queries)\n\n    def mock_sql_queries(self, request=None, profile=None, n=1, as_dict=False):\n        start_time, end_time = self._random_time()\n        queries = []\n        for _ in range(0, n):\n            tb = ''.join(reversed(traceback.format_stack()))\n            d = {\n                'query': self._random_query(),\n                'start_time': start_time,\n                'end_time': end_time,\n                'request': request,\n                'traceback': tb\n            }\n            if as_dict:\n                queries.append(d)\n            else:\n                query = SQLQuery.objects.create(**d)\n                queries.append(query)\n        if profile:\n            if as_dict:\n                for q in queries:\n                    profile['queries'].append(q)\n            else:\n                profile.queries.set(queries)\n        return queries\n\n    def mock_profile(self, request=None):\n        start_time, end_time = self._random_time()\n        dynamic = random.choice([True, False])\n        profile = Profile.objects.create(start_time=start_time,\n                                         end_time=end_time,\n                                         request=request,\n                                         name=random.choice(self.profile_names),\n                                         file_path=random.choice(self.file_path),\n                                         line_num=3,\n                                         func_name=random.choice(self.func_names),\n                                         dynamic=dynamic,\n                                         end_line_num=6 if dynamic else None,\n                                         exception_raised=random.choice([True, False])\n                                         )\n        self.mock_sql_queries(profile=profile, n=random.randint(0, 10))\n        return profile\n\n    def mock_profiles(self, request=None, n=1):\n        profiles = []\n\n        for _ in range(0, n):\n            profile = self.mock_profile(request)\n            profiles.append(profile)\n        return profiles\n\n    def _random_time(self):\n        start_time = timezone.now()\n        duration = timedelta(milliseconds=random.randint(0, 3000))\n        end_time = start_time + duration\n        return start_time, end_time\n\n    def mock_request(self):\n        start_time, end_time = self._random_time()\n        num_sql_queries = random.randint(0, 20)\n        request_content_type = random.choice(self.request_content_types)\n        request_body = random.choice(self.request_content[request_content_type])\n        time_taken = end_time - start_time\n        time_taken = time_taken.total_seconds()\n        request = models.Request.objects.create(method=self._random_method(),\n                                                path=self._random_path(),\n                                                num_sql_queries=num_sql_queries,\n                                                start_time=start_time,\n                                                end_time=end_time,\n                                                view_name=random.choice(self.view_names),\n                                                time_taken=time_taken,\n                                                encoded_headers=json.dumps({'content-type': request_content_type}),\n                                                body=request_body)\n        response_content_type = random.choice(self.response_content_types)\n        response_body = random.choice(self.response_content[response_content_type])\n        models.Response.objects.create(request=request,\n                                       status_code=random.choice(self.status_codes),\n                                       encoded_headers=json.dumps({'content-type': response_content_type}),\n                                       body=response_body)\n        self.mock_sql_queries(request=request, n=num_sql_queries)\n        self.mock_profiles(request, random.randint(0, 2))\n        return request\n\n\nif __name__ == '__main__':\n    management.call_command('flush', interactive=False)\n    requests = [MockSuite().mock_request() for _ in range(0, 100)]\n"
  },
  {
    "path": "project/tests/test_models.py",
    "content": "import datetime\nimport uuid\n\nfrom django.core.management import call_command\nfrom django.test import TestCase, override_settings\nfrom freezegun import freeze_time\n\nfrom silk import models\nfrom silk.config import SilkyConfig\nfrom silk.storage import ProfilerResultStorage\n\nfrom .factories import RequestMinFactory, ResponseFactory, SQLQueryFactory\n\n# TODO test atomicity\n\n# http://stackoverflow.com/questions/13397038/uuid-max-character-length\n# UUID_MAX_LENGTH = 36\n\n# TODO move to separate file test and collection it self\n\n\nclass CaseInsensitiveDictionaryTest:\n    pass\n\n\nclass RequestTest(TestCase):\n\n    def setUp(self):\n\n        self.obj = RequestMinFactory.create()\n        self.max_percent = SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT\n        self.max_requests = SilkyConfig().SILKY_MAX_RECORDED_REQUESTS\n\n    def tearDown(self):\n\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = self.max_percent\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = self.max_requests\n\n    def test_uuid_is_primary_key(self):\n\n        self.assertIsInstance(self.obj.id, uuid.UUID)\n\n    @freeze_time('2016-01-01 12:00:00')\n    def test_start_time_field_default(self):\n\n        obj = RequestMinFactory.create()\n        self.assertEqual(obj.start_time, datetime.datetime(2016, 1, 1, 12, 0, 0, tzinfo=datetime.timezone.utc))\n\n    def test_total_meta_time_if_have_no_meta_and_queries_time(self):\n\n        self.assertEqual(self.obj.total_meta_time, 0)\n\n    def test_total_meta_time_if_have_meta_time_spent_queries(self):\n\n        obj = RequestMinFactory.create(meta_time_spent_queries=10.5)\n        self.assertEqual(obj.total_meta_time, 10.5)\n\n    def test_total_meta_time_if_meta_time(self):\n\n        obj = RequestMinFactory.create(meta_time=3.3)\n        self.assertEqual(obj.total_meta_time, 3.3)\n\n    def test_total_meta_if_self_have_it_meta_and_queries_time(self):\n\n        obj = RequestMinFactory.create(meta_time=3.3, meta_time_spent_queries=10.5)\n        self.assertEqual(obj.total_meta_time, 13.8)\n\n    def test_time_spent_on_sql_queries_if_has_no_related_SQLQueries(self):\n\n        self.assertEqual(self.obj.time_spent_on_sql_queries, 0)\n\n    def test_time_spent_on_sql_queries_if_has_related_SQLQueries_with_no_time_taken(self):\n\n        query = SQLQueryFactory()\n        self.obj.queries.add(query)\n\n        self.assertEqual(query.time_taken, None)\n\n        # No exception should be raised, and the result should be 0.0\n        self.assertEqual(self.obj.time_spent_on_sql_queries, 0.0)\n\n    def test_time_spent_on_sql_queries_if_has_related_SQLQueries_and_time_taken(self):\n\n        query1 = SQLQueryFactory(time_taken=3.5)\n        query2 = SQLQueryFactory(time_taken=1.5)\n        RequestMinFactory().queries.add(query1, query2)\n\n        self.assertEqual(self.obj.time_spent_on_sql_queries, 0)\n\n    def test_headers_if_has_no_encoded_headers(self):\n\n        self.assertIsInstance(self.obj.headers, models.CaseInsensitiveDictionary)\n        self.assertFalse(self.obj.headers)\n\n    def test_headers_if_has_encoded_headers(self):\n\n        self.obj.encoded_headers = '{\"some-header\": \"some_data\"}'\n        self.assertIsInstance(self.obj.headers, models.CaseInsensitiveDictionary)\n        self.assertDictEqual(self.obj.headers, {'some-header': 'some_data'})\n\n    def test_content_type_if_no_headers(self):\n\n        self.assertEqual(self.obj.content_type, None)\n\n    def test_content_type_if_no_specific_content_type(self):\n\n        self.obj.encoded_headers = '{\"foo\": \"some_data\"}'\n        self.assertEqual(self.obj.content_type, None)\n\n    def test_content_type_if_header_have_content_type(self):\n\n        self.obj.encoded_headers = '{\"content-type\": \"some_data\"}'\n        self.assertEqual(self.obj.content_type, \"some_data\")\n\n    def test_garbage_collect(self):\n\n        self.assertTrue(models.Request.objects.filter(id=self.obj.id).exists())\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 100\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = 0\n        models.Request.garbage_collect()\n        self.assertFalse(models.Request.objects.filter(id=self.obj.id).exists())\n\n    def test_probabilistic_garbage_collect(self):\n\n        self.assertTrue(models.Request.objects.filter(id=self.obj.id).exists())\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 0\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = 0\n        models.Request.garbage_collect()\n        self.assertTrue(models.Request.objects.filter(id=self.obj.id).exists())\n\n    def test_force_garbage_collect(self):\n\n        self.assertTrue(models.Request.objects.filter(id=self.obj.id).exists())\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 0\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = 0\n        models.Request.garbage_collect(force=True)\n        self.assertFalse(models.Request.objects.filter(id=self.obj.id).exists())\n\n    def test_greedy_garbage_collect(self):\n\n        for x in range(3):\n            obj = models.Request(path='/', method='get')\n            obj.save()\n        self.assertEqual(models.Request.objects.count(), 4)\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT = 50\n        SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = 3\n        models.Request.garbage_collect(force=True)\n        self.assertGreater(models.Request.objects.count(), 0)\n\n    def test_save_if_have_no_raw_body(self):\n\n        obj = models.Request(path='/some/path/', method='get')\n        self.assertEqual(obj.raw_body, '')\n        obj.save()\n        self.assertEqual(obj.raw_body, '')\n\n    def test_save_if_have_raw_body(self):\n\n        obj = models.Request(path='/some/path/', method='get', raw_body='some text')\n        obj.save()\n        self.assertEqual(obj.raw_body, 'some text')\n\n    def test_save_if_have_no_body(self):\n\n        obj = models.Request(path='/some/path/', method='get')\n        self.assertEqual(obj.body, '')\n        obj.save()\n        self.assertEqual(obj.body, '')\n\n    def test_save_if_have_body(self):\n\n        obj = models.Request(path='/some/path/', method='get', body='some text')\n        obj.save()\n        self.assertEqual(obj.body, 'some text')\n\n    def test_save_if_have_no_end_time(self):\n\n        obj = models.Request(path='/some/path/', method='get')\n        self.assertEqual(obj.time_taken, None)\n        obj.save()\n        self.assertEqual(obj.time_taken, None)\n\n    @freeze_time('2016-01-01 12:00:00')\n    def test_save_if_have_end_time(self):\n\n        date = datetime.datetime(2016, 1, 1, 12, 0, 3, tzinfo=datetime.timezone.utc)\n        obj = models.Request(path='/some/path/', method='get', end_time=date)\n        obj.save()\n        self.assertEqual(obj.end_time, date)\n        self.assertEqual(obj.time_taken, 3000.0)\n\n    def test_prof_file_default_storage(self):\n        obj = models.Request(path='/some/path/', method='get')\n        self.assertEqual(obj.prof_file.storage.__class__, ProfilerResultStorage)\n\n\nclass ResponseTest(TestCase):\n\n    def setUp(self):\n\n        self.obj = ResponseFactory.create()\n\n    def test_uuid_is_primary_key(self):\n\n        self.assertIsInstance(self.obj.id, uuid.UUID)\n\n    def test_is_1to1_related_to_request(self):\n\n        request = RequestMinFactory.create()\n        resp = models.Response.objects.create(status_code=200, request=request)\n\n        self.assertEqual(request.response, resp)\n\n    def test_headers_if_has_no_encoded_headers(self):\n\n        self.assertIsInstance(self.obj.headers, models.CaseInsensitiveDictionary)\n        self.assertFalse(self.obj.headers)\n\n    def test_headers_if_has_encoded_headers(self):\n\n        self.obj.encoded_headers = '{\"some-header\": \"some_data\"}'\n        self.assertIsInstance(self.obj.headers, models.CaseInsensitiveDictionary)\n        self.assertDictEqual(self.obj.headers, {'some-header': 'some_data'})\n\n    def test_content_type_if_no_headers(self):\n\n        self.assertEqual(self.obj.content_type, None)\n\n    def test_content_type_if_no_specific_content_type(self):\n\n        self.obj.encoded_headers = '{\"foo\": \"some_data\"}'\n        self.assertEqual(self.obj.content_type, None)\n\n    def test_content_type_if_header_have_content_type(self):\n\n        self.obj.encoded_headers = '{\"content-type\": \"some_data\"}'\n        self.assertEqual(self.obj.content_type, \"some_data\")\n\n\nclass SQLQueryManagerTest(TestCase):\n\n    def test_if_no_args_passed(self):\n        pass\n\n    def test_if_one_arg_passed(self):\n        pass\n\n    def if_a_few_args_passed(self):\n        pass\n\n    def if_objs_kw_arg_passed(self):\n        pass\n\n    def if_not_the_objs_kw_arg_passed(self):\n        pass\n\n\nclass SQLQueryTest(TestCase):\n\n    def setUp(self):\n\n        self.obj = SQLQueryFactory.create()\n        self.end_time = datetime.datetime(2016, 1, 1, 12, 0, 5, tzinfo=datetime.timezone.utc)\n        self.start_time = datetime.datetime(2016, 1, 1, 12, 0, 0, tzinfo=datetime.timezone.utc)\n\n    @freeze_time('2016-01-01 12:00:00')\n    def test_start_time_field_default(self):\n\n        obj = SQLQueryFactory.create()\n        self.assertEqual(obj.start_time, datetime.datetime(2016, 1, 1, 12, 0, 0, tzinfo=datetime.timezone.utc))\n\n    def test_is_m2o_related_to_request(self):\n\n        request = RequestMinFactory()\n        self.obj.request = request\n        self.obj.save()\n\n        self.assertIn(self.obj, request.queries.all())\n\n    def test_query_manager_instance(self):\n\n        self.assertIsInstance(models.SQLQuery.objects, models.SQLQueryManager)\n\n    def test_traceback_ln_only(self):\n\n        self.obj.traceback = \"\"\"Traceback (most recent call last):\n          File \"/home/user/some_script.py\", line 10, in some_func\n            pass\n          File \"/usr/lib/python2.7/bdb.py\", line 20, in trace_dispatch\n            return self.dispatch_return(frame, arg)\n          File \"/usr/lib/python2.7/bdb.py\", line 30, in dispatch_return\n            if self.quitting: raise BdbQuit\n        BdbQuit\"\"\"\n\n        output = ('Traceback (most recent call last):\\n'\n                  '            pass\\n'\n                  '            return self.dispatch_return(frame, arg)\\n'\n                  '            if self.quitting: raise BdbQuit')\n\n        self.assertEqual(self.obj.traceback_ln_only, output)\n\n    def test_formatted_query_if_no_query(self):\n\n        self.obj.query = \"\"\n        self.obj.formatted_query\n\n    def test_formatted_query_if_has_a_query(self):\n\n        query = \"\"\"SELECT Book.title AS Title,\n             COUNT(*) AS Authors\n             FROM  Book\n             JOIN  Book_author\n                 ON  Book.isbn = Book_author.isbn\n             GROUP BY Book.title;\"\"\"\n\n        self.obj.query = query\n        self.obj.formatted_query\n\n    def test_num_joins_if_no_joins_in_query(self):\n\n        query = \"\"\"SELECT Book.title AS Title,\n             COUNT(*) AS Authors\n             FROM  Book\n             GROUP BY Book.title;\"\"\"\n\n        self.obj.query = query\n\n        self.assertEqual(self.obj.num_joins, 0)\n\n    def test_num_joins_if_joins_in_query(self):\n\n        query = \"\"\"SELECT p.id\n                   FROM Person p\n                       JOIN address a ON p.Id = a.Person_ID\n                       JOIN address_type at ON a.Type_ID = at.Id\n                       JOIN `option` o ON p.Id = o.person_Id\n                       JOIN option_address_type oat ON o.id = oat.option_id\n                    WHERE a.country_id = 1 AND at.id <> oat.type_id;\"\"\"\n\n        self.obj.query = query\n        self.assertEqual(self.obj.num_joins, 4)\n\n    def test_num_joins_if_no_joins_in_query_but_this_word_searched(self):\n\n        query = \"\"\"SELECT Book.title FROM  Book WHERE Book.title=`Join the dark side, Luke!`;\"\"\"\n\n        self.obj.query = query\n        self.assertEqual(self.obj.num_joins, 0)\n\n    def test_num_joins_if_multiple_statement_in_query(self):\n        query = \"\"\"SELECT Book.title FROM  Book WHERE Book.title=`Join the dark side, Luke!`;\n                   SELECT Book.joiner FROM Book\n                    LEFT OUTER JOIN joined ON Book.joiner = joined.joiner\n                    INNER JOIN joined ON Book.joiner = joined.joiner\n                   WHERE Book.joiner='Join i am'\"\"\"\n\n        self.obj.query = query\n        self.assertEqual(self.obj.num_joins, 2)\n\n    def test_tables_involved_if_no_query(self):\n\n        self.obj.query = ''\n\n        self.assertEqual(self.obj.tables_involved, [])\n\n    def test_tables_involved_if_query_has_only_a_from_token(self):\n\n        query = \"\"\"SELECT * FROM  Book;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Book;'])\n\n    def test_tables_involved_if_query_has_a_join_token(self):\n\n        query = \"\"\"SELECT p.id FROM Person p JOIN Address a ON p.Id = a.Person_ID;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Person', 'Address'])\n\n    def test_tables_involved_if_query_has_an_as_token(self):\n\n        query = 'SELECT Book.title AS Title FROM  Book GROUP BY Book.title;'\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Title', 'Book'])\n\n    # FIXME bug, not a feature\n    def test_tables_involved_check_with_fake_a_from_token(self):\n\n        query = \"\"\"SELECT * FROM  Book WHERE Book.title=`EVIL FROM WITHIN`;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Book', 'WITHIN`;'])\n\n    # FIXME bug, not a feature\n    def test_tables_involved_check_with_fake_a_join_token(self):\n\n        query = \"\"\"SELECT * FROM  Book WHERE Book.title=`Luke, join the dark side!`;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Book', 'the'])\n\n    # FIXME bug, not a feature\n    def test_tables_involved_check_with_fake_an_as_token(self):\n\n        query = \"\"\"SELECT * FROM  Book WHERE Book.title=`AS SOON AS POSIABLE`;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Book', 'POSIABLE`;'])\n\n    def test_tables_involved_if_query_has_subquery(self):\n\n        query = '''SELECT A.Col1, A.Col2, B.Col1,B.Col2\n                  FROM (SELECT RealTableZ.Col1, RealTableY.Col2, RealTableY.ID AS ID\n                          FROM RealTableZ\n                               LEFT OUTER JOIN RealTableY ON RealTableZ.ForeignKeyY=RealTableY.ID\n                         WHERE RealTableY.Col11>14\n                        ) AS B INNER JOIN A\n                ON A.ForeignKeyY=B.ID;'''\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['ID', 'RealTableZ', 'RealTableY', 'B', 'A'])\n\n    # FIXME bug, not a feature\n    def test_tables_involved_if_query_has_django_aliase_on_column_names(self):\n\n        query = 'SELECT foo AS bar FROM some_table;'\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['bar', 'some_table;'])\n\n    def test_tables_involved_if_query_has_update_token(self):\n\n        query = \"\"\"UPDATE Book SET title = 'New Title' WHERE id = 1;\"\"\"\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Book'])\n\n    def test_tables_involved_in_complex_update_query(self):\n\n        query = '''UPDATE Person p\n                SET p.name = (SELECT c.name FROM Company c WHERE c.id = p.company_id),\n                    p.salary = p.salary * 1.1\n                FROM Department d\n                WHERE p.department_id = d.id AND d.budget > 100000;\n        '''\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Person', 'Company', 'Department'])\n\n    def test_tables_involved_in_update_with_subquery(self):\n\n        query = '''UPDATE Employee e\n                SET e.bonus = (SELECT AVG(salary) FROM Employee WHERE department_id = e.department_id)\n                WHERE e.performance = 'excellent';\n        '''\n        self.obj.query = query\n        self.assertEqual(self.obj.tables_involved, ['Employee', 'Employee'])\n\n    def test_save_if_no_end_and_start_time(self):\n\n        obj = SQLQueryFactory.create()\n\n        self.assertEqual(obj.time_taken, None)\n\n    @freeze_time('2016-01-01 12:00:00')\n    def test_save_if_has_end_time(self):\n\n        # datetime.datetime(2016, 1, 1, 12, 0, 5, tzinfo=datetime.timezone.utc)\n        obj = SQLQueryFactory.create(end_time=self.end_time)\n\n        self.assertEqual(obj.time_taken, 5000.0)\n\n    @freeze_time('2016-01-01 12:00:00')\n    def test_save_if_has_start_time(self):\n\n        obj = SQLQueryFactory.create(start_time=self.start_time)\n\n        self.assertEqual(obj.time_taken, None)\n\n    def test_save_if_has_end_and_start_time(self):\n\n        obj = SQLQueryFactory.create(start_time=self.start_time, end_time=self.end_time)\n\n        self.assertEqual(obj.time_taken, 5000.0)\n\n    def test_save_if_has_pk_and_request(self):\n\n        self.obj.request = RequestMinFactory.create()\n        self.obj.save()\n        self.assertEqual(self.obj.request.num_sql_queries, 0)\n\n    def test_save_if_has_no_pk(self):\n\n        obj = SQLQueryFactory.build(start_time=self.start_time, end_time=self.end_time)\n        obj.request = RequestMinFactory.create()\n        obj.save()\n        self.assertEqual(obj.request.num_sql_queries, 1)\n\n    # should not rise\n    def test_save_if_has_no_request(self):\n\n        obj = SQLQueryFactory.build(start_time=self.start_time, end_time=self.end_time)\n        obj.save()\n\n    # FIXME a bug\n    def test_delete_if_no_related_requests(self):\n\n        with self.assertRaises(AttributeError):\n            self.obj.delete()\n\n        # self.assertNotIn(self.obj, models.SQLQuery.objects.all())\n\n    def test_delete_if_has_request(self):\n\n        self.obj.request = RequestMinFactory.create()\n        self.obj.save()\n        self.obj.delete()\n\n        self.assertNotIn(self.obj, models.SQLQuery.objects.all())\n\n\nclass NoPendingMigrationsTest(TestCase):\n    \"\"\"\n    Test if proper migrations are added and the models state is consistent.\n    It should make sure that no new migrations are created for this app,\n    when end-user runs `makemigrations` command.\n    \"\"\"\n\n    def test_no_pending_migrations(self):\n        call_command(\"makemigrations\", \"silk\", \"--check\", \"--dry-run\")\n\n    @override_settings(DEFAULT_AUTO_FIELD='django.db.models.BigAutoField')\n    def test_check_with_overridden_default_auto_field(self):\n        \"\"\"\n        Test with `BigAutoField` set as `DEFAULT_AUTO_FIELD` - which is\n        default when generating proj with Django 3.2.\n        \"\"\"\n        self.test_no_pending_migrations()\n\n\nclass BaseProfileTest(TestCase):\n    pass\n\n\nclass ProfileTest(TestCase):\n    pass\n"
  },
  {
    "path": "project/tests/test_multipart_forms.py",
    "content": "from unittest.mock import Mock\n\nfrom django.test import TestCase\nfrom django.urls import reverse\n\nfrom silk.model_factory import RequestModelFactory, multipart_form\n\n\nclass TestMultipartForms(TestCase):\n\n    def test_no_max_request(self):\n        mock_request = Mock()\n        mock_request.headers = {'content-type': multipart_form}\n        mock_request.GET = {}\n        mock_request.path = reverse('silk:requests')\n        mock_request.method = 'post'\n        mock_request.body = Mock()\n        request_model = RequestModelFactory(mock_request).construct_request_model()\n        self.assertFalse(request_model.body)\n        self.assertEqual(b\"Raw body not available for multipart_form data, Silk is not showing file uploads.\", request_model.raw_body)\n        mock_request.body.assert_not_called()\n"
  },
  {
    "path": "project/tests/test_profile_dot.py",
    "content": "# std\nimport cProfile\nimport os\nimport tempfile\nfrom contextlib import contextmanager\nfrom unittest.mock import MagicMock\n\n# 3rd party\nfrom django.test import TestCase\nfrom networkx.drawing.nx_pydot import read_dot\n\n# silk\nfrom silk.views.profile_dot import (\n    _create_dot,\n    _create_profile,\n    _temp_file_from_file_field,\n)\n\n\nclass ProfileDotViewTestCase(TestCase):\n\n    @classmethod\n    @contextmanager\n    def _stats_file(cls):\n        \"\"\"\n        Context manager to create some arbitrary profiling stats in a temp file, returning the filename on enter,\n        and removing the temp file on exit.\n        \"\"\"\n        try:\n            with tempfile.NamedTemporaryFile(delete=False) as stats:\n                pass\n            cProfile.run('1+1', stats.name)\n            yield stats.name\n        finally:\n            os.unlink(stats.name)\n\n    @classmethod\n    @contextmanager\n    def _stats_data(cls):\n        \"\"\"\n        Context manager to create some arbitrary profiling stats in a temp file, returning the data on enter,\n        and removing the temp file on exit.\n        \"\"\"\n        with cls._stats_file() as filename:\n            with open(filename, 'rb') as f:\n                yield f.read()\n\n    @classmethod\n    def _profile(cls):\n        \"\"\"Create some arbitrary profiling stats.\"\"\"\n        with cls._stats_file() as filename:\n            # create profile - we don't need to convert a django file field to a temp file\n            # just use the filename of the temp file already created\n            @contextmanager\n            def dummy(_):\n                yield filename\n            return _create_profile(filename, dummy)\n\n    @classmethod\n    def _mock_file(cls, data):\n        \"\"\"\n        Get a mock object that looks like a file but returns data when read is called.\n        \"\"\"\n        i = [0]\n\n        def read(n):\n            if not i[0]:\n                i[0] += 1\n                return data\n\n        stream = MagicMock()\n        stream.open = lambda: None\n        stream.read = read\n\n        return stream\n\n    def test_create_dot(self):\n        \"\"\"\n        Verify that a dot file is correctly created from pstats data stored in a file field.\n        \"\"\"\n        with self._stats_file():\n\n            try:\n                # create dot\n                with tempfile.NamedTemporaryFile(delete=False) as dotfile:\n                    dot = _create_dot(self._profile(), 5)\n                    dotfile.write(dot.encode('utf-8'))\n\n                # verify generated dot is valid\n                G = read_dot(dotfile.name)\n                self.assertGreater(len(G.nodes()), 0)\n\n            finally:\n                os.unlink(dotfile.name)\n\n    def test_temp_file_from_file_field(self):\n        \"\"\"\n        Verify that data held in a file like object is copied to a temp file.\n        \"\"\"\n        dummy_data = b'dummy data'\n        stream = self._mock_file(dummy_data)\n\n        with _temp_file_from_file_field(stream) as filename:\n            with open(filename, 'rb') as f:\n                self.assertEqual(f.read(), dummy_data)\n\n        # file should have been removed on exit\n        self.assertFalse(os.path.exists(filename))\n"
  },
  {
    "path": "project/tests/test_profile_parser.py",
    "content": "import contextlib\nimport cProfile\nimport io\nimport re\n\nfrom django.test import TestCase\n\nfrom silk.utils.profile_parser import parse_profile\n\n\nclass ProfileParserTestCase(TestCase):\n    def test_profile_parser(self):\n        \"\"\"\n        Verify that the function parse_profile produces the expected output.\n        \"\"\"\n        with contextlib.closing(io.StringIO()) as stream:\n            with contextlib.redirect_stdout(stream):\n                cProfile.run('print()')\n            stream.seek(0)\n            actual = list(parse_profile(stream))\n\n            # Expected format for the profiling output on cPython implementations (PyPy differs)\n            # actual = [\n            #     [\"ncalls\", \"tottime\", \"percall\", \"cumtime\", \"percall\", \"filename:lineno(function)\"],\n            #     [\"1\", \"0.000\", \"0.000\", \"0.000\", \"0.000\", \"<string>:1(<module>)\"],\n            #     [\"1\", \"0.000\", \"0.000\", \"0.000\", \"0.000\", \"{built-in method builtins.exec}\"],\n            #     [\"1\", \"0.000\", \"0.000\", \"0.000\", \"0.000\", \"{built-in method builtins.print}\"],\n            #     [\"1\", \"0.000\", \"0.000\", \"0.000\", \"0.000\", \"{method 'disable' of '_lsprof.Profiler' objects}\"],\n            # ]\n\n            exc_header = [\"ncalls\", \"tottime\", \"percall\", \"cumtime\", \"percall\", \"filename:lineno(function)\"]\n            self.assertEqual(actual[0], exc_header)\n\n            exc_number = re.compile(r\"\\d(.\\d+)?\")\n            exc_module = re.compile(r\"({method.*})|({built-in.*})|(<.+>:\\d+\\(<.+>\\))\")\n\n            exc_row = [exc_number, exc_number, exc_number, exc_number, exc_number, exc_module]\n\n            for row in actual[1:]:\n                for text, expected_regex in zip(row, exc_row):\n                    self.assertRegex(\n                        text, expected_regex,\n                        msg=\"Expected something like {} but found {}\"\n                    )\n"
  },
  {
    "path": "project/tests/test_response_assumptions.py",
    "content": "from django.http import HttpResponse\nfrom django.test import TestCase\n\n\nclass TestResponseAssumptions(TestCase):\n\n    def test_headers_present_in_http_response(self):\n        \"\"\"Verify that HttpResponse has a headers or _headers attribute, which we use and Mock in our tests.\"\"\"\n        django_response = HttpResponse()\n        self.assertTrue(hasattr(django_response, '_headers') or hasattr(django_response, 'headers'))\n"
  },
  {
    "path": "project/tests/test_sensitive_data_in_request.py",
    "content": "import json\nfrom unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.config import SilkyConfig\nfrom silk.model_factory import RequestModelFactory\n\nHTTP_CONTENT_TYPE = 'content-type'\nCLEANSED = RequestModelFactory.CLEANSED_SUBSTITUTE\nDEFAULT_SENSITIVE_KEYS = {'username', 'api', 'token', 'key', 'secret', 'password', 'signature'}\nDEFAULT_HIDE_COOKIES = True\n\n\nclass MaskCredentialsInFormsTest(TestCase):\n    def tearDown(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = DEFAULT_SENSITIVE_KEYS\n\n    def _mask(self, value):\n        return RequestModelFactory(None)._mask_credentials(value)\n\n    def test_mask_credentials_preserves_single_insensitive_values(self):\n        body = \"foo=public\"\n        expected = \"foo=public\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_masks_sensitive_values(self):\n        body = \"password=secret\"\n        expected = f\"password={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_masks_multiple_sensitive_values(self):\n        body = \"password=mypassword&secret=mysecret\"\n        expected = f\"password={CLEANSED}&secret={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_masks_sensitive_values_between_insensitive_values(self):\n        body = \"public1=foo&password=secret&public2=bar\"\n        expected = f\"public1=foo&password={CLEANSED}&public2=bar\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_preserves_insensitive_values_between_sensitive_values(self):\n        body = \"password=1&foo=public&secret=2\"\n        expected = f\"password={CLEANSED}&foo=public&secret={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_is_case_insensitive(self):\n        body = \"UsErNaMe=secret\"\n        expected = f\"UsErNaMe={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_handles_prefixes(self):\n        body = \"prefixed-username=secret\"\n        expected = f\"prefixed-username={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_handles_suffixes(self):\n        body = \"username-with-suffix=secret\"\n        expected = f\"username-with-suffix={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_handles_regex_characters(self):\n        body = \"password=secret++\"\n        expected = f\"password={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_handles_complex_cases(self):\n        body = \"foo=public&prefixed-uSeRname-with-suffix=secret&bar=public\"\n        expected = f\"foo=public&prefixed-uSeRname-with-suffix={CLEANSED}&bar=public\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_mask_credentials_masks_sensitive_values_listed_in_settings(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = {\"foo\"}\n        body = \"foo=hidethis\"\n        expected = f\"foo={CLEANSED}\"\n        self.assertEqual(expected, self._mask(body))\n\n    def test_sensitive_values_remain_unmasked_with_empty_settings(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = {}\n        body = \"foo=hidethis\"\n        expected = \"foo=hidethis\"\n        self.assertEqual(expected, self._mask(body))\n\n\nclass MaskCredentialsInJsonTest(TestCase):\n    def tearDown(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = DEFAULT_SENSITIVE_KEYS\n\n    def _mask(self, value):\n        return RequestModelFactory(None)._mask_credentials(json.dumps(value))\n\n    def test_mask_credentials_preserves_single_insensitive_values(self):\n        self.assertIn(\"public\", self._mask({\"foo\": \"public\"}))\n\n    def test_mask_credentials_preserves_insensitive_values_in_presence_of_sensitive(self):\n        self.assertIn(\"public\", self._mask({\"password\": \"secret\", \"foo\": \"public\"}))\n\n    def test_mask_credentials_masks_sensitive_values(self):\n        self.assertNotIn(\"secret\", self._mask({\"password\": \"secret\"}))\n\n    def test_mask_credentials_masks_sensitive_values_in_presence_of_regular(self):\n        self.assertNotIn(\"secret\", self._mask({\"foo\": \"public\", \"password\": \"secret\"}))\n\n    def test_mask_credentials_is_case_insensitive(self):\n        self.assertNotIn(\"secret\", self._mask({\"UsErNaMe\": \"secret\"}))\n\n    def test_mask_credentials_handles_prefixes(self):\n        self.assertNotIn(\"secret\", self._mask({\"prefixed-username\": \"secret\"}))\n\n    def test_mask_credentials_handles_suffixes(self):\n        self.assertNotIn(\"secret\", self._mask({\"username-with-suffix\": \"secret\"}))\n\n    def test_mask_credentials_handles_complex_cases(self):\n        self.assertNotIn(\"secret\", self._mask({\n            \"foo\": \"public\",\n            \"prefixed-uSeRname-with-suffix\": \"secret\"\n        }))\n\n    def test_mask_credentials_in_nested_data_structures(self):\n        self.assertNotIn(\"secret\", self._mask({\n            \"foo\": \"public\",\n            \"nested\": {\n                \"prefixed-uSeRname-with-suffix\": \"secret\",\n            },\n        }))\n\n    def test_mask_credentials_masks_sensitive_values_listed_in_settings(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = {\"foo\"}\n        self.assertNotIn(\"hidethis\", self._mask({\"foo\": \"hidethis\"}))\n\n    def test_sensitive_values_remain_unmasked_with_empty_settings(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = {}\n        self.assertIn(\"hidethis\", self._mask({\"foo\": \"hidethis\"}))\n\n\nclass TestEncodingForRequests(TestCase):\n    \"\"\"\n    Check that the RequestModelFactory masks sensitive data\n    \"\"\"\n\n    def tearDown(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = DEFAULT_SENSITIVE_KEYS\n        SilkyConfig().SILKY_HIDE_COOKIES = DEFAULT_HIDE_COOKIES\n\n    def test_password_in_body(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'text/plain'}\n        mock_request.body = 'username=test_username&unmasked=testunmasked&password=testpassword'\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n\n        self.assertIn('testunmasked', raw_body)\n        self.assertNotIn('test_username', raw_body)\n        self.assertNotIn('testpassword', raw_body)\n        self.assertNotIn('test_username', body)\n        self.assertNotIn('testpassword', body)\n\n    def test_password_in_json(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = {'x': 'testunmasked', 'username': 'test_username', 'password': 'testpassword',\n             'prefixed-secret': 'testsecret'}\n        mock_request.body = json.dumps(d)\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertIn('testunmasked', raw_body)\n        self.assertNotIn('test_username', raw_body)\n        self.assertNotIn('testpassword', raw_body)\n        self.assertNotIn('testsecret', raw_body)\n        self.assertNotIn('test_username', body)\n        self.assertNotIn('testpassword', body)\n        self.assertNotIn('testsecret', body)\n\n        for datum in [json.loads(body), json.loads(raw_body)]:\n            self.assertEqual(datum['username'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n            self.assertEqual(datum['password'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n            self.assertEqual(datum['prefixed-secret'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n            self.assertEqual(datum['x'], 'testunmasked')\n\n    def test_password_in_batched_json(self):\n        mock_request = Mock()\n        mock_request.headers = {HTTP_CONTENT_TYPE: 'application/json; charset=UTF-8'}\n        d = [\n            {'x': 'testunmasked', 'username': 'test_username', 'password': 'testpassword'},\n            {'x': 'testunmasked', 'username': 'test_username', 'password': 'testpassword'}\n        ]\n        mock_request.body = json.dumps(d)\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        body, raw_body = factory.body()\n        self.assertIn('testunmasked', raw_body)\n        self.assertNotIn('test_username', raw_body)\n        self.assertNotIn('testpassword', raw_body)\n        self.assertNotIn('test_username', body[0])\n        self.assertNotIn('testpassword', body[0])\n        self.assertNotIn('test_username', body[1])\n        self.assertNotIn('testpassword', body[1])\n\n        for data in [json.loads(body), json.loads(raw_body)]:\n            for datum in data:\n                self.assertEqual(datum['username'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n                self.assertEqual(datum['password'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n                self.assertEqual(datum['x'], 'testunmasked')\n\n    def test_authorization_header(self):\n        mock_request = Mock()\n        mock_request.headers = {'authorization': 'secret'}\n        mock_request.body = ''\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        headers = factory.encoded_headers()\n        json_headers = json.loads(headers)\n\n        self.assertIn('authorization', json_headers)\n        self.assertEqual(json_headers['authorization'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n\n    def test_hide_cookies(self):\n        SilkyConfig().SILKY_HIDE_COOKIES = True\n        mock_request = Mock()\n        mock_request.headers = {'Cookie': 'secret'}\n        mock_request.body = ''\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        headers = factory.encoded_headers()\n        json_headers = json.loads(headers)\n\n        self.assertIn('cookie', json_headers)\n        self.assertEqual(json_headers['cookie'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n\n    def test_no_hide_cookies(self):\n        SilkyConfig().SILKY_HIDE_COOKIES = False\n        mock_request = Mock()\n        mock_request.headers = {'Cookie': 'Cookies!!!'}\n        mock_request.body = ''\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        headers = factory.encoded_headers()\n        json_headers = json.loads(headers)\n\n        self.assertIn('cookie', json_headers)\n        self.assertEqual(json_headers['cookie'], 'Cookies!!!')\n\n    def test_hide_sensitive_headers(self):\n        SilkyConfig().SILKY_SENSITIVE_KEYS = [\"foo\", \"bar\"]\n        mock_request = Mock()\n        mock_request.headers = {'FOO': 'secret', 'BAR': 'secret', 'BAZ': 'not-secret'}\n        mock_request.body = ''\n        mock_request.get = mock_request.headers.get\n        factory = RequestModelFactory(mock_request)\n        headers = factory.encoded_headers()\n        json_headers = json.loads(headers)\n\n        self.assertIn('foo', json_headers)\n        self.assertIn('bar', json_headers)\n        self.assertIn('baz', json_headers)\n        self.assertEqual(json_headers['foo'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n        self.assertEqual(json_headers['bar'], RequestModelFactory.CLEANSED_SUBSTITUTE)\n        self.assertEqual(json_headers['baz'], 'not-secret')\n"
  },
  {
    "path": "project/tests/test_silky_middleware.py",
    "content": "from unittest.mock import patch\n\nfrom django.test import TestCase, override_settings\nfrom django.urls import reverse\n\nfrom silk.config import SilkyConfig\nfrom silk.errors import SilkNotConfigured\nfrom silk.middleware import SilkyMiddleware, _should_intercept\nfrom silk.models import Request\n\nfrom .util import mock_data_collector\n\n\ndef fake_get_response():\n    def fake_response():\n        return 'hello world'\n    return fake_response\n\n\nclass TestApplyDynamicMappings(TestCase):\n    def test_dynamic_decorator(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'module': 'tests.data.dynamic',\n                'function': 'foo'\n            }\n        ]\n        middleware._apply_dynamic_mappings()\n        from .data.dynamic import foo\n\n        mock = mock_data_collector()\n        with patch('silk.profiling.profiler.DataCollector', return_value=mock) as mock_DataCollector:\n            foo()  # Should be wrapped in a decorator\n            self.assertTrue(mock_DataCollector.return_value.register_profile.call_count)\n\n    def test_dynamic_context_manager(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'module': 'tests.data.dynamic',\n                'function': 'foo',\n                'start_line': 1,\n                'end_line': 2,\n            }\n        ]\n        middleware._apply_dynamic_mappings()\n        from .data.dynamic import foo\n\n        mock = mock_data_collector()\n        with patch('silk.profiling.profiler.DataCollector', return_value=mock) as mock_DataCollector:\n            foo()\n            self.assertTrue(mock_DataCollector.return_value.register_profile.call_count)\n\n    def test_invalid_dynamic_context_manager(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'module': 'tests.data.dynamic',\n                'function': 'foo2',\n                'start_line': 1,\n                'end_line': 7,\n            }\n        ]\n        self.assertRaises(IndexError, middleware._apply_dynamic_mappings)\n\n    def test_invalid_dynamic_decorator_module(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'module': 'tests.data.dfsdf',\n                'function': 'foo'\n            }\n        ]\n        self.assertRaises(AttributeError, middleware._apply_dynamic_mappings)\n\n    def test_invalid_dynamic_decorator_function_name(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'module': 'tests.data.dynamic',\n                'function': 'bar'\n            }\n        ]\n        self.assertRaises(AttributeError, middleware._apply_dynamic_mappings)\n\n    def test_invalid_dynamic_mapping(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n            {\n                'dfgdf': 'tests.data.dynamic',\n                'funcgdfgtion': 'bar'\n            }\n        ]\n        self.assertRaises(KeyError, middleware._apply_dynamic_mappings)\n\n    def test_no_mappings(self):\n        middleware = SilkyMiddleware(fake_get_response)\n        SilkyConfig().SILKY_DYNAMIC_PROFILING = [\n\n        ]\n        middleware._apply_dynamic_mappings()  # Just checking no crash\n\n    def test_raise_if_authentication_is_enable_but_no_middlewares(self):\n        SilkyConfig().SILKY_AUTHENTICATION = True\n        with self.modify_settings(MIDDLEWARE={\n            'remove': [\n                'django.contrib.sessions.middleware.SessionMiddleware',\n                'django.contrib.auth.middleware.AuthenticationMiddleware',\n                'django.contrib.messages.middleware.MessageMiddleware',\n            ],\n        }):\n            with self.assertRaisesMessage(\n                SilkNotConfigured,\n                \"SILKY_AUTHENTICATION can not be enabled without Session, Authentication or Message Django's middlewares\"\n            ):\n                SilkyMiddleware(fake_get_response)\n\n\nclass TestShouldIntercept(TestCase):\n    def test_should_intercept_non_silk_request(self):\n        request = Request()\n        request.path = '/myapp/foo'\n        should_intercept = _should_intercept(request)\n\n        self.assertTrue(should_intercept)\n\n    def test_should_intercept_silk_request(self):\n        request = Request()\n        request.path = reverse('silk:summary')\n        should_intercept = _should_intercept(request)\n\n        self.assertFalse(should_intercept)\n\n    @override_settings(ROOT_URLCONF='tests.urlconf_without_silk')\n    def test_should_intercept_without_silk_urls(self):\n        request = Request()\n        request.path = '/login'\n        _should_intercept(request)  # Just checking no crash\n\n    def test_should_intercept_ignore_paths(self):\n        SilkyConfig().SILKY_IGNORE_PATHS = [\n            '/ignorethis'\n        ]\n        request = Request()\n        request.path = '/ignorethis'\n        should_intercept = _should_intercept(request)\n\n        self.assertFalse(should_intercept)\n"
  },
  {
    "path": "project/tests/test_silky_profiler.py",
    "content": "from time import sleep\n\nfrom django.test import TestCase\n\nfrom silk.collector import DataCollector\nfrom silk.models import Request, _time_taken\nfrom silk.profiling.profiler import silk_profile\n\nfrom .test_lib.mock_suite import MockSuite\n\n\nclass TestProfilerRequests(TestCase):\n    def test_context_manager_no_request(self):\n        DataCollector().configure()\n        with silk_profile(name='test_profile'):\n            sleep(0.1)\n        self.assertFalse(DataCollector().profiles)\n\n    def test_decorator_no_request(self):\n        DataCollector().configure()\n\n        @silk_profile()\n        def func():\n            sleep(0.1)\n\n        func()\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertFalse(profile['request'])\n\n    def test_context_manager_request(self):\n        DataCollector().configure(Request.objects.create(path='/to/somewhere'))\n        with silk_profile(name='test_profile'):\n            sleep(0.1)\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(DataCollector().request, profile['request'])\n\n    def test_decorator_request(self):\n        DataCollector().configure(Request.objects.create(path='/to/somewhere'))\n\n        @silk_profile()\n        def func():\n            sleep(0.1)\n\n        func()\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(DataCollector().request, profile['request'])\n\n\nclass TestProfilertContextManager(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        r = Request.objects.create()\n        DataCollector().configure(r)\n        with silk_profile(name='test_profile'):\n            sleep(0.1)\n\n    def test_one_object(self):\n        self.assertEqual(len(DataCollector().profiles), 1)\n\n    def test_name(self):\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(profile['name'], 'test_profile')\n\n    def test_time_taken(self):\n        profile = list(DataCollector().profiles.values())[0]\n        time_taken = _time_taken(start_time=profile['start_time'], end_time=profile['end_time'])\n        self.assertGreaterEqual(time_taken, 100)\n        self.assertLess(time_taken, 110)\n\n\nclass TestProfilerDecorator(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        DataCollector().configure(Request.objects.create())\n\n        @silk_profile()\n        def func():\n            sleep(0.1)\n\n        func()\n\n    def test_one_object(self):\n        self.assertEqual(len(DataCollector().profiles), 1)\n\n    def test_name(self):\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(profile['name'], 'func')\n\n    def test_time_taken(self):\n        profile = list(DataCollector().profiles.values())[0]\n        time_taken = _time_taken(start_time=profile['start_time'], end_time=profile['end_time'])\n        self.assertGreaterEqual(time_taken, 100)\n        self.assertLess(time_taken, 115)\n\n\nclass TestQueries(TestCase):\n    def test_no_queries_before(self):\n        DataCollector().configure(Request.objects.create())\n        with silk_profile(name='test_no_queries_before_profile'):\n            mock_queries = MockSuite().mock_sql_queries(n=5, as_dict=True)\n            DataCollector().register_query(*mock_queries)\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(profile['name'], 'test_no_queries_before_profile')\n        queries = profile['queries']\n        self.assertEqual(len(queries), 5)\n        for query in DataCollector().queries:\n            self.assertIn(query, queries)\n\n    def test_queries_before(self):\n        \"\"\"test that any queries registered before profiling begins are ignored\"\"\"\n        DataCollector().configure(Request.objects.create())\n        DataCollector().register_query(*MockSuite().mock_sql_queries(n=2, as_dict=True))\n        before = [x for x in DataCollector().queries]\n        with silk_profile(name='test_no_queries_before_profile'):\n            mock_queries = MockSuite().mock_sql_queries(n=5, as_dict=True)\n            DataCollector().register_query(*mock_queries)\n        profile = list(DataCollector().profiles.values())[0]\n        self.assertEqual(profile['name'], 'test_no_queries_before_profile')\n        queries = profile['queries']\n        self.assertEqual(len(queries), 5)\n        for query in set(DataCollector().queries).difference(before):\n            self.assertIn(query, queries)\n"
  },
  {
    "path": "project/tests/test_view_clear_db.py",
    "content": "from django.test import TestCase\n\nfrom silk import models\nfrom silk.config import SilkyConfig\nfrom silk.middleware import silky_reverse\n\nfrom .factories import RequestMinFactory\n\n\nclass TestViewClearDB(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        SilkyConfig().SILKY_AUTHENTICATION = False\n        SilkyConfig().SILKY_AUTHORISATION = False\n\n    def test_clear_all(self):\n        RequestMinFactory.create()\n        self.assertEqual(models.Request.objects.count(), 1)\n        response = self.client.post(silky_reverse(\"cleardb\"), {\"clear_all\": \"on\"})\n        self.assertTrue(response.status_code == 200)\n        self.assertEqual(models.Request.objects.count(), 0)\n\n\nclass TestViewClearDBAndDeleteProfiles(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        SilkyConfig().SILKY_AUTHENTICATION = False\n        SilkyConfig().SILKY_AUTHORISATION = False\n        SilkyConfig().SILKY_DELETE_PROFILES = True\n\n    def test_clear_all_and_delete_profiles(self):\n        RequestMinFactory.create()\n        self.assertEqual(models.Request.objects.count(), 1)\n        response = self.client.post(silky_reverse(\"cleardb\"), {\"clear_all\": \"on\"})\n        self.assertTrue(response.status_code == 200)\n        self.assertEqual(models.Request.objects.count(), 0)\n"
  },
  {
    "path": "project/tests/test_view_profiling.py",
    "content": "from unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.middleware import silky_reverse\nfrom silk.views.profiling import ProfilingView\n\nfrom .test_lib.assertion import dict_contains\nfrom .test_lib.mock_suite import MockSuite\n\n\nclass TestProfilingViewDefaults(TestCase):\n    def test_func_names(self):\n        profiles = [MockSuite().mock_profile() for _ in range(0, 3)]\n        func_names = ProfilingView()._get_function_names()\n        for p in profiles:\n            self.assertIn(p.func_name, func_names)\n        self.assertIn('', func_names)\n\n    def test_show(self):\n        self.assertIn(ProfilingView.default_show, ProfilingView.show)\n\n    def test_order_by(self):\n        self.assertIn(ProfilingView.defualt_order_by, ProfilingView.order_by)\n\n\nclass TestProfilingViewGetObjects(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        cls.profiles = [MockSuite().mock_profile() for _ in range(0, 10)]\n\n    def test_ordering(self):\n        results = ProfilingView()._get_objects(order_by='Recent')\n        self.assertSorted(results, 'start_time')\n\n    def test_show(self):\n        results = ProfilingView()._get_objects(show=5)\n        self.assertEqual(5, len(results))\n\n    def test_func_name(self):\n        func_name = 'a_func_name'\n        self.profiles[1].func_name = func_name\n        self.profiles[1].save()\n        results = ProfilingView()._get_objects(func_name=func_name)\n        for r in results:\n            self.assertEqual(r.func_name, func_name)\n\n    def assertSorted(self, objects, sort_field):\n        for idx, r in enumerate(objects):\n            try:\n                nxt = objects[idx + 1]\n                self.assertGreaterEqual(getattr(r, sort_field), getattr(nxt, sort_field))\n            except IndexError:\n                pass\n\n\nclass TestProfilingContext(TestCase):\n    def test_default(self):\n        request = Mock(spec_set=['GET', 'session'])\n        request.GET = {}\n        request.session = {}\n        context = ProfilingView()._create_context(request)\n        self.assertTrue(dict_contains({\n            'show': ProfilingView.default_show,\n            'order_by': ProfilingView.defualt_order_by,\n            'options_show': ProfilingView.show,\n            'options_order_by': ProfilingView.order_by,\n            'options_func_names': ProfilingView()._get_function_names()\n        }, context))\n        self.assertNotIn('path', context)\n        self.assertIn('results', context)\n\n    def test_get(self):\n        request = Mock(spec_set=['GET', 'session'])\n        request.session = {}\n        show = 10\n        func_name = 'func_name'\n        name = 'name'\n        order_by = 'Time'\n        request.GET = {'show': show,\n                       'func_name': func_name,\n                       'name': name,\n                       'order_by': order_by}\n        context = ProfilingView()._create_context(request)\n        self.assertTrue(dict_contains({\n            'show': show,\n            'order_by': order_by,\n            'func_name': func_name,\n            'name': name,\n            'options_show': ProfilingView.show,\n            'options_order_by': ProfilingView.order_by,\n            'options_func_names': ProfilingView()._get_function_names()\n        }, context))\n        self.assertIn('results', context)\n\n    def test_view_without_session_and_auth_middlewares(self):\n        \"\"\"\n        Filters are not present because there is no `session` to store them.\n        \"\"\"\n        with self.modify_settings(MIDDLEWARE={\n            'remove': [\n                'django.contrib.sessions.middleware.SessionMiddleware',\n                'django.contrib.auth.middleware.AuthenticationMiddleware',\n                'django.contrib.messages.middleware.MessageMiddleware',\n            ],\n        }):\n            # test filters on GET\n            show = 10\n            func_name = 'func_name'\n            name = 'name'\n            order_by = 'Time'\n            response = self.client.get(silky_reverse('profiling'), {\n                'show': show,\n                'func_name': func_name,\n                'name': name,\n                'order_by': order_by\n            })\n            context = response.context\n            self.assertTrue(dict_contains({\n                'show': show,\n                'order_by': order_by,\n                'func_name': func_name,\n                'name': name,\n                'options_show': ProfilingView.show,\n                'options_order_by': ProfilingView.order_by,\n                'options_func_names': ProfilingView()._get_function_names()\n            }, context))\n\n            # test filters on POST\n            response = self.client.post(silky_reverse('profiling'), {\n                'filter-overalltime-value': 100,\n                'filter-overalltime-typ': 'TimeSpentOnQueriesFilter',\n            })\n            context = response.context\n            self.assertTrue(dict_contains({\n                'filters': {\n                    'overalltime': {'typ': 'TimeSpentOnQueriesFilter', 'value': 100, 'str': 'DB Time >= 100'}\n                },\n            }, context))\n"
  },
  {
    "path": "project/tests/test_view_requests.py",
    "content": "import random\nimport unittest\nfrom unittest.mock import Mock\n\nfrom django.test import TestCase\n\nfrom silk.middleware import silky_reverse\nfrom silk.views.requests import RequestsView\n\nfrom .test_lib.assertion import dict_contains\nfrom .test_lib.mock_suite import MockSuite\n\n\nclass TestRootViewDefaults(TestCase):\n    def test_path(self):\n        requests = [MockSuite().mock_request() for _ in range(0, 3)]\n        paths = RequestsView()._get_paths()\n        for r in requests:\n            self.assertIn(r.path, paths)\n\n    def test_show(self):\n        self.assertIn(RequestsView.default_show, RequestsView.show)\n\n    def test_order_by(self):\n        self.assertIn(RequestsView.default_order_by, RequestsView.order_by)\n\n\nclass TestContext(TestCase):\n    def test_default(self):\n        request = Mock(spec_set=['GET', 'session'])\n        request.session = {}\n        request.GET = {}\n        context = RequestsView()._create_context(request)\n        self.assertTrue(dict_contains({\n            'show': RequestsView.default_show,\n            'order_by': RequestsView.default_order_by,\n            'options_show': RequestsView.show,\n            'options_order_by': RequestsView().options_order_by,\n            'options_order_dir': RequestsView().options_order_dir,\n        }, context))\n        self.assertQuerySetEqual(context['options_paths'], RequestsView()._get_paths())\n        self.assertNotIn('path', context)\n        self.assertIn('results', context)\n\n    def test_get(self):\n        show = 10\n        path = '/path/to/somewhere/'\n        order_by = 'path'\n        response = self.client.get(silky_reverse('requests'), {\n            'show': show,\n            'path': path,\n            'order_by': order_by,\n        })\n        context = response.context\n        self.assertTrue(dict_contains({\n            'show': show,\n            'order_by': order_by,\n            'path': path,\n            'options_show': RequestsView.show,\n            'options_order_by': RequestsView().options_order_by,\n            'options_order_dir': RequestsView().options_order_dir,\n        }, context))\n        self.assertQuerySetEqual(context['options_paths'], RequestsView()._get_paths())\n        self.assertIn('results', context)\n\n    def test_post(self):\n        response = self.client.post(silky_reverse('requests'), {\n            'filter-overalltime-value': 100,\n            'filter-overalltime-typ': 'TimeSpentOnQueriesFilter',\n        })\n        context = response.context\n        self.assertTrue(dict_contains({\n            'filters': {\n                'overalltime': {'typ': 'TimeSpentOnQueriesFilter', 'value': 100, 'str': 'DB Time >= 100'}\n            },\n        }, context))\n        self.assertQuerySetEqual(context['options_paths'], RequestsView()._get_paths())\n        self.assertIn('results', context)\n\n    def test_view_without_session_and_auth_middlewares(self):\n        \"\"\"\n        Filters are not present because there is no `session` to store them.\n        \"\"\"\n        with self.modify_settings(MIDDLEWARE={\n            'remove': [\n                'django.contrib.sessions.middleware.SessionMiddleware',\n                'django.contrib.auth.middleware.AuthenticationMiddleware',\n                'django.contrib.messages.middleware.MessageMiddleware',\n            ],\n        }):\n            # test filters on GET\n            show = 10\n            path = '/path/to/somewhere/'\n            order_by = 'path'\n            response = self.client.get(silky_reverse('requests'), {\n                'show': show,\n                'path': path,\n                'order_by': order_by,\n            })\n            context = response.context\n            self.assertTrue(dict_contains({\n                'show': show,\n                'order_by': order_by,\n                'path': path,\n            }, context))\n\n            # test filters on POST\n            response = self.client.post(silky_reverse('requests'), {\n                'filter-overalltime-value': 100,\n                'filter-overalltime-typ': 'TimeSpentOnQueriesFilter',\n            })\n            context = response.context\n            self.assertTrue(dict_contains({\n                'filters': {\n                    'overalltime': {'typ': 'TimeSpentOnQueriesFilter', 'value': 100, 'str': 'DB Time >= 100'}\n                },\n            }, context))\n\n\nclass TestGetObjects(TestCase):\n    def assertSorted(self, objects, sort_field):\n        for idx, r in enumerate(objects):\n            try:\n                nxt = objects[idx + 1]\n                self.assertGreaterEqual(getattr(r, sort_field), getattr(nxt, sort_field))\n            except IndexError:\n                pass\n\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        cls.requests = [MockSuite().mock_request() for _ in range(0, 50)]\n\n    def test_defaults(self):\n        objects = RequestsView()._get_objects()\n        self.assertEqual(len(objects), 25)\n        self.assertSorted(objects, 'start_time')\n\n    def test_show(self):\n        objects = RequestsView()._get_objects(show=10)\n        self.assertEqual(len(objects), 10)\n\n    def test_path(self):\n        request = random.choice(self.requests)\n        objects = RequestsView()._get_objects(path=request.path)\n        for r in objects:\n            self.assertEqual(r.path, request.path)\n\n    @unittest.skip(\"Flaky\")\n    def test_time_spent_db_with_path(self):\n        request = random.choice(self.requests)\n        query_set = RequestsView()._get_objects(order_by='db_time',\n                                                path=request.path)\n        num_results = query_set.count()\n        self.assertTrue(num_results)\n        for result in query_set:\n            self.assertEqual(result.path, request.path)\n\n\nclass TestOrderingRequestView(TestCase):\n    def assertSorted(self, objects, sort_field):\n        for idx, r in enumerate(objects):\n            try:\n                nxt = objects[idx + 1]\n                self.assertGreaterEqual(getattr(r, sort_field), getattr(nxt, sort_field))\n            except IndexError:\n                pass\n\n    def test_ordering(self):\n        self.assertSorted(objects=RequestsView()._get_objects(order_by='start_time'),\n                          sort_field='start_time')\n        self.assertSorted(objects=RequestsView()._get_objects(order_by='path'),\n                          sort_field='path')\n        self.assertSorted(objects=RequestsView()._get_objects(order_by='num_sql_queries'),\n                          sort_field='num_sql_queries')\n        self.assertSorted(objects=RequestsView()._get_objects(order_by='time_taken'),\n                          sort_field='time_taken')\n        self.assertSorted(objects=RequestsView()._get_objects(order_by='db_time'),\n                          sort_field='db_time')\n"
  },
  {
    "path": "project/tests/test_view_sql_detail.py",
    "content": "import os\nimport random\nfrom unittest.mock import patch\n\nfrom django.conf import settings\nfrom django.test import TestCase\n\nfrom silk.config import SilkyConfig\nfrom silk.middleware import silky_reverse\nfrom silk.views.sql_detail import SQLDetailView\n\nfrom .test_lib.mock_suite import MockSuite\n\n\nclass TestViewSQLDetail(TestCase):\n    @classmethod\n    def setUpClass(cls):\n        super().setUpClass()\n        SilkyConfig().SILKY_AUTHENTICATION = False\n        SilkyConfig().SILKY_AUTHORISATION = False\n\n    def test_allowed_file_paths_nothing_specified(self):\n        \"\"\"by default we dont display any source, and it should return correctly\"\"\"\n        request = MockSuite().mock_request()\n        query = MockSuite().mock_sql_queries(request=request, n=1)[0]\n        response = self.client.get(silky_reverse('request_sql_detail', kwargs={'sql_id': query.id, 'request_id': request.id}))\n        self.assertTrue(response.status_code == 200)\n\n    def test_allowed_file_paths_available_source(self):\n        \"\"\"if we request to view source that exists in the TB all should be fine\"\"\"\n        request = MockSuite().mock_request()\n        query = MockSuite().mock_sql_queries(request=request, n=1)[0]\n        tb = query.traceback_ln_only\n        _, files = SQLDetailView()._urlify(tb)\n        file_path = random.choice(files)\n        with open(file_path) as f:\n            line_num = random.randint(0, len(f.read().split('\\n')))\n        response = self.client.get(silky_reverse('request_sql_detail',\n                                                 kwargs={'sql_id': query.id, 'request_id': request.id}),\n                                   data={\n                                       'line_num': line_num,\n                                       'file_path': file_path\n        })\n        self.assertTrue(response.status_code == 200)\n\n    def test_allowed_file_paths_unavailable_source(self):\n        \"\"\"if we request to view source that is not in the traceback we should get a 403\"\"\"\n        request = MockSuite().mock_request()\n        query = MockSuite().mock_sql_queries(request=request, n=1)[0]\n        file_path = settings.TEMP_DIR + '/blah'\n        with open(file_path, 'w') as f:\n            f.write('test')\n        response = self.client.get(silky_reverse('request_sql_detail',\n                                                 kwargs={'sql_id': query.id, 'request_id': request.id}),\n                                   data={\n                                       'line_num': 0,\n                                       'file_path': file_path\n        })\n        self.assertTrue(response.status_code == 403)\n\n    def test_virtualenv_not_available_no_highlight(self):\n        \"\"\"if we don't have a virtualenv, there should be no code hightlighted\"\"\"\n        request = MockSuite().mock_request()\n        query = MockSuite().mock_sql_queries(request=request)[0]\n        url = silky_reverse('request_sql_detail', kwargs={'sql_id': query.id, 'request_id': request.id})\n        with patch.dict(os.environ, {}, clear=True):\n            self.assertIsNone(os.environ.get('VIRTUAL_ENV'))\n            response = self.client.get(url)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, ' is-third-party')\n        self.assertNotContains(response, ' not-third-party')\n\n    def test_virtualenv_hightlight(self):\n        \"\"\"if we have a virtualenv, there should be code hightlighted\"\"\"\n        request = MockSuite().mock_request()\n        query = MockSuite().mock_sql_queries(request=request)[0]\n        url = silky_reverse('request_sql_detail', kwargs={'sql_id': query.id, 'request_id': request.id})\n        with patch.dict(os.environ, {'VIRTUAL_ENV': '/some/virtualenv/that/doesnt/really/exist'}, clear=True):\n            response = self.client.get(url)\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, ' not-third-party')\n"
  },
  {
    "path": "project/tests/test_view_summary_view.py",
    "content": "from django.test import TestCase\n\nfrom silk.middleware import silky_reverse\nfrom silk.views.summary import SummaryView\n\nfrom .test_lib.assertion import dict_contains\nfrom .test_lib.mock_suite import MockSuite\n\nmock_suite = MockSuite()\n\n\nclass TestSummaryView(TestCase):\n    def test_longest_query_by_view(self):\n        [mock_suite.mock_request() for _ in range(0, 10)]\n        print([x.time_taken for x in SummaryView()._longest_query_by_view([])])\n\n    def test_view_without_session_and_auth_middlewares(self):\n        \"\"\"\n        Filters are not present because there is no `session` to store them.\n        \"\"\"\n        with self.modify_settings(MIDDLEWARE={\n            'remove': [\n                'django.contrib.sessions.middleware.SessionMiddleware',\n                'django.contrib.auth.middleware.AuthenticationMiddleware',\n                'django.contrib.messages.middleware.MessageMiddleware',\n            ],\n        }):\n            # test filters on POST\n            seconds = 3600\n            response = self.client.post(silky_reverse('summary'), {\n                'filter-seconds-value': seconds,\n                'filter-seconds-typ': 'SecondsFilter',\n            })\n            context = response.context\n            self.assertTrue(dict_contains({\n                'filters': {\n                    'seconds': {'typ': 'SecondsFilter', 'value': seconds, 'str': f'>{seconds} seconds ago'}\n                }\n            }, context))\n"
  },
  {
    "path": "project/tests/urlconf_without_silk.py",
    "content": "from django.urls import include, path\n\nurlpatterns = [\n    path(\n        'example_app/',\n        include('example_app.urls', namespace='example_app')\n    ),\n]\n"
  },
  {
    "path": "project/tests/util.py",
    "content": "import io\nfrom unittest.mock import Mock\n\nfrom django.core.files import File\nfrom django.core.files.storage import Storage\n\nfrom silk.models import Request\n\n\ndef mock_data_collector():\n    mock = Mock()\n    mock.queries = []\n    mock.local = Mock()\n    r = Request()\n    mock.local.request = r\n    mock.request = r\n    return mock\n\n\ndef delete_all_models(model_class):\n    \"\"\"\n    A sqlite3-safe deletion function to avoid \"django.db.utils.OperationalError: too many SQL variables\"\n    :param model_class:\n    :return:\n    \"\"\"\n    while model_class.objects.count():\n        ids = model_class.objects.values_list('pk', flat=True)[:80]\n        model_class.objects.filter(pk__in=ids).delete()\n\n\nclass DictStorage(Storage):\n    \"\"\"Storage that stores files in a dictionary - for testing.\"\"\"\n\n    def __init__(self):\n        self.files = {}\n\n    def open(self, name, mode=\"rb\"):\n        if name not in self.files:\n            self.files[name] = b\"\"\n        return File(io.BytesIO(self.files[name]), name=name)\n\n    def get_valid_name(self, name):\n        return name\n\n    def exists(self, name):\n        return name in self.files\n"
  },
  {
    "path": "project/wsgi.py",
    "content": "\"\"\"WSGI config for django_silky project.\n\nIt exposes the WSGI callable as a module-level variable named ``application``.\n\nFor more information on this file, see\nhttps://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/\n\n\"\"\"\nimport os\n\nos.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"settings\")\n\nfrom django.core.wsgi import get_wsgi_application  # noqa: E402\n\napplication = get_wsgi_application()\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[tool.autopep8]\nignore = \"E501,E203,W503\"\nin-place = true\n"
  },
  {
    "path": "pytest.ini",
    "content": "[pytest]\naddopts = --cov silk --cov-config .coveragerc --cov-append --cov-report term --cov-report=xml\npython_files = test.py tests.py test_*.py tests_*.py *_tests.py *_test.py\nDJANGO_SETTINGS_MODULE = project.settings\n"
  },
  {
    "path": "requirements.txt",
    "content": "coverage==7.13.0\nfactory-boy==3.3.3\nfreezegun==1.5.5\nnetworkx==3.4.2\npillow==12.1.1\npydot==3.0.4\npygments==2.20.0\npytest-cov==7.0.0\npytest-django==4.11.1\n"
  },
  {
    "path": "scss/components/cell.scss",
    "content": ".cell {\n  display: inline-block;\n  background-color: transparent;\n  padding: 10px;\n  margin-left: 10px;\n  margin-top: 10px;\n  border-radius: 4px;\n  transition: background-color 0.15s ease, color 0.15s ease;\n  div {\n    margin: 2px;\n  }\n  .timestamp-div {\n    margin-bottom: 15px;\n    font-size: 13px;\n  }\n  .meta {\n    font-size: 12px;\n    color: #be5b43;\n    .unit {\n      font-size: 9px;\n      font-weight: lighter !important;\n    }\n\n  }\n  .method-div {\n    font-weight: bold;\n    font-size: 20px;\n  }\n  .path-div {\n    font-size: 18px;\n    margin-bottom: 15px;\n  }\n}\n"
  },
  {
    "path": "scss/components/colors.scss",
    "content": ".very-good-font-color {\n  color: #bac54b;\n}\n\n.good-font-color {\n  color: #c3a948;\n}\n\n.ok-font-color {\n  color: #c08245;\n}\n\n.bad-font-color {\n  color: #be5b43;\n}\n\n.very-bad-font-color {\n  color: #b9424f;\n}\n"
  },
  {
    "path": "scss/components/fonts.scss",
    "content": "/**\n*   Fira Sans\n*/\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Regular.woff);\n  font-weight: normal;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Medium.woff);\n  font-weight: bold;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Bold.woff);\n  font-weight: bolder;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Light.woff);\n  font-weight: lighter;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-RegularItalic.woff);\n  font-weight: normal;\n  font-style: italic;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-MediumItalic.woff);\n  font-weight: bold;\n  font-style: italic;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-BoldItalic.woff);\n  font-weight: bolder;\n  font-style: italic;\n}\n\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-LightItalic.woff);\n  font-weight: lighter;\n  font-style: italic;\n}\n\n/**\n*   Fantasque\n*/\n\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-Regular.woff);\n  font-weight: normal;\n}\n\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-Bold.woff);\n  font-weight: bold;\n}\n\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-RegItalic.woff);\n  font-weight: normal;\n  font-style: italic;\n}\n\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-BoldItalic.woff);\n  font-weight: bold;\n  font-style: italic;\n}\n"
  },
  {
    "path": "scss/components/heading.scss",
    "content": ".heading {\n  width: 100%;\n  background-color: transparent;\n  height: 30px;\n  display: table;\n  font-weight: bold;\n  margin-top: 20px;\n  .inner-heading {\n    display: table-cell;\n    text-align: left;\n    padding: 0;\n    vertical-align: middle;\n  }\n}\n"
  },
  {
    "path": "scss/components/numeric.scss",
    "content": ".numeric {\n  font-weight: normal;\n}\n\n.unit {\n  font-weight: normal;\n}\n\n.numeric .unit {\n  font-size: 12px;\n}\n\n.numeric {\n  font-size: 20px;\n}\n"
  },
  {
    "path": "scss/components/row.scss",
    "content": ".row-wrapper {\n  display: table;\n  margin: 2rem;\n  width: 100%;\n  width: -moz-available;\n  width: -webkit-fill-available;\n  width: fill-available;\n\n  .row {\n    display: table-row;\n    transition: background-color 0.15s ease, color 0.15s ease;\n\n    div {\n      padding: 1rem;\n    }\n\n    .col {\n      font-size: 20px;\n      display: table-cell;\n    }\n\n    .timestamp-div {\n      border-top-left-radius: 4px;\n      border-bottom-left-radius: 4px;\n      margin-bottom: 15px;\n      font-size: 13px;\n    }\n\n    .meta {\n      font-size: 12px;\n      color: #be5b43;\n    }\n\n    .meta .unit {\n      font-size: 9px;\n      font-weight: lighter !important;\n    }\n\n    .method-div {\n      font-weight: bold;\n      font-size: 20px;\n    }\n\n    .path-div {\n      font-size: 18px;\n      margin-bottom: 15px;\n    }\n\n    .num-queries-div {\n      border-top-right-radius: 4px;\n      border-bottom-right-radius: 4px;\n    }\n\n    .spacing {\n      .numeric {\n        padding: 0 0.3rem;\n      }\n      .meta {\n        padding: 0 0.3rem;\n      }\n    }\n\n  }\n\n  .row:hover {\n    background-color: rgb(51, 51, 68);\n    color: white;\n    cursor: pointer;\n  }\n\n}\n"
  },
  {
    "path": "scss/components/summary.scss",
    "content": "#error-div {\n  margin: 10px;\n}\n\n#query-div {\n  margin: auto;\n  width: 960px;\n  text-align: center;\n}\n\n#code {\n  text-align: left;\n}\n\n.name-div {\n  margin-top: 20px;\n  margin-bottom: 15px;\n  font-weight: bold;\n}\n\n.description {\n  text-align: left;\n}\n"
  },
  {
    "path": "scss/pages/base.scss",
    "content": "body {\n  font-family: FiraSans, \"Helvetica Neue\", Arial, sans-serif;\n  background-color: #f3f3f3;\n  margin: 0;\n  font-weight: lighter;\n}\n\npre {\n  font-family: Fantasque;\n  background-color: white !important;\n  padding: 0.5em !important;\n  margin: 0 !important;\n  font-size: 14px;\n  text-align: left;\n}\n\ncode {\n  font-family: Fantasque;\n  background-color: white !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  font-size: 14px;\n\n}\n\nhtml {\n  margin: 0;\n}\n\n#header {\n  height: 50px;\n  background-color: rgb(51, 51, 68);\n  width: 100%;\n  position: relative;\n  padding: 0;\n\n\n}\n\n#header div {\n  display: inline-block;\n}\n\n.menu {\n  height: 50px;\n  padding: 0;\n  margin: 0;\n\n}\n\n.menu-item {\n  height: 50px;\n  padding-left: 10px;\n  padding-right: 10px;\n  margin: 0;\n  margin-right: -4px;\n  color: white;\n\n}\n\n.menu-item a {\n  color: white !important;\n}\n\n#filter .menu-item {\n  margin-right: 0px;\n}\n\n.selectable-menu-item {\n  transition: background-color 0.15s ease, color 0.15s ease;\n\n}\n\n.selectable-menu-item:hover {\n  background-color: #f3f3f3;\n  cursor: pointer;\n  color: black !important;\n}\n\n.selectable-menu-item:hover a {\n  color: black !important;\n}\n\n.menu-item-selected {\n  background-color: #f3f3f3;\n  color: black !important;\n}\n\n.menu-item-selected a {\n  color: black !important;\n}\n\n.menu-item-outer {\n  display: table !important;\n  height: 100%;\n  width: 100%;\n}\n\n.menu-item-inner {\n  display: table-cell !important;\n  vertical-align: middle;\n  width: 100%;\n}\n\na:visited {\n  color: black;\n}\n\na {\n  color: black;\n  text-decoration: none;\n}\n\n#filter {\n  height: 50px;\n  position: absolute;\n  right: 0;\n}\n\n.description {\n  font-style: italic;\n  font-size: 14px;\n  margin-bottom: 5px;\n}\n"
  },
  {
    "path": "scss/pages/clear_db.scss",
    "content": ".wrapper {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.inner {\n  margin: auto;\n  width: 960px;\n}\n\n.cleardb-form .cleardb-form-wrapper{\n  margin-bottom: 20px;\n}\n\n.cleardb-form label {\n  display: block;\n  margin-bottom: 8px;\n}\n\n.cleardb-form .btn {\n  background: #333344;\n  color: #fff;\n  padding: 10px 20px;\n  border-radius: 2px;\n  cursor: pointer;\n  box-shadow: none;\n  font-size: 16px;\n  line-height: 20px;\n  border: 0;\n  min-width: 150px;\n  text-align: center;\n}\n.cleardb-form label :last-child {\n  margin-bottom: 0;\n}\n.msg {\n  margin-top: 20px;\n  color: #bac54b;\n}\n"
  },
  {
    "path": "scss/pages/cprofile.scss",
    "content": "#query-info-div {\n  margin-top: 15px;\n}\n\n#query-info-div .timestamp-div {\n  font-size: 13px;\n\n}\n\n#pyprofile-div {\n  display: block;\n  margin: auto;\n  width: 960px;\n}\n\n.pyprofile {\n  text-align: left;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n#graph-div {\n  padding: 25px;\n  background-color: white;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n  margin-top: 25px;\n  width: 960px;\n  text-align: center;\n}\n\n#percent {\n  width: 20px;\n}\n\nsvg {\n  display: block;\n}\n"
  },
  {
    "path": "scss/pages/detail_base.scss",
    "content": "#traceback {\n  overflow: visible;\n}\n\n#time-div {\n  text-align: center;\n  margin-bottom: 30px;\n}\n\n#query-div {\n  text-align: center;\n  margin-bottom: 20px;\n}\n\n#query {\n  text-align: left;\n  margin: 0 auto;\n  display: inline-block;\n}\n\n.line {\n  width: 100%;\n  display: inline-block;\n}\n\n.the-line {\n  background-color: #c3c3c3;\n}\n\npre {\n  margin: 0;\n}\n"
  },
  {
    "path": "scss/pages/profile_detail.scss",
    "content": "#query-info-div {\n  margin-top: 15px;\n}\n\n#query-info-div .timestamp-div {\n  font-size: 13px;\n\n}\n\n#pyprofile-div {\n  display: block;\n  margin: auto;\n  width: 960px;\n}\n\n.pyprofile {\n  text-align: left;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n#graph-div {\n  padding: 25px;\n  background-color: white;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n  margin-top: 25px;\n  width: 960px;\n  text-align: center;\n}\n\n#percent {\n  width: 20px;\n}\n\nsvg {\n  display: block;\n}\n"
  },
  {
    "path": "scss/pages/profiling.scss",
    "content": ".name-div {\n  font-weight: bold;\n}\n\n.container {\n  padding: 0 1em;\n}\n\n.description {\n\n}\n\nh2 {\n  margin-bottom: 10px;\n}\n\n.pyprofile {\n  overflow: scroll;\n  max-height: 650px;\n}\n"
  },
  {
    "path": "scss/pages/raw.scss",
    "content": "pre {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  background-color: white !important;\n  white-space: pre-wrap; /* css-3 */\n  white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n  /*noinspection CssInvalidElement*/\n  white-space: -pre-wrap; /* Opera 4-6 */\n  white-space: -o-pre-wrap; /* Opera 7 */\n  word-wrap: break-word; /* Internet Explorer 5.5+ */\n}\n\ncode {\n  font-family: Fantasque;\n  background-color: white !important;\n  width: 100% !important;\n  height: auto;\n  padding:0 !important;\n}\n\nbody {\n  margin: 0;\n  padding: 0;\n}\n\nhtml {\n  margin: 0;\n  padding: 0;\n}\n"
  },
  {
    "path": "scss/pages/request.scss",
    "content": "pre {\n  white-space: pre-wrap; /* css-3 */\n  white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n  /*noinspection CssInvalidElement*/\n  white-space: -pre-wrap; /* Opera 4-6 */\n  white-space: -o-pre-wrap; /* Opera 7 */\n  word-wrap: break-word; /* Internet Explorer 5.5+ */\n}\n\n#request-summary {\n\n}\n\n.cell {\n  background-color: transparent;\n  margin-top: 15px;\n}\n\ndiv.wrapper {\n  width: 100%;\n}\n\ndiv.wrapper div#request-summary {\n  margin: auto;\n  text-align: center;\n  width: 100%;\n}\n\ndiv.wrapper div#request-info {\n  width: 960px;\n  margin: auto auto 20px;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n.headers {\n  font-size: 12px;\n  font-family: Fantasque;\n  background-color: white;\n  width: 100%;\n}\n\n.headers tr:hover {\n  background-color: #f4f4f4;\n}\n\n.headers td {\n  padding-bottom: 5px;\n  padding-left: 5px;\n}\n\n.headers .key {\n  font-weight: bold;\n}\n\n.headers .value {\n\n}\n"
  },
  {
    "path": "scss/pages/requests.scss",
    "content": ".container {\n  padding: 0 1em;\n}\n\n.resizing-input input {\n  background-color: white;\n  padding-top: 2px;\n  color: black;\n  box-shadow: inset 0 0 3px black;\n}\n\n.resizing-input input::placeholder {\n  color: #383838;\n  opacity: 1;\n}\n\n.filter-section {\n  line-height: 2.3;\n}\n"
  },
  {
    "path": "scss/pages/root_base.scss",
    "content": ".cell:hover {\n  background-color: rgb(51, 51, 68);\n  color: white;\n  cursor: pointer;\n}\n\n.cell {\n  text-align: center;\n}\n\n/* General styles for all menus */\n\n.cbp-spmenu {\n  background: rgb(51, 51, 68);\n  position: fixed;\n}\n\nh3 {\n  color: white;\n  font-size: 1.9em;\n  padding: 10px;\n  margin: 0;\n  font-weight: 300;\n  background: rgb(51, 51, 68);\n}\n\n/*.cbp-spmenu div {*/\n/*display: block;*/\n/*color: #fff;*/\n/*font-size: 1.1em;*/\n/*font-weight: 300;*/\n/*}*/\n\n/* Orientation-dependent styles for the content of the menu */\n\n.cbp-spmenu-vertical {\n  width: 300px;\n  height: 100%;\n  top: 0;\n  z-index: 1000;\n}\n\n/* Vertical menu that slides from the left or right */\n\n.cbp-spmenu-right {\n  right: -300px;\n}\n\n.cbp-spmenu-right.cbp-spmenu-open {\n  right: 0px;\n}\n\n/* Push classes applied to the body */\n\n.cbp-spmenu-push {\n  overflow-x: hidden;\n  position: relative;\n  left: 0;\n}\n\n.cbp-spmenu-push-toleft {\n  left: -300px;\n}\n\n/* Transitions */\n\n.cbp-spmenu,\n.cbp-spmenu-push {\n  -webkit-transition: all 0.3s ease;\n  -moz-transition: all 0.3s ease;\n  transition: all 0.3s ease;\n}\n\n/* Example media queries */\n\n@media screen and (max-width: 55.1875em) {\n\n  .cbp-spmenu-horizontal {\n    font-size: 75%;\n    height: 110px;\n  }\n\n}\n\n.active-filter {\n  font-size: 12px;\n  color: white;\n}\n\n.active-filter td {\n  padding: 0;\n  margin: 0;\n}\n\n#cbp-spmenu-s2 button {\n  color: white;\n  background: none;\n  border: none;\n}\n\n#cbp-spmenu-s2 button:hover {\n  color: black;\n  background: white;\n  border: none;\n  cursor: pointer;\n}\n\n#cbp-spmenu-s2 button:focus {\n  outline: none;\n}\n\n#slider-label {\n  margin-top: 5px;\n}\n\n#outer-slider {\n  text-align: center;\n  width: 80%;\n}\n\n#seconds {\n  width: 200px;\n  height: 50px;\n}\n\n#slider {\n  width: 80%;\n  margin: auto;\n  margin-top: 10px;\n}\n\ninput[type=\"number\"],\ninput[type=\"text\"] {\n  border: none;\n  padding: 10px;\n  width: 222px;\n}\n\n.add-button {\n  font-size: 20px;\n  font-weight: bold;\n}\n\n.add-button.disabled {\n  color: darkgray !important;\n}\n\n.add-button.disabled:hover {\n  background: transparent !important;\n  cursor: default !important;\n}\n\n.button-div {\n  display: inline-block;\n  text-align: center;\n  height: 50px;\n\n}\n\n.apply-div {\n  display: inline-block;\n  background-color: white;\n  color: black;\n  margin: 10px;\n  padding: 10px;\n  border-radius: 5px;\n}\n\n.apply-div:hover {\n  cursor: pointer;\n}\n\nselect {\n  border-radius: 0;\n  max-width: 100%;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  /*safari and chrome*/\n  select {\n    //height: 30px;\n    line-height: 30px;\n    background: #f4f4f4;\n  }\n}\n\nselect::-moz-focus-inner {\n  /*Remove button padding in FF*/\n  border: 0;\n  padding: 0;\n}\n\n#cbp-spmenu-s2 p {\n  margin-bottom: 10px;\n  margin-left: 10px;\n  margin-right: 10px;\n  margin-top: 0;\n  font-size: 12px;\n  color: white;\n  font-style: oblique;\n  line-height: 16px;;\n}\n\n#filter-item {\n  width: 24px;\n  height: 20px;\n  float: right;\n  display: inline;\n  background-image: url('../../filter.png');\n  background-size: contain;\n  background-repeat: no-repeat;\n  text-align: right;\n}\n\n#filter-item #num-filters {\n  position: relative;\n  top: 7px;\n  left: 1px;\n}\n\n.resizing-input {\n  display: inline-block;\n}\n\n.resizing-input input, .resizing-input span {\n  font-size: 12px;\n  font-family: FiraSans;\n  white-space: pre;\n  font-weight: 300;\n  background-color: transparent;\n  color: white;\n  padding: 0;\n  padding-left: 4px;\n  padding-right: 4px;\n  margin: 0;\n  letter-spacing: 1px;\n}\n\n.resizing-input input:focus {\n  outline: none;\n}\n\n.resizing-input input {\n\n}\n\nh4 {\n  padding: 0;\n  margin: 3px;\n  margin-left: 10px;\n  color: white;\n  font-weight: lighter;\n  font-size: 20px;\n}\n\n.filter-section {\n  color: white;\n  font-size: 12px;\n  line-height: 2.3;\n  padding: 10px;\n}\n\n.filter-section select {\n  margin-bottom: 10px;\n}\n\n.filter-section input {\n  padding: 4px;\n}\n"
  },
  {
    "path": "scss/pages/sql.scss",
    "content": ".right-aligned {\n  text-align: right;\n\n}\n\n.center-aligned {\n  text-align: center;\n\n}\n\n.left-aligned {\n  text-align: left;\n}\n\n#table-pagination {\n  text-align: center;\n  margin: 20px;\n}\n\ntable {\n  border-spacing: 0;\n  margin: auto;\n  max-width: 920px;\n}\n\ntr {\n  height: 20px;\n}\n\ntr.data-row:hover {\n  background-color: rgb(51, 51, 68);\n  color: white;\n  cursor: pointer;\n}\n\ntd {\n  padding: 5px;\n  padding-left: 20px;\n  padding-right: 20px;\n}\n\nth {\n  height: 40px;\n  padding-left: 20px;\n  padding-right: 20px;\n}\n\n#table-div {\n  width: 100%;\n  margin-top: 40px;\n}\n\n#table-pagination div {\n  padding: 5px;\n}\n"
  },
  {
    "path": "scss/pages/sql_detail.scss",
    "content": "#traceback {\n  width: 960px;\n  margin: auto;\n}\n\n#traceback pre {\n  margin-top: 15px !important;\n  margin-bottom: 15px !important;\n}\n\n#traceback .not-third-party {\n  font-weight: bold;\n}\n\na:hover {\n  color: #9dd0ff;\n}\n\na:active {\n  color: #594F4F;\n}\n\ncode {\n  background-color: transparent !important;\n}\n\n#query-div pre {\n  background-color: transparent !important;\n}\n\n#query-div {\n  padding-top: 15px;\n}\n\n#query-info-div div {\n  padding-top: 5px;\n}\n\n#query-plan-div {\n  text-align: left;\n  width: 960px;\n  margin: auto;\n}\n\n#plan-div code {\n  margin: auto !important;\n  display: inline-block;\n}\n\n#query-plan-head {\n  padding-top: 5px;\n  padding-bottom: 15px;\n  text-align: center;\n  margin: auto;\n}\n\n.file-path {\n  font-size: 13px;\n}\n"
  },
  {
    "path": "scss/pages/summary.scss",
    "content": ".wrapper {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.inner {\n  margin: auto;\n  width: 960px;\n}\n\n.summary-cell {\n  display: inline-block;\n  text-align: center;\n  padding: 10px;\n  margin-left: 10px;\n  margin-top: 10px;\n}\n\n.summary-cell .desc {\n  margin-top: 8px;\n  font-size: 12px;\n}\n\n.no-data {\n  font-size: 12px;\n  font-style: oblique;\n  margin-left: 10px;\n}\n\nh2 {\n  margin-bottom: 0;;\n}\n\n#filters {\n  margin-top: 10px;\n  font-size: 12px;\n}\n\n#filters input,\n#filters span {\n  color: black !important;\n  font-weight: bold;\n}\n\n#filter-image {\n  width: 20px;\n}\n\n#filter-cell {\n  padding-left: 5px;\n}\n"
  },
  {
    "path": "setup.py",
    "content": "import os\n\nfrom setuptools import setup\n\n# allow setup.py to be run from any path\nos.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))\n\nsetup(\n    name='django-silk',\n    use_scm_version=True,\n    packages=['silk'],\n    include_package_data=True,\n    license='MIT License',\n    description='Silky smooth profiling for the Django Framework',\n    long_description=open('README.md').read(),\n    long_description_content_type='text/markdown',\n    url='https://github.com/jazzband/django-silk',\n    author='Michael Ford',\n    author_email='mtford@gmail.com',\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Web Environment',\n        'Framework :: Django',\n        'Framework :: Django :: 4.2',\n        'Framework :: Django :: 5.1',\n        'Framework :: Django :: 5.2',\n        'Framework :: Django :: 6.0',\n        'Intended Audience :: Developers',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python',\n        'Programming Language :: Python :: 3.10',\n        'Programming Language :: Python :: 3.11',\n        'Programming Language :: Python :: 3.12',\n        'Programming Language :: Python :: 3.13',\n        'Programming Language :: Python :: 3.14',\n        'Topic :: Internet :: WWW/HTTP',\n        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',\n    ],\n    install_requires=[\n        'Django>=4.2',\n        'sqlparse',\n        'gprof2dot>=2017.09.19',\n    ],\n    extras_require={\n        'formatting': ['autopep8'],\n    },\n    python_requires='>=3.10',\n    setup_requires=['setuptools_scm'],\n)\n"
  },
  {
    "path": "silk/__init__.py",
    "content": "from importlib.metadata import version\n\n__version__ = version(\"django-silk\")\n"
  },
  {
    "path": "silk/apps.py",
    "content": "from django.apps import AppConfig\n\n\nclass SilkAppConfig(AppConfig):\n    default_auto_field = \"django.db.models.AutoField\"\n    name = \"silk\"\n"
  },
  {
    "path": "silk/auth.py",
    "content": "from functools import WRAPPER_ASSIGNMENTS, wraps\n\nfrom django.contrib.auth.decorators import login_required\nfrom django.core.exceptions import PermissionDenied\n\nfrom silk.config import SilkyConfig\n\n\ndef login_possibly_required(function=None, **kwargs):\n    if SilkyConfig().SILKY_AUTHENTICATION:\n        return login_required(function, **kwargs)\n    return function\n\n\ndef permissions_possibly_required(function=None):\n    if SilkyConfig().SILKY_AUTHORISATION:\n        actual_decorator = user_passes_test(\n            SilkyConfig().SILKY_PERMISSIONS\n        )\n        if function:\n            return actual_decorator(function)\n        return actual_decorator\n    return function\n\n\ndef user_passes_test(test_func):\n    def decorator(view_func):\n        @wraps(view_func, assigned=WRAPPER_ASSIGNMENTS)\n        def _wrapped_view(request, *args, **kwargs):\n            if test_func(request.user):\n                return view_func(request, *args, **kwargs)\n            else:\n                raise PermissionDenied\n\n        return _wrapped_view\n\n    return decorator\n"
  },
  {
    "path": "silk/code_generation/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "silk/code_generation/curl.py",
    "content": "import json\nfrom urllib.parse import urlencode\n\nfrom django.template import Context, Template\n\ncurl_template = \"\"\"\\\ncurl {% if method %}-X {{ method }}{% endif %}\n{% if content_type %}-H 'content-type: {{ content_type }}'{% endif %}\n{% if modifier %}{{ modifier }} {% endif %}{% if body %}'{{ body }}'{% endif %}\n{{ url }}{% if query_params %}{{ query_params }}{% endif %}\n{% if extra %}{{ extra }}{% endif %}\n\"\"\"\n\n\ndef _curl_process_params(body, content_type, query_params):\n    extra = None\n    if query_params:\n        try:\n            query_params = urlencode(\n                [(k, v.encode('utf8')) for k, v in query_params.items()]\n            )\n        except TypeError:\n            pass\n        query_params = '?' + str(query_params)\n    if 'json' in content_type or 'javascript' in content_type:\n        if isinstance(body, dict):\n            body = json.dumps(body)\n        modifier = '-d'\n    # See http://curl.haxx.se/docs/manpage.html#-F\n    # for multipart vs x-www-form-urlencoded\n    # x-www-form-urlencoded is same way as browser,\n    # multipart is RFC 2388 which allows file uploads.\n    elif 'multipart' in content_type or 'x-www-form-urlencoded' in content_type:\n        try:\n            body = ' '.join([f'{k}={v}' for k, v in body.items()])\n        except AttributeError:\n            modifier = '-d'\n        else:\n            content_type = None\n            modifier = '-F'\n    elif body:\n        body = str(body)\n        modifier = '-d'\n    else:\n        modifier = None\n        content_type = None\n    # TODO: Clean up.\n    return modifier, body, query_params, content_type, extra\n\n\ndef curl_cmd(url, method=None, query_params=None, body=None, content_type=None):\n    if not content_type:\n        content_type = 'text/plain'\n    modifier, body, query_params, content_type, extra = _curl_process_params(\n        body,\n        content_type,\n        query_params,\n    )\n    t = Template(curl_template)\n    context = {\n        'url': url,\n        'method': method,\n        'query_params': query_params,\n        'body': body,\n        'modifier': modifier,\n        'content_type': content_type,\n        'extra': extra,\n    }\n    return t.render(Context(context, autoescape=False)).replace('\\n', ' ')\n"
  },
  {
    "path": "silk/code_generation/django_test_client.py",
    "content": "from urllib.parse import urlencode\n\ntry:\n    import autopep8\nexcept ImportError:\n    autopep8 = None\nfrom django.template import Context, Template\n\nfrom silk.profiling.dynamic import is_str_typ\n\ntemplate = \"\"\"\\\nfrom django.test import Client\nc = Client()\nresponse = c.{{ lower_case_method }}(path='{{ path }}'{% if data or content_type %},{% else %}){% endif %}{% if data %}\ndata={{ data }}{% endif %}{% if data and content_type %},{% elif data %}){% endif %}{% if content_type %}\ncontent_type='{{ content_type }}'){% endif %}\n\"\"\"\n\n\ndef _encode_query_params(query_params):\n    try:\n        query_params = urlencode(query_params)\n    except TypeError:\n        pass\n    return '?' + query_params\n\n\ndef gen(path, method=None, query_params=None, data=None, content_type=None):\n    # generates python code representing a call via django client.\n    # useful for use in testing\n    method = method.lower()\n    t = Template(template)\n    context = {\n        'path': path,\n        'lower_case_method': method,\n        'content_type': content_type,\n    }\n    if method == 'get':\n        context['data'] = query_params\n    else:\n        if query_params:\n            query_params = _encode_query_params(query_params)\n            path += query_params\n        if is_str_typ(data):\n            data = \"'%s'\" % data\n        context['data'] = data\n        context['query_params'] = query_params\n    code = t.render(Context(context, autoescape=False))\n    if autopep8:\n        # autopep8 is not a hard requirement, so we check if it's available\n        # if autopep8 is available, we use it to format the code and do things\n        # like remove long lines and improve readability\n        code = autopep8.fix_code(\n            code,\n            options=autopep8.parse_args(['--aggressive', '']),\n        )\n    return code\n"
  },
  {
    "path": "silk/collector.py",
    "content": "import cProfile\nimport logging\nimport marshal\nimport pstats\nimport re\nimport unicodedata\nfrom io import StringIO\nfrom threading import local\n\nfrom silk import models\nfrom silk.config import SilkyConfig\nfrom silk.errors import SilkInternalInconsistency, SilkNotConfigured\nfrom silk.models import _time_taken\nfrom silk.singleton import Singleton\n\nTYP_SILK_QUERIES = 'silk_queries'\nTYP_PROFILES = 'profiles'\nTYP_QUERIES = 'queries'\n\nLogger = logging.getLogger('silk.collector')\n\n\ndef raise_middleware_error():\n    raise RuntimeError(\n        'Silk middleware has not been installed correctly. Ordering must ensure that Silk middleware can '\n        'execute process_request and process_response. If an earlier middleware returns from either of '\n        'these methods, Silk will not have the chance to inspect the request/response objects.')\n\n\nclass DataCollector(metaclass=Singleton):\n    \"\"\"\n    Provides the ability to save all models at the end of the request. We\n    cannot save during the request due to the possibility of atomic blocks\n    and hence must collect data and perform the save at the end.\n    \"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self.local = local()\n        self._configure()\n\n    def ensure_middleware_installed(self):\n        if not hasattr(self.local, 'temp_identifier'):\n            raise_middleware_error()\n\n    @property\n    def request(self):\n        return getattr(self.local, 'request', None)\n\n    def get_identifier(self):\n        self.ensure_middleware_installed()\n        self.local.temp_identifier += 1\n        return self.local.temp_identifier\n\n    @request.setter\n    def request(self, value):\n        self.local.request = value\n\n    def _configure(self):\n        self.local.objects = {}\n        self.local.temp_identifier = 0\n        self.stop_python_profiler()\n        self.local.pythonprofiler = None\n\n    @property\n    def objects(self):\n        return getattr(self.local, 'objects', None)\n\n    @property\n    def queries(self):\n        return self._get_objects(TYP_QUERIES)\n\n    @property\n    def silk_queries(self):\n        return self._get_objects(TYP_SILK_QUERIES)\n\n    def _get_objects(self, typ):\n        objects = self.objects\n        if objects is None:\n            self._raise_not_configured(\n                'Attempt to access %s without initialisation.' % typ\n            )\n        if typ not in objects:\n            objects[typ] = {}\n        return objects[typ]\n\n    @property\n    def profiles(self):\n        return self._get_objects(TYP_PROFILES)\n\n    def configure(self, request=None, should_profile=True):\n        self.request = request\n        self._configure()\n        if should_profile:\n            self.local.pythonprofiler = cProfile.Profile()\n            try:\n                self.local.pythonprofiler.enable()\n            except ValueError as e:  # pragma: no cover\n                # Deal with cProfile not being allowed to run concurrently\n                # https://github.com/jazzband/django-silk/issues/682\n                Logger.error('Could not enable python profiler, %s' % str(e), exc_info=True)\n                self.local.pythonprofiler = None\n\n    def clear(self):\n        self.request = None\n        self._configure()\n\n    def _raise_not_configured(self, err):\n        raise SilkNotConfigured(err + ' Is the middleware installed correctly?')\n\n    def register_objects(self, typ, *args):\n        self.ensure_middleware_installed()\n        for arg in args:\n            ident = self.get_identifier()\n            objects = self.objects\n            if objects is None:\n                # This can happen if the SilkyMiddleware.process_request is not\n                # called for whatever reason. Perhaps if another piece of\n                # middleware is not playing ball.\n                self._raise_not_configured(\n                    'Attempt to register object of type %s without initialisation. '\n                )\n            if typ not in objects:\n                self.objects[typ] = {}\n            self.objects[typ][ident] = arg\n\n    def register_query(self, *args):\n        self.register_objects(TYP_QUERIES, *args)\n\n    def register_profile(self, *args):\n        self.register_objects(TYP_PROFILES, *args)\n\n    def _record_meta_profiling(self):\n        if SilkyConfig().SILKY_META:\n            num_queries = len(self.silk_queries)\n            query_time = sum(_time_taken(x['start_time'], x['end_time']) for _, x in self.silk_queries.items())\n            self.request.meta_num_queries = num_queries\n            self.request.meta_time_spent_queries = query_time\n\n    def stop_python_profiler(self):\n        if getattr(self.local, 'pythonprofiler', None):\n            self.local.pythonprofiler.disable()\n\n    def finalise(self):\n        if getattr(self.local, 'pythonprofiler', None):\n            s = StringIO()\n            ps = pstats.Stats(self.local.pythonprofiler, stream=s).sort_stats('cumulative')\n            ps.print_stats()\n            profile_text = s.getvalue()\n            profile_text = \"\\n\".join(\n                profile_text.split(\"\\n\")[0:256])  # don't record too much because it can overflow the field storage size\n            self.request.pyprofile = profile_text\n\n            if SilkyConfig().SILKY_PYTHON_PROFILER_BINARY:\n                proposed_file_name = self._get_proposed_file_name()\n                file_name = self.request.prof_file.storage.get_available_name(proposed_file_name)\n                with self.request.prof_file.storage.open(file_name, 'w+b') as f:\n                    marshal.dump(ps.stats, f)\n                self.request.prof_file = f.name\n\n        sql_queries = []\n        for identifier, query in self.queries.items():\n            query['identifier'] = identifier\n            sql_query = models.SQLQuery(**query)\n            sql_queries += [sql_query]\n\n        models.SQLQuery.objects.bulk_create(sql_queries)\n        sql_queries = models.SQLQuery.objects.filter(request=self.request)\n        for sql_query in sql_queries.all():\n            query = self.queries.get(sql_query.identifier)\n            if query:\n                query['model'] = sql_query\n\n        for profile in self.profiles.values():\n            profile_query_models = []\n            if TYP_QUERIES in profile:\n                profile_queries = profile[TYP_QUERIES]\n                del profile[TYP_QUERIES]\n                for query_temp_id in profile_queries:\n                    try:\n                        query = self.queries[query_temp_id]\n                        try:\n                            profile_query_models.append(query['model'])\n                        except KeyError:\n                            raise SilkInternalInconsistency(\n                                'Profile references a query dictionary that has not '\n                                'been converted into a Django model. This should '\n                                'never happen, please file a bug report'\n                            )\n                    except KeyError:\n                        raise SilkInternalInconsistency(\n                            'Profile references a query temp_id that does not exist. '\n                            'This should never happen, please file a bug report'\n                        )\n            profile = models.Profile.objects.create(**profile)\n            if profile_query_models:\n                profile.queries.set(profile_query_models)\n        self._record_meta_profiling()\n\n    def register_silk_query(self, *args):\n        self.register_objects(TYP_SILK_QUERIES, *args)\n\n    def _get_proposed_file_name(self) -> str:\n        \"\"\"Retrieve the profile file name to be proposed to the storage\"\"\"\n\n        if SilkyConfig().SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME:\n            slugified_path = slugify_path(self.request.path)\n            return f\"{slugified_path}_{str(self.request.id)}.prof\"\n        return f\"{str(self.request.id)}.prof\"\n\n\ndef slugify_path(request_path: str) -> str:\n    \"\"\"\n    Convert any characters not included in [a-zA-Z0-9_]) with a single underscore.\n    Convert to lowercase. Also strip any leading and trailing char that are not in the\n    accepted list\n\n    Inspired from django slugify\n    \"\"\"\n    request_path = str(request_path)\n    request_path = (\n        unicodedata.normalize(\"NFKD\", request_path)\n        .encode(\"ascii\", \"ignore\")\n        .decode(\"ascii\")\n    )\n    request_path = request_path.lower()[:50]\n    return re.sub(r'\\W+', '_', request_path).strip('_')\n"
  },
  {
    "path": "silk/config.py",
    "content": "from copy import copy\n\nfrom silk.singleton import Singleton\n\n\ndef default_permissions(user):\n    if user:\n        return user.is_staff\n    return False\n\n\nclass SilkyConfig(metaclass=Singleton):\n    defaults = {\n        'SILKY_DYNAMIC_PROFILING': [],\n        'SILKY_IGNORE_PATHS': [],\n        'SILKY_HIDE_COOKIES': True,\n        'SILKY_IGNORE_QUERIES': [],\n        'SILKY_META': False,\n        'SILKY_AUTHENTICATION': False,\n        'SILKY_AUTHORISATION': False,\n        'SILKY_PERMISSIONS': default_permissions,\n        'SILKY_MAX_RECORDED_REQUESTS': 10**4,\n        'SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT': 10,\n        'SILKY_MAX_REQUEST_BODY_SIZE': -1,\n        'SILKY_MAX_RESPONSE_BODY_SIZE': -1,\n        'SILKY_INTERCEPT_PERCENT': 100,\n        'SILKY_INTERCEPT_FUNC': None,\n        'SILKY_PYTHON_PROFILER': False,\n        'SILKY_PYTHON_PROFILER_FUNC': None,\n        'SILKY_STORAGE_CLASS': 'silk.storage.ProfilerResultStorage',\n        'SILKY_PYTHON_PROFILER_EXTENDED_FILE_NAME': False,\n        'SILKY_MIDDLEWARE_CLASS': 'silk.middleware.SilkyMiddleware',\n        'SILKY_JSON_ENSURE_ASCII': True,\n        'SILKY_ANALYZE_QUERIES': False,\n        'SILKY_EXPLAIN_FLAGS': None,\n        'SILKY_SENSITIVE_KEYS': {'username', 'api', 'token', 'key', 'secret', 'password', 'signature'},\n        'SILKY_DELETE_PROFILES': False\n    }\n\n    def _setup(self):\n        from django.conf import settings\n\n        options = {option: getattr(settings, option) for option in dir(settings) if option.startswith('SILKY')}\n        self.attrs = copy(self.defaults)\n        self.attrs['SILKY_PYTHON_PROFILER_RESULT_PATH'] = settings.MEDIA_ROOT\n        self.attrs.update(options)\n\n    def __init__(self):\n        super().__init__()\n        self._setup()\n\n    def __getattr__(self, item):\n        return self.attrs.get(item, None)\n\n    def __setattribute__(self, key, value):\n        self.attrs[key] = value\n"
  },
  {
    "path": "silk/errors.py",
    "content": "class SilkError(Exception):\n    pass\n\n\nclass SilkNotConfigured(SilkError):\n    pass\n\n\nclass SilkInternalInconsistency(SilkError):\n    pass\n"
  },
  {
    "path": "silk/management/__init__.py",
    "content": ""
  },
  {
    "path": "silk/management/commands/__init__.py",
    "content": ""
  },
  {
    "path": "silk/management/commands/silk_clear_request_log.py",
    "content": "from django.core.management.base import BaseCommand\n\nimport silk.models\nfrom silk.utils.data_deletion import delete_model\n\n\nclass Command(BaseCommand):\n    help = \"Clears silk's log of requests.\"\n\n    def handle(self, *args, **options):\n        # Django takes a long time to traverse foreign key relations,\n        # so delete in the order that makes it easy.\n        delete_model(silk.models.Profile)\n        delete_model(silk.models.SQLQuery)\n        delete_model(silk.models.Response)\n        delete_model(silk.models.Request)\n"
  },
  {
    "path": "silk/management/commands/silk_request_garbage_collect.py",
    "content": "from django.core.management.base import BaseCommand\n\nimport silk.models\nfrom silk.config import SilkyConfig\n\n\nclass Command(BaseCommand):\n    help = \"Triggers silk's request garbage collect.\"\n\n    def add_arguments(self, parser):\n        parser.add_argument(\n            \"-m\",\n            \"--max-requests\",\n            default=SilkyConfig().SILKY_MAX_RECORDED_REQUESTS,\n            type=int,\n            help=\"Maximum number of requests to keep after garbage collection.\",\n        )\n\n    def handle(self, *args, **options):\n        if \"max_requests\" in options:\n            max_requests = options[\"max_requests\"]\n            SilkyConfig().SILKY_MAX_RECORDED_REQUESTS = max_requests\n        if options[\"verbosity\"] >= 2:\n            max_requests = SilkyConfig().SILKY_MAX_RECORDED_REQUESTS\n            request_count = silk.models.Request.objects.count()\n            self.stdout.write(\n                f\"Keeping up to {max_requests} of {request_count} requests.\"\n            )\n        silk.models.Request.garbage_collect(force=True)\n"
  },
  {
    "path": "silk/middleware.py",
    "content": "import logging\nimport random\n\nfrom django.conf import settings\nfrom django.db import DatabaseError, router, transaction\nfrom django.db.models.sql.compiler import SQLCompiler\nfrom django.urls import NoReverseMatch, reverse\nfrom django.utils import timezone\nfrom django.utils.translation import gettext_lazy as _\n\nfrom silk import models\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\nfrom silk.errors import SilkNotConfigured\nfrom silk.model_factory import RequestModelFactory, ResponseModelFactory\nfrom silk.profiling import dynamic\nfrom silk.profiling.profiler import silk_meta_profiler\nfrom silk.sql import execute_sql\n\nLogger = logging.getLogger('silk.middleware')\n\n\ndef silky_reverse(name, *args, **kwargs):\n    try:\n        r = reverse('silk:%s' % name, *args, **kwargs)\n    except NoReverseMatch:\n        # In case user forgets to set namespace, but also fixes Django 1.5 tests on Travis\n        # Hopefully if user has forgotten to add namespace there are no clashes with their own\n        # view names but I don't think there is really anything can do about this.\n        r = reverse(name, *args, **kwargs)\n    return r\n\n\ndef get_fpath():\n    return silky_reverse('summary')\n\n\nconfig = SilkyConfig()\nAUTH_AND_SESSION_MIDDLEWARES = [\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django.contrib.messages.middleware.MessageMiddleware',\n]\n\n\ndef _should_intercept(request):\n    \"\"\"we want to avoid recording any requests/sql queries etc that belong to Silky\"\"\"\n    # Check custom intercept logic.\n    if config.SILKY_INTERCEPT_FUNC:\n        if not config.SILKY_INTERCEPT_FUNC(request):\n            return False\n    # don't trap every request\n    elif config.SILKY_INTERCEPT_PERCENT < 100:\n        if random.random() > config.SILKY_INTERCEPT_PERCENT / 100.0:\n            return False\n\n    try:\n        silky = request.path.startswith(get_fpath())\n    except NoReverseMatch:\n        silky = False\n\n    ignored = request.path in config.SILKY_IGNORE_PATHS\n    return not (silky or ignored)\n\n\nclass TestMiddleware:\n    def process_response(self, request, response):\n        return response\n\n    def process_request(self, request):\n        return\n\n\nclass SilkyMiddleware:\n    def __init__(self, get_response):\n        if config.SILKY_AUTHENTICATION and not (\n            set(AUTH_AND_SESSION_MIDDLEWARES) & set(settings.MIDDLEWARE)\n        ):\n            raise SilkNotConfigured(\n                _(\"SILKY_AUTHENTICATION can not be enabled without Session, \"\n                  \"Authentication or Message Django's middlewares\")\n            )\n\n        self.get_response = get_response\n\n    def __call__(self, request):\n        self.process_request(request)\n\n        # To be able to persist filters when Session and Authentication\n        # middlewares are not present.\n        # Unlike session (which stores in DB) it won't persist filters\n        # after refresh the page.\n        request.silk_filters = {}\n\n        response = self.get_response(request)\n\n        response = self.process_response(request, response)\n\n        return response\n\n    def _apply_dynamic_mappings(self):\n        dynamic_profile_configs = config.SILKY_DYNAMIC_PROFILING\n        for conf in dynamic_profile_configs:\n            module = conf.get('module')\n            function = conf.get('function')\n            start_line = conf.get('start_line')\n            end_line = conf.get('end_line')\n            name = conf.get('name')\n            if module and function:\n                if start_line and end_line:  # Dynamic context manager\n                    dynamic.inject_context_manager_func(module=module,\n                                                        func=function,\n                                                        start_line=start_line,\n                                                        end_line=end_line,\n                                                        name=name)\n                else:  # Dynamic decorator\n                    dynamic.profile_function_or_method(module=module,\n                                                       func=function,\n                                                       name=name)\n            else:\n                raise KeyError('Invalid dynamic mapping %s' % conf)\n\n    @silk_meta_profiler()\n    def process_request(self, request):\n        DataCollector().clear()\n\n        if not _should_intercept(request):\n            return\n\n        Logger.debug('process_request')\n        request.silk_is_intercepted = True\n        self._apply_dynamic_mappings()\n        if not hasattr(SQLCompiler, '_execute_sql'):\n            SQLCompiler._execute_sql = SQLCompiler.execute_sql\n            SQLCompiler.execute_sql = execute_sql\n\n        silky_config = SilkyConfig()\n\n        should_profile = silky_config.SILKY_PYTHON_PROFILER\n        if silky_config.SILKY_PYTHON_PROFILER_FUNC:\n            should_profile = silky_config.SILKY_PYTHON_PROFILER_FUNC(request)\n\n        request_model = RequestModelFactory(request).construct_request_model()\n        DataCollector().configure(request_model, should_profile=should_profile)\n\n    def _process_response(self, request, response):\n        # Use a context manager instead of a decorator so db_for_write is evaluated at runtime,\n        # which is important for dynamic database configurations (e.g., multitenancy).\n        with transaction.atomic(using=router.db_for_write(models.SQLQuery)):\n            Logger.debug('Process response')\n            with silk_meta_profiler():\n                collector = DataCollector()\n                collector.stop_python_profiler()\n                silk_request = collector.request\n                if silk_request:\n                    ResponseModelFactory(response).construct_response_model()\n                    silk_request.end_time = timezone.now()\n                    collector.finalise()\n                else:\n                    Logger.error(\n                        'No request model was available when processing response. '\n                        'Did something go wrong in process_request/process_view?'\n                        '\\n' + str(request) + '\\n\\n' + str(response)\n                    )\n            # Need to save the data outside the silk_meta_profiler\n            # Otherwise the  meta time collected in the context manager\n            # is not taken in account\n            if silk_request:\n                silk_request.save()\n            Logger.debug('Process response done.')\n\n    def process_response(self, request, response):\n        max_attempts = 2\n        attempts = 1\n        if getattr(request, 'silk_is_intercepted', False):\n            while attempts <= max_attempts:\n                if attempts > 1:\n                    Logger.debug('Retrying _process_response; attempt %s' % attempts)\n                try:\n                    self._process_response(request, response)\n                    break\n                except (AttributeError, DatabaseError):\n                    if attempts >= max_attempts:\n                        Logger.warning('Exhausted _process_response attempts; not processing request')\n                        break\n                attempts += 1\n        return response\n"
  },
  {
    "path": "silk/migrations/0001_initial.py",
    "content": "import uuid\n\nimport django.utils.timezone\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n    ]\n\n    operations = [\n        migrations.CreateModel(\n            name='Profile',\n            fields=[\n                ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)),\n                ('name', models.CharField(max_length=300, blank=True, default='')),\n                ('start_time', models.DateTimeField(default=django.utils.timezone.now)),\n                ('end_time', models.DateTimeField(blank=True, null=True)),\n                ('time_taken', models.FloatField(blank=True, null=True)),\n                ('file_path', models.CharField(max_length=300, blank=True, default='')),\n                ('line_num', models.IntegerField(blank=True, null=True)),\n                ('end_line_num', models.IntegerField(blank=True, null=True)),\n                ('func_name', models.CharField(max_length=300, blank=True, default='')),\n                ('exception_raised', models.BooleanField(default=False)),\n                ('dynamic', models.BooleanField(default=False)),\n            ],\n            options={\n                'abstract': False,\n            },\n        ),\n        migrations.CreateModel(\n            name='Request',\n            fields=[\n                ('id', models.CharField(max_length=36, primary_key=True, default=uuid.uuid1, serialize=False)),\n                ('path', models.CharField(db_index=True, max_length=190)),\n                ('query_params', models.TextField(blank=True, default='')),\n                ('raw_body', models.TextField(blank=True, default='')),\n                ('body', models.TextField(blank=True, default='')),\n                ('method', models.CharField(max_length=10)),\n                ('start_time', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),\n                ('view_name', models.CharField(db_index=True, blank=True, default='', max_length=190, null=True)),\n                ('end_time', models.DateTimeField(blank=True, null=True)),\n                ('time_taken', models.FloatField(blank=True, null=True)),\n                ('encoded_headers', models.TextField(blank=True, default='')),\n                ('meta_time', models.FloatField(blank=True, null=True)),\n                ('meta_num_queries', models.IntegerField(blank=True, null=True)),\n                ('meta_time_spent_queries', models.FloatField(blank=True, null=True)),\n                ('pyprofile', models.TextField(blank=True, default='')),\n                ('num_sql_queries', models.IntegerField(default=0)),\n            ],\n        ),\n        migrations.CreateModel(\n            name='Response',\n            fields=[\n                ('id', models.CharField(max_length=36, primary_key=True, default=uuid.uuid1, serialize=False)),\n                ('status_code', models.IntegerField()),\n                ('raw_body', models.TextField(blank=True, default='')),\n                ('body', models.TextField(blank=True, default='')),\n                ('encoded_headers', models.TextField(blank=True, default='')),\n                ('request', models.OneToOneField(to='silk.Request', related_name='response', on_delete=models.CASCADE)),\n            ],\n        ),\n        migrations.CreateModel(\n            name='SQLQuery',\n            fields=[\n                ('id', models.AutoField(serialize=False, primary_key=True, verbose_name='ID', auto_created=True)),\n                ('query', models.TextField()),\n                ('start_time', models.DateTimeField(default=django.utils.timezone.now, blank=True, null=True)),\n                ('end_time', models.DateTimeField(blank=True, null=True)),\n                ('time_taken', models.FloatField(blank=True, null=True)),\n                ('traceback', models.TextField()),\n                ('request', models.ForeignKey(to='silk.Request', blank=True, null=True, related_name='queries', on_delete=models.CASCADE)),\n            ],\n        ),\n        migrations.AddField(\n            model_name='profile',\n            name='queries',\n            field=models.ManyToManyField(to='silk.SQLQuery', db_index=True, related_name='profiles'),\n        ),\n        migrations.AddField(\n            model_name='profile',\n            name='request',\n            field=models.ForeignKey(to='silk.Request', blank=True, null=True, on_delete=models.CASCADE),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0002_auto_update_uuid4_id_field.py",
    "content": "import uuid\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0001_initial'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='request',\n            name='id',\n            field=models.CharField(default=uuid.uuid4, max_length=36, serialize=False, primary_key=True),\n        ),\n        migrations.AlterField(\n            model_name='response',\n            name='id',\n            field=models.CharField(default=uuid.uuid4, max_length=36, serialize=False, primary_key=True),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0003_request_prof_file.py",
    "content": "# Generated by Django 1.9.7 on 2016-07-08 18:23\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0002_auto_update_uuid4_id_field'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='request',\n            name='prof_file',\n            field=models.FileField(null=True, upload_to=''),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0004_request_prof_file_storage.py",
    "content": "# Generated by Django 1.10.4 on 2016-12-06 00:23\n\nfrom django.db import migrations, models\n\nimport silk.models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0003_request_prof_file'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='request',\n            name='prof_file',\n            field=models.FileField(null=True, storage=silk.models.silk_storage, upload_to=''),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0005_increase_request_prof_file_length.py",
    "content": "# Generated by Django 1.11.3 on 2017-07-31 23:40\n\nfrom django.db import migrations, models\n\nimport silk.models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0004_request_prof_file_storage'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='request',\n            name='prof_file',\n            field=models.FileField(max_length=300, null=True, storage=silk.models.silk_storage, upload_to=''),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0006_fix_request_prof_file_blank.py",
    "content": "# Generated by Django 2.0 on 2017-12-28 14:21\n\nfrom django.db import migrations, models\n\nimport silk.storage\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0005_increase_request_prof_file_length'),\n    ]\n\n    operations = [\n        migrations.AlterField(\n            model_name='request',\n            name='prof_file',\n            field=models.FileField(blank=True, max_length=300, storage=silk.storage.ProfilerResultStorage(), upload_to=''),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0007_sqlquery_identifier.py",
    "content": "# Generated by Django 2.2.6 on 2019-10-26 12:57\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0006_fix_request_prof_file_blank'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='sqlquery',\n            name='identifier',\n            field=models.IntegerField(default=-1),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/0008_sqlquery_analysis.py",
    "content": "# Generated by Django 2.2.17 on 2020-11-26 13:17\n\nfrom django.db import migrations, models\n\n\nclass Migration(migrations.Migration):\n\n    dependencies = [\n        ('silk', '0007_sqlquery_identifier'),\n    ]\n\n    operations = [\n        migrations.AddField(\n            model_name='sqlquery',\n            name='analysis',\n            field=models.TextField(blank=True, null=True),\n        ),\n    ]\n"
  },
  {
    "path": "silk/migrations/__init__.py",
    "content": ""
  },
  {
    "path": "silk/model_factory.py",
    "content": "import base64\nimport json\nimport logging\nimport re\nimport sys\nimport traceback\nfrom uuid import UUID\n\nfrom django.core.exceptions import RequestDataTooBig\nfrom django.urls import Resolver404, resolve\n\nfrom silk import models\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\n\nLogger = logging.getLogger('silk.model_factory')\n\ncontent_types_json = ['application/json',\n                      'application/x-javascript',\n                      'text/javascript',\n                      'text/x-javascript',\n                      'text/x-json']\nmultipart_form = 'multipart/form-data'\ncontent_type_form = [multipart_form,\n                     'application/x-www-form-urlencoded']\ncontent_type_html = ['text/html']\ncontent_type_css = ['text/css']\n\n\nclass DefaultEncoder(json.JSONEncoder):\n    def default(self, o):\n        if isinstance(o, UUID):\n            return str(o)\n\n\ndef _parse_content_type(content_type):\n    \"\"\"best efforts on pulling out the content type and encoding from content-type header\"\"\"\n    char_set = None\n    if content_type.strip():\n        splt = content_type.split(';')\n        content_type = splt[0]\n        try:\n            raw_char_set = splt[1].strip()\n            key, char_set = raw_char_set.split('=')\n            if key != 'charset':\n                char_set = None\n        except (IndexError, ValueError):\n            pass\n    return content_type, char_set\n\n\nclass RequestModelFactory:\n    \"\"\"Produce Request models from Django request objects\"\"\"\n    # String to replace on masking\n    CLEANSED_SUBSTITUTE = '********************'\n\n    def __init__(self, request):\n        super().__init__()\n        self.request = request\n\n    def content_type(self):\n        content_type = self.request.headers.get('content-type', '')\n        return _parse_content_type(content_type)\n\n    def encoded_headers(self):\n        \"\"\"\n        From Django docs (https://docs.djangoproject.com/en/2.0/ref/request-response/#httprequest-objects):\n        \"\"\"\n        sensitive_headers = set(map(str.lower, SilkyConfig().SILKY_SENSITIVE_KEYS))\n        sensitive_headers.add('authorization')\n        if SilkyConfig().SILKY_HIDE_COOKIES:\n            sensitive_headers.add('cookie')\n\n        headers = {}\n        for k, v in self.request.headers.items():\n            k = k.lower()\n            if k in sensitive_headers:\n                v = RequestModelFactory.CLEANSED_SUBSTITUTE\n            headers[k] = v\n\n        return json.dumps(headers, cls=DefaultEncoder, ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n\n    def _mask_credentials(self, body):\n        \"\"\"\n        Mask credentials of potentially sensitive info before saving to db.\n        \"\"\"\n        sensitive_keys = SilkyConfig().SILKY_SENSITIVE_KEYS\n        key_string = '|'.join(sensitive_keys)\n\n        def replace_pattern_values(obj):\n            pattern = re.compile(key_string, re.I)\n            if isinstance(obj, dict):\n                for key in obj.keys():\n                    if key_string and pattern.search(key):\n                        obj[key] = RequestModelFactory.CLEANSED_SUBSTITUTE\n                    else:\n                        obj[key] = replace_pattern_values(obj[key])\n            elif isinstance(obj, list):\n                for index, item in enumerate(obj):\n                    obj[index] = replace_pattern_values(item)\n            else:\n                if key_string and pattern.search(str(obj)):\n                    return RequestModelFactory.CLEANSED_SUBSTITUTE\n            return obj\n\n        try:\n            json_body = json.loads(body)\n        except Exception as e:\n            if key_string:\n                pattern = re.compile(fr'(({key_string})[^=]*)=(.*?)(&|$)', re.M | re.I)\n                try:\n                    body = re.sub(pattern, f'\\\\1={RequestModelFactory.CLEANSED_SUBSTITUTE}\\\\4', body)\n                except Exception:\n                    Logger.debug(f'{str(e)}')\n        else:\n            body = json.dumps(replace_pattern_values(json_body), ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n\n        return body\n\n    def _body(self, raw_body, content_type):\n        \"\"\"\n        Encode body as JSON if possible so can be used as a dictionary in generation\n        of curl/django test client code\n        \"\"\"\n        body = ''\n        if content_type in content_type_form:\n            body = self.request.POST\n            body = json.dumps(dict(body), sort_keys=True, indent=4\n                              , ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n        elif content_type in content_types_json:\n            try:\n                body = json.dumps(json.loads(raw_body), sort_keys=True, indent=4\n                                  , ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n            except Exception:\n                body = raw_body\n        return body\n\n    def body(self):\n        content_type, char_set = self.content_type()\n        if content_type == multipart_form:\n            raw_body = b\"Raw body not available for multipart_form data, Silk is not showing file uploads.\"\n            body = ''\n            return body, raw_body\n        try:\n            raw_body = self.request.body\n        except RequestDataTooBig:\n            raw_body = b\"Raw body exceeds DATA_UPLOAD_MAX_MEMORY_SIZE, Silk is not showing file uploads.\"\n            body = self.request.POST.copy()\n            for k, v in self.request.FILES.items():\n                body.appendlist(k, v)\n            return body, raw_body\n        if char_set:\n            try:\n                raw_body = raw_body.decode(char_set)\n            except AttributeError:\n                pass\n            except LookupError:  # If no encoding exists, default to UTF-8\n                try:\n                    raw_body = raw_body.decode('UTF-8')\n                except AttributeError:\n                    pass\n                except UnicodeDecodeError:\n                    raw_body = ''\n            except Exception as e:\n                Logger.error(\n                    'Unable to decode request body using char_set %s due to error: %s. Will ignore. Stacktrace:'\n                    % (char_set, e)\n                )\n                traceback.print_exc()\n        else:\n            # Default to an attempt at UTF-8 decoding.\n            try:\n                raw_body = raw_body.decode('UTF-8')\n            except AttributeError:\n                pass\n            except UnicodeDecodeError:\n                raw_body = ''\n        max_size = SilkyConfig().SILKY_MAX_REQUEST_BODY_SIZE\n        body = ''\n        if raw_body:\n            if max_size > -1:\n                Logger.debug('A max request size is set so checking size')\n                size = sys.getsizeof(raw_body, default=None)\n                request_identifier = self.request.path\n                if not size:\n                    Logger.error(\n                        'No way in which to get size of request body for %s, will ignore it',\n                        request_identifier\n                    )\n                elif size <= max_size:\n                    Logger.debug(\n                        'Request %s has body of size %d which is less than %d so will save the body'\n                        % (request_identifier, size, max_size)\n                    )\n                    body = self._body(raw_body, content_type)\n                else:\n                    Logger.debug(\n                        'Request %s has body of size %d which is greater than %d, therefore ignoring'\n                        % (request_identifier, size, max_size)\n                    )\n                    raw_body = None\n            else:\n                Logger.debug('No maximum request body size is set, continuing.')\n                body = self._body(raw_body, content_type)\n        body = self._mask_credentials(body)\n        raw_body = self._mask_credentials(raw_body)\n        return body, raw_body\n\n    def query_params(self):\n        query_params = self.request.GET\n        encoded_query_params = ''\n        if query_params:\n            query_params_dict = dict(zip(query_params.keys(), query_params.values()))\n            encoded_query_params = json.dumps(query_params_dict, ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n        return encoded_query_params\n\n    def view_name(self):\n        try:\n            resolved = resolve(self.request.path_info)\n        except Resolver404:\n            return None\n\n        return resolved.view_name\n\n    def construct_request_model(self):\n        body, raw_body = self.body()\n        query_params = self.query_params()\n        path = self.request.path\n        view_name = self.view_name()\n\n        request_model = models.Request.objects.create(\n            path=path,\n            encoded_headers=self.encoded_headers(),\n            method=self.request.method,\n            query_params=query_params,\n            view_name=view_name,\n            body=body)\n        # Text fields are encoded as UTF-8 in Django and hence will try to coerce\n        # anything to we pass to UTF-8. Some stuff like binary will fail.\n        try:\n            request_model.raw_body = raw_body\n        except UnicodeDecodeError:\n            Logger.debug('NYI: Binary request bodies')  # TODO\n        Logger.debug('Created new request model with pk %s' % request_model.pk)\n        return request_model\n\n\nclass ResponseModelFactory:\n    \"\"\"given a response object, craft the silk response model\"\"\"\n\n    def __init__(self, response):\n        super().__init__()\n        self.response = response\n        self.request = DataCollector().request\n\n    def body(self):\n        body = ''\n        content_type, char_set = _parse_content_type(self.response.get('content-type', ''))\n        content = getattr(self.response, 'content', '')\n        if content:\n            max_body_size = SilkyConfig().SILKY_MAX_RESPONSE_BODY_SIZE\n            if max_body_size > -1:\n                Logger.debug('Max size of response body defined so checking')\n                size = sys.getsizeof(content, None)\n                if not size:\n                    Logger.error('Could not get size of response body. Ignoring')\n                    content = ''\n                else:\n                    if size > max_body_size:\n                        content = ''\n                        Logger.debug(\n                            'Size of %d for %s is bigger than %d so ignoring response body'\n                            % (size, self.request.path, max_body_size)\n                        )\n                    else:\n                        Logger.debug(\n                            'Size of %d for %s is less than %d so saving response body'\n                            % (size, self.request.path, max_body_size)\n                        )\n            if content and content_type in content_types_json:\n                # TODO: Perhaps theres a way to format the JSON without parsing it?\n                try:\n                    body = json.dumps(json.loads(content), sort_keys=True, indent=4\n                                      , ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII)\n                except (TypeError, ValueError):\n                    Logger.warning(\n                        'Response to request with pk %s has content type %s but was unable to parse it'\n                        % (self.request.pk, content_type)\n                    )\n        return body, content\n\n    def construct_response_model(self):\n        assert self.request, 'Cant construct a response model if there is no request model'\n        Logger.debug(\n            'Creating response model for request model with pk %s'\n            % self.request.pk\n        )\n        b, content = self.body()\n        headers = {}\n        for k, v in self.response.headers.items():\n            try:\n                header, val = v\n            except ValueError:\n                header, val = k, v\n            finally:\n                headers[header] = val\n        silky_response = models.Response(\n            request_id=self.request.id,\n            status_code=self.response.status_code,\n            encoded_headers=json.dumps(headers, ensure_ascii=SilkyConfig().SILKY_JSON_ENSURE_ASCII),\n            body=b\n        )\n\n        try:\n            raw_body = base64.b64encode(content)\n        except TypeError:\n            raw_body = base64.b64encode(content.encode('utf-8'))\n        silky_response.raw_body = raw_body.decode('ascii')\n        silky_response.save()\n        return silky_response\n"
  },
  {
    "path": "silk/models.py",
    "content": "import base64\nimport json\nimport random\nimport re\nfrom uuid import uuid4\n\nimport sqlparse\nfrom django.conf import settings\nfrom django.core.files.storage import storages\nfrom django.core.files.storage.handler import InvalidStorageError\nfrom django.db import models, router, transaction\nfrom django.db.models import (\n    BooleanField,\n    CharField,\n    DateTimeField,\n    FileField,\n    FloatField,\n    ForeignKey,\n    IntegerField,\n    ManyToManyField,\n    OneToOneField,\n    Sum,\n    TextField,\n)\nfrom django.utils import timezone\nfrom django.utils.safestring import mark_safe\n\nfrom silk.config import SilkyConfig\nfrom silk.utils.profile_parser import parse_profile\n\ntry:\n    silk_storage = storages['SILKY_STORAGE']\nexcept InvalidStorageError:\n    from django.utils.module_loading import import_string\n    storage_class = SilkyConfig().SILKY_STORAGE_CLASS or settings.DEFAULT_FILE_STORAGE\n    silk_storage = import_string(storage_class)()\n\n\n# Seperated out so can use in tests w/o models\ndef _time_taken(start_time, end_time):\n    d = end_time - start_time\n    return d.seconds * 1000 + d.microseconds / 1000\n\n\ndef time_taken(self):\n    return _time_taken(self.start_time, self.end_time)\n\n\nclass CaseInsensitiveDictionary(dict):\n    def __getitem__(self, key):\n        return super().__getitem__(key.lower())\n\n    def __setitem__(self, key, value):\n        super().__setitem__(key.lower(), value)\n\n    def update(self, other=None, **kwargs):\n        for k, v in other.items():\n            self[k] = v\n        for k, v in kwargs.items():\n            self[k] = v\n\n    def __init__(self, d):\n        super().__init__()\n        for k, v in d.items():\n            self[k] = v\n\n\nclass Request(models.Model):\n    id = CharField(max_length=36, default=uuid4, primary_key=True)\n    path = CharField(max_length=190, db_index=True)\n    query_params = TextField(blank=True, default='')\n    raw_body = TextField(blank=True, default='')\n    body = TextField(blank=True, default='')\n    method = CharField(max_length=10)\n    start_time = DateTimeField(default=timezone.now, db_index=True)\n    view_name = CharField(\n        max_length=190, db_index=True, blank=True,\n        default='', null=True\n    )\n    end_time = DateTimeField(null=True, blank=True)\n    time_taken = FloatField(blank=True, null=True)  # milliseconds\n    encoded_headers = TextField(blank=True, default='')  # stores json\n    meta_time = FloatField(null=True, blank=True)\n    meta_num_queries = IntegerField(null=True, blank=True)\n    meta_time_spent_queries = FloatField(null=True, blank=True)\n    pyprofile = TextField(blank=True, default='')\n    prof_file = FileField(max_length=300, blank=True, storage=silk_storage)\n\n    # Useful method to create shortened copies of strings without losing start and end context\n    # Used to ensure path and view_name don't exceed 190 characters\n    def _shorten(self, string):\n        return f'{string[:94]}...{string[len(string) - 93:]}'\n\n    @property\n    def total_meta_time(self):\n        return (self.meta_time or 0) + (self.meta_time_spent_queries or 0)\n\n    @property\n    def profile_table(self):\n        for n, columns in enumerate(parse_profile(self.pyprofile)):\n            location = columns[-1]\n            if n and '{' not in location and '<' not in location:\n                r = re.compile(r'(?P<src>.*\\.py)\\:(?P<num>[0-9]+).*')\n                m = r.search(location)\n                group = m.groupdict()\n                src = group['src']\n                num = group['num']\n                name = 'c%d' % n\n                fmt = '<a name={name} href=\"?pos={n}&file_path={src}&line_num={num}#{name}\">{location}</a>'\n                rep = fmt.format(**dict(group, **locals()))\n                yield columns[:-1] + [mark_safe(rep)]\n            else:\n                yield columns\n\n    # defined in atomic transaction within SQLQuery save()/delete() as well\n    # as in bulk_create of SQLQueryManager\n    # TODO: This is probably a bad way to do this, .count() will prob do?\n    num_sql_queries = IntegerField(default=0)  # TODO replace with count()\n\n    @property\n    def time_spent_on_sql_queries(self):\n        \"\"\"\"\n        Calculate the total time spent in milliseconds on SQL queries using Django aggregates.\n        \"\"\"\n        result = SQLQuery.objects.filter(request=self).aggregate(\n            total_time=Sum('time_taken', output_field=FloatField())\n        )\n        return result['total_time'] or 0.0\n\n    @property\n    def headers(self):\n        if self.encoded_headers:\n            raw = json.loads(self.encoded_headers)\n        else:\n            raw = {}\n\n        return CaseInsensitiveDictionary(raw)\n\n    @property\n    def content_type(self):\n        return self.headers.get('content-type', None)\n\n    @classmethod\n    def garbage_collect(cls, force=False):\n        \"\"\" Remove Request/Responses when we are at the SILKY_MAX_RECORDED_REQUESTS limit\n        Note that multiple in-flight requests may call this at once causing a\n        double collection \"\"\"\n        check_percent = SilkyConfig().SILKY_MAX_RECORDED_REQUESTS_CHECK_PERCENT\n        check_percent /= 100.0\n        if check_percent < random.random() and not force:\n            return\n        target_count = SilkyConfig().SILKY_MAX_RECORDED_REQUESTS\n\n        # Since garbage collection is probabilistic, the target count should\n        # be lowered to account for requests before the next garbage collection\n        if check_percent != 0:\n            target_count -= int(1 / check_percent)\n\n        # Make sure we can delete everything if needed by settings\n        if target_count <= 0:\n            cls.objects.all().delete()\n            return\n\n        try:\n            time_cutoff = cls.objects.order_by(\n                '-start_time'\n            ).values_list(\n                'start_time',\n                flat=True\n            )[target_count]\n        except IndexError:\n            return\n\n        cls.objects.filter(start_time__lte=time_cutoff).delete()\n\n    def save(self, *args, **kwargs):\n        # sometimes django requests return the body as 'None'\n        if self.raw_body is None:\n            self.raw_body = ''\n\n        if self.body is None:\n            self.body = ''\n\n        if self.end_time and self.start_time:\n            interval = self.end_time - self.start_time\n            self.time_taken = interval.total_seconds() * 1000\n\n        # We can't save if either path or view_name exceed 190 characters\n        if self.path and len(self.path) > 190:\n            self.path = self._shorten(self.path)\n\n        if self.view_name and len(self.view_name) > 190:\n            self.view_name = self._shorten(self.view_name)\n\n        super().save(*args, **kwargs)\n        Request.garbage_collect(force=False)\n\n\nclass Response(models.Model):\n    id = CharField(max_length=36, default=uuid4, primary_key=True)\n    request = OneToOneField(\n        Request, related_name='response', db_index=True,\n        on_delete=models.CASCADE,\n    )\n    status_code = IntegerField()\n    raw_body = TextField(blank=True, default='')\n    body = TextField(blank=True, default='')\n    encoded_headers = TextField(blank=True, default='')\n\n    @property\n    def content_type(self):\n        return self.headers.get('content-type', None)\n\n    @property\n    def headers(self):\n        if self.encoded_headers:\n            raw = json.loads(self.encoded_headers)\n        else:\n            raw = {}\n        return CaseInsensitiveDictionary(raw)\n\n    @property\n    def raw_body_decoded(self):\n        return base64.b64decode(self.raw_body)\n\n\n# TODO rewrite docstring\nclass SQLQueryManager(models.Manager):\n    def bulk_create(self, *args, **kwargs):\n        \"\"\"ensure that num_sql_queries remains consistent. Bulk create does not call\n        the model save() method and hence we must add this logic here too\"\"\"\n        with transaction.atomic(using=router.db_for_write(SQLQuery)):\n            if len(args):\n                objs = args[0]\n            else:\n                objs = kwargs.get('objs')\n            for obj in objs:\n                obj.prepare_save()\n\n            return super().bulk_create(*args, **kwargs)\n\n\nclass SQLQuery(models.Model):\n    query = TextField()\n    start_time = DateTimeField(null=True, blank=True, default=timezone.now)\n    end_time = DateTimeField(null=True, blank=True)\n    time_taken = FloatField(blank=True, null=True)  # milliseconds\n    identifier = IntegerField(default=-1)\n    request = ForeignKey(\n        Request, related_name='queries', null=True,\n        blank=True, db_index=True, on_delete=models.CASCADE,\n    )\n    traceback = TextField()\n    analysis = TextField(null=True, blank=True)\n    objects = SQLQueryManager()\n\n    # TODO docstring\n    @property\n    def traceback_ln_only(self):\n        return '\\n'.join(self.traceback.split('\\n')[::2])\n\n    @property\n    def formatted_query(self):\n        return sqlparse.format(self.query, reindent=True, keyword_case='upper')\n\n    @property\n    def num_joins(self):\n        parsed_query = sqlparse.parse(self.query)\n        count = 0\n        for statement in parsed_query:\n            count += sum(map(lambda t: t.match(sqlparse.tokens.Keyword, r'\\.*join\\.*', regex=True), statement.flatten()))\n        return count\n\n    @property\n    def first_keywords(self):\n        parsed_query = sqlparse.parse(self.query)\n        keywords = []\n        for statement in parsed_query[0].tokens:\n            if not statement.is_keyword:\n                break\n            keywords.append(statement.value)\n        return ' '.join(keywords)\n\n    @property\n    def tables_involved(self):\n        \"\"\"\n        A really another rudimentary way to work out tables involved in a\n        query.\n        TODO: Can probably parse the SQL using sqlparse etc and pull out table\n        info that way?\n        \"\"\"\n        components = [x.strip() for x in self.query.split()]\n        tables = []\n\n        for idx, component in enumerate(components):\n            # TODO: If django uses aliases on column names they will be falsely\n            # identified as tables...\n            if (\n                component.lower() == \"from\"\n                or component.lower() == \"join\"\n                or component.lower() == \"as\"\n                or component.lower() == \"update\"\n            ):\n                try:\n                    _next = components[idx + 1]\n                    if not _next.startswith('('):  # Subquery\n                        stripped = _next.strip().strip(',')\n\n                        if stripped:\n                            tables.append(stripped)\n                except IndexError:  # Reach the end\n                    pass\n        return tables\n\n    def prepare_save(self):\n        if self.end_time and self.start_time:\n            interval = self.end_time - self.start_time\n            self.time_taken = interval.total_seconds() * 1000\n\n        if not self.pk:\n            if self.request:\n                self.request.num_sql_queries += 1\n                self.request.save(update_fields=['num_sql_queries'])\n\n    def save(self, *args, **kwargs):\n        with transaction.atomic(using=router.db_for_write(self)):\n            self.prepare_save()\n            super().save(*args, **kwargs)\n\n    def delete(self, *args, **kwargs):\n        with transaction.atomic(using=router.db_for_write(self)):\n            self.request.num_sql_queries -= 1\n            self.request.save()\n            super().delete(*args, **kwargs)\n\n\nclass BaseProfile(models.Model):\n    name = CharField(max_length=300, blank=True, default='')\n    start_time = DateTimeField(default=timezone.now)\n    end_time = DateTimeField(null=True, blank=True)\n    request = ForeignKey(\n        Request, null=True, blank=True, db_index=True,\n        on_delete=models.CASCADE,\n    )\n    time_taken = FloatField(blank=True, null=True)  # milliseconds\n\n    class Meta:\n        abstract = True\n\n    def save(self, *args, **kwargs):\n        if self.end_time and self.start_time:\n            interval = self.end_time - self.start_time\n            self.time_taken = interval.total_seconds() * 1000\n        super().save(*args, **kwargs)\n\n\nclass Profile(BaseProfile):\n    file_path = CharField(max_length=300, blank=True, default='')\n    line_num = IntegerField(null=True, blank=True)\n    end_line_num = IntegerField(null=True, blank=True)\n    func_name = CharField(max_length=300, blank=True, default='')\n    exception_raised = BooleanField(default=False)\n    queries = ManyToManyField(SQLQuery, related_name='profiles', db_index=True)\n    dynamic = BooleanField(default=False)\n\n    @property\n    def is_function_profile(self):\n        return self.func_name is not None\n\n    @property\n    def is_context_profile(self):\n        return self.func_name is None\n\n    @property\n    def time_spent_on_sql_queries(self):\n        \"\"\"\n        Calculate the total time spent in milliseconds on SQL queries using Django aggregates.\n        \"\"\"\n        result = self.queries.aggregate(\n            total_time=Sum('time_taken', output_field=FloatField())\n        )\n        return result['total_time'] or 0.0\n"
  },
  {
    "path": "silk/profiling/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "silk/profiling/dynamic.py",
    "content": "import inspect\nimport logging\nimport re\nimport sys\n\nfrom silk.profiling.profiler import silk_profile\n\nLogger = logging.getLogger('silk.profiling.dynamic')\n\n\ndef _get_module(module_name):\n    \"\"\"\n    Given a module name in form 'path.to.module' return module object for 'module'.\n    \"\"\"\n    if '.' in module_name:\n        splt = module_name.split('.')\n        imp = '.'.join(splt[:-1])\n        frm = splt[-1]\n        module = __import__(imp, globals(), locals(), [frm], 0)\n        module = getattr(module, frm)\n    else:\n        module = __import__(module_name, globals(), locals(), [], 0)\n    return module\n\n\ndef _get_func(module, func_name):\n    \"\"\"\n    Given a module and a function name, return the function.\n\n    func_name can be of the forms:\n        - 'foo': return a function\n        - 'Class.foo': return a method\n    \"\"\"\n    cls_name = None\n    cls = None\n    if '.' in func_name:\n        cls_name, func_name = func_name.split('.')\n    if cls_name:\n        cls = getattr(module, cls_name)\n        func = getattr(cls, func_name)\n    else:\n        func = getattr(module, func_name)\n    return cls, func\n\n\ndef profile_function_or_method(module, func, name=None):\n    \"\"\"\n    Programmatically apply a decorator to a function in a given module [+ class]\n\n    @param module: module object or module name in form 'path.to.module'\n    @param func: function object or function name in form 'foo' or 'Class.method'\n    \"\"\"\n    if isinstance(module, str):\n        module = _get_module(module)\n    decorator = silk_profile(name, _dynamic=True)\n    func_name = func\n    cls, func = _get_func(module, func_name)\n    wrapped_target = decorator(func)\n    if cls:\n        setattr(cls, func_name.split('.')[-1], wrapped_target)\n    else:\n        setattr(module, func_name, wrapped_target)\n\n\ndef _get_parent_module(module):\n    parent = sys.modules\n    splt = module.__name__.split('.')\n    if len(splt) > 1:\n        for module_name in splt[:-1]:\n            try:\n                parent = getattr(parent, module_name)\n            except AttributeError:\n                parent = parent[module_name]\n    return parent\n\n\ndef _get_context_manager_source(end_line, file_path, name, start_line):\n    inject_code = \"with silk_profile('%s', _dynamic=True):\\n\" % name\n    code = 'from silk.profiling.profiler import silk_profile\\n'\n    with open(file_path) as f:\n        ws = ''\n        for i, line in enumerate(f):\n            if i == start_line:\n                # Use the same amount of whitespace as the line currently occupying\n                x = re.search(r\"^(\\s+).*$\", line)\n                try:\n                    ws = x.groups()[0]\n                except IndexError:\n                    ws = ''\n                code += ws + inject_code\n                code += ws + '    ' + line\n            elif start_line < i <= end_line:\n                code += ws + '    ' + line\n            else:\n                code += line\n    return code\n\n\ndef _get_ws(txt):\n    \"\"\"\n    Return whitespace at the beginning of a string\n    \"\"\"\n    m = re.search(r\"^(\\s+).*$\", txt)\n    try:\n        fws = m.groups()[0]\n    except AttributeError:\n        fws = ''\n    return fws\n\n\ndef _get_source_lines(func):\n    source = inspect.getsourcelines(func)[0]\n    fws = _get_ws(source[0])\n    for i in range(0, len(source)):\n        source[i] = source[i].replace(fws, '', 1)\n    return source\n\n\ndef _new_func_from_source(source, func):\n    \"\"\"\n    Create new function defined in source but maintain context from func\n\n    @param func: The function whose global + local context we will use\n    @param source: Python source code containing def statement\n    \"\"\"\n    src_str = ''.join(source)\n    frames = inspect.getouterframes(inspect.currentframe())\n    calling_frame = frames[2][0]\n\n    context = {}\n    # My initial instinct was: exec src_str in func.func_globals.items(), calling_frame.f_locals\n    # however this seems to break the function closure so caveat here is that we create a new\n    # function with the locals merged into the globals.\n    #\n    # Possible consequences I can think of:\n    #   - If a global exists that already has the same name as the local, it will be overwritten in\n    #     in the context of this function. This shouldnt matter though as the global should have already\n    #     been hidden by the new name?\n    #\n    # This functionality should be considered experimental as no idea what other consequences there\n    # could be.\n    #\n    # relevant: http://stackoverflow.com/questions/2749655/why-are-closures-broken-within-exec\n    globals = func.__globals__\n    locals = calling_frame.f_locals\n    combined = globals.copy()\n    combined.update(locals)\n    Logger.debug('New src_str:\\n %s' % src_str)\n    exec(src_str, combined, context)\n    return context[func.__name__]\n\n\ndef _inject_context_manager_func(func, start_line, end_line, name):\n    \"\"\"\n    injects a context manager into the given function\n\n    e.g given:\n\n        x = 5\n        def foo():\n            print x\n            print '1'\n            print '2'\n            print '3'\n        inject_context_manager_func(foo, 0, 2, 'cm')\n\n    foo will now have the definition:\n\n        def foo():\n            with silk_profile('cm'):\n                print x\n                print '1'\n                print '2'\n            print '3'\n\n    closures, globals & locals are honoured\n\n    @param func: object of type<function> or type<instancemethod>\n    @param start_line: line at which to inject 'with' statement. line num. is relative to the func, not the module.\n    @param end_line: line at which to exit the context\n    @param name: name of the profiler\n    \"\"\"\n    source = _get_source_lines(func)\n    start_line += 1\n    end_line += 1\n    ws = _get_ws(source[start_line])\n    for i in range(start_line, end_line):\n        try:\n            source[i] = '  ' + source[i]\n        except IndexError:\n            raise IndexError('Function %s does not have line %d' % (func.__name__, i))\n\n    source.insert(start_line, ws + \"from silk.profiling.profiler import silk_profile\\n\")\n    source.insert(start_line + 1, ws + \"with silk_profile('%s', _dynamic=True):\\n\" % name)\n    return _new_func_from_source(source, func)\n\n\ndef is_str_typ(o):\n    return isinstance(o, str)\n\n\ndef inject_context_manager_func(module, func, start_line, end_line, name):\n    if is_str_typ(module):\n        module = _get_module(module)\n    cls = None\n    if is_str_typ(func):\n        func_name = func\n        cls, func = _get_func(module, func_name)\n    else:\n        func_name = func.__name__\n    new_func = _inject_context_manager_func(func, start_line, end_line, name)\n    if cls:\n        setattr(cls, func_name, new_func)\n    else:\n        setattr(module, func_name, new_func)\n"
  },
  {
    "path": "silk/profiling/profiler.py",
    "content": "import inspect\nimport logging\nimport time\nimport traceback\nfrom functools import wraps\n\nfrom django.apps import apps\nfrom django.conf import settings\nfrom django.utils import timezone\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\nfrom silk.models import _time_taken\n\nlogger = logging.getLogger('silk.profiling.profiler')\n\n\n# noinspection PyPep8Naming\nclass silk_meta_profiler:\n    \"\"\"Used in the profiling of Silk itself.\"\"\"\n\n    def __init__(self):\n        super().__init__()\n        self.start_time = None\n\n    @property\n    def _should_meta_profile(self):\n        return SilkyConfig().SILKY_META\n\n    def __enter__(self):\n        if self._should_meta_profile:\n            self.start_time = timezone.now()\n\n    def __exit__(self, exc_type, exc_val, exc_tb):\n        if self._should_meta_profile:\n            end_time = timezone.now()\n            exception_raised = exc_type is not None\n            if exception_raised:\n                logger.error('Exception when performing meta profiling, dumping trace below')\n                traceback.print_exception(exc_type, exc_val, exc_tb)\n            request = getattr(DataCollector().local, 'request', None)\n            if request:\n                curr = request.meta_time or 0\n                request.meta_time = curr + _time_taken(self.start_time, end_time)\n\n    def __call__(self, target):\n        if self._should_meta_profile:\n            def wrapped_target(*args, **kwargs):\n                request = DataCollector().request\n                if request:\n                    start_time = timezone.now()\n                    result = target(*args, **kwargs)\n                    end_time = timezone.now()\n                    curr = request.meta_time or 0\n                    request.meta_time = curr + _time_taken(start_time, end_time)\n                else:\n                    result = target(*args, **kwargs)\n                return result\n\n            return wrapped_target\n        return target\n\n\n# noinspection PyPep8Naming\nclass silk_profile:\n    def __init__(self, name=None, _dynamic=False):\n        super().__init__()\n        self.name = name\n        self.profile = None\n        self._queries_before = None\n        self._queries_after = None\n        self._dynamic = _dynamic\n\n    def _query_identifiers_from_collector(self):\n        return [x for x in DataCollector().queries]\n\n    def _start_queries(self):\n        \"\"\"record queries that have been executed before profiling began\"\"\"\n        self._queries_before = self._query_identifiers_from_collector()\n\n    def _end_queries(self):\n        \"\"\"record queries that have been executed after profiling has finished\"\"\"\n        self._queries_after = self._query_identifiers_from_collector()\n\n    def __enter__(self):\n        if self._silk_installed() and self._should_profile():\n            with silk_meta_profiler():\n                self._start_queries()\n                if not self.name:\n                    raise ValueError('silk_profile used as a context manager must have a name')\n                frame = inspect.currentframe()\n                frames = inspect.getouterframes(frame)\n                outer_frame = frames[1]\n                path = outer_frame[1]\n                line_num = outer_frame[2]\n                request = DataCollector().request\n                self.profile = {\n                    'name': self.name,\n                    'file_path': path,\n                    'line_num': line_num,\n                    'dynamic': self._dynamic,\n                    'request': request,\n                    'start_time': timezone.now(),\n                }\n        else:\n            logger.warning('Cannot execute silk_profile as silk is not installed correctly.')\n\n    def _finalise_queries(self):\n        collector = DataCollector()\n        self._end_queries()\n        assert self.profile, 'no profile was created'\n        diff = set(self._queries_after).difference(set(self._queries_before))\n        self.profile['queries'] = diff\n        collector.register_profile(self.profile)\n\n    # noinspection PyUnusedLocal\n    def __exit__(self, exc_type, exc_val, exc_tb):\n        if self._silk_installed() and self._should_profile():\n            with silk_meta_profiler():\n                exception_raised = exc_type is not None\n                self.profile['exception_raised'] = exception_raised\n                self.profile['end_time'] = timezone.now()\n                self._finalise_queries()\n\n    def _silk_installed(self):\n        middlewares = getattr(settings, 'MIDDLEWARE', [])\n        if not middlewares:\n            middlewares = []\n        middleware_installed = SilkyConfig().SILKY_MIDDLEWARE_CLASS in middlewares\n        return apps.is_installed('silk') and middleware_installed\n\n    def _should_profile(self):\n        return DataCollector().request is not None\n\n    def __call__(self, target):\n        if self._silk_installed():\n            def decorator(view_func):\n                @wraps(view_func)\n                def wrapped_target(*args, **kwargs):\n                    with silk_meta_profiler():\n                        try:\n                            func_code = target.__code__\n                        except AttributeError:\n                            raise NotImplementedError('Profile not implemented to decorate type %s' % target.__class__.__name__)\n                        line_num = func_code.co_firstlineno\n                        file_path = func_code.co_filename\n                        func_name = target.__name__\n                        if not self.name:\n                            self.name = func_name\n                        self.profile = {\n                            'func_name': func_name,\n                            'name': self.name,\n                            'file_path': file_path,\n                            'line_num': line_num,\n                            'dynamic': self._dynamic,\n                            'start_time': timezone.now(),\n                            'request': DataCollector().request\n                        }\n                        self._start_queries()\n                    try:\n                        result = target(*args, **kwargs)\n                    except Exception:\n                        self.profile['exception_raised'] = True\n                        raise\n                    finally:\n                        with silk_meta_profiler():\n                            self.profile['end_time'] = timezone.now()\n                            self._finalise_queries()\n                    return result\n\n                return wrapped_target\n\n            return decorator(target)\n        else:\n            logger.warning('Cannot execute silk_profile as silk is not installed correctly.')\n            return target\n\n    def distinct_queries(self):\n        return [x for x in self._queries_after if x not in self._queries_before]\n\n\n@silk_profile()\ndef blah():\n    time.sleep(1)\n\n\nif __name__ == '__main__':\n    blah()\n"
  },
  {
    "path": "silk/request_filters.py",
    "content": "\"\"\"\nDjango queryset filters used by the requests view\n\"\"\"\nimport logging\nfrom datetime import datetime, timedelta\n\nfrom django.db.models import Count, Q, Sum\nfrom django.utils import timezone\n\nfrom silk.profiling.dynamic import _get_module\nfrom silk.templatetags.silk_filters import _silk_date_time\n\nlogger = logging.getLogger('silk.request_filters')\n\n\nclass FilterValidationError(Exception):\n    pass\n\n\nclass BaseFilter(Q):\n    def __init__(self, value=None, *args, **kwargs):\n        self.value = value\n        super().__init__(*args, **kwargs)\n\n    @property\n    def typ(self):\n        return self.__class__.__name__\n\n    @property\n    def serialisable_value(self):\n        return self.value\n\n    def as_dict(self):\n        return {'typ': self.typ, 'value': self.serialisable_value, 'str': str(self)}\n\n    @staticmethod\n    def from_dict(d):\n        typ = d['typ']\n        filter_class = globals()[typ]\n        val = d.get('value', None)\n        return filter_class(val)\n\n    def contribute_to_query_set(self, query_set):\n        \"\"\"\n        make any changes to the query-set before the query is applied,\n        e.g. annotate with extra fields\n        :param query_set: a django queryset\n        :return: a new query set that this filter can then be used with\n        \"\"\"\n        return query_set\n\n\nclass SecondsFilter(BaseFilter):\n    def __init__(self, n):\n        if n:\n            try:\n                value = int(n)\n            except ValueError as e:\n                raise FilterValidationError(e)\n            now = timezone.now()\n            frm_dt = now - timedelta(seconds=value)\n            super().__init__(value, start_time__gt=frm_dt)\n        else:\n            # Empty query\n            super().__init__()\n\n    def __str__(self):\n        return '>%d seconds ago' % self.value\n\n\ndef _parse(dt, fmt):\n    \"\"\"attempt to coerce dt into a datetime given fmt, otherwise raise\n    a FilterValidationError\"\"\"\n    try:\n        dt = datetime.strptime(dt, fmt)\n    except TypeError:\n        if not isinstance(dt, datetime):\n            raise FilterValidationError('Must be a datetime object')\n    except ValueError as e:\n        raise FilterValidationError(e)\n    return dt\n\n\nclass BeforeDateFilter(BaseFilter):\n    fmt = '%Y/%m/%d %H:%M'\n\n    def __init__(self, dt):\n        value = _parse(dt, self.fmt)\n        super().__init__(value, start_time__lt=value)\n\n    @property\n    def serialisable_value(self):\n        return self.value.strftime(self.fmt)\n\n    def __str__(self):\n        return '<%s' % _silk_date_time(self.value)\n\n\nclass AfterDateFilter(BaseFilter):\n    fmt = '%Y/%m/%d %H:%M'\n\n    def __init__(self, dt):\n        value = _parse(dt, self.fmt)\n        super().__init__(value, start_time__gt=value)\n\n    @property\n    def serialisable_value(self):\n        return self.value.strftime(self.fmt)\n\n    def __str__(self):\n        return '>%s' % _silk_date_time(self.value)\n\n\nclass ViewNameFilter(BaseFilter):\n    \"\"\"filter on the name of the view, e.g. the name=xyz component of include in urls.py\"\"\"\n\n    def __init__(self, view_name):\n        value = view_name\n        super().__init__(value, view_name=view_name)\n\n    def __str__(self):\n        return 'View == %s' % self.value\n\n\nclass PathFilter(BaseFilter):\n    \"\"\"filter on path e.g. /path/to/something\"\"\"\n\n    def __init__(self, path):\n        value = path\n        super().__init__(value, path=path)\n\n    def __str__(self):\n        return 'Path == %s' % self.value\n\n\nclass NameFilter(BaseFilter):\n    def __init__(self, name):\n        value = name\n        super().__init__(value, name=name)\n\n    def __str__(self):\n        return 'name == %s' % self.value\n\n\nclass FunctionNameFilter(BaseFilter):\n    def __init__(self, func_name):\n        value = func_name\n        super().__init__(value, func_name=func_name)\n\n    def __str__(self):\n        return 'func_name == %s' % self.value\n\n\nclass NumQueriesFilter(BaseFilter):\n    def __init__(self, n):\n        try:\n            value = int(n)\n        except ValueError as e:\n            raise FilterValidationError(e)\n        super().__init__(value, num_queries__gte=n)\n\n    def __str__(self):\n        return '#queries >= %s' % self.value\n\n    def contribute_to_query_set(self, query_set):\n        return query_set.annotate(num_queries=Count('queries'))\n\n\nclass TimeSpentOnQueriesFilter(BaseFilter):\n    def __init__(self, n):\n        try:\n            value = int(n)\n        except ValueError as e:\n            raise FilterValidationError(e)\n        super().__init__(value, db_time__gte=n)\n\n    def __str__(self):\n        return 'DB Time >= %s' % self.value\n\n    def contribute_to_query_set(self, query_set):\n        return query_set.annotate(db_time=Sum('queries__time_taken'))\n\n\nclass OverallTimeFilter(BaseFilter):\n    def __init__(self, n):\n        try:\n            value = int(n)\n        except ValueError as e:\n            raise FilterValidationError(e)\n        super().__init__(value, time_taken__gte=n)\n\n    def __str__(self):\n        return 'Time >= %s' % self.value\n\n\nclass StatusCodeFilter(BaseFilter):\n    def __init__(self, n):\n        try:\n            value = int(n)\n        except ValueError as e:\n            raise FilterValidationError(e)\n        super().__init__(value, response__status_code=n)\n\n\nclass MethodFilter(BaseFilter):\n    def __init__(self, value):\n        super().__init__(value, method=value)\n\n\ndef filters_from_request(request):\n    raw_filters = {}\n    for key in request.POST:\n        splt = key.split('-')\n        if splt[0].startswith('filter'):\n            ident = splt[1]\n            typ = splt[2]\n            if ident not in raw_filters:\n                raw_filters[ident] = {}\n            raw_filters[ident][typ] = request.POST[key]\n    filters = {}\n    for ident, raw_filter in raw_filters.items():\n        value = raw_filter.get('value', '')\n        if value.strip():\n            typ = raw_filter['typ']\n            module = _get_module('silk.request_filters')\n            filter_class = getattr(module, typ)\n            try:\n                f = filter_class(value)\n                filters[ident] = f\n            except FilterValidationError:\n                logger.warning(f'Validation error when processing filter {typ}({value})')\n    return filters\n\n\nclass FiltersManager:\n    def __init__(self, filters_key):\n        self.key = filters_key\n\n    def save(self, request, filters):\n        if hasattr(request, 'session'):\n            request.session[self.key] = filters\n        request.silk_filters = filters\n\n    def get(self, request):\n        if hasattr(request, 'session'):\n            return request.session.get(self.key, {})\n        return request.silk_filters\n"
  },
  {
    "path": "silk/singleton.py",
    "content": "__author__ = 'mtford'\n\n\nclass Singleton(type, metaclass=object):\n    def __init__(cls, name, bases, d):\n        super().__init__(name, bases, d)\n        cls.instance = None\n\n    def __call__(cls, *args):\n        if cls.instance is None:\n            cls.instance = super().__call__(*args)\n        return cls.instance\n"
  },
  {
    "path": "silk/sql.py",
    "content": "import logging\nimport traceback\n\nfrom django.core.exceptions import EmptyResultSet\nfrom django.utils import timezone\nfrom django.utils.encoding import force_str\n\nfrom silk.collector import DataCollector\nfrom silk.config import SilkyConfig\n\nLogger = logging.getLogger('silk.sql')\n\n\ndef _should_wrap(sql_query):\n    if not DataCollector().request:\n        return False\n\n    for ignore_str in SilkyConfig().SILKY_IGNORE_QUERIES:\n        if ignore_str in sql_query:\n            return False\n    return True\n\n\ndef _unpack_explanation(result):\n    for row in result:\n        if not isinstance(row, str):\n            yield ' '.join(str(c) for c in row)\n        else:\n            yield row\n\n\ndef _explain_query(connection, q, params):\n    if connection.features.supports_explaining_query_execution:\n        if SilkyConfig().SILKY_ANALYZE_QUERIES:\n            # Work around some DB engines not supporting analyze option\n            try:\n                prefix = connection.ops.explain_query_prefix(\n                    analyze=True, **(SilkyConfig().SILKY_EXPLAIN_FLAGS or {})\n                )\n            except ValueError as error:\n                error_str = str(error)\n                if error_str.startswith(\"Unknown options:\"):\n                    Logger.warning(\n                        \"Database does not support analyzing queries with provided params. %s.\"\n                        \"SILKY_ANALYZE_QUERIES option will be ignored\",\n                        error_str\n                    )\n                    prefix = connection.ops.explain_query_prefix()\n                else:\n                    raise error\n        else:\n            prefix = connection.ops.explain_query_prefix()\n\n        # currently we cannot use explain() method\n        # for queries other than `select`\n        if q.upper().startswith(prefix.upper()):\n            # to avoid \"EXPLAIN EXPLAIN\", do not add prefix\n            prefixed_query = q\n        else:\n            prefixed_query = f\"{prefix} {q}\"\n        with connection.cursor() as cur:\n            cur.execute(prefixed_query, params)\n            result = _unpack_explanation(cur.fetchall())\n            return '\\n'.join(result)\n    return None\n\n\ndef execute_sql(self, *args, **kwargs):\n    \"\"\"wrapper around real execute_sql in order to extract information\"\"\"\n\n    try:\n        q, params = self.as_sql()\n        if not q:\n            raise EmptyResultSet\n    except EmptyResultSet:\n        try:\n            result_type = args[0]\n        except IndexError:\n            result_type = kwargs.get('result_type', 'multi')\n        if result_type == 'multi':\n            return iter([])\n        else:\n            return\n    try:\n        sql_query = q % tuple(force_str(param) for param in params)\n    except UnicodeDecodeError:\n        # Sometimes `force_str` can still raise a UnicodeDecodeError\n        # Reference: https://github.com/jazzband/django-silk/issues?q=encoding\n        # This could log a warning but given this is run in the hot path, logging could be too expensive.\n        return self._execute_sql(*args, **kwargs)\n    if _should_wrap(sql_query):\n        tb = ''.join(reversed(traceback.format_stack()))\n        query_dict = {\n            'query': sql_query,\n            'start_time': timezone.now(),\n            'traceback': tb\n        }\n        try:\n            return self._execute_sql(*args, **kwargs)\n        finally:\n            query_dict['end_time'] = timezone.now()\n            request = DataCollector().request\n            if request:\n                query_dict['request'] = request\n            if getattr(self.query.model, '__module__', '') != 'silk.models':\n                query_dict['analysis'] = _explain_query(self.connection, q, params)\n                DataCollector().register_query(query_dict)\n            else:\n                DataCollector().register_silk_query(query_dict)\n    return self._execute_sql(*args, **kwargs)\n"
  },
  {
    "path": "silk/static/silk/css/components/cell.css",
    "content": ".cell {\n  display: inline-block;\n  background-color: transparent;\n  padding: 10px;\n  margin-left: 10px;\n  margin-top: 10px;\n  border-radius: 4px;\n  transition: background-color 0.15s ease, color 0.15s ease;\n}\n.cell div {\n  margin: 2px;\n}\n.cell .timestamp-div {\n  margin-bottom: 15px;\n  font-size: 13px;\n}\n.cell .meta {\n  font-size: 12px;\n  color: #be5b43;\n}\n.cell .meta .unit {\n  font-size: 9px;\n  font-weight: lighter !important;\n}\n.cell .method-div {\n  font-weight: bold;\n  font-size: 20px;\n}\n.cell .path-div {\n  font-size: 18px;\n  margin-bottom: 15px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/colors.css",
    "content": ".very-good-font-color {\n  color: #bac54b;\n}\n\n.good-font-color {\n  color: #c3a948;\n}\n\n.ok-font-color {\n  color: #c08245;\n}\n\n.bad-font-color {\n  color: #be5b43;\n}\n\n.very-bad-font-color {\n  color: #b9424f;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/fonts.css",
    "content": "/**\n*   Fira Sans\n*/\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Regular.woff);\n  font-weight: normal;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Medium.woff);\n  font-weight: bold;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Bold.woff);\n  font-weight: bolder;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-Light.woff);\n  font-weight: lighter;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-RegularItalic.woff);\n  font-weight: normal;\n  font-style: italic;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-MediumItalic.woff);\n  font-weight: bold;\n  font-style: italic;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-BoldItalic.woff);\n  font-weight: bolder;\n  font-style: italic;\n}\n@font-face {\n  font-family: FiraSans;\n  src: url(../../fonts/fira/FiraSans-LightItalic.woff);\n  font-weight: lighter;\n  font-style: italic;\n}\n/**\n*   Fantasque\n*/\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-Regular.woff);\n  font-weight: normal;\n}\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-Bold.woff);\n  font-weight: bold;\n}\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-RegItalic.woff);\n  font-weight: normal;\n  font-style: italic;\n}\n@font-face {\n  font-family: Fantasque;\n  src: url(../../fonts/fantasque/FantasqueSansMono-BoldItalic.woff);\n  font-weight: bold;\n  font-style: italic;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/heading.css",
    "content": ".heading {\n  width: 100%;\n  background-color: transparent;\n  height: 30px;\n  display: table;\n  font-weight: bold;\n  margin-top: 20px;\n}\n.heading .inner-heading {\n  display: table-cell;\n  text-align: left;\n  padding: 0;\n  vertical-align: middle;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/numeric.css",
    "content": ".numeric {\n  font-weight: normal;\n}\n\n.unit {\n  font-weight: normal;\n}\n\n.numeric .unit {\n  font-size: 12px;\n}\n\n.numeric {\n  font-size: 20px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/row.css",
    "content": ".row-wrapper {\n  display: table;\n  margin: 2rem;\n  width: 100%;\n  width: -moz-available;\n  width: -webkit-fill-available;\n  width: fill-available;\n}\n.row-wrapper .row {\n  display: table-row;\n  transition: background-color 0.15s ease, color 0.15s ease;\n}\n.row-wrapper .row div {\n  padding: 1rem;\n}\n.row-wrapper .row .col {\n  font-size: 20px;\n  display: table-cell;\n}\n.row-wrapper .row .timestamp-div {\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n  margin-bottom: 15px;\n  font-size: 13px;\n}\n.row-wrapper .row .meta {\n  font-size: 12px;\n  color: #be5b43;\n}\n.row-wrapper .row .meta .unit {\n  font-size: 9px;\n  font-weight: lighter !important;\n}\n.row-wrapper .row .method-div {\n  font-weight: bold;\n  font-size: 20px;\n}\n.row-wrapper .row .path-div {\n  font-size: 18px;\n  margin-bottom: 15px;\n}\n.row-wrapper .row .num-queries-div {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.row-wrapper .row .spacing .numeric {\n  padding: 0 0.3rem;\n}\n.row-wrapper .row .spacing .meta {\n  padding: 0 0.3rem;\n}\n.row-wrapper .row:hover {\n  background-color: rgb(51, 51, 68);\n  color: white;\n  cursor: pointer;\n}\n"
  },
  {
    "path": "silk/static/silk/css/components/summary.css",
    "content": "#error-div {\n  margin: 10px;\n}\n\n#query-div {\n  margin: auto;\n  width: 960px;\n  text-align: center;\n}\n\n#code {\n  text-align: left;\n}\n\n.name-div {\n  margin-top: 20px;\n  margin-bottom: 15px;\n  font-weight: bold;\n}\n\n.description {\n  text-align: left;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/base.css",
    "content": "body {\n  font-family: FiraSans, \"Helvetica Neue\", Arial, sans-serif;\n  background-color: #f3f3f3;\n  margin: 0;\n  font-weight: lighter;\n}\n\npre {\n  font-family: Fantasque;\n  background-color: white !important;\n  padding: 0.5em !important;\n  margin: 0 !important;\n  font-size: 14px;\n  text-align: left;\n}\n\ncode {\n  font-family: Fantasque;\n  background-color: white !important;\n  padding: 0 !important;\n  margin: 0 !important;\n  font-size: 14px;\n}\n\nhtml {\n  margin: 0;\n}\n\n#header {\n  height: 50px;\n  background-color: rgb(51, 51, 68);\n  width: 100%;\n  position: relative;\n  padding: 0;\n}\n\n#header div {\n  display: inline-block;\n}\n\n.menu {\n  height: 50px;\n  padding: 0;\n  margin: 0;\n}\n\n.menu-item {\n  height: 50px;\n  padding-left: 10px;\n  padding-right: 10px;\n  margin: 0;\n  margin-right: -4px;\n  color: white;\n}\n\n.menu-item a {\n  color: white !important;\n}\n\n#filter .menu-item {\n  margin-right: 0px;\n}\n\n.selectable-menu-item {\n  transition: background-color 0.15s ease, color 0.15s ease;\n}\n\n.selectable-menu-item:hover {\n  background-color: #f3f3f3;\n  cursor: pointer;\n  color: black !important;\n}\n\n.selectable-menu-item:hover a {\n  color: black !important;\n}\n\n.menu-item-selected {\n  background-color: #f3f3f3;\n  color: black !important;\n}\n\n.menu-item-selected a {\n  color: black !important;\n}\n\n.menu-item-outer {\n  display: table !important;\n  height: 100%;\n  width: 100%;\n}\n\n.menu-item-inner {\n  display: table-cell !important;\n  vertical-align: middle;\n  width: 100%;\n}\n\na:visited {\n  color: black;\n}\n\na {\n  color: black;\n  text-decoration: none;\n}\n\n#filter {\n  height: 50px;\n  position: absolute;\n  right: 0;\n}\n\n.description {\n  font-style: italic;\n  font-size: 14px;\n  margin-bottom: 5px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/clear_db.css",
    "content": ".wrapper {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.inner {\n  margin: auto;\n  width: 960px;\n}\n\n.cleardb-form .cleardb-form-wrapper {\n  margin-bottom: 20px;\n}\n\n.cleardb-form label {\n  display: block;\n  margin-bottom: 8px;\n}\n\n.cleardb-form .btn {\n  background: #333344;\n  color: #fff;\n  padding: 10px 20px;\n  border-radius: 2px;\n  cursor: pointer;\n  box-shadow: none;\n  font-size: 16px;\n  line-height: 20px;\n  border: 0;\n  min-width: 150px;\n  text-align: center;\n}\n\n.cleardb-form label :last-child {\n  margin-bottom: 0;\n}\n\n.msg {\n  margin-top: 20px;\n  color: #bac54b;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/cprofile.css",
    "content": "#query-info-div {\n  margin-top: 15px;\n}\n\n#query-info-div .timestamp-div {\n  font-size: 13px;\n}\n\n#pyprofile-div {\n  display: block;\n  margin: auto;\n  width: 960px;\n}\n\n.pyprofile {\n  text-align: left;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n#graph-div {\n  padding: 25px;\n  background-color: white;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n  margin-top: 25px;\n  width: 960px;\n  text-align: center;\n}\n\n#percent {\n  width: 20px;\n}\n\nsvg {\n  display: block;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/detail_base.css",
    "content": "#traceback {\n  overflow: visible;\n}\n\n#time-div {\n  text-align: center;\n  margin-bottom: 30px;\n}\n\n#query-div {\n  text-align: center;\n  margin-bottom: 20px;\n}\n\n#query {\n  text-align: left;\n  margin: 0 auto;\n  display: inline-block;\n}\n\n.line {\n  width: 100%;\n  display: inline-block;\n}\n\n.the-line {\n  background-color: #c3c3c3;\n}\n\npre {\n  margin: 0;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/profile_detail.css",
    "content": "#query-info-div {\n  margin-top: 15px;\n}\n\n#query-info-div .timestamp-div {\n  font-size: 13px;\n}\n\n#pyprofile-div {\n  display: block;\n  margin: auto;\n  width: 960px;\n}\n\n.pyprofile {\n  text-align: left;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n#graph-div {\n  padding: 25px;\n  background-color: white;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n  margin-top: 25px;\n  width: 960px;\n  text-align: center;\n}\n\n#percent {\n  width: 20px;\n}\n\nsvg {\n  display: block;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/profiling.css",
    "content": ".name-div {\n  font-weight: bold;\n}\n\n.container {\n  padding: 0 1em;\n}\n\nh2 {\n  margin-bottom: 10px;\n}\n\n.pyprofile {\n  overflow: scroll;\n  max-height: 650px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/raw.css",
    "content": "pre {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  background-color: white !important;\n  white-space: pre-wrap; /* css-3 */\n  white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n  /*noinspection CssInvalidElement*/\n  white-space: -pre-wrap; /* Opera 4-6 */\n  white-space: -o-pre-wrap; /* Opera 7 */\n  word-wrap: break-word; /* Internet Explorer 5.5+ */\n}\n\ncode {\n  font-family: Fantasque;\n  background-color: white !important;\n  width: 100% !important;\n  height: auto;\n  padding: 0 !important;\n}\n\nbody {\n  margin: 0;\n  padding: 0;\n}\n\nhtml {\n  margin: 0;\n  padding: 0;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/request.css",
    "content": "pre {\n  white-space: pre-wrap; /* css-3 */\n  white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n  /*noinspection CssInvalidElement*/\n  white-space: -pre-wrap; /* Opera 4-6 */\n  white-space: -o-pre-wrap; /* Opera 7 */\n  word-wrap: break-word; /* Internet Explorer 5.5+ */\n}\n\n.cell {\n  background-color: transparent;\n  margin-top: 15px;\n}\n\ndiv.wrapper {\n  width: 100%;\n}\n\ndiv.wrapper div#request-summary {\n  margin: auto;\n  text-align: center;\n  width: 100%;\n}\n\ndiv.wrapper div#request-info {\n  width: 960px;\n  margin: auto auto 20px;\n}\n\na {\n  color: #45ADA8;\n}\n\na:visited {\n  color: #45ADA8;\n}\n\na:hover {\n  color: #547980;\n}\n\na:active {\n  color: #594F4F;\n}\n\n.headers {\n  font-size: 12px;\n  font-family: Fantasque;\n  background-color: white;\n  width: 100%;\n}\n\n.headers tr:hover {\n  background-color: #f4f4f4;\n}\n\n.headers td {\n  padding-bottom: 5px;\n  padding-left: 5px;\n}\n\n.headers .key {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/requests.css",
    "content": ".container {\n  padding: 0 1em;\n}\n\n.resizing-input input {\n  background-color: white;\n  padding-top: 2px;\n  color: black;\n  box-shadow: inset 0 0 3px black;\n}\n\n.resizing-input input::placeholder {\n  color: #383838;\n  opacity: 1;\n}\n\n.filter-section {\n  line-height: 2.3;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/root_base.css",
    "content": ".cell:hover {\n  background-color: rgb(51, 51, 68);\n  color: white;\n  cursor: pointer;\n}\n\n.cell {\n  text-align: center;\n}\n\n/* General styles for all menus */\n.cbp-spmenu {\n  background: rgb(51, 51, 68);\n  position: fixed;\n}\n\nh3 {\n  color: white;\n  font-size: 1.9em;\n  padding: 10px;\n  margin: 0;\n  font-weight: 300;\n  background: rgb(51, 51, 68);\n}\n\n/*.cbp-spmenu div {*/\n/*display: block;*/\n/*color: #fff;*/\n/*font-size: 1.1em;*/\n/*font-weight: 300;*/\n/*}*/\n/* Orientation-dependent styles for the content of the menu */\n.cbp-spmenu-vertical {\n  width: 300px;\n  height: 100%;\n  top: 0;\n  z-index: 1000;\n}\n\n/* Vertical menu that slides from the left or right */\n.cbp-spmenu-right {\n  right: -300px;\n}\n\n.cbp-spmenu-right.cbp-spmenu-open {\n  right: 0px;\n}\n\n/* Push classes applied to the body */\n.cbp-spmenu-push {\n  overflow-x: hidden;\n  position: relative;\n  left: 0;\n}\n\n.cbp-spmenu-push-toleft {\n  left: -300px;\n}\n\n/* Transitions */\n.cbp-spmenu,\n.cbp-spmenu-push {\n  -webkit-transition: all 0.3s ease;\n  -moz-transition: all 0.3s ease;\n  transition: all 0.3s ease;\n}\n\n/* Example media queries */\n@media screen and (max-width: 55.1875em) {\n  .cbp-spmenu-horizontal {\n    font-size: 75%;\n    height: 110px;\n  }\n}\n.active-filter {\n  font-size: 12px;\n  color: white;\n}\n\n.active-filter td {\n  padding: 0;\n  margin: 0;\n}\n\n#cbp-spmenu-s2 button {\n  color: white;\n  background: none;\n  border: none;\n}\n\n#cbp-spmenu-s2 button:hover {\n  color: black;\n  background: white;\n  border: none;\n  cursor: pointer;\n}\n\n#cbp-spmenu-s2 button:focus {\n  outline: none;\n}\n\n#slider-label {\n  margin-top: 5px;\n}\n\n#outer-slider {\n  text-align: center;\n  width: 80%;\n}\n\n#seconds {\n  width: 200px;\n  height: 50px;\n}\n\n#slider {\n  width: 80%;\n  margin: auto;\n  margin-top: 10px;\n}\n\ninput[type=number],\ninput[type=text] {\n  border: none;\n  padding: 10px;\n  width: 222px;\n}\n\n.add-button {\n  font-size: 20px;\n  font-weight: bold;\n}\n\n.add-button.disabled {\n  color: darkgray !important;\n}\n\n.add-button.disabled:hover {\n  background: transparent !important;\n  cursor: default !important;\n}\n\n.button-div {\n  display: inline-block;\n  text-align: center;\n  height: 50px;\n}\n\n.apply-div {\n  display: inline-block;\n  background-color: white;\n  color: black;\n  margin: 10px;\n  padding: 10px;\n  border-radius: 5px;\n}\n\n.apply-div:hover {\n  cursor: pointer;\n}\n\nselect {\n  border-radius: 0;\n  max-width: 100%;\n}\n\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  /*safari and chrome*/\n  select {\n    line-height: 30px;\n    background: #f4f4f4;\n  }\n}\nselect::-moz-focus-inner {\n  /*Remove button padding in FF*/\n  border: 0;\n  padding: 0;\n}\n\n#cbp-spmenu-s2 p {\n  margin-bottom: 10px;\n  margin-left: 10px;\n  margin-right: 10px;\n  margin-top: 0;\n  font-size: 12px;\n  color: white;\n  font-style: oblique;\n  line-height: 16px;\n}\n\n#filter-item {\n  width: 24px;\n  height: 20px;\n  float: right;\n  display: inline;\n  background-image: url(\"../../filter.png\");\n  background-size: contain;\n  background-repeat: no-repeat;\n  text-align: right;\n}\n\n#filter-item #num-filters {\n  position: relative;\n  top: 7px;\n  left: 1px;\n}\n\n.resizing-input {\n  display: inline-block;\n}\n\n.resizing-input input, .resizing-input span {\n  font-size: 12px;\n  font-family: FiraSans;\n  white-space: pre;\n  font-weight: 300;\n  background-color: transparent;\n  color: white;\n  padding: 0;\n  padding-left: 4px;\n  padding-right: 4px;\n  margin: 0;\n  letter-spacing: 1px;\n}\n\n.resizing-input input:focus {\n  outline: none;\n}\n\nh4 {\n  padding: 0;\n  margin: 3px;\n  margin-left: 10px;\n  color: white;\n  font-weight: lighter;\n  font-size: 20px;\n}\n\n.filter-section {\n  color: white;\n  font-size: 12px;\n  line-height: 2.3;\n  padding: 10px;\n}\n\n.filter-section select {\n  margin-bottom: 10px;\n}\n\n.filter-section input {\n  padding: 4px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/sql.css",
    "content": ".right-aligned {\n  text-align: right;\n}\n\n.center-aligned {\n  text-align: center;\n}\n\n.left-aligned {\n  text-align: left;\n}\n\n#table-pagination {\n  text-align: center;\n  margin: 20px;\n}\n\ntable {\n  border-spacing: 0;\n  margin: auto;\n  max-width: 920px;\n}\n\ntr {\n  height: 20px;\n}\n\ntr.data-row:hover {\n  background-color: rgb(51, 51, 68);\n  color: white;\n  cursor: pointer;\n}\n\ntd {\n  padding: 5px;\n  padding-left: 20px;\n  padding-right: 20px;\n}\n\nth {\n  height: 40px;\n  padding-left: 20px;\n  padding-right: 20px;\n}\n\n#table-div {\n  width: 100%;\n  margin-top: 40px;\n}\n\n#table-pagination div {\n  padding: 5px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/sql_detail.css",
    "content": "#traceback {\n  width: 960px;\n  margin: auto;\n}\n\n#traceback pre {\n  margin-top: 15px !important;\n  margin-bottom: 15px !important;\n}\n\n#traceback .not-third-party {\n  font-weight: bold;\n}\n\na:hover {\n  color: #9dd0ff;\n}\n\na:active {\n  color: #594F4F;\n}\n\ncode {\n  background-color: transparent !important;\n}\n\n#query-div pre {\n  background-color: transparent !important;\n}\n\n#query-div {\n  padding-top: 15px;\n}\n\n#query-info-div div {\n  padding-top: 5px;\n}\n\n#query-plan-div {\n  text-align: left;\n  width: 960px;\n  margin: auto;\n}\n\n#plan-div code {\n  margin: auto !important;\n  display: inline-block;\n}\n\n#query-plan-head {\n  padding-top: 5px;\n  padding-bottom: 15px;\n  text-align: center;\n  margin: auto;\n}\n\n.file-path {\n  font-size: 13px;\n}\n"
  },
  {
    "path": "silk/static/silk/css/pages/summary.css",
    "content": ".wrapper {\n  width: 100%;\n  margin-bottom: 20px;\n}\n\n.inner {\n  margin: auto;\n  width: 960px;\n}\n\n.summary-cell {\n  display: inline-block;\n  text-align: center;\n  padding: 10px;\n  margin-left: 10px;\n  margin-top: 10px;\n}\n\n.summary-cell .desc {\n  margin-top: 8px;\n  font-size: 12px;\n}\n\n.no-data {\n  font-size: 12px;\n  font-style: oblique;\n  margin-left: 10px;\n}\n\nh2 {\n  margin-bottom: 0;\n}\n\n#filters {\n  margin-top: 10px;\n  font-size: 12px;\n}\n\n#filters input,\n#filters span {\n  color: black !important;\n  font-weight: bold;\n}\n\n#filter-image {\n  width: 20px;\n}\n\n#filter-cell {\n  padding-left: 5px;\n}\n"
  },
  {
    "path": "silk/static/silk/js/components/cell.js",
    "content": "function configureSpanFontColors(selector, okValue, badValue) {\n    selector.each(function () {\n        var val = parseFloat($(this).text());\n        if (val < okValue) {\n            $(this).addClass('very-good-font-color');\n        }\n        else if (val < badValue) {\n            $(this).addClass('ok-font-color');\n        }\n        else {\n            $(this).addClass('very-bad-font-color');\n        }\n    });\n}\n\nfunction configureFontColors() {\n    configureSpanFontColors($('.time-taken-div .numeric'), 200, 500);\n    configureSpanFontColors($('.time-taken-queries-div .numeric'), 50, 200);\n    configureSpanFontColors($('.num-queries-div .numeric'), 10, 50);\n}\n\n$(document).ready(function () {\n    configureFontColors();\n});\n"
  },
  {
    "path": "silk/static/silk/js/components/filters.js",
    "content": "\nfunction configureResizingInputs() {\n    var $inputs = $('.resizing-input');\n\n    function resizeForText(text) {\n        var $this = $(this);\n        if (!text.trim()) {\n            text = $this.attr('placeholder').trim();\n        }\n        var $span = $this.parent().find('span');\n        $span.text(text);\n        var $inputSize = $span.width();\n        $this.css(\"width\", $inputSize);\n    }\n\n    $inputs.find('input').keypress(function (e) {\n        if (e.which && e.charCode) {\n            var c = String.fromCharCode(e.keyCode | e.charCode);\n            var $this = $(this);\n            resizeForText.call($this, $this.val() + c);\n        }\n    });\n\n    $inputs.find('input').keyup(function (e) { // Backspace event only fires for keyup\n        if (e.keyCode === 8 || e.keyCode === 46) {\n            resizeForText.call($(this), $(this).val());\n        }\n    });\n\n    $inputs.find('input').each(function () {\n        var $this = $(this);\n        resizeForText.call($this, $this.val())\n    });\n\n\n    $('.resizing-input .datetimepicker').datetimepicker({\n        step: 10,\n        onChangeDateTime: function (dp, $input) {\n            resizeForText.call($input, $input.val())\n        }\n    });\n\n}\n\n/**\n * Entry point for filter initialisation.\n */\nfunction initFilters() {\n    configureResizingInputs();\n}\n"
  },
  {
    "path": "silk/static/silk/js/pages/base.js",
    "content": "$(document).ready(function () {\n    configureSpanFontColors($('#num-joins-div').find('.numeric'), 3, 5);\n    configureSpanFontColors($('#time-taken-div').find('.numeric'), 200, 500);\n    configureSpanFontColors($('#num-queries-div').find('.numeric'), 10, 500);\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/clear_db.js",
    "content": "$(document).ready(function () {\n    initFilters();\n    var $inputs = $('.resizing-input');\n    $inputs.focusout(function () {\n        $('#filter-form').submit();\n    });\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/detail_base.js",
    "content": "hljs.initHighlightingOnLoad();\n"
  },
  {
    "path": "silk/static/silk/js/pages/profile_detail.js",
    "content": "function createViz() {\n    var profileDotURL = JSON.parse(document.getElementById(\"profileDotURL\").textContent);\n\n    $.get(\n        profileDotURL,\n        { cutoff: $('#percent').val() },\n        function (response) {\n            var svg = '#graph-div';\n            $(svg).html(Viz(response.dot));\n            $(svg + ' svg').attr('width', 960).attr('height', 600);\n            svgPanZoom(svg + ' svg', { controlIconsEnabled: true });\n        }\n    );\n}\ncreateViz();\n"
  },
  {
    "path": "silk/static/silk/js/pages/profiling.js",
    "content": "$(document).ready(function () {\n    initFilters();\n    initFilterButton();\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/raw.js",
    "content": "hljs.initHighlightingOnLoad();\n"
  },
  {
    "path": "silk/static/silk/js/pages/request.js",
    "content": "hljs.initHighlightingOnLoad();\n"
  },
  {
    "path": "silk/static/silk/js/pages/requests.js",
    "content": "$(document).ready(function () {\n    initFilters();\n    initFilterButton();\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/root_base.js",
    "content": "function initFilterButton() {\n    $('#filter-button').click(function () {\n        $(this).toggleClass('active');\n        $('body').toggleClass('cbp-spmenu-push-toleft');\n        $('#cbp-spmenu-s2').toggleClass('cbp-spmenu-open');\n        initFilters();\n    });\n}\nfunction submitFilters() {\n    $('#filter-form2').submit();\n}\nfunction submitEmptyFilters() {\n    $('#cbp-spmenu-s2 :input:not([type=hidden])').val('');\n    submitFilters();\n}\n"
  },
  {
    "path": "silk/static/silk/js/pages/sql.js",
    "content": "$(document).ready(function () {\n  document.querySelectorAll(\".data-row\").forEach((rowElement) => {\n    let sqlDetailUrl = rowElement.dataset.sqlDetailUrl;\n    rowElement.addEventListener(\"mouseup\", (e) => {\n      switch (e.button) {\n        case 0:\n          window.location = sqlDetailUrl;\n          break;\n        case 1:\n          window.open(sqlDetailUrl);\n          break;\n        default:\n          break;\n      }\n    });\n  });\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/sql_detail.js",
    "content": "$(document).ready(function () {\n    configureSpanFontColors($('#num-joins-div').find('.numeric'), 3, 5);\n    configureSpanFontColors($('#time-taken-div').find('.numeric'), 200, 500);\n});\n"
  },
  {
    "path": "silk/static/silk/js/pages/summary.js",
    "content": "$(document).ready(function () {\n    initFilters();\n    var $inputs = $('.resizing-input');\n    $inputs.focusout(function () {\n        $('#filter-form').submit();\n    });\n});\n"
  },
  {
    "path": "silk/static/silk/lib/highlight/foundation.css",
    "content": "/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n\n.hljs {\n  display: block; padding: 0.5em;\n  background: #eee;\n}\n\n.hljs-header,\n.hljs-decorator,\n.hljs-annotation {\n  color: #000077;\n}\n\n.hljs-horizontal_rule,\n.hljs-link_url,\n.hljs-emphasis,\n.hljs-attribute {\n  color: #070;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-link_label,\n.hljs-strong,\n.hljs-value,\n.hljs-string,\n.scss .hljs-value .hljs-string {\n  color: #d14;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-blockquote,\n.hljs-comment {\n  color: #998;\n  font-style: italic;\n}\n\n.asciidoc .hljs-title,\n.hljs-function .hljs-title {\n  color: #900;\n}\n\n.hljs-class {\n  color: #458;\n}\n\n.hljs-id,\n.hljs-pseudo,\n.hljs-constant,\n.hljs-hexcolor {\n  color: teal;\n}\n\n.hljs-variable {\n  color: #336699;\n}\n\n.hljs-bullet,\n.hljs-javadoc {\n  color: #997700;\n}\n\n.hljs-pi,\n.hljs-doctype {\n  color: #3344bb;\n}\n\n.hljs-code,\n.hljs-number {\n  color: #099;\n}\n\n.hljs-important {\n  color: #f00;\n}\n\n.smartquote,\n.hljs-label {\n  color: #970;\n}\n\n.hljs-preprocessor,\n.hljs-pragma {\n  color: #579;\n}\n\n.hljs-reserved,\n.hljs-keyword,\n.scss .hljs-value {\n  color: #000;\n}\n\n.hljs-regexp {\n  background-color: #fff0ff;\n  color: #880088;\n}\n\n.hljs-symbol {\n  color: #990073;\n}\n\n.hljs-symbol .hljs-string {\n  color: #a60;\n}\n\n.hljs-tag {\n  color: #007700;\n}\n\n.hljs-at_rule,\n.hljs-at_rule .hljs-keyword {\n  color: #088;\n}\n\n.hljs-at_rule .hljs-preprocessor {\n  color: #808;\n}\n\n.scss .hljs-tag,\n.scss .hljs-attribute {\n  color: #339;\n}\n"
  },
  {
    "path": "silk/static/silk/lib/highlight/highlight.pack.js",
    "content": "var hljs=new function(){function k(v){return v.replace(/&/gm,\"&amp;\").replace(/</gm,\"&lt;\").replace(/>/gm,\"&gt;\")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\\n/g,\"\"):w.nodeValue}if(t(w)==\"br\"){return\"\\n\"}return d(w)}).join(\"\")}function r(w){var v=(w.className+\" \"+(w.parentNode?w.parentNode.className:\"\")).split(/\\s+/);v=v.map(function(x){return x.replace(/^language-/,\"\")});return v.filter(function(x){return j(x)||x==\"no-highlight\"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)==\"br\"){z+=1}else{if(A.nodeType==1){v.push({event:\"start\",offset:z,node:A});z=w(A,z);v.push({event:\"stop\",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F=\"\";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset<y[0].offset)?w:y}return y[0].event==\"start\"?w:y}function A(H){function G(I){return\" \"+I.nodeName+'=\"'+k(I.value)+'\"'}F+=\"<\"+t(H)+Array.prototype.map.call(H.attributes,G).join(\"\")+\">\"}function E(G){F+=\"</\"+t(G)+\">\"}function v(G){(G.event==\"start\"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event==\"start\"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),\"m\"+(y.cI?\"i\":\"\")+(z?\"g\":\"\"))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(\" \").forEach(function(H){var I=H.split(\"|\");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k==\"string\"){E(\"keyword\",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\\b[A-Za-z0-9_]+\\b/,true);if(C){if(D.bK){D.b=D.bK.split(\" \").join(\"|\")}if(!D.b){D.b=/\\B|\\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\\B|\\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||\"\";if(D.eW&&C.tE){D.tE+=(D.e?\"|\":\"\")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F==\"self\"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?\"\\\\.?\\\\b(\"+F.b+\")\\\\b\\\\.?\":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join(\"|\"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T<V.c.length;T++){if(i(V.c[T].bR,U)){return V.c[T]}}}function z(U,T){if(i(U.eR,T)){return U}if(U.eW){return z(U.parent,T)}}function A(T,U){return !J&&i(U.iR,T)}function E(V,T){var U=M.cI?T[0].toLowerCase():T[0];return V.k.hasOwnProperty(U)&&V.k[U]}function w(Z,X,W,V){var T=V?\"\":b.classPrefix,U='<span class=\"'+T,Y=W?\"\":\"</span>\";U+=Z+'\">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T=\"\";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode==\"continuous\"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,\"\",true):\"\";if(V.rB){D+=T;C=\"\"}else{if(V.eB){D+=k(U)+T;C=\"\"}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+=\"</span>\"}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C=\"\";if(W.starts){P(W.starts,\"\")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme \"'+X+'\" for mode \"'+(I.cN||\"<unnamed>\")+'\"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: \"'+S+'\"')}m(M);var I=R||M;var D=\"\";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C=\"\";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+=\"</span>\"}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf(\"Illegal\")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\\t)+)/gm,function(w,z,y,x){return z.replace(/\\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\\n/g,\"<br>\")}return v}function p(z){var y=d(z);var A=r(z);if(A==\"no-highlight\"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"pre\");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=\" hljs \"+(!A&&v.language||\"\");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:\"hljs-\",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll(\"pre code\");Array.prototype.forEach.call(v,p)}function a(){addEventListener(\"DOMContentLoaded\",l,false);addEventListener(\"load\",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR=\"[a-zA-Z][a-zA-Z0-9_]*\";this.UIR=\"[a-zA-Z_][a-zA-Z0-9_]*\";this.NR=\"\\\\b\\\\d+(\\\\.\\\\d+)?\";this.CNR=\"(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\";this.BNR=\"\\\\b(0b[01]+)\";this.RSR=\"!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~\";this.BE={b:\"\\\\\\\\[\\\\s\\\\S]\",r:0};this.ASM={cN:\"string\",b:\"'\",e:\"'\",i:\"\\\\n\",c:[this.BE]};this.QSM={cN:\"string\",b:'\"',e:'\"',i:\"\\\\n\",c:[this.BE]};this.CLCM={cN:\"comment\",b:\"//\",e:\"$\"};this.CBLCLM={cN:\"comment\",b:\"/\\\\*\",e:\"\\\\*/\"};this.HCM={cN:\"comment\",b:\"#\",e:\"$\"};this.NM={cN:\"number\",b:this.NR,r:0};this.CNM={cN:\"number\",b:this.CNR,r:0};this.BNM={cN:\"number\",b:this.BNR,r:0};this.REGEXP_MODE={cN:\"regexp\",b:/\\//,e:/\\/[gim]*/,i:/\\n/,c:[this.BE,{b:/\\[/,e:/\\]/,r:0,c:[this.BE]}]};this.TM={cN:\"title\",b:this.IR,r:0};this.UTM={cN:\"title\",b:this.UIR,r:0}}();hljs.registerLanguage(\"python\",function(a){var f={cN:\"prompt\",b:/^(>>>|\\.\\.\\.) /};var b={cN:\"string\",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?\"\"\"/,e:/\"\"\"/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)\"/,e:/\"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)\"/,e:/\"/,},a.ASM,a.QSM]};var d={cN:\"number\",r:0,v:[{b:a.BNR+\"[lLjJ]?\"},{b:\"\\\\b(0o[0-7]+)[lLjJ]?\"},{b:a.CNR+\"[lLjJ]?\"}]};var e={cN:\"params\",b:/\\(/,e:/\\)/,c:[\"self\",f,d,b]};var c={e:/:/,i:/[${=;\\n]/,c:[a.UTM,e]};return{k:{keyword:\"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False\",built_in:\"Ellipsis NotImplemented\"},i:/(<\\/|->|\\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:\"function\",bK:\"def\",r:10}),a.inherit(c,{cN:\"class\",bK:\"class\"}),{cN:\"decorator\",b:/@/,e:/$/},{b:/\\b(print|exec)\\(/}]}});hljs.registerLanguage(\"sql\",function(a){return{cI:true,i:/[<>]/,c:[{cN:\"operator\",b:\"\\\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\\\b(?!:)\",e:\";\",eW:true,k:{keyword:\"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database\",aggregate:\"count sum min max avg\"},c:[{cN:\"string\",b:\"'\",e:\"'\",c:[a.BE,{b:\"''\"}]},{cN:\"string\",b:'\"',e:'\"',c:[a.BE,{b:'\"\"'}]},{cN:\"string\",b:\"`\",e:\"`\",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:\"comment\",b:\"--\",e:\"$\"}]}});hljs.registerLanguage(\"json\",function(a){var e={literal:\"true false null\"};var d=[a.QSM,a.CNM];var c={cN:\"value\",e:\",\",eW:true,eE:true,c:d,k:e};var b={b:\"{\",e:\"}\",c:[{cN:\"attribute\",b:'\\\\s*\"',e:'\"\\\\s*:\\\\s*',eB:true,eE:true,c:[a.BE],i:\"\\\\n\",starts:c}],i:\"\\\\S\"};var f={b:\"\\\\[\",e:\"\\\\]\",c:[a.inherit(c,{cN:null})],i:\"\\\\S\"};d.splice(d.length,0,b,f);return{c:d,k:e,i:\"\\\\S\"}});\n"
  },
  {
    "path": "silk/static/silk/lib/jquery.datetimepicker.css",
    "content": ".xdsoft_datetimepicker {\n\tbox-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.506);\n\tbackground: #fff;\n\tborder-bottom: 1px solid #bbb;\n\tborder-left: 1px solid #ccc;\n\tborder-right: 1px solid #ccc;\n\tborder-top: 1px solid #ccc;\n\tcolor: #333;\n\tfont-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\tpadding: 8px;\n\tpadding-left: 0;\n\tpadding-top: 2px;\n\tposition: absolute;\n\tz-index: 9999;\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tdisplay: none;\n}\n\n.xdsoft_datetimepicker iframe {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0;\n\twidth: 75px;\n\theight: 210px;\n\tbackground: transparent;\n\tborder: none;\n}\n\n/*For IE8 or lower*/\n.xdsoft_datetimepicker button {\n\tborder: none !important;\n}\n\n.xdsoft_noselect {\n\t-webkit-touch-callout: none;\n\t-webkit-user-select: none;\n\t-khtml-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\t-o-user-select: none;\n\tuser-select: none;\n}\n\n.xdsoft_noselect::selection { background: transparent }\n.xdsoft_noselect::-moz-selection { background: transparent }\n\n.xdsoft_datetimepicker.xdsoft_inline {\n\tdisplay: inline-block;\n\tposition: static;\n\tbox-shadow: none;\n}\n\n.xdsoft_datetimepicker * {\n\t-moz-box-sizing: border-box;\n\tbox-sizing: border-box;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker, .xdsoft_datetimepicker .xdsoft_timepicker {\n\tdisplay: none;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker.active, .xdsoft_datetimepicker .xdsoft_timepicker.active {\n\tdisplay: block;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker {\n\twidth: 224px;\n\tfloat: left;\n\tmargin-left: 8px;\n}\n\n.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_datepicker {\n\twidth: 256px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker {\n\twidth: 58px;\n\tfloat: left;\n\ttext-align: center;\n\tmargin-left: 8px;\n\tmargin-top: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_datepicker.active+.xdsoft_timepicker {\n\tmargin-top: 8px;\n\tmargin-bottom: 3px\n}\n\n.xdsoft_datetimepicker .xdsoft_mounthpicker {\n\tposition: relative;\n\ttext-align: center;\n}\n\n.xdsoft_datetimepicker .xdsoft_label i,\n.xdsoft_datetimepicker .xdsoft_prev,\n.xdsoft_datetimepicker .xdsoft_next,\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0NBRjI1NjM0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0NBRjI1NjQ0M0UwMTFFNDk4NkFGMzJFQkQzQjEwRUIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDQ0FGMjU2MTQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDQ0FGMjU2MjQzRTAxMUU0OTg2QUYzMkVCRDNCMTBFQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PoNEP54AAAIOSURBVHja7Jq9TsMwEMcxrZD4WpBYeKUCe+kTMCACHZh4BFfHO/AAIHZGFhYkBBsSEqxsLCAgXKhbXYOTxh9pfJVP+qutnZ5s/5Lz2Y5I03QhWji2GIcgAokWgfCxNvcOCCGKqiSqhUp0laHOne05vdEyGMfkdxJDVjgwDlEQgYQBgx+ULJaWSXXS6r/ER5FBVR8VfGftTKcITNs+a1XpcFoExREIDF14AVIFxgQUS+h520cdud6wNkC0UBw6BCO/HoCYwBhD8QCkQ/x1mwDyD4plh4D6DDV0TAGyo4HcawLIBBSLDkHeH0Mg2yVP3l4TQMZQDDsEOl/MgHQqhMNuE0D+oBh0CIr8MAKyazBH9WyBuKxDWgbXfjNf32TZ1KWm/Ap1oSk/R53UtQ5xTh3LUlMmT8gt6g51Q9p+SobxgJQ/qmsfZhWywGFSl0yBjCLJCMgXail3b7+rumdVJ2YRss4cN+r6qAHDkPWjPjdJCF4n9RmAD/V9A/Wp4NQassDjwlB6XBiCxcJQWmZZb8THFilfy/lfrTvLghq2TqTHrRMTKNJ0sIhdo15RT+RpyWwFdY96UZ/LdQKBGjcXpcc1AlSFEfLmouD+1knuxBDUVrvOBmoOC/rEcN7OQxKVeJTCiAdUzUJhA2Oez9QTkp72OTVcxDcXY8iKNkxGAJXmJCOQwOa6dhyXsOa6XwEGAKdeb5ET3rQdAAAAAElFTkSuQmCC);\n}\n\n.xdsoft_datetimepicker .xdsoft_label i {\n\topacity: 0.5;\n\tbackground-position: -92px -19px;\n\tdisplay: inline-block;\n\twidth: 9px;\n\theight: 20px;\n\tvertical-align: middle;\n}\n\n.xdsoft_datetimepicker .xdsoft_prev {\n\tfloat: left;\n\tbackground-position: -20px 0;\n}\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tfloat: left;\n\tbackground-position: -70px 0;\n\tmargin-left: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_next {\n\tfloat: right;\n\tbackground-position: 0 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_next,\n.xdsoft_datetimepicker .xdsoft_prev ,\n.xdsoft_datetimepicker .xdsoft_today_button {\n\tbackground-color: transparent;\n\tbackground-repeat: no-repeat;\n\tborder: 0 none;\n\tcursor: pointer;\n\tdisplay: block;\n\theight: 30px;\n\topacity: 0.5;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n\toutline: medium none;\n\toverflow: hidden;\n\tpadding: 0;\n\tposition: relative;\n\ttext-indent: 100%;\n\twhite-space: nowrap;\n\twidth: 20px;\n\tmin-width: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_next {\n\tfloat: none;\n\tbackground-position: -40px -15px;\n\theight: 15px;\n\twidth: 30px;\n\tdisplay: block;\n\tmargin-left: 14px;\n\tmargin-top: 7px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_prev {\n\tbackground-position: -40px 0;\n\tmargin-bottom: 7px;\n\tmargin-top: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box {\n\theight: 151px;\n\toverflow: hidden;\n\tborder-bottom: 1px solid #ddd;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div {\n\tbackground: #f5f5f5;\n\tborder-top: 1px solid #ddd;\n\tcolor: #666;\n\tfont-size: 12px;\n\ttext-align: center;\n\tborder-collapse: collapse;\n\tcursor: pointer;\n\tborder-bottom-width: 0;\n\theight: 25px;\n\tline-height: 25px;\n}\n\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div > div:first-child {\n\tborder-top-width: 0;\n}\n\n.xdsoft_datetimepicker .xdsoft_today_button:hover,\n.xdsoft_datetimepicker .xdsoft_next:hover,\n.xdsoft_datetimepicker .xdsoft_prev:hover {\n\topacity: 1;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)\";\n}\n\n.xdsoft_datetimepicker .xdsoft_label {\n\tdisplay: inline;\n\tposition: relative;\n\tz-index: 9999;\n\tmargin: 0;\n\tpadding: 5px 3px;\n\tfont-size: 14px;\n\tline-height: 20px;\n\tfont-weight: bold;\n\tbackground-color: #fff;\n\tfloat: left;\n\twidth: 182px;\n\ttext-align: center;\n\tcursor: pointer;\n}\n\n.xdsoft_datetimepicker .xdsoft_label:hover>span {\n\ttext-decoration: underline;\n}\n\n.xdsoft_datetimepicker .xdsoft_label:hover i {\n\topacity: 1.0;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select {\n\tborder: 1px solid #ccc;\n\tposition: absolute;\n\tright: 0;\n\ttop: 30px;\n\tz-index: 101;\n\tdisplay: none;\n\tbackground: #fff;\n\tmax-height: 160px;\n\toverflow-y: hidden;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_monthselect{ right: -7px }\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select.xdsoft_yearselect{ right: 2px }\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {\n\tcolor: #fff;\n\tbackground: #ff8000;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option {\n\tpadding: 2px 10px 2px 5px;\n\ttext-decoration: none !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {\n\tbackground: #33aaff;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset;\n\tcolor: #fff;\n\tfont-weight: 700;\n}\n\n.xdsoft_datetimepicker .xdsoft_month {\n\twidth: 100px;\n\ttext-align: right;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar {\n\tclear: both;\n}\n\n.xdsoft_datetimepicker .xdsoft_year{\n\twidth: 48px;\n\tmargin-left: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar table {\n\tborder-collapse: collapse;\n\twidth: 100%;\n\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td > div {\n\tpadding-right: 5px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\theight: 25px;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td,.xdsoft_datetimepicker .xdsoft_calendar th {\n\twidth: 14.2857142%;\n\tbackground: #f5f5f5;\n\tborder: 1px solid #ddd;\n\tcolor: #666;\n\tfont-size: 12px;\n\ttext-align: right;\n\tvertical-align: middle;\n\tpadding: 0;\n\tborder-collapse: collapse;\n\tcursor: pointer;\n\theight: 25px;\n}\n.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar td,.xdsoft_datetimepicker.xdsoft_showweeks .xdsoft_calendar th {\n\twidth: 12.5%;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\tbackground: #f1f1f1;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_today {\n\tcolor: #33aaff;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_default {\n\tbackground: #ffe9d2;\n\tbox-shadow: #ffb871 0 1px 4px 0 inset;\n\tcolor: #000;\n}\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_highlighted_mint {\n\tbackground: #c1ffc9;\n\tbox-shadow: #00dd1c 0 1px 4px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_default,\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {\n\tbackground: #33aaff;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset;\n\tcolor: #fff;\n\tfont-weight: 700;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month,\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled,\n.xdsoft_datetimepicker .xdsoft_time_box >div >div.xdsoft_disabled {\n\topacity: 0.5;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)\";\n\tcursor: default;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_other_month.xdsoft_disabled {\n\topacity: 0.2;\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=20)\";\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div:hover {\n\tcolor: #fff !important;\n\tbackground: #ff8000 !important;\n\tbox-shadow: none !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_current.xdsoft_disabled:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box>div>div.xdsoft_current.xdsoft_disabled:hover {\n\tbackground: #33aaff !important;\n\tbox-shadow: #178fe5 0 1px 3px 0 inset !important;\n\tcolor: #fff !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar td.xdsoft_disabled:hover,\n.xdsoft_datetimepicker .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_disabled:hover {\n\tcolor: inherit\t!important;\n\tbackground: inherit !important;\n\tbox-shadow: inherit !important;\n}\n\n.xdsoft_datetimepicker .xdsoft_calendar th {\n\tfont-weight: 700;\n\ttext-align: center;\n\tcolor: #999;\n\tcursor: default;\n}\n\n.xdsoft_datetimepicker .xdsoft_copyright {\n\tcolor: #ccc !important;\n\tfont-size: 10px;\n\tclear: both;\n\tfloat: none;\n\tmargin-left: 8px;\n}\n\n.xdsoft_datetimepicker .xdsoft_copyright a { color: #eee !important }\n.xdsoft_datetimepicker .xdsoft_copyright a:hover { color: #aaa !important }\n\n.xdsoft_time_box {\n\tposition: relative;\n\tborder: 1px solid #ccc;\n}\n.xdsoft_scrollbar >.xdsoft_scroller {\n\tbackground: #ccc !important;\n\theight: 20px;\n\tborder-radius: 3px;\n}\n.xdsoft_scrollbar {\n\tposition: absolute;\n\twidth: 7px;\n\tright: 0;\n\ttop: 0;\n\tbottom: 0;\n\tcursor: pointer;\n}\n.xdsoft_scroller_box {\n\tposition: relative;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark {\n\tbox-shadow: 0 5px 15px -5px rgba(255, 255, 255, 0.506);\n\tbackground: #000;\n\tborder-bottom: 1px solid #444;\n\tborder-left: 1px solid #333;\n\tborder-right: 1px solid #333;\n\tborder-top: 1px solid #333;\n\tcolor: #ccc;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box {\n\tborder-bottom: 1px solid #222;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div {\n\tbackground: #0a0a0a;\n\tborder-top: 1px solid #222;\n\tcolor: #999;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label {\n\tbackground-color: #000;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select {\n\tborder: 1px solid #333;\n\tbackground: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option:hover {\n\tcolor: #000;\n\tbackground: #007fff;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label > .xdsoft_select > div > .xdsoft_option.xdsoft_current {\n\tbackground: #cc5500;\n\tbox-shadow: #b03e00 0 1px 3px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_label i,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_prev,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_next,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_today_button {\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAeCAYAAADaW7vzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUExQUUzOTA0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUExQUUzOTE0M0UyMTFFNDlBM0FFQTJENTExRDVBODYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQTFBRTM4RTQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQTFBRTM4RjQzRTIxMUU0OUEzQUVBMkQ1MTFENUE4NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pp0VxGEAAAIASURBVHja7JrNSgMxEMebtgh+3MSLr1T1Xn2CHoSKB08+QmR8Bx9A8e7RixdB9CKCoNdexIugxFlJa7rNZneTbLIpM/CnNLsdMvNjM8l0mRCiQ9Ye61IKCAgZAUnH+mU3MMZaHYChBnJUDzWOFZdVfc5+ZFLbrWDeXPwbxIqrLLfaeS0hEBVGIRQCEiZoHQwtlGSByCCdYBl8g8egTTAWoKQMRBRBcZxYlhzhKegqMOageErsCHVkk3hXIFooDgHB1KkHIHVgzKB4ADJQ/A1jAFmAYhkQqA5TOBtocrKrgXwQA8gcFIuAIO8sQSA7hidvPwaQGZSaAYHOUWJABhWWw2EMIH9QagQERU4SArJXo0ZZL18uvaxejXt/Em8xjVBXmvFr1KVm/AJ10tRe2XnraNqaJvKE3KHuUbfK1E+VHB0q40/y3sdQSxY4FHWeKJCunP8UyDdqJZenT3ntVV5jIYCAh20vT7ioP8tpf6E2lfEMwERe+whV1MHjwZB7PBiCxcGQWwKZKD62lfGNnP/1poFAA60T7rF1UgcKd2id3KDeUS+oLWV8DfWAepOfq00CgQabi9zjcgJVYVD7PVzQUAUGAQkbNJTBICDhgwYTjDYD6XeW08ZKh+A4pYkzenOxXUbvZcWz7E8ykRMnIHGX1XPl+1m2vPYpL+2qdb8CDAARlKFEz/ZVkAAAAABJRU5ErkJggg==);\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tbackground: #0a0a0a;\n\tborder: 1px solid #222;\n\tcolor: #999;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tbackground: #0e0e0e;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_today {\n\tcolor: #cc5500;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_default {\n\tbackground: #ffe9d2;\n\tbox-shadow: #ffb871 0 1px 4px 0 inset;\n\tcolor:#000;\n}\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_highlighted_mint {\n\tbackground: #c1ffc9;\n\tbox-shadow: #00dd1c 0 1px 4px 0 inset;\n\tcolor:#000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_default,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td.xdsoft_current,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div.xdsoft_current {\n\tbackground: #cc5500;\n\tbox-shadow: #b03e00 0 1px 3px 0 inset;\n\tcolor: #000;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar td:hover,\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_timepicker .xdsoft_time_box >div >div:hover {\n\tcolor: #000 !important;\n\tbackground: #007fff !important;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_calendar th {\n\tcolor: #666;\n}\n\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright { color: #333 !important }\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a { color: #111 !important }\n.xdsoft_datetimepicker.xdsoft_dark .xdsoft_copyright a:hover { color: #555 !important }\n\n.xdsoft_dark .xdsoft_time_box {\n\tborder: 1px solid #333;\n}\n\n.xdsoft_dark .xdsoft_scrollbar >.xdsoft_scroller {\n\tbackground: #333 !important;\n}\n.xdsoft_datetimepicker .xdsoft_save_selected {\n    display: block;\n    border: 1px solid #dddddd !important;\n    margin-top: 5px;\n    width: 100%;\n    color: #454551;\n    font-size: 13px;\n}\n.xdsoft_datetimepicker .blue-gradient-button {\n\tfont-family: \"museo-sans\", \"Book Antiqua\", sans-serif;\n\tfont-size: 12px;\n\tfont-weight: 300;\n\tcolor: #82878c;\n\theight: 28px;\n\tposition: relative;\n\tpadding: 4px 17px 4px 33px;\n\tborder: 1px solid #d7d8da;\n\tbackground: -moz-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* FF3.6+ */\n\tbackground: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fff), color-stop(73%, #f4f8fa));\n\t/* Chrome,Safari4+ */\n\tbackground: -webkit-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* Chrome10+,Safari5.1+ */\n\tbackground: -o-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* Opera 11.10+ */\n\tbackground: -ms-linear-gradient(top, #fff 0%, #f4f8fa 73%);\n\t/* IE10+ */\n\tbackground: linear-gradient(to bottom, #fff 0%, #f4f8fa 73%);\n\t/* W3C */\n\tfilter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff', endColorstr='#f4f8fa',GradientType=0 );\n/* IE6-9 */\n}\n.xdsoft_datetimepicker .blue-gradient-button:hover, .xdsoft_datetimepicker .blue-gradient-button:focus, .xdsoft_datetimepicker .blue-gradient-button:hover span, .xdsoft_datetimepicker .blue-gradient-button:focus span {\n  color: #454551;\n  background: -moz-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* FF3.6+ */\n  background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f4f8fa), color-stop(73%, #FFF));\n  /* Chrome,Safari4+ */\n  background: -webkit-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* Chrome10+,Safari5.1+ */\n  background: -o-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* Opera 11.10+ */\n  background: -ms-linear-gradient(top, #f4f8fa 0%, #FFF 73%);\n  /* IE10+ */\n  background: linear-gradient(to bottom, #f4f8fa 0%, #FFF 73%);\n  /* W3C */\n  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f4f8fa', endColorstr='#FFF',GradientType=0 );\n  /* IE6-9 */\n}\n"
  },
  {
    "path": "silk/static/silk/lib/jquery.datetimepicker.js",
    "content": "/**\n * @preserve jQuery DateTimePicker plugin v2.4.3\n * @homepage http://xdsoft.net/jqplugins/datetimepicker/\n * (c) 2014, Chupurnov Valeriy.\n */\n/*global document,window,jQuery,setTimeout,clearTimeout,HighlightedDate,getCurrentValue*/\n(function ($) {\n\t'use strict';\n\tvar default_options  = {\n\t\ti18n: {\n\t\t\tar: { // Arabic\n\t\t\t\tmonths: [\n\t\t\t\t\t\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"مايو\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"ن\", \"ث\", \"ع\", \"خ\", \"ج\", \"س\", \"ح\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tro: { // Romanian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"ianuarie\", \"februarie\", \"martie\", \"aprilie\", \"mai\", \"iunie\", \"iulie\", \"august\", \"septembrie\", \"octombrie\", \"noiembrie\", \"decembrie\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"l\", \"ma\", \"mi\", \"j\", \"v\", \"s\", \"d\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tid: { // Indonesian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Min\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tbg: { // Bulgarian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfa: { // Persian/Farsi\n\t\t\t\tmonths: [\n\t\t\t\t\t'فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'یکشنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'\n\t\t\t\t]\n\t\t\t},\n\t\t\tru: { // Russian\n\t\t\t\tmonths: [\n\t\t\t\t\t'Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Вск\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tuk: { // Ukrainian\n\t\t\t\tmonths: [\n\t\t\t\t\t'Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ндл\", \"Пнд\", \"Втр\", \"Срд\", \"Чтв\", \"Птн\", \"Сбт\"\n\t\t\t\t]\n\t\t\t},\n\t\t\ten: { // English\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tel: { // Ελληνικά\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάιος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Κυρ\", \"Δευ\", \"Τρι\", \"Τετ\", \"Πεμ\", \"Παρ\", \"Σαβ\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tde: { // German\n\t\t\t\tmonths: [\n\t\t\t\t\t'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tnl: { // Dutch\n\t\t\t\tmonths: [\n\t\t\t\t\t\"januari\", \"februari\", \"maart\", \"april\", \"mei\", \"juni\", \"juli\", \"augustus\", \"september\", \"oktober\", \"november\", \"december\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"zo\", \"ma\", \"di\", \"wo\", \"do\", \"vr\", \"za\"\n\t\t\t\t]\n\t\t\t},\n\t\t\ttr: { // Turkish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfr: { //French\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tes: { // Spanish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tth: { // Thai\n\t\t\t\tmonths: [\n\t\t\t\t\t'มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'\n\t\t\t\t]\n\t\t\t},\n\t\t\tpl: { // Polish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"styczeń\", \"luty\", \"marzec\", \"kwiecień\", \"maj\", \"czerwiec\", \"lipiec\", \"sierpień\", \"wrzesień\", \"październik\", \"listopad\", \"grudzień\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"nd\", \"pn\", \"wt\", \"śr\", \"cz\", \"pt\", \"sb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tpt: { // Portuguese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tch: { // Simplified Chinese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tse: { // Swedish\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\",  \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tkr: { // Korean\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tit: { // Italian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tda: { // Dansk\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"July\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tno: { // Norwegian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tja: { // Japanese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tvi: { // Vietnamese\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Tháng 1\", \"Tháng 2\", \"Tháng 3\", \"Tháng 4\", \"Tháng 5\", \"Tháng 6\", \"Tháng 7\", \"Tháng 8\", \"Tháng 9\", \"Tháng 10\", \"Tháng 11\", \"Tháng 12\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"CN\", \"T2\", \"T3\", \"T4\", \"T5\", \"T6\", \"T7\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsl: { // Slovenščina\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tcs: { // Čeština\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"\n\t\t\t\t]\n\t\t\t},\n\t\t\thu: { // Hungarian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Cs\", \"Pé\", \"Szo\"\n\t\t\t\t]\n\t\t\t},\n\t\t\taz: { //Azerbaijanian (Azeri)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Yanvar\", \"Fevral\", \"Mart\", \"Aprel\", \"May\", \"Iyun\", \"Iyul\", \"Avqust\", \"Sentyabr\", \"Oktyabr\", \"Noyabr\", \"Dekabr\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"B\", \"Be\", \"Ça\", \"Ç\", \"Ca\", \"C\", \"Ş\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tbs: { //Bosanski\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tca: { //Català\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dg\", \"Dl\", \"Dt\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'en-GB': { //English (British)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tet: { //\"Eesti\"\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Jaanuar\", \"Veebruar\", \"Märts\", \"Aprill\", \"Mai\", \"Juuni\", \"Juuli\", \"August\", \"September\", \"Oktoober\", \"November\", \"Detsember\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"P\", \"E\", \"T\", \"K\", \"N\", \"R\", \"L\"\n\t\t\t\t]\n\t\t\t},\n\t\t\teu: { //Euskara\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Urtarrila\", \"Otsaila\", \"Martxoa\", \"Apirila\", \"Maiatza\", \"Ekaina\", \"Uztaila\", \"Abuztua\", \"Iraila\", \"Urria\", \"Azaroa\", \"Abendua\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ig.\", \"Al.\", \"Ar.\", \"Az.\", \"Og.\", \"Or.\", \"La.\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tfi: { //Finnish (Suomi)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tgl: { //Galego\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Xan\", \"Feb\", \"Maz\", \"Abr\", \"Mai\", \"Xun\", \"Xul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dec\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Xov\", \"Ven\", \"Sab\"\n\t\t\t\t]\n\t\t\t},\n\t\t\thr: { //Hrvatski\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Siječanj\", \"Veljača\", \"Ožujak\", \"Travanj\", \"Svibanj\", \"Lipanj\", \"Srpanj\", \"Kolovoz\", \"Rujan\", \"Listopad\", \"Studeni\", \"Prosinac\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sri\", \"Čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tko: { //Korean (한국어)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1월\", \"2월\", \"3월\", \"4월\", \"5월\", \"6월\", \"7월\", \"8월\", \"9월\", \"10월\", \"11월\", \"12월\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"일\", \"월\", \"화\", \"수\", \"목\", \"금\", \"토\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tlt: { //Lithuanian (lietuvių)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Sausio\", \"Vasario\", \"Kovo\", \"Balandžio\", \"Gegužės\", \"Birželio\", \"Liepos\", \"Rugpjūčio\", \"Rugsėjo\", \"Spalio\", \"Lapkričio\", \"Gruodžio\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sek\", \"Pir\", \"Ant\", \"Tre\", \"Ket\", \"Pen\", \"Šeš\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tlv: { //Latvian (Latviešu)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janvāris\", \"Februāris\", \"Marts\", \"Aprīlis \", \"Maijs\", \"Jūnijs\", \"Jūlijs\", \"Augusts\", \"Septembris\", \"Oktobris\", \"Novembris\", \"Decembris\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sv\", \"Pr\", \"Ot\", \"Tr\", \"Ct\", \"Pk\", \"St\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tmk: { //Macedonian (Македонски)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"јануари\", \"февруари\", \"март\", \"април\", \"мај\", \"јуни\", \"јули\", \"август\", \"септември\", \"октомври\", \"ноември\", \"декември\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"нед\", \"пон\", \"вто\", \"сре\", \"чет\", \"пет\", \"саб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tmn: { //Mongolian (Монгол)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"1-р сар\", \"2-р сар\", \"3-р сар\", \"4-р сар\", \"5-р сар\", \"6-р сар\", \"7-р сар\", \"8-р сар\", \"9-р сар\", \"10-р сар\", \"11-р сар\", \"12-р сар\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Дав\", \"Мяг\", \"Лха\", \"Пүр\", \"Бсн\", \"Бям\", \"Ням\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'pt-BR': { //Português(Brasil)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsk: { //Slovenčina\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsq: { //Albanian (Shqip)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'sr-YU': { //Serbian (Srpski)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januar\", \"Februar\", \"Mart\", \"April\", \"Maj\", \"Jun\", \"Jul\", \"Avgust\", \"Septembar\", \"Oktobar\", \"Novembar\", \"Decembar\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Ned\", \"Pon\", \"Uto\", \"Sre\", \"čet\", \"Pet\", \"Sub\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsr: { //Serbian Cyrillic (Српски)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"јануар\", \"фебруар\", \"март\", \"април\", \"мај\", \"јун\", \"јул\", \"август\", \"септембар\", \"октобар\", \"новембар\", \"децембар\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"нед\", \"пон\", \"уто\", \"сре\", \"чет\", \"пет\", \"суб\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tsv: { //Svenska\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"\n\t\t\t\t]\n\t\t\t},\n\t\t\t'zh-TW': { //Traditional Chinese (繁體中文)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\tzh: { //Simplified Chinese (简体中文)\n\t\t\t\tmonths: [\n\t\t\t\t\t\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"\n\t\t\t\t]\n\t\t\t},\n\t\t\the: { //Hebrew (עברית)\n\t\t\t\tmonths: [\n\t\t\t\t\t'ינואר', 'פברואר', 'מרץ', 'אפריל', 'מאי', 'יוני', 'יולי', 'אוגוסט', 'ספטמבר', 'אוקטובר', 'נובמבר', 'דצמבר'\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t'א\\'', 'ב\\'', 'ג\\'', 'ד\\'', 'ה\\'', 'ו\\'', 'שבת'\n\t\t\t\t]\n\t\t\t},\n\t\t\thy: { // Armenian\n\t\t\t\tmonths: [\n\t\t\t\t\t\"Հունվար\", \"Փետրվար\", \"Մարտ\", \"Ապրիլ\", \"Մայիս\", \"Հունիս\", \"Հուլիս\", \"Օգոստոս\", \"Սեպտեմբեր\", \"Հոկտեմբեր\", \"Նոյեմբեր\", \"Դեկտեմբեր\"\n\t\t\t\t],\n\t\t\t\tdayOfWeek: [\n\t\t\t\t\t\"Կի\", \"Երկ\", \"Երք\", \"Չոր\", \"Հնգ\", \"Ուրբ\", \"Շբթ\"\n\t\t\t\t]\n\t\t\t},\n            kg: { // Kyrgyz\n                months: [\n                    'Үчтүн айы', 'Бирдин айы', 'Жалган Куран', 'Чын Куран', 'Бугу', 'Кулжа', 'Теке', 'Баш Оона', 'Аяк Оона', 'Тогуздун айы', 'Жетинин айы', 'Бештин айы'\n                ],\n                dayOfWeek: [\n                    \"Жек\", \"Дүй\", \"Шей\", \"Шар\", \"Бей\", \"Жум\", \"Ише\"\n                ]\n            }\n\t\t},\n\t\tvalue: '',\n\t\tlang: 'en',\n\n\t\tformat:\t'Y/m/d H:i',\n\t\tformatTime:\t'H:i',\n\t\tformatDate:\t'Y/m/d',\n\n\t\tstartDate:\tfalse, // new Date(), '1986/12/08', '-1970/01/05','-1970/01/05',\n\t\tstep: 60,\n\t\tmonthChangeSpinner: true,\n\n\t\tcloseOnDateSelect: false,\n\t\tcloseOnTimeSelect: true,\n\t\tcloseOnWithoutClick: true,\n\t\tcloseOnInputClick: true,\n\n\t\ttimepicker: true,\n\t\tdatepicker: true,\n\t\tweeks: false,\n\n\t\tdefaultTime: false,\t// use formatTime format (ex. '10:00' for formatTime:\t'H:i')\n\t\tdefaultDate: false,\t// use formatDate format (ex new Date() or '1986/12/08' or '-1970/01/05' or '-1970/01/05')\n\n\t\tminDate: false,\n\t\tmaxDate: false,\n\t\tminTime: false,\n\t\tmaxTime: false,\n\n\t\tallowTimes: [],\n\t\topened: false,\n\t\tinitTime: true,\n\t\tinline: false,\n\t\ttheme: '',\n\n\t\tonSelectDate: function () {},\n\t\tonSelectTime: function () {},\n\t\tonChangeMonth: function () {},\n\t\tonChangeYear: function () {},\n\t\tonChangeDateTime: function () {},\n\t\tonShow: function () {},\n\t\tonClose: function () {},\n\t\tonGenerate: function () {},\n\n\t\twithoutCopyright: true,\n\t\tinverseButton: false,\n\t\thours12: false,\n\t\tnext: 'xdsoft_next',\n\t\tprev : 'xdsoft_prev',\n\t\tdayOfWeekStart: 0,\n\t\tparentID: 'body',\n\t\ttimeHeightInTimePicker: 25,\n\t\ttimepickerScrollbar: true,\n\t\ttodayButton: true,\n\t\tprevButton: true,\n\t\tnextButton: true,\n\t\tdefaultSelect: true,\n\n\t\tscrollMonth: true,\n\t\tscrollTime: true,\n\t\tscrollInput: true,\n\n\t\tlazyInit: false,\n\t\tmask: false,\n\t\tvalidateOnBlur: true,\n\t\tallowBlank: true,\n\t\tyearStart: 1950,\n\t\tyearEnd: 2050,\n\t\tmonthStart: 0,\n\t\tmonthEnd: 11,\n\t\tstyle: '',\n\t\tid: '',\n\t\tfixed: false,\n\t\troundTime: 'round', // ceil, floor\n\t\tclassName: '',\n\t\tweekends: [],\n\t\thighlightedDates: [],\n\t\thighlightedPeriods: [],\n\t\tdisabledDates : [],\n\t\tyearOffset: 0,\n\t\tbeforeShowDay: null,\n\n\t\tenterLikeTab: true,\n        showApplyButton: false\n\t};\n\t// fix for ie8\n\tif (!Array.prototype.indexOf) {\n\t\tArray.prototype.indexOf = function (obj, start) {\n\t\t\tvar i, j;\n\t\t\tfor (i = (start || 0), j = this.length; i < j; i += 1) {\n\t\t\t\tif (this[i] === obj) { return i; }\n\t\t\t}\n\t\t\treturn -1;\n\t\t};\n\t}\n\tDate.prototype.countDaysInMonth = function () {\n\t\treturn new Date(this.getFullYear(), this.getMonth() + 1, 0).getDate();\n\t};\n\t$.fn.xdsoftScroller = function (percent) {\n\t\treturn this.each(function () {\n\t\t\tvar timeboxparent = $(this),\n\t\t\t\tpointerEventToXY = function (e) {\n\t\t\t\t\tvar out = {x: 0, y: 0},\n\t\t\t\t\t\ttouch;\n\t\t\t\t\tif (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') {\n\t\t\t\t\t\ttouch  = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];\n\t\t\t\t\t\tout.x = touch.clientX;\n\t\t\t\t\t\tout.y = touch.clientY;\n\t\t\t\t\t} else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'mousemove' || e.type === 'mouseover' || e.type === 'mouseout' || e.type === 'mouseenter' || e.type === 'mouseleave') {\n\t\t\t\t\t\tout.x = e.clientX;\n\t\t\t\t\t\tout.y = e.clientY;\n\t\t\t\t\t}\n\t\t\t\t\treturn out;\n\t\t\t\t},\n\t\t\t\tmove = 0,\n\t\t\t\ttimebox,\n\t\t\t\tparentHeight,\n\t\t\t\theight,\n\t\t\t\tscrollbar,\n\t\t\t\tscroller,\n\t\t\t\tmaximumOffset = 100,\n\t\t\t\tstart = false,\n\t\t\t\tstartY = 0,\n\t\t\t\tstartTop = 0,\n\t\t\t\th1 = 0,\n\t\t\t\ttouchStart = false,\n\t\t\t\tstartTopScroll = 0,\n\t\t\t\tcalcOffset = function () {};\n\t\t\tif (percent === 'hide') {\n\t\t\t\ttimeboxparent.find('.xdsoft_scrollbar').hide();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!$(this).hasClass('xdsoft_scroller_box')) {\n\t\t\t\ttimebox = timeboxparent.children().eq(0);\n\t\t\t\tparentHeight = timeboxparent[0].clientHeight;\n\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\tscrollbar = $('<div class=\"xdsoft_scrollbar\"></div>');\n\t\t\t\tscroller = $('<div class=\"xdsoft_scroller\"></div>');\n\t\t\t\tscrollbar.append(scroller);\n\n\t\t\t\ttimeboxparent.addClass('xdsoft_scroller_box').append(scrollbar);\n\t\t\t\tcalcOffset = function calcOffset(event) {\n\t\t\t\t\tvar offset = pointerEventToXY(event).y - startY + startTopScroll;\n\t\t\t\t\tif (offset < 0) {\n\t\t\t\t\t\toffset = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (offset + scroller[0].offsetHeight > h1) {\n\t\t\t\t\t\toffset = h1 - scroller[0].offsetHeight;\n\t\t\t\t\t}\n\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [maximumOffset ? offset / maximumOffset : 0]);\n\t\t\t\t};\n\n\t\t\t\tscroller\n\t\t\t\t\t.on('touchstart.xdsoft_scroller mousedown.xdsoft_scroller', function (event) {\n\t\t\t\t\t\tif (!parentHeight) {\n\t\t\t\t\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstartY = pointerEventToXY(event).y;\n\t\t\t\t\t\tstartTopScroll = parseInt(scroller.css('margin-top'), 10);\n\t\t\t\t\t\th1 = scrollbar[0].offsetHeight;\n\n\t\t\t\t\t\tif (event.type === 'mousedown') {\n\t\t\t\t\t\t\tif (document) {\n\t\t\t\t\t\t\t\t$(document.body).addClass('xdsoft_noselect');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft_scroller', function arguments_callee() {\n\t\t\t\t\t\t\t\t$([document.body, window]).off('mouseup.xdsoft_scroller', arguments_callee)\n\t\t\t\t\t\t\t\t\t.off('mousemove.xdsoft_scroller', calcOffset)\n\t\t\t\t\t\t\t\t\t.removeClass('xdsoft_noselect');\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t$(document.body).on('mousemove.xdsoft_scroller', calcOffset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttouchStart = true;\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on('touchmove', function (event) {\n\t\t\t\t\t\tif (touchStart) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tcalcOffset(event);\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.on('touchend touchcancel', function (event) {\n\t\t\t\t\t\ttouchStart =  false;\n\t\t\t\t\t\tstartTopScroll = 0;\n\t\t\t\t\t});\n\n\t\t\t\ttimeboxparent\n\t\t\t\t\t.on('scroll_element.xdsoft_scroller', function (event, percentage) {\n\t\t\t\t\t\tif (!parentHeight) {\n\t\t\t\t\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percentage, true]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpercentage = percentage > 1 ? 1 : (percentage < 0 || isNaN(percentage)) ? 0 : percentage;\n\n\t\t\t\t\t\tscroller.css('margin-top', maximumOffset * percentage);\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\ttimebox.css('marginTop', -parseInt((timebox[0].offsetHeight - parentHeight) * percentage, 10));\n\t\t\t\t\t\t}, 10);\n\t\t\t\t\t})\n\t\t\t\t\t.on('resize_scroll.xdsoft_scroller', function (event, percentage, noTriggerScroll) {\n\t\t\t\t\t\tvar percent, sh;\n\t\t\t\t\t\tparentHeight = timeboxparent[0].clientHeight;\n\t\t\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\t\t\tpercent = parentHeight / height;\n\t\t\t\t\t\tsh = percent * scrollbar[0].offsetHeight;\n\t\t\t\t\t\tif (percent > 1) {\n\t\t\t\t\t\t\tscroller.hide();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tscroller.show();\n\t\t\t\t\t\t\tscroller.css('height', parseInt(sh > 10 ? sh : 10, 10));\n\t\t\t\t\t\t\tmaximumOffset = scrollbar[0].offsetHeight - scroller[0].offsetHeight;\n\t\t\t\t\t\t\tif (noTriggerScroll !== true) {\n\t\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [percentage || Math.abs(parseInt(timebox.css('marginTop'), 10)) / (height - parentHeight)]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('mousewheel', function (event) {\n\t\t\t\t\tvar top = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\n\t\t\t\t\ttop = top - (event.deltaY * 20);\n\t\t\t\t\tif (top < 0) {\n\t\t\t\t\t\ttop = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [top / (height - parentHeight)]);\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchstart', function (event) {\n\t\t\t\t\tstart = pointerEventToXY(event);\n\t\t\t\t\tstartTop = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchmove', function (event) {\n\t\t\t\t\tif (start) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tvar coord = pointerEventToXY(event);\n\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [(startTop - (coord.y - start.y)) / (height - parentHeight)]);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\ttimeboxparent.on('touchend touchcancel', function (event) {\n\t\t\t\t\tstart = false;\n\t\t\t\t\tstartTop = 0;\n\t\t\t\t});\n\t\t\t}\n\t\t\ttimeboxparent.trigger('resize_scroll.xdsoft_scroller', [percent]);\n\t\t});\n\t};\n\n\t$.fn.datetimepicker = function (opt) {\n\t\tvar KEY0 = 48,\n\t\t\tKEY9 = 57,\n\t\t\t_KEY0 = 96,\n\t\t\t_KEY9 = 105,\n\t\t\tCTRLKEY = 17,\n\t\t\tDEL = 46,\n\t\t\tENTER = 13,\n\t\t\tESC = 27,\n\t\t\tBACKSPACE = 8,\n\t\t\tARROWLEFT = 37,\n\t\t\tARROWUP = 38,\n\t\t\tARROWRIGHT = 39,\n\t\t\tARROWDOWN = 40,\n\t\t\tTAB = 9,\n\t\t\tF5 = 116,\n\t\t\tAKEY = 65,\n\t\t\tCKEY = 67,\n\t\t\tVKEY = 86,\n\t\t\tZKEY = 90,\n\t\t\tYKEY = 89,\n\t\t\tctrlDown\t=\tfalse,\n\t\t\toptions = ($.isPlainObject(opt) || !opt) ? $.extend(true, {}, default_options, opt) : $.extend(true, {}, default_options),\n\n\t\t\tlazyInitTimer = 0,\n\t\t\tcreateDateTimePicker,\n\t\t\tdestroyDateTimePicker,\n\n\t\t\tlazyInit = function (input) {\n\t\t\t\tinput\n\t\t\t\t\t.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function initOnActionCallback(event) {\n\t\t\t\t\t\tif (input.is(':disabled') || input.data('xdsoft_datetimepicker')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearTimeout(lazyInitTimer);\n\t\t\t\t\t\tlazyInitTimer = setTimeout(function () {\n\n\t\t\t\t\t\t\tif (!input.data('xdsoft_datetimepicker')) {\n\t\t\t\t\t\t\t\tcreateDateTimePicker(input);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tinput\n\t\t\t\t\t\t\t\t.off('open.xdsoft focusin.xdsoft mousedown.xdsoft', initOnActionCallback)\n\t\t\t\t\t\t\t\t.trigger('open.xdsoft');\n\t\t\t\t\t\t}, 100);\n\t\t\t\t\t});\n\t\t\t};\n\n\t\tcreateDateTimePicker = function (input) {\n\t\t\tvar datetimepicker = $('<div class=\"xdsoft_datetimepicker xdsoft_noselect\"></div>'),\n\t\t\t\txdsoft_copyright = $('<div class=\"xdsoft_copyright\"><a target=\"_blank\" href=\"http://xdsoft.net/jqplugins/datetimepicker/\">xdsoft.net</a></div>'),\n\t\t\t\tdatepicker = $('<div class=\"xdsoft_datepicker active\"></div>'),\n\t\t\t\tmounth_picker = $('<div class=\"xdsoft_mounthpicker\"><button type=\"button\" class=\"xdsoft_prev\"></button><button type=\"button\" class=\"xdsoft_today_button\"></button>' +\n\t\t\t\t\t'<div class=\"xdsoft_label xdsoft_month\"><span></span><i></i></div>' +\n\t\t\t\t\t'<div class=\"xdsoft_label xdsoft_year\"><span></span><i></i></div>' +\n\t\t\t\t\t'<button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n\t\t\t\tcalendar = $('<div class=\"xdsoft_calendar\"></div>'),\n\t\t\t\ttimepicker = $('<div class=\"xdsoft_timepicker active\"><button type=\"button\" class=\"xdsoft_prev\"></button><div class=\"xdsoft_time_box\"></div><button type=\"button\" class=\"xdsoft_next\"></button></div>'),\n\t\t\t\ttimeboxparent = timepicker.find('.xdsoft_time_box').eq(0),\n\t\t\t\ttimebox = $('<div class=\"xdsoft_time_variant\"></div>'),\n                applyButton = $('<button class=\"xdsoft_save_selected blue-gradient-button\">Save Selected</button>'),\n\t\t\t\t/*scrollbar = $('<div class=\"xdsoft_scrollbar\"></div>'),\n\t\t\t\tscroller = $('<div class=\"xdsoft_scroller\"></div>'),*/\n\t\t\t\tmonthselect = $('<div class=\"xdsoft_select xdsoft_monthselect\"><div></div></div>'),\n\t\t\t\tyearselect = $('<div class=\"xdsoft_select xdsoft_yearselect\"><div></div></div>'),\n\t\t\t\ttriggerAfterOpen = false,\n\t\t\t\tXDSoft_datetime,\n\t\t\t\t//scroll_element,\n\t\t\t\txchangeTimer,\n\t\t\t\ttimerclick,\n\t\t\t\tcurrent_time_index,\n\t\t\t\tsetPos,\n\t\t\t\ttimer = 0,\n\t\t\t\ttimer1 = 0,\n\t\t\t\t_xdsoft_datetime;\n\n\t\t\tif (options.id) datetimepicker.attr('id', options.id);\n\t\t\tif (options.style) datetimepicker.attr('style', options.style);\n\t\t\tif (options.weeks) datetimepicker.addClass('xdsoft_showweeks');\n\n\t\t\tdatetimepicker.addClass('xdsoft_' + options.theme);\n\t\t\tdatetimepicker.addClass(options.className);\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_month span')\n\t\t\t\t\t.after(monthselect);\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_year span')\n\t\t\t\t\t.after(yearselect);\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_month,.xdsoft_year')\n\t\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tvar select = $(this).find('.xdsoft_select').eq(0),\n\t\t\t\t\t\tval = 0,\n\t\t\t\t\t\ttop = 0,\n\t\t\t\t\t\tvisible = select.is(':visible'),\n\t\t\t\t\t\titems,\n\t\t\t\t\t\ti;\n\n\t\t\t\t\tmounth_picker\n\t\t\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t\t\t.hide();\n\t\t\t\t\tif (_xdsoft_datetime.currentTime) {\n\t\t\t\t\t\tval = _xdsoft_datetime.currentTime[$(this).hasClass('xdsoft_month') ? 'getMonth' : 'getFullYear']();\n\t\t\t\t\t}\n\n\t\t\t\t\tselect[visible ? 'hide' : 'show']();\n\t\t\t\t\tfor (items = select.find('div.xdsoft_option'), i = 0; i < items.length; i += 1) {\n\t\t\t\t\t\tif (items.eq(i).data('value') === val) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttop += items[0].offsetHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tselect.xdsoftScroller(top / (select.children()[0].offsetHeight - (select[0].clientHeight)));\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t.xdsoftScroller()\n\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t})\n\t\t\t\t.on('mousedown.xdsoft', '.xdsoft_option', function (event) {\n\n\t\t\t\t\tif (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar year = _xdsoft_datetime.currentTime.getFullYear();\n\t\t\t\t\tif (_xdsoft_datetime && _xdsoft_datetime.currentTime) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime[$(this).parent().parent().hasClass('xdsoft_monthselect') ? 'setMonth' : 'setFullYear']($(this).data('value'));\n\t\t\t\t\t}\n\n\t\t\t\t\t$(this).parent().parent().hide();\n\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (year !== _xdsoft_datetime.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {\n\t\t\t\t\t\toptions.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tdatetimepicker.setOptions = function (_options) {\n\t\t\t\tvar highlightedDates = {},\n\t\t\t\t\tgetCaretPos = function (input) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tif (document.selection && document.selection.createRange) {\n\t\t\t\t\t\t\t\tvar range = document.selection.createRange();\n\t\t\t\t\t\t\t\treturn range.getBookmark().charCodeAt(2) - 2;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (input.setSelectionRange) {\n\t\t\t\t\t\t\t\treturn input.selectionStart;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tsetCaretPos = function (node, pos) {\n\t\t\t\t\t\tnode = (typeof node === \"string\" || node instanceof String) ? document.getElementById(node) : node;\n\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node.createTextRange) {\n\t\t\t\t\t\t\tvar textRange = node.createTextRange();\n\t\t\t\t\t\t\ttextRange.collapse(true);\n\t\t\t\t\t\t\ttextRange.moveEnd('character', pos);\n\t\t\t\t\t\t\ttextRange.moveStart('character', pos);\n\t\t\t\t\t\t\ttextRange.select();\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (node.setSelectionRange) {\n\t\t\t\t\t\t\tnode.setSelectionRange(pos, pos);\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\tisValidValue = function (mask, value) {\n\t\t\t\t\t\tvar reg = mask\n\t\t\t\t\t\t\t.replace(/([\\[\\]\\/\\{\\}\\(\\)\\-\\.\\+]{1})/g, '\\\\$1')\n\t\t\t\t\t\t\t.replace(/_/g, '{digit+}')\n\t\t\t\t\t\t\t.replace(/([0-9]{1})/g, '{digit$1}')\n\t\t\t\t\t\t\t.replace(/\\{digit([0-9]{1})\\}/g, '[0-$1_]{1}')\n\t\t\t\t\t\t\t.replace(/\\{digit[\\+]\\}/g, '[0-9_]{1}');\n\t\t\t\t\t\treturn (new RegExp(reg)).test(value);\n\t\t\t\t\t};\n\t\t\t\toptions = $.extend(true, {}, options, _options);\n\n\t\t\t\tif (_options.allowTimes && $.isArray(_options.allowTimes) && _options.allowTimes.length) {\n\t\t\t\t\toptions.allowTimes = $.extend(true, [], _options.allowTimes);\n\t\t\t\t}\n\n\t\t\t\tif (_options.weekends && $.isArray(_options.weekends) && _options.weekends.length) {\n\t\t\t\t\toptions.weekends = $.extend(true, [], _options.weekends);\n\t\t\t\t}\n\n\t\t\t\tif (_options.highlightedDates && $.isArray(_options.highlightedDates) && _options.highlightedDates.length) {\n\t\t\t\t\t$.each(_options.highlightedDates, function (index, value) {\n\t\t\t\t\t\tvar splitData = $.map(value.split(','), $.trim),\n\t\t\t\t\t\t\texDesc,\n\t\t\t\t\t\t\thDate = new HighlightedDate(Date.parseDate(splitData[0], options.formatDate), splitData[1], splitData[2]), // date, desc, style\n\t\t\t\t\t\t\tkeyDate = hDate.date.dateFormat(options.formatDate);\n\t\t\t\t\t\tif (highlightedDates[keyDate] !== undefined) {\n\t\t\t\t\t\t\texDesc = highlightedDates[keyDate].desc;\n\t\t\t\t\t\t\tif (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {\n\t\t\t\t\t\t\t\thighlightedDates[keyDate].desc = exDesc + \"\\n\" + hDate.desc;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\thighlightedDates[keyDate] = hDate;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\toptions.highlightedDates = $.extend(true, [], highlightedDates);\n\t\t\t\t}\n\n\t\t\t\tif (_options.highlightedPeriods && $.isArray(_options.highlightedPeriods) && _options.highlightedPeriods.length) {\n\t\t\t\t\thighlightedDates = $.extend(true, [], options.highlightedDates);\n\t\t\t\t\t$.each(_options.highlightedPeriods, function (index, value) {\n\t\t\t\t\t\tvar splitData = $.map(value.split(','), $.trim),\n\t\t\t\t\t\t\tdateTest = Date.parseDate(splitData[0], options.formatDate), // start date\n\t\t\t\t\t\t\tdateEnd = Date.parseDate(splitData[1], options.formatDate),\n\t\t\t\t\t\t\tdesc = splitData[2],\n\t\t\t\t\t\t\thDate,\n\t\t\t\t\t\t\tkeyDate,\n\t\t\t\t\t\t\texDesc,\n\t\t\t\t\t\t\tstyle = splitData[3];\n\n\t\t\t\t\t\twhile (dateTest <= dateEnd) {\n\t\t\t\t\t\t\thDate = new HighlightedDate(dateTest, desc, style);\n\t\t\t\t\t\t\tkeyDate = dateTest.dateFormat(options.formatDate);\n\t\t\t\t\t\t\tdateTest.setDate(dateTest.getDate() + 1);\n\t\t\t\t\t\t\tif (highlightedDates[keyDate] !== undefined) {\n\t\t\t\t\t\t\t\texDesc = highlightedDates[keyDate].desc;\n\t\t\t\t\t\t\t\tif (exDesc && exDesc.length && hDate.desc && hDate.desc.length) {\n\t\t\t\t\t\t\t\t\thighlightedDates[keyDate].desc = exDesc + \"\\n\" + hDate.desc;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thighlightedDates[keyDate] = hDate;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\toptions.highlightedDates = $.extend(true, [], highlightedDates);\n\t\t\t\t}\n\n\t\t\t\tif (_options.disabledDates && $.isArray(_options.disabledDates) && _options.disabledDates.length) {\n\t\t\t\t\toptions.disabledDates = $.extend(true, [], _options.disabledDates);\n\t\t\t\t}\n\n\t\t\t\tif ((options.open || options.opened) && (!options.inline)) {\n\t\t\t\t\tinput.trigger('open.xdsoft');\n\t\t\t\t}\n\n\t\t\t\tif (options.inline) {\n\t\t\t\t\ttriggerAfterOpen = true;\n\t\t\t\t\tdatetimepicker.addClass('xdsoft_inline');\n\t\t\t\t\tinput.after(datetimepicker).hide();\n\t\t\t\t}\n\n\t\t\t\tif (options.inverseButton) {\n\t\t\t\t\toptions.next = 'xdsoft_prev';\n\t\t\t\t\toptions.prev = 'xdsoft_next';\n\t\t\t\t}\n\n\t\t\t\tif (options.datepicker) {\n\t\t\t\t\tdatepicker.addClass('active');\n\t\t\t\t} else {\n\t\t\t\t\tdatepicker.removeClass('active');\n\t\t\t\t}\n\n\t\t\t\tif (options.timepicker) {\n\t\t\t\t\ttimepicker.addClass('active');\n\t\t\t\t} else {\n\t\t\t\t\ttimepicker.removeClass('active');\n\t\t\t\t}\n\n\t\t\t\tif (options.value) {\n\t\t\t\t\t_xdsoft_datetime.setCurrentTime(options.value);\n\t\t\t\t\tif (input && input.val) {\n\t\t\t\t\t\tinput.val(_xdsoft_datetime.str);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (isNaN(options.dayOfWeekStart)) {\n\t\t\t\t\toptions.dayOfWeekStart = 0;\n\t\t\t\t} else {\n\t\t\t\t\toptions.dayOfWeekStart = parseInt(options.dayOfWeekStart, 10) % 7;\n\t\t\t\t}\n\n\t\t\t\tif (!options.timepickerScrollbar) {\n\t\t\t\t\ttimeboxparent.xdsoftScroller('hide');\n\t\t\t\t}\n\n\t\t\t\tif (options.minDate && /^-(.*)$/.test(options.minDate)) {\n\t\t\t\t\toptions.minDate = _xdsoft_datetime.strToDateTime(options.minDate).dateFormat(options.formatDate);\n\t\t\t\t}\n\n\t\t\t\tif (options.maxDate &&  /^\\+(.*)$/.test(options.maxDate)) {\n\t\t\t\t\toptions.maxDate = _xdsoft_datetime.strToDateTime(options.maxDate).dateFormat(options.formatDate);\n\t\t\t\t}\n\n\t\t\t\tapplyButton.toggle(options.showApplyButton);\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.xdsoft_today_button')\n\t\t\t\t\t\t.css('visibility', !options.todayButton ? 'hidden' : 'visible');\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.' + options.prev)\n\t\t\t\t\t\t.css('visibility', !options.prevButton ? 'hidden' : 'visible');\n\n\t\t\t\tmounth_picker\n\t\t\t\t\t.find('.' + options.next)\n\t\t\t\t\t\t.css('visibility', !options.nextButton ? 'hidden' : 'visible');\n\n\t\t\t\tif (options.mask) {\n\t\t\t\t\tinput.off('keydown.xdsoft');\n\n\t\t\t\t\tif (options.mask === true) {\n\t\t\t\t\t\toptions.mask = options.format\n\t\t\t\t\t\t\t.replace(/Y/g, '9999')\n\t\t\t\t\t\t\t.replace(/F/g, '9999')\n\t\t\t\t\t\t\t.replace(/m/g, '19')\n\t\t\t\t\t\t\t.replace(/d/g, '39')\n\t\t\t\t\t\t\t.replace(/H/g, '29')\n\t\t\t\t\t\t\t.replace(/i/g, '59')\n\t\t\t\t\t\t\t.replace(/s/g, '59');\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($.type(options.mask) === 'string') {\n\t\t\t\t\t\tif (!isValidValue(options.mask, input.val())) {\n\t\t\t\t\t\t\tinput.val(options.mask.replace(/[0-9]/g, '_'));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tinput.on('keydown.xdsoft', function (event) {\n\t\t\t\t\t\t\tvar val = this.value,\n\t\t\t\t\t\t\t\tkey = event.which,\n\t\t\t\t\t\t\t\tpos,\n\t\t\t\t\t\t\t\tdigit;\n\n\t\t\t\t\t\t\tif (((key >= KEY0 && key <= KEY9) || (key >= _KEY0 && key <= _KEY9)) || (key === BACKSPACE || key === DEL)) {\n\t\t\t\t\t\t\t\tpos = getCaretPos(this);\n\t\t\t\t\t\t\t\tdigit = (key !== BACKSPACE && key !== DEL) ? String.fromCharCode((_KEY0 <= key && key <= _KEY9) ? key - KEY0 : key) : '_';\n\n\t\t\t\t\t\t\t\tif ((key === BACKSPACE || key === DEL) && pos) {\n\t\t\t\t\t\t\t\t\tpos -= 1;\n\t\t\t\t\t\t\t\t\tdigit = '_';\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\twhile (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {\n\t\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? -1 : 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tval = val.substr(0, pos) + digit + val.substr(pos + 1);\n\t\t\t\t\t\t\t\tif ($.trim(val) === '') {\n\t\t\t\t\t\t\t\t\tval = options.mask.replace(/[0-9]/g, '_');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (pos === options.mask.length) {\n\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? 0 : 1;\n\t\t\t\t\t\t\t\twhile (/[^0-9_]/.test(options.mask.substr(pos, 1)) && pos < options.mask.length && pos > 0) {\n\t\t\t\t\t\t\t\t\tpos += (key === BACKSPACE || key === DEL) ? -1 : 1;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (isValidValue(options.mask, val)) {\n\t\t\t\t\t\t\t\t\tthis.value = val;\n\t\t\t\t\t\t\t\t\tsetCaretPos(this, pos);\n\t\t\t\t\t\t\t\t} else if ($.trim(val) === '') {\n\t\t\t\t\t\t\t\t\tthis.value = options.mask.replace(/[0-9]/g, '_');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tinput.trigger('error_input.xdsoft');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (([AKEY, CKEY, VKEY, ZKEY, YKEY].indexOf(key) !== -1 && ctrlDown) || [ESC, ARROWUP, ARROWDOWN, ARROWLEFT, ARROWRIGHT, F5, CTRLKEY, TAB, ENTER].indexOf(key) !== -1) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.validateOnBlur) {\n\t\t\t\t\tinput\n\t\t\t\t\t\t.off('blur.xdsoft')\n\t\t\t\t\t\t.on('blur.xdsoft', function () {\n\t\t\t\t\t\t\tif (options.allowBlank && !$.trim($(this).val()).length) {\n\t\t\t\t\t\t\t\t$(this).val(null);\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').empty();\n\t\t\t\t\t\t\t} else if (!Date.parseDate($(this).val(), options.format)) {\n\t\t\t\t\t\t\t\tvar splittedHours   = +([$(this).val()[0], $(this).val()[1]].join('')),\n\t\t\t\t\t\t\t\t\tsplittedMinutes = +([$(this).val()[2], $(this).val()[3]].join(''));\n\n\t\t\t\t\t\t\t\t// parse the numbers as 0312 => 03:12\n\t\t\t\t\t\t\t\tif (!options.datepicker && options.timepicker && splittedHours >= 0 && splittedHours < 24 && splittedMinutes >= 0 && splittedMinutes < 60) {\n\t\t\t\t\t\t\t\t\t$(this).val([splittedHours, splittedMinutes].map(function (item) {\n\t\t\t\t\t\t\t\t\t\treturn item > 9 ? item : '0' + item;\n\t\t\t\t\t\t\t\t\t}).join(':'));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t$(this).val((_xdsoft_datetime.now()).dateFormat(options.format));\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime($(this).val());\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\toptions.dayOfWeekStartPrev = (options.dayOfWeekStart === 0) ? 6 : options.dayOfWeekStart - 1;\n\n\t\t\t\tdatetimepicker\n\t\t\t\t\t.trigger('xchange.xdsoft')\n\t\t\t\t\t.trigger('afterOpen.xdsoft');\n\t\t\t};\n\n\t\t\tdatetimepicker\n\t\t\t\t.data('options', options)\n\t\t\t\t.on('mousedown.xdsoft', function (event) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tyearselect.hide();\n\t\t\t\t\tmonthselect.hide();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\t//scroll_element = timepicker.find('.xdsoft_time_box');\n\t\t\ttimeboxparent.append(timebox);\n\t\t\ttimeboxparent.xdsoftScroller();\n\n\t\t\tdatetimepicker.on('afterOpen.xdsoft', function () {\n\t\t\t\ttimeboxparent.xdsoftScroller();\n\t\t\t});\n\n\t\t\tdatetimepicker\n\t\t\t\t.append(datepicker)\n\t\t\t\t.append(timepicker);\n\n\t\t\tif (options.withoutCopyright !== true) {\n\t\t\t\tdatetimepicker\n\t\t\t\t\t.append(xdsoft_copyright);\n\t\t\t}\n\n\t\t\tdatepicker\n\t\t\t\t.append(mounth_picker)\n\t\t\t\t.append(calendar)\n\t\t\t\t.append(applyButton);\n\n\t\t\t$(options.parentID)\n\t\t\t\t.append(datetimepicker);\n\n\t\t\tXDSoft_datetime = function () {\n\t\t\t\tvar _this = this;\n\t\t\t\t_this.now = function (norecursion) {\n\t\t\t\t\tvar d = new Date(),\n\t\t\t\t\t\tdate,\n\t\t\t\t\t\ttime;\n\n\t\t\t\t\tif (!norecursion && options.defaultDate) {\n\t\t\t\t\t\tdate = _this.strToDateTime(options.defaultDate);\n\t\t\t\t\t\td.setFullYear(date.getFullYear());\n\t\t\t\t\t\td.setMonth(date.getMonth());\n\t\t\t\t\t\td.setDate(date.getDate());\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.yearOffset) {\n\t\t\t\t\t\td.setFullYear(d.getFullYear() + options.yearOffset);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!norecursion && options.defaultTime) {\n\t\t\t\t\t\ttime = _this.strtotime(options.defaultTime);\n\t\t\t\t\t\td.setHours(time.getHours());\n\t\t\t\t\t\td.setMinutes(time.getMinutes());\n\t\t\t\t\t}\n\t\t\t\t\treturn d;\n\t\t\t\t};\n\n\t\t\t\t_this.isValidDate = function (d) {\n\t\t\t\t\tif (Object.prototype.toString.call(d) !== \"[object Date]\") {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn !isNaN(d.getTime());\n\t\t\t\t};\n\n\t\t\t\t_this.setCurrentTime = function (dTime) {\n\t\t\t\t\t_this.currentTime = (typeof dTime === 'string') ? _this.strToDateTime(dTime) : _this.isValidDate(dTime) ? dTime : _this.now();\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t};\n\n\t\t\t\t_this.empty = function () {\n\t\t\t\t\t_this.currentTime = null;\n\t\t\t\t};\n\n\t\t\t\t_this.getCurrentTime = function (dTime) {\n\t\t\t\t\treturn _this.currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.nextMonth = function () {\n\n\t\t\t\t\tif (_this.currentTime === undefined || _this.currentTime === null) {\n\t\t\t\t\t\t_this.currentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar month = _this.currentTime.getMonth() + 1,\n\t\t\t\t\t\tyear;\n\t\t\t\t\tif (month === 12) {\n\t\t\t\t\t\t_this.currentTime.setFullYear(_this.currentTime.getFullYear() + 1);\n\t\t\t\t\t\tmonth = 0;\n\t\t\t\t\t}\n\n\t\t\t\t\tyear = _this.currentTime.getFullYear();\n\n\t\t\t\t\t_this.currentTime.setDate(\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tnew Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),\n\t\t\t\t\t\t\t_this.currentTime.getDate()\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\t_this.currentTime.setMonth(month);\n\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (year !== _this.currentTime.getFullYear() && $.isFunction(options.onChangeYear)) {\n\t\t\t\t\t\toptions.onChangeYear.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\treturn month;\n\t\t\t\t};\n\n\t\t\t\t_this.prevMonth = function () {\n\n\t\t\t\t\tif (_this.currentTime === undefined || _this.currentTime === null) {\n\t\t\t\t\t\t_this.currentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tvar month = _this.currentTime.getMonth() - 1;\n\t\t\t\t\tif (month === -1) {\n\t\t\t\t\t\t_this.currentTime.setFullYear(_this.currentTime.getFullYear() - 1);\n\t\t\t\t\t\tmonth = 11;\n\t\t\t\t\t}\n\t\t\t\t\t_this.currentTime.setDate(\n\t\t\t\t\t\tMath.min(\n\t\t\t\t\t\t\tnew Date(_this.currentTime.getFullYear(), month + 1, 0).getDate(),\n\t\t\t\t\t\t\t_this.currentTime.getDate()\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\t_this.currentTime.setMonth(month);\n\t\t\t\t\tif (options.onChangeMonth && $.isFunction(options.onChangeMonth)) {\n\t\t\t\t\t\toptions.onChangeMonth.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\treturn month;\n\t\t\t\t};\n\n\t\t\t\t_this.getWeekOfYear = function (datetime) {\n\t\t\t\t\tvar onejan = new Date(datetime.getFullYear(), 0, 1);\n\t\t\t\t\treturn Math.ceil((((datetime - onejan) / 86400000) + onejan.getDay() + 1) / 7);\n\t\t\t\t};\n\n\t\t\t\t_this.strToDateTime = function (sDateTime) {\n\t\t\t\t\tvar tmpDate = [], timeOffset, currentTime;\n\n\t\t\t\t\tif (sDateTime && sDateTime instanceof Date && _this.isValidDate(sDateTime)) {\n\t\t\t\t\t\treturn sDateTime;\n\t\t\t\t\t}\n\n\t\t\t\t\ttmpDate = /^(\\+|\\-)(.*)$/.exec(sDateTime);\n\t\t\t\t\tif (tmpDate) {\n\t\t\t\t\t\ttmpDate[2] = Date.parseDate(tmpDate[2], options.formatDate);\n\t\t\t\t\t}\n\t\t\t\t\tif (tmpDate  && tmpDate[2]) {\n\t\t\t\t\t\ttimeOffset = tmpDate[2].getTime() - (tmpDate[2].getTimezoneOffset()) * 60000;\n\t\t\t\t\t\tcurrentTime = new Date((_this.now(true)).getTime() + parseInt(tmpDate[1] + '1', 10) * timeOffset);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentTime = sDateTime ? Date.parseDate(sDateTime, options.format) : _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now();\n\t\t\t\t\t}\n\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.strToDate = function (sDate) {\n\t\t\t\t\tif (sDate && sDate instanceof Date && _this.isValidDate(sDate)) {\n\t\t\t\t\t\treturn sDate;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar currentTime = sDate ? Date.parseDate(sDate, options.formatDate) : _this.now(true);\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now(true);\n\t\t\t\t\t}\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.strtotime = function (sTime) {\n\t\t\t\t\tif (sTime && sTime instanceof Date && _this.isValidDate(sTime)) {\n\t\t\t\t\t\treturn sTime;\n\t\t\t\t\t}\n\t\t\t\t\tvar currentTime = sTime ? Date.parseDate(sTime, options.formatTime) : _this.now(true);\n\t\t\t\t\tif (!_this.isValidDate(currentTime)) {\n\t\t\t\t\t\tcurrentTime = _this.now(true);\n\t\t\t\t\t}\n\t\t\t\t\treturn currentTime;\n\t\t\t\t};\n\n\t\t\t\t_this.str = function () {\n\t\t\t\t\treturn _this.currentTime.dateFormat(options.format);\n\t\t\t\t};\n\t\t\t\t_this.currentTime = this.now();\n\t\t\t};\n\n\t\t\t_xdsoft_datetime = new XDSoft_datetime();\n\n\t\t\tapplyButton.on('click', function (e) {//pathbrite\n                e.preventDefault();\n                datetimepicker.data('changed', true);\n                _xdsoft_datetime.setCurrentTime(getCurrentValue());\n                input.val(_xdsoft_datetime.str());\n                datetimepicker.trigger('close.xdsoft');\n            });\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_today_button')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\t_xdsoft_datetime.setCurrentTime(0);\n\t\t\t\t\tdatetimepicker.trigger('afterOpen.xdsoft');\n\t\t\t\t}).on('dblclick.xdsoft', function () {\n\t\t\t\t\tvar currentDate = _xdsoft_datetime.getCurrentTime();\n\t\t\t\t\tcurrentDate = new Date(currentDate.getFullYear(),currentDate.getMonth(),currentDate.getDate());\n\t\t\t\t\tvar minDate = _xdsoft_datetime.strToDate(options.minDate);\n\t\t\t\t\tminDate = new Date(minDate.getFullYear(),minDate.getMonth(),minDate.getDate());\n\t\t\t\t\tif(currentDate < minDate) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tvar maxDate = _xdsoft_datetime.strToDate(options.maxDate);\n\t\t\t\t\tmaxDate = new Date(maxDate.getFullYear(),maxDate.getMonth(),maxDate.getDate());\n\t\t\t\t\tif(currentDate > maxDate) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t});\n\t\t\tmounth_picker\n\t\t\t\t.find('.xdsoft_prev,.xdsoft_next')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\ttimer = 0,\n\t\t\t\t\t\tstop = false;\n\n\t\t\t\t\t(function arguments_callee1(v) {\n\t\t\t\t\t\tif ($this.hasClass(options.next)) {\n\t\t\t\t\t\t\t_xdsoft_datetime.nextMonth();\n\t\t\t\t\t\t} else if ($this.hasClass(options.prev)) {\n\t\t\t\t\t\t\t_xdsoft_datetime.prevMonth();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.monthChangeSpinner) {\n\t\t\t\t\t\t\tif (!stop) {\n\t\t\t\t\t\t\t\ttimer = setTimeout(arguments_callee1, v || 100);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}(500));\n\n\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft', function arguments_callee2() {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t\t$([document.body, window]).off('mouseup.xdsoft', arguments_callee2);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\ttimepicker\n\t\t\t\t.find('.xdsoft_prev,.xdsoft_next')\n\t\t\t\t.on('mousedown.xdsoft', function () {\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\ttimer = 0,\n\t\t\t\t\t\tstop = false,\n\t\t\t\t\t\tperiod = 110;\n\t\t\t\t\t(function arguments_callee4(v) {\n\t\t\t\t\t\tvar pheight = timeboxparent[0].clientHeight,\n\t\t\t\t\t\t\theight = timebox[0].offsetHeight,\n\t\t\t\t\t\t\ttop = Math.abs(parseInt(timebox.css('marginTop'), 10));\n\t\t\t\t\t\tif ($this.hasClass(options.next) && (height - pheight) - options.timeHeightInTimePicker >= top) {\n\t\t\t\t\t\t\ttimebox.css('marginTop', '-' + (top + options.timeHeightInTimePicker) + 'px');\n\t\t\t\t\t\t} else if ($this.hasClass(options.prev) && top - options.timeHeightInTimePicker >= 0) {\n\t\t\t\t\t\t\ttimebox.css('marginTop', '-' + (top - options.timeHeightInTimePicker) + 'px');\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [Math.abs(parseInt(timebox.css('marginTop'), 10) / (height - pheight))]);\n\t\t\t\t\t\tperiod = (period > 10) ? 10 : period - 10;\n\t\t\t\t\t\tif (!stop) {\n\t\t\t\t\t\t\ttimer = setTimeout(arguments_callee4, v || period);\n\t\t\t\t\t\t}\n\t\t\t\t\t}(500));\n\t\t\t\t\t$([document.body, window]).on('mouseup.xdsoft', function arguments_callee5() {\n\t\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\t\tstop = true;\n\t\t\t\t\t\t$([document.body, window])\n\t\t\t\t\t\t\t.off('mouseup.xdsoft', arguments_callee5);\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\txchangeTimer = 0;\n\t\t\t// base handler - generating a calendar and timepicker\n\t\t\tdatetimepicker\n\t\t\t\t.on('xchange.xdsoft', function (event) {\n\t\t\t\t\tclearTimeout(xchangeTimer);\n\t\t\t\t\txchangeTimer = setTimeout(function () {\n\n\t\t\t\t\t\tif (_xdsoft_datetime.currentTime === undefined || _xdsoft_datetime.currentTime === null) {\n\t\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar table =\t'',\n\t\t\t\t\t\t\tstart = new Date(_xdsoft_datetime.currentTime.getFullYear(), _xdsoft_datetime.currentTime.getMonth(), 1, 12, 0, 0),\n\t\t\t\t\t\t\ti = 0,\n\t\t\t\t\t\t\tj,\n\t\t\t\t\t\t\ttoday = _xdsoft_datetime.now(),\n\t\t\t\t\t\t\tmaxDate = false,\n\t\t\t\t\t\t\tminDate = false,\n\t\t\t\t\t\t\thDate,\n\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\tm,\n\t\t\t\t\t\t\tw,\n\t\t\t\t\t\t\tclasses = [],\n\t\t\t\t\t\t\tcustomDateSettings,\n\t\t\t\t\t\t\tnewRow = true,\n\t\t\t\t\t\t\ttime = '',\n\t\t\t\t\t\t\th = '',\n\t\t\t\t\t\t\tline_time,\n\t\t\t\t\t\t\tdescription;\n\n\t\t\t\t\t\twhile (start.getDay() !== options.dayOfWeekStart) {\n\t\t\t\t\t\t\tstart.setDate(start.getDate() - 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable += '<table><thead><tr>';\n\n\t\t\t\t\t\tif (options.weeks) {\n\t\t\t\t\t\t\ttable += '<th></th>';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (j = 0; j < 7; j += 1) {\n\t\t\t\t\t\t\ttable += '<th>' + options.i18n[options.lang].dayOfWeek[(j + options.dayOfWeekStart) % 7] + '</th>';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttable += '</tr></thead>';\n\t\t\t\t\t\ttable += '<tbody>';\n\n\t\t\t\t\t\tif (options.maxDate !== false) {\n\t\t\t\t\t\t\tmaxDate = _xdsoft_datetime.strToDate(options.maxDate);\n\t\t\t\t\t\t\tmaxDate = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59, 59, 999);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.minDate !== false) {\n\t\t\t\t\t\t\tminDate = _xdsoft_datetime.strToDate(options.minDate);\n\t\t\t\t\t\t\tminDate = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twhile (i < _xdsoft_datetime.currentTime.countDaysInMonth() || start.getDay() !== options.dayOfWeekStart || _xdsoft_datetime.currentTime.getMonth() === start.getMonth()) {\n\t\t\t\t\t\t\tclasses = [];\n\t\t\t\t\t\t\ti += 1;\n\n\t\t\t\t\t\t\td = start.getDate();\n\t\t\t\t\t\t\ty = start.getFullYear();\n\t\t\t\t\t\t\tm = start.getMonth();\n\t\t\t\t\t\t\tw = _xdsoft_datetime.getWeekOfYear(start);\n\t\t\t\t\t\t\tdescription = '';\n\n\t\t\t\t\t\t\tclasses.push('xdsoft_date');\n\n\t\t\t\t\t\t\tif (options.beforeShowDay && $.isFunction(options.beforeShowDay.call)) {\n\t\t\t\t\t\t\t\tcustomDateSettings = options.beforeShowDay.call(datetimepicker, start);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcustomDateSettings = null;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ((maxDate !== false && start > maxDate) || (minDate !== false && start < minDate) || (customDateSettings && customDateSettings[0] === false)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t} else if (options.disabledDates.indexOf(start.dateFormat(options.formatDate)) !== -1) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (customDateSettings && customDateSettings[1] !== \"\") {\n\t\t\t\t\t\t\t\tclasses.push(customDateSettings[1]);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (_xdsoft_datetime.currentTime.getMonth() !== m) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_other_month');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ((options.defaultSelect || datetimepicker.data('changed')) && _xdsoft_datetime.currentTime.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_current');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (today.dateFormat(options.formatDate) === start.dateFormat(options.formatDate)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_today');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (start.getDay() === 0 || start.getDay() === 6 || options.weekends.indexOf(start.dateFormat(options.formatDate)) !== -1) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_weekend');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (options.highlightedDates[start.dateFormat(options.formatDate)] !== undefined) {\n\t\t\t\t\t\t\t\thDate = options.highlightedDates[start.dateFormat(options.formatDate)];\n\t\t\t\t\t\t\t\tclasses.push(hDate.style === undefined ? 'xdsoft_highlighted_default' : hDate.style);\n\t\t\t\t\t\t\t\tdescription = hDate.desc === undefined ? '' : hDate.desc;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (options.beforeShowDay && $.isFunction(options.beforeShowDay)) {\n\t\t\t\t\t\t\t\tclasses.push(options.beforeShowDay(start));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (newRow) {\n\t\t\t\t\t\t\t\ttable += '<tr>';\n\t\t\t\t\t\t\t\tnewRow = false;\n\t\t\t\t\t\t\t\tif (options.weeks) {\n\t\t\t\t\t\t\t\t\ttable += '<th>' + w + '</th>';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttable += '<td data-date=\"' + d + '\" data-month=\"' + m + '\" data-year=\"' + y + '\"' + ' class=\"xdsoft_date xdsoft_day_of_week' + start.getDay() + ' ' + classes.join(' ') + '\" title=\"' + description + '\">' +\n\t\t\t\t\t\t\t\t\t\t'<div>' + d + '</div>' +\n\t\t\t\t\t\t\t\t\t'</td>';\n\n\t\t\t\t\t\t\tif (start.getDay() === options.dayOfWeekStartPrev) {\n\t\t\t\t\t\t\t\ttable += '</tr>';\n\t\t\t\t\t\t\t\tnewRow = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstart.setDate(d + 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttable += '</tbody></table>';\n\n\t\t\t\t\t\tcalendar.html(table);\n\n\t\t\t\t\t\tmounth_picker.find('.xdsoft_label span').eq(0).text(options.i18n[options.lang].months[_xdsoft_datetime.currentTime.getMonth()]);\n\t\t\t\t\t\tmounth_picker.find('.xdsoft_label span').eq(1).text(_xdsoft_datetime.currentTime.getFullYear());\n\n\t\t\t\t\t\t// generate timebox\n\t\t\t\t\t\ttime = '';\n\t\t\t\t\t\th = '';\n\t\t\t\t\t\tm = '';\n\t\t\t\t\t\tline_time = function line_time(h, m) {\n\t\t\t\t\t\t\tvar now = _xdsoft_datetime.now(), optionDateTime, current_time;\n\t\t\t\t\t\t\tnow.setHours(h);\n\t\t\t\t\t\t\th = parseInt(now.getHours(), 10);\n\t\t\t\t\t\t\tnow.setMinutes(m);\n\t\t\t\t\t\t\tm = parseInt(now.getMinutes(), 10);\n\t\t\t\t\t\t\toptionDateTime = new Date(_xdsoft_datetime.currentTime);\n\t\t\t\t\t\t\toptionDateTime.setHours(h);\n\t\t\t\t\t\t\toptionDateTime.setMinutes(m);\n\t\t\t\t\t\t\tclasses = [];\n\t\t\t\t\t\t\tif ((options.minDateTime !== false && options.minDateTime > optionDateTime) || (options.maxTime !== false && _xdsoft_datetime.strtotime(options.maxTime).getTime() < now.getTime()) || (options.minTime !== false && _xdsoft_datetime.strtotime(options.minTime).getTime() > now.getTime())) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_disabled');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcurrent_time = new Date(_xdsoft_datetime.currentTime);\n\t\t\t\t\t\t\tcurrent_time.setHours(parseInt(_xdsoft_datetime.currentTime.getHours(), 10));\n\t\t\t\t\t\t\tcurrent_time.setMinutes(Math[options.roundTime](_xdsoft_datetime.currentTime.getMinutes() / options.step) * options.step);\n\n\t\t\t\t\t\t\tif ((options.initTime || options.defaultSelect || datetimepicker.data('changed')) && current_time.getHours() === parseInt(h, 10) && (options.step > 59 || current_time.getMinutes() === parseInt(m, 10))) {\n\t\t\t\t\t\t\t\tif (options.defaultSelect || datetimepicker.data('changed')) {\n\t\t\t\t\t\t\t\t\tclasses.push('xdsoft_current');\n\t\t\t\t\t\t\t\t} else if (options.initTime) {\n\t\t\t\t\t\t\t\t\tclasses.push('xdsoft_init_time');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (parseInt(today.getHours(), 10) === parseInt(h, 10) && parseInt(today.getMinutes(), 10) === parseInt(m, 10)) {\n\t\t\t\t\t\t\t\tclasses.push('xdsoft_today');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttime += '<div class=\"xdsoft_time ' + classes.join(' ') + '\" data-hour=\"' + h + '\" data-minute=\"' + m + '\">' + now.dateFormat(options.formatTime) + '</div>';\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!options.allowTimes || !$.isArray(options.allowTimes) || !options.allowTimes.length) {\n\t\t\t\t\t\t\tfor (i = 0, j = 0; i < (options.hours12 ? 12 : 24); i += 1) {\n\t\t\t\t\t\t\t\tfor (j = 0; j < 60; j += options.step) {\n\t\t\t\t\t\t\t\t\th = (i < 10 ? '0' : '') + i;\n\t\t\t\t\t\t\t\t\tm = (j < 10 ? '0' : '') + j;\n\t\t\t\t\t\t\t\t\tline_time(h, m);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = 0; i < options.allowTimes.length; i += 1) {\n\t\t\t\t\t\t\t\th = _xdsoft_datetime.strtotime(options.allowTimes[i]).getHours();\n\t\t\t\t\t\t\t\tm = _xdsoft_datetime.strtotime(options.allowTimes[i]).getMinutes();\n\t\t\t\t\t\t\t\tline_time(h, m);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttimebox.html(time);\n\n\t\t\t\t\t\topt = '';\n\t\t\t\t\t\ti = 0;\n\n\t\t\t\t\t\tfor (i = parseInt(options.yearStart, 10) + options.yearOffset; i <= parseInt(options.yearEnd, 10) + options.yearOffset; i += 1) {\n\t\t\t\t\t\t\topt += '<div class=\"xdsoft_option ' + (_xdsoft_datetime.currentTime.getFullYear() === i ? 'xdsoft_current' : '') + '\" data-value=\"' + i + '\">' + i + '</div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tyearselect.children().eq(0)\n\t\t\t\t\t\t\t\t\t\t\t\t.html(opt);\n\n\t\t\t\t\t\tfor (i = parseInt(options.monthStart, 10), opt = ''; i <= parseInt(options.monthEnd, 10); i += 1) {\n\t\t\t\t\t\t\topt += '<div class=\"xdsoft_option ' + (_xdsoft_datetime.currentTime.getMonth() === i ? 'xdsoft_current' : '') + '\" data-value=\"' + i + '\">' + options.i18n[options.lang].months[i] + '</div>';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmonthselect.children().eq(0).html(opt);\n\t\t\t\t\t\t$(datetimepicker)\n\t\t\t\t\t\t\t.trigger('generate.xdsoft');\n\t\t\t\t\t}, 10);\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t})\n\t\t\t\t.on('afterOpen.xdsoft', function () {\n\t\t\t\t\tif (options.timepicker) {\n\t\t\t\t\t\tvar classType, pheight, height, top;\n\t\t\t\t\t\tif (timebox.find('.xdsoft_current').length) {\n\t\t\t\t\t\t\tclassType = '.xdsoft_current';\n\t\t\t\t\t\t} else if (timebox.find('.xdsoft_init_time').length) {\n\t\t\t\t\t\t\tclassType = '.xdsoft_init_time';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (classType) {\n\t\t\t\t\t\t\tpheight = timeboxparent[0].clientHeight;\n\t\t\t\t\t\t\theight = timebox[0].offsetHeight;\n\t\t\t\t\t\t\ttop = timebox.find(classType).index() * options.timeHeightInTimePicker + 1;\n\t\t\t\t\t\t\tif ((height - pheight) < top) {\n\t\t\t\t\t\t\t\ttop = height - pheight;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [parseInt(top, 10) / (height - pheight)]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttimeboxparent.trigger('scroll_element.xdsoft_scroller', [0]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\ttimerclick = 0;\n\t\t\tcalendar\n\t\t\t\t.on('click.xdsoft', 'td', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();  // Prevents closing of Pop-ups, Modals and Flyouts in Bootstrap\n\t\t\t\t\ttimerclick += 1;\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\n\t\t\t\t\tif (currentTime === undefined || currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($this.hasClass('xdsoft_disabled')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentTime.setDate(1);\n\t\t\t\t\tcurrentTime.setFullYear($this.data('year'));\n\t\t\t\t\tcurrentTime.setMonth($this.data('month'));\n\t\t\t\t\tcurrentTime.setDate($this.data('date'));\n\n\t\t\t\t\tdatetimepicker.trigger('select.xdsoft', [currentTime]);\n\n\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\tif ((timerclick > 1 || (options.closeOnDateSelect === true || (options.closeOnDateSelect === 0 && !options.timepicker))) && !options.inline) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.onSelectDate &&\t$.isFunction(options.onSelectDate)) {\n\t\t\t\t\t\toptions.onSelectDate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);\n\t\t\t\t\t}\n\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\ttimerclick = 0;\n\t\t\t\t\t}, 200);\n\t\t\t\t});\n\n\t\t\ttimebox\n\t\t\t\t.on('click.xdsoft', 'div', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();\n\t\t\t\t\tvar $this = $(this),\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\n\t\t\t\t\tif (currentTime === undefined || currentTime === null) {\n\t\t\t\t\t\t_xdsoft_datetime.currentTime = _xdsoft_datetime.now();\n\t\t\t\t\t\tcurrentTime = _xdsoft_datetime.currentTime;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ($this.hasClass('xdsoft_disabled')) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tcurrentTime.setHours($this.data('hour'));\n\t\t\t\t\tcurrentTime.setMinutes($this.data('minute'));\n\t\t\t\t\tdatetimepicker.trigger('select.xdsoft', [currentTime]);\n\n\t\t\t\t\tdatetimepicker.data('input').val(_xdsoft_datetime.str());\n\n                    if (options.inline !== true && options.closeOnTimeSelect === true) {\n                        datetimepicker.trigger('close.xdsoft');\n                    }\n\n\t\t\t\t\tif (options.onSelectTime && $.isFunction(options.onSelectTime)) {\n\t\t\t\t\t\toptions.onSelectTime.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), xdevent);\n\t\t\t\t\t}\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t\tdatetimepicker.trigger('xchange.xdsoft');\n\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t});\n\n\n\t\t\tdatepicker\n\t\t\t\t.on('mousewheel.xdsoft', function (event) {\n\t\t\t\t\tif (!options.scrollMonth) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.deltaY < 0) {\n\t\t\t\t\t\t_xdsoft_datetime.nextMonth();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_xdsoft_datetime.prevMonth();\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t\tinput\n\t\t\t\t.on('mousewheel.xdsoft', function (event) {\n\t\t\t\t\tif (!options.scrollInput) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (!options.datepicker && options.timepicker) {\n\t\t\t\t\t\tcurrent_time_index = timebox.find('.xdsoft_current').length ? timebox.find('.xdsoft_current').eq(0).index() : 0;\n\t\t\t\t\t\tif (current_time_index + event.deltaY >= 0 && current_time_index + event.deltaY < timebox.children().length) {\n\t\t\t\t\t\t\tcurrent_time_index += event.deltaY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (timebox.children().eq(current_time_index).length) {\n\t\t\t\t\t\t\ttimebox.children().eq(current_time_index).trigger('mousedown');\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (options.datepicker && !options.timepicker) {\n\t\t\t\t\t\tdatepicker.trigger(event, [event.deltaY, event.deltaX, event.deltaY]);\n\t\t\t\t\t\tif (input.val) {\n\t\t\t\t\t\t\tinput.val(_xdsoft_datetime.str());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdatetimepicker.trigger('changedatetime.xdsoft');\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\tdatetimepicker\n\t\t\t\t.on('changedatetime.xdsoft', function (event) {\n\t\t\t\t\tif (options.onChangeDateTime && $.isFunction(options.onChangeDateTime)) {\n\t\t\t\t\t\tvar $input = datetimepicker.data('input');\n\t\t\t\t\t\toptions.onChangeDateTime.call(datetimepicker, _xdsoft_datetime.currentTime, $input, event);\n\t\t\t\t\t\tdelete options.value;\n\t\t\t\t\t\t$input.trigger('change');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('generate.xdsoft', function () {\n\t\t\t\t\tif (options.onGenerate && $.isFunction(options.onGenerate)) {\n\t\t\t\t\t\toptions.onGenerate.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'));\n\t\t\t\t\t}\n\t\t\t\t\tif (triggerAfterOpen) {\n\t\t\t\t\t\tdatetimepicker.trigger('afterOpen.xdsoft');\n\t\t\t\t\t\ttriggerAfterOpen = false;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('click.xdsoft', function (xdevent) {\n\t\t\t\t\txdevent.stopPropagation();\n\t\t\t\t});\n\n\t\t\tcurrent_time_index = 0;\n\n\t\t\tsetPos = function () {\n\t\t\t\tvar offset = datetimepicker.data('input').offset(), top = offset.top + datetimepicker.data('input')[0].offsetHeight - 1, left = offset.left, position = \"absolute\";\n\t\t\t\tif (options.fixed) {\n\t\t\t\t\ttop -= $(window).scrollTop();\n\t\t\t\t\tleft -= $(window).scrollLeft();\n\t\t\t\t\tposition = \"fixed\";\n\t\t\t\t} else {\n\t\t\t\t\tif (top + datetimepicker[0].offsetHeight > $(window).height() + $(window).scrollTop()) {\n\t\t\t\t\t\ttop = offset.top - datetimepicker[0].offsetHeight + 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (top < 0) {\n\t\t\t\t\t\ttop = 0;\n\t\t\t\t\t}\n\t\t\t\t\tif (left + datetimepicker[0].offsetWidth > $(window).width()) {\n\t\t\t\t\t\tleft = $(window).width() - datetimepicker[0].offsetWidth;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvar node = datetimepicker[0]\n\t\t\t\tdo {\n\t\t\t\t\tnode = node.parentNode;\n\t\t\t\t\tif(window.getComputedStyle(node).getPropertyValue('position') === 'relative' && $(window).width() >= node.offsetWidth) {\n\t\t\t\t\t\tleft = left - (($(window).width() - node.offsetWidth)/2)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t} while(node.nodeName != 'HTML')\n\t\t\t\tdatetimepicker.css({\n\t\t\t\t\tleft: left,\n\t\t\t\t\ttop: top,\n\t\t\t\t\tposition: position\n\t\t\t\t});\n\t\t\t};\n\t\t\tdatetimepicker\n\t\t\t\t.on('open.xdsoft', function (event) {\n\t\t\t\t\tvar onShow = true;\n\t\t\t\t\tif (options.onShow && $.isFunction(options.onShow)) {\n\t\t\t\t\t\tonShow = options.onShow.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);\n\t\t\t\t\t}\n\t\t\t\t\tif (onShow !== false) {\n\t\t\t\t\t\tdatetimepicker.show();\n\t\t\t\t\t\tsetPos();\n\t\t\t\t\t\t$(window)\n\t\t\t\t\t\t\t.off('resize.xdsoft', setPos)\n\t\t\t\t\t\t\t.on('resize.xdsoft', setPos);\n\n\t\t\t\t\t\tif (options.closeOnWithoutClick) {\n\t\t\t\t\t\t\t$([document.body, window]).on('mousedown.xdsoft', function arguments_callee6() {\n\t\t\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\t\t\t$([document.body, window]).off('mousedown.xdsoft', arguments_callee6);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.on('close.xdsoft', function (event) {\n\t\t\t\t\tvar onClose = true;\n\t\t\t\t\tmounth_picker\n\t\t\t\t\t\t.find('.xdsoft_month,.xdsoft_year')\n\t\t\t\t\t\t\t.find('.xdsoft_select')\n\t\t\t\t\t\t\t\t.hide();\n\t\t\t\t\tif (options.onClose && $.isFunction(options.onClose)) {\n\t\t\t\t\t\tonClose = options.onClose.call(datetimepicker, _xdsoft_datetime.currentTime, datetimepicker.data('input'), event);\n\t\t\t\t\t}\n\t\t\t\t\tif (onClose !== false && !options.opened && !options.inline) {\n\t\t\t\t\t\tdatetimepicker.hide();\n\t\t\t\t\t}\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t})\n\t\t\t\t.on('toggle.xdsoft', function (event) {\n\t\t\t\t\tif (datetimepicker.is(':visible')) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.data('input', input);\n\n\t\t\ttimer = 0;\n\t\t\ttimer1 = 0;\n\n\t\t\tdatetimepicker.data('xdsoft_datetime', _xdsoft_datetime);\n\t\t\tdatetimepicker.setOptions(options);\n\n\t\t\tfunction getCurrentValue() {\n\t\t\t\tvar ct = false, time;\n\n\t\t\t\tif (options.startDate) {\n\t\t\t\t\tct = _xdsoft_datetime.strToDate(options.startDate);\n\t\t\t\t} else {\n\t\t\t\t\tct = options.value || ((input && input.val && input.val()) ? input.val() : '');\n\t\t\t\t\tif (ct) {\n\t\t\t\t\t\tct = _xdsoft_datetime.strToDateTime(ct);\n\t\t\t\t\t} else if (options.defaultDate) {\n\t\t\t\t\t\tct = _xdsoft_datetime.strToDateTime(options.defaultDate);\n\t\t\t\t\t\tif (options.defaultTime) {\n\t\t\t\t\t\t\ttime = _xdsoft_datetime.strtotime(options.defaultTime);\n\t\t\t\t\t\t\tct.setHours(time.getHours());\n\t\t\t\t\t\t\tct.setMinutes(time.getMinutes());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (ct && _xdsoft_datetime.isValidDate(ct)) {\n\t\t\t\t\tdatetimepicker.data('changed', true);\n\t\t\t\t} else {\n\t\t\t\t\tct = '';\n\t\t\t\t}\n\n\t\t\t\treturn ct || 0;\n\t\t\t}\n\n\t\t\t_xdsoft_datetime.setCurrentTime(getCurrentValue());\n\n\t\t\tinput\n\t\t\t\t.data('xdsoft_datetimepicker', datetimepicker)\n\t\t\t\t.on('open.xdsoft focusin.xdsoft mousedown.xdsoft', function (event) {\n\t\t\t\t\tif (input.is(':disabled') || (input.data('xdsoft_datetimepicker').is(':visible') && options.closeOnInputClick)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\ttimer = setTimeout(function () {\n\t\t\t\t\t\tif (input.is(':disabled')) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttriggerAfterOpen = true;\n\t\t\t\t\t\t_xdsoft_datetime.setCurrentTime(getCurrentValue());\n\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t}, 100);\n\t\t\t\t})\n\t\t\t\t.on('keydown.xdsoft', function (event) {\n\t\t\t\t\tvar val = this.value, elementSelector,\n\t\t\t\t\t\tkey = event.which;\n\t\t\t\t\tif ([ENTER].indexOf(key) !== -1 && options.enterLikeTab) {\n\t\t\t\t\t\telementSelector = $(\"input:visible,textarea:visible\");\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\telementSelector.eq(elementSelector.index(this) + 1).focus();\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif ([TAB].indexOf(key) !== -1) {\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t};\n\t\tdestroyDateTimePicker = function (input) {\n\t\t\tvar datetimepicker = input.data('xdsoft_datetimepicker');\n\t\t\tif (datetimepicker) {\n\t\t\t\tdatetimepicker.data('xdsoft_datetime', null);\n\t\t\t\tdatetimepicker.remove();\n\t\t\t\tinput\n\t\t\t\t\t.data('xdsoft_datetimepicker', null)\n\t\t\t\t\t.off('.xdsoft');\n\t\t\t\t$(window).off('resize.xdsoft');\n\t\t\t\t$([window, document.body]).off('mousedown.xdsoft');\n\t\t\t\tif (input.unmousewheel) {\n\t\t\t\t\tinput.unmousewheel();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\t$(document)\n\t\t\t.off('keydown.xdsoftctrl keyup.xdsoftctrl')\n\t\t\t.on('keydown.xdsoftctrl', function (e) {\n\t\t\t\tif (e.keyCode === CTRLKEY) {\n\t\t\t\t\tctrlDown = true;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('keyup.xdsoftctrl', function (e) {\n\t\t\t\tif (e.keyCode === CTRLKEY) {\n\t\t\t\t\tctrlDown = false;\n\t\t\t\t}\n\t\t\t});\n\t\treturn this.each(function () {\n\t\t\tvar datetimepicker = $(this).data('xdsoft_datetimepicker'), $input;\n\t\t\tif (datetimepicker) {\n\t\t\t\tif ($.type(opt) === 'string') {\n\t\t\t\t\tswitch (opt) {\n\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t$(this).select().focus();\n\t\t\t\t\t\tdatetimepicker.trigger('open.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\tdatetimepicker.trigger('close.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'toggle':\n\t\t\t\t\t\tdatetimepicker.trigger('toggle.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'destroy':\n\t\t\t\t\t\tdestroyDateTimePicker($(this));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'reset':\n\t\t\t\t\t\tthis.value = this.defaultValue;\n\t\t\t\t\t\tif (!this.value || !datetimepicker.data('xdsoft_datetime').isValidDate(Date.parseDate(this.value, options.format))) {\n\t\t\t\t\t\t\tdatetimepicker.data('changed', false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdatetimepicker.data('xdsoft_datetime').setCurrentTime(this.value);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'validate':\n\t\t\t\t\t\t$input = datetimepicker.data('input');\n\t\t\t\t\t\t$input.trigger('blur.xdsoft');\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdatetimepicker\n\t\t\t\t\t\t.setOptions(opt);\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif ($.type(opt) !== 'string') {\n\t\t\t\tif (!options.lazyInit || options.open || options.inline) {\n\t\t\t\t\tcreateDateTimePicker($(this));\n\t\t\t\t} else {\n\t\t\t\t\tlazyInit($(this));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t};\n\t$.fn.datetimepicker.defaults = default_options;\n}(jQuery));\n\nfunction HighlightedDate(date, desc, style) {\n\t\"use strict\";\n\tthis.date = date;\n\tthis.desc = desc;\n\tthis.style = style;\n}\n\n(function () {\n\n/*! Copyright (c) 2013 Brandon Aaron (http://brandon.aaron.sh)\n * Licensed under the MIT License (LICENSE.txt).\n *\n * Version: 3.1.12\n *\n * Requires: jQuery 1.2.2+\n */\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});\n\n// Parse and Format Library\n//http://www.xaprb.com/blog/2005/12/12/javascript-closures-for-runtime-efficiency/\n/*\n * Copyright (C) 2004 Baron Schwartz <baron at sequent dot org>\n *\n * This program is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as published by the\n * Free Software Foundation, version 2.1.\n *\n * This program is distributed in the hope that it will be useful, but WITHOUT\n * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\n * FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more\n * details.\n */\nDate.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(b){if(b==\"unixtime\"){return parseInt(this.getTime()/1000);}if(Date.formatFunctions[b]==null){Date.createNewFormat(b);}var a=Date.formatFunctions[b];return this[a]();};Date.createNewFormat=function(format){var funcName=\"format\"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var codePrefix=\"Date.prototype.\"+funcName+\" = function() {return \";var code=\"\";var special=false;var ch=\"\";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch==\"\\\\\"){special=true;}else{if(special){special=false;code+=\"'\"+String.escape(ch)+\"' + \";}else{code+=Date.getFormatCode(ch);}}}if(code.length==0){code=\"\\\"\\\"\";}else{code=code.substring(0,code.length-3);}eval(codePrefix+code+\";}\");};Date.getFormatCode=function(a){switch(a){case\"d\":return\"String.leftPad(this.getDate(), 2, '0') + \";case\"D\":return\"Date.dayNames[this.getDay()].substring(0, 3) + \";case\"j\":return\"this.getDate() + \";case\"l\":return\"Date.dayNames[this.getDay()] + \";case\"S\":return\"this.getSuffix() + \";case\"w\":return\"this.getDay() + \";case\"z\":return\"this.getDayOfYear() + \";case\"W\":return\"this.getWeekOfYear() + \";case\"F\":return\"Date.monthNames[this.getMonth()] + \";case\"m\":return\"String.leftPad(this.getMonth() + 1, 2, '0') + \";case\"M\":return\"Date.monthNames[this.getMonth()].substring(0, 3) + \";case\"n\":return\"(this.getMonth() + 1) + \";case\"t\":return\"this.getDaysInMonth() + \";case\"L\":return\"(this.isLeapYear() ? 1 : 0) + \";case\"Y\":return\"this.getFullYear() + \";case\"y\":return\"('' + this.getFullYear()).substring(2, 4) + \";case\"a\":return\"(this.getHours() < 12 ? 'am' : 'pm') + \";case\"A\":return\"(this.getHours() < 12 ? 'AM' : 'PM') + \";case\"g\":return\"((this.getHours() %12) ? this.getHours() % 12 : 12) + \";case\"G\":return\"this.getHours() + \";case\"h\":return\"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + \";case\"H\":return\"String.leftPad(this.getHours(), 2, '0') + \";case\"i\":return\"String.leftPad(this.getMinutes(), 2, '0') + \";case\"s\":return\"String.leftPad(this.getSeconds(), 2, '0') + \";case\"O\":return\"this.getGMTOffset() + \";case\"T\":return\"this.getTimezone() + \";case\"Z\":return\"(this.getTimezoneOffset() * -60) + \";default:return\"'\"+String.escape(a)+\"' + \";}};Date.parseDate=function(a,c){if(c==\"unixtime\"){return new Date(!isNaN(parseInt(a))?parseInt(a)*1000:0);}if(Date.parseFunctions[c]==null){Date.createParser(c);}var b=Date.parseFunctions[c];return Date[b](a);};Date.createParser=function(format){var funcName=\"parse\"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code=\"Date.\"+funcName+\" = function(input) {\\nvar y = -1, m = -1, d = -1, h = -1, i = -1, s = -1, z = -1;\\nvar d = new Date();\\ny = d.getFullYear();\\nm = d.getMonth();\\nd = d.getDate();\\nvar results = input.match(Date.parseRegexes[\"+regexNum+\"]);\\nif (results && results.length > 0) {\";var regex=\"\";var special=false;var ch=\"\";for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch==\"\\\\\"){special=true;}else{if(special){special=false;regex+=String.escape(ch);}else{obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}}}code+=\"if (y > 0 && z > 0){\\nvar doyDate = new Date(y,0);\\ndoyDate.setDate(z);\\nm = doyDate.getMonth();\\nd = doyDate.getDate();\\n}\";code+=\"if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\\n{return new Date(y, m, d, h, i, s);}\\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\\n{return new Date(y, m, d, h, i);}\\nelse if (y > 0 && m >= 0 && d > 0 && h >= 0)\\n{return new Date(y, m, d, h);}\\nelse if (y > 0 && m >= 0 && d > 0)\\n{return new Date(y, m, d);}\\nelse if (y > 0 && m >= 0)\\n{return new Date(y, m);}\\nelse if (y > 0)\\n{return new Date(y);}\\n}return null;}\";Date.parseRegexes[regexNum]=new RegExp(\"^\"+regex+\"$\",'i');eval(code);};Date.formatCodeToRegex=function(b,a){switch(b){case\"D\":return{g:0,c:null,s:\"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\"};case\"j\":case\"d\":return{g:1,c:\"d = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,2})\"};case\"l\":return{g:0,c:null,s:\"(?:\"+Date.dayNames.join(\"|\")+\")\"};case\"S\":return{g:0,c:null,s:\"(?:st|nd|rd|th)\"};case\"w\":return{g:0,c:null,s:\"\\\\d\"};case\"z\":return{g:1,c:\"z = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,3})\"};case\"W\":return{g:0,c:null,s:\"(?:\\\\d{2})\"};case\"F\":return{g:1,c:\"m = parseInt(Date.monthNumbers[results[\"+a+\"].substring(0, 3)], 10);\\n\",s:\"(\"+Date.monthNames.join(\"|\")+\")\"};case\"M\":return{g:1,c:\"m = parseInt(Date.monthNumbers[results[\"+a+\"]], 10);\\n\",s:\"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\"};case\"n\":case\"m\":return{g:1,c:\"m = parseInt(results[\"+a+\"], 10) - 1;\\n\",s:\"(\\\\d{1,2})\"};case\"t\":return{g:0,c:null,s:\"\\\\d{1,2}\"};case\"L\":return{g:0,c:null,s:\"(?:1|0)\"};case\"Y\":return{g:1,c:\"y = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{4})\"};case\"y\":return{g:1,c:\"var ty = parseInt(results[\"+a+\"], 10);\\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\\n\",s:\"(\\\\d{1,2})\"};case\"a\":return{g:1,c:\"if (results[\"+a+\"] == 'am') {\\nif (h == 12) { h = 0; }\\n} else { if (h < 12) { h += 12; }}\",s:\"(am|pm)\"};case\"A\":return{g:1,c:\"if (results[\"+a+\"] == 'AM') {\\nif (h == 12) { h = 0; }\\n} else { if (h < 12) { h += 12; }}\",s:\"(AM|PM)\"};case\"g\":case\"G\":case\"h\":case\"H\":return{g:1,c:\"h = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{1,2})\"};case\"i\":return{g:1,c:\"i = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{2})\"};case\"s\":return{g:1,c:\"s = parseInt(results[\"+a+\"], 10);\\n\",s:\"(\\\\d{2})\"};case\"O\":return{g:0,c:null,s:\"[+-]\\\\d{4}\"};case\"T\":return{g:0,c:null,s:\"[A-Z]{3}\"};case\"Z\":return{g:0,c:null,s:\"[+-]\\\\d{1,5}\"};default:return{g:0,c:null,s:String.escape(b)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,\"$1\").replace(/^.*?\\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\\)$/,\"$1$2$3\");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?\"-\":\"+\")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,\"0\")+String.leftPad(Math.abs(this.getTimezoneOffset())%60,2,\"0\");};Date.prototype.getDayOfYear=function(){var a=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var b=0;b<this.getMonth();++b){a+=Date.daysInMonth[b];}return a+this.getDate();};Date.prototype.getWeekOfYear=function(){var b=this.getDayOfYear()+(4-this.getDay());var a=new Date(this.getFullYear(),0,1);var c=(7-a.getDay()+4);return String.leftPad(Math.ceil((b-c)/7)+1,2,\"0\");};Date.prototype.isLeapYear=function(){var a=this.getFullYear();return((a&3)==0&&(a%100||(a%400==0&&a)));};Date.prototype.getFirstDayOfMonth=function(){var a=(this.getDay()-(this.getDate()-1))%7;return(a<0)?(a+7):a;};Date.prototype.getLastDayOfMonth=function(){var a=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(a<0)?(a+7):a;};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return\"st\";case 2:case 22:return\"nd\";case 3:case 23:return\"rd\";default:return\"th\";}};String.escape=function(a){return a.replace(/('|\\\\)/g,\"\\\\$1\");};String.leftPad=function(d,b,c){var a=new String(d);if(c==null){c=\" \";}while(a.length<b){a=c+a;}return a;};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];Date.dayNames=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.patterns={ISO8601LongPattern:\"Y-m-d H:i:s\",ISO8601ShortPattern:\"Y-m-d\",ShortDatePattern:\"n/j/Y\",LongDatePattern:\"l, F d, Y\",FullDateTimePattern:\"l, F d, Y g:i:s A\",MonthDayPattern:\"F d\",ShortTimePattern:\"g:i A\",LongTimePattern:\"g:i:s A\",SortableDateTimePattern:\"Y-m-d\\\\TH:i:s\",UniversalSortableDateTimePattern:\"Y-m-d H:i:sO\",YearMonthPattern:\"F, Y\"};\n}());\n"
  },
  {
    "path": "silk/static/silk/lib/sortable.js",
    "content": "/*\n  SortTable\n  version 2\n  7th April 2007\n  Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/\n\n  Instructions:\n  Download this file\n  Add <script src=\"sorttable.js\"></script> to your HTML\n  Add class=\"sortable\" to any table you'd like to make sortable\n  Click on the headers to sort\n\n  Thanks to many, many people for contributions and suggestions.\n  Licenced as X11: http://www.kryogenix.org/code/browser/licence.html\n  This basically means: do what you want with it.\n*/\n\n\nvar stIsIE = /*@cc_on!@*/false;\n\nvar up = '&nbsp;&#x25B4;';\nvar down = '&nbsp;&#x25BE;';\n\nsorttable = {\n  init: function() {\n    // quit if this function has already been called\n    if (arguments.callee.done) return;\n    // flag this function so we don't do the same thing twice\n    arguments.callee.done = true;\n    // kill the timer\n    if (_timer) clearInterval(_timer);\n\n    if (!document.createElement || !document.getElementsByTagName) return;\n\n    sorttable.DATE_RE = /^(\\d\\d?)[\\/\\.-](\\d\\d?)[\\/\\.-]((\\d\\d)?\\d\\d)$/;\n\n    forEach(document.getElementsByTagName('table'), function(table) {\n      if (table.className.search(/\\bsortable\\b/) != -1) {\n        sorttable.makeSortable(table);\n      }\n    });\n\n  },\n\n  makeSortable: function(table) {\n    if (table.getElementsByTagName('thead').length == 0) {\n      // table doesn't have a tHead. Since it should have, create one and\n      // put the first table row in it.\n      the = document.createElement('thead');\n      the.appendChild(table.rows[0]);\n      table.insertBefore(the,table.firstChild);\n    }\n    // Safari doesn't support table.tHead, sigh\n    if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];\n\n    if (table.tHead.rows.length != 1) return; // can't cope with two header rows\n\n    // Sorttable v1 put rows with a class of \"sortbottom\" at the bottom (as\n    // \"total\" rows, for example). This is B&R, since what you're supposed\n    // to do is put them in a tfoot. So, if there are sortbottom rows,\n    // for backwards compatibility, move them to tfoot (creating it if needed).\n    sortbottomrows = [];\n    for (var i=0; i<table.rows.length; i++) {\n      if (table.rows[i].className.search(/\\bsortbottom\\b/) != -1) {\n        sortbottomrows[sortbottomrows.length] = table.rows[i];\n      }\n    }\n    if (sortbottomrows) {\n      if (table.tFoot == null) {\n        // table doesn't have a tfoot. Create one.\n        tfo = document.createElement('tfoot');\n        table.appendChild(tfo);\n      }\n      for (var i=0; i<sortbottomrows.length; i++) {\n        tfo.appendChild(sortbottomrows[i]);\n      }\n      delete sortbottomrows;\n    }\n\n    // work through each column and calculate its type\n    headrow = table.tHead.rows[0].cells;\n    for (var i=0; i<headrow.length; i++) {\n      // manually override the type with a sorttable_type attribute\n      if (!headrow[i].className.match(/\\bsorttable_nosort\\b/)) { // skip this col\n        mtch = headrow[i].className.match(/\\bsorttable_([a-z0-9]+)\\b/);\n        if (mtch) { override = mtch[1]; }\n\t      if (mtch && typeof sorttable[\"sort_\"+override] == 'function') {\n\t        headrow[i].sorttable_sortfunction = sorttable[\"sort_\"+override];\n\t      } else {\n\t        headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);\n\t      }\n\t      // make it clickable to sort\n\t      headrow[i].sorttable_columnindex = i;\n\t      headrow[i].sorttable_tbody = table.tBodies[0];\n\t      dean_addEvent(headrow[i],\"click\", sorttable.innerSortFunction = function(e) {\n\n          if (this.className.search(/\\bsorttable_sorted\\b/) != -1) {\n            // if we're already sorted by this column, just\n            // reverse the table, which is quicker\n            sorttable.reverse(this.sorttable_tbody);\n            this.className = this.className.replace('sorttable_sorted',\n                                                    'sorttable_sorted_reverse');\n            this.removeChild(document.getElementById('sorttable_sortfwdind'));\n            sortrevind = document.createElement('span');\n            sortrevind.id = \"sorttable_sortrevind\";\n            sortrevind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">5</font>' : down;\n            this.appendChild(sortrevind);\n            return;\n          }\n          if (this.className.search(/\\bsorttable_sorted_reverse\\b/) != -1) {\n            // if we're already sorted by this column in reverse, just\n            // re-reverse the table, which is quicker\n            sorttable.reverse(this.sorttable_tbody);\n            this.className = this.className.replace('sorttable_sorted_reverse',\n                                                    'sorttable_sorted');\n            this.removeChild(document.getElementById('sorttable_sortrevind'));\n            sortfwdind = document.createElement('span');\n            sortfwdind.id = \"sorttable_sortfwdind\";\n            sortfwdind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">6</font>' : up;\n            this.appendChild(sortfwdind);\n            return;\n          }\n\n          // remove sorttable_sorted classes\n          theadrow = this.parentNode;\n          forEach(theadrow.childNodes, function(cell) {\n            if (cell.nodeType == 1) { // an element\n              cell.className = cell.className.replace('sorttable_sorted_reverse','');\n              cell.className = cell.className.replace('sorttable_sorted','');\n            }\n          });\n          sortfwdind = document.getElementById('sorttable_sortfwdind');\n          if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }\n          sortrevind = document.getElementById('sorttable_sortrevind');\n          if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }\n\n          this.className += ' sorttable_sorted';\n          sortfwdind = document.createElement('span');\n          sortfwdind.id = \"sorttable_sortfwdind\";\n          sortfwdind.innerHTML = stIsIE ? '&nbsp<font face=\"webdings\">6</font>' : up;\n          this.appendChild(sortfwdind);\n\n\t        // build an array to sort. This is a Schwartzian transform thing,\n\t        // i.e., we \"decorate\" each row with the actual sort key,\n\t        // sort based on the sort keys, and then put the rows back in order\n\t        // which is a lot faster because you only do getInnerText once per row\n\t        row_array = [];\n\t        col = this.sorttable_columnindex;\n\t        rows = this.sorttable_tbody.rows;\n\t        for (var j=0; j<rows.length; j++) {\n\t          row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];\n\t        }\n\t        /* If you want a stable sort, uncomment the following line */\n\t        //sorttable.shaker_sort(row_array, this.sorttable_sortfunction);\n\t        /* and comment out this one */\n\t        row_array.sort(this.sorttable_sortfunction);\n\n\t        tb = this.sorttable_tbody;\n\t        for (var j=0; j<row_array.length; j++) {\n\t          tb.appendChild(row_array[j][1]);\n\t        }\n\n\t        delete row_array;\n\t      });\n\t    }\n    }\n  },\n\n  guessType: function(table, column) {\n    // guess the type of a column based on its first non-blank row\n    sortfn = sorttable.sort_alpha;\n    for (var i=0; i<table.tBodies[0].rows.length; i++) {\n      text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);\n      if (text != '') {\n        if (text.match(/^-?[£$¤]?[\\d,.]+%?$/)) {\n          return sorttable.sort_numeric;\n        }\n        // check for a date: dd/mm/yyyy or dd/mm/yy\n        // can have / or . or - as separator\n        // can be mm/dd as well\n        possdate = text.match(sorttable.DATE_RE)\n        if (possdate) {\n          // looks like a date\n          first = parseInt(possdate[1]);\n          second = parseInt(possdate[2]);\n          if (first > 12) {\n            // definitely dd/mm\n            return sorttable.sort_ddmm;\n          } else if (second > 12) {\n            return sorttable.sort_mmdd;\n          } else {\n            // looks like a date, but we can't tell which, so assume\n            // that it's dd/mm (English imperialism!) and keep looking\n            sortfn = sorttable.sort_ddmm;\n          }\n        }\n      }\n    }\n    return sortfn;\n  },\n\n  getInnerText: function(node) {\n    // gets the text we want to use for sorting for a cell.\n    // strips leading and trailing whitespace.\n    // this is *not* a generic getInnerText function; it's special to sorttable.\n    // for example, you can override the cell text with a customkey attribute.\n    // it also gets .value for <input> fields.\n\n    if (!node) return \"\";\n\n    hasInputs = (typeof node.getElementsByTagName == 'function') &&\n                 node.getElementsByTagName('input').length;\n\n    if (node.getAttribute(\"sorttable_customkey\") != null) {\n      return node.getAttribute(\"sorttable_customkey\");\n    }\n    else if (typeof node.textContent != 'undefined' && !hasInputs) {\n      return node.textContent.replace(/^\\s+|\\s+$/g, '');\n    }\n    else if (typeof node.innerText != 'undefined' && !hasInputs) {\n      return node.innerText.replace(/^\\s+|\\s+$/g, '');\n    }\n    else if (typeof node.text != 'undefined' && !hasInputs) {\n      return node.text.replace(/^\\s+|\\s+$/g, '');\n    }\n    else {\n      switch (node.nodeType) {\n        case 3:\n          if (node.nodeName.toLowerCase() == 'input') {\n            return node.value.replace(/^\\s+|\\s+$/g, '');\n          }\n        case 4:\n          return node.nodeValue.replace(/^\\s+|\\s+$/g, '');\n          break;\n        case 1:\n        case 11:\n          var innerText = '';\n          for (var i = 0; i < node.childNodes.length; i++) {\n            innerText += sorttable.getInnerText(node.childNodes[i]);\n          }\n          return innerText.replace(/^\\s+|\\s+$/g, '');\n          break;\n        default:\n          return '';\n      }\n    }\n  },\n\n  reverse: function(tbody) {\n    // reverse the rows in a tbody\n    newrows = [];\n    for (var i=0; i<tbody.rows.length; i++) {\n      newrows[newrows.length] = tbody.rows[i];\n    }\n    for (var i=newrows.length-1; i>=0; i--) {\n       tbody.appendChild(newrows[i]);\n    }\n    delete newrows;\n  },\n\n  /* sort functions\n     each sort function takes two parameters, a and b\n     you are comparing a[0] and b[0] */\n  sort_numeric: function(a,b) {\n    aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));\n    if (isNaN(aa)) aa = 0;\n    bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));\n    if (isNaN(bb)) bb = 0;\n    return aa-bb;\n  },\n  sort_alpha: function(a,b) {\n    if (a[0]==b[0]) return 0;\n    if (a[0]<b[0]) return -1;\n    return 1;\n  },\n  sort_ddmm: function(a,b) {\n    mtch = a[0].match(sorttable.DATE_RE);\n    y = mtch[3]; m = mtch[2]; d = mtch[1];\n    if (m.length == 1) m = '0'+m;\n    if (d.length == 1) d = '0'+d;\n    dt1 = y+m+d;\n    mtch = b[0].match(sorttable.DATE_RE);\n    y = mtch[3]; m = mtch[2]; d = mtch[1];\n    if (m.length == 1) m = '0'+m;\n    if (d.length == 1) d = '0'+d;\n    dt2 = y+m+d;\n    if (dt1==dt2) return 0;\n    if (dt1<dt2) return -1;\n    return 1;\n  },\n  sort_mmdd: function(a,b) {\n    mtch = a[0].match(sorttable.DATE_RE);\n    y = mtch[3]; d = mtch[2]; m = mtch[1];\n    if (m.length == 1) m = '0'+m;\n    if (d.length == 1) d = '0'+d;\n    dt1 = y+m+d;\n    mtch = b[0].match(sorttable.DATE_RE);\n    y = mtch[3]; d = mtch[2]; m = mtch[1];\n    if (m.length == 1) m = '0'+m;\n    if (d.length == 1) d = '0'+d;\n    dt2 = y+m+d;\n    if (dt1==dt2) return 0;\n    if (dt1<dt2) return -1;\n    return 1;\n  },\n\n  shaker_sort: function(list, comp_func) {\n    // A stable sort function to allow multi-level sorting of data\n    // see: http://en.wikipedia.org/wiki/Cocktail_sort\n    // thanks to Joseph Nahmias\n    var b = 0;\n    var t = list.length - 1;\n    var swap = true;\n\n    while(swap) {\n        swap = false;\n        for(var i = b; i < t; ++i) {\n            if ( comp_func(list[i], list[i+1]) > 0 ) {\n                var q = list[i]; list[i] = list[i+1]; list[i+1] = q;\n                swap = true;\n            }\n        } // for\n        t--;\n\n        if (!swap) break;\n\n        for(var i = t; i > b; --i) {\n            if ( comp_func(list[i], list[i-1]) < 0 ) {\n                var q = list[i]; list[i] = list[i-1]; list[i-1] = q;\n                swap = true;\n            }\n        } // for\n        b++;\n\n    } // while(swap)\n  }\n}\n\n/* ******************************************************************\n   Supporting functions: bundled here to avoid depending on a library\n   ****************************************************************** */\n\n// Dean Edwards/Matthias Miller/John Resig\n\n/* for Mozilla/Opera9 */\nif (document.addEventListener) {\n    document.addEventListener(\"DOMContentLoaded\", sorttable.init, false);\n}\n\n/* for Internet Explorer */\n/*@cc_on @*/\n/*@if (@_win32)\n    document.write(\"<script id=__ie_onload defer src=javascript:void(0)><\\/script>\");\n    var script = document.getElementById(\"__ie_onload\");\n    script.onreadystatechange = function() {\n        if (this.readyState == \"complete\") {\n            sorttable.init(); // call the onload handler\n        }\n    };\n/*@end @*/\n\n/* for Safari */\nif (/WebKit/i.test(navigator.userAgent)) { // sniff\n    var _timer = setInterval(function() {\n        if (/loaded|complete/.test(document.readyState)) {\n            sorttable.init(); // call the onload handler\n        }\n    }, 10);\n}\n\n/* for other browsers */\nwindow.onload = sorttable.init;\n\n// written by Dean Edwards, 2005\n// with input from Tino Zijdel, Matthias Miller, Diego Perini\n\n// http://dean.edwards.name/weblog/2005/10/add-event/\n\nfunction dean_addEvent(element, type, handler) {\n\tif (element.addEventListener) {\n\t\telement.addEventListener(type, handler, false);\n\t} else {\n\t\t// assign each event handler a unique ID\n\t\tif (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;\n\t\t// create a hash table of event types for the element\n\t\tif (!element.events) element.events = {};\n\t\t// create a hash table of event handlers for each element/event pair\n\t\tvar handlers = element.events[type];\n\t\tif (!handlers) {\n\t\t\thandlers = element.events[type] = {};\n\t\t\t// store the existing event handler (if there is one)\n\t\t\tif (element[\"on\" + type]) {\n\t\t\t\thandlers[0] = element[\"on\" + type];\n\t\t\t}\n\t\t}\n\t\t// store the event handler in the hash table\n\t\thandlers[handler.$$guid] = handler;\n\t\t// assign a global event handler to do all the work\n\t\telement[\"on\" + type] = handleEvent;\n\t}\n};\n// a counter used to create unique IDs\ndean_addEvent.guid = 1;\n\nfunction removeEvent(element, type, handler) {\n\tif (element.removeEventListener) {\n\t\telement.removeEventListener(type, handler, false);\n\t} else {\n\t\t// delete the event handler from the hash table\n\t\tif (element.events && element.events[type]) {\n\t\t\tdelete element.events[type][handler.$$guid];\n\t\t}\n\t}\n};\n\nfunction handleEvent(event) {\n\tvar returnValue = true;\n\t// grab the event object (IE uses a global event object)\n\tevent = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);\n\t// get a reference to the hash table of event handlers\n\tvar handlers = this.events[event.type];\n\t// execute each event handler\n\tfor (var i in handlers) {\n\t\tthis.$$handleEvent = handlers[i];\n\t\tif (this.$$handleEvent(event) === false) {\n\t\t\treturnValue = false;\n\t\t}\n\t}\n\treturn returnValue;\n};\n\nfunction fixEvent(event) {\n\t// add W3C standard event methods\n\tevent.preventDefault = fixEvent.preventDefault;\n\tevent.stopPropagation = fixEvent.stopPropagation;\n\treturn event;\n};\nfixEvent.preventDefault = function() {\n\tthis.returnValue = false;\n};\nfixEvent.stopPropagation = function() {\n  this.cancelBubble = true;\n}\n\n// Dean's forEach: http://dean.edwards.name/base/forEach.js\n/*\n\tforEach, version 1.0\n\tCopyright 2006, Dean Edwards\n\tLicense: http://www.opensource.org/licenses/mit-license.php\n*/\n\n// array-like enumeration\nif (!Array.forEach) { // mozilla already supports this\n\tArray.forEach = function(array, block, context) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tblock.call(context, array[i], i, array);\n\t\t}\n\t};\n}\n\n// generic enumeration\nFunction.prototype.forEach = function(object, block, context) {\n\tfor (var key in object) {\n\t\tif (typeof this.prototype[key] == \"undefined\") {\n\t\t\tblock.call(context, object[key], key, object);\n\t\t}\n\t}\n};\n\n// character enumeration\nString.forEach = function(string, block, context) {\n\tArray.forEach(string.split(\"\"), function(chr, index) {\n\t\tblock.call(context, chr, index, string);\n\t});\n};\n\n// globally resolve forEach enumeration\nvar forEach = function(object, block, context) {\n\tif (object) {\n\t\tvar resolve = Object; // default\n\t\tif (object instanceof Function) {\n\t\t\t// functions have a \"length\" property\n\t\t\tresolve = Function;\n\t\t} else if (object.forEach instanceof Function) {\n\t\t\t// the object implements a custom forEach method so use that\n\t\t\tobject.forEach(block, context);\n\t\t\treturn;\n\t\t} else if (typeof object == \"string\") {\n\t\t\t// the object is a string\n\t\t\tresolve = String;\n\t\t} else if (typeof object.length == \"number\") {\n\t\t\t// the object is array-like\n\t\t\tresolve = Array;\n\t\t}\n\t\tresolve.forEach(object, block, context);\n\t}\n};\n"
  },
  {
    "path": "silk/static/silk/lib/viz-lite.js",
    "content": "/*\nViz.js 1.7.1 (Graphviz 2.40.1, Emscripten 1.37.9)\nCopyright (c) 2014-2017 Michael Daines\nLicensed under MIT license\n\nThis distribution contains other software in object code form:\n\nGraphviz\nLicensed under Eclipse Public License - v 1.0\nhttp://www.graphviz.org\n\nzlib\nCopyright (C) 1995-2013 Jean-loup Gailly and Mark Adler\nhttp://www.zlib.net/zlib_license.html\n*/\n(function(global) {\nvar Module = function(Module) {\n  Module = Module || {};\n  var Module = Module;\n\nvar Module;if(!Module)Module=(typeof Module!==\"undefined\"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module[\"ENVIRONMENT\"]){if(Module[\"ENVIRONMENT\"]===\"WEB\"){ENVIRONMENT_IS_WEB=true}else if(Module[\"ENVIRONMENT\"]===\"WORKER\"){ENVIRONMENT_IS_WORKER=true}else if(Module[\"ENVIRONMENT\"]===\"NODE\"){ENVIRONMENT_IS_NODE=true}else if(Module[\"ENVIRONMENT\"]===\"SHELL\"){ENVIRONMENT_IS_SHELL=true}else{throw new Error(\"The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.\")}}else{ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof require===\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module[\"print\"])Module[\"print\"]=console.log;if(!Module[\"printErr\"])Module[\"printErr\"]=console.warn;var nodeFS;var nodePath;Module[\"read\"]=function read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);var ret=nodeFS[\"readFileSync\"](filename);return binary?ret:ret.toString()};Module[\"readBinary\"]=function readBinary(filename){var ret=Module[\"read\"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module[\"load\"]=function load(f){globalEval(read(f))};if(!Module[\"thisProgram\"]){if(process[\"argv\"].length>1){Module[\"thisProgram\"]=process[\"argv\"][1].replace(/\\\\/g,\"/\")}else{Module[\"thisProgram\"]=\"unknown-program\"}}Module[\"arguments\"]=process[\"argv\"].slice(2);if(typeof module!==\"undefined\"){module[\"exports\"]=Module}process[\"on\"](\"uncaughtException\",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module[\"inspect\"]=(function(){return\"[Emscripten Module object]\"})}else if(ENVIRONMENT_IS_SHELL){if(!Module[\"print\"])Module[\"print\"]=print;if(typeof printErr!=\"undefined\")Module[\"printErr\"]=printErr;if(typeof read!=\"undefined\"){Module[\"read\"]=read}else{Module[\"read\"]=function read(){throw\"no read() available\"}}Module[\"readBinary\"]=function readBinary(f){if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}var data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){Module[\"arguments\"]=scriptArgs}else if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof quit===\"function\"){Module[\"quit\"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module[\"read\"]=function read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module[\"readBinary\"]=function read(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return xhr.response}}Module[\"readAsync\"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!=\"undefined\"){Module[\"arguments\"]=arguments}if(typeof console!==\"undefined\"){if(!Module[\"print\"])Module[\"print\"]=function print(x){console.log(x)};if(!Module[\"printErr\"])Module[\"printErr\"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module[\"print\"])Module[\"print\"]=TRY_USE_DUMP&&typeof dump!==\"undefined\"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module[\"load\"]=importScripts}if(typeof Module[\"setWindowTitle\"]===\"undefined\"){Module[\"setWindowTitle\"]=(function(title){document.title=title})}}else{throw\"Unknown runtime environment. Where are we?\"}function globalEval(x){abort(\"NO_DYNAMIC_EXECUTION=1 was set, cannot eval\")}if(!Module[\"load\"]&&Module[\"read\"]){Module[\"load\"]=function load(f){globalEval(Module[\"read\"](f))}}if(!Module[\"print\"]){Module[\"print\"]=(function(){})}if(!Module[\"printErr\"]){Module[\"printErr\"]=Module[\"print\"]}if(!Module[\"arguments\"]){Module[\"arguments\"]=[]}if(!Module[\"thisProgram\"]){Module[\"thisProgram\"]=\"./this.program\"}if(!Module[\"quit\"]){Module[\"quit\"]=(function(status,toThrow){throw toThrow})}Module.print=Module[\"print\"];Module.printErr=Module[\"printErr\"];Module[\"preRun\"]=[];Module[\"postRun\"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(type[type.length-1]===\"*\"){return Runtime.QUANTUM_SIZE}else if(type[0]===\"i\"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type===\"double\"||type===\"i64\"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type==\"i64\"||type==\"double\"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module[\"dynCall_\"+sig].apply(null,[ptr].concat(args))}else{return Module[\"dynCall_\"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){if(sig.length===1){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func)}}else if(sig.length===2){sigCache[func]=function dynCall_wrapper(arg){return Runtime.dynCall(sig,func,[arg])}}else{sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,Array.prototype.slice.call(arguments))}}}return sigCache[func]}),getCompilerSetting:(function(name){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=HEAP32[DYNAMICTOP_PTR>>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func){abort(\"NO_DYNAMIC_EXECUTION=1 was set, cannot eval\")}assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\");return func}var ccall;((function(){var JSfuncs={\"stackSave\":(function(){Runtime.stackSave()}),\"stackRestore\":(function(){Runtime.stackRestore()}),\"arrayToC\":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),\"stringToC\":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={\"string\":JSfuncs[\"stringToC\"],\"array\":JSfuncs[\"arrayToC\"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType===\"string\")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};cwrap=function cwrap(ident,returnType,argTypes){return(function(){return ccall(ident,returnType,argTypes,arguments)})}}))();Module[\"ccall\"]=ccall;function setValue(ptr,value,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":HEAP8[ptr>>0]=value;break;case\"i8\":HEAP8[ptr>>0]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;default:abort(\"invalid type for setValue: \"+type)}}function getValue(ptr,type,noSafe){type=type||\"i8\";if(type.charAt(type.length-1)===\"*\")type=\"i32\";switch(type){case\"i1\":return HEAP8[ptr>>0];case\"i8\":return HEAP8[ptr>>0];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":return HEAP32[ptr>>2];case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];default:abort(\"invalid type for setValue: \"+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab===\"number\"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types===\"string\"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc===\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr<stop;ptr+=4){HEAP32[ptr>>2]=0}stop=ret+size;while(ptr<stop){HEAP8[ptr++>>0]=0}return ret}if(singleType===\"i8\"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i<size){var curr=slab[i];if(typeof curr===\"function\"){curr=Runtime.getFunctionIndex(curr)}type=singleType||types[i];if(type===0){i++;continue}if(type==\"i64\")type=\"i32\";setValue(ret+i,curr,type);if(previousType!==type){typeSize=Runtime.getNativeTypeSize(type);previousType=type}i+=typeSize}return ret}function Pointer_stringify(ptr,length){if(length===0||!ptr)return\"\";var hasUtf=0;var t;var i=0;while(1){t=HEAPU8[ptr+i>>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret=\"\";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module[\"UTF8ToString\"](ptr)}Module[\"Pointer_stringify\"]=Pointer_stringify;var UTF8Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf8\"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str=\"\";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function UTF8ToString(ptr){return UTF8ArrayToString(HEAPU8,ptr)}Module[\"UTF8ToString\"]=UTF8ToString;function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!==\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;function demangle(func){var __cxa_demangle_func=Module[\"___cxa_demangle\"]||Module[\"__cxa_demangle\"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,\"i32\")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\");return func}function demangleAll(text){var regex=/__Z[\\w\\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+\" [\"+y+\"]\"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return\"(no stack trace available)\"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module[\"extraStackTrace\"])js+=\"\\n\"+Module[\"extraStackTrace\"]();return demangleAll(js)}var PAGE_SIZE=16384;var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module[\"HEAP8\"]=HEAP8=new Int8Array(buffer);Module[\"HEAP16\"]=HEAP16=new Int16Array(buffer);Module[\"HEAP32\"]=HEAP32=new Int32Array(buffer);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buffer);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buffer);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buffer);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buffer);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module[\"TOTAL_STACK\"]||5242880;var TOTAL_MEMORY=Module[\"TOTAL_MEMORY\"]||16777216;if(TOTAL_MEMORY<TOTAL_STACK)Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\");if(Module[\"buffer\"]){buffer=Module[\"buffer\"]}else{{buffer=new ArrayBuffer(TOTAL_MEMORY)}}updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}HEAP32[0]=1668509029;HEAP16[1]=25459;if(HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module[\"HEAP\"]=HEAP;Module[\"buffer\"]=buffer;Module[\"HEAP8\"]=HEAP8;Module[\"HEAP16\"]=HEAP16;Module[\"HEAP32\"]=HEAP32;Module[\"HEAPU8\"]=HEAPU8;Module[\"HEAPU16\"]=HEAPU16;Module[\"HEAPU32\"]=HEAPU32;Module[\"HEAPF32\"]=HEAPF32;Module[\"HEAPF64\"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback();continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){Module[\"dynCall_v\"](func)}else{Module[\"dynCall_vi\"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math[\"imul\"]||Math[\"imul\"](4294967295,5)!==-5)Math[\"imul\"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math[\"imul\"];if(!Math[\"clz32\"])Math[\"clz32\"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math[\"clz32\"];if(!Math[\"trunc\"])Math[\"trunc\"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math[\"trunc\"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};var ASM_CONSTS=[(function($0,$1){{var path=Pointer_stringify($0);var data=Pointer_stringify($1);FS.createPath(\"/\",PATH.dirname(path));FS.writeFile(PATH.join(\"/\",path),data)}})];function _emscripten_asm_const_iii(code,a0,a1){return ASM_CONSTS[code](a0,a1)}STATIC_BASE=8;STATICTOP=STATIC_BASE+176496;__ATINIT__.push();allocate([0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,32,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,32,193,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,2,16,0,0,0,0,0,0,0,0,0,0,0,0,16,64,88,47,0,0,8,0,0,0,1,0,0,0,0,0,0,0,2,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,150,64,0,0,0,0,0,128,150,64,4,144,195,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,32,3,2,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,66,64,0,0,0,0,0,0,66,64,0,0,0,0,0,32,131,64,0,0,0,0,0,192,136,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,64,0,0,0,0,0,0,66,64,0,0,0,0,0,32,131,64,0,0,0,0,0,192,136,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,176,193,0,0,0,0,0,0,0,0,0,0,0,16,64,248,53,0,0,147,0,0,0,1,0,0,0,0,0,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,16,0,2,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,0,176,193,0,0,0,0,0,0,0,0,0,0,0,0,0,212,57,0,0,16,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,64,0,0,0,0,0,0,88,64,64,32,62,3,0,0,0,0,0,0,0,0,0,0,16,64,220,58,0,0,122,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,64,0,0,0,0,0,0,82,64,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,3,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,4,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,51,51,51,51,51,51,243,63,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,154,153,153,153,153,153,233,63,6,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,7,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,211,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,70,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,153,153,153,153,153,217,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,227,63,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,20,174,71,225,122,228,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,1,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,40,82,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,154,153,153,153,153,153,217,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,128,102,64,123,20,174,71,225,122,228,191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,128,70,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,1,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,82,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,191,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,37,117,2,154,8,27,218,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,44,212,154,230,29,167,234,63,106,222,113,138,142,228,232,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,93,220,70,3,120,11,226,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,93,220,70,3,120,11,226,63,13,113,172,139,219,104,220,63,100,93,220,70,3,120,237,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,196,66,173,105,222,113,236,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,181,21,251,203,238,201,225,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,181,21,251,203,238,201,225,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,134,56,214,197,109,52,238,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,120,11,36,40,126,140,227,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,166,10,70,37,117,2,222,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,106,222,113,138,142,228,232,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,13,113,172,139,219,104,220,63,244,108,86,125,174,182,222,63,17,54,60,189,82,150,201,63,244,108,86,125,174,182,222,63,59,1,77,132,13,79,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,62,232,217,172,250,92,197,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,130,115,70,148,246,6,199,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,7,240,22,72,80,252,220,63,162,180,55,248,194,100,214,63,88,168,53,205,59,78,213,63,13,113,172,139,219,104,220,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,13,113,172,139,219,104,220,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,208,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,196,66,173,105,222,113,236,63,0,0,0,0,0,0,208,63,127,217,61,121,88,168,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,196,66,173,105,222,113,236,63,19,242,65,207,102,213,211,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,16,122,54,171,62,87,229,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,0,0,0,0,0,0,208,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,81,218,27,124,97,50,227,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,244,108,86,125,174,182,214,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,196,66,173,105,222,113,236,63,16,122,54,171,62,87,229,63,245,219,215,129,115,70,204,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,136,133,90,211,188,227,216,63,1,77,132,13,79,175,226,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,1,77,132,13,79,175,226,63,1,77,132,13,79,175,226,63,1,77,132,13,79,175,226,63,181,21,251,203,238,201,225,63,204,93,75,200,7,61,240,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,210,111,95,7,206,25,231,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,106,222,113,138,142,228,232,63,210,111,95,7,206,25,231,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,224,63,16,122,54,171,62,87,229,63,181,21,251,203,238,201,225,63,44,212,154,230,29,167,234,63,210,111,95,7,206,25,231,63,106,222,113,138,142,228,232,63,16,122,54,171,62,87,229,63,106,222,113,138,142,228,232,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,210,111,95,7,206,25,231,63,16,122,54,171,62,87,229,63,134,56,214,197,109,52,238,63,16,122,54,171,62,87,229,63,16,122,54,171,62,87,229,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,166,10,70,37,117,2,222,63,181,21,251,203,238,201,225,63,72,191,125,29,56,103,204,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,224,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,72,191,125,29,56,103,204,63,72,191,125,29,56,103,204,63,0,0,0,0,0,0,224,63,72,191,125,29,56,103,204,63,44,212,154,230,29,167,234,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,224,63,210,111,95,7,206,25,231,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,2,154,8,27,158,94,213,63,224,190,14,156,51,162,208,63,2,154,8,27,158,94,213,63,1,77,132,13,79,175,226,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,62,232,217,172,250,92,197,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,29,56,103,68,105,111,200,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,224,63,0,0,0,0,0,0,224,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,181,21,251,203,238,201,225,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,231,29,167,232,72,46,225,63,162,180,55,248,194,100,214,63,72,191,125,29,56,103,204,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,181,21,251,203,238,201,225,63,0,0,0,0,0,0,240,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,211,188,227,20,29,201,209,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,88,168,53,205,59,78,213,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,0,0,0,0,0,0,240,63,211,188,227,20,29,201,209,63,234,149,178,12,113,172,215,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,181,21,251,203,238,201,225,63,106,222,113,138,142,228,232,63,0,0,0,0,0,0,240,63,152,221,147,135,133,90,215,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,196,66,173,105,222,113,236,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,72,191,125,29,56,103,204,63,120,11,36,40,126,140,227,63,134,56,214,197,109,52,238,63,120,11,36,40,126,140,227,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,211,188,227,20,29,201,209,63,81,160,79,228,73,210,14,64,180,200,118,190,159,58,53,192,58,34,223,165,212,37,213,191,243,130,62,71,154,46,138,63,159,229,121,112,119,214,249,191,126,253,16,27,44,156,230,63,150,236,216,8,196,235,204,63,205,206,162,119,42,224,208,63,176,227,191,64,16,32,237,191,173,161,212,94,68,219,216,63,59,161,124,230,81,150,118,63,211,110,112,249,122,132,123,63,129,204,206,162,119,42,228,191,209,173,215,244,160,160,200,63,106,223,55,25,176,63,132,63,190,202,144,25,94,255,132,63,28,150,6,126,84,195,196,191,165,73,41,232,246,226,35,64,169,217,3,173,192,144,193,63,8,196,144,65,147,105,137,63,250,68,158,36,93,51,208,191,1,240,153,54,45,194,94,63,13,156,125,47,207,148,151,63,137,181,248,20,0,227,137,63,229,169,88,70,52,203,177,191,143,0,201,207,161,103,166,191,92,181,198,251,204,180,136,63,77,164,143,84,58,179,144,63,230,199,4,161,97,214,160,191,199,105,103,28,19,247,130,191,42,127,107,229,45,112,92,191,228,87,98,84,8,154,117,63,209,241,135,85,114,4,183,63,149,212,9,104,34,60,51,192,100,35,16,175,235,119,16,192,167,33,170,240,103,120,199,63,218,255,0,107,213,174,193,63,78,40,68,192,33,84,247,191,170,72,133,177,133,32,245,63,157,104,87,33,229,39,246,63,77,46,198,192,58,142,205,63,89,107,40,181,23,209,220,191,3,63,170,97,191,39,204,63,166,71,83,61,153,127,218,63,182,129,59,80,167,60,174,63,81,76,222,0,51,223,185,191,245,118,149,255,218,11,166,63,212,165,53,188,15,246,148,63,31,173,32,188,44,220,144,63,40,44,241,128,178,201,35,64,35,90,225,76,2,138,183,63,72,163,101,81,150,41,127,63,187,180,134,247,193,158,147,63,23,168,123,83,71,125,160,191,33,43,174,224,109,148,139,63,51,115,220,132,214,30,181,191,160,120,132,137,245,252,143,63,105,53,36,238,177,244,145,191,184,205,51,122,94,191,106,63,146,62,173,162,63,52,205,191,126,176,231,198,79,62,152,191,7,35,155,80,45,199,164,63,62,24,194,123,88,185,145,191,45,124,125,173,75,141,198,63,0,0,0,64,251,33,249,63,0,0,0,0,45,68,116,62,0,0,0,128,152,70,248,60,0,0,0,96,81,204,120,59,0,0,0,128,131,27,240,57,0,0,0,64,32,37,122,56,0,0,0,128,34,130,227,54,0,0,0,0,29,243,105,53,196,232,0,0,160,42,0,0,3,0,0,0,200,44,0,0,3,0,0,0,160,47,0,0,3,0,0,0,104,48,0,0,3,0,0,0,184,49,0,0,3,0,0,0,48,53,0,0,3,0,0,0,108,56,0,0,3,0,0,0,124,46,0,0,3,0,0,0,52,57,0,0,3,0,0,0,60,58,0,0,3,0,0,0,200,62,0,0,3,0,0,0,236,60,0,0,0,0,0,0,140,44,0,0,0,0,0,0,120,47,0,0,0,0,0,0,200,47,0,0,0,0,0,0,144,49,0,0,0,0,0,0,224,49,0,0,0,0,0,0,68,56,0,0,0,0,0,0,24,46,0,0,0,0,0,0,12,57,0,0,0,0,0,0,20,58,0,0,0,0,0,0,160,62,0,0,0,0,0,0,196,60,0,0,4,0,0,0,240,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,232,141,2,0,248,141,2,0,8,142,2,0,24,142,2,0,40,142,2,0,56,142,2,0,72,142,2,0,88,142,2,0,248,141,2,0,248,141,2,0,56,142,2,0,56,142,2,0,31,0,0,0,63,0,0,0,127,0,0,0,0,0,0,0,245,74,1,0,1,0,0,0,96,43,0,0,104,0,0,0,4,0,0,0,230,236,0,0,1,0,0,0,216,43,0,0,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,134,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,1,0,0,0,141,233,0,0,1,0,0,0,0,0,0,0,168,0,0,0,2,0,0,0,151,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,3,0,0,0,161,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,4,0,0,0,175,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,5,0,0,0,185,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,6,0,0,0,198,233,0,0,1,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,235,236,0,0,1,0,0,0,124,45,0,0,24,1,0,0,1,0,0,0,240,236,0,0,1,0,0,0,124,45,0,0,24,1,0,0,2,0,0,0,246,236,0,0,1,0,0,0,124,45,0,0,24,1,0,0,3,0,0,0,255,236,0,0,1,0,0,0,124,45,0,0,24,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,237,0,0,1,0,0,0,0,0,0,0,112,1,0,0,1,0,0,0,19,237,0,0,1,0,0,0,0,0,0,0,112,1,0,0,2,0,0,0,30,237,0,0,1,0,0,0,0,0,0,0,56,1,0,0,3,0,0,0,44,237,0,0,1,0,0,0,0,0,0,0,56,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,2,0,0,0,2,0,0,0,7,0,0,0,2,0,0,0,0,0,0,0,10,221,1,0,15,198,1,0,160,199,1,0,224,205,1,0,215,212,1,0,22,217,1,0,150,220,1,0,167,220,1,0,0,0,0,0,115,237,0,0,1,0,0,0,224,46,0,0,168,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,237,0,0,1,0,0,0,0,0,0,0,200,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,127,237,0,0,1,0,0,0,240,47,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,183,238,0,0,1,0,0,0,0,0,0,0,32,2,0,0,2,0,0,0,193,238,0,0,1,0,0,0,0,0,0,0,88,2,0,0,0,0,0,0,202,238,0,0,1,0,0,0,0,0,0,0,88,2,0,0,3,0,0,0,211,238,0,0,1,0,0,0,0,0,0,0,88,2,0,0,0,0,0,0,221,238,0,0,1,0,0,0,0,0,0,0,32,2,0,0,3,0,0,0,233,238,0,0,1,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,3,0,0,0,9,0,0,0,3,0,0,0,3,0,0,0,10,0,0,0,4,0,0,0,0,0,0,0,10,221,1,0,15,198,1,0,224,205,1,0,160,199,1,0,22,217,1,0,215,212,1,0,167,220,1,0,150,220,1,0,0,0,0,0,0,0,0,0,166,240,0,0,255,255,255,255,244,48,0,0,144,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,169,240,0,0,255,255,255,255,0,0,0,0,176,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,83,1,0,1,0,0,0,8,50,0,0,232,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,12,0,0,0,5,0,0,0,4,0,0,0,13,0,0,0,5,0,0,0,3,0,0,0,166,244,0,0,180,244,0,0,202,244,0,0,238,168,2,0,216,244,0,0,231,244,0,0,236,244,0,0,10,245,0,0,238,168,2,0,28,245,0,0,76,245,0,0,238,168,2,0,106,245,0,0,146,245,0,0,160,245,0,0,207,245,0,0,3,246,0,0,20,246,0,0,57,246,0,0,92,246,0,0,98,246,0,0,126,246,0,0,155,246,0,0,182,246,0,0,215,246,0,0,241,246,0,0,19,247,0,0,50,247,0,0,88,247,0,0,112,247,0,0,144,247,0,0,173,247,0,0,209,247,0,0,221,247,0,0,238,168,2,0,232,247,0,0,14,248,0,0,50,248,0,0,88,248,0,0,238,168,2,0,142,248,0,0,166,248,0,0,179,248,0,0,226,248,0,0,221,247,0,0,238,168,2,0,239,248,0,0,248,248,0,0,25,249,0,0,84,249,0,0,159,249,0,0,243,249,0,0,21,250,0,0,42,250,0,0,65,250,0,0,87,250,0,0,111,250,0,0,238,168,2,0,133,250,0,0,160,250,0,0,196,250,0,0,232,250,0,0,13,251,0,0,238,168,2,0,46,251,0,0,72,251,0,0,90,251,0,0,103,251,0,0,116,251,0,0,136,251,0,0,151,251,0,0,159,251,0,0,180,251,0,0,194,251,0,0,0,252,0,0,11,252,0,0,221,247,0,0,238,168,2,0,17,252,0,0,29,252,0,0,44,252,0,0,92,246,0,0,238,168,2,0,63,252,0,0,104,252,0,0,134,252,0,0,150,252,0,0,167,252,0,0,174,252,0,0,189,252,0,0,205,252,0,0,17,253,0,0,24,253,0,0,92,246,0,0,238,168,2,0,34,253,0,0,78,253,0,0,89,253,0,0,98,253,0,0,107,253,0,0,124,253,0,0,141,253,0,0,161,253,0,0,221,247,0,0,238,168,2,0,173,253,0,0,189,253,0,0,203,253,0,0,217,253,0,0,230,253,0,0,243,253,0,0,9,254,0,0,18,254,0,0,33,254,0,0,46,254,0,0,63,254,0,0,221,247,0,0,238,168,2,0,74,254,0,0,105,254,0,0,238,168,2,0,123,254,0,0,138,254,0,0,186,254,0,0,196,254,0,0,209,254,0,0,222,254,0,0,235,254,0,0,248,254,0,0,251,254,0,0,238,168,2,0,255,254,0,0,238,168,2,0,34,255,0,0,83,255,0,0,130,255,0,0,153,255,0,0,180,255,0,0,207,255,0,0,221,247,0,0,238,168,2,0,235,255,0,0,238,168,2,0,19,0,1,0,31,0,1,0,50,0,1,0,69,0,1,0,90,0,1,0,111,0,1,0,115,0,1,0,92,246,0,0,238,168,2,0,127,0,1,0,238,168,2,0,143,0,1,0,157,0,1,0,169,0,1,0,182,0,1,0,214,0,1,0,236,0,1,0,238,168,2,0,0,1,1,0,73,1,1,0,143,1,1,0,191,1,1,0,242,1,1,0,249,1,1,0,32,2,1,0,71,2,1,0,238,168,2,0,76,2,1,0,0,0,0,0,0,0,0,0,10,44,1,0,1,0,0,0,0,0,0,0,8,3,0,0,1,0,0,0,192,2,1,0,1,0,0,0,0,0,0,0,8,3,0,0,2,0,0,0,3,44,1,0,1,0,0,0,0,0,0,0,64,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,36,0,0,0,37,0,0,0,6,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,4,0,0,0,47,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,15,0,0,0,7,0,0,0,5,0,0,0,16,0,0,0,6,0,0,0,0,0,0,0,39,197,1,0,49,197,1,0,138,21,1,0,118,197,1,0,177,197,1,0,211,197,1,0,217,197,1,0,10,221,1,0,0,198,1,0,15,198,1,0,44,198,1,0,55,198,1,0,89,198,1,0,143,198,1,0,197,198,1,0,0,199,1,0,54,199,1,0,88,199,1,0,103,199,1,0,152,199,1,0,160,199,1,0,80,9,1,0,89,9,1,0,189,199,1,0,98,9,1,0,7,200,1,0,107,9,1,0,17,200,1,0,116,9,1,0,27,200,1,0,106,200,1,0,165,200,1,0,128,9,1,0,224,200,1,0,235,200,1,0,48,201,1,0,62,201,1,0,136,201,1,0,150,201,1,0,164,201,1,0,175,201,1,0,224,201,1,0,32,202,1,0,40,202,1,0,48,202,1,0,107,202,1,0,161,202,1,0,173,202,1,0,143,21,1,0,185,202,1,0,195,202,1,0,206,202,1,0,235,202,1,0,33,203,1,0,224,205,1,0,2,206,1,0,14,206,1,0,205,208,1,0,254,208,1,0,42,209,1,0,96,209,1,0,109,209,1,0,143,209,1,0,177,209,1,0,186,209,1,0,4,210,1,0,14,210,1,0,83,210,1,0,137,210,1,0,148,210,1,0,25,211,1,0,46,211,1,0,136,9,1,0,56,211,1,0,66,211,1,0,120,211,1,0,184,211,1,0,198,211,1,0,26,212,1,0,41,212,1,0,56,212,1,0,135,212,1,0,151,21,1,0,199,212,1,0,209,212,1,0,215,212,1,0,3,213,1,0,42,213,1,0,59,213,1,0,70,213,1,0,139,213,1,0,208,213,1,0,223,213,1,0,239,213,1,0,1,214,1,0,17,214,1,0,33,214,1,0,46,214,1,0,56,214,1,0,110,214,1,0,119,214,1,0,183,214,1,0,202,214,1,0,156,21,1,0,210,214,1,0,8,215,1,0,47,215,1,0,101,215,1,0,140,215,1,0,154,215,1,0,208,215,1,0,26,216,1,0,100,216,1,0,111,216,1,0,165,216,1,0,170,216,1,0,199,216,1,0,228,216,1,0,239,216,1,0,22,217,1,0,46,217,1,0,100,217,1,0,154,217,1,0,166,217,1,0,205,217,1,0,216,217,1,0,9,218,1,0,58,218,1,0,137,32,1,0,97,218,1,0,141,218,1,0,195,218,1,0,249,218,1,0,3,219,1,0,32,219,1,0,96,219,1,0,150,219,1,0,162,21,1,0,174,219,1,0,218,219,1,0,1,220,1,0,55,220,1,0,116,220,1,0,150,220,1,0,156,220,1,0,167,220,1,0,206,220,1,0,0,0,0,0,55,83,1,0,1,0,0,0,128,53,0,0,120,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,44,1,0,1,0,0,0,0,0,0,0,152,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,18,0,0,0,8,0,0,0,6,0,0,0,19,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,190,10,1,0,1,0,0,0,148,56,0,0,208,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,193,10,1,0,1,0,0,0,0,0,0,0,240,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,55,0,0,0,0,0,0,0,0,0,0,0,20,0,0,0,0,0,0,0,21,0,0,0,9,0,0,0,7,0,0,0,22,0,0,0,8,0,0,0,0,0,0,0,138,21,1,0,10,221,1,0,15,198,1,0,143,21,1,0,33,203,1,0,224,205,1,0,151,21,1,0,3,213,1,0,183,214,1,0,156,21,1,0,239,216,1,0,22,217,1,0,137,32,1,0,162,21,1,0,150,220,1,0,167,220,1,0,0,0,0,0,167,21,1,0,1,0,0,0,92,57,0,0,40,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,171,21,1,0,1,0,0,0,0,0,0,0,72,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,57,0,0,0,58,0,0,0,10,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,0,0,0,0,0,0,0,24,0,0,0,11,0,0,0,8,0,0,0,25,0,0,0,9,0,0,0,0,0,0,0,118,197,1,0,31,31,1,0,10,221,1,0,15,198,1,0,44,198,1,0,42,31,1,0,48,31,1,0,59,31,1,0,66,31,1,0,55,198,1,0,143,198,1,0,74,31,1,0,80,31,1,0,91,31,1,0,54,199,1,0,88,199,1,0,160,199,1,0,98,31,1,0,7,200,1,0,27,200,1,0,165,200,1,0,108,31,1,0,48,201,1,0,62,201,1,0,136,201,1,0,119,31,1,0,150,201,1,0,127,31,1,0,136,31,1,0,150,31,1,0,160,31,1,0,107,202,1,0,169,31,1,0,173,202,1,0,206,202,1,0,235,202,1,0,175,31,1,0,50,203,1,0,93,203,1,0,134,203,1,0,169,203,1,0,210,203,1,0,245,203,1,0,30,204,1,0,65,204,1,0,106,204,1,0,141,204,1,0,182,204,1,0,217,204,1,0,2,205,1,0,37,205,1,0,78,205,1,0,113,205,1,0,154,205,1,0,189,205,1,0,224,205,1,0,182,31,1,0,2,206,1,0,194,31,1,0,42,209,1,0,143,209,1,0,83,210,1,0,207,31,1,0,56,212,1,0,220,31,1,0,199,212,1,0,215,212,1,0,230,31,1,0,3,213,1,0,42,213,1,0,59,213,1,0,245,31,1,0,7,32,1,0,70,213,1,0,208,213,1,0,223,213,1,0,239,213,1,0,1,214,1,0,17,214,1,0,23,32,1,0,34,32,1,0,45,32,1,0,33,214,1,0,183,214,1,0,188,214,1,0,50,32,1,0,59,32,1,0,68,32,1,0,84,32,1,0,91,32,1,0,8,215,1,0,47,215,1,0,101,215,1,0,154,215,1,0,170,216,1,0,199,216,1,0,99,32,1,0,22,217,1,0,106,32,1,0,166,217,1,0,115,32,1,0,216,217,1,0,123,32,1,0,58,218,1,0,137,32,1,0,97,218,1,0,141,218,1,0,144,32,1,0,32,219,1,0,96,219,1,0,154,32,1,0,150,219,1,0,174,219,1,0,1,220,1,0,164,32,1,0,178,32,1,0,55,220,1,0,62,220,1,0,116,220,1,0,150,220,1,0,167,220,1,0,206,220,1,0,0,0,0,0,196,32,1,0,1,0,0,0,100,58,0,0,128,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,200,32,1,0,1,0,0,0,0,0,0,0,160,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,69,0,0,0,0,0,0,0,0,0,0,0,70,0,0,0,71,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,27,0,0,0,12,0,0,0,9,0,0,0,28,0,0,0,10,0,0,0,0,0,0,0,65,66,0,0,28,103,1,0,65,73,0,0,246,102,1,0,65,82,0,0,201,102,1,0,65,88,0,0,49,103,1,0,66,32,0,0,109,105,1,0,66,73,0,0,126,105,1,0,67,66,0,0,182,103,1,0,67,79,0,0,164,103,1,0,67,88,0,0,195,103,1,0,72,32,0,0,231,103,1,0,72,66,0,0,241,103,1,0,72,73,0,0,125,104,1,0,72,88,0,0,0,104,1,0,72,98,0,0,49,104,1,0,72,105,0,0,100,104,1,0,72,114,0,0,22,104,1,0,72,120,0,0,71,104,1,0,73,32,0,0,143,105,1,0,75,66,0,0,72,103,1,0,75,73,0,0,144,103,1,0,75,82,0,0,124,103,1,0,75,88,0,0,105,103,1,0,78,66,0,0,143,104,1,0,78,73,0,0,214,104,1,0,78,82,0,0,238,104,1,0,78,88,0,0,186,104,1,0,80,65,0,0,79,105,1,0,80,66,0,0,11,105,1,0,80,73,0,0,63,105,1,0,80,88,0,0,43,105,1,0,82,32,0,0,59,107,1,0,83,32,0,0,94,105,1,0,90,68,0,0,204,105,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,119,43,1,0,255,255,255,255,20,61,0,0,216,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,123,43,1,0,255,255,255,255,0,0,0,0,248,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,131,43,1,0,1,0,0,0,216,66,0,0,0,0,0,0,16,0,0,0,139,43,1,0,1,0,0,0,216,66,0,0,0,0,0,0,17,0,0,0,147,43,1,0,1,0,0,0,216,66,0,0,0,0,0,0,17,0,0,0,156,43,1,0,1,0,0,0,216,66,0,0,0,0,0,0,17,0,0,0,164,43,1,0,1,0,0,0,216,66,0,0,0,0,0,0,19,0,0,0,172,43,1,0,1,0,0,0,220,66,0,0,0,0,0,0,20,0,0,0,180,43,1,0,1,0,0,0,220,66,0,0,0,0,0,0,21,0,0,0,188,43,1,0,1,0,0,0,220,66,0,0,0,0,0,0,21,0,0,0,197,43,1,0,1,0,0,0,220,66,0,0,0,0,0,0,21,0,0,0,205,43,1,0,1,0,0,0,220,66,0,0,0,0,0,0,22,0,0,0,213,43,1,0,1,0,0,0,224,66,0,0,0,0,0,0,23,0,0,0,222,43,1,0,1,0,0,0,224,66,0,0,0,0,0,0,24,0,0,0,231,43,1,0,1,0,0,0,224,66,0,0,0,0,0,0,24,0,0,0,241,43,1,0,1,0,0,0,224,66,0,0,0,0,0,0,24,0,0,0,250,43,1,0,1,0,0,0,224,66,0,0,0,0,0,0,25,0,0,0,3,44,1,0,1,0,0,0,228,66,0,0,0,0,0,0,25,0,0,0,10,44,1,0,1,0,0,0,228,66,0,0,0,0,0,0,26,0,0,0,16,44,1,0,1,0,0,0,232,66,0,0,0,0,0,0,10,0,0,0,25,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,11,0,0,0,33,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,12,0,0,0,41,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,12,0,0,0,50,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,12,0,0,0,58,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,14,0,0,0,66,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,14,0,0,0,73,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,13,0,0,0,81,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,5,0,0,0,89,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,6,0,0,0,97,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,7,0,0,0,105,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,7,0,0,0,114,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,7,0,0,0,122,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,9,0,0,0,130,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,9,0,0,0,137,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,8,0,0,0,145,44,1,0,1,0,0,0,236,66,0,0,0,0,0,0,0,0,0,0,153,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,1,0,0,0,162,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,2,0,0,0,171,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,2,0,0,0,181,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,2,0,0,0,190,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,4,0,0,0,199,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,4,0,0,0,207,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,3,0,0,0,216,44,1,0,1,0,0,0,240,66,0,0,0,0,0,0,18,0,0,0,225,44,1,0,1,0,0,0,216,66,0,0,0,0,0,0,27,0,0,0,233,44,1,0,1,0,0,0,244,66,0,0,0,0,0,0,28,0,0,0,241,44,1,0,1,0,0,0,244,66,0,0,0,0,0,0,29,0,0,0,249,44,1,0,1,0,0,0,244,66,0,0,0,0,0,0,29,0,0,0,2,45,1,0,1,0,0,0,244,66,0,0,0,0,0,0,29,0,0,0,10,45,1,0,1,0,0,0,244,66,0,0,0,0,0,0,30,0,0,0,18,45,1,0,1,0,0,0,248,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,125,48,1,0,4,67,0,0,1,0,0,0,32,67,0,0,0,0,0,0,0,0,0,0,72,0,0,0,73,0,0,0,1,0,0,0,0,0,0,0,245,74,1,0,0,0,0,0,20,67,0,0,28,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,4,0,0,0,24,1,0,0,48,1,0,0,176,0,0,0,167,56,1,0,172,56,1,0,176,56,1,0,183,56,1,0,187,56,1,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,30,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,216,67,0,0,232,67,0,0,2,0,0,0,4,0,0,0,244,67,0,0,2,0,0,0,8,0,0,0,2,0,0,0,4,0,0,0,252,67,0,0,0,4,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,61,1,0,53,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,9,0,0,0,11,0,0,0,8,0,0,0,10,0,0,0,132,69,0,0,8,69,0,0,108,69,0,0,1,0,0,0,1,0,0,0,5,0,0,0,22,0,0,0,6,0,0,0,74,0,0,0,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,3,0,0,0,9,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,11,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,6,0,0,0,1,0,0,0,1,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,10,0,0,0,1,0,0,0,1,0,0,0,11,0,0,0,1,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,19,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,1,0,0,0,30,0,0,0,1,0,0,0,1,0,0,0,19,0,0,0,1,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,19,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,19,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,46,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,47,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,48,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,19,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,1,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,7,0,0,0,7,0,0,0,1,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,3,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,6,0,0,0,128,0,0,0,33,120,1,0,253,119,1,0,115,65,1,0,46,120,1,0,38,120,1,0,52,120,1,0,0,0,0,0,121,69,1,0,130,69,1,0,137,69,1,0,151,69,1,0,21,119,1,0,74,120,1,0,158,69,1,0,165,69,1,0,1,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,71,1,0,8,0,0,0,3,0,0,0,76,71,1,0,80,71,1,0,11,0,0,0,6,0,0,0,52,83,1,0,92,71,1,0,2,0,0,0,1,0,0,0,95,71,1,0,99,71,1,0,4,0,0,0,2,0,0,0,104,71,1,0,108,71,1,0,4,0,0,0,4,0,0,0,113,71,1,0,118,71,1,0,5,0,0,0,5,0,0,0,124,71,1,0,128,71,1,0,4,0,0,0,7,0,0,0,133,71,1,0,137,71,1,0,5,0,0,0,9,0,0,0,143,71,1,0,147,71,1,0,4,0,0,0,10,0,0,0,152,71,1,0,157,71,1,0,4,0,0,0,12,0,0,0,162,71,1,0,50,76,1,0,0,0,0,0,1,0,0,0,58,76,1,0,1,0,0,0,0,0,0,0,16,119,1,0,1,0,0,0,1,0,0,0,197,214,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,75,1,0,49,0,0,0,0,0,0,0,0,0,0,0,49,114,1,0,16,0,0,0,0,227,1,0,128,0,0,0,23,75,1,0,64,0,0,0,122,101,1,0,16,0,0,0,25,75,1,0,64,0,0,0,0,0,0,0,0,0,0,0,229,74,1,0,1,0,0,0,236,74,1,0,2,0,0,0,241,74,1,0,3,0,0,0,97,98,1,0,4,0,0,0,156,98,1,0,5,0,0,0,245,74,1,0,6,0,0,0,197,214,1,0,8,0,0,0,249,74,1,0,33,0,0,0,253,74,1,0,34,0,0,0,1,75,1,0,34,0,0,0,5,75,1,0,1,0,0,0,10,75,1,0,7,0,0,0,16,75,1,0,39,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,80,1,0,99,80,1,0,0,0,0,0,49,83,1,0,52,83,1,0,55,83,1,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,255,255,255,255,244,82,1,0,250,82,1,0,197,214,1,0,0,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,100,0,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,98,1,0,144,81,0,0,64,6,0,0,0,0,0,0,101,98,1,0,144,81,0,0,112,6,0,0,0,0,0,0,51,107,1,0,144,81,0,0,160,6,0,0,0,0,0,0,109,98,1,0,144,81,0,0,160,6,0,0,0,0,0,0,114,98,1,0,144,81,0,0,208,6,0,0,0,0,0,0,121,98,1,0,168,81,0,0,208,6,0,0,0,0,0,0,127,98,1,0,144,81,0,0,0,7,0,0,0,0,0,0,131,98,1,0,144,81,0,0,48,7,0,0,0,0,0,0,197,214,1,0,144,81,0,0,96,7,0,0,0,0,0,0,140,98,1,0,144,81,0,0,96,7,0,0,0,0,0,0,150,98,1,0,144,81,0,0,16,6,0,0,0,0,0,0,156,98,1,0,144,81,0,0,144,7,0,0,0,0,0,0,164,98,1,0,144,81,0,0,192,7,0,0,0,0,0,0,174,98,1,0,144,81,0,0,240,7,0,0,0,0,0,0,188,98,1,0,144,81,0,0,32,8,0,0,0,0,0,0,194,98,1,0,144,81,0,0,80,8,0,0,0,0,0,0,203,98,1,0,144,81,0,0,128,8,0,0,0,0,0,0,211,98,1,0,144,81,0,0,176,8,0,0,0,0,0,0,220,98,1,0,144,81,0,0,224,8,0,0,0,0,0,0,228,98,1,0,144,81,0,0,16,9,0,0,0,0,0,0,233,98,1,0,144,81,0,0,64,9,0,0,0,0,0,0,237,98,1,0,144,81,0,0,112,9,0,0,0,0,0,0,244,98,1,0,144,81,0,0,160,9,0,0,0,0,0,0,250,98,1,0,144,81,0,0,208,9,0,0,0,0,0,0,4,99,1,0,192,81,0,0,0,10,0,0,0,0,0,0,13,99,1,0,144,81,0,0,64,6,0,0,0,0,0,0,18,99,1,0,144,81,0,0,64,6,0,0,0,0,0,0,28,99,1,0,144,81,0,0,48,10,0,0,0,0,0,0,35,99,1,0,144,81,0,0,96,10,0,0,0,0,0,0,48,99,1,0,144,81,0,0,144,10,0,0,0,0,0,0,62,99,1,0,144,81,0,0,192,10,0,0,0,0,0,0,76,99,1,0,144,81,0,0,240,10,0,0,0,0,0,0,88,99,1,0,144,81,0,0,32,11,0,0,0,0,0,0,101,99,1,0,144,81,0,0,80,11,0,0,0,0,0,0,110,99,1,0,144,81,0,0,128,11,0,0,0,0,0,0,120,99,1,0,144,81,0,0,176,11,0,0,0,0,0,0,129,99,1,0,144,81,0,0,224,11,0,0,0,0,0,0,137,99,1,0,144,81,0,0,16,12,0,0,0,0,0,0,145,99,1,0,144,81],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([64,12,0,0,0,0,0,0,154,99,1,0,144,81,0,0,112,12,0,0,0,0,0,0,158,99,1,0,144,81,0,0,160,12,0,0,0,0,0,0,169,99,1,0,144,81,0,0,208,12,0,0,0,0,0,0,173,99,1,0,144,81,0,0,0,13,0,0,0,0,0,0,183,99,1,0,144,81,0,0,48,13,0,0,0,0,0,0,192,99,1,0,144,81,0,0,96,13,0,0,0,0,0,0,200,99,1,0,144,81,0,0,144,13,0,0,0,0,0,0,213,99,1,0,144,81,0,0,192,13,0,0,0,0,0,0,225,99,1,0,144,81,0,0,240,13,0,0,0,0,0,0,236,99,1,0,144,81,0,0,32,14,0,0,0,0,0,0,252,99,1,0,144,81,0,0,80,14,0,0,0,0,0,0,10,100,1,0,144,81,0,0,128,14,0,0,0,0,0,0,25,100,1,0,144,81,0,0,176,14,0,0,0,0,0,0,35,100,1,0,144,81,0,0,224,14,0,0,0,0,0,0,44,100,1,0,144,81,0,0,16,15,0,0,0,0,0,0,54,100,1,0,144,81,0,0,64,15,0,0,0,0,0,0,64,100,1,0,144,81,0,0,112,15,0,0,0,0,0,0,71,100,1,0,144,81,0,0,160,15,0,0,0,0,0,0,78,100,1,0,144,81,0,0,208,15,0,0,0,0,0,0,88,100,1,0,216,81,0,0,0,0,0,0,0,0,0,0,95,100,1,0,216,81,0,0,0,0,0,0,0,0,0,0,61,98,1,0,240,81,0,0,0,0,0,0,0,0,0,0,103,100,1,0,8,82,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,0,0,0,76,0,0,0,23,0,0,0,4,0,0,0,2,0,0,0,12,0,0,0,77,0,0,0,76,0,0,0,23,0,0,0,5,0,0,0,0,0,0,0,13,0,0,0,75,0,0,0,76,0,0,0,23,0,0,0,4,0,0,0,2,0,0,0,12,0,0,0,78,0,0,0,79,0,0,0,24,0,0,0,6,0,0,0,3,0,0,0,14,0,0,0,80,0,0,0,81,0,0,0,23,0,0,0,7,0,0,0,0,0,0,0,15,0,0,0,75,0,0,0,76,0,0,0,23,0,0,0,8,0,0,0,2,0,0,0,12,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,105,101,1,0,112,101,1,0,0,0,0,0,120,101,1,0,122,101,1,0,58,227,1,0,124,101,1,0,12,0,0,0,4,0,0,0,6,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,9,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,17,0,0,0,18,0,0,0,21,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,51,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,71,0,0,0,72,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,201,102,1,0,217,102,1,0,230,102,1,0,0,0,0,0,0,0,0,0,4,0,0,0,235,102,1,0,0,0,0,0,0,0,0,0,246,102,1,0,217,102,1,0,230,102,1,0,0,0,0,0,13,103,1,0,5,0,0,0,235,102,1,0,0,0,0,0,21,103,1,0,28,103,1,0,217,102,1,0,44,103,1,0,0,0,0,0,0,0,0,0,6,0,0,0,235,102,1,0,121,118,1,0,0,0,0,0,49,103,1,0,217,102,1,0,44,103,1,0,0,0,0,0,13,103,1,0,7,0,0,0,235,102,1,0,121,118,1,0,21,103,1,0,72,103,1,0,85,103,1,0,44,103,1,0,0,0,0,0,0,0,0,0,10,0,0,0,99,103,1,0,121,118,1,0,0,0,0,0,105,103,1,0,85,103,1,0,44,103,1,0,0,0,0,0,21,103,1,0,11,0,0,0,99,103,1,0,121,118,1,0,21,103,1,0,124,103,1,0,85,103,1,0,138,103,1,0,0,0,0,0,0,0,0,0,8,0,0,0,99,103,1,0,0,0,0,0,0,0,0,0,144,103,1,0,85,103,1,0,138,103,1,0,0,0,0,0,21,103,1,0,9,0,0,0,99,103,1,0,0,0,0,0,21,103,1,0,164,103,1,0,164,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,172,103,1,0,0,0,0,0,0,0,0,0,182,103,1,0,164,103,1,0,121,118,1,0,0,0,0,0,0,0,0,0,14,0,0,0,172,103,1,0,121,118,1,0,0,0,0,0,195,103,1,0,164,103,1,0,121,118,1,0,0,0,0,0,13,103,1,0,15,0,0,0,172,103,1,0,121,118,1,0,21,103,1,0,215,103,1,0,164,103,1,0,0,0,0,0,0,0,0,0,13,103,1,0,13,0,0,0,172,103,1,0,0,0,0,0,21,103,1,0,231,103,1,0,231,103,1,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,235,102,1,0,0,0,0,0,0,0,0,0,241,103,1,0,231,103,1,0,121,118,1,0,0,0,0,0,0,0,0,0,18,0,0,0,235,102,1,0,121,118,1,0,0,0,0,0,0,104,1,0,231,103,1,0,121,118,1,0,0,0,0,0,13,103,1,0,19,0,0,0,235,102,1,0,121,118,1,0,21,103,1,0,22,104,1,0,231,103,1,0,0,0,0,0,39,104,1,0,0,0,0,0,20,0,0,0,235,102,1,0,0,0,0,0,0,0,0,0,49,104,1,0,231,103,1,0,121,118,1,0,39,104,1,0,0,0,0,0,22,0,0,0,235,102,1,0,121,118,1,0,0,0,0,0,71,104,1,0,231,103,1,0,121,118,1,0,39,104,1,0,13,103,1,0,23,0,0,0,235,102,1,0,121,118,1,0,21,103,1,0,100,104,1,0,231,103,1,0,0,0,0,0,39,104,1,0,13,103,1,0,21,0,0,0,235,102,1,0,0,0,0,0,21,103,1,0,125,104,1,0,231,103,1,0,0,0,0,0,0,0,0,0,13,103,1,0,17,0,0,0,235,102,1,0,0,0,0,0,21,103,1,0,143,104,1,0,165,104,1,0,121,118,1,0,0,0,0,0,0,0,0,0,26,0,0,0,99,103,1,0,121,118,1,0,0,0,0,0,186,104,1,0,165,104,1,0,121,118,1,0,0,0,0,0,21,103,1,0,27,0,0,0,99,103,1,0,121,118,1,0,21,103,1,0,214,104,1,0,165,104,1,0,0,0,0,0,0,0,0,0,21,103,1,0,25,0,0,0,99,103,1,0,0,0,0,0,21,103,1,0,238,104,1,0,165,104,1,0,5,105,1,0,0,0,0,0,0,0,0,0,24,0,0,0,99,103,1,0,0,0,0,0,0,0,0,0,11,105,1,0,25,105,1,0,121,118,1,0,0,0,0,0,0,0,0,0,30,0,0,0,99,103,1,0,121,118,1,0,0,0,0,0,43,105,1,0,25,105,1,0,121,118,1,0,0,0,0,0,21,103,1,0,31,0,0,0,99,103,1,0,121,118,1,0,21,103,1,0,63,105,1,0,25,105,1,0,0,0,0,0,0,0,0,0,21,103,1,0,29,0,0,0,99,103,1,0,0,0,0,0,21,103,1,0,79,105,1,0,25,105,1,0,5,105,1,0,0,0,0,0,0,0,0,0,28,0,0,0,99,103,1,0,0,0,0,0,0,0,0,0,94,105,1,0,94,105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,101,105,1,0,0,0,0,0,0,0,0,0,109,105,1,0,120,105,1,0,121,118,1,0,0,0,0,0,0,0,0,0,2,0,0,0,99,103,1,0,121,118,1,0,0,0,0,0,126,105,1,0,120,105,1,0,121,118,1,0,0,0,0,0,21,103,1,0,3,0,0,0,99,103,1,0,121,118,1,0,21,103,1,0,143,105,1,0,120,105,1,0,0,0,0,0,0,0,0,0,21,103,1,0,1,0,0,0,99,103,1,0,0,0,0,0,21,103,1,0,59,107,1,0,120,105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,103,1,0,0,0,0,0,0,0,0,0,156,105,1,0,182,105,1,0,197,105,1,0,0,0,0,0,21,103,1,0,33,0,0,0,99,103,1,0,0,0,0,0,21,103,1,0,204,105,1,0,217,105,1,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,101,105,1,0,0,0,0,0,0,0,0,0,8,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,107,1,0,198,0,0,0,157,107,1,0,193,0,0,0,164,107,1,0,194,0,0,0,170,107,1,0,192,0,0,0,177,107,1,0,145,3,0,0,183,107,1,0,197,0,0,0,189,107,1,0,195,0,0,0,196,107,1,0,196,0,0,0,201,107,1,0,146,3,0,0,206,107,1,0,199,0,0,0,213,107,1,0,167,3,0,0,217,107,1,0,33,32,0,0,224,107,1,0,148,3,0,0,230,107,1,0,208,0,0,0,234,107,1,0,201,0,0,0,241,107,1,0,202,0,0,0,247,107,1,0,200,0,0,0,254,107,1,0,149,3,0,0,6,108,1,0,151,3,0,0,10,108,1,0,203,0,0,0,15,108,1,0,147,3,0,0,21,108,1,0,205,0,0,0,28,108,1,0,206,0,0,0,34,108,1,0,204,0,0,0,41,108,1,0,153,3,0,0,46,108,1,0,207,0,0,0,51,108,1,0,154,3,0,0,57,108,1,0,155,3,0,0,64,108,1,0,156,3,0,0,67,108,1,0,209,0,0,0,74,108,1,0,157,3,0,0,77,108,1,0,82,1,0,0,83,108,1,0,211,0,0,0,90,108,1,0,212,0,0,0,96,108,1,0,210,0,0,0,103,108,1,0,169,3,0,0,109,108,1,0,159,3,0,0,117,108,1,0,216,0,0,0,124,108,1,0,213,0,0,0,131,108,1,0,214,0,0,0,136,108,1,0,166,3,0,0,140,108,1,0,160,3,0,0,143,108,1,0,51,32,0,0,149,108,1,0,168,3,0,0,153,108,1,0,161,3,0,0,157,108,1,0,96,1,0,0,164,108,1,0,163,3,0,0,170,108,1,0,222,0,0,0,176,108,1,0,164,3,0,0,180,108,1,0,152,3,0,0,186,108,1,0,218,0,0,0,193,108,1,0,219,0,0,0,199,108,1,0,217,0,0,0,206,108,1,0,165,3,0,0,214,108,1,0,220,0,0,0,219,108,1,0,158,3,0,0,222,108,1,0,221,0,0,0,229,108,1,0,120,1,0,0,234,108,1,0,150,3,0,0,239,108,1,0,225,0,0,0,246,108,1,0,226,0,0,0,252,108,1,0,180,0,0,0,2,109,1,0,230,0,0,0,8,109,1,0,224,0,0,0,15,109,1,0,53,33,0,0,23,109,1,0,177,3,0,0,29,109,1,0,38,0,0,0,33,109,1,0,39,34,0,0,37,109,1,0,32,34,0,0,41,109,1,0,229,0,0,0,47,109,1,0,72,34,0,0,53,109,1,0,227,0,0,0,60,109,1,0,228,0,0,0,65,109,1,0,30,32,0,0,71,109,1,0,178,3,0,0,76,109,1,0,166,0,0,0,83,109,1,0,34,32,0,0,88,109,1,0,41,34,0,0,92,109,1,0,231,0,0,0,99,109,1,0,184,0,0,0,105,109,1,0,162,0,0,0,110,109,1,0,199,3,0,0,114,109,1,0,198,2,0,0,119,109,1,0,99,38,0,0,125,109,1,0,69,34,0,0,130,109,1,0,169,0,0,0,135,109,1,0,181,33,0,0,141,109,1,0,42,34,0,0,145,109,1,0,164,0,0,0,152,109,1,0,211,33,0,0,157,109,1,0,32,32,0,0,164,109,1,0,147,33,0,0,169,109,1,0,176,0,0,0,173,109,1,0,180,3,0,0,179,109,1,0,102,38,0,0,185,109,1,0,247,0,0,0,192,109,1,0,233,0,0,0,199,109,1,0,234,0,0,0,205,109,1,0,232,0,0,0,212,109,1,0,5,34,0,0,218,109,1,0,3,32,0,0,223,109,1,0,2,32,0,0,228,109,1,0,181,3,0,0,236,109,1,0,97,34,0,0,242,109,1,0,183,3,0,0,246,109,1,0,240,0,0,0,250,109,1,0,235,0,0,0,255,109,1,0,172,32,0,0,4,110,1,0,3,34,0,0,10,110,1,0,146,1,0,0,15,110,1,0,0,34,0,0,22,110,1,0,189,0,0,0,29,110,1,0,188,0,0,0,36,110,1,0,190,0,0,0,43,110,1,0,68,32,0,0,49,110,1,0,179,3,0,0,55,110,1,0,101,34,0,0,58,110,1,0,62,0,0,0,61,110,1,0,212,33,0,0,66,110,1,0,148,33,0,0,71,110,1,0,101,38,0,0,78,110,1,0,38,32,0,0,85,110,1,0,237,0,0,0,92,110,1,0,238,0,0,0,98,110,1,0,161,0,0,0,104,110,1,0,236,0,0,0,111,110,1,0,17,33,0,0,117,110,1,0,30,34,0,0,123,110,1,0,43,34,0,0,127,110,1,0,185,3,0,0,132,110,1,0,191,0,0,0,139,110,1,0,8,34,0,0,144,110,1,0,239,0,0,0,149,110,1,0,186,3,0,0,155,110,1,0,208,33,0,0,160,110,1,0,187,3,0,0,167,110,1,0,41,35,0,0,172,110,1,0,171,0,0,0,178,110,1,0,144,33,0,0,183,110,1,0,8,35,0,0,189,110,1,0,28,32,0,0,195,110,1,0,100,34,0,0,198,110,1,0,10,35,0,0,205,110,1,0,23,34,0,0,212,110,1,0,202,37,0,0,216,110,1,0,14,32,0,0,220,110,1,0,57,32,0,0,227,110,1,0,24,32,0,0,233,110,1,0,60,0,0,0,236,110,1,0,175,0,0,0,241,110,1,0,20,32,0,0,247,110,1,0,181,0,0,0,253,110,1,0,183,0,0,0,225,119,1,0,18,34,0,0,4,111,1,0,188,3,0,0,7,111,1,0,7,34,0,0,13,111,1,0,160,0,0,0,18,111,1,0,19,32,0,0,24,111,1,0,96,34,0,0,27,111,1,0,11,34,0,0,30,111,1,0,172,0,0,0,34,111,1,0,9,34,0,0,40,111,1,0,132,34,0,0,45,111,1,0,241,0,0,0,52,111,1,0,189,3,0,0,55,111,1,0,243,0,0,0,62,111,1,0,244,0,0,0,68,111,1,0,83,1,0,0,74,111,1,0,242,0,0,0,81,111,1,0,62,32,0,0,87,111,1,0,201,3,0,0,93,111,1,0,191,3,0,0,101,111,1,0,149,34,0,0,107,111,1,0,40,34,0,0,110,111,1,0,170,0,0,0,115,111,1,0,186,0,0,0,120,111,1,0,248,0,0,0,127,111,1,0,245,0,0,0,134,111,1,0,151,34,0,0,141,111,1,0,246,0,0,0,146,111,1,0,182,0,0,0,151,111,1,0,2,34,0,0,156,111,1,0,48,32,0,0,163,111,1,0,165,34,0,0,168,111,1,0,198,3,0,0,172,111,1,0,192,3,0,0,175,111,1,0,214,3,0,0,179,111,1,0,177,0,0,0,186,111,1,0,163,0,0,0,192,111,1,0,50,32,0,0,198,111,1,0,15,34,0,0,203,111,1,0,29,34,0,0,208,111,1,0,200,3,0,0,212,111,1,0,34,0,0,0,217,111,1,0,210,33,0,0,222,111,1,0,26,34,0,0,228,111,1,0,42,35,0,0,233,111,1,0,187,0,0,0,239,111,1,0,146,33,0,0,244,111,1,0,9,35,0,0,250,111,1,0,29,32,0,0,0,112,1,0,28,33,0,0,5,112,1,0,174,0,0,0,9,112,1,0,11,35,0,0,16,112,1,0,193,3,0,0,20,112,1,0,15,32,0,0,24,112,1,0,58,32,0,0,31,112,1,0,25,32,0,0,37,112,1,0,26,32,0,0,43,112,1,0,97,1,0,0,50,112,1,0,197,34,0,0,55,112,1,0,167,0,0,0,60,112,1,0,173,0,0,0,64,112,1,0,195,3,0,0,70,112,1,0,194,3,0,0,77,112,1,0,60,34,0,0,81,112,1,0,96,38,0,0,88,112,1,0,130,34,0,0,92,112,1,0,134,34,0,0,97,112,1,0,17,34,0,0,101,112,1,0,131,34,0,0,105,112,1,0,185,0,0,0,110,112,1,0,178,0,0,0,115,112,1,0,179,0,0,0,120,112,1,0,135,34,0,0,125,112,1,0,223,0,0,0,131,112,1,0,196,3,0,0,135,112,1,0,52,34,0,0,142,112,1,0,184,3,0,0,148,112,1,0,209,3,0,0,157,112,1,0,9,32,0,0,164,112,1,0,254,0,0,0,170,112,1,0,220,2,0,0,176,112,1,0,215,0,0,0,182,112,1,0,34,33,0,0,188,112,1,0,209,33,0,0,193,112,1,0,250,0,0,0,200,112,1,0,145,33,0,0,205,112,1,0,251,0,0,0,211,112,1,0,249,0,0,0,218,112,1,0,168,0,0,0,222,112,1,0,210,3,0,0,228,112,1,0,197,3,0,0,236,112,1,0,252,0,0,0,241,112,1,0,24,33,0,0,248,112,1,0,190,3,0,0,251,112,1,0,253,0,0,0,2,113,1,0,165,0,0,0,6,113,1,0,255,0,0,0,11,113,1,0,182,3,0,0,16,113,1,0,13,32,0,0,20,113,1,0,12,32,0,0,5,0,0,0,6,0,0,0,1,1,0,0,8,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,42,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,43,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,119,1,0,7,0,0,0,163,119,1,0,8,0,0,0,168,119,1,0,8,0,0,0,176,119,1,0,9,0,0,0,182,119,1,0,9,0,0,0,191,119,1,0,10,0,0,0,194,119,1,0,10,0,0,0,200,119,1,0,11,0,0,0,205,119,1,0,11,0,0,0,213,119,1,0,12,0,0,0,218,119,1,0,12,0,0,0,225,119,1,0,13,0,0,0,231,119,1,0,13,0,0,0,243,119,1,0,14,0,0,0,14,0,0,0,82,0,0,0,44,0,0,0,45,0,0,0,20,0,0,0,46,0,0,0,83,0,0,0,47,0,0,0,21,0,0,0,48,0,0,0,8,0,0,0,4,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,75,121,1,0,85,93,201,127,201,127,255,0,86,121,1,0,187,45,212,190,174,212,255,0,97,121,1,0,20,119,253,253,192,134,255,0,108,121,1,0,85,93,201,127,201,127,255,0,119,121,1,0,187,45,212,190,174,212,255,0,130,121,1,0,20,119,253,253,192,134,255,0,141,121,1,0,42,102,255,255,255,153,255,0,152,121,1,0,85,93,201,127,201,127,255,0,163,121,1,0,187,45,212,190,174,212,255,0,174,121,1,0,20,119,253,253,192,134,255,0,185,121,1,0,42,102,255,255,255,153,255,0,196,121,1,0,151,173,176,56,108,176,255,0,207,121,1,0,85,93,201,127,201,127,255,0,218,121,1,0,187,45,212,190,174,212,255,0,229,121,1,0,20,119,253,253,192,134,255,0,240,121,1,0,42,102,255,255,255,153,255,0,251,121,1,0,151,173,176,56,108,176,255,0,6,122,1,0,232,252,240,240,2,127,255,0,17,122,1,0,85,93,201,127,201,127,255,0,28,122,1,0,187,45,212,190,174,212,255,0,39,122,1,0,20,119,253,253,192,134,255,0,50,122,1,0,42,102,255,255,255,153,255,0,61,122,1,0,151,173,176,56,108,176,255,0,72,122,1,0,232,252,240,240,2,127,255,0,83,122,1,0,17,224,191,191,91,23,255,0,94,122,1,0,85,93,201,127,201,127,255,0,105,122,1,0,187,45,212,190,174,212,255,0,116,122,1,0,20,119,253,253,192,134,255,0,127,122,1,0,42,102,255,255,255,153,255,0,138,122,1,0,151,173,176,56,108,176,255,0,149,122,1,0,232,252,240,240,2,127,255,0,160,122,1,0,17,224,191,191,91,23,255,0,171,122,1,0,0,0,102,102,102,102,255,0,182,122,1,0,147,25,247,222,235,247,255,0,192,122,1,0,142,75,225,158,202,225,255,0,202,122,1,0,145,188,189,49,130,189,255,0,212,122,1,0,159,16,255,239,243,255,255,0,222,122,1,0,143,46,231,189,215,231,255,0,232,122,1,0,143,127,214,107,174,214,255,0,242,122,1,0,147,208,181,33,113,181,255,0,252,122,1,0,159,16,255,239,243,255,255,0,6,123,1,0,143,46,231,189,215,231,255,0,16,123,1,0,143,127,214,107,174,214,255,0,26,123,1,0,145,188,189,49,130,189,255,0,36,123,1,0,149,241,156,8,81,156,255,0,46,123,1,0,159,16,255,239,243,255,255,0,56,123,1,0,148,43,239,198,219,239,255,0,66,123,1,0,142,75,225,158,202,225,255,0,76,123,1,0,143,127,214,107,174,214,255,0,86,123,1,0,145,188,189,49,130,189,255,0,96,123,1,0,149,241,156,8,81,156,255,0,106,123,1,0,159,16,255,239,243,255,255,0,116,123,1,0,148,43,239,198,219,239,255,0,126,123,1,0,142,75,225,158,202,225,255,0,136,123,1,0,143,127,214,107,174,214,255,0,146,123,1,0,144,169,198,66,146,198,255,0,156,123,1,0,147,208,181,33,113,181,255,0,166,123,1,0,151,241,148,8,69,148,255,0,176,123,1,0,148,8,255,247,251,255,255,0,186,123,1,0,147,25,247,222,235,247,255,0,196,123,1,0,148,43,239,198,219,239,255,0,206,123,1,0,142,75,225,158,202,225,255,0,216,123,1,0,143,127,214,107,174,214,255,0,226,123,1,0,144,169,198,66,146,198,255,0,236,123,1,0,147,208,181,33,113,181,255,0,246,123,1,0,151,241,148,8,69,148,255,0,0,124,1,0,148,8,255,247,251,255,255,0,10,124,1,0,147,25,247,222,235,247,255,0,20,124,1,0,148,43,239,198,219,239,255,0,30,124,1,0,142,75,225,158,202,225,255,0,40,124,1,0,143,127,214,107,174,214,255,0,50,124,1,0,144,169,198,66,146,198,255,0,60,124,1,0,147,208,181,33,113,181,255,0,70,124,1,0,149,241,156,8,81,156,255,0,80,124,1,0,152,235,107,8,48,107,255,0,90,124,1,0,23,239,84,84,48,5,255,0,100,124,1,0,119,255,60,0,60,48,255,0,111,124,1,0,23,236,140,140,81,10,255,0,121,124,1,0,24,194,191,191,129,45,255,0,131,124,1,0,29,112,223,223,194,125,255,0,141,124,1,0,30,52,246,246,232,195,255,0,151,124,1,0,121,38,234,199,234,229,255,0,161,124,1,0,120,95,205,128,205,193,255,0,171,124,1,0,124,165,151,53,151,143,255,0,181,124,1,0,124,252,102,1,102,94,255,0,191,124,1,0,23,239,84,84,48,5,255,0,201,124,1,0,124,252,102,1,102,94,255,0,212,124,1,0,119,255,60,0,60,48,255,0,223,124,1,0,23,236,140,140,81,10,255,0,233,124,1,0,24,194,191,191,129,45,255,0,243,124,1,0,29,112,223,223,194,125,255,0,253,124,1,0,30,52,246,246,232,195,255,0,7,125,1,0,0,0,245,245,245,245,255,0,17,125,1,0,121,38,234,199,234,229,255,0,27,125,1,0,120,95,205,128,205,193,255,0,37,125,1,0,124,165,151,53,151,143,255,0,47,125,1,0,28,135,216,216,179,101,255,0,56,125,1,0,0,0,245,245,245,245,255,0,65,125,1,0,123,127,180,90,180,172,255,0,74,125,1,0,21,215,166,166,97,26,255,0,83,125,1,0,29,112,223,223,194,125,255,0,92,125,1,0,120,95,205,128,205,193,255,0,101,125,1,0,121,253,133,1,133,113,255,0,110,125,1,0,21,215,166,166,97,26,255,0,119,125,1,0,29,112,223,223,194,125,255,0,128,125,1,0,0,0,245,245,245,245,255,0,137,125,1,0,120,95,205,128,205,193,255,0,146,125,1,0,121,253,133,1,133,113,255,0,155,125,1,0,23,236,140,140,81,10,255,0,164,125,1,0,28,135,216,216,179,101,255,0,173,125,1,0,30,52,246,246,232,195,255,0,182,125,1,0,121,38,234,199,234,229,255,0,191,125,1,0,123,127,180,90,180,172,255,0,200,125,1,0,124,252,102,1,102,94,255,0,209,125,1,0,23,236,140,140,81,10,255,0,218,125,1,0,28,135,216,216,179,101,255,0,227,125,1,0,30,52,246,246,232,195,255,0,236,125,1,0,0,0,245,245,245,245,255,0,245,125,1,0,121,38,234,199,234,229,255,0,254,125,1,0,123,127,180,90,180,172,255,0,7,126,1,0,124,252,102,1,102,94,255,0,16,126,1,0,23,236,140,140,81,10,255,0,25,126,1,0,24,194,191,191,129,45,255,0,34,126,1,0,29,112,223,223,194,125,255,0,43,126,1,0,30,52,246,246,232,195,255,0,52,126,1,0,121,38,234,199,234,229,255,0,61,126,1,0,120,95,205,128,205,193,255,0,70,126,1,0,124,165,151,53,151,143,255,0,79,126,1,0,124,252,102,1,102,94,255,0,88,126,1,0,23,236,140,140,81,10,255,0,97,126,1,0,24,194,191,191,129,45,255,0,106,126,1,0,29,112,223,223,194,125,255,0,115,126,1,0,30,52,246,246,232,195,255,0,124,126,1,0,0,0,245,245,245,245,255,0,133,126,1,0,121,38,234,199,234,229,255,0,142,126,1,0,120,95,205,128,205,193,255,0,151,126,1,0,124,165,151,53,151,143,255,0,160,126,1,0,124,252,102,1,102,94,255,0,169,126,1,0,135,20,249,229,245,249,255,0,178,126,1,0,117,74,216,153,216,201,255,0,187,126,1,0,103,185,162,44,162,95,255,0,196,126,1,0,136,14,251,237,248,251,255,0,205,126,1,0,127,54,226,178,226,226,255,0,214,126,1,0,113,120,194,102,194,164,255,0,223,126,1,0,98,190,139,35,139,69,255,0,232,126,1,0,136,14,251,237,248,251,255,0,241,126,1,0,127,54,226,178,226,226,255,0,250,126,1,0,113,120,194,102,194,164,255,0,3,127,1,0,103,185,162,44,162,95,255,0,12,127,1,0,102,255,109,0,109,44,255,0,21,127,1,0,136,14,251,237,248,251,255,0,30,127,1,0,119,34,236,204,236,230,255,0,39,127,1,0,117,74,216,153,216,201,255,0,48,127,1,0,113,120,194,102,194,164,255,0,57,127,1,0,103,185,162,44,162,95,255,0,66,127,1,0,102,255,109,0,109,44,255,0,75,127,1,0,136,14,251,237,248,251,255,0,84,127,1,0,119,34,236,204,236,230,255,0,93,127,1,0,117,74,216,153,216,201,255,0,102,127,1,0,113,120,194,102,194,164,255,0,111,127,1,0,105,159,174,65,174,118,255,0,120,127,1,0,98,190,139,35,139,69,255,0,129,127,1,0,102,255,88,0,88,36,255,0,138,127,1,0,134,6,253,247,252,253,255,0,147,127,1,0,135,20,249,229,245,249,255,0,156,127,1,0,119,34,236,204,236,230,255,0,165,127,1,0,117,74,216,153,216,201,255,0,174,127,1,0,113,120,194,102,194,164,255,0,183,127,1,0,105,159,174,65,174,118,255,0,192,127,1,0,98,190,139,35,139,69,255,0,201,127,1,0,102,255,88,0,88,36,255,0,210,127,1,0,134,6,253,247,252,253,255,0,219,127,1,0,135,20,249,229,245,249,255,0,228,127,1,0,119,34,236,204,236,230,255,0,237,127,1,0,117,74,216,153,216,201,255,0,246,127,1,0,113,120,194,102,194,164,255,0,255,127,1,0,105,159,174,65,174,118,255,0,8,128,1,0,98,190,139,35,139,69,255,0,17,128,1,0,102,255,109,0,109,44,255,0,26,128,1,0,101,255,68,0,68,27,255,0,35,128,1,0,144,20,244,224,236,244,255,0,44,128,1,0,148,70,218,158,188,218,255,0,53,128,1,0,196,123,167,136,86,167,255,0,62,128,1,0,136,14,251,237,248,251,255,0,71,128,1,0,146,53,227,179,205,227,255,0,80,128,1,0,162,74,198,140,150,198,255,0,89,128,1,0,202,149,157,136,65,157,255,0,98,128,1,0,136,14,251,237,248,251,255,0,107,128,1,0,146,53,227,179,205,227,255,0,116,128,1,0,162,74,198,140,150,198,255,0,125,128,1,0,196,123,167,136,86,167,255,0,134,128,1,0,214,225,129,129,15,124,255,0,143,128,1,0,136,14,251,237,248,251,255,0,152,128,1,0,148,43,230,191,211,230,255,0,161,128,1,0,148,70,218,158,188,218,255,0,170,128,1,0,162,74,198,140,150,198,255,0,179,128,1,0,196,123,167,136,86,167,255,0,188,128,1,0,214,225,129,129,15,124,255,0,197,128,1,0,136,14,251,237,248,251,255,0,206,128,1,0,148,43,230,191,211,230,255,0,215,128,1,0,148,70,218,158,188,218,255,0,224,128,1,0,162,74,198,140,150,198,255,0,233,128,1,0,190,100,177,140,107,177,255,0,242,128,1,0,202,149,157,136,65,157,255,0,251,128,1,0,213,252,110,110,1,107,255,0,4,129,1,0,134,6,253,247,252,253,255,0,13,129,1,0,144,20,244,224,236,244,255,0,22,129,1,0,148,43,230,191,211,230,255,0,31,129,1,0,148,70,218,158,188,218,255,0,40,129,1,0,162,74,198,140,150,198,255,0,49,129,1,0,190,100,177,140,107,177,255,0,58,129,1,0,202,149,157,136,65,157,255,0,67,129,1,0,213,252,110,110,1,107,255,0,76,129,1,0,134,6,253,247,252,253,255,0,85,129,1,0,144,20,244,224,236,244,255,0,94,129,1,0,148,43,230,191,211,230,255,0,103,129,1,0,148,70,218,158,188,218,255,0,112,129,1,0,162,74,198,140,150,198,255,0,121,129,1,0,190,100,177,140,107,177,255,0,130,129,1,0,202,149,157,136,65,157,255,0,139,129,1,0,214,225,129,129,15,124,255,0,148,129,1,0,213,255,77,77,0,75,255,0,157,129,1,0,114,211,158,27,158,119,255,0,167,129,1,0,18,252,217,217,95,2,255,0,177,129,1,0,173,95,179,117,112,179,255,0,187,129,1,0,114,211,158,27,158,119,255,0,197,129,1,0,18,252,217,217,95,2,255,0,207,129,1,0,173,95,179,117,112,179,255,0,217,129,1,0,233,209,231,231,41,138,255,0,227,129,1,0,114,211,158,27,158,119,255,0,237,129,1,0,18,252,217,217,95,2,255,0,247,129,1,0,173,95,179,117,112,179,255,0,1,130,1,0,233,209,231,231,41,138,255,0,11,130,1,0,62,208,166,102,166,30,255,0,21,130,1,0,114,211,158,27,158,119,255,0,31,130,1,0,18,252,217,217,95,2,255,0,41,130,1,0,173,95,179,117,112,179,255,0,51,130,1,0,233,209,231,231,41,138,255,0,61,130,1,0,62,208,166,102,166,30,255,0,71,130,1,0,31,252,230,230,171,2,255,0,81,130,1,0,114,211,158,27,158,119,255,0,91,130,1,0,18,252,217,217,95,2,255,0,101,130,1,0,173,95,179,117,112,179,255,0,111,130,1,0,233,209,231,231,41,138,255,0,121,130,1,0,62,208,166,102,166,30,255,0,131,130,1,0,31,252,230,230,171,2,255,0,141,130,1,0,27,210,166,166,118,29,255,0,151,130,1,0,114,211,158,27,158,119,255,0,161,130,1,0,18,252,217,217,95,2,255,0,171,130,1,0,173,95,179,117,112,179,255,0,181,130,1,0,233,209,231,231,41,138,255,0,191,130,1,0,62,208,166,102,166,30,255,0,201,130,1,0,31,252,230,230,171,2,255,0,211,130,1,0,27,210,166,166,118,29,255,0,221,130,1,0,0,0,102,102,102,102,255,0,231,130,1,0,76,25,243,224,243,219,255,0,240,130,1,0,95,61,221,168,221,181,255,0,249,130,1,0,140,170,202,67,162,202,255,0,2,131,1,0,65,17,249,240,249,232,255,0,11,131,1,0,87,46,228,186,228,188,255,0,20,131,1,0,123,101,204,123,204,196,255,0,29,131,1,0,141,197,190,43,140,190,255,0,38,131,1,0,65,17,249,240,249,232,255,0,47,131,1,0,87,46,228,186,228,188,255,0,56,131,1,0,123,101,204,123,204,196,255,0,65,131,1,0,140,170,202,67,162,202,255,0,74,131,1,0,145,243,172,8,104,172,255,0,83,131,1,0,65,17,249,240,249,232,255,0,92,131,1,0,77,41,235,204,235,197,255,0,101,131,1,0,95,61,221,168,221,181,255,0,110,131,1,0,123,101,204,123,204,196,255,0,119,131,1,0,140,170,202,67,162,202,255,0,128,131,1,0,145,243,172,8,104,172,255,0,137,131,1,0,65,17,249,240,249,232,255,0,146,131,1,0,77,41,235,204,235,197,255,0,155,131,1,0,95,61,221,168,221,181,255,0,164,131,1,0,123,101,204,123,204,196,255,0,173,131,1,0,137,160,211,78,179,211,255,0,182,131,1,0,141,197,190,43,140,190,255,0,191,131,1,0,147,242,158,8,88,158,255,0,200,131,1,0,60,12,252,247,252,240,255,0,209,131,1,0,76,25,243,224,243,219,255,0,218,131,1,0,77,41,235,204,235,197,255,0,227,131,1,0,95,61,221,168,221,181,255,0,236,131,1,0,123,101,204,123,204,196,255,0,245,131,1,0,137,160,211,78,179,211,255,0,254,131,1,0,141,197,190,43,140,190,255,0,7,132,1,0,147,242,158,8,88,158,255,0,16,132,1,0,60,12,252,247,252,240,255,0,25,132,1,0,76,25,243,224,243,219,255,0,34,132,1,0,77,41,235,204,235,197,255,0,43,132,1,0,95,61,221,168,221,181,255,0,52,132,1,0,123,101,204,123,204,196,255,0,61,132,1,0,137,160,211,78,179,211,255,0,70,132,1,0,141,197,190,43,140,190,255,0,79,132,1,0,145,243,172,8,104,172,255,0,88,132,1,0,150,239,129,8,64,129,255,0,97,132,1,0,74,21,245,229,245,224,255,0,108,132,1,0,80,72,217,161,217,155,255,0,119,132,1,0,98,178,163,49,163,84,255,0,130,132,1,0,73,15,248,237,248,233,255,0,141,132,1,0,78,54,228,186,228,179,255,0,152,132,1,0,86,104,196,116,196,118,255,0,163,132,1,0,98,190,139,35,139,69,255,0,174,132,1,0,73,15,248,237,248,233,255,0,185,132,1,0,78,54,228,186,228,179,255,0,196,132,1,0,86,104,196,116,196,118,255,0,207,132,1,0,98,178,163,49,163,84,255,0,218,132,1,0,102,255,109,0,109,44,255,0,229,132,1,0,73,15,248,237,248,233,255,0,240,132,1,0,77,44,233,199,233,192,255,0,251,132,1,0,80,72,217,161,217,155,255,0,6,133,1,0,86,104,196,116,196,118,255,0,17,133,1,0,98,178,163,49,163,84,255,0,28,133,1,0,102,255,109,0,109,44,255,0,39,133,1,0,73,15,248,237,248,233,255,0,50,133,1,0,77,44,233,199,233,192,255,0,61,133,1,0,80,72,217,161,217,155,255,0,72,133,1,0,86,104,196,116,196,118,255,0,83,133,1,0,96,158,171,65,171,93,255,0,94,133,1,0,98,190,139,35,139,69,255,0,105,133,1,0,108,255,90,0,90,50,255,0,116,133,1,0,72,7,252,247,252,245,255,0,127,133,1,0,74,21,245,229,245,224,255,0,138,133,1,0,77,44,233,199,233,192,255,0,149,133,1,0,80,72,217,161,217,155,255,0,160,133,1,0,86,104,196,116,196,118,255,0,171,133,1,0,96,158,171,65,171,93,255,0,182,133,1,0,98,190,139,35,139,69,255,0,193,133,1,0,108,255,90,0,90,50,255,0,204,133,1,0,72,7,252,247,252,245,255,0,215,133,1,0,74,21,245,229,245,224,255,0,226,133,1,0,77,44,233,199,233,192,255,0,237,133,1,0,80,72,217,161,217,155,255,0,248,133,1,0,86,104,196,116,196,118,255,0,3,134,1,0,96,158,171,65,171,93,255,0,14,134,1,0,98,190,139,35,139,69,255,0,25,134,1,0,102,255,109,0,109,44,255,0,36,134,1,0,101,255,68,0,68,27,255,0,47,134,1,0,0,0,240,240,240,240,255,0,57,134,1,0,0,0,189,189,189,189,255,0,67,134,1,0,0,0,99,99,99,99,255,0,77,134,1,0,0,0,247,247,247,247,255,0,87,134,1,0,0,0,204,204,204,204,255,0,97,134,1,0,0,0,150,150,150,150,255,0,107,134,1,0,0,0,82,82,82,82,255,0,117,134,1,0,0,0,247,247,247,247,255,0,127,134,1,0,0,0,204,204,204,204,255,0,137,134,1,0,0,0,150,150,150,150,255,0,147,134,1,0,0,0,99,99,99,99,255,0,157,134,1,0,0,0,37,37,37,37,255,0,167,134,1,0,0,0,247,247,247,247,255,0,177,134,1,0,0,0,217,217,217,217,255,0,187,134,1,0,0,0,189,189,189,189,255,0,197,134,1,0,0,0,150,150,150,150,255,0,207,134,1,0,0,0,99,99,99,99,255,0,217,134,1,0,0,0,37,37,37,37,255,0,227,134,1,0,0,0,247,247,247,247,255,0,237,134,1,0,0,0,217,217,217,217,255,0,247,134,1,0,0,0,189,189,189,189,255,0,1,135,1,0,0,0,150,150,150,150,255,0,11,135,1,0,0,0,115,115,115,115,255,0,21,135,1,0,0,0,82,82,82,82,255,0,31,135,1,0,0,0,37,37,37,37,255,0,41,135,1,0,0,0,255,255,255,255,255,0,51,135,1,0,0,0,240,240,240,240,255,0,61,135,1,0,0,0,217,217,217,217,255,0,71,135,1,0,0,0,189,189,189,189,255,0,81,135,1,0,0,0,150,150,150,150,255,0,91,135,1,0,0,0,115,115,115,115,255,0,101,135,1,0,0,0,82,82,82,82,255,0,111,135,1,0,0,0,37,37,37,37,255,0,121,135,1,0,0,0,255,255,255,255,255,0,131,135,1,0,0,0,240,240,240,240,255,0,141,135,1,0,0,0,217,217,217,217,255,0,151,135,1,0,0,0,189,189,189,189,255,0,161,135,1,0,0,0,150,150,150,150,255,0,171,135,1,0,0,0,115,115,115,115,255,0,181,135,1,0,0,0,82,82,82,82,255,0,191,135,1,0,0,0,37,37,37,37,255,0,201,135,1,0,0,0,0,0,0,0,255,0,211,135,1,0,21,48,254,254,230,206,255,0,223,135,1,0,19,147,253,253,174,107,255,0,235,135,1,0,14,240,230,230,85,13,255,0,247,135,1,0,19,32,254,254,237,222,255,0,3,136,1,0,20,120,253,253,190,133,255,0,15,136,1,0,17,194,253,253,141,60,255,0,27,136,1,0,13,253,217,217,71,1,255,0,39,136,1,0,19,32,254,254,237,222,255,0,51,136,1,0,20,120,253,253,190,133,255,0,63,136,1,0,17,194,253,253,141,60,255,0,75,136,1,0,14,240,230,230,85,13,255,0,87,136,1,0,13,250,166,166,54,3,255,0,99,136,1,0,19,32,254,254,237,222,255,0,111,136,1,0,21,91,253,253,208,162,255,0,123,136,1,0,19,147,253,253,174,107,255,0,135,136,1,0,17,194,253,253,141,60,255,0,147,136,1,0,14,240,230,230,85,13,255,0,159,136,1,0,13,250,166,166,54,3,255,0,171,136,1,0,19,32,254,254,237,222,255,0,183,136,1,0,21,91,253,253,208,162,255,0,195,136,1,0,19,147,253,253,174,107,255,0,207,136,1,0,17,194,253,253,141,60,255,0,219,136,1,0,16,234,241,241,105,19,255,0,231,136,1,0,13,253,217,217,72,1,255,0,243,136,1,0,12,247,140,140,45,4,255,0,255,136,1,0,21,20,255,255,245,235,255,0,11,137,1,0,21,48,254,254,230,206,255,0,23,137,1,0,21,91,253,253,208,162,255,0,35,137,1,0,19,147,253,253,174,107,255,0,47,137,1,0,17,194,253,253,141,60,255,0,59,137,1,0,16,234,241,241,105,19,255,0,71,137,1,0,13,253,217,217,72,1,255,0,83,137,1,0,12,247,140,140,45,4,255,0,95,137,1,0,21,20,255,255,245,235,255,0,107,137,1,0,21,48,254,254,230,206,255,0,119,137,1,0,21,91,253,253,208,162,255,0,131,137,1,0,19,147,253,253,174,107,255,0,143,137,1,0,17,194,253,253,141,60,255,0,155,137,1,0,16,234,241,241,105,19,255,0,167,137,1,0,13,253,217,217,72,1,255,0,179,137,1,0,13,250,166,166,54,3,255,0,191,137,1,0,12,246,127,127,39,4,255,0,203,137,1,0,25,54,254,254,232,200,255,0,212,137,1,0,19,121,253,253,187,132,255,0,221,137,1,0,5,197,227,227,74,51,255,0,230,137,1,0,26,37,254,254,240,217,255,0,239,137,1,0,24,115,253,253,204,138,255,0,248,137,1,0,13,164,252,252,141,89,255,0,1,138,1,0,3,218,215,215,48,31,255,0,10,138,1,0,26,37,254,254,240,217,255,0,19,138,1,0,24,115,253,253,204,138,255,0,28,138,1,0,13,164,252,252,141,89,255,0,37,138,1,0,5,197,227,227,74,51,255,0,46,138,1,0,0,255,179,179,0,0,255,0,55,138,1,0,26,37,254,254,240,217,255,0,64,138,1,0,24,95,253,253,212,158,255,0,73,138,1,0,19,121,253,253,187,132,255,0,82,138,1,0,13,164,252,252,141,89,255,0,91,138,1,0,5,197,227,227,74,51,255,0,100,138,1,0,0,255,179,179,0,0,255,0,109,138,1,0,26,37,254,254,240,217,255,0,118,138,1,0,24,95,253,253,212,158,255,0,127,138,1,0,19,121,253,253,187,132,255,0,136,138,1,0,13,164,252,252,141,89,255,0,145,138,1,0,7,178,239,239,101,72,255,0,154,138,1,0,3,218,215,215,48,31,255,0,163,138,1,0,0,255,153,153,0,0,255,0,172,138,1,0,24,18,255,255,247,236,255,0,181,138,1,0,25,54,254,254,232,200,255,0,190,138,1,0,24,95,253,253,212,158,255,0,199,138,1,0,19,121,253,253,187,132,255,0,208,138,1,0,13,164,252,252,141,89,255,0,217,138,1,0,7,178,239,239,101,72,255,0,226,138,1,0,3,218,215,215,48,31,255,0,235,138,1,0,0,255,153,153,0,0,255,0,244,138,1,0,24,18,255,255,247,236,255,0,253,138,1,0,25,54,254,254,232,200,255,0,6,139,1,0,24,95,253,253,212,158,255,0,15,139,1,0,19,121,253,253,187,132,255,0,24,139,1,0,13,164,252,252,141,89,255,0,33,139,1,0,7,178,239,239,101,72,255,0,42,139,1,0,3,218,215,215,48,31,255,0,51,139,1,0,0,255,179,179,0,0,255,0,60,139,1,0,0,255,127,127,0,0,255,0,69,139,1,0,142,68,227,166,206,227,255,0,81,139,1,0,190,153,154,106,61,154,255,0,94,139,1,0,144,211,180,31,120,180,255,0,106,139,1,0,65,97,223,178,223,138,255,0,118,139,1,0,82,184,160,51,160,44,255,0,130,139,1,0,0,99,251,251,154,153,255,0,142,139,1,0,254,225,227,227,26,28,255,0,154,139,1,0,23,143,253,253,191,111,255,0,166,139,1,0,21,255,255,255,127,0,255,0,178,139,1,0,198,42,214,202,178,214,255,0,190,139,1,0,142,68,227,166,206,227,255,0,202,139,1,0,190,153,154,106,61,154,255,0,215,139,1,0,42,102,255,255,255,153,255,0,228,139,1,0,144,211,180,31,120,180,255,0,240,139,1,0,65,97,223,178,223,138,255,0,252,139,1,0,82,184,160,51,160,44,255,0,8,140,1,0,0,99,251,251,154,153,255,0,20,140,1],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);allocate([254,225,227,227,26,28,255,0,32,140,1,0,23,143,253,253,191,111,255,0,44,140,1,0,21,255,255,255,127,0,255,0,56,140,1,0,198,42,214,202,178,214,255,0,68,140,1,0,142,68,227,166,206,227,255,0,80,140,1,0,190,153,154,106,61,154,255,0,93,140,1,0,42,102,255,255,255,153,255,0,106,140,1,0,15,197,177,177,89,40,255,0,119,140,1,0,144,211,180,31,120,180,255,0,131,140,1,0,65,97,223,178,223,138,255,0,143,140,1,0,82,184,160,51,160,44,255,0,155,140,1,0,0,99,251,251,154,153,255,0,167,140,1,0,254,225,227,227,26,28,255,0,179,140,1,0,23,143,253,253,191,111,255,0,191,140,1,0,21,255,255,255,127,0,255,0,203,140,1,0,198,42,214,202,178,214,255,0,215,140,1,0,142,68,227,166,206,227,255,0,226,140,1,0,144,211,180,31,120,180,255,0,237,140,1,0,65,97,223,178,223,138,255,0,248,140,1,0,142,68,227,166,206,227,255,0,3,141,1,0,144,211,180,31,120,180,255,0,14,141,1,0,65,97,223,178,223,138,255,0,25,141,1,0,82,184,160,51,160,44,255,0,36,141,1,0,142,68,227,166,206,227,255,0,47,141,1,0,144,211,180,31,120,180,255,0,58,141,1,0,65,97,223,178,223,138,255,0,69,141,1,0,82,184,160,51,160,44,255,0,80,141,1,0,0,99,251,251,154,153,255,0,91,141,1,0,142,68,227,166,206,227,255,0,102,141,1,0,144,211,180,31,120,180,255,0,113,141,1,0,65,97,223,178,223,138,255,0,124,141,1,0,82,184,160,51,160,44,255,0,135,141,1,0,0,99,251,251,154,153,255,0,146,141,1,0,254,225,227,227,26,28,255,0,157,141,1,0,142,68,227,166,206,227,255,0,168,141,1,0,144,211,180,31,120,180,255,0,179,141,1,0,65,97,223,178,223,138,255,0,190,141,1,0,82,184,160,51,160,44,255,0,201,141,1,0,0,99,251,251,154,153,255,0,212,141,1,0,254,225,227,227,26,28,255,0,223,141,1,0,23,143,253,253,191,111,255,0,234,141,1,0,142,68,227,166,206,227,255,0,245,141,1,0,144,211,180,31,120,180,255,0,0,142,1,0,65,97,223,178,223,138,255,0,11,142,1,0,82,184,160,51,160,44,255,0,22,142,1,0,0,99,251,251,154,153,255,0,33,142,1,0,254,225,227,227,26,28,255,0,44,142,1,0,23,143,253,253,191,111,255,0,55,142,1,0,21,255,255,255,127,0,255,0,66,142,1,0,142,68,227,166,206,227,255,0,77,142,1,0,144,211,180,31,120,180,255,0,88,142,1,0,65,97,223,178,223,138,255,0,99,142,1,0,82,184,160,51,160,44,255,0,110,142,1,0,0,99,251,251,154,153,255,0,121,142,1,0,254,225,227,227,26,28,255,0,132,142,1,0,23,143,253,253,191,111,255,0,143,142,1,0,21,255,255,255,127,0,255,0,154,142,1,0,198,42,214,202,178,214,255,0,165,142,1,0,3,78,251,251,180,174,255,0,177,142,1,0,146,53,227,179,205,227,255,0,189,142,1,0,77,41,235,204,235,197,255,0,201,142,1,0,3,78,251,251,180,174,255,0,213,142,1,0,146,53,227,179,205,227,255,0,225,142,1,0,77,41,235,204,235,197,255,0,237,142,1,0,202,27,228,222,203,228,255,0,249,142,1,0,3,78,251,251,180,174,255,0,5,143,1,0,146,53,227,179,205,227,255,0,17,143,1,0,77,41,235,204,235,197,255,0,29,143,1,0,202,27,228,222,203,228,255,0,41,143,1,0,24,88,254,254,217,166,255,0,53,143,1,0,3,78,251,251,180,174,255,0,65,143,1,0,146,53,227,179,205,227,255,0,77,143,1,0,77,41,235,204,235,197,255,0,89,143,1,0,202,27,228,222,203,228,255,0,101,143,1,0,24,88,254,254,217,166,255,0,113,143,1,0,42,50,255,255,255,204,255,0,125,143,1,0,3,78,251,251,180,174,255,0,137,143,1,0,146,53,227,179,205,227,255,0,149,143,1,0,77,41,235,204,235,197,255,0,161,143,1,0,202,27,228,222,203,228,255,0,173,143,1,0,24,88,254,254,217,166,255,0,185,143,1,0,42,50,255,255,255,204,255,0,197,143,1,0,28,44,229,229,216,189,255,0,209,143,1,0,3,78,251,251,180,174,255,0,221,143,1,0,146,53,227,179,205,227,255,0,233,143,1,0,77,41,235,204,235,197,255,0,245,143,1,0,202,27,228,222,203,228,255,0,1,144,1,0,24,88,254,254,217,166,255,0,13,144,1,0,42,50,255,255,255,204,255,0,25,144,1,0,28,44,229,229,216,189,255,0,37,144,1,0,233,35,253,253,218,236,255,0,49,144,1,0,3,78,251,251,180,174,255,0,61,144,1,0,146,53,227,179,205,227,255,0,73,144,1,0,77,41,235,204,235,197,255,0,85,144,1,0,202,27,228,222,203,228,255,0,97,144,1,0,24,88,254,254,217,166,255,0,109,144,1,0,42,50,255,255,255,204,255,0,121,144,1,0,28,44,229,229,216,189,255,0,133,144,1,0,233,35,253,253,218,236,255,0,145,144,1,0,0,0,242,242,242,242,255,0,157,144,1,0,108,53,226,179,226,205,255,0,169,144,1,0,17,81,253,253,205,172,255,0,181,144,1,0,155,31,232,203,213,232,255,0,193,144,1,0,108,53,226,179,226,205,255,0,205,144,1,0,17,81,253,253,205,172,255,0,217,144,1,0,155,31,232,203,213,232,255,0,229,144,1,0,228,43,244,244,202,228,255,0,241,144,1,0,108,53,226,179,226,205,255,0,253,144,1,0,17,81,253,253,205,172,255,0,9,145,1,0,155,31,232,203,213,232,255,0,21,145,1,0,228,43,244,244,202,228,255,0,33,145,1,0,56,45,245,230,245,201,255,0,45,145,1,0,108,53,226,179,226,205,255,0,57,145,1,0,17,81,253,253,205,172,255,0,69,145,1,0,155,31,232,203,213,232,255,0,81,145,1,0,228,43,244,244,202,228,255,0,93,145,1,0,56,45,245,230,245,201,255,0,105,145,1,0,35,81,255,255,242,174,255,0,117,145,1,0,108,53,226,179,226,205,255,0,129,145,1,0,17,81,253,253,205,172,255,0,141,145,1,0,155,31,232,203,213,232,255,0,153,145,1,0,228,43,244,244,202,228,255,0,165,145,1,0,56,45,245,230,245,201,255,0,177,145,1,0,35,81,255,255,242,174,255,0,189,145,1,0,25,39,241,241,226,204,255,0,201,145,1,0,108,53,226,179,226,205,255,0,213,145,1,0,17,81,253,253,205,172,255,0,225,145,1,0,155,31,232,203,213,232,255,0,237,145,1,0,228,43,244,244,202,228,255,0,249,145,1,0,56,45,245,230,245,201,255,0,5,146,1,0,35,81,255,255,242,174,255,0,17,146,1,0,25,39,241,241,226,204,255,0,29,146,1,0,0,0,204,204,204,204,255,0,41,146,1,0,230,253,142,142,1,82,255,0,51,146,1,0,77,191,100,39,100,25,255,0,62,146,1,0,230,220,197,197,27,125,255,0,72,146,1,0,232,118,222,222,119,174,255,0,82,146,1,0,229,62,241,241,182,218,255,0,92,146,1,0,233,29,253,253,224,239,255,0,102,146,1,0,59,38,245,230,245,208,255,0,112,146,1,0,61,103,225,184,225,134,255,0,122,146,1,0,63,166,188,127,188,65,255,0,132,146,1,0,68,197,146,77,146,33,255,0,142,146,1,0,230,253,142,142,1,82,255,0,152,146,1,0,68,197,146,77,146,33,255,0,163,146,1,0,77,191,100,39,100,25,255,0,174,146,1,0,230,220,197,197,27,125,255,0,184,146,1,0,232,118,222,222,119,174,255,0,194,146,1,0,229,62,241,241,182,218,255,0,204,146,1,0,233,29,253,253,224,239,255,0,214,146,1,0,0,0,247,247,247,247,255,0,224,146,1,0,59,38,245,230,245,208,255,0,234,146,1,0,61,103,225,184,225,134,255,0,244,146,1,0,63,166,188,127,188,65,255,0,254,146,1,0,231,76,233,233,163,201,255,0,7,147,1,0,0,0,247,247,247,247,255,0,16,147,1,0,63,129,215,161,215,106,255,0,25,147,1,0,228,220,208,208,28,139,255,0,34,147,1,0,229,62,241,241,182,218,255,0,43,147,1,0,61,103,225,184,225,134,255,0,52,147,1,0,72,198,172,77,172,38,255,0,61,147,1,0,228,220,208,208,28,139,255,0,70,147,1,0,229,62,241,241,182,218,255,0,79,147,1,0,0,0,247,247,247,247,255,0,88,147,1,0,61,103,225,184,225,134,255,0,97,147,1,0,72,198,172,77,172,38,255,0,106,147,1,0,230,220,197,197,27,125,255,0,115,147,1,0,231,76,233,233,163,201,255,0,124,147,1,0,233,29,253,253,224,239,255,0,133,147,1,0,59,38,245,230,245,208,255,0,142,147,1,0,63,129,215,161,215,106,255,0,151,147,1,0,68,197,146,77,146,33,255,0,160,147,1,0,230,220,197,197,27,125,255,0,169,147,1,0,231,76,233,233,163,201,255,0,178,147,1,0,233,29,253,253,224,239,255,0,187,147,1,0,0,0,247,247,247,247,255,0,196,147,1,0,59,38,245,230,245,208,255,0,205,147,1,0,63,129,215,161,215,106,255,0,214,147,1,0,68,197,146,77,146,33,255,0,223,147,1,0,230,220,197,197,27,125,255,0,232,147,1,0,232,118,222,222,119,174,255,0,241,147,1,0,229,62,241,241,182,218,255,0,250,147,1,0,233,29,253,253,224,239,255,0,3,148,1,0,59,38,245,230,245,208,255,0,12,148,1,0,61,103,225,184,225,134,255,0,21,148,1,0,63,166,188,127,188,65,255,0,30,148,1,0,68,197,146,77,146,33,255,0,39,148,1,0,230,220,197,197,27,125,255,0,48,148,1,0,232,118,222,222,119,174,255,0,57,148,1,0,229,62,241,241,182,218,255,0,66,148,1,0,233,29,253,253,224,239,255,0,75,148,1,0,0,0,247,247,247,247,255,0,84,148,1,0,59,38,245,230,245,208,255,0,93,148,1,0,61,103,225,184,225,134,255,0,102,148,1,0,63,166,188,127,188,65,255,0,111,148,1,0,68,197,146,77,146,33,255,0,120,148,1,0,206,255,75,64,0,75,255,0,130,148,1,0,101,255,68,0,68,27,255,0,141,148,1,0,206,173,131,118,42,131,255,0,151,148,1,0,199,87,171,153,112,171,255,0,161,148,1,0,199,51,207,194,165,207,255,0,171,148,1,0,210,21,232,231,212,232,255,0,181,148,1,0,76,30,240,217,240,211,255,0,191,148,1,0,80,68,219,166,219,160,255,0,201,148,1,0,88,123,174,90,174,97,255,0,211,148,1,0,97,197,120,27,120,55,255,0,221,148,1,0,206,255,75,64,0,75,255,0,231,148,1,0,97,197,120,27,120,55,255,0,242,148,1,0,101,255,68,0,68,27,255,0,253,148,1,0,206,173,131,118,42,131,255,0,7,149,1,0,199,87,171,153,112,171,255,0,17,149,1,0,199,51,207,194,165,207,255,0,27,149,1,0,210,21,232,231,212,232,255,0,37,149,1,0,0,0,247,247,247,247,255,0,47,149,1,0,76,30,240,217,240,211,255,0,57,149,1,0,80,68,219,166,219,160,255,0,67,149,1,0,88,123,174,90,174,97,255,0,77,149,1,0,196,70,195,175,141,195,255,0,86,149,1,0,0,0,247,247,247,247,255,0,95,149,1,0,82,90,191,127,191,123,255,0,104,149,1,0,201,168,148,123,50,148,255,0,113,149,1,0,199,51,207,194,165,207,255,0,122,149,1,0,80,68,219,166,219,160,255,0,131,149,1,0,102,255,136,0,136,55,255,0,140,149,1,0,201,168,148,123,50,148,255,0,149,149,1,0,199,51,207,194,165,207,255,0,158,149,1,0,0,0,247,247,247,247,255,0,167,149,1,0,80,68,219,166,219,160,255,0,176,149,1,0,102,255,136,0,136,55,255,0,185,149,1,0,206,173,131,118,42,131,255,0,194,149,1,0,196,70,195,175,141,195,255,0,203,149,1,0,210,21,232,231,212,232,255,0,212,149,1,0,76,30,240,217,240,211,255,0,221,149,1,0,82,90,191,127,191,123,255,0,230,149,1,0,97,197,120,27,120,55,255,0,239,149,1,0,206,173,131,118,42,131,255,0,248,149,1,0,196,70,195,175,141,195,255,0,1,150,1,0,210,21,232,231,212,232,255,0,10,150,1,0,0,0,247,247,247,247,255,0,19,150,1,0,76,30,240,217,240,211,255,0,28,150,1,0,82,90,191,127,191,123,255,0,37,150,1,0,97,197,120,27,120,55,255,0,46,150,1,0,206,173,131,118,42,131,255,0,55,150,1,0,199,87,171,153,112,171,255,0,64,150,1,0,199,51,207,194,165,207,255,0,73,150,1,0,210,21,232,231,212,232,255,0,82,150,1,0,76,30,240,217,240,211,255,0,91,150,1,0,80,68,219,166,219,160,255,0,100,150,1,0,88,123,174,90,174,97,255,0,109,150,1,0,97,197,120,27,120,55,255,0,118,150,1,0,206,173,131,118,42,131,255,0,127,150,1,0,199,87,171,153,112,171,255,0,136,150,1,0,199,51,207,194,165,207,255,0,145,150,1,0,210,21,232,231,212,232,255,0,154,150,1,0,0,0,247,247,247,247,255,0,163,150,1,0,76,30,240,217,240,211,255,0,172,150,1,0,80,68,219,166,219,160,255,0,181,150,1,0,88,123,174,90,174,97,255,0,190,150,1,0,97,197,120,27,120,55,255,0,199,150,1,0,189,11,242,236,231,242,255,0,208,150,1,0,151,61,219,166,189,219,255,0,217,150,1,0,141,197,190,43,140,190,255,0,226,150,1,0,185,8,246,241,238,246,255,0,235,150,1,0,155,40,225,189,201,225,255,0,244,150,1,0,145,112,207,116,169,207,255,0,253,150,1,0,143,247,176,5,112,176,255,0,6,151,1,0,185,8,246,241,238,246,255,0,15,151,1,0,155,40,225,189,201,225,255,0,24,151,1,0,145,112,207,116,169,207,255,0,33,151,1,0,141,197,190,43,140,190,255,0,42,151,1,0,143,247,141,4,90,141,255,0,51,151,1,0,185,8,246,241,238,246,255,0,60,151,1,0,168,24,230,208,209,230,255,0,69,151,1,0,151,61,219,166,189,219,255,0,78,151,1,0,145,112,207,116,169,207,255,0,87,151,1,0,141,197,190,43,140,190,255,0,96,151,1,0,143,247,141,4,90,141,255,0,105,151,1,0,185,8,246,241,238,246,255,0,114,151,1,0,168,24,230,208,209,230,255,0,123,151,1,0,151,61,219,166,189,219,255,0,132,151,1,0,145,112,207,116,169,207,255,0,141,151,1,0,142,183,192,54,144,192,255,0,150,151,1,0,143,247,176,5,112,176,255,0,159,151,1,0,143,248,123,3,78,123,255,0,168,151,1,0,233,8,255,255,247,251,255,0,177,151,1,0,189,11,242,236,231,242,255,0,186,151,1,0,168,24,230,208,209,230,255,0,195,151,1,0,151,61,219,166,189,219,255,0,204,151,1,0,145,112,207,116,169,207,255,0,213,151,1,0,142,183,192,54,144,192,255,0,222,151,1,0,143,247,176,5,112,176,255,0,231,151,1,0,143,248,123,3,78,123,255,0,240,151,1,0,233,8,255,255,247,251,255,0,249,151,1,0,189,11,242,236,231,242,255,0,2,152,1,0,168,24,230,208,209,230,255,0,11,152,1,0,151,61,219,166,189,219,255,0,20,152,1,0,145,112,207,116,169,207,255,0,29,152,1,0,142,183,192,54,144,192,255,0,38,152,1,0,143,247,176,5,112,176,255,0,47,152,1,0,143,247,141,4,90,141,255,0,56,152,1,0,143,249,88,2,56,88,255,0,65,152,1,0,200,14,240,236,226,240,255,0,76,152,1,0,151,61,219,166,189,219,255,0,87,152,1,0,130,208,153,28,144,153,255,0,98,152,1,0,207,8,247,246,239,247,255,0,109,152,1,0,155,40,225,189,201,225,255,0,120,152,1,0,143,128,207,103,169,207,255,0,131,152,1,0,130,251,138,2,129,138,255,0,142,152,1,0,207,8,247,246,239,247,255,0,153,152,1,0,155,40,225,189,201,225,255,0,164,152,1,0,143,128,207,103,169,207,255,0,175,152,1,0,130,208,153,28,144,153,255,0,186,152,1,0,119,252,108,1,108,89,255,0,197,152,1,0,207,8,247,246,239,247,255,0,208,152,1,0,168,24,230,208,209,230,255,0,219,152,1,0,151,61,219,166,189,219,255,0,230,152,1,0,143,128,207,103,169,207,255,0,241,152,1,0,130,208,153,28,144,153,255,0,252,152,1,0,119,252,108,1,108,89,255,0,7,153,1,0,207,8,247,246,239,247,255,0,18,153,1,0,168,24,230,208,209,230,255,0,29,153,1,0,151,61,219,166,189,219,255,0,40,153,1,0,143,128,207,103,169,207,255,0,51,153,1,0,142,183,192,54,144,192,255,0,62,153,1,0,130,251,138,2,129,138,255,0,73,153,1,0,118,252,100,1,100,80,255,0,84,153,1,0,233,8,255,255,247,251,255,0,95,153,1,0,200,14,240,236,226,240,255,0,106,153,1,0,168,24,230,208,209,230,255,0,117,153,1,0,151,61,219,166,189,219,255,0,128,153,1,0,143,128,207,103,169,207,255,0,139,153,1,0,142,183,192,54,144,192,255,0,150,153,1,0,130,251,138,2,129,138,255,0,161,153,1,0,118,252,100,1,100,80,255,0,172,153,1,0,233,8,255,255,247,251,255,0,183,153,1,0,200,14,240,236,226,240,255,0,194,153,1,0,168,24,230,208,209,230,255,0,205,153,1,0,151,61,219,166,189,219,255,0,216,153,1,0,143,128,207,103,169,207,255,0,227,153,1,0,142,183,192,54,144,192,255,0,238,153,1,0,130,251,138,2,129,138,255,0,249,153,1,0,119,252,108,1,108,89,255,0,4,154,1,0,117,251,70,1,70,54,255,0,15,154,1,0,18,238,127,127,59,8,255,0,25,154,1,0,195,255,75,45,0,75,255,0,36,154,1,0,20,246,179,179,88,6,255,0,46,154,1,0,22,232,224,224,130,20,255,0,56,154,1,0,23,155,253,253,184,99,255,0,66,154,1,0,24,72,254,254,224,182,255,0,76,154,1,0,165,20,235,216,218,235,255,0,86,154,1,0,177,47,210,178,171,210,255,0,96,154,1,0,179,84,172,128,115,172,255,0,106,154,1,0,189,181,136,84,39,136,255,0,116,154,1,0,18,238,127,127,59,8,255,0,126,154,1,0,189,181,136,84,39,136,255,0,137,154,1,0,195,255,75,45,0,75,255,0,148,154,1,0,20,246,179,179,88,6,255,0,158,154,1,0,22,232,224,224,130,20,255,0,168,154,1,0,23,155,253,253,184,99,255,0,178,154,1,0,24,72,254,254,224,182,255,0,188,154,1,0,0,0,247,247,247,247,255,0,198,154,1,0,165,20,235,216,218,235,255,0,208,154,1,0,177,47,210,178,171,210,255,0,218,154,1,0,179,84,172,128,115,172,255,0,228,154,1,0,23,187,241,241,163,64,255,0,237,154,1,0,0,0,247,247,247,247,255,0,246,154,1,0,178,69,195,153,142,195,255,0,255,154,1,0,17,253,230,230,97,1,255,0,8,155,1,0,23,155,253,253,184,99,255,0,17,155,1,0,177,47,210,178,171,210,255,0,26,155,1,0,185,155,153,94,60,153,255,0,35,155,1,0,17,253,230,230,97,1,255,0,44,155,1,0,23,155,253,253,184,99,255,0,53,155,1,0,0,0,247,247,247,247,255,0,62,155,1,0,177,47,210,178,171,210,255,0,71,155,1,0,185,155,153,94,60,153,255,0,80,155,1,0,20,246,179,179,88,6,255,0,89,155,1,0,23,187,241,241,163,64,255,0,98,155,1,0,24,72,254,254,224,182,255,0,107,155,1,0,165,20,235,216,218,235,255,0,116,155,1,0,178,69,195,153,142,195,255,0,125,155,1,0,189,181,136,84,39,136,255,0,134,155,1,0,20,246,179,179,88,6,255,0,143,155,1,0,23,187,241,241,163,64,255,0,152,155,1,0,24,72,254,254,224,182,255,0,161,155,1,0,0,0,247,247,247,247,255,0,170,155,1,0,165,20,235,216,218,235,255,0,179,155,1,0,178,69,195,153,142,195,255,0,188,155,1,0,189,181,136,84,39,136,255,0,197,155,1,0,20,246,179,179,88,6,255,0,206,155,1,0,22,232,224,224,130,20,255,0,215,155,1,0,23,155,253,253,184,99,255,0,224,155,1,0,24,72,254,254,224,182,255,0,233,155,1,0,165,20,235,216,218,235,255,0,242,155,1,0,177,47,210,178,171,210,255,0,251,155,1,0,179,84,172,128,115,172,255,0,4,156,1,0,189,181,136,84,39,136,255,0,13,156,1,0,20,246,179,179,88,6,255,0,22,156,1,0,22,232,224,224,130,20,255,0,31,156,1,0,23,155,253,253,184,99,255,0,40,156,1,0,24,72,254,254,224,182,255,0,49,156,1,0,0,0,247,247,247,247,255,0,58,156,1,0,165,20,235,216,218,235,255,0,67,156,1,0,177,47,210,178,171,210,255,0,76,156,1,0,179,84,172,128,115,172,255,0,85,156,1,0,189,181,136,84,39,136,255,0,94,156,1,0,188,14,239,231,225,239,255,0,103,156,1,0,214,67,201,201,148,199,255,0,112,156,1,0,234,222,221,221,28,119,255,0,121,156,1,0,185,8,246,241,238,246,255,0,130,156,1,0,211,41,216,215,181,216,255,0,139,156,1,0,228,139,223,223,101,176,255,0,148,156,1,0,239,232,206,206,18,86,255,0,157,156,1,0,185,8,246,241,238,246,255,0,166,156,1,0,211,41,216,215,181,216,255,0,175,156,1,0,228,139,223,223,101,176,255,0,184,156,1,0,234,222,221,221,28,119,255,0,193,156,1,0,236,255,152,152,0,67,255,0,202,156,1,0,185,8,246,241,238,246,255,0,211,156,1,0,204,38,218,212,185,218,255,0,220,156,1,0,214,67,201,201,148,199,255,0,229,156,1,0,228,139,223,223,101,176,255,0,238,156,1,0,234,222,221,221,28,119,255,0,247,156,1,0,236,255,152,152,0,67,255,0,0,157,1,0,185,8,246,241,238,246,255,0,9,157,1,0,204,38,218,212,185,218,255,0,18,157,1,0,214,67,201,201,148,199,255,0,27,157,1,0,228,139,223,223,101,176,255,0,36,157,1,0,233,209,231,231,41,138,255,0,45,157,1,0,239,232,206,206,18,86,255,0,54,157,1,0,236,255,145,145,0,63,255,0,63,157,1,0,195,5,249,247,244,249,255,0,72,157,1,0,188,14,239,231,225,239,255,0,81,157,1,0,204,38,218,212,185,218,255,0,90,157,1,0,214,67,201,201,148,199,255,0,99,157,1,0,228,139,223,223,101,176,255,0,108,157,1,0,233,209,231,231,41,138,255,0,117,157,1,0,239,232,206,206,18,86,255,0,126,157,1,0,236,255,145,145,0,63,255,0,135,157,1,0,195,5,249,247,244,249,255,0,144,157,1,0,188,14,239,231,225,239,255,0,153,157,1,0,204,38,218,212,185,218,255,0,162,157,1,0,214,67,201,201,148,199,255,0,171,157,1,0,228,139,223,223,101,176,255,0,180,157,1,0,233,209,231,231,41,138,255,0,189,157,1,0,239,232,206,206,18,86,255,0,198,157,1,0,236,255,152,152,0,67,255,0,207,157,1,0,242,255,103,103,0,31,255,0,216,157,1,0,180,8,245,239,237,245,255,0,228,157,1,0,168,37,220,188,189,220,255,0,240,157,1,0,176,100,177,117,107,177,255,0,252,157,1,0,182,7,247,242,240,247,255,0,8,158,1,0,173,28,226,203,201,226,255,0,20,158,1,0,173,58,200,158,154,200,255,0,32,158,1,0,182,128,163,106,81,163,255,0,44,158,1,0,182,7,247,242,240,247,255,0,56,158,1,0,173,28,226,203,201,226,255,0,68,158,1,0,173,58,200,158,154,200,255,0,80,158,1,0,176,100,177,117,107,177,255,0,92,158,1,0,188,185,143,84,39,143,255,0,104,158,1,0,182,7,247,242,240,247,255,0,116,158,1,0,170,18,235,218,218,235,255,0,128,158,1,0,168,37,220,188,189,220,255,0,140,158,1,0,173,58,200,158,154,200,255,0,152,158,1,0,176,100,177,117,107,177,255,0,164,158,1,0,188,185,143,84,39,143,255,0,176,158,1,0,182,7,247,242,240,247,255,0,188,158,1,0,170,18,235,218,218,235,255,0,200,158,1,0,168,37,220,188,189,220,255,0,212,158,1,0,173,58,200,158,154,200,255,0,224,158,1,0,172,83,186,128,125,186,255,0,236,158,1,0,182,128,163,106,81,163,255,0,248,158,1,0,190,216,134,74,20,134,255,0,4,159,1,0,191,2,253,252,251,253,255,0,16,159,1,0,180,8,245,239,237,245,255,0,28,159,1,0,170,18,235,218,218,235,255,0,40,159,1,0,168,37,220,188,189,220,255,0,52,159,1,0,173,58,200,158,154,200,255,0,64,159,1,0,172,83,186,128,125,186,255,0,76,159,1,0,182,128,163,106,81,163,255,0,88,159,1,0,190,216,134,74,20,134,255,0,100,159,1,0,191,2,253,252,251,253,255,0,112,159,1,0,180,8,245,239,237,245,255,0,124,159,1,0,170,18,235,218,218,235,255,0,136,159,1,0,168,37,220,188,189,220,255,0,148,159,1,0,173,58,200,158,154,200,255,0,160,159,1,0,172,83,186,128,125,186,255,0,172,159,1,0,182,128,163,106,81,163,255,0,184,159,1,0,188,185,143,84,39,143,255,0,196,159,1,0,191,255,125,63,0,125,255,0,208,159,1,0,242,255,103,103,0,31,255,0,218,159,1,0,150,241,97,5,48,97,255,0,229,159,1,0,249,220,178,178,24,43,255,0,239,159,1,0,5,163,214,214,96,77,255,0,249,159,1,0,13,119,244,244,165,130,255,0,3,160,1,0,15,54,253,253,219,199,255,0,13,160,1,0,142,32,240,209,229,240,255,0,23,160,1,0,141,87,222,146,197,222,255,0,33,160,1,0,143,167,195,67,147,195,255,0,43,160,1,0,148,206,172,33,102,172,255,0,53,160,1,0,242,255,103,103,0,31,255,0,63,160,1,0,148,206,172,33,102,172,255,0,74,160,1,0,150,241,97,5,48,97,255,0,85,160,1,0,249,220,178,178,24,43,255,0,95,160,1,0,5,163,214,214,96,77,255,0,105,160,1,0,13,119,244,244,165,130,255,0,115,160,1,0,15,54,253,253,219,199,255,0,125,160,1,0,0,0,247,247,247,247,255,0,135,160,1,0,142,32,240,209,229,240,255,0,145,160,1,0,141,87,222,146,197,222,255,0,155,160,1,0,143,167,195,67,147,195,255,0,165,160,1,0,12,150,239,239,138,98,255,0,174,160,1,0,0,0,247,247,247,247,255,0,183,160,1,0,143,128,207,103,169,207,255,0,192,160,1,0,248,255,202,202,0,32,255,0,201,160,1,0,13,119,244,244,165,130,255,0,210,160,1,0,141,87,222,146,197,222,255,0,219,160,1,0,143,247,176,5,113,176,255,0,228,160,1,0,248,255,202,202,0,32,255,0,237,160,1,0,13,119,244,244,165,130,255,0,246,160,1,0,0,0,247,247,247,247,255,0,255,160,1,0,141,87,222,146,197,222,255,0,8,161,1,0,143,247,176,5,113,176,255,0,17,161,1,0,249,220,178,178,24,43,255,0,26,161,1,0,12,150,239,239,138,98,255,0,35,161,1,0,15,54,253,253,219,199,255,0,44,161,1,0,142,32,240,209,229,240,255,0,53,161,1,0,143,128,207,103,169,207,255,0,62,161,1,0,148,206,172,33,102,172,255,0,71,161,1,0,249,220,178,178,24,43,255,0,80,161,1,0,12,150,239,239,138,98,255,0,89,161,1,0,15,54,253,253,219,199,255,0,98,161,1,0,0,0,247,247,247,247,255,0,107,161,1,0,142,32,240,209,229,240,255,0,116,161,1,0,143,128,207,103,169,207,255,0,125,161,1,0,148,206,172,33,102,172,255,0,134,161,1,0,249,220,178,178,24,43,255,0,143,161,1,0,5,163,214,214,96,77,255,0,152,161,1,0,13,119,244,244,165,130,255,0,161,161,1,0,15,54,253,253,219,199,255,0,170,161,1,0,142,32,240,209,229,240,255,0,179,161,1,0,141,87,222,146,197,222,255,0,188,161,1,0,143,167,195,67,147,195,255,0,197,161,1,0,148,206,172,33,102,172,255,0,206,161,1,0,249,220,178,178,24,43,255,0,215,161,1,0,5,163,214,214,96,77,255,0,224,161,1,0,13,119,244,244,165,130,255,0,233,161,1,0,15,54,253,253,219,199,255,0,242,161,1,0,0,0,247,247,247,247,255,0,251,161,1,0,142,32,240,209,229,240,255,0,4,162,1,0,141,87,222,146,197,222,255,0,13,162,1,0,143,167,195,67,147,195,255,0,22,162,1,0,148,206,172,33,102,172,255,0,31,162,1,0,242,255,103,103,0,31,255,0,41,162,1,0,0,0,26,26,26,26,255,0,52,162,1,0,249,220,178,178,24,43,255,0,62,162,1,0,5,163,214,214,96,77,255,0,72,162,1,0,13,119,244,244,165,130,255,0,82,162,1,0,15,54,253,253,219,199,255,0,92,162,1,0,0,0,224,224,224,224,255,0,102,162,1,0,0,0,186,186,186,186,255,0,112,162,1,0,0,0,135,135,135,135,255,0,122,162,1,0,0,0,77,77,77,77,255,0,132,162,1,0,242,255,103,103,0,31,255,0,142,162,1,0,0,0,77,77,77,77,255,0,153,162,1,0,0,0,26,26,26,26,255,0,164,162,1,0,249,220,178,178,24,43,255,0,174,162,1,0,5,163,214,214,96,77,255,0,184,162,1,0,13,119,244,244,165,130,255,0,194,162,1,0,15,54,253,253,219,199,255,0,204,162,1,0,0,0,255,255,255,255,255,0,214,162,1,0,0,0,224,224,224,224,255,0,224,162,1,0,0,0,186,186,186,186,255,0,234,162,1,0,0,0,135,135,135,135,255,0,244,162,1,0,12,150,239,239,138,98,255,0,253,162,1,0,0,0,255,255,255,255,255,0,6,163,1,0,0,0,153,153,153,153,255,0,15,163,1,0,248,255,202,202,0,32,255,0,24,163,1,0,13,119,244,244,165,130,255,0,33,163,1,0,0,0,186,186,186,186,255,0,42,163,1,0,0,0,64,64,64,64,255,0,51,163,1,0,248,255,202,202,0,32,255,0,60,163,1,0,13,119,244,244,165,130,255,0,69,163,1,0,0,0,255,255,255,255,255,0,78,163,1,0,0,0,186,186,186,186,255,0,87,163,1,0,0,0,64,64,64,64,255,0,96,163,1,0,249,220,178,178,24,43,255,0,105,163,1,0,12,150,239,239,138,98,255,0,114,163,1,0,15,54,253,253,219,199,255,0,123,163,1,0,0,0,224,224,224,224,255,0,132,163,1,0,0,0,153,153,153,153,255,0,141,163,1,0,0,0,77,77,77,77,255,0,150,163,1,0,249,220,178,178,24,43,255,0,159,163,1,0,12,150,239,239,138,98,255,0,168,163,1,0,15,54,253,253,219,199,255,0,177,163,1,0,0,0,255,255,255,255,255,0,186,163,1,0,0,0,224,224,224,224,255,0,195,163,1,0,0,0,153,153,153,153,255,0,204,163,1,0,0,0,77,77,77,77,255,0,213,163,1,0,249,220,178,178,24,43,255,0,222,163,1,0,5,163,214,214,96,77,255,0,231,163,1,0,13,119,244,244,165,130,255,0,240,163,1,0,15,54,253,253,219,199,255,0,249,163,1,0,0,0,224,224,224,224,255,0,2,164,1,0,0,0,186,186,186,186,255,0,11,164,1,0,0,0,135,135,135,135,255,0,20,164,1,0,0,0,77,77,77,77,255,0,29,164,1,0,249,220,178,178,24,43,255,0,38,164,1,0,5,163,214,214,96,77,255,0,47,164,1,0,13,119,244,244,165,130,255,0,56,164,1,0,15,54,253,253,219,199,255,0,65,164,1,0,0,0,255,255,255,255,255,0,74,164,1,0,0,0,224,224,224,224,255,0,83,164,1,0,0,0,186,186,186,186,255,0,92,164,1,0,0,0,135,135,135,135,255,0,101,164,1,0,0,0,77,77,77,77,255,0,110,164,1,0,3,32,253,253,224,221,255,0,119,164,1,0,244,92,250,250,159,181,255,0,128,164,1,0,227,220,197,197,27,138,255,0,137,164,1,0,13,28,254,254,235,226,255,0,146,164,1,0,252,72,251,251,180,185,255,0,155,164,1,0,238,147,247,247,104,161,255,0,164,164,1,0,224,253,174,174,1,126,255,0,173,164,1,0,13,28,254,254,235,226,255,0,182,164,1,0,252,72,251,251,180,185,255,0,191,164,1,0,238,147,247,247,104,161,255,0,200,164,1,0,227,220,197,197,27,138,255,0,209,164,1,0,213,252,122,122,1,119,255,0,218,164,1,0,13,28,254,254,235,226,255,0,227,164,1,0,3,60,252,252,197,192,255,0,236,164,1,0,244,92,250,250,159,181,255,0,245,164,1,0,238,147,247,247,104,161,255,0,254,164,1,0,227,220,197,197,27,138,255,0,7,165,1,0,213,252,122,122,1,119,255,0,16,165,1,0,13,28,254,254,235,226,255,0,25,165,1,0,3,60,252,252,197,192,255,0,34,165,1,0,244,92,250,250,159,181,255,0,43,165,1,0,238,147,247,247,104,161,255,0,52,165,1,0,230,195,221,221,52,151,255,0,61,165,1,0,224,253,174,174,1,126,255,0,70,165,1,0,213,252,122,122,1,119,255,0,79,165,1,0,14,12,255,255,247,243,255,0,88,165,1,0,3,32,253,253,224,221,255,0,97,165,1,0,3,60,252,252,197,192,255,0,106,165,1,0,244,92,250,250,159,181,255,0,115,165,1,0,238,147,247,247,104,161,255,0,124,165,1,0,230,195,221,221,52,151,255,0,133,165,1,0,224,253,174,174,1,126,255,0,142,165,1,0,213,252,122,122,1,119,255,0,151,165,1,0,14,12,255,255,247,243,255,0,160,165,1,0,3,32,253,253,224,221,255,0,169,165,1,0,3,60,252,252,197,192,255,0,178,165,1,0,244,92,250,250,159,181,255,0,187,165,1,0,238,147,247,247,104,161,255,0,196,165,1,0,230,195,221,221,52,151,255,0,205,165,1,0,224,253,174,174,1,126,255,0,214,165,1,0,213,252,122,122,1,119,255,0,223,165,1,0,199,255,106,73,0,106,255,0,232,165,1,0,245,255,165,165,0,38,255,0,244,165,1,0,167,171,149,49,54,149,255,0,1,166,1,0,2,208,215,215,48,39,255,0,13,166,1,0,10,184,244,244,109,67,255,0,25,166,1,0,20,157,253,253,174,97,255,0,37,166,1,0,30,110,254,254,224,144,255,0,49,166,1,0,136,24,248,224,243,248,255,0,61,166,1,0,138,67,233,171,217,233,255,0,73,166,1,0,143,113,209,116,173,209,255,0,85,166,1,0,151,157,180,69,117,180,255,0,97,166,1,0,245,255,165,165,0,38,255,0,109,166,1,0,151,157,180,69,117,180,255,0,122,166,1,0,167,171,149,49,54,149,255,0,135,166,1,0,2,208,215,215,48,39,255,0,147,166,1,0,10,184,244,244,109,67,255,0,159,166,1,0,20,157,253,253,174,97,255,0,171,166,1,0,30,110,254,254,224,144,255,0,183,166,1,0,42,64,255,255,255,191,255,0,195,166,1,0,136,24,248,224,243,248,255,0,207,166,1,0,138,67,233,171,217,233,255,0,219,166,1,0,143,113,209,116,173,209,255,0,231,166,1,0,13,164,252,252,141,89,255,0,242,166,1,0,42,64,255,255,255,191,255,0,253,166,1,0,143,86,219,145,191,219,255,0,8,167,1,0,254,225,215,215,25,28,255,0,19,167,1,0,20,157,253,253,174,97,255,0,30,167,1,0,138,67,233,171,217,233,255,0,41,167,1,0,145,193,182,44,123,182,255,0,52,167,1,0,254,225,215,215,25,28,255,0,63,167,1,0,20,157,253,253,174,97,255,0,74,167,1,0,42,64,255,255,255,191,255,0,85,167,1,0,138,67,233,171,217,233,255,0,96,167,1,0,145,193,182,44,123,182,255,0,107,167,1,0,2,208,215,215,48,39,255,0,118,167,1,0,13,164,252,252,141,89,255,0,129,167,1,0,30,110,254,254,224,144,255,0,140,167,1,0,136,24,248,224,243,248,255,0,151,167,1,0,143,86,219,145,191,219,255,0,162,167,1,0,151,157,180,69,117,180,255,0,173,167,1,0,2,208,215,215,48,39,255,0,184,167,1,0,13,164,252,252,141,89,255,0,195,167,1,0,30,110,254,254,224,144,255,0,206,167,1,0,42,64,255,255,255,191,255,0,217,167,1,0,136,24,248,224,243,248,255,0,228,167,1,0,143,86,219,145,191,219,255,0,239,167,1,0,151,157,180,69,117,180,255,0,250,167,1,0,2,208,215,215,48,39,255,0,5,168,1,0,10,184,244,244,109,67,255,0,16,168,1,0,20,157,253,253,174,97,255,0,27,168,1,0,30,110,254,254,224,144,255,0,38,168,1,0,136,24,248,224,243,248,255,0,49,168,1,0,138,67,233,171,217,233,255,0,60,168,1,0,143,113,209,116,173,209,255,0,71,168,1,0,151,157,180,69,117,180,255,0,82,168,1,0,2,208,215,215,48,39,255,0,93,168,1,0,10,184,244,244,109,67,255,0,104,168,1,0,20,157,253,253,174,97,255,0,115,168,1,0,30,110,254,254,224,144,255,0,126,168,1,0,42,64,255,255,255,191,255,0,137,168,1,0,136,24,248,224,243,248,255,0,148,168,1,0,138,67,233,171,217,233,255,0,159,168,1,0,143,113,209,116,173,209,255,0,170,168,1,0,151,157,180,69,117,180,255,0,181,168,1,0,245,255,165,165,0,38,255,0,193,168,1,0,107,255,104,0,104,55,255,0,206,168,1,0,2,208,215,215,48,39,255,0,218,168,1,0,10,184,244,244,109,67,255,0,230,168,1,0,20,157,253,253,174,97,255,0,242,168,1,0,31,115,254,254,224,139,255,0,254,168,1,0,51,106,239,217,239,139,255,0,10,169,1,0,62,130,217,166,217,106,255,0,22,169,1,0,83,121,189,102,189,99,255,0,34,169,1,0,103,211,152,26,152,80,255,0,46,169,1,0,245,255,165,165,0,38,255,0,58,169,1,0,103,211,152,26,152,80,255,0,71,169,1,0,107,255,104,0,104,55,255,0,84,169,1,0,2,208,215,215,48,39,255,0,96,169,1,0,10,184,244,244,109,67,255,0,108,169,1,0,20,157,253,253,174,97,255,0,120,169,1,0,31,115,254,254,224,139,255,0,132,169,1,0,42,64,255,255,255,191,255,0,144,169,1,0,51,106,239,217,239,139,255,0,156,169,1,0,62,130,217,166,217,106,255,0,168,169,1,0,83,121,189,102,189,99,255,0,180,169,1,0,13,164,252,252,141,89,255,0,191,169,1,0,42,64,255,255,255,191,255,0,202,169,1,0,66,136,207,145,207,96,255,0,213,169,1,0,254,225,215,215,25,28,255,0,224,169,1,0,20,157,253,253,174,97,255,0,235,169,1,0,62,130,217,166,217,106,255,0,246,169,1,0,98,210,150,26,150,65,255,0,1,170,1,0,254,225,215,215,25,28,255,0,12,170,1,0,20,157,253,253,174,97,255,0,23,170,1,0,42,64,255,255,255,191,255,0,34,170,1,0,62,130,217,166,217,106,255,0,45,170,1,0,98,210,150,26,150,65,255,0,56,170,1,0,2,208,215,215,48,39,255,0,67,170,1,0,13,164,252,252,141,89,255,0,78,170,1,0,31,115,254,254,224,139,255,0,89,170,1,0,51,106,239,217,239,139,255,0,100,170,1,0,66,136,207,145,207,96,255,0,111,170,1,0,103,211,152,26,152,80,255,0,122,170,1,0,2,208,215,215,48,39,255,0,133,170,1,0,13,164,252,252,141,89,255,0,144,170,1,0,31,115,254,254,224,139,255,0,155,170,1,0,42,64,255,255,255,191,255,0,166,170,1,0,51,106,239,217,239,139,255,0,177,170,1,0,66,136,207,145,207,96,255,0,188,170,1,0,103,211,152,26,152,80,255,0,199,170,1,0,2,208,215,215,48,39,255,0,210,170,1,0,10,184,244,244,109,67,255,0,221,170,1,0,20,157,253,253,174,97,255,0,232,170,1,0,31,115,254,254,224,139,255,0,243,170,1,0,51,106,239,217,239,139,255,0,254,170,1,0,62,130,217,166,217,106,255,0,9,171,1,0,83,121,189,102,189,99,255,0,20,171,1,0,103,211,152,26,152,80,255,0,31,171,1,0,2,208,215,215,48,39,255,0,42,171,1,0,10,184,244,244,109,67,255,0,53,171,1,0,20,157,253,253,174,97,255,0,64,171,1,0,31,115,254,254,224,139,255,0,75,171,1,0,42,64,255,255,255,191,255,0,86,171,1,0,51,106,239,217,239,139,255,0,97,171,1,0,62,130,217,166,217,106,255,0,108,171,1,0,83,121,189,102,189,99,255,0,119,171,1,0,103,211,152,26,152,80,255,0,130,171,1,0,13,44,254,254,224,210,255,0,139,171,1,0,9,139,252,252,146,114,255,0,148,171,1,0,1,211,222,222,45,38,255,0,157,171,1,0,13,37,254,254,229,217,255,0,166,171,1,0,11,108,252,252,174,145,255,0,175,171,1,0,7,179,251,251,106,74,255,0,184,171,1,0,253,224,203,203,24,29,255,0,193,171,1,0,13,37,254,254,229,217,255,0,202,171,1,0,11,108,252,252,174,145,255,0,211,171,1,0,7,179,251,251,106,74,255,0,220,171,1,0,1,211,222,222,45,38,255,0,229,171,1,0,253,231,165,165,15,21,255,0,238,171,1,0,13,37,254,254,229,217,255,0,247,171,1,0,12,92,252,252,187,161,255,0,0,172,1,0,9,139,252,252,146,114,255,0,9,172,1,0,7,179,251,251,106,74,255,0,18,172,1,0,1,211,222,222,45,38,255,0,27,172,1,0,253,231,165,165,15,21,255,0,36,172,1,0,13,37,254,254,229,217,255,0,45,172,1,0,12,92,252,252,187,161,255,0,54,172,1,0,9,139,252,252,146,114,255,0,63,172,1,0,7,179,251,251,106,74,255,0,72,172,1,0,3,208,239,239,59,44,255,0,81,172,1,0,253,224,203,203,24,29,255,0,90,172,1,0,251,255,153,153,0,13,255,0,99,172,1,0,14,15,255,255,245,240,255,0,108,172,1,0,13,44,254,254,224,210,255,0,117,172,1,0,12,92,252,252,187,161,255,0,126,172,1,0,9,139,252,252,146,114,255,0,135,172,1,0,7,179,251,251,106,74,255,0,144,172,1,0,3,208,239,239,59,44,255,0,153,172,1,0,253,224,203,203,24,29,255,0,162,172,1,0,251,255,153,153,0,13,255,0,171,172,1,0,14,15,255,255,245,240,255,0,180,172,1,0,13,44,254,254,224,210,255,0,189,172,1,0,12,92,252,252,187,161,255,0,198,172,1,0,9,139,252,252,146,114,255,0,207,172,1,0,7,179,251,251,106,74,255,0,216,172,1,0,3,208,239,239,59,44,255,0,225,172,1,0,253,224,203,203,24,29,255,0,234,172,1,0,253,231,165,165,15,21,255,0,243,172,1,0,249,255,103,103,0,13,255,0,252,172,1,0,254,225,228,228,26,28,255,0,5,173,1,0,146,178,184,55,126,184,255,0,14,173,1,0,83,147,175,77,175,74,255,0,23,173,1,0,254,225,228,228,26,28,255,0,32,173,1,0,146,178,184,55,126,184,255,0,41,173,1,0,83,147,175,77,175,74,255,0,50,173,1,0,207,132,163,152,78,163,255,0,59,173,1,0,254,225,228,228,26,28,255,0,68,173,1,0,146,178,184,55,126,184,255,0,77,173,1,0,83,147,175,77,175,74,255,0,86,173,1,0,207,132,163,152,78,163,255,0,95,173,1,0,21,255,255,255,127,0,255,0,104,173,1,0,254,225,228,228,26,28,255,0,113,173,1,0,146,178,184,55,126,184,255,0,122,173,1,0,83,147,175,77,175,74,255,0,131,173,1,0,207,132,163,152,78,163,255,0,140,173,1,0,21,255,255,255,127,0,255,0,149,173,1,0,42,204,255,255,255,51,255,0,158,173,1,0,254,225,228,228,26,28,255,0,167,173,1,0,146,178,184,55,126,184,255,0,176,173,1,0,83,147,175,77,175,74,255,0,185,173,1,0,207,132,163,152,78,163,255,0,194,173,1,0,21,255,255,255,127,0,255,0,203,173,1,0,42,204,255,255,255,51,255,0,212,173,1,0,15,193,166,166,86,40,255,0,221,173,1,0,254,225,228,228,26,28,255,0,230,173,1,0,146,178,184,55,126,184,255,0,239,173,1,0,83,147,175,77],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+30720);allocate([175,74,255,0,248,173,1,0,207,132,163,152,78,163,255,0,1,174,1,0,21,255,255,255,127,0,255,0,10,174,1,0,42,204,255,255,255,51,255,0,19,174,1,0,15,193,166,166,86,40,255,0,28,174,1,0,232,121,247,247,129,191,255,0,37,174,1,0,254,225,228,228,26,28,255,0,46,174,1,0,146,178,184,55,126,184,255,0,55,174,1,0,83,147,175,77,175,74,255,0,64,174,1,0,207,132,163,152,78,163,255,0,73,174,1,0,21,255,255,255,127,0,255,0,82,174,1,0,42,204,255,255,255,51,255,0,91,174,1,0,15,193,166,166,86,40,255,0,100,174,1,0,232,121,247,247,129,191,255,0,109,174,1,0,0,0,153,153,153,153,255,0,118,174,1,0,114,120,194,102,194,165,255,0,127,174,1,0,11,155,252,252,141,98,255,0,136,174,1,0,156,77,203,141,160,203,255,0,145,174,1,0,114,120,194,102,194,165,255,0,154,174,1,0,11,155,252,252,141,98,255,0,163,174,1,0,156,77,203,141,160,203,255,0,172,174,1,0,228,102,231,231,138,195,255,0,181,174,1,0,114,120,194,102,194,165,255,0,190,174,1,0,11,155,252,252,141,98,255,0,199,174,1,0,156,77,203,141,160,203,255,0,208,174,1,0,228,102,231,231,138,195,255,0,217,174,1,0,58,155,216,166,216,84,255,0,226,174,1,0,114,120,194,102,194,165,255,0,235,174,1,0,11,155,252,252,141,98,255,0,244,174,1,0,156,77,203,141,160,203,255,0,253,174,1,0,228,102,231,231,138,195,255,0,6,175,1,0,58,155,216,166,216,84,255,0,15,175,1,0,34,208,255,255,217,47,255,0,24,175,1,0,114,120,194,102,194,165,255,0,33,175,1,0,11,155,252,252,141,98,255,0,42,175,1,0,156,77,203,141,160,203,255,0,51,175,1,0,228,102,231,231,138,195,255,0,60,175,1,0,58,155,216,166,216,84,255,0,69,175,1,0,34,208,255,255,217,47,255,0,78,175,1,0,25,90,229,229,196,148,255,0,87,175,1,0,114,120,194,102,194,165,255,0,96,175,1,0,11,155,252,252,141,98,255,0,105,175,1,0,156,77,203,141,160,203,255,0,114,175,1,0,228,102,231,231,138,195,255,0,123,175,1,0,58,155,216,166,216,84,255,0,132,175,1,0,34,208,255,255,217,47,255,0,141,175,1,0,25,90,229,229,196,148,255,0,150,175,1,0,0,0,179,179,179,179,255,0,159,175,1,0,120,84,211,141,211,199,255,0,169,175,1,0,211,82,189,188,128,189,255,0,180,175,1,0,42,76,255,255,255,179,255,0,190,175,1,0,175,37,218,190,186,218,255,0,200,175,1,0,4,139,251,251,128,114,255,0,210,175,1,0,144,100,211,128,177,211,255,0,220,175,1,0,22,156,253,253,180,98,255,0,230,175,1,0,58,134,222,179,222,105,255,0,240,175,1,0,233,47,252,252,205,229,255,0,250,175,1,0,0,0,217,217,217,217,255,0,4,176,1,0,120,84,211,141,211,199,255,0,14,176,1,0,211,82,189,188,128,189,255,0,25,176,1,0,77,41,235,204,235,197,255,0,36,176,1,0,42,76,255,255,255,179,255,0,46,176,1,0,175,37,218,190,186,218,255,0,56,176,1,0,4,139,251,251,128,114,255,0,66,176,1,0,144,100,211,128,177,211,255,0,76,176,1,0,22,156,253,253,180,98,255,0,86,176,1,0,58,134,222,179,222,105,255,0,96,176,1,0,233,47,252,252,205,229,255,0,106,176,1,0,0,0,217,217,217,217,255,0,116,176,1,0,120,84,211,141,211,199,255,0,126,176,1,0,211,82,189,188,128,189,255,0,137,176,1,0,77,41,235,204,235,197,255,0,148,176,1,0,37,144,255,255,237,111,255,0,159,176,1,0,42,76,255,255,255,179,255,0,169,176,1,0,175,37,218,190,186,218,255,0,179,176,1,0,4,139,251,251,128,114,255,0,189,176,1,0,144,100,211,128,177,211,255,0,199,176,1,0,22,156,253,253,180,98,255,0,209,176,1,0,58,134,222,179,222,105,255,0,219,176,1,0,233,47,252,252,205,229,255,0,229,176,1,0,0,0,217,217,217,217,255,0,239,176,1,0,120,84,211,141,211,199,255,0,248,176,1,0,42,76,255,255,255,179,255,0,1,177,1,0,175,37,218,190,186,218,255,0,10,177,1,0,120,84,211,141,211,199,255,0,19,177,1,0,42,76,255,255,255,179,255,0,28,177,1,0,175,37,218,190,186,218,255,0,37,177,1,0,4,139,251,251,128,114,255,0,46,177,1,0,120,84,211,141,211,199,255,0,55,177,1,0,42,76,255,255,255,179,255,0,64,177,1,0,175,37,218,190,186,218,255,0,73,177,1,0,4,139,251,251,128,114,255,0,82,177,1,0,144,100,211,128,177,211,255,0,91,177,1,0,120,84,211,141,211,199,255,0,100,177,1,0,42,76,255,255,255,179,255,0,109,177,1,0,175,37,218,190,186,218,255,0,118,177,1,0,4,139,251,251,128,114,255,0,127,177,1,0,144,100,211,128,177,211,255,0,136,177,1,0,22,156,253,253,180,98,255,0,145,177,1,0,120,84,211,141,211,199,255,0,154,177,1,0,42,76,255,255,255,179,255,0,163,177,1,0,175,37,218,190,186,218,255,0,172,177,1,0,4,139,251,251,128,114,255,0,181,177,1,0,144,100,211,128,177,211,255,0,190,177,1,0,22,156,253,253,180,98,255,0,199,177,1,0,58,134,222,179,222,105,255,0,208,177,1,0,120,84,211,141,211,199,255,0,217,177,1,0,42,76,255,255,255,179,255,0,226,177,1,0,175,37,218,190,186,218,255,0,235,177,1,0,4,139,251,251,128,114,255,0,244,177,1,0,144,100,211,128,177,211,255,0,253,177,1,0,22,156,253,253,180,98,255,0,6,178,1,0,58,134,222,179,222,105,255,0,15,178,1,0,233,47,252,252,205,229,255,0,24,178,1,0,120,84,211,141,211,199,255,0,33,178,1,0,42,76,255,255,255,179,255,0,42,178,1,0,175,37,218,190,186,218,255,0,51,178,1,0,4,139,251,251,128,114,255,0,60,178,1,0,144,100,211,128,177,211,255,0,69,178,1,0,22,156,253,253,180,98,255,0,78,178,1,0,58,134,222,179,222,105,255,0,87,178,1,0,233,47,252,252,205,229,255,0,96,178,1,0,0,0,217,217,217,217,255,0,105,178,1,0,237,253,158,158,1,66,255,0,119,178,1,0,177,130,162,94,79,162,255,0,134,178,1,0,250,180,213,213,62,79,255,0,148,178,1,0,10,184,244,244,109,67,255,0,162,178,1,0,20,157,253,253,174,97,255,0,176,178,1,0,31,115,254,254,224,139,255,0,190,178,1,0,49,96,245,230,245,152,255,0,204,178,1,0,79,65,221,171,221,164,255,0,218,178,1,0,114,120,194,102,194,165,255,0,232,178,1,0,143,187,189,50,136,189,255,0,246,178,1,0,237,253,158,158,1,66,255,0,4,179,1,0,143,187,189,50,136,189,255,0,19,179,1,0,177,130,162,94,79,162,255,0,34,179,1,0,250,180,213,213,62,79,255,0,48,179,1,0,10,184,244,244,109,67,255,0,62,179,1,0,20,157,253,253,174,97,255,0,76,179,1,0,31,115,254,254,224,139,255,0,90,179,1,0,42,64,255,255,255,191,255,0,104,179,1,0,49,96,245,230,245,152,255,0,118,179,1,0,79,65,221,171,221,164,255,0,132,179,1,0,114,120,194,102,194,165,255,0,146,179,1,0,13,164,252,252,141,89,255,0,159,179,1,0,42,64,255,255,255,191,255,0,172,179,1,0,81,77,213,153,213,148,255,0,185,179,1,0,254,225,215,215,25,28,255,0,198,179,1,0,20,157,253,253,174,97,255,0,211,179,1,0,79,65,221,171,221,164,255,0,224,179,1,0,143,196,186,43,131,186,255,0,237,179,1,0,254,225,215,215,25,28,255,0,250,179,1,0,20,157,253,253,174,97,255,0,7,180,1,0,42,64,255,255,255,191,255,0,20,180,1,0,79,65,221,171,221,164,255,0,33,180,1,0,143,196,186,43,131,186,255,0,46,180,1,0,250,180,213,213,62,79,255,0,59,180,1,0,13,164,252,252,141,89,255,0,72,180,1,0,31,115,254,254,224,139,255,0,85,180,1,0,49,96,245,230,245,152,255,0,98,180,1,0,81,77,213,153,213,148,255,0,111,180,1,0,143,187,189,50,136,189,255,0,124,180,1,0,250,180,213,213,62,79,255,0,137,180,1,0,13,164,252,252,141,89,255,0,150,180,1,0,31,115,254,254,224,139,255,0,163,180,1,0,42,64,255,255,255,191,255,0,176,180,1,0,49,96,245,230,245,152,255,0,189,180,1,0,81,77,213,153,213,148,255,0,202,180,1,0,143,187,189,50,136,189,255,0,215,180,1,0,250,180,213,213,62,79,255,0,228,180,1,0,10,184,244,244,109,67,255,0,241,180,1,0,20,157,253,253,174,97,255,0,254,180,1,0,31,115,254,254,224,139,255,0,11,181,1,0,49,96,245,230,245,152,255,0,24,181,1,0,79,65,221,171,221,164,255,0,37,181,1,0,114,120,194,102,194,165,255,0,50,181,1,0,143,187,189,50,136,189,255,0,63,181,1,0,250,180,213,213,62,79,255,0,76,181,1,0,10,184,244,244,109,67,255,0,89,181,1,0,20,157,253,253,174,97,255,0,102,181,1,0,31,115,254,254,224,139,255,0,115,181,1,0,42,64,255,255,255,191,255,0,128,181,1,0,49,96,245,230,245,152,255,0,141,181,1,0,79,65,221,171,221,164,255,0,154,181,1,0,114,120,194,102,194,165,255,0,167,181,1,0,143,187,189,50,136,189,255,0,180,181,1,0,147,15,255,240,248,255,255,0,195,181,1,0,24,35,250,250,235,215,255,0,213,181,1,0,127,255,255,0,255,255,255,0,223,181,1,0,113,128,255,127,255,212,255,0,239,181,1,0,127,15,255,240,255,255,255,0,250,181,1,0,42,26,245,245,245,220,255,0,5,182,1,0,23,58,255,255,228,196,255,0,17,182,1,0,0,0,0,0,0,0,255,0,28,182,1,0,25,49,255,255,235,205,255,0,48,182,1,0,170,255,255,0,0,255,255,0,58,182,1,0,192,206,226,138,43,226,255,0,74,182,1,0,0,190,165,165,42,42,255,0,85,182,1,0,23,99,222,222,184,135,255,0,100,182,1,0,128,103,160,95,158,160,255,0,115,182,1,0,63,255,255,127,255,0,255,0,131,182,1,0,17,218,210,210,105,30,255,0,146,182,1,0,11,175,255,255,127,80,255,0,157,182,1,0,154,147,237,100,149,237,255,0,177,182,1,0,33,34,255,255,248,220,255,0,191,182,1,0,246,231,220,220,20,60,255,0,204,182,1,0,127,255,255,0,255,255,255,0,214,182,1,0,170,255,139,0,0,139,255,0,228,182,1,0,127,255,139,0,139,139,255,0,242,182,1,0,30,239,184,184,134,11,255,0,5,183,1,0,0,0,169,169,169,169,255,0,19,183,1,0,85,255,100,0,100,0,255,0,34,183,1,0,0,0,169,169,169,169,255,0,48,183,1,0,39,110,189,189,183,107,255,0,63,183,1,0,212,255,139,139,0,139,255,0,80,183,1,0,58,142,107,85,107,47,255,0,100,183,1,0,23,255,255,255,140,0,255,0,116,183,1,0,198,192,204,153,50,204,255,0,132,183,1,0,0,255,139,139,0,0,255,0,145,183,1,0,10,121,233,233,150,122,255,0,161,183,1,0,85,61,188,143,188,143,255,0,179,183,1,0,175,143,139,72,61,139,255,0,198,183,1,0,127,103,79,47,79,79,255,0,217,183,1,0,127,103,79,47,79,79,255,0,236,183,1,0,128,255,209,0,206,209,255,0,255,183,1,0,199,255,211,148,0,211,255,0,15,184,1,0,232,235,255,255,20,147,255,0,29,184,1,0,138,255,255,0,191,255,255,0,46,184,1,0,0,0,105,105,105,105,255,0,59,184,1,0,0,0,105,105,105,105,255,0,72,184,1,0,148,225,255,30,144,255,255,0,88,184,1,0,0,206,178,178,34,34,255,0,103,184,1,0,28,15,255,255,250,240,255,0,120,184,1,0,85,192,139,34,139,34,255,0,137,184,1,0,212,255,255,255,0,255,255,0,150,184,1,0,0,0,220,220,220,220,255,0,165,184,1,0,170,7,255,248,248,255,255,0,181,184,1,0,35,255,255,255,215,0,255,0,191,184,1,0,30,217,218,218,165,32,255,0,206,184,1,0,0,0,128,128,128,128,255,0,216,184,1,0,85,255,128,0,128,0,255,0,227,184,1,0,59,208,255,173,255,47,255,0,244,184,1,0,0,0,128,128,128,128,255,0,254,184,1,0,85,15,255,240,255,240,255,0,12,185,1,0,233,150,255,255,105,180,255,0,25,185,1,0,0,140,205,205,92,92,255,0,40,185,1,0,194,255,130,75,0,130,255,0,52,185,1,0,42,15,255,255,255,240,255,0,63,185,1,0,38,106,240,240,230,140,255,0,74,185,1,0,170,20,250,230,230,250,255,0,88,185,1,0,240,15,255,255,240,245,255,0,107,185,1,0,64,255,252,124,252,0,255,0,122,185,1,0,38,49,255,255,250,205,255,0,140,185,1,0,137,63,230,173,216,230,255,0,155,185,1,0,0,119,240,240,128,128,255,0,171,185,1,0,127,31,255,224,255,255,255,0,186,185,1,0,42,40,250,250,250,210,255,0,212,185,1,0,0,0,211,211,211,211,255,0,227,185,1,0,85,100,238,144,238,144,255,0,243,185,1,0,0,0,211,211,211,211,255,0,2,186,1,0,248,73,255,255,182,193,255,0,17,186,1,0,12,132,255,255,160,122,255,0,34,186,1,0,125,209,178,32,178,170,255,0,53,186,1,0,143,117,250,135,206,250,255,0,71,186,1,0,148,56,153,119,136,153,255,0,91,186,1,0,148,56,153,119,136,153,255,0,111,186,1,0,151,52,222,176,196,222,255,0,131,186,1,0,42,31,255,255,255,224,255,0,148,186,1,0,85,255,255,0,255,0,255,0,158,186,1,0,85,192,205,50,205,50,255,0,173,186,1,0,21,20,250,250,240,230,255,0,184,186,1,0,212,255,255,255,0,255,255,0,197,186,1,0,0,255,128,128,0,0,255,0,209,186,1,0,113,128,205,102,205,170,255,0,231,186,1,0,170,255,205,0,0,205,255,0,247,186,1,0,204,152,211,186,85,211,255,0,9,187,1,0,183,124,219,147,112,219,255,0,27,187,1,0,103,169,179,60,179,113,255,0,47,187,1,0,176,143,238,123,104,238,255,0,68,187,1,0,111,255,250,0,250,154,255,0,91,187,1,0,125,167,209,72,209,204,255,0,112,187,1,0,228,228,199,199,21,133,255,0,133,187,1,0,170,198,112,25,25,112,255,0,151,187,1,0,106,9,255,245,255,250,255,0,166,187,1,0,4,30,255,255,228,225,255,0,181,187,1,0,26,73,255,255,228,181,255,0,195,187,1,0,25,81,255,255,222,173,255,0,212,187,1,0,170,255,128,0,0,128,255,0,222,187,1,0,27,23,253,253,245,230,255,0,235,187,1,0,42,255,128,128,128,0,255,0,246,187,1,0,56,192,142,107,142,35,255,0,5,188,1,0,27,255,255,255,165,0,255,0,17,188,1,0,11,255,255,255,69,0,255,0,32,188,1,0,214,123,218,218,112,214,255,0,44,188,1,0,38,72,238,238,232,170,255,0,63,188,1,0,85,100,251,152,251,152,255,0,78,188,1,0,127,67,238,175,238,238,255,0,97,188,1,0,241,124,219,219,112,147,255,0,116,188,1,0,26,41,255,255,239,213,255,0,132,188,1,0,20,70,255,255,218,185,255,0,147,188,1,0,20,176,205,205,133,63,255,0,157,188,1,0,247,63,255,255,192,203,255,0,167,188,1,0,212,70,221,221,160,221,255,0,177,188,1,0,132,59,230,176,224,230,255,0,193,188,1,0,212,255,128,128,0,128,255,0,205,188,1,0,0,255,255,255,0,0,255,0,214,188,1,0,0,61,188,188,143,143,255,0,229,188,1,0,159,181,225,65,105,225,255,0,244,188,1,0,17,220,139,139,69,19,255,0,5,189,1,0,4,138,250,250,128,114,255,0,17,189,1,0,19,154,244,244,164,96,255,0,33,189,1,0,103,170,139,46,139,87,255,0,47,189,1,0,17,16,255,255,245,238,255,0,61,189,1,0,13,183,160,160,82,45,255,0,73,189,1,0,0,0,192,192,192,192,255,0,85,189,1,0,139,108,235,135,206,235,255,0,98,189,1,0,175,143,205,106,90,205,255,0,113,189,1,0,148,56,144,112,128,144,255,0,128,189,1,0,148,56,144,112,128,144,255,0,143,189,1,0,0,5,255,255,250,250,255,0,153,189,1,0,106,255,255,0,255,127,255,0,170,189,1,0,146,155,180,70,130,180,255,0,185,189,1,0,24,84,210,210,180,140,255,0,194,189,1,0,127,255,128,0,128,128,255,0,204,189,1,0,212,29,216,216,191,216,255,0,217,189,1,0,6,184,255,255,99,71,255,0,229,189,1,0,123,182,224,64,224,208,255,0,244,189,1,0,212,115,238,238,130,238,255,0,0,190,1,0,27,68,245,245,222,179,255,0,11,190,1,0,0,0,255,255,255,255,255,0,22,190,1,0,0,0,245,245,245,245,255,0,38,190,1,0,42,255,255,255,255,0,255,0,50,190,1,0,56,192,205,154,205,50,255,0,67,190,1,0,45,67,252,247,252,185,255,0,76,190,1,0,68,91,221,173,221,142,255,0,85,190,1,0,98,178,163,49,163,84,255,0,94,190,1,0,42,50,255,255,255,204,255,0,103,190,1,0,62,85,230,194,230,153,255,0,112,190,1,0,85,100,198,120,198,121,255,0,121,190,1,0,99,187,132,35,132,67,255,0,130,190,1,0,42,50,255,255,255,204,255,0,139,190,1,0,62,85,230,194,230,153,255,0,148,190,1,0,85,100,198,120,198,121,255,0,157,190,1,0,98,178,163,49,163,84,255,0,166,190,1,0,107,255,104,0,104,55,255,0,175,190,1,0,42,50,255,255,255,204,255,0,184,190,1,0,55,81,240,217,240,163,255,0,193,190,1,0,68,91,221,173,221,142,255,0,202,190,1,0,85,100,198,120,198,121,255,0,211,190,1,0,98,178,163,49,163,84,255,0,220,190,1,0,107,255,104,0,104,55,255,0,229,190,1,0,42,50,255,255,255,204,255,0,238,190,1,0,55,81,240,217,240,163,255,0,247,190,1,0,68,91,221,173,221,142,255,0,0,191,1,0,85,100,198,120,198,121,255,0,9,191,1,0,96,158,171,65,171,93,255,0,18,191,1,0,99,187,132,35,132,67,255,0,27,191,1,0,108,255,90,0,90,50,255,0,36,191,1,0,42,25,255,255,255,229,255,0,45,191,1,0,45,67,252,247,252,185,255,0,54,191,1,0,55,81,240,217,240,163,255,0,63,191,1,0,68,91,221,173,221,142,255,0,72,191,1,0,85,100,198,120,198,121,255,0,81,191,1,0,96,158,171,65,171,93,255,0,90,191,1,0,99,187,132,35,132,67,255,0,99,191,1,0,108,255,90,0,90,50,255,0,108,191,1,0,42,25,255,255,255,229,255,0,117,191,1,0,45,67,252,247,252,185,255,0,126,191,1,0,55,81,240,217,240,163,255,0,135,191,1,0,68,91,221,173,221,142,255,0,144,191,1,0,85,100,198,120,198,121,255,0,153,191,1,0,96,158,171,65,171,93,255,0,162,191,1,0,99,187,132,35,132,67,255,0,171,191,1,0,107,255,104,0,104,55,255,0,180,191,1,0,110,255,69,0,69,41,255,0,189,191,1,0,49,73,248,237,248,177,255,0,200,191,1,0,117,97,205,127,205,187,255,0,211,191,1,0,144,194,184,44,127,184,255,0,222,191,1,0,42,50,255,255,255,204,255,0,233,191,1,0,99,66,218,161,218,180,255,0,244,191,1,0,132,170,196,65,182,196,255,0,255,191,1,0,150,203,168,34,94,168,255,0,10,192,1,0,42,50,255,255,255,204,255,0,21,192,1,0,99,66,218,161,218,180,255,0,32,192,1,0,132,170,196,65,182,196,255,0,43,192,1,0,144,194,184,44,127,184,255,0,54,192,1,0,164,191,148,37,52,148,255,0,65,192,1,0,42,50,255,255,255,204,255,0,76,192,1,0,69,58,233,199,233,180,255,0,87,192,1,0,117,97,205,127,205,187,255,0,98,192,1,0,132,170,196,65,182,196,255,0,109,192,1,0,144,194,184,44,127,184,255,0,120,192,1,0,164,191,148,37,52,148,255,0,131,192,1,0,42,50,255,255,255,204,255,0,142,192,1,0,69,58,233,199,233,180,255,0,153,192,1,0,117,97,205,127,205,187,255,0,164,192,1,0,132,170,196,65,182,196,255,0,175,192,1,0,139,216,192,29,145,192,255,0,186,192,1,0,150,203,168,34,94,168,255,0,197,192,1,0,158,231,132,12,44,132,255,0,208,192,1,0,42,38,255,255,255,217,255,0,219,192,1,0,49,73,248,237,248,177,255,0,230,192,1,0,69,58,233,199,233,180,255,0,241,192,1,0,117,97,205,127,205,187,255,0,252,192,1,0,132,170,196,65,182,196,255,0,7,193,1,0,139,216,192,29,145,192,255,0,18,193,1,0,150,203,168,34,94,168,255,0,29,193,1,0,158,231,132,12,44,132,255,0,40,193,1,0,42,38,255,255,255,217,255,0,51,193,1,0,49,73,248,237,248,177,255,0,62,193,1,0,69,58,233,199,233,180,255,0,73,193,1,0,117,97,205,127,205,187,255,0,84,193,1,0,132,170,196,65,182,196,255,0,95,193,1,0,139,216,192,29,145,192,255,0,106,193,1,0,150,203,168,34,94,168,255,0,117,193,1,0,164,191,148,37,52,148,255,0,128,193,1,0,158,231,88,8,29,88,255,0,139,193,1,0,37,66,255,255,247,188,255,0,150,193,1,0,28,175,254,254,196,79,255,0,161,193,1,0,16,238,217,217,95,14,255,0,172,193,1,0,42,42,255,255,255,212,255,0,183,193,1,0,28,112,254,254,217,142,255,0,194,193,1,0,22,213,254,254,153,41,255,0,205,193,1,0,15,252,204,204,76,2,255,0,216,193,1,0,42,42,255,255,255,212,255,0,227,193,1,0,28,112,254,254,217,142,255,0,238,193,1,0,22,213,254,254,153,41,255,0,249,193,1,0,16,238,217,217,95,14,255,0,4,194,1,0,13,248,153,153,52,4,255,0,15,194,1,0,42,42,255,255,255,212,255,0,26,194,1,0,31,109,254,254,227,145,255,0,37,194,1,0,28,175,254,254,196,79,255,0,48,194,1,0,22,213,254,254,153,41,255,0,59,194,1,0,16,238,217,217,95,14,255,0,70,194,1,0,13,248,153,153,52,4,255,0,81,194,1,0,42,42,255,255,255,212,255,0,92,194,1,0,31,109,254,254,227,145,255,0,103,194,1,0,28,175,254,254,196,79,255,0,114,194,1,0,22,213,254,254,153,41,255,0,125,194,1,0,18,233,236,236,112,20,255,0,136,194,1,0,15,252,204,204,76,2,255,0,147,194,1,0,12,247,140,140,45,4,255,0,158,194,1,0,42,25,255,255,255,229,255,0,169,194,1,0,37,66,255,255,247,188,255,0,180,194,1,0,31,109,254,254,227,145,255,0,191,194,1,0,28,175,254,254,196,79,255,0,202,194,1,0,22,213,254,254,153,41,255,0,213,194,1,0,18,233,236,236,112,20,255,0,224,194,1,0,15,252,204,204,76,2,255,0,235,194,1,0,12,247,140,140,45,4,255,0,246,194,1,0,42,25,255,255,255,229,255,0,1,195,1,0,37,66,255,255,247,188,255,0,12,195,1,0,31,109,254,254,227,145,255,0,23,195,1,0,28,175,254,254,196,79,255,0,34,195,1,0,22,213,254,254,153,41,255,0,45,195,1,0,18,233,236,236,112,20,255,0,56,195,1,0,15,252,204,204,76,2,255,0,67,195,1,0,13,248,153,153,52,4,255,0,78,195,1,0,13,240,102,102,37,6,255,0,89,195,1,0,34,95,255,255,237,160,255,0,100,195,1,0,24,178,254,254,178,76,255,0,111,195,1,0,5,221,240,240,59,32,255,0,122,195,1,0,42,77,255,255,255,178,255,0,133,195,1,0,29,162,254,254,204,92,255,0,144,195,1,0,17,194,253,253,141,60,255,0,155,195,1,0,254,225,227,227,26,28,255,0,166,195,1,0,42,77,255,255,255,178,255,0,177,195,1,0,29,162,254,254,204,92,255,0,188,195,1,0,17,194,253,253,141,60,255,0,199,195,1,0,5,221,240,240,59,32,255,0,210,195,1,0,246,255,189,189,0,38,255,0,221,195,1,0,42,77,255,255,255,178,255,0,232,195,1,0,30,136,254,254,217,118,255,0,243,195,1,0,24,178,254,254,178,76,255,0,254,195,1,0,17,194,253,253,141,60,255,0,9,196,1,0,5,221,240,240,59,32,255,0,20,196,1,0,246,255,189,189,0,38,255,0,31,196,1,0,42,77,255,255,255,178,255,0,42,196,1,0,30,136,254,254,217,118,255,0,53,196,1,0,24,178,254,254,178,76,255,0,64,196,1,0,17,194,253,253,141,60,255,0,75,196,1,0,7,212,252,252,78,42,255,0,86,196,1,0,254,225,227,227,26,28,255,0,97,196,1,0,245,255,177,177,0,38,255,0,108,196,1,0,42,50,255,255,255,204,255,0,119,196,1,0,34,95,255,255,237,160,255,0,130,196,1,0,30,136,254,254,217,118,255,0,141,196,1,0,24,178,254,254,178,76,255,0,152,196,1,0,17,194,253,253,141,60,255,0,163,196,1,0,7,212,252,252,78,42,255,0,174,196,1,0,254,225,227,227,26,28,255,0,185,196,1,0,245,255,177,177,0,38,255,0,196,196,1,0,42,50,255,255,255,204,255,0,207,196,1,0,34,95,255,255,237,160,255,0,218,196,1,0,30,136,254,254,217,118,255,0,229,196,1,0,24,178,254,254,178,76,255,0,240,196,1,0,17,194,253,253,141,60,255,0,251,196,1,0,7,212,252,252,78,42,255,0,6,197,1,0,254,225,227,227,26,28,255,0,17,197,1,0,246,255,189,189,0,38,255,0,28,197,1,0,242,255,128,128,0,38,255,0,39,197,1,0,147,15,255,240,248,255,255,0,49,197,1,0,24,35,250,250,235,215,255,0,62,197,1,0,23,36,255,255,239,219,255,0,76,197,1,0,23,36,238,238,223,204,255,0,90,197,1,0,23,36,205,205,192,176,255,0,104,197,1,0,24,34,139,139,131,120,255,0,118,197,1,0,113,128,255,127,255,212,255,0,129,197,1,0,113,128,255,127,255,212,255,0,141,197,1,0,113,128,238,118,238,198,255,0,153,197,1,0,113,128,205,102,205,170,255,0,165,197,1,0,113,128,139,69,139,116,255,0,177,197,1,0,127,15,255,240,255,255,255,0,183,197,1,0,127,15,255,240,255,255,255,0,190,197,1,0,127,15,238,224,238,238,255,0,197,197,1,0,127,14,205,193,205,205,255,0,204,197,1,0,127,14,139,131,139,139,255,0,211,197,1,0,42,26,245,245,245,220,255,0,217,197,1,0,23,58,255,255,228,196,255,0,224,197,1,0,23,58,255,255,228,196,255,0,232,197,1,0,23,58,238,238,213,183,255,0,240,197,1,0,22,58,205,205,183,158,255,0,248,197,1,0,23,58,139,139,125,107,255,0,10,221,1,0,0,0,0,0,0,0,255,0,0,198,1,0,25,49,255,255,235,205,255,0,15,198,1,0,170,255,255,0,0,255,255,0,20,198,1,0,170,255,255,0,0,255,255,0,26,198,1,0,170,255,238,0,0,238,255,0,32,198,1,0,170,255,205,0,0,205,255,0,38,198,1,0,170,255,139,0,0,139,255,0,44,198,1,0,192,206,226,138,43,226,255,0,55,198,1,0,0,190,165,165,42,42,255,0,61,198,1,0,0,191,255,255,64,64,255,0,68,198,1,0,0,191,238,238,59,59,255,0,75,198,1,0,0,191,205,205,51,51,255,0,82,198,1,0,0,190,139,139,35,35,255,0,89,198,1,0,23,99,222,222,184,135,255,0,99,198,1,0,23,100,255,255,211,155,255,0,110,198,1,0,23,99,238,238,197,145,255,0,121,198,1,0,23,99,205,205,170,125,255,0,132,198,1,0,23,99,139,139,115,85,255,0,143,198,1,0,128,103,160,95,158,160,255,0,153,198,1,0,131,103,255,152,245,255,255,0,164,198,1,0,131,102,238,142,229,238,255,0,175,198,1,0,131,103,205,122,197,205,255,0,186,198,1,0,131,102,139,83,134,139,255,0,197,198,1,0,63,255,255,127,255,0,255,0,208,198,1,0,63,255,255,127,255,0,255,0,220,198,1,0,63,255,238,118,238,0,255,0,232,198,1,0,63,255,205,102,205,0,255,0,244,198,1,0,63,255,139,69,139,0,255,0,0,199,1,0,17,218,210,210,105,30,255,0,10,199,1,0,17,219,255,255,127,36,255,0,21,199,1,0,17,219,238,238,118,33,255,0,32,199,1,0,17,218,205,205,102,29,255,0,43,199,1,0,17,220,139,139,69,19,255,0,54,199,1,0,11,175,255,255,127,80,255,0,60,199,1,0,7,169,255,255,114,86,255,0,67,199,1,0,6,169,238,238,106,80,255,0,74,199,1,0,6,169,205,205,91,69,255,0,81,199,1,0,6,168,139,139,62,47,255,0,88,199,1,0,154,147,237,100,149,237,255,0,103,199,1,0,33,34,255,255,248,220,255,0,112,199,1,0,33,34,255,255,248,220,255,0,122,199,1,0,34,35,238,238,232,205,255,0,132,199,1,0,34,34,205,205,200,177,255,0,142,199,1,0,35,34,139,139,136,120,255,0,152,199,1,0,246,231,220,220,20,60,255,0,160,199,1,0,127,255,255,0,255,255,255,0,165,199,1,0,127,255,255,0,255,255,255,0,171,199,1,0,127,255,238,0,238,238,255,0,177,199,1,0,127,255,205,0,205,205,255,0,183,199,1,0,127,255,139,0,139,139,255,0,189,199,1,0,30,239,184,184,134,11,255,0,203,199,1,0,30,240,255,255,185,15,255,0,218,199,1,0,30,240,238,238,173,14,255,0,233,199,1,0,30,240,205,205,149,12,255,0,248,199,1,0,30,240,139,139,101,8,255,0,7,200,1,0,85,255,100,0,100,0,255,0,17,200,1,0,39,110,189,189,183,107,255,0,27,200,1,0,58,142,107,85,107,47,255,0,42,200,1,0,58,143,255,202,255,112,255,0,58,200,1,0,58,143,238,188,238,104,255,0,74,200,1,0,58,143,205,162,205,90,255,0,90,200,1,0,58,143,139,110,139,61,255,0,106,200,1,0,23,255,255,255,140,0,255,0,117,200,1,0,21,255,255,255,127,0,255,0,129,200,1,0,21,255,238,238,118,0,255,0,141,200,1,0,21,255,205,205,102,0,255,0,153,200,1,0,21,255,139,139,69,0,255,0,165,200,1,0,198,192,204,153,50,204,255,0,176,200,1,0,198,193,255,191,62,255,255,0,188,200,1,0,198,192,238,178,58,238,255,0,200,200,1,0,198,192,205,154,50,205,255,0,212,200,1,0,198,192,139,104,34,139,255,0,224,200,1,0,10,121,233,233,150,122,255,0,235,200,1,0,85,61,188,143,188,143,255,0,248,200,1,0,85,62,255,193,255,193,255,0,6,201,1,0,85,62,238,180,238,180,255,0,20,201,1,0,85,62,205,155,205,155,255,0,34,201,1,0,85,62,139,105,139,105,255,0,48,201,1,0,175,143,139,72,61,139,255,0,62,201,1,0,127,103,79,47,79,79,255,0,76,201,1,0,127,104,255,151,255,255,255,0,91,201,1,0,127,103,238,141,238,238,255,0,106,201,1,0,127,104,205,121,205,205,255,0,121,201,1,0,127,104,139,82,139,139,255,0,136,201,1,0,127,103,79,47,79,79,255,0,150,201,1,0,128,255,209,0,206,209,255,0,164,201,1,0,199,255,211,148,0,211,255,0,175,201,1,0,232,235,255,255,20,147,255,0,184,201,1,0,232,235,255,255,20,147,255,0,194,201,1,0,232,235,238,238,18,137,255,0,204,201,1,0,232,235,205,205,16,118,255,0,214,201,1,0,231,236,139,139,10,80,255,0,224,201,1,0,138,255,255,0,191,255,255,0,236,201,1,0,138,255,255,0,191,255,255,0,249,201,1,0,138,255,238,0,178,238,255,0,6,202,1,0,138,255,205,0,154,205,255,0,19,202,1,0,138,255,139,0,104,139,255,0,32,202,1,0,0,0,105,105,105,105,255,0,40,202,1,0,0,0,105,105,105,105,255,0,48,202,1,0,148,225,255,30,144,255,255,0,59,202,1,0,148,225,255,30,144,255,255,0,71,202,1,0,148,225,238,28,134,238,255,0,83,202,1,0,148,225,205,24,116,205,255,0,95,202,1,0,148,225,139,16,78,139,255,0,107,202,1,0,0,206,178,178,34,34,255,0,117,202,1,0,0,207,255,255,48,48,255,0,128,202,1,0,0,207,238,238,44,44,255,0,139,202,1,0,0,207,205,205,38,38,255,0,150,202,1,0,0,207,139,139,26,26,255,0,161,202,1,0,28,15,255,255,250,240,255,0,173,202,1,0,85,192,139,34,139,34,255,0,185,202,1,0,0,0,220,220,220,220,255,0,195,202,1,0,170,7,255,248,248,255,255,0,206,202,1,0,35,255,255,255,215,0,255,0,211,202,1,0,35,255,255,255,215,0,255,0,217,202,1,0,35,255,238,238,201,0,255,0,223,202,1,0,35,255,205,205,173,0,255,0,229,202,1,0,35,255,139,139,117,0,255,0,235,202,1,0,30,217,218,218,165,32,255,0,245,202,1,0,30,218,255,255,193,37,255,0,0,203,1,0,30,218,238,238,180,34,255,0,11,203,1,0,30,218,205,205,155,29,255,0,22,203,1,0,30,218,139,139,105,20,255,0,33,203,1,0,0,0,192,192,192,192,255,0,38,203,1,0,0,0,0,0,0,0,255,0,44,203,1,0,0,0,3,3,3,3,255,0,50,203,1,0,0,0,26,26,26,26,255,0,57,203,1,0,0,0,255,255,255,255,255,0,65,203,1,0,0,0,28,28,28,28,255,0,72,203,1,0,0,0,31,31,31,31,255,0,79,203,1,0,0,0,33,33,33,33,255,0,86,203,1,0,0,0,36,36,36,36,255,0,93,203,1,0,0,0,38,38,38,38,255,0,100,203,1,0,0,0,41,41,41,41,255,0,107,203,1,0,0,0,43,43,43,43,255,0,114,203,1,0,0,0,46,46,46,46,255,0,121,203,1,0,0,0,48,48,48,48,255,0,128,203,1,0,0,0,5,5,5,5,255,0,134,203,1,0,0,0,51,51,51,51,255,0,141,203,1,0,0,0,54,54,54,54,255,0,148,203,1,0,0,0,56,56,56,56,255,0,155,203,1,0,0,0,59,59,59,59,255,0,162,203,1,0,0,0,61,61,61,61,255,0,169,203,1,0,0,0,64,64,64,64,255,0,176,203,1,0,0,0,66,66,66,66,255,0,183,203,1,0,0,0,69,69,69,69,255,0,190,203,1,0,0,0,71,71,71,71,255,0,197,203,1,0,0,0,74,74,74,74,255,0,204,203,1,0,0,0,8,8,8,8,255,0,210,203,1,0,0,0,77,77,77,77,255,0,217,203,1,0,0,0,79,79,79,79,255,0,224,203,1,0,0,0,82,82,82,82,255,0,231,203,1,0,0,0,84,84,84,84,255,0,238,203,1,0,0,0,87,87,87,87,255,0,245,203,1,0,0,0,89,89,89,89,255,0,252,203,1,0,0,0,92,92,92,92,255,0,3,204,1,0,0,0,94,94,94,94,255,0,10,204,1,0,0,0,97,97,97,97,255,0,17,204,1,0,0,0,99,99,99,99,255,0,24,204,1,0,0,0,10,10,10,10,255,0,30,204,1,0,0,0,102,102,102,102,255,0,37,204,1,0,0,0,105,105,105,105,255,0,44,204,1,0,0,0,107,107,107,107,255,0,51,204,1,0,0,0,110,110,110,110,255,0,58,204,1,0,0,0,112,112,112,112,255,0,65,204,1,0,0,0,115,115,115,115,255,0,72,204,1,0,0,0,117,117,117,117,255,0,79,204,1,0,0,0,120,120,120,120,255,0,86,204,1,0,0,0,122,122,122,122,255,0,93,204,1,0,0,0,125,125,125,125,255,0,100,204,1,0,0,0,13,13,13,13,255,0,106,204,1,0,0,0,127,127,127,127,255,0,113,204,1,0,0,0,130,130,130,130,255,0,120,204,1,0,0,0,133,133,133,133,255,0,127,204,1,0,0,0,135,135,135,135,255,0,134,204,1,0,0,0,138,138,138,138,255,0,141,204,1,0,0,0,140,140,140,140,255,0,148,204,1,0,0,0,143,143,143,143,255,0,155,204,1,0,0,0,145,145,145,145,255,0,162,204,1,0,0,0,148,148,148,148,255,0,169,204,1,0,0,0,150,150,150,150,255,0,176,204,1,0,0,0,15,15,15,15,255,0,182,204,1,0,0,0,153,153,153,153,255,0,189,204,1,0,0,0,156,156,156,156,255,0,196,204,1,0,0,0,158,158,158,158,255,0,203,204,1,0,0,0,161,161,161,161,255,0,210,204,1,0,0,0,163,163,163,163,255,0,217,204,1,0,0,0,166,166,166,166,255,0,224,204,1,0,0,0,168,168,168,168,255,0,231,204,1,0,0,0,171,171,171,171,255,0,238,204,1,0,0,0,173,173,173,173,255,0,245,204,1,0,0,0,176,176,176,176,255,0,252,204,1,0,0,0,18,18,18,18,255,0,2,205,1,0,0,0,179,179,179,179,255,0,9,205,1,0,0,0,181,181,181,181,255,0,16,205,1,0,0,0,184,184,184,184,255,0,23,205,1,0,0,0,186,186,186,186,255,0,30,205,1,0,0,0,189,189,189,189,255,0,37,205,1,0,0,0,191,191,191,191,255,0,44,205,1,0,0,0,194,194,194,194,255,0,51,205,1,0,0,0,196,196,196,196,255,0,58,205,1,0,0,0,199,199,199,199,255,0,65,205,1,0,0,0,201,201,201,201,255,0,72,205,1,0,0,0,20,20,20,20,255,0,78,205,1,0,0,0,204,204,204,204,255,0,85,205,1,0,0,0,207,207,207,207,255,0,92,205,1,0,0,0,209,209,209,209,255,0,99,205,1,0,0,0,212,212,212,212,255,0,106,205,1,0,0,0,214,214,214,214,255,0,113,205,1,0,0,0,217,217,217,217,255,0,120,205,1,0,0,0,219,219,219,219,255,0,127,205,1,0,0,0,222,222,222,222,255,0,134,205,1,0,0,0,224,224,224,224,255,0,141,205,1,0,0,0,227,227,227,227,255,0,148,205,1,0,0,0,23,23,23,23,255,0,154,205,1,0,0,0,229,229,229,229,255,0,161,205,1,0,0,0,232,232,232,232,255,0,168,205,1,0,0,0,235,235,235,235,255,0,175,205,1,0,0,0,237,237,237,237,255,0,182,205,1,0,0,0,240,240,240,240,255,0,189,205,1,0,0,0,242,242,242,242,255,0,196,205,1,0,0,0,245,245,245,245,255,0,203,205,1,0,0,0,247,247,247,247,255,0,210,205,1,0,0,0,250,250,250,250,255,0,217,205,1,0,0,0,252,252,252,252,255,0,224,205,1,0,85,255,255,0,255,0,255,0,230,205,1,0,85,255,255,0,255,0,255,0,237,205,1,0,85,255,238,0,238,0,255,0,244,205,1,0,85,255,205,0,205,0,255,0,251,205,1,0,85,255,139,0,139,0,255,0,2,206,1,0,59,208,255,173,255,47,255,0,14,206,1,0,0,0,192,192,192,192,255,0,19,206,1,0,0,0,0,0,0,0,255,0,25,206,1,0,0,0,3,3,3,3,255,0,31,206,1,0,0,0,26,26,26,26,255,0,38,206,1,0,0,0,255,255,255,255,255,0,46,206,1,0,0,0,28,28,28,28,255,0,53,206,1,0,0,0,31,31,31,31,255,0,60,206,1,0,0,0,33,33,33,33,255,0,67,206,1,0,0,0,36,36,36,36,255,0,74,206,1,0,0,0,38,38,38,38,255,0,81,206,1,0,0,0,41,41,41,41,255,0,88,206,1,0,0,0,43,43,43,43,255,0,95,206,1,0,0,0,46,46,46,46,255,0,102,206,1,0,0,0,48,48,48,48,255,0,109,206,1,0,0,0,5,5,5,5,255,0,115,206,1,0,0,0,51,51,51,51,255,0,122,206,1,0,0,0,54,54,54,54,255,0,129,206,1,0,0,0,56,56,56,56,255,0,136,206,1,0,0,0,59,59,59,59,255,0,143,206,1,0,0,0,61,61,61,61,255,0,150,206,1,0,0,0,64,64,64,64,255,0,157,206,1,0,0,0,66,66,66,66,255,0,164,206,1,0,0,0,69,69,69,69,255,0,171,206,1,0,0,0,71,71,71,71,255,0,178,206,1,0,0,0,74,74,74,74,255,0,185,206,1,0,0,0,8,8,8,8,255,0,191,206,1,0,0,0,77,77,77,77,255,0,198,206,1,0,0,0,79,79,79,79,255,0,205,206,1,0,0,0,82,82,82,82,255,0,212,206,1,0,0,0,84,84,84,84,255,0,219,206,1,0,0,0,87,87,87,87,255,0,226,206,1,0,0,0,89,89,89,89,255,0,233,206,1,0,0,0,92,92,92,92,255,0,240,206,1,0,0,0,94,94,94,94,255,0,247,206,1,0,0,0,97,97,97,97,255,0,254,206,1,0,0,0,99,99,99,99,255,0,5,207,1,0,0,0,10,10,10,10,255,0,11,207,1,0,0,0,102,102,102,102,255,0,18,207,1,0,0,0,105,105,105,105,255,0,25,207,1,0,0,0,107,107,107,107,255,0,32,207,1,0,0,0,110,110,110,110,255,0,39,207,1,0,0,0,112,112,112,112,255,0,46,207,1,0,0,0,115,115,115,115,255,0,53,207,1,0,0,0,117,117,117,117,255,0,60,207,1,0,0,0,120,120,120,120,255,0,67,207,1,0,0,0,122,122,122,122,255,0,74,207,1,0,0,0,125,125,125,125,255,0,81,207,1,0,0,0,13,13,13,13,255,0,87,207,1,0,0,0,127,127,127,127,255,0,94,207,1,0,0,0,130,130,130,130,255,0,101,207,1,0,0,0,133,133,133,133,255,0,108,207,1,0,0,0,135,135,135,135,255,0,115,207,1,0,0,0,138,138,138,138,255,0,122,207,1,0,0,0,140,140,140,140,255,0,129,207,1,0,0,0,143,143,143,143,255,0,136,207,1,0,0,0,145,145,145,145,255,0,143,207,1,0,0,0,148,148,148,148,255,0,150,207,1,0,0,0,150,150,150,150,255,0,157,207,1,0,0,0,15,15,15,15,255,0,163,207,1,0,0,0,153,153,153,153,255,0,170,207,1,0,0,0,156,156,156,156,255,0,177,207,1,0,0,0,158,158,158,158,255,0,184,207,1,0,0,0,161,161,161,161,255,0,191,207,1,0,0,0,163,163,163,163,255,0,198,207,1,0,0,0,166,166,166,166,255,0,205,207,1,0,0,0,168,168,168,168,255,0,212,207,1,0,0,0,171,171,171,171,255,0,219,207,1,0,0,0,173,173,173,173,255,0,226,207,1,0,0,0,176,176,176,176,255,0,233,207,1,0,0,0,18,18,18,18,255,0,239,207,1,0,0,0,179,179,179,179,255,0,246,207,1,0,0,0,181,181,181,181,255,0,253,207,1,0,0,0,184,184,184,184,255,0,4,208,1,0,0,0,186,186,186,186,255,0,11,208,1,0,0,0,189,189,189,189,255,0,18,208,1,0,0,0,191,191,191,191,255,0,25,208,1,0,0,0,194,194,194,194,255,0,32,208,1,0,0,0,196,196,196,196,255,0,39,208,1,0,0,0,199,199,199,199,255,0,46,208,1,0,0,0,201,201,201,201,255,0,53,208,1,0,0,0,20,20,20,20,255,0,59,208,1,0,0,0,204,204,204,204,255,0,66,208,1,0,0,0,207,207,207,207,255,0,73,208,1,0,0,0,209,209,209,209,255,0,80,208,1,0,0,0,212,212,212,212,255,0,87,208,1,0,0,0,214,214,214,214,255,0,94,208,1,0,0,0,217,217,217,217,255,0,101,208,1,0,0,0,219,219,219,219,255,0,108,208,1,0,0,0,222,222,222,222,255,0,115,208,1,0,0,0,224,224,224,224,255,0,122,208,1,0,0,0,227,227,227,227,255,0,129,208,1,0,0,0,23,23,23,23,255,0,135,208,1,0,0,0,229,229,229,229,255,0,142,208,1,0,0,0,232,232,232,232,255,0,149,208,1,0,0,0,235,235,235,235,255,0,156,208,1,0,0,0,237,237,237,237,255,0,163,208,1,0,0,0,240,240,240,240,255,0,170,208,1,0,0,0,242,242,242,242,255,0,177,208,1,0,0,0,245,245,245,245,255,0,184,208,1,0,0,0,247,247,247,247,255],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+40960);allocate([191,208,1,0,0,0,250,250,250,250,255,0,198,208,1,0,0,0,252,252,252,252,255,0,205,208,1,0,85,15,255,240,255,240,255,0,214,208,1,0,85,15,255,240,255,240,255,0,224,208,1,0,85,15,238,224,238,224,255,0,234,208,1,0,85,14,205,193,205,193,255,0,244,208,1,0,85,14,139,131,139,131,255,0,254,208,1,0,233,150,255,255,105,180,255,0,6,209,1,0,234,145,255,255,110,180,255,0,15,209,1,0,235,141,238,238,106,167,255,0,24,209,1,0,236,135,205,205,96,144,255,0,33,209,1,0,234,148,139,139,58,98,255,0,42,209,1,0,0,140,205,205,92,92,255,0,52,209,1,0,0,148,255,255,106,106,255,0,63,209,1,0,0,148,238,238,99,99,255,0,74,209,1,0,0,149,205,205,85,85,255,0,85,209,1,0,0,148,139,139,58,58,255,0,96,209,1,0,194,255,130,75,0,130,255,0,103,209,1,0,42,0,255,255,255,254,0,0,109,209,1,0,42,15,255,255,255,240,255,0,115,209,1,0,42,15,255,255,255,240,255,0,122,209,1,0,42,15,238,238,238,224,255,0,129,209,1,0,42,14,205,205,205,193,255,0,136,209,1,0,42,14,139,139,139,131,255,0,143,209,1,0,38,106,240,240,230,140,255,0,149,209,1,0,39,112,255,255,246,143,255,0,156,209,1,0,39,112,238,238,230,133,255,0,163,209,1,0,39,111,205,205,198,115,255,0,170,209,1,0,39,111,139,139,134,78,255,0,177,209,1,0,170,20,250,230,230,250,255,0,186,209,1,0,240,15,255,255,240,245,255,0,200,209,1,0,240,15,255,255,240,245,255,0,215,209,1,0,239,15,238,238,224,229,255,0,230,209,1,0,240,14,205,205,193,197,255,0,245,209,1,0,239,14,139,139,131,134,255,0,4,210,1,0,64,255,252,124,252,0,255,0,14,210,1,0,38,49,255,255,250,205,255,0,27,210,1,0,38,49,255,255,250,205,255,0,41,210,1,0,37,50,238,238,233,191,255,0,55,210,1,0,38,49,205,205,201,165,255,0,69,210,1,0,39,49,139,139,137,112,255,0,83,210,1,0,137,63,230,173,216,230,255,0,93,210,1,0,138,64,255,191,239,255,255,0,104,210,1,0,138,64,238,178,223,238,255,0,115,210,1,0,138,63,205,154,192,205,255,0,126,210,1,0,137,64,139,104,131,139,255,0,137,210,1,0,0,119,240,240,128,128,255,0,148,210,1,0,127,31,255,224,255,255,255,0,158,210,1,0,127,31,255,224,255,255,255,0,169,210,1,0,127,31,238,209,238,238,255,0,180,210,1,0,127,31,205,180,205,205,255,0,191,210,1,0,127,31,139,122,139,139,255,0,202,210,1,0,35,115,238,238,221,130,255,0,217,210,1,0,35,116,255,255,236,139,255,0,233,210,1,0,35,115,238,238,220,130,255,0,249,210,1,0,35,115,205,205,190,112,255,0,9,211,1,0,35,115,139,139,129,76,255,0,25,211,1,0,42,40,250,250,250,210,255,0,46,211,1,0,0,0,211,211,211,211,255,0,56,211,1,0,0,0,211,211,211,211,255,0,66,211,1,0,248,73,255,255,182,193,255,0,76,211,1,0,249,81,255,255,174,185,255,0,87,211,1,0,248,81,238,238,162,173,255,0,98,211,1,0,249,80,205,205,140,149,255,0,109,211,1,0,249,80,139,139,95,101,255,0,120,211,1,0,12,132,255,255,160,122,255,0,132,211,1,0,12,132,255,255,160,122,255,0,145,211,1,0,11,132,238,238,149,114,255,0,158,211,1,0,12,133,205,205,129,98,255,0,171,211,1,0,12,133,139,139,87,66,255,0,184,211,1,0,125,209,178,32,178,170,255,0,198,211,1,0,143,117,250,135,206,250,255,0,211,211,1,0,143,79,255,176,226,255,255,0,225,211,1,0,143,79,238,164,211,238,255,0,239,211,1,0,142,79,205,141,182,205,255,0,253,211,1,0,143,78,139,96,123,139,255,0,11,212,1,0,175,143,255,132,112,255,255,0,26,212,1,0,148,56,153,119,136,153,255,0,41,212,1,0,148,56,153,119,136,153,255,0,56,212,1,0,151,52,222,176,196,222,255,0,71,212,1,0,151,53,255,202,225,255,255,0,87,212,1,0,151,53,238,188,210,238,255,0,103,212,1,0,151,53,205,162,181,205,255,0,119,212,1,0,150,53,139,110,123,139,255,0,135,212,1,0,42,31,255,255,255,224,255,0,147,212,1,0,42,31,255,255,255,224,255,0,160,212,1,0,42,31,238,238,238,209,255,0,173,212,1,0,42,31,205,205,205,180,255,0,186,212,1,0,42,31,139,139,139,122,255,0,199,212,1,0,85,192,205,50,205,50,255,0,209,212,1,0,21,20,250,250,240,230,255,0,215,212,1,0,212,255,255,255,0,255,255,0,223,212,1,0,212,255,255,255,0,255,255,0,232,212,1,0,212,255,238,238,0,238,255,0,241,212,1,0,212,255,205,205,0,205,255,0,250,212,1,0,212,255,139,139,0,139,255,0,3,213,1,0,239,185,176,176,48,96,255,0,10,213,1,0,228,203,255,255,52,179,255,0,18,213,1,0,228,203,238,238,48,167,255,0,26,213,1,0,228,204,205,205,41,144,255,0,34,213,1,0,228,203,139,139,28,98,255,0,42,213,1,0,113,128,205,102,205,170,255,0,59,213,1,0,170,255,205,0,0,205,255,0,70,213,1,0,204,152,211,186,85,211,255,0,83,213,1,0,203,153,255,224,102,255,255,0,97,213,1,0,203,153,238,209,95,238,255,0,111,213,1,0,203,153,205,180,82,205,255,0,125,213,1,0,203,154,139,122,55,139,255,0,139,213,1,0,183,124,219,147,112,219,255,0,152,213,1,0,183,125,255,171,130,255,255,0,166,213,1,0,183,125,238,159,121,238,255,0,180,213,1,0,183,125,205,137,104,205,255,0,194,213,1,0,183,124,139,93,71,139,255,0,208,213,1,0,103,169,179,60,179,113,255,0,223,213,1,0,176,143,238,123,104,238,255,0,239,213,1,0,111,255,250,0,250,154,255,0,1,214,1,0,125,167,209,72,209,204,255,0,17,214,1,0,228,228,199,199,21,133,255,0,33,214,1,0,170,198,112,25,25,112,255,0,46,214,1,0,106,9,255,245,255,250,255,0,56,214,1,0,4,30,255,255,228,225,255,0,66,214,1,0,4,30,255,255,228,225,255,0,77,214,1,0,4,30,238,238,213,210,255,0,88,214,1,0,3,29,205,205,183,181,255,0,99,214,1,0,5,29,139,139,125,123,255,0,110,214,1,0,26,73,255,255,228,181,255,0,119,214,1,0,25,81,255,255,222,173,255,0,131,214,1,0,25,81,255,255,222,173,255,0,144,214,1,0,25,82,238,238,207,161,255,0,157,214,1,0,25,82,205,205,179,139,255,0,170,214,1,0,25,82,139,139,121,94,255,0,183,214,1,0,170,255,128,0,0,128,255,0,188,214,1,0,170,255,128,0,0,128,255,0,197,214,1,0,42,0,255,255,255,254,0,0,202,214,1,0,27,23,253,253,245,230,255,0,210,214,1,0,56,192,142,107,142,35,255,0,220,214,1,0,56,193,255,192,255,62,255,0,231,214,1,0,56,192,238,179,238,58,255,0,242,214,1,0,56,192,205,154,205,50,255,0,253,214,1,0,56,192,139,105,139,34,255,0,8,215,1,0,27,255,255,255,165,0,255,0,15,215,1,0,27,255,255,255,165,0,255,0,23,215,1,0,27,255,238,238,154,0,255,0,31,215,1,0,27,255,205,205,133,0,255,0,39,215,1,0,27,255,139,139,90,0,255,0,47,215,1,0,11,255,255,255,69,0,255,0,57,215,1,0,11,255,255,255,69,0,255,0,68,215,1,0,11,255,238,238,64,0,255,0,79,215,1,0,11,255,205,205,55,0,255,0,90,215,1,0,11,255,139,139,37,0,255,0,101,215,1,0,214,123,218,218,112,214,255,0,108,215,1,0,214,124,255,255,131,250,255,0,116,215,1,0,214,124,238,238,122,233,255,0,124,215,1,0,214,124,205,205,105,201,255,0,132,215,1,0,213,124,139,139,71,137,255,0,140,215,1,0,38,72,238,238,232,170,255,0,154,215,1,0,85,100,251,152,251,152,255,0,164,215,1,0,85,101,255,154,255,154,255,0,175,215,1,0,85,100,238,144,238,144,255,0,186,215,1,0,85,100,205,124,205,124,255,0,197,215,1,0,85,100,139,84,139,84,255,0,208,215,1,0,127,67,238,175,238,238,255,0,222,215,1,0,127,68,255,187,255,255,255,0,237,215,1,0,127,68,238,174,238,238,255,0,252,215,1,0,127,68,205,150,205,205,255,0,11,216,1,0,127,67,139,102,139,139,255,0,26,216,1,0,241,124,219,219,112,147,255,0,40,216,1,0,241,125,255,255,130,171,255,0,55,216,1,0,241,125,238,238,121,159,255,0,70,216,1,0,241,125,205,205,104,137,255,0,85,216,1,0,241,124,139,139,71,93,255,0,100,216,1,0,26,41,255,255,239,213,255,0,111,216,1,0,20,70,255,255,218,185,255,0,121,216,1,0,20,70,255,255,218,185,255,0,132,216,1,0,19,69,238,238,203,173,255,0,143,216,1,0,19,69,205,205,175,149,255,0,154,216,1,0,20,69,139,139,119,101,255,0,165,216,1,0,20,176,205,205,133,63,255,0,170,216,1,0,247,63,255,255,192,203,255,0,175,216,1,0,245,73,255,255,181,197,255,0,181,216,1,0,245,73,238,238,169,184,255,0,187,216,1,0,245,74,205,205,145,158,255,0,193,216,1,0,245,73,139,139,99,108,255,0,199,216,1,0,212,70,221,221,160,221,255,0,204,216,1,0,212,68,255,255,187,255,255,0,210,216,1,0,212,68,238,238,174,238,255,0,216,216,1,0,212,68,205,205,150,205,255,0,222,216,1,0,212,67,139,139,102,139,255,0,228,216,1,0,132,59,230,176,224,230,255,0,239,216,1,0,196,221,240,160,32,240,255,0,246,216,1,0,191,207,255,155,48,255,255,0,254,216,1,0,192,207,238,145,44,238,255,0,6,217,1,0,192,207,205,125,38,205,255,0,14,217,1,0,192,207,139,85,26,139,255,0,22,217,1,0,0,255,255,255,0,0,255,0,26,217,1,0,0,255,255,255,0,0,255,0,31,217,1,0,0,255,238,238,0,0,255,0,36,217,1,0,0,255,205,205,0,0,255,0,41,217,1,0,0,255,139,139,0,0,255,0,46,217,1,0,0,61,188,188,143,143,255,0,56,217,1,0,0,62,255,255,193,193,255,0,67,217,1,0,0,62,238,238,180,180,255,0,78,217,1,0,0,62,205,205,155,155,255,0,89,217,1,0,0,62,139,139,105,105,255,0,100,217,1,0,159,181,225,65,105,225,255,0,110,217,1,0,159,183,255,72,118,255,255,0,121,217,1,0,159,183,238,67,110,238,255,0,132,217,1,0,159,182,205,58,95,205,255,0,143,217,1,0,159,183,139,39,64,139,255,0,154,217,1,0,17,220,139,139,69,19,255,0,166,217,1,0,4,138,250,250,128,114,255,0,173,217,1,0,9,150,255,255,140,105,255,0,181,217,1,0,9,150,238,238,130,98,255,0,189,217,1,0,9,150,205,205,112,84,255,0,197,217,1,0,9,150,139,139,76,57,255,0,205,217,1,0,19,154,244,244,164,96,255,0,216,217,1,0,103,170,139,46,139,87,255,0,225,217,1,0,103,171,255,84,255,159,255,0,235,217,1,0,103,171,238,78,238,148,255,0,245,217,1,0,103,171,205,67,205,128,255,0,255,217,1,0,103,170,139,46,139,87,255,0,9,218,1,0,17,16,255,255,245,238,255,0,18,218,1,0,17,16,255,255,245,238,255,0,28,218,1,0,18,17,238,238,229,222,255,0,38,218,1,0,18,17,205,205,197,191,255,0,48,218,1,0,18,16,139,139,134,130,255,0,58,218,1,0,13,183,160,160,82,45,255,0,65,218,1,0,13,184,255,255,130,71,255,0,73,218,1,0,13,184,238,238,121,66,255,0,81,218,1,0,13,184,205,205,104,57,255,0,89,218,1,0,13,185,139,139,71,38,255,0,97,218,1,0,139,108,235,135,206,235,255,0,105,218,1,0,144,120,255,135,206,255,255,0,114,218,1,0,144,120,238,126,192,238,255,0,123,218,1,0,144,120,205,108,166,205,255,0,132,218,1,0,145,119,139,74,112,139,255,0,141,218,1,0,175,143,205,106,90,205,255,0,151,218,1,0,175,144,255,131,111,255,255,0,162,218,1,0,175,144,238,122,103,238,255,0,173,218,1,0,175,144,205,105,89,205,255,0,184,218,1,0,175,144,139,71,60,139,255,0,195,218,1,0,148,56,144,112,128,144,255,0,205,218,1,0,149,56,255,198,226,255,255,0,216,218,1,0,149,56,238,185,211,238,255,0,227,218,1,0,148,57,205,159,182,205,255,0,238,218,1,0,149,56,139,108,123,139,255,0,249,218,1,0,148,56,144,112,128,144,255,0,3,219,1,0,0,5,255,255,250,250,255,0,8,219,1,0,0,5,255,255,250,250,255,0,14,219,1,0,0,5,238,238,233,233,255,0,20,219,1,0,0,4,205,205,201,201,255,0,26,219,1,0,0,3,139,139,137,137,255,0,32,219,1,0,106,255,255,0,255,127,255,0,44,219,1,0,106,255,255,0,255,127,255,0,57,219,1,0,106,255,238,0,238,118,255,0,70,219,1,0,106,255,205,0,205,102,255,0,83,219,1,0,106,255,139,0,139,69,255,0,96,219,1,0,146,155,180,70,130,180,255,0,106,219,1,0,146,156,255,99,184,255,255,0,117,219,1,0,146,156,238,92,172,238,255,0,128,219,1,0,146,156,205,79,148,205,255,0,139,219,1,0,147,155,139,54,100,139,255,0,150,219,1,0,24,84,210,210,180,140,255,0,154,219,1,0,20,176,255,255,165,79,255,0,159,219,1,0,20,176,238,238,154,73,255,0,164,219,1,0,20,176,205,205,133,63,255,0,169,219,1,0,20,176,139,139,90,43,255,0,174,219,1,0,212,29,216,216,191,216,255,0,182,219,1,0,212,30,255,255,225,255,255,0,191,219,1,0,212,30,238,238,210,238,255,0,200,219,1,0,212,29,205,205,181,205,255,0,209,219,1,0,212,29,139,139,123,139,255,0,218,219,1,0,6,184,255,255,99,71,255,0,225,219,1,0,6,184,255,255,99,71,255,0,233,219,1,0,6,184,238,238,92,66,255,0,241,219,1,0,6,184,205,205,79,57,255,0,249,219,1,0,6,185,139,139,54,38,255,0,75,221,1,0,42,0,255,255,255,254,0,0,1,220,1,0,123,182,224,64,224,208,255,0,11,220,1,0,129,255,255,0,245,255,255,0,22,220,1,0,129,255,238,0,229,238,255,0,33,220,1,0,129,255,205,0,197,205,255,0,44,220,1,0,129,255,139,0,134,139,255,0,55,220,1,0,212,115,238,238,130,238,255,0,62,220,1,0,227,215,208,208,32,144,255,0,72,220,1,0,235,193,255,255,62,150,255,0,83,220,1,0,235,192,238,238,58,140,255,0,94,220,1,0,235,192,205,205,50,120,255,0,105,220,1,0,235,192,139,139,34,82,255,0,116,220,1,0,27,68,245,245,222,179,255,0,122,220,1,0,27,69,255,255,231,186,255,0,129,220,1,0,27,68,238,238,216,174,255,0,136,220,1,0,27,68,205,205,186,150,255,0,143,220,1,0,27,67,139,139,126,102,255,0,150,220,1,0,0,0,255,255,255,255,255,0,156,220,1,0,0,0,245,245,245,245,255,0,167,220,1,0,42,255,255,255,255,0,255,0,174,220,1,0,42,255,255,255,255,0,255,0,182,220,1,0,42,255,238,238,238,0,255,0,190,220,1,0,42,255,205,205,205,0,255,0,198,220,1,0,42,255,139,139,139,0,255,0,206,220,1,0,56,192,205,154,205,50,255,0,85,225,1,0,94,221,1,0,96,221,1,0,98,221,1,0,100,221,1,0,102,221,1,0,104,221,1,0,106,221,1,0,108,221,1,0,110,221,1,0,112,221,1,0,115,221,1,0,118,221,1,0,121,221,1,0,124,221,1,0,127,221,1,0,130,221,1,0,133,221,1,0,136,221,1,0,139,221,1,0,142,221,1,0,0,0,0,0,4,0,0,0,4,0,0,0,5,0,0,0,49,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,222,1,0,33,224,1,0,8,0,0,0,16,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,16,0,0,0,24,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,215,0,0,20,0,0,0,67,46,85,84,70,45,56,0,0,0,0,0,0,0,0,0,0,0,0,0,222,18,4,149,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,2,0,0,192,3,0,0,192,4,0,0,192,5,0,0,192,6,0,0,192,7,0,0,192,8,0,0,192,9,0,0,192,10,0,0,192,11,0,0,192,12,0,0,192,13,0,0,192,14,0,0,192,15,0,0,192,16,0,0,192,17,0,0,192,18,0,0,192,19,0,0,192,20,0,0,192,21,0,0,192,22,0,0,192,23,0,0,192,24,0,0,192,25,0,0,192,26,0,0,192,27,0,0,192,28,0,0,192,29,0,0,192,30,0,0,192,31,0,0,192,0,0,0,179,1,0,0,195,2,0,0,195,3,0,0,195,4,0,0,195,5,0,0,195,6,0,0,195,7,0,0,195,8,0,0,195,9,0,0,195,10,0,0,195,11,0,0,195,12,0,0,195,13,0,0,211,14,0,0,195,15,0,0,195,0,0,12,187,1,0,12,195,2,0,12,195,3,0,12,195,4,0,12,211,136,216,0,0,5,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,7,0,0,0,247,168,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,153,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,217,0,0,9,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,7,0,0,0,255,168,2,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,218,0,0,5,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,7,0,0,0,7,173,2,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,218,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,9,0,0,0,10,0,0,0,13,0,0,0,11,0,0,0,12,0,0,0,133,0,0,0,0,32,0,0,1,32,0,0,2,32,0,0,3,32,0,0,4,32,0,0,5,32,0,0,6,32,0,0,8,32,0,0,9,32,0,0,10,32,0,0,40,32,0,0,41,32,0,0,95,32,0,0,0,48,0,0,0,0,0,0,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5,95,112,137,0,255,9,47,15,3,0,0,0,4,0,0,0,4,0,0,0,6,0,0,0,131,249,162,0,68,78,110,0,252,41,21,0,209,87,39,0,221,52,245,0,98,219,192,0,60,153,149,0,65,144,67,0,99,81,254,0,187,222,171,0,183,97,197,0,58,110,36,0,210,77,66,0,73,6,224,0,9,234,46,0,28,146,209,0,235,29,254,0,41,177,28,0,232,62,167,0,245,53,130,0,68,187,46,0,156,233,132,0,180,38,112,0,65,126,95,0,214,145,57,0,83,131,57,0,156,244,57,0,139,95,132,0,40,249,189,0,248,31,59,0,222,255,151,0,15,152,5,0,17,47,239,0,10,90,139,0,109,31,109,0,207,126,54,0,9,203,39,0,70,79,183,0,158,102,63,0,45,234,95,0,186,39,117,0,229,235,199,0,61,123,241,0,247,57,7,0,146,82,138,0,251,107,234,0,31,177,95,0,8,93,141,0,48,3,86,0,123,252,70,0,240,171,107,0,32,188,207,0,54,244,154,0,227,169,29,0,94,97,145,0,8,27,230,0,133,153,101,0,160,20,95,0,141,64,104,0,128,216,255,0,39,115,77,0,6,6,49,0,202,86,21,0,201,168,115,0,123,226,96,0,107,140,192,0,116,0,0,0,3,15,2,0,110,0,0,0,5,15,2,0,114,0,0,0,7,15,2,0,102,0,0,0,9,15,2,0,97,0,0,0,11,15,2,0,101,0,0,0,13,15,2,0,119,0,0,0,15,15,2,0,87,0,0,0,28,15,2,0,115,0,0,0,42,15,2,0,83,0,0,0,54,15,2,0,100,0,0,0,67,15,2,0,68,0,0,0,79,15,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,4,0,27,0,27,0,32,0,32,0,35,0,33,0,10,0,2,0,22,0,9,0,33,0,33,0,33,0,21,0,28,0,1,0,20,0,20,0,20,0,20,0,20,0,20,0,20,0,8,0,4,0,5,0,27,0,2,0,23,0,27,0,32,0,31,0,30,0,29,0,9,0,19,0,0,0,21,0,18,0,21,0,3,0,7,0,21,0,21,0,20,0,20,0,20,0,20,0,20,0,20,0,20,0,20,0,8,0,4,0,5,0,5,0,6,0,27,0,26,0,24,0,25,0,32,0,7,0,21,0,20,0,20,0,20,0,20,0,20,0,20,0,11,0,20,0,13,0,20,0,12,0,20,0,20,0,20,0,14,0,20,0,20,0,20,0,16,0,20,0,15,0,20,0,17,0,0,0,0,0,0,0,174,0,46,0,47,0,51,0,53,0,48,0,55,0,170,0,219,0,219,0,219,0,219,0,0,0,61,0,135,0,55,0,55,0,219,0,219,0,0,0,40,0,53,0,46,0,50,0,47,0,98,0,0,0,0,0,71,0,0,0,0,0,219,0,81,0,0,0,219,0,219,0,219,0,0,0,219,0,132,0,85,0,219,0,130,0,219,0,0,0,129,0,219,0,0,0,62,0,66,0,65,0,72,0,68,0,82,0,91,0,0,0,0,0,94,0,95,0,219,0,0,0,219,0,219,0,219,0,0,0,0,0,123,0,73,0,87,0,82,0,90,0,90,0,93,0,0,0,95,0,0,0,95,0,0,0,101,0,93,0,95,0,0,0,93,0,110,0,106,0,0,0,105,0,0,0,110,0,0,0,219,0,147,0,154,0,161,0,168,0,171,0,112,0,177,0,184,0,191,0,198,0,205,0,211,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,4,0,7,0,3,0,4,0,5,0,5,0,6,0,6,0,8,0,7,0,7,0,17,0,22,0,18,0,17,0,18,0,8,0,8,0,15,0,15,0,23,0,15,0,24,0,15,0,25,0,26,0,26,0,30,0,22,0,52,0,30,0,5,0,50,0,6,0,34,0,34,0,51,0,23,0,24,0,53,0,25,0,26,0,26,0,42,0,54,0,42,0,52,0,55,0,50,0,69,0,59,0,60,0,51,0,59,0,60,0,70,0,53,0,71,0,72,0,76,0,54,0,34,0,73,0,74,0,55,0,69,0,78,0,80,0,98,0,81,0,82,0,84,0,70,0,71,0,85,0,72,0,76,0,86,0,73,0,74,0,88,0,90,0,78,0,68,0,80,0,81,0,82,0,84,0,56,0,47,0,44,0,85,0,41,0,86,0,27,0,16,0,88,0,90,0,93,0,93,0,93,0,93,0,93,0,93,0,93,0,94,0,94,0,94,0,94,0,94,0,94,0,94,0,95,0,95,0,95,0,95,0,95,0,95,0,95,0,96,0,9,0,96,0,96,0,96,0,96,0,96,0,97,0,97,0,99,0,2,0,99,0,99,0,99,0,99,0,99,0,100,0,0,0,100,0,0,0,100,0,100,0,100,0,101,0,0,0,101,0,101,0,101,0,101,0,101,0,102,0,102,0,0,0,102,0,102,0,102,0,102,0,103,0,0,0,103,0,103,0,103,0,103,0,104,0,0,0,104,0,104,0,104,0,104,0,104,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,0,0,92,0,1,0,93,0,93,0,94,0,94,0,95,0,95,0,92,0,92,0,92,0,92,0,92,0,96,0,92,0,92,0,92,0,97,0,92,0,92,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,99,0,100,0,101,0,102,0,102,0,92,0,92,0,103,0,92,0,92,0,92,0,96,0,92,0,92,0,97,0,92,0,97,0,92,0,104,0,97,0,92,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,99,0,100,0,101,0,101,0,92,0,102,0,92,0,92,0,92,0,103,0,104,0,97,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,98,0,0,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,0,0,10,0,11,0,12,0,13,0,14,0,10,0,15,0,16,0,17,0,18,0,19,0,10,0,20,0,21,0,21,0,21,0,22,0,23,0,21,0,24,0,21,0,21,0,25,0,21,0,21,0,21,0,26,0,21,0,21,0,10,0,21,0,21,0,21,0,22,0,23,0,24,0,21,0,21,0,25,0,21,0,21,0,21,0,26,0,21,0,21,0,21,0,21,0,27,0,12,0,12,0,36,0,30,0,30,0,32,0,33,0,32,0,33,0,36,0,37,0,38,0,45,0,50,0,47,0,46,0,42,0,37,0,38,0,40,0,41,0,51,0,42,0,52,0,43,0,53,0,54,0,55,0,60,0,50,0,71,0,61,0,34,0,69,0,34,0,63,0,64,0,70,0,51,0,52,0,72,0,53,0,54,0,55,0,47,0,73,0,42,0,71,0,74,0,69,0,76,0,92,0,60,0,70,0,92,0,61,0,77,0,72,0,78,0,79,0,82,0,73,0,65,0,80,0,81,0,74,0,76,0,83,0,84,0,49,0,85,0,86,0,87,0,77,0,78,0,88,0,79,0,82,0,89,0,80,0,81,0,90,0,91,0,83,0,68,0,84,0,85,0,86,0,87,0,75,0,68,0,44,0,88,0,44,0,89,0,56,0,44,0,90,0,91,0,29,0,29,0,29,0,29,0,29,0,29,0,29,0,31,0,31,0,31,0,31,0,31,0,31,0,31,0,35,0,35,0,35,0,35,0,35,0,35,0,35,0,39,0,92,0,39,0,39,0,39,0,39,0,39,0,48,0,48,0,57,0,28,0,57,0,57,0,57,0,57,0,57,0,58,0,92,0,58,0,92,0,58,0,58,0,58,0,59,0,92,0,59,0,59,0,59,0,59,0,59,0,62,0,62,0,92,0,62,0,62,0,62,0,62,0,66,0,92,0,66,0,66,0,66,0,66,0,67,0,92,0,67,0,67,0,67,0,67,0,67,0,9,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,92,0,8,0,174,255,209,0,10,0,174,255,174,255,11,0,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,5,0,209,0,174,255,209,0,209,0,209,0,209,0,209,0,209,0,209,0,209,0,174,255,251,255,174,255,14,0,236,255,174,255,174,255,174,255,174,255,209,0,209,0,209,0,209,0,209,0,13,0,37,0,12,0,66,0,16,0,80,0,19,0,109,0,123,0,20,0,152,0,15,0,166,0,195,0,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,23,0,174,255,119,0,174,255,7,0,46,0,174,255,38,0,174,255,23,0,17,0,35,0,174,255,13,0,174,255,174,255,174,255,174,255,58,0,174,255,174,255,53,0,174,255,174,255,174,255,40,0,174,255,7,0,174,255,59,0,69,0,174,255,72,0,174,255,174,255,174,255,174,255,174,255,174,255,174,255,252,255,232,0,246,255,255,255,26,0,0,0,39,0,1,0,50,0,174,255,174,255,2,0,36,0,3,0,47,0,174,255,174,255,174,255,174,255,174,255,254,255,148,0,174,255,9,0,27,0,174,255,188,255,174,255,174,255,175,255,174,255,174,255,174,255,174,255,174,255,174,255,174,255,0,0,0,0,0,0,109,230,236,222,5,0,11,0,73,0,49,1,83,0,127,1,48,1,105,0,120,1,255,0,129,1,83,2,130,1,131,1,132,1,133,1,134,1,84,2,135,1,136,1,137,1,86,2,138,1,87,2,139,1,140,1,142,1,221,1,143,1,89,2,144,1,91,2,145,1,146,1,147,1,96,2,148,1,99,2,150,1,105,2,151,1,104,2,152,1,153,1,156,1,111,2,157,1,114,2,159,1,117,2,166,1,128,2,167,1,168,1,169,1,131,2,172,1,173,1,174,1,136,2,175,1,176,1,177,1,138,2,178,1,139,2,183,1,146,2,184,1,185,1,188,1,189,1,196,1,198,1,196,1,197,1,197,1,198,1,199,1,201,1,199,1,200,1,200,1,201,1,202,1,204,1,202,1,203,1,203,1,204,1,241,1,243,1,241,1,242,1,242,1,243,1,244,1,245,1,246,1,149,1,247,1,191,1,32,2,158,1,134,3,172,3,136,3,173,3,137,3,174,3,138,3,175,3,140,3,204,3,142,3,205,3,143,3,206,3,153,3,69,3,153,3,190,31,163,3,194,3,247,3,248,3,250,3,251,3,96,30,155,30,158,30,223,0,89,31,81,31,91,31,83,31,93,31,85,31,95,31,87,31,188,31,179,31,204,31,195,31,236,31,229,31,252,31,243,31,58,2,101,44,59,2,60,2,61,2,154,1,62,2,102,44,65,2,66,2,67,2,128,1,68,2,137,2,69,2,140,2,244,3,184,3,249,3,242,3,253,3,123,3,254,3,124,3,255,3,125,3,192,4,207,4,38,33,201,3,42,33,107,0,43,33,229,0,50,33,78,33,131,33,132,33,96,44,97,44,98,44,107,2,99,44,125,29,100,44,125,2,109,44,81,2,110,44,113,2,111,44,80,2,112,44,82,2,114,44,115,44,117,44,118,44,126,44,63,2,127,44,64,2,242,44,243,44,125,167,121,29,139,167,140,167,141,167,101,2,170,167,102,2,199,16,39,45,205,16,45,45,118,3,119,3,156,3,181,0,146,3,208,3,152,3,209,3,166,3,213,3,160,3,214,3,154,3,240,3,161,3,241,3,149,3,245,3,207,3,215,3,0,0,0,0,65,0,32,26,192,0,32,31,0,1,1,47,50,1,1,5,57,1,1,15,74,1,1,45,121,1,1,5,112,3,1,3,145,3,32,17,163,3,32,9,0,4,80,16,16,4,32,32,96,4,1,33,138,4,1,53,193,4,1,13,208,4,1,63,20,5,1,19,49,5,48,38,160,1,1,5,179,1,1,3,205,1,1,15,222,1,1,17,248,1,1,39,34,2,1,17,216,3,1,23,0,30,1,149,160,30,1,95,8,31,248,8,24,31,248,6,40,31,248,8,56,31,248,8,72,31,248,6,104,31,248,8,136,31,248,8,152,31,248,8,168,31,248,8,184,31,248,2,186,31,182,2,200,31,170,4,216,31,248,2,218,31,156,2,232,31,248,2,234,31,144,2,248,31,128,2,250,31,130,2,70,2,1,9,16,5,1,3,96,33,16,16,0,44,48,47,103,44,1,5,128,44,1,99,235,44,1,3,64,166,1,45,128,166,1,23,34,167,1,13,50,167,1,61,121,167,1,3,126,167,1,9,144,167,1,3,160,167,1,9,33,255,32,26,0,0,0,0,123,32,118,97,114,32,112,97,116,104,32,61,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,48,41,59,32,118,97,114,32,100,97,116,97,32,61,32,80,111,105,110,116,101,114,95,115,116,114,105,110,103,105,102,121,40,36,49,41,59,32,70,83,46,99,114,101,97,116,101,80,97,116,104,40,34,47,34,44,32,80,65,84,72,46,100,105,114,110,97,109,101,40,112,97,116,104,41,41,59,32,70,83,46,119,114,105,116,101,70,105,108,101,40,80,65,84,72,46,106,111,105,110,40,34,47,34,44,32,112,97,116,104,41,44,32,100,97,116,97,41,59,32,125,0,99,111,114,101,0,120,100,111,116,118,101,114,115,105,111,110,0,49,46,55,0,49,46,52,0,49,46,50,0,95,108,100,114,97,119,95,0,95,104,100,114,97,119,95,0,95,116,100,114,97,119,95,0,95,104,108,100,114,97,119,95,0,95,116,108,100,114,97,119,95,0,120,100,111,116,32,118,101,114,115,105,111,110,32,34,37,115,34,32,116,111,111,32,108,111,110,103,0,32,37,100,32,0,37,46,48,50,102,0,37,115,37,100,32,45,0,35,37,48,50,120,37,48,50,120,37,48,50,120,37,48,50,120,0,115,101,116,108,105,110,101,119,105,100,116,104,40,0,37,46,51,102,0,83,32,0,67,32,0,50,32,0,37,46,48,51,102,0,69,32,0,101,32,0,70,32,0,116,32,37,117,32,0,84,32,0,100,111,116,58,100,111,116,0,103,118,58,100,111,116,0,99,97,110,111,110,58,100,111,116,0,112,108,97,105,110,58,100,111,116,0,112,108,97,105,110,45,101,120,116,58,100,111,116,0,120,100,111,116,58,120,100,111,116,0,120,100,111,116,49,46,50,58,120,100,111,116,0,120,100,111,116,49,46,52,58,120,100,111,116,0,73,32,0,34,95,115,117,98,103,114,97,112,104,95,99,110,116,34,58,32,37,100,0,34,95,103,118,105,100,34,58,32,37,100,0,34,101,100,103,101,115,34,58,32,91,10,0,34,95,103,118,105,100,34,58,32,37,100,44,10,0,34,116,97,105,108,34,58,32,37,100,44,10,0,34,104,101,97,100,34,58,32,37,100,0,34,111,98,106,101,99,116,115,34,58,32,91,10,0,34,110,111,100,101,115,34,58,32,91,10,0,34,110,97,109,101,34,58,32,34,37,115,34,0,92,34,0,92,47,0,92,98,0,92,102,0,92,110,0,92,114,0,92,116,0,34,115,117,98,103,114,97,112,104,115,34,58,32,91,10,0,34,37,115,34,58,32,0,34,37,115,34,0,67,111,117,108,100,32,110,111,116,32,112,97,114,115,101,32,120,100,111,116,32,34,37,115,34,10,0,91,10,0,34,111,112,34,58,32,34,37,99,34,44,10,0,34,114,101,99,116,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,44,37,46,48,51,102,44,37,46,48,51,102,93,10,0,34,111,112,34,58,32,34,76,34,44,10,0,34,111,112,34,58,32,34,84,34,44,10,0,34,112,116,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,93,44,10,0,34,97,108,105,103,110,34,58,32,34,37,99,34,44,10,0,34,119,105,100,116,104,34,58,32,37,46,48,51,102,44,10,0,34,116,101,120,116,34,58,32,34,37,115,34,10,0,34,103,114,97,100,34,58,32,34,110,111,110,101,34,44,10,0,34,99,111,108,111,114,34,58,32,34,37,115,34,10,0,34,103,114,97,100,34,58,32,34,108,105,110,101,97,114,34,44,10,0,34,103,114,97,100,34,58,32,34,114,97,100,105,97,108,34,44,10,0,34,111,112,34,58,32,34,70,34,44,10,0,34,115,105,122,101,34,58,32,37,46,48,51,102,44,10,0,34,102,97,99,101,34,58,32,34,37,115,34,10,0,34,111,112,34,58,32,34,83,34,44,10,0,34,115,116,121,108,101,34,58,32,34,37,115,34,10,0,34,111,112,34,58,32,34,116,34,44,10,0,34,102,111,110,116,99,104,97,114,34,58,32,37,100,10,0,34,112,48,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,44,37,46,48,51,102,93,44,10,0,34,112,49,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,44,37,46,48,51,102,93,44,10,0,34,115,116,111,112,115,34,58,32,91,0,123,34,102,114,97,99,34,58,32,37,46,48,51,102,44,32,34,99,111,108,111,114,34,58,32,34,37,115,34,125,0,93,10,0,34,112,48,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,93,44,10,0,34,112,49,34,58,32,91,37,46,48,51,102,44,37,46,48,51,102,93,44,10,0,34,112,111,105,110,116,115,34,58,32,91,0,91,37,46,48,51,102,44,37,46,48,51,102,93,0,100,114,97,119,95,0,108,100,114,97,119,95,0,104,100,114,97,119,95,0,116,100,114,97,119,95,0,104,108,100,114,97,119,95,0,116,108,100,114,97,119,95,0,34,100,105,114,101,99,116,101,100,34,58,32,37,115,44,10,0,34,115,116,114,105,99,116,34,58,32,37,115,0,32,32,0,68,117,112,108,105,99,97,116,101,32,99,108,117,115,116,101,114,32,110,97,109,101,32,34,37,115,34,10,0,120,100,111,116,0,106,115,111,110,0,106,115,111,110,48,0,100,111,116,95,106,115,111,110,0,120,100,111,116,95,106,115,111,110,0,106,115,111,110,58,106,115,111,110,0,106,115,111,110,48,58,106,115,111,110,0,100,111,116,95,106,115,111,110,58,106,115,111,110,0,120,100,111,116,95,106,115,111,110,58,106,115,111,110,0,110,32,62,61,32,52,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,102,105,103,46,99,0,102,105,103,95,98,101,122,105,101,114,0,102,105,103,95,114,101,115,111,108,118,101,95,99,111,108,111,114,0,102,105,103,0,102,105,103,58,102,105,103,0,109,97,112,0,114,101,99,116,32,37,115,32,37,100,44,37,100,32,37,100,44,37,100,10,0,99,105,114,99,108,101,32,37,115,32,37,100,44,37,100,44,37,100,10,0,112,111,108,121,32,37,115,0,32,37,100,44,37,100,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,109,97,112,46,99,0,109,97,112,95,111,117,116,112,117,116,95,115,104,97,112,101,0,114,101,99,116,97,110,103,108,101,32,40,37,100,44,37,100,41,32,40,37,100,44,37,100,41,32,37,115,32,37,115,10,0,60,97,114,101,97,32,115,104,97,112,101,61,34,99,105,114,99,108,101,34,0,60,97,114,101,97,32,115,104,97,112,101,61,34,114,101,99,116,34,0,60,97,114,101,97,32,115,104,97,112,101,61,34,112,111,108,121,34,0,32,104,114,101,102,61,34,0,32,116,105,116,108,101,61,34,0,32,97,108,116,61,34,34,0,32,99,111,111,114,100,115,61,34,0,37,100,44,37,100,44,37,100,0,37,100,44,37,100,44,37,100,44,37,100,0,37,100,44,37,100,0,44,37,100,44,37,100,0,34,62,10,0,60,47,109,97,112,62,10,0,98,97,115,101,32,114,101,102,101,114,101,114,10,0,100,101,102,97,117,108,116,32,0,60,109,97,112,32,105,100,61,34,0,34,32,110,97,109,101,61,34,0,105,115,109,97,112,58,109,97,112,0,99,109,97,112,58,109,97,112,0,105,109,97,112,58,109,97,112,0,99,109,97,112,120,58,109,97,112,0,105,109,97,112,95,110,112,58,109,97,112,0,99,109,97,112,120,95,110,112,58,109,97,112,0,35,32,37,115,10,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,10,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,51,102,32,37,100,32,37,46,52,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,37,100,32,37,100,32,35,37,48,50,120,37,48,50,120,37,48,50,120,10,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,109,112,46,99,0,109,112,95,114,101,115,111,108,118,101,95,99,111,108,111,114,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,46,52,102,32,37,100,32,37,46,49,102,32,37,46,49,102,32,37,100,32,37,100,32,37,115,92],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+51200);allocate([48,48,49,10,0,35,32,101,110,100,32,111,102,32,70,73,71,32,102,105,108,101,10,0,35,70,73,71,32,51,46,50,10,0,35,32,71,101,110,101,114,97,116,101,100,32,98,121,32,37,115,32,118,101,114,115,105,111,110,32,37,115,32,40,37,115,41,10,0,35,32,84,105,116,108,101,58,32,37,115,10,0,35,32,80,97,103,101,115,58,32,37,100,10,0,80,111,114,116,114,97,105,116,10,0,67,101,110,116,101,114,10,0,73,110,99,104,101,115,10,0,76,101,116,116,101,114,10,0,49,48,48,46,48,48,10,0,83,105,110,103,108,101,10,0,45,50,10,0,49,50,48,48,0,32,50,10,0,109,112,0,109,112,58,109,112,0,32,93,32,32,37,100,32,116,114,117,101,32,37,115,10,0,32,93,32,32,37,100,32,102,97,108,115,101,32,37,115,10,0,32,115,101,116,108,105,110,101,119,105,100,116,104,10,0,37,115,32,0,115,101,116,104,115,98,0,37,46,53,103,32,37,46,53,103,32,37,46,53,103,32,37,115,99,111,108,111,114,10,0,37,32,0,110,101,119,112,97,116,104,32,0,32,109,111,118,101,116,111,10,0,32,108,105,110,101,116,111,10,0,115,116,114,111,107,101,10,0,32,99,117,114,118,101,116,111,10,0,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,0,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,0,32,101,108,108,105,112,115,101,95,112,97,116,104,32,102,105,108,108,10,0,32,101,108,108,105,112,115,101,95,112,97,116,104,32,115,116,114,111,107,101,10,0,32,47,37,115,32,115,101,116,95,102,111,110,116,10,0,32,109,111,118,101,116,111,32,0,32,37,115,32,97,108,105,103,110,101,100,116,101,120,116,10,0,91,32,47,82,101,99,116,32,91,32,0,32,93,10,0,32,32,47,66,111,114,100,101,114,32,91,32,48,32,48,32,48,32,93,10,32,32,47,65,99,116,105,111,110,32,60,60,32,47,83,117,98,116,121,112,101,32,47,85,82,73,32,47,85,82,73,32,37,115,32,62,62,10,32,32,47,83,117,98,116,121,112,101,32,47,76,105,110,107,10,47,65,78,78,32,112,100,102,109,97,114,107,10,0,103,115,97,118,101,10,0,37,37,32,37,115,10,0,48,32,48,32,48,32,101,100,103,101,99,111,108,111,114,10,0,101,110,100,112,97,103,101,10,115,104,111,119,112,97,103,101,10,103,114,101,115,116,111,114,101,10,0,37,37,80,97,103,101,84,114,97,105,108,101,114,10,0,37,37,37,37,69,110,100,80,97,103,101,58,32,37,100,10,0,37,37,37,37,80,97,103,101,58,32,37,100,32,37,100,10,0,37,37,37,37,80,97,103,101,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,76,97,110,100,115,99,97,112,101,0,80,111,114,116,114,97,105,116,0,37,37,37,37,80,97,103,101,79,114,105,101,110,116,97,116,105,111,110,58,32,37,115,10,0,60,60,32,47,80,97,103,101,83,105,122,101,32,91,37,100,32,37,100,93,32,62,62,32,115,101,116,112,97,103,101,100,101,118,105,99,101,10,0,37,100,32,37,100,32,37,100,32,98,101,103,105,110,112,97,103,101,10,0,103,115,97,118,101,10,37,100,32,37,100,32,37,100,32,37,100,32,98,111,120,112,114,105,109,32,99,108,105,112,32,110,101,119,112,97,116,104,10,0,37,103,32,37,103,32,115,101,116,95,115,99,97,108,101,32,37,100,32,114,111,116,97,116,101,32,37,103,32,37,103,32,116,114,97,110,115,108,97,116,101,10,0,99,97,110,118,97,115,32,115,105,122,101,32,40,37,100,44,37,100,41,32,101,120,99,101,101,100,115,32,80,68,70,32,108,105,109,105,116,32,40,37,100,41,10,9,40,115,117,103,103,101,115,116,32,115,101,116,116,105,110,103,32,97,32,98,111,117,110,100,105,110,103,32,98,111,120,32,115,105,122,101,44,32,115,101,101,32,100,111,116,40,49,41,41,10,0,91,32,47,67,114,111,112,66,111,120,32,91,37,100,32,37,100,32,37,100,32,37,100,93,32,47,80,65,71,69,83,32,112,100,102,109,97,114,107,10,0,37,100,32,37,100,32,115,101,116,108,97,121,101,114,10,0,37,37,37,37,84,105,116,108,101,58,32,37,115,10,0,37,37,80,97,103,101,115,58,32,40,97,116,101,110,100,41,10,0,37,37,80,97,103,101,115,58,32,49,10,0,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,40,97,116,101,110,100,41,10,0,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,37,37,69,110,100,67,111,109,109,101,110,116,115,10,115,97,118,101,10,0,115,101,116,117,112,76,97,116,105,110,49,10,0,91,32,123,67,97,116,97,108,111,103,125,32,60,60,32,47,85,82,73,32,60,60,32,47,66,97,115,101,32,37,115,32,62,62,32,62,62,10,47,80,85,84,32,112,100,102,109,97,114,107,10,0,37,37,66,101,103,105,110,80,114,111,108,111,103,0,47,68,111,116,68,105,99,116,32,50,48,48,32,100,105,99,116,32,100,101,102,0,68,111,116,68,105,99,116,32,98,101,103,105,110,0,47,115,101,116,117,112,76,97,116,105,110,49,32,123,0,109,97,114,107,0,47,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,50,53,54,32,97,114,114,97,121,32,100,101,102,0,32,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,48,0,73,83,79,76,97,116,105,110,49,69,110,99,111,100,105,110,103,32,48,32,50,53,53,32,103,101,116,105,110,116,101,114,118,97,108,32,112,117,116,105,110,116,101,114,118,97,108,0,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,52,53,32,47,104,121,112,104,101,110,32,112,117,116,0,37,32,83,101,116,32,117,112,32,73,83,79,32,76,97,116,105,110,32,49,32,99,104,97,114,97,99,116,101,114,32,101,110,99,111,100,105,110,103,0,47,115,116,97,114,110,101,116,73,83,79,32,123,0,32,32,32,32,32,32,32,32,100,117,112,32,100,117,112,32,102,105,110,100,102,111,110,116,32,100,117,112,32,108,101,110,103,116,104,32,100,105,99,116,32,98,101,103,105,110,0,32,32,32,32,32,32,32,32,123,32,49,32,105,110,100,101,120,32,47,70,73,68,32,110,101,32,123,32,100,101,102,32,125,123,32,112,111,112,32,112,111,112,32,125,32,105,102,101,108,115,101,0,32,32,32,32,32,32,32,32,125,32,102,111,114,97,108,108,0,32,32,32,32,32,32,32,32,47,69,110,99,111,100,105,110,103,32,69,110,99,111,100,105,110,103,86,101,99,116,111,114,32,100,101,102,0,32,32,32,32,32,32,32,32,99,117,114,114,101,110,116,100,105,99,116,32,101,110,100,32,100,101,102,105,110,101,102,111,110,116,0,125,32,100,101,102,0,47,84,105,109,101,115,45,82,111,109,97,110,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,84,105,109,101,115,45,73,116,97,108,105,99,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,84,105,109,101,115,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,72,101,108,118,101,116,105,99,97,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,72,101,108,118,101,116,105,99,97,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,72,101,108,118,101,116,105,99,97,45,66,111,108,100,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,67,111,117,114,105,101,114,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,67,111,117,114,105,101,114,45,66,111,108,100,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,47,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,32,115,116,97,114,110,101,116,73,83,79,32,100,101,102,0,99,108,101,97,114,116,111,109,97,114,107,0,125,32,98,105,110,100,32,100,101,102,0,37,37,66,101,103,105,110,82,101,115,111,117,114,99,101,58,32,112,114,111,99,115,101,116,32,103,114,97,112,104,118,105,122,32,48,32,48,0,47,99,111,111,114,100,45,102,111,110,116,45,102,97,109,105,108,121,32,47,84,105,109,101,115,45,82,111,109,97,110,32,100,101,102,0,47,100,101,102,97,117,108,116,45,102,111,110,116,45,102,97,109,105,108,121,32,47,84,105,109,101,115,45,82,111,109,97,110,32,100,101,102,0,47,99,111,111,114,100,102,111,110,116,32,99,111,111,114,100,45,102,111,110,116,45,102,97,109,105,108,121,32,102,105,110,100,102,111,110,116,32,56,32,115,99,97,108,101,102,111,110,116,32,100,101,102,0,47,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,49,46,48,32,100,101,102,0,47,115,101,116,95,115,99,97,108,101,32,123,0,32,32,32,32,32,32,32,100,117,112,32,49,32,101,120,99,104,32,100,105,118,32,47,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,101,120,99,104,32,100,101,102,0,32,32,32,32,32,32,32,115,99,97,108,101,0,37,32,115,116,121,108,101,115,0,47,115,111,108,105,100,32,123,32,91,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,47,100,97,115,104,101,100,32,123,32,91,57,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,32,100,117,112,32,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,47,100,111,116,116,101,100,32,123,32,91,49,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,32,54,32,73,110,118,83,99,97,108,101,70,97,99,116,111,114,32,109,117,108,93,32,48,32,115,101,116,100,97,115,104,32,125,32,98,105,110,100,32,100,101,102,0,47,105,110,118,105,115,32,123,47,102,105,108,108,32,123,110,101,119,112,97,116,104,125,32,100,101,102,32,47,115,116,114,111,107,101,32,123,110,101,119,112,97,116,104,125,32,100,101,102,32,47,115,104,111,119,32,123,112,111,112,32,110,101,119,112,97,116,104,125,32,100,101,102,125,32,98,105,110,100,32,100,101,102,0,47,98,111,108,100,32,123,32,50,32,115,101,116,108,105,110,101,119,105,100,116,104,32,125,32,98,105,110,100,32,100,101,102,0,47,102,105,108,108,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,47,117,110,102,105,108,108,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,47,114,111,117,110,100,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,47,100,105,97,103,111,110,97,108,115,32,123,32,125,32,98,105,110,100,32,100,101,102,0,47,116,97,112,101,114,101,100,32,123,32,125,32,98,105,110,100,32,100,101,102,0,37,32,104,111,111,107,115,32,102,111,114,32,115,101,116,116,105,110,103,32,99,111,108,111,114,32,0,47,110,111,100,101,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,47,101,100,103,101,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,47,103,114,97,112,104,99,111,108,111,114,32,123,32,115,101,116,104,115,98,99,111,108,111,114,32,125,32,98,105,110,100,32,100,101,102,0,47,110,111,112,99,111,108,111,114,32,123,112,111,112,32,112,111,112,32,112,111,112,125,32,98,105,110,100,32,100,101,102,0,47,98,101,103,105,110,112,97,103,101,32,123,9,37,32,105,32,106,32,110,112,97,103,101,115,0,9,47,110,112,97,103,101,115,32,101,120,99,104,32,100,101,102,0,9,47,106,32,101,120,99,104,32,100,101,102,0,9,47,105,32,101,120,99,104,32,100,101,102,0,9,47,115,116,114,32,49,48,32,115,116,114,105,110,103,32,100,101,102,0,9,110,112,97,103,101,115,32,49,32,103,116,32,123,0,9,9,103,115,97,118,101,0,9,9,9,99,111,111,114,100,102,111,110,116,32,115,101,116,102,111,110,116,0,9,9,9,48,32,48,32,109,111,118,101,116,111,0,9,9,9,40,92,40,41,32,115,104,111,119,32,105,32,115,116,114,32,99,118,115,32,115,104,111,119,32,40,44,41,32,115,104,111,119,32,106,32,115,116,114,32,99,118,115,32,115,104,111,119,32,40,92,41,41,32,115,104,111,119,0,9,9,103,114,101,115,116,111,114,101,0,9,125,32,105,102,0,47,115,101,116,95,102,111,110,116,32,123,0,9,102,105,110,100,102,111,110,116,32,101,120,99,104,0,9,115,99,97,108,101,102,111,110,116,32,115,101,116,102,111,110,116,0,37,32,100,114,97,119,32,116,101,120,116,32,102,105,116,116,101,100,32,116,111,32,105,116,115,32,101,120,112,101,99,116,101,100,32,119,105,100,116,104,0,47,97,108,105,103,110,101,100,116,101,120,116,32,123,9,9,9,37,32,119,105,100,116,104,32,116,101,120,116,0,9,47,116,101,120,116,32,101,120,99,104,32,100,101,102,0,9,47,119,105,100,116,104,32,101,120,99,104,32,100,101,102,0,9,103,115,97,118,101,0,9,9,119,105,100,116,104,32,48,32,103,116,32,123,0,9,9,9,91,93,32,48,32,115,101,116,100,97,115,104,0,9,9,9,116,101,120,116,32,115,116,114,105,110,103,119,105,100,116,104,32,112,111,112,32,119,105,100,116,104,32,101,120,99,104,32,115,117,98,32,116,101,120,116,32,108,101,110,103,116,104,32,100,105,118,32,48,32,116,101,120,116,32,97,115,104,111,119,0,9,9,125,32,105,102,0,9,103,114,101,115,116,111,114,101,0,47,98,111,120,112,114,105,109,32,123,9,9,9,9,37,32,120,99,111,114,110,101,114,32,121,99,111,114,110,101,114,32,120,115,105,122,101,32,121,115,105,122,101,0,9,9,52,32,50,32,114,111,108,108,0,9,9,109,111,118,101,116,111,0,9,9,50,32,99,111,112,121,0,9,9,101,120,99,104,32,48,32,114,108,105,110,101,116,111,0,9,9,48,32,101,120,99,104,32,114,108,105,110,101,116,111,0,9,9,112,111,112,32,110,101,103,32,48,32,114,108,105,110,101,116,111,0,9,9,99,108,111,115,101,112,97,116,104,0,47,101,108,108,105,112,115,101,95,112,97,116,104,32,123,0,9,47,114,121,32,101,120,99,104,32,100,101,102,0,9,47,114,120,32,101,120,99,104,32,100,101,102,0,9,47,121,32,101,120,99,104,32,100,101,102,0,9,47,120,32,101,120,99,104,32,100,101,102,0,9,109,97,116,114,105,120,32,99,117,114,114,101,110,116,109,97,116,114,105,120,0,9,110,101,119,112,97,116,104,0,9,120,32,121,32,116,114,97,110,115,108,97,116,101,0,9,114,120,32,114,121,32,115,99,97,108,101,0,9,48,32,48,32,49,32,48,32,51,54,48,32,97,114,99,0,9,115,101,116,109,97,116,114,105,120,0,47,101,110,100,112,97,103,101,32,123,32,115,104,111,119,112,97,103,101,32,125,32,98,105,110,100,32,100,101,102,0,47,115,104,111,119,112,97,103,101,32,123,32,125,32,100,101,102,0,47,108,97,121,101,114,99,111,108,111,114,115,101,113,0,9,91,9,37,32,108,97,121,101,114,32,99,111,108,111,114,32,115,101,113,117,101,110,99,101,32,45,32,100,97,114,107,101,115,116,32,116,111,32,108,105,103,104,116,101,115,116,0,9,9,91,48,32,48,32,48,93,0,9,9,91,46,50,32,46,56,32,46,56,93,0,9,9,91,46,52,32,46,56,32,46,56,93,0,9,9,91,46,54,32,46,56,32,46,56,93,0,9,9,91,46,56,32,46,56,32,46,56,93,0,9,93,0,100,101,102,0,47,108,97,121,101,114,108,101,110,32,108,97,121,101,114,99,111,108,111,114,115,101,113,32,108,101,110,103,116,104,32,100,101,102,0,47,115,101,116,108,97,121,101,114,32,123,47,109,97,120,108,97,121,101,114,32,101,120,99,104,32,100,101,102,32,47,99,117,114,108,97,121,101,114,32,101,120,99,104,32,100,101,102,0,9,108,97,121,101,114,99,111,108,111,114,115,101,113,32,99,117,114,108,97,121,101,114,32,49,32,115,117,98,32,108,97,121,101,114,108,101,110,32,109,111,100,32,103,101,116,0,9,97,108,111,97,100,32,112,111,112,32,115,101,116,104,115,98,99,111,108,111,114,0,9,47,110,111,100,101,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,9,47,101,100,103,101,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,9,47,103,114,97,112,104,99,111,108,111,114,32,123,110,111,112,99,111,108,111,114,125,32,100,101,102,0,47,111,110,108,97,121,101,114,32,123,32,99,117,114,108,97,121,101,114,32,110,101,32,123,105,110,118,105,115,125,32,105,102,32,125,32,100,101,102,0,47,111,110,108,97,121,101,114,115,32,123,0,9,47,109,121,117,112,112,101,114,32,101,120,99,104,32,100,101,102,0,9,47,109,121,108,111,119,101,114,32,101,120,99,104,32,100,101,102,0,9,99,117,114,108,97,121,101,114,32,109,121,108,111,119,101,114,32,108,116,0,9,99,117,114,108,97,121,101,114,32,109,121,117,112,112,101,114,32,103,116,0,9,111,114,0,9,123,105,110,118,105,115,125,32,105,102,0,47,99,117,114,108,97,121,101,114,32,48,32,100,101,102,0,37,37,69,110,100,82,101,115,111,117,114,99,101,0,37,37,69,110,100,80,114,111,108,111,103,0,37,37,66,101,103,105,110,83,101,116,117,112,0,49,52,32,100,101,102,97,117,108,116,45,102,111,110,116,45,102,97,109,105,108,121,32,115,101,116,95,102,111,110,116,0,37,32,47,97,114,114,111,119,108,101,110,103,116,104,32,49,48,32,100,101,102,0,37,32,47,97,114,114,111,119,119,105,100,116,104,32,53,32,100,101,102,0,37,32,109,97,107,101,32,115,117,114,101,32,112,100,102,109,97,114,107,32,105,115,32,104,97,114,109,108,101,115,115,32,102,111,114,32,80,83,45,105,110,116,101,114,112,114,101,116,101,114,115,32,111,116,104,101,114,32,116,104,97,110,32,68,105,115,116,105,108,108,101,114,0,47,112,100,102,109,97,114,107,32,119,104,101,114,101,32,123,112,111,112,125,32,123,117,115,101,114,100,105,99,116,32,47,112,100,102,109,97,114,107,32,47,99,108,101,97,114,116,111,109,97,114,107,32,108,111,97,100,32,112,117,116,125,32,105,102,101,108,115,101,0,37,32,109,97,107,101,32,39,60,60,39,32,97,110,100,32,39,62,62,39,32,115,97,102,101,32,111,110,32,80,83,32,76,101,118,101,108,32,49,32,100,101,118,105,99,101,115,0,47,108,97,110,103,117,97,103,101,108,101,118,101,108,32,119,104,101,114,101,32,123,112,111,112,32,108,97,110,103,117,97,103,101,108,101,118,101,108,125,123,49,125,32,105,102,101,108,115,101,0,50,32,108,116,32,123,0,32,32,32,32,117,115,101,114,100,105,99,116,32,40,60,60,41,32,99,118,110,32,40,91,41,32,99,118,110,32,108,111,97,100,32,112,117,116,0,32,32,32,32,117,115,101,114,100,105,99,116,32,40,62,62,41,32,99,118,110,32,40,91,41,32,99,118,110,32,108,111,97,100,32,112,117,116,0,125,32,105,102,0,37,37,69,110,100,83,101,116,117,112,0,37,37,84,114,97,105,108,101,114,10,0,37,37,37,37,80,97,103,101,115,58,32,37,100,10,0,101,110,100,10,114,101,115,116,111,114,101,10,0,37,37,69,79,70,10,0,37,33,80,83,45,65,100,111,98,101,45,51,46,48,0,32,69,80,83,70,45,51,46,48,10,0,37,37,37,37,67,114,101,97,116,111,114,58,32,37,115,32,118,101,114,115,105,111,110,32,37,115,32,40,37,115,41,10,0,112,115,50,58,112,115,0,60,33,45,45,32,0,60,112,111,108,121,108,105,110,101,0,32,112,111,105,110,116,115,61,34,0,34,47,62,10,0,32,102,105,108,108,61,34,0,117,114,108,40,35,108,95,37,100,41,0,117,114,108,40,35,114,95,37,100,41,0,34,32,102,105,108,108,45,111,112,97,99,105,116,121,61,34,37,102,0,34,32,115,116,114,111,107,101,61,34,0,34,32,115,116,114,111,107,101,45,119,105,100,116,104,61,34,0,34,32,115,116,114,111,107,101,45,100,97,115,104,97,114,114,97,121,61,34,37,115,0,53,44,50,0,49,44,53,0,34,32,115,116,114,111,107,101,45,111,112,97,99,105,116,121,61,34,37,102,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,115,118,103,46,99,0,115,118,103,95,112,114,105,110,116,95,99,111,108,111,114,0,60,112,97,116,104,0,32,105,100,61,34,0,95,112,34,32,0,32,100,61,34,0,37,99,0,60,100,101,102,115,62,10,60,114,97,100,105,97,108,71,114,97,100,105,101,110,116,32,105,100,61,34,114,95,37,100,34,32,99,120,61,34,53,48,37,37,34,32,99,121,61,34,53,48,37,37,34,32,114,61,34,55,53,37,37,34,32,102,120,61,34,37,100,37,37,34,32,102,121,61,34,37,100,37,37,34,62,10,0,60,115,116,111,112,32,111,102,102,115,101,116,61,34,48,34,32,115,116,121,108,101,61,34,115,116,111,112,45,99,111,108,111,114,58,0,59,115,116,111,112,45,111,112,97,99,105,116,121,58,0,49,46,0,59,34,47,62,10,0,60,115,116,111,112,32,111,102,102,115,101,116,61,34,49,34,32,115,116,121,108,101,61,34,115,116,111,112,45,99,111,108,111,114,58,0,59,34,47,62,10,60,47,114,97,100,105,97,108,71,114,97,100,105,101,110,116,62,10,60,47,100,101,102,115,62,10,0,60,100,101,102,115,62,10,60,108,105,110,101,97,114,71,114,97,100,105,101,110,116,32,105,100,61,34,108,95,37,100,34,32,103,114,97,100,105,101,110,116,85,110,105,116,115,61,34,117,115,101,114,83,112,97,99,101,79,110,85,115,101,34,32,0,120,49,61,34,0,34,32,121,49,61,34,0,34,32,120,50,61,34,0,34,32,121,50,61,34,0,34,32,62,10,0,60,115,116,111,112,32,111,102,102,115,101,116,61,34,37,46,48,51,102,34,32,115,116,121,108,101,61,34,115,116,111,112,45,99,111,108,111,114,58,0,59,34,47,62,10,60,47,108,105,110,101,97,114,71,114,97,100,105,101,110,116,62,10,60,47,100,101,102,115,62,10,0,60,112,111,108,121,103,111,110,0,60,101,108,108,105,112,115,101,0,32,99,120,61,34,0,34,32,99,121,61,34,0,34,32,114,120,61,34,0,34,32,114,121,61,34,0,60,116,101,120,116,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,115,116,97,114,116,34,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,101,110,100,34,0,32,116,101,120,116,45,97,110,99,104,111,114,61,34,109,105,100,100,108,101,34,0,32,120,61,34,0,34,32,121,61,34,0,32,102,111,110,116,45,102,97,109,105,108,121,61,34,37,115,0,44,37,115,0,32,102,111,110,116,45,119,101,105,103,104,116,61,34,37,115,34,0,32,102,111,110,116,45,115,116,114,101,116,99,104,61,34,37,115,34,0,32,102,111,110,116,45,115,116,121,108,101,61,34,37,115,34,0,32,102,111,110,116,45,102,97,109,105,108,121,61,34,37,115,34,0,32,102,111,110,116,45,119,101,105,103,104,116,61,34,98,111,108,100,34,0,32,102,111,110,116,45,115,116,121,108,101,61,34,105,116,97,108,105,99,34,0,32,116,101,120,116,45,100,101,99,111,114,97,116,105,111,110,61,34,0,37,115,111,118,101,114,108,105,110,101,0,37,115,108,105,110,101,45,116,104,114,111,117,103,104,0,32,98,97,115,101,108,105,110,101,45,115,104,105,102,116,61,34,115,117,112,101,114,34,0,32,98,97,115,101,108,105,110,101,45,115,104,105,102,116,61,34,115,117,98,34,0,32,102,111,110,116,45,115,105,122,101,61,34,37,46,50,102,34,0,32,102,105,108,108,61,34,37,115,34,0,32,102,105,108,108,61,34,35,37,48,50,120,37,48,50,120,37,48,50,120,34,0,115,118,103,95,116,101,120,116,115,112,97,110,0,62,0,60,116,101,120,116,80,97,116,104,32,120,108,105,110,107,58,104,114,101,102,61,34,35,37,115,95,112,34,32,115,116,97,114,116,79,102,102,115,101,116,61,34,53,48,37,37,34,62,0,60,116,115,112,97,110,32,120,61,34,48,34,32,100,121,61,34,0,34,62,0,60,47,116,115,112,97,110,62,60,47,116,101,120,116,80,97,116,104,62,0,60,47,116,101,120,116,62,10,0,60,47,103,62,10,0,60,103,0,32,105,100,61,34,97,95,0,32,120,108,105,110,107,58,104,114,101,102,61,34,0,32,120,108,105,110,107,58,116,105,116,108,101,61,34,0,32,116,97,114,103,101,116,61,34,0,60,116,105,116,108,101,62,0,60,47,116,105,116,108,101,62,10,0,60,103,32,105,100,61,34,0,95,37,115,0,34,32,99,108,97,115,115,61,34,37,115,0,99,108,97,115,115,0,32,116,114,97,110,115,102,111,114,109,61,34,115,99,97,108,101,40,0,41,32,114,111,116,97,116,101,40,37,100,41,32,116,114,97,110,115,108,97,116,101,40,0,41,34,62,10,0,60,47,115,118,103,62,10,0,60,33,45,45,0,32,80,97,103,101,115,58,32,37,100,32,45,45,62,10,0,60,115,118,103,32,119,105,100,116,104,61,34,37,100,112,116,34,32,104,101,105,103,104,116,61,34,37,100,112,116,34,10,0,32,118,105,101,119,66,111,120,61,34,37,46,50,102,32,37,46,50,102,32,37,46,50,102,32,37,46,50,102,34,0,32,120,109,108,110,115,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,50,48,48,48,47,115,118,103,34,0,32,120,109,108,110,115,58,120,108,105,110,107,61,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,49,57,57,57,47,120,108,105,110,107,34,0,60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,110,99,111,100,105,110,103,61,34,85,84,70,45,56,34,32,115,116,97,110,100,97,108,111,110,101,61,34,110,111,34,63,62,10,0,115,116,121,108,101,115,104,101,101,116,0,60,63,120,109,108,45,115,116,121,108,101,115,104,101,101,116,32,104,114,101,102,61,34,0,34,32,116,121,112,101,61,34,116,101,120,116,47,99,115,115,34,63,62,10,0,60,33,68,79,67,84,89,80,69,32,115,118,103,32,80,85,66,76,73,67,32,34,45,47,47,87,51,67,47,47,68,84,68,32,83,86,71,32,49,46,49,47,47,69,78,34,10,0,32,34,104,116,116,112,58,47,47,119,119,119,46,119,51,46,111,114,103,47,71,114,97,112,104,105,99,115,47,83,86,71,47,49,46,49,47,68,84,68,47,115,118,103,49,49,46,100,116,100,34,62,10,0,60,33,45,45,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,100,97,114,107,98,108,117,101,0,100,97,114,107,99,121,97,110,0,100,97,114,107,103,114,97,121,0,100,97,114,107,103,114,101,121,0,100,97,114,107,109,97,103,101,110,116,97,0,100,97,114,107,114,101,100,0,108,105,103,104,116,103,114,101,101,110,0,35,32,0,32,99,114,101,97,116,101,32,108,105,110,101,32,0,32,45,102,105,108,108,32,0,32,45,100,97,115,104,32,53,0,32,45,100,97,115,104,32,50,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,116,107,46,99,0,116,107,103,101,110,95,112,114,105,110,116,95,116,97,103,115,0,103,114,97,112,104,32,108,97,98,101,108,0,32,45,116,97,103,115,32,123,37,100,37,115,37,112,125,0,116,107,103,101,110,95,112,114,105,110,116,95,99,111,108,111,114,0,36,99,0,32,45,119,105,100,116,104,32,0,32,45,115,109,111,111,116,104,32,98,101,122,105,101,114,32,0,32,99,114,101,97,116,101,32,112,111,108,121,103,111,110,32,0,32,45,111,117,116,108,105,110,101,32,0,32,99,114,101,97,116,101,32,111,118,97,108,32,0,32,99,114,101,97,116,101,32,116,101,120,116,32,0,32,45,116,101,120,116,32,123,0,125,0,32,45,102,111,110,116,32,123,0,32,37,100,125,0,32,45,97,110,99,104,111,114,32,119,0,32,45,97,110,99,104,111,114,32,101,0,35,0,32,84,105,116,108,101,58,32,0,32,80,97,103,101,115,58,32,37,100,10,0,35,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,41,10,0,116,107,0,116,107,58,116,107,0,32,32,32,32,32,32,60,33,45,45,32,0,32,45,45,62,10,0,69,114,114,111,114,32,100,117,114,105,110,103,32,99,111,110,118,101,114,115,105,111,110,32,116,111,32,34,85,84,70,45,56,34,46,32,32,81,117,105,116,105,110,103,46,10,0,32,60,118,58,115,104,97,112,101,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,0,32,119,105,100,116,104,58,32,37,100,59,32,104,101,105,103,104,116,58,32,37,100,34,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,62,0,60,118,58,112,97,116,104,32,118,61,34,0,32,109,32,0,37,46,48,102,44,37,46,48,102,32,0,32,108,32,0,32,101,32,0,34,47,62,0,60,47,118,58,115,104,97,112,101,62,10,0,60,118,58,115,116,114,111,107,101,32,99,111,108,111,114,61,34,0,34,32,119,101,105,103,104,116,61,34,37,46,48,102,112,116,0,34,32,100,97,115,104,115,116,121,108,101,61,34,100,97,115,104,0,34,32,100,97,115,104,115,116,121,108,101,61,34,100,111,116,0,34,32,47,62,0,35,37,48,50,120,37,48,50,120,37,48,50,120,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,118,109,108,46,99,0,118,109,108,95,112,114,105,110,116,95,99,111,108,111,114,0,32,119,105,100,116,104,58,32,37,100,59,32,104,101,105,103,104,116,58,32,37,100,34,0,32,62,0,60,118,58,112,97,116,104,32,32,118,61,34,0,47,62,60,47,118,58,115,104,97,112,101,62,10,0,109,32,0,37,115,37,46,48,102,44,37,46,48,102,32,0,99,32,0,32,102,105,108,108,101,100,61,34,116,114,117,101,34,32,102,105,108,108,99,111,108,111,114,61,34,0,34,32,0,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,32,0,37,46,48,102,32,37,46,48,102,32,0,108,32,0,120,32,101,32,34,47,62,0,32,32,60,118,58,111,118,97,108,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,0,32,108,101,102,116,58,32,37,46,50,102,59,32,116,111,112,58,32,37,46,50,102,59,0,32,119,105,100,116,104,58,32,37,46,50,102,59,32,104,101,105,103,104,116,58,32,37,46,50,102,34,0,60,47,118,58,111,118,97,108,62,10,0,60,118,58,114,101,99,116,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,0,32,115,116,114,111,107,101,100,61,34,102,97,108,115,101,34,32,102,105,108,108,101,100,61,34,102,97,108,115,101,34,62,10,0,60,118,58,116,101,120,116,98,111,120,32,105,110,115,101,116,61,34,48,44,48,44,48,44,48,34,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,118,45,116,101,120,116,45,119,114,97,112,112,105,110,103,58,39,102,97,108,115,101,39,59,112,97,100,100,105,110,103,58,39,48,39,59,0,102,111,110,116,45,102,97,109,105,108,121,58,32,39,37,115,39,59,0,102,111,110,116,45,119,101,105,103,104,116,58,32,37,115,59,0,102,111,110,116,45,115,116,114,101,116,99,104,58,32,37,115,59,0,102,111,110,116,45,115,116,121,108,101,58,32,37,115,59,0,32,102,111,110,116,45,115,105,122,101,58,32,37,46,50,102,112,116,59,0,99,111,108,111,114,58,37,115,59,0,99,111,108,111,114,58,35,37,48,50,120,37,48,50,120,37,48,50,120,59,0,118,109,108,95,116,101,120,116,115,112,97,110,0,34,62,60,99,101,110,116,101,114,62,0,60,47,99,101,110,116,101,114,62,60,47,118,58,116,101,120,116,98,111,120,62,10,0,60,47,118,58,114,101,99,116,62,10,0,60,47,97,62,10,0,60,97,0,32,104,114,101,102,61,34,37,115,34,0,32,116,105,116,108,101,61,34,37,115,34,0,32,116,97,114,103,101,116,61,34,37,115,34,0,62,10,0,60,47,118,58,103,114,111,117,112,62,10,0,60,47,68,73,86,62,10,0,60,68,73,86,32,105,100,61,39,95,86,77,76,50,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,118,105,115,105,98,105,108,105,116,121,58,104,105,100,100,101,110,34,62,10,0,60,33,45,45,32,105,110,115,101,114,116,32,97,110,121,32,111,116,104,101,114,32,104,116,109,108,32,99,111,110,116,101,110,116,32,104,101,114,101,32,45,45,62,10,0,60,68,73,86,32,105,100,61,39,95,110,111,116,86,77,76,49,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,34,62,10,0,60,33,45,45,32,116,104,105,115,32,115,104,111,117,108,100,32,111,110,108,121,32,100,105,115,112,108,97,121,32,111,110,32,78,79,78,45,73,69,32,98,114,111,119,115,101,114,115,32,45,45,62,10,0,60,72,50,62,83,111,114,114,121,44,32,116,104,105,115,32,100,105,97,103,114,97,109,32,119,105,108,108,32,111,110,108,121,32,100,105,115,112,108,97,121,32,99,111,114,114,101,99,116,108,121,32,111,110,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,32,53,32,40,97,110,100,32,117,112,41,32,98,114,111,119,115,101,114,115,46,60,47,72,50,62,10,0,60,68,73,86,32,105,100,61,39,95,110,111,116,86,77,76,50,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,34,62,10,0,60,33,45,45,32,105,110,115,101,114,116,32,97,110,121,32,111,116,104,101,114,32,78,79,78,45,73,69,32,104,116,109,108,32,99,111,110,116,101,110,116,32,104,101,114,101,32,45,45,62,10,0,60,47,66,79,68,89,62,10,60,47,72,84,77,76,62,10,0,60,72,69,65,68,62,0,60,77,69,84,65,32,104,116,116,112,45,101,113,117,105,118,61,34,67,111,110,116,101,110,116,45,84,121,112,101,34,32,99,111,110,116,101,110,116,61,34,116,101,120,116,47,104,116,109,108,59,32,99,104,97,114,115,101,116,61,85,84,70,45,56,34,62,10,0,60,84,73,84,76,69,62,0,60,47,84,73,84,76,69,62,0,60,33,45,45,32,80,97,103,101,115,58,32,37,100,32,45,45,62,10,0,32,32,32,60,83,67,82,73,80,84,32,76,65,78,71,85,65,71,69,61,39,74,97,118,97,115,99,114,105,112,116,39,62,10,0,32,32,32,102,117,110,99,116,105,111,110,32,98,114,111,119,115,101,114,99,104,101,99,107,40,41,10,0,32,32,32,123,10,0,32,32,32,32,32,32,118,97,114,32,117,97,32,61,32,119,105,110,100,111,119,46,110,97,118,105,103,97,116,111,114,46,117,115,101,114,65,103,101,110,116,10,0,32,32,32,32,32,32,118,97,114,32,109,115,105,101,32,61,32,117,97,46,105,110,100,101,120,79,102,32,40,32,39,77,83,73,69,32,39,32,41,10,0,32,32,32,32,32,32,118,97,114,32,105,101,118,101,114,115,59,10,0,32,32,32,32,32,32,118,97,114,32,105,116,101,109,59,10,0,32,32,32,32,32,32,118,97,114,32,86,77,76,121,101,115,61,110,101,119,32,65,114,114,97,121,40,39,95,86,77,76,49,95,39,44,39,95,86,77,76,50,95,39,41,59,10,0,32,32,32,32,32,32,118,97,114,32,86,77,76,110,111,61,110,101,119,32,65,114,114,97,121,40,39,95,110,111,116,86,77,76,49,95,39,44,39,95,110,111,116,86,77,76,50,95,39,41,59,10,0,32,32,32,32,32,32,105,102,32,40,32,109,115,105,101,32,62,32,48,32,41,123,32,32,32,32,32,32,47,47,32,73,102,32,73,110,116,101,114,110,101,116,32,69,120,112,108,111,114,101,114,44,32,114,101,116,117,114,110,32,118,101,114,115,105,111,110,32,110,117,109,98,101,114,10,0,32,32,32,32,32,32,32,32,32,105,101,118,101,114,115,61,32,112,97,114,115,101,73,110,116,32,40,117,97,46,115,117,98,115,116,114,105,110,103,32,40,109,115,105,101,43,53,44,32,117,97,46,105,110,100,101,120,79,102,32,40,39,46,39,44,32,109,115,105,101,32,41,41,41,10,0,32,32,32,32,32,32,125,10,0,32,32,32,32,32,32,105,102,32,40,105,101,118,101,114,115,62,61,53,41,123,10,0,32,32,32,32,32,32,32,102,111,114,32,40,120,32,105,110,32,86,77,76,121,101,115,41,123,10,0,32,32,32,32,32,32,32,32,32,105,116,101,109,32,61,32,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,86,77,76,121,101,115,91,120,93,41,59,10,0,32,32,32,32,32,32,32,32,32,105,102,32,40,105,116,101,109,41,32,123,10,0,32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,46,115,116,121,108,101,46,118,105,115,105,98,105,108,105,116,121,61,39,118,105,115,105,98,108,101,39,59,10,0,32,32,32,32,32,32,32,32,32,125,10,0,32,32,32,32,32,32,32,125,10,0,32,32,32,32,32,32,32,102,111,114,32,40,120,32,105,110,32,86,77,76,110,111,41,123,10,0,32,32,32,32,32,32,32,32,32,105,116,101,109,32,61,32,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,86,77,76,110,111,91,120,93,41,59,10,0,32,32,32,32,32,32,32,32,32,32,32,105,116,101,109,46,115,116,121,108,101,46,118,105,115,105,98,105,108,105,116,121,61,39,104,105,100,100,101,110,39,59,10,0,32,32,32,32,32,125,101,108,115,101,123,10,0,32,32,32,32,32,125,10,0,32,32,32,125,10,0,32,32,32,60,47,83,67,82,73,80,84,62,10,0,60,47,72,69,65,68,62,0,60,66,79,68,89,32,111,110,108,111,97,100,61,39,98,114,111,119,115,101,114,99,104,101,99,107,40,41,59,39,62,10,0,60,68,73,86,32,105,100,61,39,95,86,77,76,49,95,39,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,32,100,105,115,112,108,97,121,58,105,110,108,105,110,101,59,32,118,105,115,105,98,105,108,105,116,121,58,104,105,100,100,101,110,0,32,119,105,100,116,104,58,32,37,100,112,116,59,32,104,101,105,103,104,116,58,32,37,100,112,116,34,62,10,0,60,83,84,89,76,69,62,10,0,118,92,58,42,32,123,32,98,101,104,97,118,105,111,114,58,32,117,114,108,40,35,100,101,102,97,117,108,116,35,86,77,76,41,59,100,105,115,112,108,97,121,58,105,110,108,105,110,101,45,98,108,111,99,107,125,10,0,60,47,83,84,89,76,69,62,10,0,60,120,109,108,58,110,97,109,101,115,112,97,99,101,32,110,115,61,34,117,114,110,58,115,99,104,101,109,97,115,45,109,105,99,114,111,115,111,102,116,45,99,111,109,58,118,109,108,34,32,112,114,101,102,105,120,61,34,118,34,32,47,62,10,0,32,60,118,58,103,114,111,117,112,32,115,116,121,108,101,61,34,112,111,115,105,116,105,111,110,58,114,101,108,97,116,105,118,101,59,32,0,32,119,105,100,116,104,58,32,37,100,112,116,59,32,104,101,105,103,104,116,58,32,37,100,112,116,34,0,32,99,111,111,114,100,111,114,105,103,105,110,61,34,48,44,48,34,32,99,111,111,114,100,115,105,122,101,61,34,37,100,44,37,100,34,32,62,0,60,72,84,77,76,62,10,0,10,60,33,45,45,32,71,101,110,101,114,97,116,101,100,32,98,121,32,0,32,118,101,114,115,105,111,110,32,0,32,40,0,41,10,45,45,62,10,0,97,113,117,97,0,102,117,99,104,115,105,97,0,108,105,109,101,0,111,108,105,118,101,0,116,101,97,108,0,118,109,108,0,118,109,108,58,118,109,108,0,47,47,42,42,42,32,99,111,109,109,101,110,116,58,32,37,115,10,0,47,47,42,42,42,32,112,111,108,121,108,105,110,101,10,0,115,99,97,108,101,32,32,32,32,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,10,0,114,111,116,97,116,101,32,32,32,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,10,0,116,114,97,110,115,108,97,116,101,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,10,0,115,112,104,101,114,101,95,115,119,101,101,112,32,123,10,32,32,32,32,37,115,10,32,32,32,32,37,100,44,10,0,108,105,110,101,97,114,95,115,112,108,105,110,101,0,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,44,32,37,46,51,102,10,0,37,115,32,32,32,32,37,115,0,32,32,32,32,116,111,108,101,114,97,110,99,101,32,48,46,48,49,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,37,115,37,115,0,37,115,32,116,114,97,110,115,109,105,116,32,37,46,51,102,0,82,101,100,0,71,114,101,101,110,0,66,108,117,101,0,114,103,98,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,32,116,114,97,110,115,109,105,116,32,37,46,51,102,0,111,111,112,115,44,32,105,110,116,101,114,110,97,108,32,101,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,99,111,108,111,114,32,116,121,112,101,61,37,100,32,37,115,10,0,103,118,114,101,110,100,101,114,95,99,111,114,101,95,112,111,118,46,99,0,112,111,118,95,99,111,108,111,114,95,97,115,95,115,116,114,0,112,105,103,109,101,110,116,32,123,32,99,111,108,111,114,32,37,115,32,125,10,0,112,111,118,32,114,101,110,100,101,114,101,114,58,101,108,32,45,32,37,115,10,0,47,47,42,42,42,32,98,101,122,105,101,114,10,0,98,95,115,112,108,105,110,101,0,32,32,32,32,32,32,32,32,116,111,108,101,114,97,110,99,101,32,48,46,48,49,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,47,47,42,42,42,32,112,111,108,121,103,111,110,10,0,32,32,32,32,116,111,108,101,114,97,110,99,101,32,48,46,49,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+61440);allocate([125,10,0,112,111,108,121,103,111,110,32,123,32,37,100,44,10,0,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,0,37,115,10,32,32,32,32,37,115,0,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,47,47,42,42,42,32,101,108,108,105,112,115,101,10,0,116,111,114,117,115,32,123,32,37,46,51,102,44,32,37,46,51,102,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,115,112,104,101,114,101,32,123,60,37,57,46,51,102,44,32,37,57,46,51,102,44,32,37,57,46,51,102,62,44,32,49,46,48,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,47,47,42,42,42,32,116,101,120,116,115,112,97,110,58,32,37,115,44,32,102,111,110,116,115,105,122,101,32,61,32,37,46,51,102,44,32,102,111,110,116,110,97,109,101,32,61,32,37,115,10,0,115,99,97,108,101,32,37,46,51,102,10,0,116,101,120,116,32,123,10,32,32,32,32,116,116,102,32,34,37,115,34,44,10,32,32,32,32,34,37,115,34,44,32,37,46,51,102,44,32,37,46,51,102,10,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,32,32,32,32,37,115,125,10,0,32,32,32,32,110,111,95,115,104,97,100,111,119,10,0,47,47,42,42,42,32,101,110,100,95,101,100,103,101,10,0,47,47,42,42,42,32,98,101,103,105,110,95,101,100,103,101,10,0,47,47,42,42,42,32,101,110,100,95,110,111,100,101,10,0,47,47,42,42,42,32,98,101,103,105,110,95,110,111,100,101,58,32,37,115,10,0,47,47,42,42,42,32,101,110,100,95,99,108,117,115,116,101,114,10,0,47,47,42,42,42,32,98,101,103,105,110,95,99,108,117,115,116,101,114,10,0,47,47,42,42,42,32,101,110,100,95,112,97,103,101,10,0,47,47,42,42,42,32,98,101,103,105,110,95,112,97,103,101,10,0,47,47,42,42,42,32,101,110,100,95,108,97,121,101,114,10,0,47,47,42,42,42,32,98,101,103,105,110,95,108,97,121,101,114,58,32,37,115,44,32,37,100,47,37,100,10,0,47,47,42,42,42,32,101,110,100,95,103,114,97,112,104,10,0,47,47,42,42,42,32,98,101,103,105,110,95,103,114,97,112,104,32,37,115,10,0,99,97,109,101,114,97,32,123,32,108,111,99,97,116,105,111,110,32,60,37,46,51,102,32,44,32,37,46,51,102,32,44,32,37,46,51,102,62,10,32,32,32,32,32,32,32,32,32,108,111,111,107,95,97,116,32,32,60,37,46,51,102,32,44,32,37,46,51,102,32,44,32,37,46,51,102,62,10,32,32,32,32,32,32,32,32,32,114,105,103,104,116,32,120,32,42,32,105,109,97,103,101,95,119,105,100,116,104,32,47,32,105,109,97,103,101,95,104,101,105,103,104,116,10,32,32,32,32,32,32,32,32,32,97,110,103,108,101,32,37,46,51,102,10,125,10,0,47,47,115,107,121,10,112,108,97,110,101,32,123,32,60,48,44,32,49,44,32,48,62,44,32,49,32,104,111,108,108,111,119,10,32,32,32,32,116,101,120,116,117,114,101,32,123,10,32,32,32,32,32,32,32,32,112,105,103,109,101,110,116,32,123,32,98,111,122,111,32,116,117,114,98,117,108,101,110,99,101,32,48,46,57,53,10,32,32,32,32,32,32,32,32,32,32,32,32,99,111,108,111,114,95,109,97,112,32,123,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,91,48,46,48,48,32,114,103,98,32,60,48,46,48,53,44,32,48,46,50,48,44,32,48,46,53,48,62,93,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,91,48,46,53,48,32,114,103,98,32,60,48,46,48,53,44,32,48,46,50,48,44,32,48,46,53,48,62,93,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,91,48,46,55,53,32,114,103,98,32,60,49,46,48,48,44,32,49,46,48,48,44,32,49,46,48,48,62,93,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,91,48,46,55,53,32,114,103,98,32,60,48,46,50,53,44,32,48,46,50,53,44,32,48,46,50,53,62,93,10,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,91,49,46,48,48,32,114,103,98,32,60,48,46,53,48,44,32,48,46,53,48,44,32,48,46,53,48,62,93,10,32,32,32,32,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,32,32,32,32,115,99,97,108,101,32,60,49,46,48,48,44,32,49,46,48,48,44,32,49,46,53,48,62,32,42,32,50,46,53,48,10,32,32,32,32,32,32,32,32,32,32,32,32,116,114,97,110,115,108,97,116,101,32,60,48,46,48,48,44,32,48,46,48,48,44,32,48,46,48,48,62,10,32,32,32,32,32,32,32,32,125,10,32,32,32,32,32,32,32,32,102,105,110,105,115,104,32,123,32,97,109,98,105,101,110,116,32,49,32,100,105,102,102,117,115,101,32,48,32,125,10,32,32,32,32,125,10,32,32,32,32,115,99,97,108,101,32,49,48,48,48,48,10,125,10,47,47,109,105,115,116,10,102,111,103,32,123,32,102,111,103,95,116,121,112,101,32,50,10,32,32,32,32,100,105,115,116,97,110,99,101,32,53,48,10,32,32,32,32,99,111,108,111,114,32,114,103,98,32,60,49,46,48,48,44,32,49,46,48,48,44,32,49,46,48,48,62,32,42,32,48,46,55,53,10,32,32,32,32,102,111,103,95,111,102,102,115,101,116,32,48,46,49,48,10,32,32,32,32,102,111,103,95,97,108,116,32,49,46,53,48,10,32,32,32,32,116,117,114,98,117,108,101,110,99,101,32,49,46,55,53,10,125,10,47,47,103,110,100,10,112,108,97,110,101,32,123,32,60,48,46,48,48,44,32,49,46,48,48,44,32,48,46,48,48,62,44,32,48,10,32,32,32,32,116,101,120,116,117,114,101,32,123,10,32,32,32,32,32,32,32,32,112,105,103,109,101,110,116,123,32,99,111,108,111,114,32,114,103,98,32,60,48,46,50,53,44,32,48,46,52,53,44,32,48,46,48,48,62,32,125,10,32,32,32,32,32,32,32,32,110,111,114,109,97,108,32,123,32,98,117,109,112,115,32,48,46,55,53,32,115,99,97,108,101,32,48,46,48,49,32,125,10,32,32,32,32,32,32,32,32,102,105,110,105,115,104,32,123,32,112,104,111,110,103,32,48,46,49,48,32,125,10,32,32,32,32,125,10,125,10,0,108,105,103,104,116,95,115,111,117,114,99,101,32,123,32,60,49,53,48,48,44,51,48,48,48,44,45,50,53,48,48,62,32,99,111,108,111,114,32,87,104,105,116,101,32,125,10,0,35,118,101,114,115,105,111,110,32,51,46,54,59,10,0,103,108,111,98,97,108,95,115,101,116,116,105,110,103,115,32,123,32,97,115,115,117,109,101,100,95,103,97,109,109,97,32,49,46,48,32,125,10,0,35,100,101,102,97,117,108,116,32,123,32,102,105,110,105,115,104,32,123,32,97,109,98,105,101,110,116,32,48,46,49,32,100,105,102,102,117,115,101,32,48,46,57,32,125,32,125,10,0,35,105,110,99,108,117,100,101,32,34,99,111,108,111,114,115,46,105,110,99,34,10,35,105,110,99,108,117,100,101,32,34,116,101,120,116,117,114,101,115,46,105,110,99,34,10,35,105,110,99,108,117,100,101,32,34,115,104,97,112,101,115,46,105,110,99,34,10,0,35,100,101,99,108,97,114,101,32,37,115,32,61,32,37,115,59,10,0,66,108,97,99,107,0,87,104,105,116,101,0,98,97,107,101,114,115,99,104,111,99,0,98,114,97,115,115,0,98,114,105,103,104,116,103,111,108,100,0,98,114,111,110,122,101,0,98,114,111,110,122,101,50,0,99,108,101,97,114,0,99,111,111,108,99,111,112,112,101,114,0,99,111,112,112,101,114,0,100,97,114,107,98,114,111,119,110,0,100,97,114,107,112,117,114,112,108,101,0,100,97,114,107,116,97,110,0,100,97,114,107,119,111,111,100,0,100,107,103,114,101,101,110,99,111,112,112,101,114,0,100,117,115,116,121,114,111,115,101,0,102,101,108,100,115,112,97,114,0,102,108,101,115,104,0,103,114,97,121,48,53,0,103,114,101,101,110,99,111,112,112,101,114,0,104,117,110,116,101,114,115,103,114,101,101,110,0,108,105,103,104,116,95,112,117,114,112,108,101,0,108,105,103,104,116,119,111,111,100,0,109,97,110,100,97,114,105,110,111,114,97,110,103,101,0,109,101,100,105,117,109,102,111,114,101,115,116,103,114,101,101,110,0,109,101,100,105,117,109,103,111,108,100,101,110,114,111,100,0,109,101,100,105,117,109,119,111,111,100,0,109,101,100,95,112,117,114,112,108,101,0,109,105,99,97,0,110,101,111,110,98,108,117,101,0,110,101,111,110,112,105,110,107,0,110,101,119,109,105,100,110,105,103,104,116,98,108,117,101,0,110,101,119,116,97,110,0,111,108,100,103,111,108,100,0,113,117,97,114,116,122,0,114,105,99,104,98,108,117,101,0,115,99,97,114,108,101,116,0,115,101,109,105,83,119,101,101,116,67,104,111,99,0,115,105,108,118,101,114,0,115,112,105,99,121,112,105,110,107,0,115,117,109,109,101,114,115,107,121,0,118,101,114,121,100,97,114,107,98,114,111,119,110,0,118,101,114,121,95,108,105,103,104,116,95,112,117,114,112,108,101,0,112,111,118,0,112,111,118,58,112,111,118,0,37,115,32,37,115,10,0,46,92,34,32,0,32,37,100,32,37,100,0,32,37,115,10,0,32,37,100,0,102,105,108,108,32,0,101,108,108,105,112,115,101,32,97,116,116,114,115,37,100,32,37,115,119,105,100,32,37,46,53,102,32,104,116,32,37,46,53,102,32,97,116,32,40,37,46,53,102,44,37,46,53,102,41,59,10,0,46,102,116,32,37,115,10,0,46,112,115,32,37,100,42,92,110,40,83,70,117,47,37,46,48,102,117,10,0,34,37,115,34,32,97,116,32,40,37,46,53,102,44,37,46,53,102,41,59,10,0,37,48,51,111,0,37,115,37,115,32,105,115,32,110,111,116,32,97,32,116,114,111,102,102,32,102,111,110,116,10,0,100,111,116,32,112,105,99,32,112,108,117,103,105,110,58,32,0,82,0,93,10,46,80,69,10,0,46,80,83,32,37,46,53,102,32,37,46,53,102,10,0,37,115,32,116,111,32,99,104,97,110,103,101,32,100,114,97,119,105,110,103,32,115,105,122,101,44,32,109,117,108,116,105,112,108,121,32,116,104,101,32,119,105,100,116,104,32,97,110,100,32,104,101,105,103,104,116,32,111,110,32,116,104,101,32,46,80,83,32,108,105,110,101,32,97,98,111,118,101,32,97,110,100,32,116,104,101,32,110,117,109,98,101,114,32,111,110,32,116,104,101,32,116,119,111,32,108,105,110,101,115,32,98,101,108,111,119,32,40,114,111,117,110,100,101,100,32,116,111,32,116,104,101,32,110,101,97,114,101,115,116,32,105,110,116,101,103,101,114,41,32,98,121,32,97,32,115,99,97,108,101,32,102,97,99,116,111,114,10,0,46,110,114,32,83,70,32,37,46,48,102,10,115,99,97,108,101,116,104,105,99,107,110,101,115,115,32,61,32,37,46,48,102,10,0,37,115,32,100,111,110,39,116,32,99,104,97,110,103,101,32,97,110,121,116,104,105,110,103,32,98,101,108,111,119,32,116,104,105,115,32,108,105,110,101,32,105,110,32,116,104,105,115,32,100,114,97,119,105,110,103,10,0,37,115,32,110,111,110,45,102,97,116,97,108,32,114,117,110,45,116,105,109,101,32,112,105,99,32,118,101,114,115,105,111,110,32,100,101,116,101,114,109,105,110,97,116,105,111,110,44,32,118,101,114,115,105,111,110,32,50,10,0,98,111,120,114,97,100,61,50,46,48,32,37,115,32,119,105,108,108,32,98,101,32,114,101,115,101,116,32,116,111,32,48,46,48,32,98,121,32,103,112,105,99,32,111,110,108,121,10,0,115,99,97,108,101,61,49,46,48,32,37,115,32,114,101,113,117,105,114,101,100,32,102,111,114,32,99,111,109,112,97,114,105,115,111,110,115,10,0,37,115,32,98,111,120,114,97,100,32,105,115,32,110,111,119,32,48,46,48,32,105,110,32,103,112,105,99,44,32,101,108,115,101,32,105,116,32,114,101,109,97,105,110,115,32,50,46,48,10,0,37,115,32,100,97,115,104,119,105,100,32,105,115,32,48,46,49,32,105,110,32,49,48,116,104,32,69,100,105,116,105,111,110,44,32,48,46,48,53,32,105,110,32,68,87,66,32,50,32,97,110,100,32,105,110,32,103,112,105,99,10,0,37,115,32,102,105,108,108,118,97,108,32,105,115,32,48,46,51,32,105,110,32,49,48,116,104,32,69,100,105,116,105,111,110,32,40,102,105,108,108,32,48,32,109,101,97,110,115,32,98,108,97,99,107,41,44,32,48,46,53,32,105,110,32,103,112,105,99,32,40,102,105,108,108,32,48,32,109,101,97,110,115,32,119,104,105,116,101,41,44,32,117,110,100,101,102,105,110,101,100,32,105,110,32,68,87,66,32,50,10,0,37,115,32,102,105,108,108,32,104,97,115,32,110,111,32,109,101,97,110,105,110,103,32,105,110,32,68,87,66,32,50,44,32,103,112,105,99,32,99,97,110,32,117,115,101,32,102,105,108,108,32,111,114,32,102,105,108,108,101,100,44,32,49,48,116,104,32,69,100,105,116,105,111,110,32,117,115,101,115,32,102,105,108,108,32,111,110,108,121,10,0,37,115,32,68,87,66,32,50,32,100,111,101,115,110,39,116,32,117,115,101,32,102,105,108,108,32,97,110,100,32,100,111,101,115,110,39,116,32,100,101,102,105,110,101,32,102,105,108,108,118,97,108,10,0,37,115,32,114,101,115,101,116,32,119,111,114,107,115,32,105,110,32,103,112,105,99,32,97,110,100,32,49,48,116,104,32,101,100,105,116,105,111,110,44,32,98,117,116,32,105,115,110,39,116,32,100,101,102,105,110,101,100,32,105,110,32,68,87,66,32,50,10,0,37,115,32,68,87,66,32,50,32,99,111,109,112,97,116,105,98,105,108,105,116,121,32,100,101,102,105,110,105,116,105,111,110,115,10,0,105,102,32,98,111,120,114,97,100,32,62,32,49,46,48,32,38,38,32,100,97,115,104,119,105,100,32,60,32,48,46,48,55,53,32,116,104,101,110,32,88,10,9,102,105,108,108,118,97,108,32,61,32,49,59,10,9,100,101,102,105,110,101,32,102,105,108,108,32,89,32,89,59,10,9,100,101,102,105,110,101,32,115,111,108,105,100,32,89,32,89,59,10,9,100,101,102,105,110,101,32,114,101,115,101,116,32,89,32,115,99,97,108,101,61,49,46,48,32,89,59,10,88,10,0,114,101,115,101,116,32,37,115,32,115,101,116,32,116,111,32,107,110,111,119,110,32,115,116,97,116,101,10,0,37,115,32,71,78,85,32,112,105,99,32,118,115,46,32,49,48,116,104,32,69,100,105,116,105,111,110,32,100,92,40,101,39,116,101,110,116,101,10,0,105,102,32,102,105,108,108,118,97,108,32,62,32,48,46,52,32,116,104,101,110,32,88,10,9,100,101,102,105,110,101,32,115,101,116,102,105,108,108,118,97,108,32,89,32,102,105,108,108,118,97,108,32,61,32,49,32,45,32,89,59,10,9,100,101,102,105,110,101,32,98,111,108,100,32,89,32,116,104,105,99,107,110,101,115,115,32,50,32,89,59,10,0,9,37,115,32,105,102,32,121,111,117,32,117,115,101,32,103,112,105,99,32,97,110,100,32,105,116,32,98,97,114,102,115,32,111,110,32,101,110,99,111,117,110,116,101,114,105,110,103,32,34,115,111,108,105,100,34,44,10,0,9,37,115,9,105,110,115,116,97,108,108,32,97,32,109,111,114,101,32,114,101,99,101,110,116,32,118,101,114,115,105,111,110,32,111,102,32,103,112,105,99,32,111,114,32,115,119,105,116,99,104,32,116,111,32,68,87,66,32,111,114,32,49,48,116,104,32,69,100,105,116,105,111,110,32,112,105,99,59,10,0,9,37,115,9,115,111,114,114,121,44,32,116,104,101,32,103,114,111,102,102,32,102,111,108,107,115,32,99,104,97,110,103,101,100,32,103,112,105,99,59,32,115,101,110,100,32,97,110,121,32,99,111,109,112,108,97,105,110,116,32,116,111,32,116,104,101,109,59,10,0,88,32,101,108,115,101,32,90,10,9,100,101,102,105,110,101,32,115,101,116,102,105,108,108,118,97,108,32,89,32,102,105,108,108,118,97,108,32,61,32,89,59,10,9,100,101,102,105,110,101,32,98,111,108,100,32,89,32,89,59,10,9,100,101,102,105,110,101,32,102,105,108,108,101,100,32,89,32,102,105,108,108,32,89,59,10,90,10,0,37,115,32,97,114,114,111,119,104,101,97,100,32,104,97,115,32,110,111,32,109,101,97,110,105,110,103,32,105,110,32,68,87,66,32,50,44,32,97,114,114,111,119,104,101,97,100,32,61,32,55,32,109,97,107,101,115,32,102,105,108,108,101,100,32,97,114,114,111,119,104,101,97,100,115,32,105,110,32,103,112,105,99,32,97,110,100,32,105,110,32,49,48,116,104,32,69,100,105,116,105,111,110,10,0,37,115,32,97,114,114,111,119,104,101,97,100,32,105,115,32,117,110,100,101,102,105,110,101,100,32,105,110,32,68,87,66,32,50,44,32,105,110,105,116,105,97,108,108,121,32,49,32,105,110,32,103,112,105,99,44,32,50,32,105,110,32,49,48,116,104,32,69,100,105,116,105,111,110,10,0,97,114,114,111,119,104,101,97,100,32,61,32,55,32,37,115,32,110,111,116,32,117,115,101,100,32,98,121,32,103,114,97,112,104,118,105,122,10,0,37,115,32,71,78,85,32,112,105,99,32,115,117,112,112,111,114,116,115,32,97,32,98,111,120,114,97,100,32,118,97,114,105,97,98,108,101,32,116,111,32,100,114,97,119,32,98,111,120,101,115,32,119,105,116,104,32,114,111,117,110,100,101,100,32,99,111,114,110,101,114,115,59,32,68,87,66,32,97,110,100,32,49,48,116,104,32,69,100,46,32,100,111,32,110,111,116,10,0,98,111,120,114,97,100,32,61,32,48,32,37,115,32,110,111,32,114,111,117,110,100,101,100,32,99,111,114,110,101,114,115,32,105,110,32,103,114,97,112,104,118,105,122,10,0,37,115,32,71,78,85,32,112,105,99,32,115,117,112,112,111,114,116,115,32,97,32,108,105,110,101,116,104,105,99,107,32,118,97,114,105,97,98,108,101,32,116,111,32,115,101,116,32,108,105,110,101,32,116,104,105,99,107,110,101,115,115,59,32,68,87,66,32,97,110,100,32,49,48,116,104,32,69,100,46,32,100,111,32,110,111,116,10,0,108,105,110,101,116,104,105,99,107,32,61,32,48,59,32,111,108,100,108,105,110,101,116,104,105,99,107,32,61,32,108,105,110,101,116,104,105,99,107,10,0,37,115,32,46,80,83,32,119,47,111,32,97,114,103,115,32,99,97,117,115,101,115,32,71,78,85,32,112,105,99,32,116,111,32,115,99,97,108,101,32,100,114,97,119,105,110,103,32,116,111,32,102,105,116,32,56,46,53,120,49,49,32,112,97,112,101,114,59,32,68,87,66,32,100,111,101,115,32,110,111,116,10,0,37,115,32,109,97,120,112,115,104,116,32,97,110,100,32,109,97,120,112,115,119,105,100,32,104,97,118,101,32,110,111,32,109,101,97,110,105,110,103,32,105,110,32,68,87,66,32,50,46,48,44,32,115,101,116,32,112,97,103,101,32,98,111,117,110,100,97,114,105,101,115,32,105,110,32,103,112,105,99,32,97,110,100,32,105,110,32,49,48,116,104,32,69,100,105,116,105,111,110,10,0,37,115,32,109,97,120,112,115,104,116,32,97,110,100,32,109,97,120,112,115,119,105,100,32,97,114,101,32,112,114,101,100,101,102,105,110,101,100,32,116,111,32,49,49,46,48,32,97,110,100,32,56,46,53,32,105,110,32,103,112,105,99,10,0,109,97,120,112,115,104,116,32,61,32,37,102,10,109,97,120,112,115,119,105,100,32,61,32,37,102,10,0,68,111,116,58,32,91,10,0,100,101,102,105,110,101,32,97,116,116,114,115,48,32,37,37,32,37,37,59,32,100,101,102,105,110,101,32,117,110,102,105,108,108,101,100,32,37,37,32,37,37,59,32,100,101,102,105,110,101,32,114,111,117,110,100,101,100,32,37,37,32,37,37,59,32,100,101,102,105,110,101,32,100,105,97,103,111,110,97,108,115,32,37,37,32,37,37,10,0,37,115,37,115,32,117,110,115,117,112,112,111,114,116,101,100,10,0,114,111,116,97,116,105,111,110,0,37,115,32,114,101,115,116,111,114,101,32,112,111,105,110,116,32,115,105,122,101,32,97,110,100,32,102,111,110,116,10,46,112,115,32,92,110,40,46,83,10,46,102,116,32,92,110,40,68,70,10,0,37,115,32,67,114,101,97,116,111,114,58,32,37,115,32,118,101,114,115,105,111,110,32,37,115,32,40,37,115,41,10,0,37,115,32,84,105,116,108,101,58,32,37,115,10,0,37,115,32,115,97,118,101,32,112,111,105,110,116,32,115,105,122,101,32,97,110,100,32,102,111,110,116,10,46,110,114,32,46,83,32,92,110,40,46,115,10,46,110,114,32,68,70,32,92,110,40,46,102,10,0,112,105,99,0,112,105,99,58,112,105,99,0,112,110,103,58,115,118,103,0,103,105,102,58,115,118,103,0,106,112,101,103,58,115,118,103,0,106,112,101,58,115,118,103,0,106,112,103,58,115,118,103,0,112,110,103,58,102,105,103,0,103,105,102,58,102,105,103,0,106,112,101,103,58,102,105,103,0,106,112,101,58,102,105,103,0,106,112,103,58,102,105,103,0,112,110,103,58,118,114,109,108,0,103,105,102,58,118,114,109,108,0,106,112,101,103,58,118,114,109,108,0,106,112,101,58,118,114,109,108,0,106,112,103,58,118,114,109,108,0,101,112,115,58,112,115,0,112,115,58,112,115,0,40,108,105,98,41,58,112,115,0,112,110,103,58,109,97,112,0,103,105,102,58,109,97,112,0,106,112,101,103,58,109,97,112,0,106,112,101,58,109,97,112,0,106,112,103,58,109,97,112,0,112,115,58,109,97,112,0,101,112,115,58,109,97,112,0,115,118,103,58,109,97,112,0,112,110,103,58,100,111,116,0,103,105,102,58,100,111,116,0,106,112,101,103,58,100,111,116,0,106,112,101,58,100,111,116,0,106,112,103,58,100,111,116,0,112,115,58,100,111,116,0,101,112,115,58,100,111,116,0,115,118,103,58,100,111,116,0,112,110,103,58,120,100,111,116,0,103,105,102,58,120,100,111,116,0,106,112,101,103,58,120,100,111,116,0,106,112,101,58,120,100,111,116,0,106,112,103,58,120,100,111,116,0,112,115,58,120,100,111,116,0,101,112,115,58,120,100,111,116,0,115,118,103,58,120,100,111,116,0,115,118,103,58,115,118,103,0,112,110,103,58,118,109,108,0,103,105,102,58,118,109,108,0,106,112,101,103,58,118,109,108,0,106,112,101,58,118,109,108,0,106,112,103,58,118,109,108,0,103,105,102,58,116,107,0,105,109,97,103,101,32,99,114,101,97,116,101,32,112,104,111,116,111,32,34,112,104,111,116,111,95,37,115,34,32,45,102,105,108,101,32,34,37,115,34,10,0,36,99,32,99,114,101,97,116,101,32,105,109,97,103,101,32,37,46,50,102,32,37,46,50,102,32,45,105,109,97,103,101,32,34,112,104,111,116,111,95,37,115,34,10,0,60,118,58,105,109,97,103,101,32,115,114,99,61,34,37,115,34,32,115,116,121,108,101,61,34,32,112,111,115,105,116,105,111,110,58,97,98,115,111,108,117,116,101,59,32,119,105,100,116,104,58,37,46,50,102,59,32,104,101,105,103,104,116,58,37,46,50,102,59,32,108,101,102,116,58,37,46,50,102,32,59,32,116,111,112,58,37,46,50,102,34,0,32,47,62,10,0,103,118,108,111,97,100,105,109,97,103,101,95,99,111,114,101,46,99,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,112,115,108,105,98,0,91,32,0,37,103,32,37,103,32,0,93,32,32,37,100,32,116,114,117,101,32,37,115,10,0,93,32,32,37,100,32,102,97,108,115,101,32,37,115,10,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,112,115,0,103,115,97,118,101,32,37,103,32,37,103,32,116,114,97,110,115,108,97,116,101,32,110,101,119,112,97,116,104,10,0,117,115,101,114,95,115,104,97,112,101,95,37,100,10,0,103,114,101,115,116,111,114,101,10,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,118,114,109,108,0,83,104,97,112,101,32,123,10,0,32,32,97,112,112,101,97,114,97,110,99,101,32,65,112,112,101,97,114,97,110,99,101,32,123,10,0,32,32,32,32,109,97,116,101,114,105,97,108,32,77,97,116,101,114,105,97,108,32,123,10,0,32,32,32,32,32,32,97,109,98,105,101,110,116,73,110,116,101,110,115,105,116,121,32,48,46,51,51,10,0,32,32,32,32,32,32,32,32,100,105,102,102,117,115,101,67,111,108,111,114,32,49,32,49,32,49,10,0,32,32,32,32,125,10,0,32,32,32,32,116,101,120,116,117,114,101,32,73,109,97,103,101,84,101,120,116,117,114,101,32,123,32,117,114,108,32,34,37,115,34,32,125,10,0,32,32,125,10,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,102,105,103,0,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,46,49,102,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,32,37,100,32,37,115,10,0,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,32,37,100,10,0,99,111,114,101,95,108,111,97,100,105,109,97,103,101,95,115,118,103,0,60,105,109,97,103,101,32,120,108,105,110,107,58,104,114,101,102,61,34,0,34,32,119,105,100,116,104,61,34,37,103,112,120,34,32,104,101,105,103,104,116,61,34,37,103,112,120,34,32,112,114,101,115,101,114,118,101,65,115,112,101,99,116,82,97,116,105,111,61,34,120,77,105,100,89,77,105,100,32,109,101,101,116,34,32,120,61,34,37,103,34,32,121,61,34,37,103,34,0,32,116,114,97,110,115,102,111,114,109,61,34,114,111,116,97,116,101,40,37,100,32,37,103,32,37,103,41,34,0,34,32,119,105,100,116,104,61,34,37,103,112,120,34,32,104,101,105,103,104,116,61,34,37,103,112,120,34,32,112,114,101,115,101,114,118,101,65,115,112,101,99,116,82,97,116,105,111,61,34,120,77,105,110,89,77,105,110,32,109,101,101,116,34,32,120,61,34,37,103,34,32,121,61,34,37,103,34,0,47,62,10,0,100,111,116,95,108,97,121,111,117,116,0,112,104,97,115,101,0,100,111,116,32,100,111,101,115,32,110,111,116,32,115,117,112,112,111,114,116,32,116,104,101,32,97,115,112,101,99,116,32,97,116,116,114,105,98,117,116,101,32,102,111,114,32,100,105,115,99,111,110,110,101,99,116,101,100,32,103,114,97,112,104,115,32,111,114,32,103,114,97,112,104,115,32,119,105,116,104,32,99,108,117,115,116,101,114,115,10,0,99,111,109,112,111,117,110,100,0,118,32,61,61,32,110,0,100,111,116,105,110,105,116,46,99,0,114,101,109,111,118,101,95,102,114,111,109,95,114,97,110,107,0,111,114,100,101,114,0,101,100,103,101,32,108,97,98,101,108,115,32,119,105,116,104,32,115,112,108,105,110,101,115,61,99,117,114,118,101,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,100,111,116,32,45,32,117,115,101,32,120,108,97,98,101,108,115,10,0,69,68,95,108,97,98,101,108,40,102,101,41,0,100,111,116,115,112,108,105,110,101,115,46,99,0,95,100,111,116,95,115,112,108,105,110,101,115,0,102,108,97,116,32,101,100,103,101,32,98,101,116,119,101,101,110,32,97,100,106,97,99,101,110,116,32,110,111,100,101,115,32,111,110,101,32,111,102,32,119,104,105,99,104,32,104,97,115,32,97,32,114,101,99,111,114,100,32,115,104,97,112,101,32,45,32,114,101,112,108,97,99,101,32,114,101,99,111,114,100,115,32,119,105,116,104,32,72,84,77,76,45,108,105,107,101,32,108,97,98,101,108,115,10,0,32,32,69,100,103,101,32,37,115,32,37,115,32,37,115,10,0,120,120,120,0,49,48,48,48,48,0,123,37,115,125,0,97,117,120,103,0,108,97,98,101,108,95,102,108,111,97,116,0,102,105,120,101,100,0,40,108,32,61,32,69,68,95,108,97,98,101,108,40,102,101,41,41,0,115,101,116,69,100,103,101,76,97,98,101,108,80,111,115,0,101,32,33,61,32,78,85,76,76,0,102,97,115,116,103,114,46,99,0,100,101,108,101,116,101,95,102,97,115,116,95,101,100,103,101,0,110,32,33,61,32,78,68,95,110,101,120,116,40,110,41,0,102,97,115,116,95,110,111,100,101,0,117,32,33,61,32,118,0,102,97,115,116,95,110,111,100,101,97,112,112,0,78,68,95,110,101,120,116,40,118,41,32,61,61,32,78,85,76,76,0,102,105,110,100,95,102,97,115,116,95,110,111,100,101,40,103,44,32,110,41,0,100,101,108,101,116,101,95,102,97,115,116,95,110,111,100,101,0,100,101,108,101,116,101,95,102,108,97,116,95,101,100,103,101,0,109,101,114,103,101,95,111,110,101,119,97,121,32,103,108,105,116,99,104,10,0,109,101,114,103,101,95,111,110,101,119,97,121,0,115,97,102,101,95,100,101,108,101,116,101,95,102,97,115,116,95,101,100,103,101,0,108,103,0,105,110,102,111,0,99,111,109,112,0,99,110,116,32,61,61,32,115,122,0,109,105,110,99,114,111,115,115,46,99,0,102,105,120,76,97,98,101,108,79,114,100,101,114,0,114,101,109,105,110,99,114,111,115,115,0,109,105,110,99,114,111,115,115,32,37,115,58,32,37,100,32,99,114,111,115,115,105,110,103,115,44,32,37,46,50,102,32,115,101,99,115,46,10,0,118,0,110,101,105,103,104,98,111,114,0,40,114,118,32,61,61,32,48,41,32,124,124,32,40,78,68,95,111,114,100,101,114,40,114,118,41,45,78,68,95,111,114,100,101,114,40,118,41,41,42,100,105,114,32,62,32,48,0,99,111,110,115,116,114,97,105,110,105,110,103,95,102,108,97,116,95,101,100,103,101,40,103,44,118,44,101,41,32,61,61,32,70,65,76,83,69,0,102,108,97,116,95,114,101,111,114,100,101,114,0,78,68,95,114,97,110,107,40,118,41,32,61,61,32,114,0,112,111,115,116,111,114,100,101,114,0,102,108,97,116,105,110,100,101,120,40,97,103,104,101,97,100,40,101,41,41,32,60,32,77,45,62,110,114,111,119,115,0,102,108,97,116,95,115,101,97,114,99,104,0,102,108,97,116,105,110,100,101,120,40,97,103,116,97,105,108,40,101,41,41,32,60,32,77,45,62,110,99,111,108,115,0,111,117,116,0,111,114,100,101,114,105,110,103,32,39,37,115,39,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,46,10,0,111,114,100,101,114,105,110,103,32,39,37,115,39,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,32,102,111,114,32,110,111,100,101,32,39,37,115,39,46,10,0,109,101,114,103,101,50,58,32,103,114,97,112,104,32,37,115,44,32,114,97,110,107,32,37,100,32,104,97,115,32,111,110,108,121,32,37,100,32,60,32,37,100,32,110,111,100,101,115,10,0,109,105,110,99,114,111,115,115,58,32,112,97,115,115,32,37,100,32,105,116,101,114,32,37,100,32,116,114,121,105,110,103,32,37,100,32,99,117,114,95,99,114,111,115,115,32,37,100,32,98,101,115,116,95,99,114,111,115,115,32,37,100,10,0,78,68,95,111,114,100,101,114,40,118,41,32,60,32,78,68,95,111,114,100,101,114,40,119,41,0,98,97,108,97,110,99,101,0,116,114,97,110,115,112,111,115,101,95,115,116,101,112,0,115,117,114,112,114,105,115,101,10,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,44,32,108,105,110,101,32,37,100,58,32,37,115,32,37,115,32,114,97,110,107,32,37,100,32,105,32,61,32,37,100,32,97,110,32,61,32,48,10,0,71,68,95,114,97,110,107,40,103,41,91,114,93,46,110,32,60,61,32,71,68,95,114,97,110,107,40,103,41,91,114,93,46,97,110,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,44,32,108,105,110,101,32,37,100,58,32,78,68,95,111,114,100,101,114,40,37,115,41,32,91,37,100,93,32,62,32,71,68,95,114,97,110,107,40,82,111,111,116,41,91,37,100,93,46,97,110,32,91,37,100,93,10,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,44,32,108,105,110,101,32,37,100,58,32,114,97,110,107,32,37,100,32,110,111,116,32,105,110,32,114,97,110,107,32,114,97,110,103,101,32,91,37,100,44,37,100,93,10,0,105,110,115,116,97,108,108,95,105,110,95,114,97,110,107,44,32,108,105,110,101,32,37,100,58,32,71,68,95,114,97,110,107,40,103,41,91,37,100,93,46,118,32,43,32,78,68,95,111,114,100,101,114,40,37,115,41,32,91,37,100,93,32,62,32,71,68,95,114,97,110,107,40,103,41,91,37,100,93,46,97,118,32,43,32,71,68,95,114,97,110,107,40,82,111,111,116,41,91,37,100,93,46,97,110,32,91,37,100,93,10,0,95,110,101,119,95,114,97,110,107,0,109,99,108,105,109,105,116,0,114,97,110,107,40,103,44,32,50,44,32,110,115,105,116,101,114,50,40,103,41,41,32,61,61,32,48,0,112,111,115,105,116,105,111,110,46,99,0,100,111,116,95,112,111,115,105,116,105,111,110,0,65,82,61,37,48,46,52,108,102,9,32,65,114,101,97,61,32,37,48,46,52,108,102,9,0,68,117,109,109,121,61,37,100,10,0,71,111,105,110,103,32,116,111,32,97,112,112,108,121,32,97,110,111,116,104,101,114,32,101,120,112,97,110,115,105,111,110,46,10,0,110,101,120,116,35,105,116,101,114,61,37,100,10,0,104,112,0,99,111,110,110,101,99,116,71,114,97,112,104,0,69,100,103,101,32,108,101,110,103,116,104,32,37,102,32,108,97,114,103,101,114,32,116,104,97,110,32,109,97,120,105,109,117,109,32,37,117,32,97,108,108,111,119,101,100,46,10,67,104,101,99,107,32,102,111,114,32,111,118,101,114,119,105,100,101,32,110,111,100,101,40,115,41,46,10,0,110,115,108,105,109,105,116,0,99,111,110,116,97,105,110,95,110,111,100,101,115,32,99,108,117,115,116,32,37,115,32,114,97,110,107,32,37,100,32,109,105,115,115,105,110,103,32,110,111,100,101,10,0,110,115,108,105,109,105,116,49,0,110,101,119,114,97,110,107,0,77,97,120,114,97,110,107,32,61,32,37,100,44,32,109,105,110,114,97,110,107,32,61,32,37,100,10,0,108,101,97,100,101,114,32,33,61,32,78,85,76,76,0,114,97,110,107,46,99,0,99,108,117,115,116,101,114,95,108,101,97,100,101,114,0,40,78,68,95,85,70,95,115,105,122,101,40,110,41,32,60,61,32,49,41,32,124,124,32,40,110,32,61,61,32,108,101,97,100,101,114,41,0,97,103,104,101,97,100,40,101,41,32,61,61,32,85,70,95,102,105,110,100,40,97,103,104,101,97,100,40,101,41,41,0,109,105,110,109,97,120,95,101,100,103,101,115,0,97,103,116,97,105,108,40,101,41,32,61,61,32,85,70,95,102,105,110,100,40,97,103,116,97,105,108,40,101,41,41,0,114,97,110,107,0,115,97,109,101,0,109,105,110,0,115,111,117,114,99,101,0,109,97,120,0,115,105,110,107,0,108,101,118,101,108,32,97,115,115,105,103,110,109,101,110,116,32,99,111,110,115,116,114,97,105,110,116,115,0,108,101,118,101,108,32,103,114,97,112,104,32,114,101,99,0,127,114,111,111,116,0,127,116,111,112,0,127,98,111,116,0,99,111,109,112,97,99,116,0,95,119,101,97,107,95,37,100,0,114,97,110,107,105,110,103,58,32,102,97,105,108,117,114,101,32,116,111,32,99,114,101,97,116,101,32,115,116,114,111,110,103,32,99,111,110,115,116,114,97,105,110,116,32,101,100,103,101,32,98,101,116,119,101,101,110,32,110,111,100,101,115,32,37,115,32,97,110,100,32,37,115,10,0,37,115,32,104,97,115,32,117,110,114,101,99,111,103,110,105,122,101,100,32,114,97,110,107,61,37,115,0,108,101,118,101,108,32,101,100,103,101,32,114,101,99,0,108,101,118,101,108,32,110,111,100,101,32,114,101,99,0,115,97,109,101,104,101,97,100,0,115,97,109,101,116,97,105,108,0,116,111,111,32,109,97,110,121,32,40,62,32,37,100,41,32,115,97,109,101,123,104,101,97,100,44,116,97,105,108,125,32,103,114,111,117,112,115,32,102,111,114,32,110,111,100,101,32,37,115,10,0,99,111,109,98,105,65,82,32,61,32,37,108,102,10,0,37,108,102,44,37,100,0,116,104,101,32,97,115,112,101,99,116,32,97,116,116,114,105,98,117,116,101,32,104,97,115,32,98,101,101,110,32,100,105,115,97,98,108,101,100,32,100,117,101,32,116,111,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,102,108,97,119,115,32,45,32,97,116,116,114,105,98,117,116,101,32,105,103,110,111,114,101,100,46,10,0,69,68,95,116,111,95,118,105,114,116,40,101,41,32,61,61,32,78,85,76,76,0,99,108,97,115,115,50,46,99,0,109,101,114,103,101,95,99,104,97,105,110,0,69,68,95,116,111,95,118,105,114,116,40,111,114,105,103,41,32,61,61,32,78,85,76,76,0,109,97,107,101,95,99,104,97,105,110,0,69,68,95,116,111,95,118,105,114,116,40,111,114,105,103,41,32,33,61,32,78,85,76,76,0,78,68,95,114,97,110,107,40,102,114,111,109,41,32,60,32,78,68,95,114,97,110,107,40,116,111,41,0,99,108,117,115,116,101,114,46,99,0,109,97,112,95,112,97,116,104,0,37,115,32,119,97,115,32,97,108,114,101,97,100,121,32,105,110,32,97,32,114,97,110,107,115,101,116,44,32,100,101,108,101,116,101,100,32,102,114,111,109,32,99,108,117,115,116,101,114,32,37,115,10,0,108,104,101,97,100,0,108,116,97,105,108,0,37,115,32,45,62,32,37,115,58,32,115,112,108,105,110,101,32,115,105,122,101,32,62,32,49,32,110,111,116,32,115,117,112,112,111,114,116,101,100,10,0,37,115,32,45,62,32,37,115,58,32,104,101,97,100,32,110,111,116,32,105,110,115,105,100,101,32,104,101,97,100,32,99,108,117,115,116,101,114,32,37,115,10,0,37,115,32,45,62,32,37,115,58,32,116,97,105,108,32,105,115,32,105,110,115,105,100,101,32,104,101,97,100,32,99,108,117,115,116,101,114,32,37,115,10,0,98,101,122,45,62,115,102,108,97,103,0,99,111,109,112,111,117,110,100,46,99,0,109,97,107,101,67,111,109,112,111,117,110,100,69,100,103,101,0,98,101,122,45,62,101,102,108,97,103,0,37,115,32,45,62,32,37,115,58,32,116,97,105,108,32,110,111,116,32,105,110,115,105,100,101,32,116,97,105,108,32,99,108,117,115,116,101,114,32,37,115,10,0,37,115,32,45,62,32,37,115,58,32,104,101,97,100,32,105,115,32,105,110,115,105,100,101,32,116,97,105,108,32,99,108,117,115,116,101,114,32,37,115,10,0,115,101,103,109,101,110,116,32,91,37,115,44,37,115,93,32,100,111,101,115,32,110,111,116,32,105,110,116,101,114,115,101,99,116,32,98,111,120,32,108,108,61,37,115,44,117,114,61,37,115,10,0,98,111,120,73,110,116,101,114,115,101,99,116,102,0,40,37,46,53,103,44,37,46,53,103,41,0,99,108,117,115,116,101,114,32,110,97,109,101,100,32,37,115,32,110,111,116,32,102,111,117,110,100,10,0,99,111,110,99,101,110,116,114,97,116,101,61,116,114,117,101,32,109,97,121,32,110,111,116,32,119,111,114,107,32,99,111,114,114,101,99,116,108,121,46,10,0,114,101,98,117,105,108,116,100,95,118,108,105,115,116,115,58,32,114,97,110,107,32,108,101,97,100,32,37,115,32,110,111,116,32,105,110,32,111,114,100,101,114,32,37,100,32,111,102,32,114,97,110,107,32,37,100,10,0,100,101,103,101,110,101,114,97,116,101,32,99,111,110,99,101,110,116,114,97,116,101,100,32,114,97,110,107,32,37,115,44,37,100,10,0,78,68,95,105,110,40,114,105,103,104,116,41,46,115,105,122,101,32,43,32,78,68,95,111,117,116,40,114,105,103,104,116,41,46,115,105,122,101,32,61,61,32,48,0,99,111,110,99,46,99,0,109,101,114,103,101,118,105,114,116,117,97,108,0,100,111,116,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,10,0,78,68,95,111,117,116,40,118,41,46,115,105,122,101,32,61,61,32,50,0,102,108,97,116,46,99,0,115,101,116,98,111,117,110,100,115,0,71,68,95,109,105,110,114,97,110,107,40,103,41,32,61,61,32,48,0,97,98,111,109,105,110,97,116,105,111,110,0,69,114,114,111,114,0,87,97,114,110,105,110,103,0,37,115,58,32,0,117,115,101,114,111,117,116,58,32,99,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,10,0,95,65,71,95,115,116,114,100,97,116,97,0,95,65,71,95,100,97,116,97,100,105,99,116,0,97,103,100,105,99,116,111,102,58,32,117,110,107,110,111,119,110,32,107,105,110,100,32,37,100,10,0,37,99,37,108,100,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,117,114,101,0,97,103,100,101,108,101,116,101,32,111,110,32,119,114,111,110,103,32,103,114,97,112,104,0,95,65,71,95,112,101,110,100,105,110,103,0,97,103,114,101,99,111,114,100,95,99,97,108,108,98,97,99,107,32,111,102,32,97,32,98,97,100,32,111,98,106,101,99,116,0,112,101,110,100,32,100,105,99,116,111,102,32,97,32,98,97,100,32,111,98,106,101,99,116,0,109,111,118,101,32,116,111,32,102,114,111,110,116,32,108,111,99,107,32,105,110,99,111,110,115,105,115,116,101,110,99,121,0,92,92,0,102,97,116,97,108,32,102,108,101,120,32,115,99,97,110,110,101,114,32,105,110,116,101,114,110,97,108,32,101,114,114,111,114,45,45,110,111,32,97,99,116,105,111,110,32,102,111,117,110,100,0,37,115,10,0,102,97,116,97,108,32,102,108,101,120,32,115,99,97,110,110,101,114,32,105,110,116,101,114,110,97,108,32,101,114,114,111,114,45,45,101,110,100,32,111,102,32,98,117,102,102,101,114,32,109,105,115,115,101,100,0,102,97,116,97,108,32,101,114,114,111,114,32,45,32,115,99,97,110,110,101,114,32,105,110,112,117,116,32,98,117,102,102,101,114,32,111,118,101,114,102,108,111,119,0,111,117,116,32,111,102,32,100,121,110,97,109,105,99,32,109,101,109,111,114,121,32,105,110,32,97,97,103,95,103,101,116,95,110,101,120,116,95,98,117,102,102,101,114,40,41,0,105,110,112,117,116,0,115,121,110,116,97,120,32,97,109,98,105,103,117,105,116,121,32,45,32,98,97,100,108,121,32,100,101,108,105,109,105,116,101,100,32,110,117,109,98,101,114,32,39,0,39,32,105,110,32,108,105,110,101,32,37,100,32,111,102,32,0,32,115,112,108,105,116,115,32,105,110,116,111,32,116,119,111,32,116,111,107,101,110,115,10,0,37,115,0,108,105,110,101,0,37,100,32,37,49,91,34,93,37,110,0,111,117,116,32,111,102,32,100,121,110,97,109,105,99,32,109,101],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+71680);allocate([109,111,114,121,32,105,110,32,97,97,103,95,99,114,101,97,116,101,95,98,117,102,102,101,114,40,41,0,111,117,116,32,111,102,32,100,121,110,97,109,105,99,32,109,101,109,111,114,121,32,105,110,32,97,97,103,101,110,115,117,114,101,95,98,117,102,102,101,114,95,115,116,97,99,107,40,41,0,58,32,0,32,105,110,32,108,105,110,101,32,37,100,0,32,110,101,97,114,32,39,0,32,115,99,97,110,110,105,110,103,32,97,32,113,117,111,116,101,100,32,115,116,114,105,110,103,32,40,109,105,115,115,105,110,103,32,101,110,100,113,117,111,116,101,63,32,108,111,110,103,101,114,32,116,104,97,110,32,37,100,63,41,0,10,83,116,114,105,110,103,32,115,116,97,114,116,105,110,103,58,34,0,32,115,99,97,110,110,105,110,103,32,97,32,72,84,77,76,32,115,116,114,105,110,103,32,40,109,105,115,115,105,110,103,32,39,62,39,63,32,98,97,100,32,110,101,115,116,105,110,103,63,32,108,111,110,103,101,114,32,116,104,97,110,32,37,100,63,41,0,10,83,116,114,105,110,103,32,115,116,97,114,116,105,110,103,58,60,0,32,115,99,97,110,110,105,110,103,32,97,32,47,42,46,46,46,42,47,32,99,111,109,109,101,110,116,32,40,109,105,115,115,105,110,103,32,39,42,47,63,32,108,111,110,103,101,114,32,116,104,97,110,32,37,100,63,41,0,102,108,101,120,32,115,99,97,110,110,101,114,32,112,117,115,104,45,98,97,99,107,32,111,118,101,114,102,108,111,119,0,34,34,0,115,116,114,105,99,116,0,108,105,110,101,108,101,110,103,116,104,0,59,10,0,32,91,107,101,121,61,0,93,0,32,91,0,44,10,0,61,0,95,37,108,100,95,83,85,83,80,69,67,84,0,100,105,0,115,116,114,105,99,116,32,0,123,10,0,93,59,10,0,18,238,238,20,9,3,238,254,238,238,238,1,238,238,238,1,238,238,10,254,238,19,25,21,238,19,1,238,238,238,238,11,17,238,238,238,238,238,238,238,238,238,1,238,238,22,9,1,1,29,15,23,238,238,26,23,27,238,238,28,238,238,238,238,1,25,251,238,238,238,1,238,16,238,238,30,238,238,238,238,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,23,17,2,2,2,2,2,2,2,2,2,2,2,2,2,18,16,2,19,2,2,22,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,20,2,21,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,14,2,15,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,3,4,5,6,7,8,9,10,11,12,13,11,3,4,5,15,7,3,12,13,6,12,13,14,12,13,26,21,22,0,1,0,3,7,14,6,15,8,12,13,18,19,42,16,17,9,16,47,48,17,50,23,19,13,20,18,46,18,20,65,19,50,19,44,64,42,66,25,44,66,70,34,12,13,14,35,15,9,16,17,10,16,17,201,16,17,45,69,70,252,1,6,246,15,7,246,36,2,16,17,47,48,54,77,78,40,38,59,60,42,54,49,57,61,63,47,58,64,216,68,48,62,37,55,67,53,75,43,56,73,76,0,3,9,0,0,0,1,14,2,11,12,8,35,36,37,54,59,61,0,13,16,18,27,22,28,18,39,50,34,23,51,30,60,6,7,53,5,15,17,20,24,41,0,19,41,0,0,0,0,0,55,21,40,29,30,0,33,38,52,31,48,62,25,44,0,27,0,32,26,42,0,43,58,46,47,0,49,56,57,45,0,2,2,1,0,3,3,1,0,1,0,1,1,1,0,2,1,1,0,2,2,3,1,1,0,0,5,0,1,3,1,3,5,3,1,1,1,1,2,0,1,0,4,2,0,2,1,1,3,2,1,0,3,2,1,0,1,1,0,1,1,1,3,0,24,25,25,25,26,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,36,36,38,39,37,37,40,40,41,41,41,42,42,43,43,43,44,44,45,45,46,47,47,48,49,49,50,51,52,54,53,55,55,55,56,56,56,57,57,58,58,238,238,255,238,238,238,238,238,238,31,32,238,0,239,238,238,238,12,238,238,238,8,13,238,238,238,248,238,238,238,238,238,238,245,238,255,3,8,4,33,5,11,18,19,39,20,21,22,41,50,65,23,24,25,26,44,51,52,66,71,72,27,74,28,29,46,30,79,31,32,107,101,121,0,97,116,116,114,105,98,117,116,101,32,109,97,99,114,111,115,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,37,115,58,37,115,0,67,111,117,108,100,32,110,111,116,32,111,112,101,110,32,34,37,115,34,32,102,111,114,32,119,114,105,116,105,110,103,32,58,32,37,115,10,0,78,111,32,108,105,98,122,32,115,117,112,112,111,114,116,46,10,0,46,37,100,0,110,111,110,97,109,101,46,103,118,0,103,118,119,114,105,116,101,95,110,111,95,122,32,112,114,111,98,108,101,109,32,37,100,10,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,102,97,105,108,117,114,101,10,0,78,111,32,108,105,98,122,32,115,117,112,112,111,114,116,10,0,103,118,112,114,105,110,116,102,58,32,37,115,10,0,45,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,46,57,57,0,103,114,97,112,104,118,105,122,0,50,46,52,48,46,49,0,50,48,49,54,49,50,50,53,46,48,51,48,52,0,114,101,110,100,101,114,0,100,101,118,105,99,101,0,108,111,97,100,105,109,97,103,101,0,100,121,110,97,109,105,99,32,108,111,97,100,105,110,103,32,110,111,116,32,97,118,97,105,108,97,98,108,101,10,0,85,115,105,110,103,32,37,115,58,32,37,115,58,37,115,10,0,103,118,117,115,101,114,115,104,97,112,101,46,99,0,103,118,117,115,101,114,115,104,97,112,101,95,102,105,110,100,0,103,118,117,115,101,114,115,104,97,112,101,95,102,105,108,101,95,97,99,99,101,115,115,0,70,105,108,101,110,97,109,101,32,34,37,115,34,32,105,115,32,117,110,115,97,102,101,10,0,37,115,32,119,104,105,108,101,32,111,112,101,110,105,110,103,32,37,115,10,0,117,115,45,62,102,0,103,118,117,115,101,114,115,104,97,112,101,95,111,112,101,110,0,34,37,115,34,32,119,97,115,32,110,111,116,32,102,111,117,110,100,32,97,115,32,97,32,102,105,108,101,32,111,114,32,97,115,32,97,32,115,104,97,112,101,32,108,105,98,114,97,114,121,32,109,101,109,98,101,114,10,0,47,77,101,100,105,97,66,111,120,0,40,91,97,45,122,93,91,97,45,122,65,45,90,93,42,41,61,34,40,91,94,34,93,42,41,34,0,99,97,110,110,111,116,32,99,111,109,112,105,108,101,32,114,101,103,117,108,97,114,32,101,120,112,114,101,115,115,105,111,110,32,37,115,0,37,108,102,37,50,115,0,112,116,0,118,105,101,119,66,111,120,0,37,108,102,32,37,108,102,32,37,108,102,32,37,108,102,0,105,110,0,112,120,0,112,99,0,34,0,99,109,0,109,109,0,37,37,66,111,117,110,100,105,110,103,66,111,120,58,0,1,208,209,210,211,212,213,214,215,216,217,0,60,115,118,103,0,87,69,66,80,0,119,101,98,112,0,40,108,105,98,41,0,137,80,78,71,13,10,26,10,0,112,110,103,0,37,33,80,83,45,65,100,111,98,101,45,0,66,77,0,98,109,112,0,71,73,70,56,0,103,105,102,0,255,216,255,224,0,106,112,101,103,0,37,80,68,70,45,0,112,100,102,0,197,208,211,198,0,101,112,115,0,60,63,120,109,108,0,120,109,108,0,82,73,70,70,0,114,105,102,102,0,0,0,1,0,0,105,99,111,0,37,100,32,37,100,32,37,100,32,37,100,0,76,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,10,0,102,97,105,108,117,114,101,32,109,97,108,108,111,99,39,105,110,103,32,102,111,114,32,114,101,115,117,108,116,32,115,116,114,105,110,103,0,103,99,58,32,79,117,116,32,111,102,32,109,101,109,111,114,121,10,0,95,99,99,95,0,111,114,105,103,0,111,112,0,99,99,111,109,112,115,46,99,0,109,97,112,67,108,117,115,116,0,99,99,103,114,97,112,104,105,110,102,111,0,99,99,103,110,111,100,101,105,110,102,111,0,40,37,52,108,100,41,32,37,55,108,100,32,110,111,100,101,115,32,37,55,108,100,32,101,100,103,101,115,10,0,32,32,32,32,32,32,32,37,55,100,32,110,111,100,101,115,32,37,55,100,32,101,100,103,101,115,32,37,55,108,100,32,99,111,109,112,111,110,101,110,116,115,32,37,115,10,0,100,103,0,69,114,114,111,114,58,32,110,111,100,101,32,34,37,115,34,32,98,101,108,111,110,103,115,32,116,111,32,116,119,111,32,110,111,110,45,110,101,115,116,101,100,32,99,108,117,115,116,101,114,115,32,34,37,115,34,32,97,110,100,32,34,37,115,34,10,0,115,111,114,116,118,0,114,111,119,32,109,97,106,111,114,0,99,111,108,117,109,110,32,109,97,106,111,114,0,97,114,114,97,121,32,112,97,99,107,105,110,103,58,32,37,115,32,37,100,32,114,111,119,115,32,37,100,32,99,111,108,117,109,110,115,10,0,98,98,91,37,115,93,32,37,46,53,103,32,37,46,53,103,32,37,46,53,103,32,37,46,53,103,10,0,115,116,101,112,32,115,105,122,101,32,61,32,37,100,10,0,112,111,115,91,37,100,93,32,37,100,32,37,100,10,0,99,99,32,40,37,100,32,99,101,108,108,115,41,32,97,116,32,40,37,100,44,37,100,41,32,40,37,100,44,37,100,41,10,0,99,99,32,40,37,100,32,99,101,108,108,115,41,32,97,116,32,40,37,100,44,37,100,41,10,0,37,115,32,110,111,46,32,99,101,108,108,115,32,37,100,32,87,32,37,100,32,72,32,37,100,10,0,32,32,37,100,32,37,100,32,99,101,108,108,10,0,108,105,98,112,97,99,107,58,32,100,105,115,99,32,61,32,37,102,32,40,32,60,32,48,41,10,0,80,97,99,107,105,110,103,58,32,99,111,109,112,117,116,101,32,103,114,105,100,32,115,105,122,101,10,0,97,32,37,102,32,98,32,37,102,32,99,32,37,102,32,100,32,37,102,32,114,32,37,102,10,0,114,111,111,116,32,37,100,32,40,37,102,41,32,37,100,32,40,37,102,41,10,0,32,114,49,32,37,102,32,114,50,32,37,102,10,0,112,105,110,102,111,0,112,97,99,107,46,99,0,103,101,116,80,97,99,107,73,110,102,111,0,32,32,109,97,114,103,105,110,32,37,100,10,0,112,97,99,107,109,111,100,101,0,112,97,114,115,101,80,97,99,107,77,111,100,101,73,110,102,111,0,97,114,114,97,121,0,97,115,112,101,99,116,0,37,102,0,112,97,99,107,32,105,110,102,111,58,10,0,32,32,109,111,100,101,32,32,32,37,115,10,0,32,32,97,115,112,101,99,116,32,37,102,10,0,32,32,115,105,122,101,32,32,32,37,100,10,0,32,32,102,108,97,103,115,32,32,37,100,10,0,117,110,100,101,102,105,110,101,100,0,112,97,99,107,0,65,114,114,111,119,32,116,121,112,101,32,34,37,115,34,32,117,110,107,110,111,119,110,32,45,32,105,103,110,111,114,105,110,103,10,0,110,111,114,109,97,108,0,99,114,111,119,0,116,101,101,0,100,111,116,0,105,110,118,0,118,101,101,0,112,101,110,0,109,112,116,121,0,99,117,114,118,101,0,105,99,117,114,118,101,0,108,0,104,97,108,102,0,105,110,118,101,109,112,116,121,0,95,98,97,99,107,103,114,111,117,110,100,0,95,100,114,97,119,95,0,67,111,117,108,100,32,110,111,116,32,112,97,114,115,101,32,34,95,98,97,99,107,103,114,111,117,110,100,34,32,97,116,116,114,105,98,117,116,101,32,105,110,32,103,114,97,112,104,32,37,115,10,0,32,32,34,37,115,34,10,0,110,111,32,109,101,109,111,114,121,32,102,114,111,109,32,122,109,97,108,108,111,99,40,41,10,0,111,98,106,0,101,109,105,116,46,99,0,112,111,112,95,111,98,106,95,115,116,97,116,101,0,99,108,117,115,116,0,37,108,100,0,112,97,103,101,37,100,44,37,100,95,0,84,111,116,97,108,32,115,105,122,101,32,62,32,49,32,105,110,32,34,37,115,34,32,99,111,108,111,114,32,115,112,101,99,32,0,73,108,108,101,103,97,108,32,108,101,110,103,116,104,32,118,97,108,117,101,32,105,110,32,34,37,115,34,32,99,111,108,111,114,32,97,116,116,114,105,98,117,116,101,32,0,99,111,108,111,114,115,99,104,101,109,101,0,101,109,105,116,95,101,100,103,101,95,108,97,98,101,108,0,37,115,45,37,115,0,102,111,114,119,97,114,100,0,98,97,99,107,0,32,45,62,32,0,32,45,45,32,0,105,110,32,101,100,103,101,32,37,115,37,115,37,115,10,0,108,97,98,101,108,97,108,105,103,110,101,100,0,101,100,103,101,104,114,101,102,0,101,100,103,101,85,82,76,0,108,97,98,101,108,104,114,101,102,0,108,97,98,101,108,85,82,76,0,116,97,105,108,104,114,101,102,0,116,97,105,108,85,82,76,0,104,101,97,100,104,114,101,102,0,104,101,97,100,85,82,76,0,116,97,114,103,101,116,0,101,100,103,101,116,97,114,103,101,116,0,108,97,98,101,108,116,97,114,103,101,116,0,116,97,105,108,116,97,114,103,101,116,0,104,101,97,100,116,97,114,103,101,116,0,101,100,103,101,116,111,111,108,116,105,112,0,108,97,98,101,108,116,111,111,108,116,105,112,0,116,97,105,108,116,111,111,108,116,105,112,0,104,101,97,100,116,111,111,108,116,105,112,0,1,110,101,115,116,105,110,103,32,110,111,116,32,97,108,108,111,119,101,100,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,117,110,109,97,116,99,104,101,100,32,39,41,39,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,116,114,117,110,99,97,116,105,110,103,32,115,116,121,108,101,32,39,37,115,39,10,0,117,110,109,97,116,99,104,101,100,32,39,40,39,32,105,110,32,115,116,121,108,101,58,32,37,115,10,0,97,108,108,0,98,103,99,111,108,111,114,0,105,110,32,99,108,117,115,116,101,114,32,37,115,10,0,77,111,114,101,32,116,104,97,110,32,50,32,99,111,108,111,114,115,32,115,112,101,99,105,102,105,101,100,32,102,111,114,32,97,32,103,114,97,100,105,101,110,116,32,45,32,105,103,110,111,114,105,110,103,32,114,101,109,97,105,110,105,110,103,10,0,103,114,97,100,105,101,110,116,32,112,101,110,32,99,111,108,111,114,115,32,110,111,116,32,121,101,116,32,115,117,112,112,111,114,116,101,100,46,10,0,73,109,97,103,101,115,32,117,110,115,117,112,112,111,114,116,101,100,32,105,110,32,34,98,97,99,107,103,114,111,117,110,100,34,32,97,116,116,114,105,98,117,116,101,10,0,108,97,121,101,114,115,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,105,110,32,37,115,32,111,117,116,112,117,116,10,0,76,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,46,32,32,77,105,115,115,105,110,103,32,108,97,121,111,117,116,32,112,108,117,103,105,110,115,63,32,10,0,103,118,82,101,110,100,101,114,74,111,98,115,32,37,115,58,32,37,46,50,102,32,115,101,99,115,46,10,0,108,97,121,111,117,116,32,119,97,115,32,110,111,116,32,100,111,110,101,10,0,114,101,110,100,101,114,101,114,32,102,111,114,32,37,115,32,105,115,32,117,110,97,118,97,105,108,97,98,108,101,10,0,112,97,103,101,100,105,114,61,37,115,32,105,103,110,111,114,101,100,10,0,118,105,101,119,112,111,114,116,0,37,108,102,44,37,108,102,44,37,108,102,44,39,37,91,94,39,93,39,0,37,108,102,44,37,108,102,44,37,108,102,44,37,91,94,44,93,37,115,0,37,108,102,44,37,108,102,44,37,108,102,44,37,108,102,44,37,108,102,0,111,117,116,112,117,116,111,114,100,101,114,0,111,100,101,115,102,105,114,115,116,0,100,103,101,115,102,105,114,115,116,0,108,97,121,101,114,115,0,108,97,121,101,114,115,101,108,101,99,116,0,84,104,101,32,108,97,121,101,114,115,101,108,101,99,116,32,97,116,116,114,105,98,117,116,101,32,34,37,115,34,32,100,111,101,115,32,110,111,116,32,109,97,116,99,104,32,97,110,121,32,108,97,121,101,114,32,115,112,101,99,105,102,101,100,32,98,121,32,116,104,101,32,108,97,121,101,114,115,32,97,116,116,114,105,98,117,116,101,32,45,32,105,103,110,111,114,101,100,46,10,0,108,97,121,101,114,115,101,112,0,58,9,32,0,108,97,121,101,114,108,105,115,116,115,101,112,0,44,0,84,104,101,32,99,104,97,114,97,99,116,101,114,32,39,37,99,39,32,97,112,112,101,97,114,115,32,105,110,32,98,111,116,104,32,116,104,101,32,108,97,121,101,114,115,101,112,32,97,110,100,32,108,97,121,101,114,108,105,115,116,115,101,112,32,97,116,116,114,105,98,117,116,101,115,32,45,32,108,97,121,101,114,108,105,115,116,115,101,112,32,105,103,110,111,114,101,100,46,10,0,112,97,100,0,66,76,0,112,97,103,101,100,105,114,0,115,111,108,105,100,0,0,115,101,116,108,105,110,101,119,105,100,116,104,0,49,0,0,115,112,108,45,62,115,105,122,101,32,62,32,48,0,105,110,105,116,95,115,112,108,105,110,101,115,95,98,98,0,98,122,46,115,105,122,101,32,62,32,48,0,98,101,122,105,101,114,95,98,98,0,98,122,46,115,105,122,101,32,37,32,51,32,61,61,32,49,0,108,97,98,101,108,0,37,108,102,0,102,111,110,116,112,97,116,104,0,68,79,84,70,79,78,84,80,65,84,72,0,71,68,70,79,78,84,80,65,84,72,0,105,109,97,103,101,112,97,116,104,0,113,117,97,110,116,117,109,0,114,97,110,107,100,105,114,0,76,82,0,66,84,0,82,76,0,110,111,100,101,115,101,112,0,114,97,110,107,115,101,112,0,101,113,117,97,108,108,121,0,115,104,111,119,98,111,120,101,115,0,102,111,110,116,110,97,109,101,115,0,115,105,122,101,0,112,97,103,101,0,99,101,110,116,101,114,0,114,111,116,97,116,101,0,111,114,105,101,110,116,97,116,105,111,110,0,108,97,110,100,115,99,97,112,101,0,99,108,117,115,116,101,114,114,97,110,107,0,99,111,110,99,101,110,116,114,97,116,101,0,100,112,105,0,114,101,115,111,108,117,116,105,111,110,0,111,114,100,101,114,105,110,103,0,103,114,97,100,105,101,110,116,97,110,103,108,101,0,102,105,108,108,99,111,108,111,114,0,115,116,121,108,101,0,102,111,110,116,115,105,122,101,0,102,111,110,116,110,97,109,101,0,102,111,110,116,99,111,108,111,114,0,120,108,97,98,101,108,0,112,101,110,119,105,100,116,104,0,115,105,100,101,115,0,112,101,114,105,112,104,101,114,105,101,115,0,115,107,101,119,0,100,105,115,116,111,114,116,105,111,110,0,102,105,120,101,100,115,105,122,101,0,110,111,106,117,115,116,105,102,121,0,108,97,121,101,114,0,103,114,111,117,112,0,99,111,109,109,101,110,116,0,118,101,114,116,105,99,101,115,0,122,0,119,101,105,103,104,116,0,108,97,98,101,108,102,108,111,97,116,0,100,105,114,0,97,114,114,111,119,104,101,97,100,0,97,114,114,111,119,116,97,105,108,0,104,101,97,100,108,97,98,101,108,0,116,97,105,108,108,97,98,101,108,0,108,97,98,101,108,102,111,110,116,115,105,122,101,0,108,97,98,101,108,102,111,110,116,110,97,109,101,0,108,97,98,101,108,102,111,110,116,99,111,108,111,114,0,108,97,98,101,108,100,105,115,116,97,110,99,101,0,108,97,98,101,108,97,110,103,108,101,0,109,105,110,108,101,110,0,100,101,99,111,114,97,116,101,0,97,114,114,111,119,115,105,122,101,0,99,111,110,115,116,114,97,105,110,116,0,116,97,105,108,99,108,105,112,0,104,101,97,100,99,108,105,112,0,105,100,0,108,97,98,101,108,106,117,115,116,0,108,111,99,97,108,0,103,108,111,98,97,108,0,37,108,102,44,37,108,102,37,99,0,37,108,102,37,99,0,114,97,116,105,111,0,97,117,116,111,0,99,111,109,112,114,101,115,115,0,101,120,112,97,110,100,0,102,105,108,108,0,103,100,0,112,115,0,115,118,103,0,99,104,97,114,115,101,116,0,117,116,102,45,56,0,108,97,116,105,110,45,49,0,108,97,116,105,110,49,0,108,49,0,73,83,79,45,56,56,53,57,45,49,0,73,83,79,95,56,56,53,57,45,49,0,73,83,79,56,56,53,57,45,49,0,73,83,79,45,73,82,45,49,48,48,0,98,105,103,45,53,0,98,105,103,53,0,117,116,102,56,0,85,110,115,117,112,112,111,114,116,101,100,32,99,104,97,114,115,101,116,32,34,37,115,34,32,45,32,97,115,115,117,109,105,110,103,32,117,116,102,45,56,10,0,105,110,32,108,97,98,101,108,32,111,102,32,103,114,97,112,104,32,37,115,10,0,105,110,32,108,97,98,101,108,32,111,102,32,110,111,100,101,32,37,115,10,0,105,110,32,108,97,98,101,108,32,111,102,32,101,100,103,101,32,37,115,32,37,115,32,37,115,10,0,107,105,110,100,32,61,61,32,76,84,95,78,79,78,69,0,108,97,98,101,108,115,46,99,0,109,97,107,101,95,108,97,98,101,108,0,92,76,0,92,71,0,92,69,0,92,72,0,92,84,0,38,35,49,51,59,0,38,113,117,111,116,59,0,38,35,49,48,59,0,38,35,49,54,48,59,0,38,97,109,112,59,0,38,103,116,59,0,38,35,51,57,59,0,38,35,52,53,59,0,38,108,116,59,0,37,115,32,37,100,32,110,111,100,101,115,32,37,100,32,101,100,103,101,115,32,109,97,120,105,116,101,114,61,37,100,32,98,97,108,97,110,99,101,61,37,100,10,0,110,101,116,119,111,114,107,32,115,105,109,112,108,101,120,58,32,0,37,100,32,0,37,115,37,100,32,110,111,100,101,115,32,37,100,32,101,100,103,101,115,32,37,100,32,105,116,101,114,32,37,46,50,102,32,115,101,99,10,0,117,112,100,97,116,101,58,32,109,105,115,109,97,116,99,104,101,100,32,108,99,97,32,105,110,32,116,114,101,101,117,112,100,97,116,101,115,10,0,84,114,101,101,95,101,100,103,101,46,115,105,122,101,32,61,61,32,78,95,110,111,100,101,115,32,45,32,49,0,110,115,46,99,0,102,101,97,115,105,98,108,101,95,116,114,101,101,0,33,84,82,69,69,95,69,68,71,69,40,101,41,0,109,101,114,103,101,95,116,114,101,101,115,0,40,114,48,45,62,104,101,97,112,95,105,110,100,101,120,32,62,32,45,49,41,32,124,124,32,40,114,49,45,62,104,101,97,112,95,105,110,100,101,120,32,62,32,45,49,41,0,83,84,115,101,116,85,110,105,111,110,0,114,45,62,104,101,97,112,95,105,110,100,101,120,32,62,61,32,48,0,97,100,100,95,116,114,101,101,95,101,100,103,101,58,32,109,105,115,115,105,110,103,32,116,114,101,101,32,101,100,103,101,10,0,97,100,100,95,116,114,101,101,95,101,100,103,101,58,32,101,109,112,116,121,32,111,117,116,101,100,103,101,32,108,105,115,116,10,0,97,100,100,95,116,114,101,101,95,101,100,103,101,58,32,101,109,112,116,121,32,105,110,101,100,103,101,32,108,105,115,116,10,0,116,114,111,117,98,108,101,32,105,110,32,105,110,105,116,95,114,97,110,107,10,0,9,37,115,32,37,100,10,0,115,101,97,114,99,104,115,105,122,101,0,103,114,97,112,104,32,0,32,0,110,111,100,101,32,0,115,116,111,112,10,0,37,46,53,103,0,112,111,115,0,114,101,99,116,115,0,120,108,112,0,108,112,0,104,101,97,100,95,108,112,0,116,97,105,108,95,108,112,0,108,119,105,100,116,104,0,108,104,101,105,103,104,116,0,98,98,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,0,44,37,46,53,103,0,37,46,53,103,44,37,46,53,103,0,115,97,109,112,108,101,112,111,105,110,116,115,0,37,46,53,103,32,37,46,53,103,0,115,44,37,46,53,103,44,37,46,53,103,32,0,101,44,37,46,53,103,44,37,46,53,103,32,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,44,37,46,53,103,0,37,46,50,102,0,37,46,53,103,44,37,46,53,103,44,37,46,53,103,44,37,46,53,103,32,0,47,112,97,116,104,98,111,120,32,123,10,32,32,32,32,47,88,32,101,120,99,104,32,110,101,103,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,89,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,110,101,103,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,125,32,100,101,102,10,0,47,112,97,116,104,98,111,120,32,123,10,32,32,32,32,47,89,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,88,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,37,46,53,103,32,115,117,98,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,32,125,32,100,101,102,10,47,100,98,103,115,116,97,114,116,32,123,32,103,115,97,118,101,32,37,46,53,103,32,37,46,53,103,32,116,114,97,110,115,108,97,116,101,32,125,32,100,101,102,10,47,97,114,114,111,119,108,101,110,103,116,104,32,49,48,32,100,101,102,10,47,97,114,114,111,119,119,105,100,116,104,32,97,114,114,111,119,108,101,110,103,116,104,32,50,32,100,105,118,32,100,101,102,10,47,97,114,114,111,119,104,101,97,100,32,123,10,32,32,32,32,103,115,97,118,101,10,32,32,32,32,114,111,116,97,116,101,10,32,32,32,32,99,117,114,114,101,110,116,112,111,105,110,116,10,32,32,32,32,110,101,119,112,97,116,104,10,32,32,32,32,109,111,118,101,116,111,10,32,32,32,32,97,114,114,111,119,108,101,110,103,116,104,32,97,114,114,111,119,119,105,100,116,104,32,50,32,100,105,118,32,114,108,105,110,101,116,111,10,32,32,32,32,48,32,97,114,114,111,119,119,105,100,116,104,32,110,101,103,32,114,108,105,110,101,116,111,10,32,32,32,32,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,32,32,32,32,103,114,101,115,116,111,114,101,10,125,32,98,105,110,100,32,100,101,102,10,47,109,97,107,101,97,114,114,111,119,32,123,10,32,32,32,32,99,117,114,114,101,110,116,112,111,105,110,116,32,101,120,99,104,32,112,111,112,32,115,117,98,32,101,120,99,104,32,99,117,114,114,101,110,116,112,111,105,110,116,32,112,111,112,32,115,117,98,32,97,116,97,110,10,32,32,32,32,97,114,114,111,119,104,101,97,100,10,125,32,98,105,110,100,32,100,101,102,10,47,112,111,105,110,116,32,123,32,32,32,32,110,101,119,112,97,116,104,32,32,32,32,50,32,48,32,51,54,48,32,97,114,99,32,102,105,108,108,125,32,100,101,102,47,109,97,107,101,118,101,99,32,123,10,32,32,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,121,32,101,120,99,104,32,100,101,102,10,32,32,32,32,47,120,32,101,120,99,104,32,100,101,102,10,32,32,32,32,110,101,119,112,97,116,104,32,120,32,121,32,109,111,118,101,116,111,10,32,32,32,32,88,32,89,32,108,105,110,101,116,111,32,115,116,114,111,107,101,10,32,32,32,32,88,32,89,32,109,111,118,101,116,111,10,32,32,32,32,120,32,121,32,109,97,107,101,97,114,114,111,119,10,125,32,100,101,102,10,0,108,111,115,116,32,37,115,32,37,115,32,101,100,103,101,10,0,110,111,32,112,111,115,105,116,105,111,110,32,102,111,114,32,101,100,103,101,32,119,105,116,104,32,108,97,98,101,108,32,37,115,0,110,111,32,112,111,115,105,116,105,111,110,32,102,111,114,32,101,100,103,101,32,119,105,116,104,32,116,97,105,108,32,108,97,98,101,108,32,37,115,0,110,111,32,112,111,115,105,116,105,111,110,32,102,111,114,32,101,100,103,101,32,119,105,116,104,32,104,101,97,100,32,108,97,98,101,108,32,37,115,0,110,111,32,112,111,115,105,116,105,111,110,32,102,111,114,32,101,100,103,101,32,119,105,116,104,32,120,108,97,98,101,108,32,37,115,0,102,111,114,99,101,108,97,98,101,108,115,0,37,100,32,111,117,116,32,111,102,32,37,100,32,108,97,98,101,108,115,32,112,111,115,105,116,105,111,110,101,100,46,10,0,37,100,32,111,117,116,32,111,102,32,37,100,32,101,120,116,101,114,105,111,114,32,108,97,98,101,108,115,32,112,111,115,105,116,105,111,110,101,100,46,10,0,37,100,32,111,98,106,115,32,37,100,32,120,108,97,98,101,108,115,32,102,111,114,99,101,61,37,100,32,98,98,61,40,37,46,48,50,102,44,37,46,48,50,102,41,32,40,37,46,48,50,102,44,37,46,48,50,102,41,10,0,111,98,106,101,99,116,115,10,0,32,91,37,100,93,32,40,37,46,48,50,102,44,37,46,48,50,102,41,32,40,37,46,48,50,102,44,37,46,48,50,102,41,32,37,112,32,34,37,115,34,10,0,120,108,97,98,101,108,115,10,0,32,91,37,100,93,32,37,112,32,115,101,116,32,37,100,32,40,37,46,48,50,102,44,37,46,48,50,102,41,32,40,37,46,48,50,102,44,37,46,48,50,102,41,32,37,115,10,0,115,104,97,112,101,102,105,108,101,32,110,111,116,32,115,101,116,32,111,114,32,110,111,116,32,102,111,117,110,100,32,102,111,114,32,101,112,115,102,32,110,111,100,101,32,37,115,10,0,99,111,117,108,100,110,39,116,32,111,112,101,110,32,101,112,115,102,32,102,105,108,101,32,37,115,10,0,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,0,114,101,97,100,0,66,111,117,110,100,105,110,103,66,111,120,32,110,111,116,32,102,111,117,110,100,32,105,110,32,101,112,115,102,32,102,105,108,101,32,37,115,10,0,99,97,110,39,116,32,102,105,110,100,32,108,105,98,114,97,114,121,32,102,105,108,101,32,37,115,10,0,99,97,110,39,116,32,111,112,101,110,32,108,105,98,114,97,114,121,32,102,105,108,101,32,37,115,10,0,69,79,70,0,66,69,71,73,78,0,69,78,68,0,84,82,65,73,76,69,82,0,47,117,115,101,114,95,115,104,97,112,101,95,37,100,32,123,10,0,37,37,66,101,103,105,110,68,111,99,117,109,101,110,116,58,10,0,37,37,69,110,100,68,111,99,117,109,101,110,116,10,0,125,32,98,105,110,100,32,100,101,102,10,0,85,84,70,45,56,32,105,110,112,117,116,32,117,115,101,115,32,110,111,110,45,76,97,116,105,110,49,32,99,104,97,114,97,99,116,101,114,115,32,119,104,105,99,104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100,108,101,100,32,98,121,32,116,104,105,115,32,80,111,115,116,83,99,114,105,112,116,32,100,114,105,118,101,114,10,0,99,97,110,110,111,116,32,114,101,45,97,108,108,111,99,97,116,101,32,112,115,10,0,114,111,117,116,101,115,112,108,105,110,101,115,105,110,105,116,58,32,99,97,110,110,111,116,32,97,108,108,111,99,97,116,101,32,112,115,10,0,114,111,117,116,101,115,112,108,105,110,101,115,58,32,37,100,32,101,100,103,101,115,44,32,37,100,32,98,111,120,101,115,32,37,46,50,102,32,115,101,99,10,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,99,97,110,110,111,116,32,102,105,110,100,32,78,79,82,77,65,76,32,101,100,103,101,10,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,105,108,108,101,103,97,108,32,118,97,108,117,101,115,32,111,102,32,112,114,101,118,32,37,100,32,97,110,100,32,110,101,120,116,32,37,100,44,32,108,105,110,101,32,37,100,10,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,101,100,103,101,32,105,115,32,97,32,108,111,111,112,32,97,116,32,37,115,10,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,80,115,104,111,114,116,101,115,116,112,97,116,104,32,102,97,105,108,101,100,10,0,105,110,32,114,111,117,116,101,115,112,108,105,110,101,115,44,32,80,114,111,117,116,101,115,112,108,105,110,101,32,102,97,105,108,101,100,10,0,85,110,97,98,108,101,32,116,111,32,114,101,99,108,97,105,109,32,98,111,120,32,115,112,97,99,101,32,105,110,32,115,112,108,105,110,101,32,114,111,117,116,105,110,103,32,102,111,114,32,101,100,103,101,32,34,37,115,34,32,45,62,32,34,37,115,34,46,32,83,111,109,101,116,104,105,110,103,32,105,115,32,112,114,111,98,97,98,108,121,32,115,101,114,105,111,117,115,108,121,32,119,114,111,110,103,46,10,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,32,48,32,104,97,115,32,76,76,32,99,111,111,114,100,32,62,32,85,82,32,99,111,111,114,100,10,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,32,37,100,32,104,97,115,32,76,76,32,99,111,111,114,100,32,62,32,85,82,32,99,111,111,114,100,10,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,98,111,120,101,115,32,37,100,32,97,110,100,32,37,100,32,100,111,110,39,116,32,116,111,117,99,104,10,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,115,116,97,114,116,32,112,111,114,116,32,110,111,116,32,105,110,32,102,105,114,115,116,32,98,111,120,10,0,105,110,32,99,104,101,99,107,112,97,116,104,44,32,101,110,100,32,112,111,114,116,32,110,111,116,32,105,110,32,108,97,115,116,32,98,111,120,10,0,37,100,32,98,111,120,101,115,58,10,0,37,100,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,40,37,46,53,103,44,32,37,46,53,103,41,10,0,99,111,110,115,116,114,97,105,110,101,100,0,110,111,116,32,99,111,110,115,116,114,97,105,110,101,100,0,115,116,97,114,116,32,112,111,114,116,58,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,116,97,110,103,101,110,116,32,97,110,103,108,101,58,32,37,46,53,103,44,32,37,115,10,0,101,110,100,32,112,111,114,116,58,32,40,37,46,53,103,44,32,37,46,53,103,41,44,32,116,97,110,103,101,110,116,32,97,110,103,108,101,58,32,37,46,53,103,44,32,37,115,10,0,115,105,100,101,115,32,61,61,32,52,0,115,104,97,112,101,115,46,99,0,114,111,117,110,100,95,99,111,114,110,101,114,115,0,98,97,100,32,108,97,98,101,108,32,102,111,114,109,97,116,32,37,115,10,0,92,78,0,109,97,114,103,105,110,0,37,108,102,44,37,108,102,0,114,101,103,117,108,97,114,0,99,117,115,116,111,109,0,115,104,97,112,101,102,105,108,101,0,60,110,105,108,62,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,115,104,97,112,101,102,105,108,101,61,34,37,115,34,32,102,111,114,32,110,111,100,101,32,34,37,115,34,10,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,105,109,97,103,101,61,34,37,115,34,32,102,111,114,32,110,111,100,101,32,34,37,115,34,10,0,108,97,98,101,108,108,111,99,0,115,104,97,112,101,0,110,111,100,101,32,39,37,115,39,44,32,103,114,97,112,104,32,39,37,115,39,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,108,97,98,101,108,10,0,101,112,115,102,0,117,115,105,110,103,32,37,115,32,102,111,114,32,117,110,107,110,111,119,110,32,115,104,97,112,101,32,37,115,10,0,98,111,120,0,112,111,108,121,103,111,110,0,111,118,97,108,0,99,105,114,99,108,101,0,112,111,105,110,116,0,101,103,103,0,116,114,105,97,110,103,108,101,0,112,108,97,105,110,116,101,120,116,0,112,108,97,105,110,0,100,105,97,109,111,110,100,0,116,114,97,112,101,122,105,117,109,0,112,97,114,97,108,108,101,108,111,103,114,97,109,0,104,111,117,115,101,0,112,101,110,116,97,103,111,110,0,104,101,120,97,103,111,110,0,115,101,112,116,97,103,111,110,0,111,99,116,97,103,111,110,0,110,111,116,101,0,116,97,98,0,102,111,108,100,101,114,0,98,111,120,51,100,0,99,111,109,112,111,110,101,110,116,0,99,121,108,105,110,100,101,114,0,114,101,99,116,0,114,101,99,116,97,110,103,108,101,0,115,113,117,97,114,101,0,100,111,117,98,108,101,99,105,114,99,108,101,0,100,111,117,98,108,101,111,99,116,97,103,111,110,0,116,114,105,112,108,101,111,99,116,97,103,111,110,0,105,110,118,116,114,105,97,110,103,108,101,0,105,110,118,116,114,97,112,101,122,105,117,109,0,105,110,118,104,111,117,115,101,0,117,110,100,101,114,108,105,110,101,0,77,100,105,97,109,111,110,100,0,77,115,113,117,97,114,101,0,77,99,105,114,99,108,101,0,112,114,111,109,111,116,101,114,0,99,100,115,0,116,101,114,109,105,110,97,116,111,114,0,117,116,114,0,105,110,115,117,108,97,116,111,114,0,114,105,98,111,115,105,116,101,0,114,110,97,115,116,97,98,0,112,114,111,116,101,97,115,101,115,105,116,101,0,112,114,111,116,101,105,110,115,116,97,98,0,112,114,105,109,101,114,115,105,116,101,0,114,101,115,116,114,105,99,116,105,111,110,115,105,116,101,0,102,105,118,101,112,111,118,101,114,104,97,110,103,0,116,104,114,101,101,112,111,118,101,114,104,97,110,103,0,110,111,118,101,114,104,97,110,103,0,97,115,115,101,109,98,108,121,0,115,105,103,110,97,116,117,114,101,0,114,112,114,111,109,111,116,101,114,0,108,97,114,114,111,119,0,114,97,114,114,111,119,0,108,112,114,111,109,111,116,101,114,0,114,101,99,111,114,100,0,77,114,101,99,111,114,100,0,115,116,97,114,0,35,56,48,56,48,56,48,0,35,102,99,102,99,102,99,0,35,51,48,51,48,51,48,0,35,101,56,101,56,101,56,0,35,101,48,101,48,101,48,0,35,102,48,102,48,102,48,0,35,49,48,49,48,49,48,0,35,102,56,102,56,102,56,0,105,110,32,110,111,100,101,32,37,115,10,0,114,111,117,110,100,101,100,0,100,105,97,103,111,110,97,108,115,0,114,97,100,105,97,108,0,115,116,114,105,112,101,100,0,119,101,100,103,101,100,0,95,0,110,111,100,101,32,37,115,44,32,112,111,114,116,32,37,115,44,32,117,110,114,101,99,111,103,110,105,122,101,100,32,99,111,109,112,97,115,115,32,112,111,105,110,116,32,39,37,115,39,32,45,32,105,103,110,111,114,101,100,10,0,110,111,100,101,32,37,115,44,32,112,111,114,116,32,37,115,32,117,110,114,101,99,111,103,110,105,122,101,100,10,0,37,46,53,103,32,37,46,53,103,32,116,114,97,110,115,108,97,116,101,32,110,101,119,112,97,116,104,32,117,115,101,114,95,115,104,97,112,101,95,37,100,10,0,105,110,118,105,115,0,0,102,105,108,108,101,100,0,0,115,0,101,0,119,0,115,112,108,105,110,101,115,46,99,0,98,101,103,105,110,112,97,116,104,0,80,45,62,101,110,100,46,116,104,101,116,97,32,60,32,50,32,42,32,77,95,80,73,0,101,110,100,112,97,116,104,0,109,97,107,101,83,101,108,102,69,100,103,101,0,103,101,116,115,112,108,105,110,101,112,111,105,110,116,115,58,32,110,111,32,115,112,108,105,110,101,32,112,111,105,110,116,115,32,97,118,97,105,108,97,98,108,101,32,102,111,114,32,101,100,103,101,32,40,37,115,44,37,115,41,10,0,112,111,108,121,108,105,110,101,77,105,100,112,111,105,110,116,0,115,112,97,110,45,62,102,111,110,116,0,116,101,120,116,115,112,97,110,46,99,0,116,101,120,116,115,112,97,110,95,115,105,122,101,0,102,111,110,116,45,62,110,97,109,101,0,102,111,110,116,110,97,109,101,58,32,34,37,115,34,32,114,101,115,111,108,118,101,100,32,116,111,58,32,37,115,10,0,102,111,110,116,110,97,109,101,58,32,117,110,97,98,108,101,32,116,111,32,114,101,115,111,108,118,101,32,34,37,115,34,10,0,99,111,117,114,0,97,114,105,97,108,0,104,101,108,118,101,116,105,99,97,0,91,105,110,116,101,114,110,97,108,32,116,105,109,101,115,93,0,91,105,110,116,101,114,110,97,108,32,99,111,117,114,105,101,114,93,0,91,105,110,116,101,114,110,97,108,32,97,114,105,97,108,93,0,65,118,97,110,116,71,97,114,100,101,45,66,111,111,107,0,85,82,87,32,71,111,116,104,105,99,32,76,0,98,111,111,107,0,115,97,110,115,45,83,101,114,105,102,0,65,118,97,110,116,71,97,114,100,101,45,66,111,111,107,79,98,108,105,113,117,101,0,111,98,108,105,113,117,101,0,105,116,97,108,105,99,0,65,118,97,110,116,71,97,114,100,101,45,68,101,109,105,0,100,101,109,105,0,65,118,97,110,116,71,97,114,100,101,45,68,101,109,105,79,98,108,105,113,117,101,0,66,111,111,107,109,97,110,45,68,101,109,105,0,85,82,87,32,66,111,111,107,109,97,110,32,76,0,115,101,114,105,102,0,66,111,111,107,109,97,110,45,68,101,109,105,73,116,97,108,105,99,0,66,111,111,107,109,97,110,45,76,105,103,104,116,0,108,105,103,104,116,0,66,111,111,107,109,97,110,45,76,105,103,104,116,73,116,97,108,105,99,0,67,111,117,114,105,101,114,0,109,111,110,111,115,112,97,99,101,0,67,111,117,114,105,101,114,45,66,111,108,100,0,67,111,117,114,105,101,114,45,66,111,108,100,79,98,108,105,113,117,101,0,67,111,117,114,105,101,114,45,79,98,108,105,113,117,101,0,72,101,108,118,101,116,105,99,97,0,72,101,108,118,101,116,105,99,97,45,66,111,108,100,0,72,101,108,118,101,116,105,99],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+81920);allocate([97,45,66,111,108,100,79,98,108,105,113,117,101,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,0,99,111,110,100,101,110,115,101,100,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,66,111,108,100,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,66,111,108,100,79,98,108,105,113,117,101,0,72,101,108,118,101,116,105,99,97,45,78,97,114,114,111,119,45,79,98,108,105,113,117,101,0,72,101,108,118,101,116,105,99,97,45,79,98,108,105,113,117,101,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,66,111,108,100,0,67,101,110,116,117,114,121,32,83,99,104,111,111,108,98,111,111,107,32,76,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,66,111,108,100,73,116,97,108,105,99,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,73,116,97,108,105,99,0,78,101,119,67,101,110,116,117,114,121,83,99,104,108,98,107,45,82,111,109,97,110,0,114,111,109,97,110,0,80,97,108,97,116,105,110,111,45,66,111,108,100,0,80,97,108,97,116,105,110,111,32,76,105,110,111,116,121,112,101,0,80,97,108,97,116,105,110,111,45,66,111,108,100,73,116,97,108,105,99,0,80,97,108,97,116,105,110,111,45,73,116,97,108,105,99,0,80,97,108,97,116,105,110,111,45,82,111,109,97,110,0,83,121,109,98,111,108,0,102,97,110,116,97,115,121,0,84,105,109,101,115,45,66,111,108,100,0,84,105,109,101,115,0,84,105,109,101,115,45,66,111,108,100,73,116,97,108,105,99,0,84,105,109,101,115,45,73,116,97,108,105,99,0,90,97,112,102,67,104,97,110,99,101,114,121,45,77,101,100,105,117,109,73,116,97,108,105,99,0,85,82,87,32,67,104,97,110,99,101,114,121,32,76,0,109,101,100,105,117,109,0,90,97,112,102,68,105,110,103,98,97,116,115,0,68,105,110,103,98,97,116,115,0,110,111,0,116,114,117,101,0,121,101,115,0,117,116,105,108,115,46,99,0,117,32,61,61,32,85,70,95,102,105,110,100,40,117,41,0,85,70,95,115,101,116,110,97,109,101,0,1,102,105,108,101,32,108,111,97,100,105,110,103,32,105,115,32,100,105,115,97,98,108,101,100,32,98,101,99,97,117,115,101,32,116,104,101,32,101,110,118,105,114,111,110,109,101,110,116,32,99,111,110,116,97,105,110,115,32,83,69,82,86,69,82,95,78,65,77,69,61,34,37,115,34,10,97,110,100,32,116,104,101,32,71,86,95,70,73,76,69,95,80,65,84,72,32,118,97,114,105,97,98,108,101,32,105,115,32,117,110,115,101,116,32,111,114,32,101,109,112,116,121,46,10,0,80,97,116,104,32,112,114,111,118,105,100,101,100,32,116,111,32,102,105,108,101,58,32,34,37,115,34,32,104,97,115,32,98,101,101,110,32,105,103,110,111,114,101,100,32,98,101,99,97,117,115,101,32,102,105,108,101,115,32,97,114,101,32,111,110,108,121,32,112,101,114,109,105,116,116,101,100,32,116,111,32,98,101,32,108,111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,100,105,114,101,99,116,111,114,105,101,115,32,105,110,32,34,37,115,34,32,119,104,101,110,32,114,117,110,110,105,110,103,32,105,110,32,97,110,32,104,116,116,112,32,115,101,114,118,101,114,46,10,0,37,115,37,115,37,115,0,47,0,58,0,101,108,108,105,112,115,101,0,84,105,109,101,115,45,82,111,109,97,110,0,99,108,117,115,116,101,114,0,95,95,99,108,117,115,116,101,114,110,111,100,101,115,0,84,119,111,32,99,108,117,115,116,101,114,115,32,110,97,109,101,100,32,37,115,32,45,32,116,104,101,32,115,101,99,111,110,100,32,119,105,108,108,32,98,101,32,105,103,110,111,114,101,100,10,0,109,97,112,78,0,65,69,108,105,103,0,65,97,99,117,116,101,0,65,99,105,114,99,0,65,103,114,97,118,101,0,65,108,112,104,97,0,65,114,105,110,103,0,65,116,105,108,100,101,0,65,117,109,108,0,66,101,116,97,0,67,99,101,100,105,108,0,67,104,105,0,68,97,103,103,101,114,0,68,101,108,116,97,0,69,84,72,0,69,97,99,117,116,101,0,69,99,105,114,99,0,69,103,114,97,118,101,0,69,112,115,105,108,111,110,0,69,116,97,0,69,117,109,108,0,71,97,109,109,97,0,73,97,99,117,116,101,0,73,99,105,114,99,0,73,103,114,97,118,101,0,73,111,116,97,0,73,117,109,108,0,75,97,112,112,97,0,76,97,109,98,100,97,0,77,117,0,78,116,105,108,100,101,0,78,117,0,79,69,108,105,103,0,79,97,99,117,116,101,0,79,99,105,114,99,0,79,103,114,97,118,101,0,79,109,101,103,97,0,79,109,105,99,114,111,110,0,79,115,108,97,115,104,0,79,116,105,108,100,101,0,79,117,109,108,0,80,104,105,0,80,105,0,80,114,105,109,101,0,80,115,105,0,82,104,111,0,83,99,97,114,111,110,0,83,105,103,109,97,0,84,72,79,82,78,0,84,97,117,0,84,104,101,116,97,0,85,97,99,117,116,101,0,85,99,105,114,99,0,85,103,114,97,118,101,0,85,112,115,105,108,111,110,0,85,117,109,108,0,88,105,0,89,97,99,117,116,101,0,89,117,109,108,0,90,101,116,97,0,97,97,99,117,116,101,0,97,99,105,114,99,0,97,99,117,116,101,0,97,101,108,105,103,0,97,103,114,97,118,101,0,97,108,101,102,115,121,109,0,97,108,112,104,97,0,97,109,112,0,97,110,100,0,97,110,103,0,97,114,105,110,103,0,97,115,121,109,112,0,97,116,105,108,100,101,0,97,117,109,108,0,98,100,113,117,111,0,98,101,116,97,0,98,114,118,98,97,114,0,98,117,108,108,0,99,97,112,0,99,99,101,100,105,108,0,99,101,100,105,108,0,99,101,110,116,0,99,104,105,0,99,105,114,99,0,99,108,117,98,115,0,99,111,110,103,0,99,111,112,121,0,99,114,97,114,114,0,99,117,112,0,99,117,114,114,101,110,0,100,65,114,114,0,100,97,103,103,101,114,0,100,97,114,114,0,100,101,103,0,100,101,108,116,97,0,100,105,97,109,115,0,100,105,118,105,100,101,0,101,97,99,117,116,101,0,101,99,105,114,99,0,101,103,114,97,118,101,0,101,109,112,116,121,0,101,109,115,112,0,101,110,115,112,0,101,112,115,105,108,111,110,0,101,113,117,105,118,0,101,116,97,0,101,116,104,0,101,117,109,108,0,101,117,114,111,0,101,120,105,115,116,0,102,110,111,102,0,102,111,114,97,108,108,0,102,114,97,99,49,50,0,102,114,97,99,49,52,0,102,114,97,99,51,52,0,102,114,97,115,108,0,103,97,109,109,97,0,103,101,0,103,116,0,104,65,114,114,0,104,97,114,114,0,104,101,97,114,116,115,0,104,101,108,108,105,112,0,105,97,99,117,116,101,0,105,99,105,114,99,0,105,101,120,99,108,0,105,103,114,97,118,101,0,105,109,97,103,101,0,105,110,102,105,110,0,105,110,116,0,105,111,116,97,0,105,113,117,101,115,116,0,105,115,105,110,0,105,117,109,108,0,107,97,112,112,97,0,108,65,114,114,0,108,97,109,98,100,97,0,108,97,110,103,0,108,97,113,117,111,0,108,97,114,114,0,108,99,101,105,108,0,108,100,113,117,111,0,108,101,0,108,102,108,111,111,114,0,108,111,119,97,115,116,0,108,111,122,0,108,114,109,0,108,115,97,113,117,111,0,108,115,113,117,111,0,108,116,0,109,97,99,114,0,109,100,97,115,104,0,109,105,99,114,111,0,109,105,100,100,111,116,0,109,117,0,110,97,98,108,97,0,110,98,115,112,0,110,100,97,115,104,0,110,101,0,110,105,0,110,111,116,0,110,111,116,105,110,0,110,115,117,98,0,110,116,105,108,100,101,0,110,117,0,111,97,99,117,116,101,0,111,99,105,114,99,0,111,101,108,105,103,0,111,103,114,97,118,101,0,111,108,105,110,101,0,111,109,101,103,97,0,111,109,105,99,114,111,110,0,111,112,108,117,115,0,111,114,0,111,114,100,102,0,111,114,100,109,0,111,115,108,97,115,104,0,111,116,105,108,100,101,0,111,116,105,109,101,115,0,111,117,109,108,0,112,97,114,97,0,112,97,114,116,0,112,101,114,109,105,108,0,112,101,114,112,0,112,104,105,0,112,105,0,112,105,118,0,112,108,117,115,109,110,0,112,111,117,110,100,0,112,114,105,109,101,0,112,114,111,100,0,112,114,111,112,0,112,115,105,0,113,117,111,116,0,114,65,114,114,0,114,97,100,105,99,0,114,97,110,103,0,114,97,113,117,111,0,114,97,114,114,0,114,99,101,105,108,0,114,100,113,117,111,0,114,101,97,108,0,114,101,103,0,114,102,108,111,111,114,0,114,104,111,0,114,108,109,0,114,115,97,113,117,111,0,114,115,113,117,111,0,115,98,113,117,111,0,115,99,97,114,111,110,0,115,100,111,116,0,115,101,99,116,0,115,104,121,0,115,105,103,109,97,0,115,105,103,109,97,102,0,115,105,109,0,115,112,97,100,101,115,0,115,117,98,0,115,117,98,101,0,115,117,109,0,115,117,112,0,115,117,112,49,0,115,117,112,50,0,115,117,112,51,0,115,117,112,101,0,115,122,108,105,103,0,116,97,117,0,116,104,101,114,101,52,0,116,104,101,116,97,0,116,104,101,116,97,115,121,109,0,116,104,105,110,115,112,0,116,104,111,114,110,0,116,105,108,100,101,0,116,105,109,101,115,0,116,114,97,100,101,0,117,65,114,114,0,117,97,99,117,116,101,0,117,97,114,114,0,117,99,105,114,99,0,117,103,114,97,118,101,0,117,109,108,0,117,112,115,105,104,0,117,112,115,105,108,111,110,0,117,117,109,108,0,119,101,105,101,114,112,0,120,105,0,121,97,99,117,116,101,0,121,101,110,0,121,117,109,108,0,122,101,116,97,0,122,119,106,0,122,119,110,106,0,85,84,70,56,32,99,111,100,101,115,32,62,32,52,32,98,121,116,101,115,32,97,114,101,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,115,117,112,112,111,114,116,101,100,32,40,103,114,97,112,104,32,37,115,41,32,45,32,116,114,101,97,116,101,100,32,97,115,32,76,97,116,105,110,45,49,46,32,80,101,114,104,97,112,115,32,34,45,71,99,104,97,114,115,101,116,61,108,97,116,105,110,49,34,32,105,115,32,110,101,101,100,101,100,63,10,0,73,110,118,97,108,105,100,32,37,100,45,98,121,116,101,32,85,84,70,56,32,102,111,117,110,100,32,105,110,32,105,110,112,117,116,32,111,102,32,103,114,97,112,104,32,37,115,32,45,32,116,114,101,97,116,101,100,32,97,115,32,76,97,116,105,110,45,49,46,32,80,101,114,104,97,112,115,32,34,45,71,99,104,97,114,115,101,116,61,108,97,116,105,110,49,34,32,105,115,32,110,101,101,100,101,100,63,10,0,98,122,46,115,105,122,101,0,111,118,101,114,108,97,112,95,98,101,122,105,101,114,0,117,114,118,101,100,0,111,109,112,111,117,110,100,0,97,108,115,101,0,105,110,101,0,111,110,101,0,111,0,114,116,104,111,0,111,108,121,108,105,110,101,0,112,108,105,110,101,0,114,117,101,0,101,115,0,85,110,107,110,111,119,110,32,34,115,112,108,105,110,101,115,34,32,118,97,108,117,101,58,32,34,37,115,34,32,45,32,105,103,110,111,114,101,100,10,0,115,112,108,105,110,101,115,0,111,100,98,0,79,114,116,104,111,103,111,110,97,108,32,101,100,103,101,115,32,100,111,32,110,111,116,32,99,117,114,114,101,110,116,108,121,32,104,97,110,100,108,101,32,101,100,103,101,32,108,97,98,101,108,115,46,32,84,114,121,32,117,115,105,110,103,32,120,108,97,98,101,108,115,46,10,0,111,114,116,104,111,32,37,115,32,37,115,10,0,99,104,97,110,105,0,111,114,116,104,111,46,99,0,99,104,97,110,83,101,97,114,99,104,0,99,112,0,37,37,33,80,83,45,65,100,111,98,101,45,50,46,48,10,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,40,97,116,101,110,100,41,10,47,112,111,105,110,116,32,123,10,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,110,101,119,112,97,116,104,10,32,32,88,32,89,32,51,32,48,32,51,54,48,32,97,114,99,32,102,105,108,108,10,125,32,100,101,102,10,47,99,101,108,108,32,123,10,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,47,121,32,101,120,99,104,32,100,101,102,10,32,32,47,120,32,101,120,99,104,32,100,101,102,10,32,32,110,101,119,112,97,116,104,10,32,32,120,32,121,32,109,111,118,101,116,111,10,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,125,32,100,101,102,10,47,110,111,100,101,32,123,10,32,47,117,32,101,120,99,104,32,100,101,102,10,32,47,114,32,101,120,99,104,32,100,101,102,10,32,47,100,32,101,120,99,104,32,100,101,102,10,32,47,108,32,101,120,99,104,32,100,101,102,10,32,110,101,119,112,97,116,104,32,108,32,100,32,109,111,118,101,116,111,10,32,114,32,100,32,108,105,110,101,116,111,32,114,32,117,32,108,105,110,101,116,111,32,108,32,117,32,108,105,110,101,116,111,10,32,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,125,32,100,101,102,10,10,0,37,100,32,37,100,32,116,114,97,110,115,108,97,116,101,10,0,48,46,56,32,48,46,56,32,48,46,56,32,115,101,116,114,103,98,99,111,108,111,114,10,0,115,104,111,119,112,97,103,101,10,37,37,37,37,84,114,97,105,108,101,114,10,37,37,37,37,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,110,101,119,112,97,116,104,32,37,100,32,37,100,32,109,111,118,101,116,111,10,0,37,100,32,37,100,32,108,105,110,101,116,111,10,0,37,100,32,37,100,32,108,105,110,101,116,111,32,115,116,114,111,107,101,10,0,99,104,97,110,110,101,108,32,37,100,32,40,37,102,44,37,102,41,10,0,32,45,62,10,0,32,32,32,32,32,0,40,40,37,102,44,37,102,41,44,40,37,102,44,37,102,41,41,32,37,115,32,37,115,0,66,95,82,73,71,72,84,0,66,95,68,79,87,78,0,66,95,76,69,70,84,0,66,95,85,80,0,66,95,78,79,68,69,0,115,101,103,0,110,101,120,116,95,115,101,103,0,100,101,99,105,100,101,95,112,111,105,110,116,0,105,110,99,111,109,112,97,114,97,98,108,101,32,115,101,103,109,101,110,116,115,32,33,33,32,45,45,32,65,98,111,114,116,105,110,103,10,0,115,49,45,62,99,111,109,109,95,99,111,111,114,100,61,61,115,50,45,62,99,111,109,109,95,99,111,111,114,100,0,105,115,95,112,97,114,97,108,108,101,108,0,103,114,97,112,104,32,71,32,123,10,0,32,110,111,100,101,91,115,104,97,112,101,61,112,111,105,110,116,93,10,0,32,32,37,100,32,91,112,111,115,61,34,37,100,44,37,100,34,93,10,0,32,32,37,100,32,45,45,32,37,100,91,108,101,110,61,34,37,102,34,93,10,0,125,10,0,99,111,108,111,114,32,37,115,0,37,115,32,105,115,32,110,111,116,32,97,32,107,110,111,119,110,32,99,111,108,111,114,46,10,0,101,114,114,111,114,32,105,110,32,99,111,108,120,108,97,116,101,40,41,10,0,115,111,108,105,100,0,105,110,118,105,115,105,98,108,101,0,98,111,108,100,0,115,101,116,108,105,110,101,119,105,100,116,104,0,102,105,108,108,101,100,0,117,110,102,105,108,108,101,100,0,116,97,112,101,114,101,100,0,103,118,114,101,110,100,101,114,95,115,101,116,95,115,116,121,108,101,58,32,117,110,115,117,112,112,111,114,116,101,100,32,115,116,121,108,101,32,37,115,32,45,32,105,103,110,111,114,105,110,103,10,0,103,118,114,101,110,100,101,114,46,99,0,103,118,114,101,110,100,101,114,95,117,115,101,114,115,104,97,112,101,0,110,97,109,101,0,110,97,109,101,91,48,93,0,119,105,100,116,104,0,104,101,105,103,104,116,0,98,111,116,104,0,108,97,121,111,117,116,0,76,97,121,111,117,116,32,116,121,112,101,58,32,34,37,115,34,32,110,111,116,32,114,101,99,111,103,110,105,122,101,100,46,32,85,115,101,32,111,110,101,32,111,102,58,37,115,10,0,106,111,98,0,103,118,108,111,97,100,105,109,97,103,101,46,99,0,103,118,108,111,97,100,105,109,97,103,101,0,117,115,0,117,115,45,62,110,97,109,101,0,117,115,45,62,110,97,109,101,91,48,93,0,78,111,32,108,111,97,100,105,109,97,103,101,32,112,108,117,103,105,110,32,102,111,114,32,34,37,115,34,10,0,81,0,76,101,102,116,0,75,80,95,76,101,102,116,0,82,105,103,104,116,0,75,80,95,82,105,103,104,116,0,85,112,0,75,80,95,85,112,0,68,111,119,110,0,75,80,95,68,111,119,110,0,112,108,117,115,0,75,80,95,65,100,100,0,109,105,110,117,115,0,75,80,95,83,117,98,116,114,97,99,116,0,70,0,116,111,111,108,116,105,112,0,101,100,103,101,0,116,97,105,108,112,111,114,116,0,104,101,97,100,112,111,114,116,0,107,101,121,0,104,114,101,102,0,85,82,76,0,110,111,100,101,0,100,105,103,114,97,112,104,0,103,114,97,112,104,0,115,117,98,103,114,97,112,104,0,95,76,84,88,95,108,105,98,114,97,114,121,0,116,101,120,116,108,97,121,111,117,116,0,111,98,106,112,45,62,108,98,108,0,120,108,97,98,101,108,115,46,99,0,120,108,97,100,106,117,115,116,0,120,108,105,110,116,101,114,115,101,99,116,105,111,110,115,0,108,112,32,33,61,32,99,108,112,0,103,101,116,105,110,116,114,115,120,105,0,111,98,106,112,49,45,62,115,122,46,120,32,61,61,32,48,32,38,38,32,111,98,106,112,49,45,62,115,122,46,121,32,61,61,32,48,0,108,98,108,101,110,99,108,111,115,105,110,103,0,118,112,0,120,108,104,100,120,117,110,108,111,97,100,0,115,105,122,101,61,61,102,114,101,101,100,0,114,101,99,116,46,98,111,117,110,100,97,114,121,91,50,93,32,60,32,73,78,84,95,77,65,88,0,111,98,106,112,108,112,109,107,115,0,114,101,99,116,46,98,111,117,110,100,97,114,121,91,51,93,32,60,32,73,78,84,95,77,65,88,0,111,117,116,32,111,102,32,109,101,109,111,114,121,10,0,35,37,50,120,37,50,120,37,50,120,37,50,120,0,37,108,102,37,108,102,37,108,102,0,47,97,99,99,101,110,116,51,47,49,0,47,97,99,99,101,110,116,51,47,50,0,47,97,99,99,101,110,116,51,47,51,0,47,97,99,99,101,110,116,52,47,49,0,47,97,99,99,101,110,116,52,47,50,0,47,97,99,99,101,110,116,52,47,51,0,47,97,99,99,101,110,116,52,47,52,0,47,97,99,99,101,110,116,53,47,49,0,47,97,99,99,101,110,116,53,47,50,0,47,97,99,99,101,110,116,53,47,51,0,47,97,99,99,101,110,116,53,47,52,0,47,97,99,99,101,110,116,53,47,53,0,47,97,99,99,101,110,116,54,47,49,0,47,97,99,99,101,110,116,54,47,50,0,47,97,99,99,101,110,116,54,47,51,0,47,97,99,99,101,110,116,54,47,52,0,47,97,99,99,101,110,116,54,47,53,0,47,97,99,99,101,110,116,54,47,54,0,47,97,99,99,101,110,116,55,47,49,0,47,97,99,99,101,110,116,55,47,50,0,47,97,99,99,101,110,116,55,47,51,0,47,97,99,99,101,110,116,55,47,52,0,47,97,99,99,101,110,116,55,47,53,0,47,97,99,99,101,110,116,55,47,54,0,47,97,99,99,101,110,116,55,47,55,0,47,97,99,99,101,110,116,56,47,49,0,47,97,99,99,101,110,116,56,47,50,0,47,97,99,99,101,110,116,56,47,51,0,47,97,99,99,101,110,116,56,47,52,0,47,97,99,99,101,110,116,56,47,53,0,47,97,99,99,101,110,116,56,47,54,0,47,97,99,99,101,110,116,56,47,55,0,47,97,99,99,101,110,116,56,47,56,0,47,98,108,117,101,115,51,47,49,0,47,98,108,117,101,115,51,47,50,0,47,98,108,117,101,115,51,47,51,0,47,98,108,117,101,115,52,47,49,0,47,98,108,117,101,115,52,47,50,0,47,98,108,117,101,115,52,47,51,0,47,98,108,117,101,115,52,47,52,0,47,98,108,117,101,115,53,47,49,0,47,98,108,117,101,115,53,47,50,0,47,98,108,117,101,115,53,47,51,0,47,98,108,117,101,115,53,47,52,0,47,98,108,117,101,115,53,47,53,0,47,98,108,117,101,115,54,47,49,0,47,98,108,117,101,115,54,47,50,0,47,98,108,117,101,115,54,47,51,0,47,98,108,117,101,115,54,47,52,0,47,98,108,117,101,115,54,47,53,0,47,98,108,117,101,115,54,47,54,0,47,98,108,117,101,115,55,47,49,0,47,98,108,117,101,115,55,47,50,0,47,98,108,117,101,115,55,47,51,0,47,98,108,117,101,115,55,47,52,0,47,98,108,117,101,115,55,47,53,0,47,98,108,117,101,115,55,47,54,0,47,98,108,117,101,115,55,47,55,0,47,98,108,117,101,115,56,47,49,0,47,98,108,117,101,115,56,47,50,0,47,98,108,117,101,115,56,47,51,0,47,98,108,117,101,115,56,47,52,0,47,98,108,117,101,115,56,47,53,0,47,98,108,117,101,115,56,47,54,0,47,98,108,117,101,115,56,47,55,0,47,98,108,117,101,115,56,47,56,0,47,98,108,117,101,115,57,47,49,0,47,98,108,117,101,115,57,47,50,0,47,98,108,117,101,115,57,47,51,0,47,98,108,117,101,115,57,47,52,0,47,98,108,117,101,115,57,47,53,0,47,98,108,117,101,115,57,47,54,0,47,98,108,117,101,115,57,47,55,0,47,98,108,117,101,115,57,47,56,0,47,98,108,117,101,115,57,47,57,0,47,98,114,98,103,49,48,47,49,0,47,98,114,98,103,49,48,47,49,48,0,47,98,114,98,103,49,48,47,50,0,47,98,114,98,103,49,48,47,51,0,47,98,114,98,103,49,48,47,52,0,47,98,114,98,103,49,48,47,53,0,47,98,114,98,103,49,48,47,54,0,47,98,114,98,103,49,48,47,55,0,47,98,114,98,103,49,48,47,56,0,47,98,114,98,103,49,48,47,57,0,47,98,114,98,103,49,49,47,49,0,47,98,114,98,103,49,49,47,49,48,0,47,98,114,98,103,49,49,47,49,49,0,47,98,114,98,103,49,49,47,50,0,47,98,114,98,103,49,49,47,51,0,47,98,114,98,103,49,49,47,52,0,47,98,114,98,103,49,49,47,53,0,47,98,114,98,103,49,49,47,54,0,47,98,114,98,103,49,49,47,55,0,47,98,114,98,103,49,49,47,56,0,47,98,114,98,103,49,49,47,57,0,47,98,114,98,103,51,47,49,0,47,98,114,98,103,51,47,50,0,47,98,114,98,103,51,47,51,0,47,98,114,98,103,52,47,49,0,47,98,114,98,103,52,47,50,0,47,98,114,98,103,52,47,51,0,47,98,114,98,103,52,47,52,0,47,98,114,98,103,53,47,49,0,47,98,114,98,103,53,47,50,0,47,98,114,98,103,53,47,51,0,47,98,114,98,103,53,47,52,0,47,98,114,98,103,53,47,53,0,47,98,114,98,103,54,47,49,0,47,98,114,98,103,54,47,50,0,47,98,114,98,103,54,47,51,0,47,98,114,98,103,54,47,52,0,47,98,114,98,103,54,47,53,0,47,98,114,98,103,54,47,54,0,47,98,114,98,103,55,47,49,0,47,98,114,98,103,55,47,50,0,47,98,114,98,103,55,47,51,0,47,98,114,98,103,55,47,52,0,47,98,114,98,103,55,47,53,0,47,98,114,98,103,55,47,54,0,47,98,114,98,103,55,47,55,0,47,98,114,98,103,56,47,49,0,47,98,114,98,103,56,47,50,0,47,98,114,98,103,56,47,51,0,47,98,114,98,103,56,47,52,0,47,98,114,98,103,56,47,53,0,47,98,114,98,103,56,47,54,0,47,98,114,98,103,56,47,55,0,47,98,114,98,103,56,47,56,0,47,98,114,98,103,57,47,49,0,47,98,114,98,103,57,47,50,0,47,98,114,98,103,57,47,51,0,47,98,114,98,103,57,47,52,0,47,98,114,98,103,57,47,53,0,47,98,114,98,103,57,47,54,0,47,98,114,98,103,57,47,55,0,47,98,114,98,103,57,47,56,0,47,98,114,98,103,57,47,57,0,47,98,117,103,110,51,47,49,0,47,98,117,103,110,51,47,50,0,47,98,117,103,110,51,47,51,0,47,98,117,103,110,52,47,49,0,47,98,117,103,110,52,47,50,0,47,98,117,103,110,52,47,51,0,47,98,117,103,110,52,47,52,0,47,98,117,103,110,53,47,49,0,47,98,117,103,110,53,47,50,0,47,98,117,103,110,53,47,51,0,47,98,117,103,110,53,47,52,0,47,98,117,103,110,53,47,53,0,47,98,117,103,110,54,47,49,0,47,98,117,103,110,54,47,50,0,47,98,117,103,110,54,47,51,0,47,98,117,103,110,54,47,52,0,47,98,117,103,110,54,47,53,0,47,98,117,103,110,54,47,54,0,47,98,117,103,110,55,47,49,0,47,98,117,103,110,55,47,50,0,47,98,117,103,110,55,47,51,0,47,98,117,103,110,55,47,52,0,47,98,117,103,110,55,47,53,0,47,98,117,103,110,55,47,54,0,47,98,117,103,110,55,47,55,0,47,98,117,103,110,56,47,49,0,47,98,117,103,110,56,47,50,0,47,98,117,103,110,56,47,51,0,47,98,117,103,110,56,47,52,0,47,98,117,103,110,56,47,53,0,47,98,117,103,110,56,47,54,0,47,98,117,103,110,56,47,55,0,47,98,117,103,110,56,47,56,0,47,98,117,103,110,57,47,49,0,47,98,117,103,110,57,47,50,0,47,98,117,103,110,57,47,51,0,47,98,117,103,110,57,47,52,0,47,98,117,103,110,57,47,53,0,47,98,117,103,110,57,47,54,0,47,98,117,103,110,57,47,55,0,47,98,117,103,110,57,47,56,0,47,98,117,103,110,57,47,57,0,47,98,117,112,117,51,47,49,0,47,98,117,112,117,51,47,50,0,47,98,117,112,117,51,47,51,0,47,98,117,112,117,52,47,49,0,47,98,117,112,117,52,47,50,0,47,98,117,112,117,52,47,51,0,47,98,117,112,117,52,47,52,0,47,98,117,112,117,53,47,49,0,47,98,117,112,117,53,47,50,0,47,98,117,112,117,53,47,51,0,47,98,117,112,117,53,47,52,0,47,98,117,112,117,53,47,53,0,47,98,117,112,117,54,47,49,0,47,98,117,112,117,54,47,50,0,47,98,117,112,117,54,47,51,0,47,98,117,112,117,54,47,52,0,47,98,117,112,117,54,47,53,0,47,98,117,112,117,54,47,54,0,47,98,117,112,117,55,47,49,0,47,98,117,112,117,55,47,50,0,47,98,117,112,117,55,47,51,0,47,98,117,112,117,55,47,52,0,47,98,117,112,117,55,47,53,0,47,98,117,112,117,55,47,54,0,47,98,117,112,117,55,47,55,0,47,98,117,112,117,56,47,49,0,47,98,117,112,117,56,47,50,0,47,98,117,112,117,56,47,51,0,47,98,117,112,117,56,47,52,0,47,98,117,112,117,56,47,53,0,47,98,117,112,117,56,47,54,0,47,98,117,112,117,56,47,55,0,47,98,117,112,117,56,47,56,0,47,98,117,112,117,57,47,49,0,47,98,117,112,117,57,47,50,0,47,98,117,112,117,57,47,51,0,47,98,117,112,117,57,47,52,0,47,98,117,112,117,57,47,53,0,47,98,117,112,117,57,47,54,0,47,98,117,112,117,57,47,55,0,47,98,117,112,117,57,47,56,0,47,98,117,112,117,57,47,57,0,47,100,97,114,107,50,51,47,49,0,47,100,97,114,107,50,51,47,50,0,47,100,97,114,107,50,51,47,51,0,47,100,97,114,107,50,52,47,49,0,47,100,97,114,107,50,52,47,50,0,47,100,97,114,107,50,52,47,51,0,47,100,97,114,107,50,52,47,52,0,47,100,97,114,107,50,53,47,49,0,47,100,97,114,107,50,53,47,50,0,47,100,97,114,107,50,53,47,51,0,47,100,97,114,107,50,53,47,52,0,47,100,97,114,107,50,53,47,53,0,47,100,97,114,107,50,54,47,49,0,47,100,97,114,107,50,54,47,50,0,47,100,97,114,107,50,54,47,51,0,47,100,97,114,107,50,54,47,52,0,47,100,97,114,107,50,54,47,53,0,47,100,97,114,107,50,54,47,54,0,47,100,97,114,107,50,55,47,49,0,47,100,97,114,107,50,55,47,50,0,47,100,97,114,107,50,55,47,51,0,47,100,97,114,107,50,55,47,52,0,47,100,97,114,107,50,55,47,53,0,47,100,97,114,107,50,55,47,54,0,47,100,97,114,107,50,55,47,55,0,47,100,97,114,107,50,56,47,49,0,47,100,97,114,107,50,56,47,50,0,47,100,97,114,107,50,56,47,51,0,47,100,97,114,107,50,56,47,52,0,47,100,97,114,107,50,56,47,53,0,47,100,97,114,107,50,56,47,54,0,47,100,97,114,107,50,56,47,55,0,47,100,97,114,107,50,56,47,56,0,47,103,110,98,117,51,47,49,0,47,103,110,98,117,51,47,50,0,47,103,110,98,117,51,47,51,0,47,103,110,98,117,52,47,49,0,47,103,110,98,117,52,47,50,0,47,103,110,98,117,52,47,51,0,47,103,110,98,117,52,47,52,0,47,103,110,98,117,53,47,49,0,47,103,110,98,117,53,47,50,0,47,103,110,98,117,53,47,51,0,47,103,110,98,117,53,47,52,0,47,103,110,98,117,53,47,53,0,47,103,110,98,117,54,47,49,0,47,103,110,98,117,54,47,50,0,47,103,110,98,117,54,47,51,0,47,103,110,98,117,54,47,52,0,47,103,110,98,117,54,47,53,0,47,103,110,98,117,54,47,54,0,47,103,110,98,117,55,47,49,0,47,103,110,98,117,55,47,50,0,47,103,110,98,117,55,47,51,0,47,103,110,98,117,55,47,52,0,47,103,110,98,117,55,47,53,0,47,103,110,98,117,55,47,54,0,47,103,110,98,117,55,47,55,0,47,103,110,98,117,56,47,49,0,47,103,110,98,117,56,47,50,0,47,103,110,98,117,56,47,51,0,47,103,110,98,117,56,47,52,0,47,103,110,98,117,56,47,53,0,47,103,110,98,117,56,47,54,0,47,103,110,98,117,56,47,55,0,47,103,110,98,117,56,47,56,0,47,103,110,98,117,57,47,49,0,47,103,110,98,117,57,47,50,0,47,103,110,98,117,57,47,51,0,47,103,110,98,117,57,47,52,0,47,103,110,98,117,57,47,53,0,47,103,110,98,117,57,47,54,0,47,103,110,98,117,57,47,55,0,47,103,110,98,117,57,47,56,0,47,103,110,98,117,57,47,57,0,47,103,114,101,101,110,115,51,47,49,0,47,103,114,101,101,110,115,51,47,50,0,47,103,114,101,101,110,115,51,47,51,0,47,103,114,101,101,110,115,52,47,49,0,47,103,114,101,101,110,115,52,47,50,0,47,103,114,101,101,110,115,52,47,51,0,47,103,114,101,101,110,115,52,47,52,0,47,103,114,101,101,110,115,53,47,49,0,47,103,114,101,101,110,115,53,47,50,0,47,103,114,101,101,110,115,53,47,51,0,47,103,114,101,101,110,115,53,47,52,0,47,103,114,101,101,110,115,53,47,53,0,47,103,114,101,101,110,115,54,47,49,0,47,103,114,101,101,110,115,54,47,50,0,47,103,114,101,101,110,115,54,47,51,0,47,103,114,101,101,110,115,54,47,52,0,47,103,114,101,101,110,115,54,47,53,0,47,103,114,101,101,110,115,54,47,54,0,47,103,114,101,101,110,115,55,47,49,0,47,103,114,101,101,110,115,55,47,50,0,47,103,114,101,101,110,115,55,47,51,0,47,103,114,101,101,110,115,55,47,52,0,47,103,114,101,101,110,115,55,47,53,0,47,103,114,101,101,110,115,55,47,54,0,47,103,114,101,101,110,115,55,47,55,0,47,103,114,101,101,110,115,56,47,49,0,47,103,114,101,101,110,115,56,47,50,0,47,103,114,101,101,110,115,56,47,51,0,47,103,114,101,101,110,115,56,47,52,0,47,103,114,101,101,110,115,56,47,53,0,47,103,114,101,101,110,115,56,47,54,0,47,103,114,101,101,110,115,56,47,55,0,47,103,114,101,101,110,115,56,47,56,0,47,103,114,101,101,110,115,57,47,49,0,47,103,114,101,101,110,115,57,47,50,0,47,103,114,101,101,110,115,57,47,51,0,47,103,114,101,101,110,115,57,47,52,0,47,103,114,101,101,110,115,57,47,53,0,47,103,114,101,101,110,115,57,47,54,0,47,103,114,101,101,110,115,57,47,55,0,47,103,114,101,101,110,115,57,47,56,0,47,103,114,101,101,110,115,57,47,57,0,47,103,114,101,121,115,51,47,49,0,47,103,114,101,121,115,51,47,50,0,47,103,114,101,121,115,51,47,51,0,47,103,114,101,121,115,52,47,49,0,47,103,114,101,121,115,52,47,50,0,47,103,114,101,121,115,52,47,51,0,47,103,114,101,121,115,52,47,52,0,47,103,114,101,121,115,53,47,49,0,47,103,114,101,121,115,53,47,50,0,47,103,114,101,121,115,53,47,51,0,47,103,114,101,121,115,53,47,52,0,47,103,114,101,121,115,53,47,53,0,47,103,114,101,121,115,54,47,49,0,47,103,114,101,121,115,54,47,50,0,47,103,114,101,121,115,54,47,51,0,47,103,114,101,121,115,54,47,52,0,47,103,114,101,121,115,54,47,53,0,47,103,114,101,121,115,54,47,54,0,47,103,114,101,121,115,55,47,49,0,47,103,114,101,121,115,55,47,50,0,47,103,114,101,121,115,55,47,51,0,47,103,114,101,121,115,55,47,52,0,47,103,114,101,121,115,55,47,53,0,47,103,114,101,121,115,55,47,54,0,47,103,114,101,121,115,55,47,55,0,47,103,114,101,121,115,56,47,49,0,47,103,114,101,121,115,56,47,50,0,47,103,114,101,121,115,56,47,51,0,47,103,114,101,121,115,56,47,52,0,47,103,114,101,121,115,56,47,53,0,47,103,114,101,121,115,56,47,54,0,47,103,114,101,121,115,56,47,55,0,47,103,114,101,121,115,56,47,56,0,47,103,114,101,121,115,57,47,49,0,47,103,114,101,121,115,57,47,50,0,47,103,114,101,121,115,57,47,51,0,47,103,114,101,121,115,57,47,52,0,47,103,114,101,121,115,57,47,53,0,47,103,114,101,121,115,57,47,54,0,47,103,114,101,121,115,57,47,55,0,47,103,114,101,121,115,57,47,56,0,47,103,114,101,121,115,57,47,57,0,47,111,114,97,110,103,101,115,51,47,49,0,47,111,114,97,110,103,101,115,51,47,50,0,47,111,114,97,110,103,101,115,51,47,51,0,47,111,114,97,110,103,101,115,52,47,49,0,47,111,114,97,110,103,101,115,52,47,50,0,47,111,114,97,110,103,101,115,52,47,51,0,47,111,114,97,110,103,101,115,52,47,52,0,47,111,114,97,110,103,101,115,53,47,49,0,47,111,114,97,110,103,101,115,53,47,50,0,47,111,114,97,110,103,101,115,53,47,51,0,47,111,114,97,110,103,101,115,53,47,52,0,47,111,114,97,110,103,101,115,53,47,53,0,47,111,114,97,110,103,101,115,54,47,49,0,47,111,114,97,110,103,101,115,54,47,50,0,47,111,114,97,110,103,101,115,54,47,51,0,47,111,114,97,110,103,101,115,54,47,52,0,47,111,114,97,110,103,101,115,54,47,53,0,47,111,114,97,110,103,101,115,54,47,54,0,47,111,114,97,110,103,101,115,55,47,49,0,47,111,114,97,110,103,101,115,55,47,50,0,47,111,114,97,110,103,101,115,55,47,51,0,47,111,114,97,110,103,101,115,55,47,52,0,47,111,114,97,110,103,101,115,55,47,53,0,47,111,114,97,110,103,101,115,55,47,54,0,47,111,114,97,110,103,101,115,55,47,55,0,47,111,114,97,110,103,101,115,56,47,49,0,47,111,114,97,110,103,101,115,56,47,50,0,47,111,114,97,110,103,101,115,56,47,51,0,47,111,114,97,110,103,101,115,56,47,52,0,47,111,114,97,110,103,101,115,56,47,53,0,47,111,114,97,110,103,101,115,56,47,54,0,47,111,114,97,110,103,101,115,56,47,55,0,47,111,114,97,110,103,101,115,56,47,56,0,47,111,114,97,110,103,101,115,57,47,49,0,47,111,114,97,110,103,101,115,57,47,50,0,47,111,114,97,110,103,101,115,57,47,51,0,47,111,114,97,110,103,101,115,57,47,52,0,47,111,114,97,110,103,101,115,57,47,53,0,47,111,114,97,110,103,101,115,57,47,54,0,47,111,114,97,110,103,101,115,57,47,55,0,47,111,114,97,110,103,101,115,57,47,56,0,47,111,114,97,110,103,101,115,57,47,57,0,47,111,114,114,100,51,47,49,0,47,111,114,114,100,51,47,50,0,47,111,114,114,100,51,47,51,0,47,111,114,114,100,52,47,49,0,47,111,114,114,100,52,47,50,0,47,111,114,114,100,52,47,51,0,47,111,114,114,100,52,47,52,0,47,111,114,114,100,53,47,49,0,47,111,114,114,100,53,47,50,0,47,111,114,114,100,53,47,51,0,47,111,114,114,100,53,47,52,0,47,111,114,114,100,53,47,53,0,47,111,114,114,100,54,47,49,0,47,111,114,114,100,54,47,50,0,47,111,114,114,100,54,47,51,0,47,111,114,114,100,54,47,52,0,47,111,114,114,100,54,47,53,0,47,111,114,114,100,54,47,54,0,47,111,114,114,100,55,47,49,0,47,111,114,114,100,55,47,50,0,47,111,114,114,100,55,47,51,0,47,111,114,114,100,55,47,52,0,47,111,114,114,100,55,47,53,0,47,111,114,114,100,55,47,54,0,47,111,114,114,100,55,47,55,0,47,111,114,114,100,56,47,49,0,47,111,114,114,100,56,47,50,0,47,111,114,114,100,56,47,51,0,47,111,114,114,100,56,47,52,0,47,111,114,114,100,56,47,53,0,47,111,114,114,100,56,47,54,0,47,111,114,114,100,56,47,55,0,47,111,114,114,100,56,47,56,0,47,111,114,114,100,57,47,49,0,47,111,114,114,100,57,47,50,0,47,111,114,114,100,57,47,51,0,47,111,114,114,100,57,47,52,0,47,111,114,114,100,57,47,53,0,47,111,114,114,100,57,47,54,0,47,111,114,114,100,57,47,55,0,47,111,114,114,100,57,47,56,0,47,111,114,114,100,57,47,57,0,47,112,97,105,114,101,100,49,48,47,49,0,47,112,97,105,114,101,100,49,48,47,49,48,0,47,112,97,105,114,101,100,49,48,47,50,0,47,112,97,105,114,101,100,49,48,47,51,0,47,112,97,105,114,101,100,49,48,47,52,0,47,112,97,105,114,101,100,49,48,47,53,0,47,112,97,105,114,101,100,49,48,47,54,0,47,112,97,105,114,101,100,49,48,47,55,0,47,112,97,105,114,101,100,49,48,47,56,0,47,112,97,105,114,101,100,49,48,47,57,0,47,112,97,105,114,101,100,49,49,47,49,0,47,112,97,105,114,101,100,49,49,47,49,48,0,47,112,97,105,114,101,100,49,49,47,49,49,0,47,112,97,105,114,101,100,49,49,47,50,0,47,112,97,105,114,101,100,49,49,47,51,0,47,112,97,105,114,101,100,49,49,47,52,0,47,112,97,105,114,101,100,49,49,47,53,0,47,112,97,105,114,101,100,49,49,47,54,0,47,112,97,105,114,101,100,49,49,47,55,0,47,112,97,105,114,101,100,49,49,47,56,0,47,112,97,105,114,101,100,49,49,47,57,0,47,112,97,105,114,101,100,49,50,47,49,0,47,112,97,105,114,101,100,49,50,47,49,48,0,47,112,97,105,114,101,100,49,50,47,49,49,0,47,112,97,105,114,101,100,49,50,47,49,50,0,47,112,97,105,114,101,100,49,50,47,50,0,47,112,97,105,114,101,100,49,50,47,51,0,47,112,97,105,114,101,100,49,50,47,52,0,47,112,97,105,114,101,100,49,50,47,53,0,47,112,97,105,114,101,100,49,50,47,54,0,47,112,97,105,114,101,100,49,50,47,55,0,47,112,97,105,114,101,100,49,50,47,56,0,47,112,97,105,114,101,100,49,50,47,57,0,47,112,97,105,114,101,100,51,47,49,0,47,112,97,105,114,101,100,51,47,50,0,47,112,97,105,114,101,100,51,47,51,0,47,112,97,105,114,101,100,52,47,49,0,47,112,97,105,114,101,100,52,47,50,0,47,112,97,105,114,101,100,52,47,51,0,47,112,97,105,114,101,100,52,47,52,0,47,112,97,105,114,101,100,53,47,49,0,47,112,97,105,114,101,100,53,47,50,0,47,112,97,105,114,101,100,53,47,51,0,47,112,97,105,114,101,100,53,47,52,0,47,112,97,105,114,101,100,53,47,53,0,47,112,97,105,114,101,100,54,47,49,0,47,112,97,105,114,101,100,54,47,50,0,47,112,97,105,114,101,100,54,47,51,0,47,112,97,105,114,101,100,54,47,52,0,47,112,97,105,114,101,100,54,47,53,0,47,112,97,105,114,101,100,54,47,54,0,47,112,97,105,114,101,100,55,47,49,0,47,112,97,105,114,101,100,55,47,50,0,47,112,97,105,114,101,100,55,47,51,0,47,112,97,105,114,101,100,55,47,52,0,47,112,97,105,114,101,100,55,47,53,0,47,112,97,105,114,101,100,55,47,54,0,47,112,97,105,114,101,100,55,47,55,0,47,112,97,105,114,101,100,56,47,49,0,47,112,97,105,114,101,100,56,47,50,0,47,112,97,105,114,101,100,56,47,51,0,47,112,97,105,114,101,100,56,47,52,0,47,112,97,105,114,101,100,56,47,53,0,47,112,97,105,114,101,100,56,47,54,0,47,112,97,105,114,101,100,56,47,55,0,47,112,97,105,114,101,100,56,47,56,0,47,112,97,105,114,101,100,57,47,49,0,47,112,97,105,114,101,100,57,47,50,0,47,112,97,105,114,101,100,57,47,51,0,47,112,97,105,114,101,100,57,47,52,0,47,112,97,105,114,101,100,57,47,53,0,47,112,97,105,114,101,100,57,47,54,0,47,112,97,105,114,101,100,57,47,55,0,47,112,97,105,114,101,100,57,47,56,0,47,112,97,105,114,101,100,57,47,57,0,47,112,97,115,116,101,108,49,51,47,49,0,47,112,97,115,116,101,108,49,51,47,50,0,47,112,97,115,116,101,108,49,51,47,51,0,47,112,97,115,116,101,108,49,52,47,49,0,47,112,97,115,116,101,108,49,52,47,50,0,47,112,97,115,116,101,108,49,52,47,51,0,47,112,97,115,116,101,108,49,52,47,52,0,47,112,97,115,116,101,108,49,53,47,49,0,47,112,97,115,116,101,108,49,53,47,50,0,47,112,97,115,116,101,108,49,53,47,51,0,47,112,97,115,116,101,108,49,53,47,52,0,47,112,97,115,116,101,108,49,53,47,53,0,47,112,97,115,116,101,108,49,54,47,49,0,47,112,97,115,116,101,108,49,54,47,50,0,47,112,97,115,116,101,108,49,54,47,51,0,47,112,97,115,116,101,108,49,54,47,52,0,47,112,97,115,116,101,108,49,54,47,53,0,47,112,97,115,116,101,108,49,54,47,54,0,47,112,97,115,116,101,108,49,55,47,49,0,47,112,97,115,116,101,108,49,55,47,50,0,47,112,97,115,116,101,108,49,55,47,51,0,47,112,97,115,116,101,108,49,55,47,52,0,47,112,97,115,116,101,108,49,55,47,53,0,47,112,97,115,116,101,108,49,55,47,54,0,47,112,97,115,116,101,108,49,55,47,55,0,47,112,97,115,116,101,108,49,56,47,49,0,47,112,97,115,116,101,108,49,56,47,50,0,47,112,97,115,116,101,108,49,56,47,51,0,47,112,97,115,116,101,108,49,56,47,52,0,47,112,97,115,116,101,108],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+92160);allocate([49,56,47,53,0,47,112,97,115,116,101,108,49,56,47,54,0,47,112,97,115,116,101,108,49,56,47,55,0,47,112,97,115,116,101,108,49,56,47,56,0,47,112,97,115,116,101,108,49,57,47,49,0,47,112,97,115,116,101,108,49,57,47,50,0,47,112,97,115,116,101,108,49,57,47,51,0,47,112,97,115,116,101,108,49,57,47,52,0,47,112,97,115,116,101,108,49,57,47,53,0,47,112,97,115,116,101,108,49,57,47,54,0,47,112,97,115,116,101,108,49,57,47,55,0,47,112,97,115,116,101,108,49,57,47,56,0,47,112,97,115,116,101,108,49,57,47,57,0,47,112,97,115,116,101,108,50,51,47,49,0,47,112,97,115,116,101,108,50,51,47,50,0,47,112,97,115,116,101,108,50,51,47,51,0,47,112,97,115,116,101,108,50,52,47,49,0,47,112,97,115,116,101,108,50,52,47,50,0,47,112,97,115,116,101,108,50,52,47,51,0,47,112,97,115,116,101,108,50,52,47,52,0,47,112,97,115,116,101,108,50,53,47,49,0,47,112,97,115,116,101,108,50,53,47,50,0,47,112,97,115,116,101,108,50,53,47,51,0,47,112,97,115,116,101,108,50,53,47,52,0,47,112,97,115,116,101,108,50,53,47,53,0,47,112,97,115,116,101,108,50,54,47,49,0,47,112,97,115,116,101,108,50,54,47,50,0,47,112,97,115,116,101,108,50,54,47,51,0,47,112,97,115,116,101,108,50,54,47,52,0,47,112,97,115,116,101,108,50,54,47,53,0,47,112,97,115,116,101,108,50,54,47,54,0,47,112,97,115,116,101,108,50,55,47,49,0,47,112,97,115,116,101,108,50,55,47,50,0,47,112,97,115,116,101,108,50,55,47,51,0,47,112,97,115,116,101,108,50,55,47,52,0,47,112,97,115,116,101,108,50,55,47,53,0,47,112,97,115,116,101,108,50,55,47,54,0,47,112,97,115,116,101,108,50,55,47,55,0,47,112,97,115,116,101,108,50,56,47,49,0,47,112,97,115,116,101,108,50,56,47,50,0,47,112,97,115,116,101,108,50,56,47,51,0,47,112,97,115,116,101,108,50,56,47,52,0,47,112,97,115,116,101,108,50,56,47,53,0,47,112,97,115,116,101,108,50,56,47,54,0,47,112,97,115,116,101,108,50,56,47,55,0,47,112,97,115,116,101,108,50,56,47,56,0,47,112,105,121,103,49,48,47,49,0,47,112,105,121,103,49,48,47,49,48,0,47,112,105,121,103,49,48,47,50,0,47,112,105,121,103,49,48,47,51,0,47,112,105,121,103,49,48,47,52,0,47,112,105,121,103,49,48,47,53,0,47,112,105,121,103,49,48,47,54,0,47,112,105,121,103,49,48,47,55,0,47,112,105,121,103,49,48,47,56,0,47,112,105,121,103,49,48,47,57,0,47,112,105,121,103,49,49,47,49,0,47,112,105,121,103,49,49,47,49,48,0,47,112,105,121,103,49,49,47,49,49,0,47,112,105,121,103,49,49,47,50,0,47,112,105,121,103,49,49,47,51,0,47,112,105,121,103,49,49,47,52,0,47,112,105,121,103,49,49,47,53,0,47,112,105,121,103,49,49,47,54,0,47,112,105,121,103,49,49,47,55,0,47,112,105,121,103,49,49,47,56,0,47,112,105,121,103,49,49,47,57,0,47,112,105,121,103,51,47,49,0,47,112,105,121,103,51,47,50,0,47,112,105,121,103,51,47,51,0,47,112,105,121,103,52,47,49,0,47,112,105,121,103,52,47,50,0,47,112,105,121,103,52,47,51,0,47,112,105,121,103,52,47,52,0,47,112,105,121,103,53,47,49,0,47,112,105,121,103,53,47,50,0,47,112,105,121,103,53,47,51,0,47,112,105,121,103,53,47,52,0,47,112,105,121,103,53,47,53,0,47,112,105,121,103,54,47,49,0,47,112,105,121,103,54,47,50,0,47,112,105,121,103,54,47,51,0,47,112,105,121,103,54,47,52,0,47,112,105,121,103,54,47,53,0,47,112,105,121,103,54,47,54,0,47,112,105,121,103,55,47,49,0,47,112,105,121,103,55,47,50,0,47,112,105,121,103,55,47,51,0,47,112,105,121,103,55,47,52,0,47,112,105,121,103,55,47,53,0,47,112,105,121,103,55,47,54,0,47,112,105,121,103,55,47,55,0,47,112,105,121,103,56,47,49,0,47,112,105,121,103,56,47,50,0,47,112,105,121,103,56,47,51,0,47,112,105,121,103,56,47,52,0,47,112,105,121,103,56,47,53,0,47,112,105,121,103,56,47,54,0,47,112,105,121,103,56,47,55,0,47,112,105,121,103,56,47,56,0,47,112,105,121,103,57,47,49,0,47,112,105,121,103,57,47,50,0,47,112,105,121,103,57,47,51,0,47,112,105,121,103,57,47,52,0,47,112,105,121,103,57,47,53,0,47,112,105,121,103,57,47,54,0,47,112,105,121,103,57,47,55,0,47,112,105,121,103,57,47,56,0,47,112,105,121,103,57,47,57,0,47,112,114,103,110,49,48,47,49,0,47,112,114,103,110,49,48,47,49,48,0,47,112,114,103,110,49,48,47,50,0,47,112,114,103,110,49,48,47,51,0,47,112,114,103,110,49,48,47,52,0,47,112,114,103,110,49,48,47,53,0,47,112,114,103,110,49,48,47,54,0,47,112,114,103,110,49,48,47,55,0,47,112,114,103,110,49,48,47,56,0,47,112,114,103,110,49,48,47,57,0,47,112,114,103,110,49,49,47,49,0,47,112,114,103,110,49,49,47,49,48,0,47,112,114,103,110,49,49,47,49,49,0,47,112,114,103,110,49,49,47,50,0,47,112,114,103,110,49,49,47,51,0,47,112,114,103,110,49,49,47,52,0,47,112,114,103,110,49,49,47,53,0,47,112,114,103,110,49,49,47,54,0,47,112,114,103,110,49,49,47,55,0,47,112,114,103,110,49,49,47,56,0,47,112,114,103,110,49,49,47,57,0,47,112,114,103,110,51,47,49,0,47,112,114,103,110,51,47,50,0,47,112,114,103,110,51,47,51,0,47,112,114,103,110,52,47,49,0,47,112,114,103,110,52,47,50,0,47,112,114,103,110,52,47,51,0,47,112,114,103,110,52,47,52,0,47,112,114,103,110,53,47,49,0,47,112,114,103,110,53,47,50,0,47,112,114,103,110,53,47,51,0,47,112,114,103,110,53,47,52,0,47,112,114,103,110,53,47,53,0,47,112,114,103,110,54,47,49,0,47,112,114,103,110,54,47,50,0,47,112,114,103,110,54,47,51,0,47,112,114,103,110,54,47,52,0,47,112,114,103,110,54,47,53,0,47,112,114,103,110,54,47,54,0,47,112,114,103,110,55,47,49,0,47,112,114,103,110,55,47,50,0,47,112,114,103,110,55,47,51,0,47,112,114,103,110,55,47,52,0,47,112,114,103,110,55,47,53,0,47,112,114,103,110,55,47,54,0,47,112,114,103,110,55,47,55,0,47,112,114,103,110,56,47,49,0,47,112,114,103,110,56,47,50,0,47,112,114,103,110,56,47,51,0,47,112,114,103,110,56,47,52,0,47,112,114,103,110,56,47,53,0,47,112,114,103,110,56,47,54,0,47,112,114,103,110,56,47,55,0,47,112,114,103,110,56,47,56,0,47,112,114,103,110,57,47,49,0,47,112,114,103,110,57,47,50,0,47,112,114,103,110,57,47,51,0,47,112,114,103,110,57,47,52,0,47,112,114,103,110,57,47,53,0,47,112,114,103,110,57,47,54,0,47,112,114,103,110,57,47,55,0,47,112,114,103,110,57,47,56,0,47,112,114,103,110,57,47,57,0,47,112,117,98,117,51,47,49,0,47,112,117,98,117,51,47,50,0,47,112,117,98,117,51,47,51,0,47,112,117,98,117,52,47,49,0,47,112,117,98,117,52,47,50,0,47,112,117,98,117,52,47,51,0,47,112,117,98,117,52,47,52,0,47,112,117,98,117,53,47,49,0,47,112,117,98,117,53,47,50,0,47,112,117,98,117,53,47,51,0,47,112,117,98,117,53,47,52,0,47,112,117,98,117,53,47,53,0,47,112,117,98,117,54,47,49,0,47,112,117,98,117,54,47,50,0,47,112,117,98,117,54,47,51,0,47,112,117,98,117,54,47,52,0,47,112,117,98,117,54,47,53,0,47,112,117,98,117,54,47,54,0,47,112,117,98,117,55,47,49,0,47,112,117,98,117,55,47,50,0,47,112,117,98,117,55,47,51,0,47,112,117,98,117,55,47,52,0,47,112,117,98,117,55,47,53,0,47,112,117,98,117,55,47,54,0,47,112,117,98,117,55,47,55,0,47,112,117,98,117,56,47,49,0,47,112,117,98,117,56,47,50,0,47,112,117,98,117,56,47,51,0,47,112,117,98,117,56,47,52,0,47,112,117,98,117,56,47,53,0,47,112,117,98,117,56,47,54,0,47,112,117,98,117,56,47,55,0,47,112,117,98,117,56,47,56,0,47,112,117,98,117,57,47,49,0,47,112,117,98,117,57,47,50,0,47,112,117,98,117,57,47,51,0,47,112,117,98,117,57,47,52,0,47,112,117,98,117,57,47,53,0,47,112,117,98,117,57,47,54,0,47,112,117,98,117,57,47,55,0,47,112,117,98,117,57,47,56,0,47,112,117,98,117,57,47,57,0,47,112,117,98,117,103,110,51,47,49,0,47,112,117,98,117,103,110,51,47,50,0,47,112,117,98,117,103,110,51,47,51,0,47,112,117,98,117,103,110,52,47,49,0,47,112,117,98,117,103,110,52,47,50,0,47,112,117,98,117,103,110,52,47,51,0,47,112,117,98,117,103,110,52,47,52,0,47,112,117,98,117,103,110,53,47,49,0,47,112,117,98,117,103,110,53,47,50,0,47,112,117,98,117,103,110,53,47,51,0,47,112,117,98,117,103,110,53,47,52,0,47,112,117,98,117,103,110,53,47,53,0,47,112,117,98,117,103,110,54,47,49,0,47,112,117,98,117,103,110,54,47,50,0,47,112,117,98,117,103,110,54,47,51,0,47,112,117,98,117,103,110,54,47,52,0,47,112,117,98,117,103,110,54,47,53,0,47,112,117,98,117,103,110,54,47,54,0,47,112,117,98,117,103,110,55,47,49,0,47,112,117,98,117,103,110,55,47,50,0,47,112,117,98,117,103,110,55,47,51,0,47,112,117,98,117,103,110,55,47,52,0,47,112,117,98,117,103,110,55,47,53,0,47,112,117,98,117,103,110,55,47,54,0,47,112,117,98,117,103,110,55,47,55,0,47,112,117,98,117,103,110,56,47,49,0,47,112,117,98,117,103,110,56,47,50,0,47,112,117,98,117,103,110,56,47,51,0,47,112,117,98,117,103,110,56,47,52,0,47,112,117,98,117,103,110,56,47,53,0,47,112,117,98,117,103,110,56,47,54,0,47,112,117,98,117,103,110,56,47,55,0,47,112,117,98,117,103,110,56,47,56,0,47,112,117,98,117,103,110,57,47,49,0,47,112,117,98,117,103,110,57,47,50,0,47,112,117,98,117,103,110,57,47,51,0,47,112,117,98,117,103,110,57,47,52,0,47,112,117,98,117,103,110,57,47,53,0,47,112,117,98,117,103,110,57,47,54,0,47,112,117,98,117,103,110,57,47,55,0,47,112,117,98,117,103,110,57,47,56,0,47,112,117,98,117,103,110,57,47,57,0,47,112,117,111,114,49,48,47,49,0,47,112,117,111,114,49,48,47,49,48,0,47,112,117,111,114,49,48,47,50,0,47,112,117,111,114,49,48,47,51,0,47,112,117,111,114,49,48,47,52,0,47,112,117,111,114,49,48,47,53,0,47,112,117,111,114,49,48,47,54,0,47,112,117,111,114,49,48,47,55,0,47,112,117,111,114,49,48,47,56,0,47,112,117,111,114,49,48,47,57,0,47,112,117,111,114,49,49,47,49,0,47,112,117,111,114,49,49,47,49,48,0,47,112,117,111,114,49,49,47,49,49,0,47,112,117,111,114,49,49,47,50,0,47,112,117,111,114,49,49,47,51,0,47,112,117,111,114,49,49,47,52,0,47,112,117,111,114,49,49,47,53,0,47,112,117,111,114,49,49,47,54,0,47,112,117,111,114,49,49,47,55,0,47,112,117,111,114,49,49,47,56,0,47,112,117,111,114,49,49,47,57,0,47,112,117,111,114,51,47,49,0,47,112,117,111,114,51,47,50,0,47,112,117,111,114,51,47,51,0,47,112,117,111,114,52,47,49,0,47,112,117,111,114,52,47,50,0,47,112,117,111,114,52,47,51,0,47,112,117,111,114,52,47,52,0,47,112,117,111,114,53,47,49,0,47,112,117,111,114,53,47,50,0,47,112,117,111,114,53,47,51,0,47,112,117,111,114,53,47,52,0,47,112,117,111,114,53,47,53,0,47,112,117,111,114,54,47,49,0,47,112,117,111,114,54,47,50,0,47,112,117,111,114,54,47,51,0,47,112,117,111,114,54,47,52,0,47,112,117,111,114,54,47,53,0,47,112,117,111,114,54,47,54,0,47,112,117,111,114,55,47,49,0,47,112,117,111,114,55,47,50,0,47,112,117,111,114,55,47,51,0,47,112,117,111,114,55,47,52,0,47,112,117,111,114,55,47,53,0,47,112,117,111,114,55,47,54,0,47,112,117,111,114,55,47,55,0,47,112,117,111,114,56,47,49,0,47,112,117,111,114,56,47,50,0,47,112,117,111,114,56,47,51,0,47,112,117,111,114,56,47,52,0,47,112,117,111,114,56,47,53,0,47,112,117,111,114,56,47,54,0,47,112,117,111,114,56,47,55,0,47,112,117,111,114,56,47,56,0,47,112,117,111,114,57,47,49,0,47,112,117,111,114,57,47,50,0,47,112,117,111,114,57,47,51,0,47,112,117,111,114,57,47,52,0,47,112,117,111,114,57,47,53,0,47,112,117,111,114,57,47,54,0,47,112,117,111,114,57,47,55,0,47,112,117,111,114,57,47,56,0,47,112,117,111,114,57,47,57,0,47,112,117,114,100,51,47,49,0,47,112,117,114,100,51,47,50,0,47,112,117,114,100,51,47,51,0,47,112,117,114,100,52,47,49,0,47,112,117,114,100,52,47,50,0,47,112,117,114,100,52,47,51,0,47,112,117,114,100,52,47,52,0,47,112,117,114,100,53,47,49,0,47,112,117,114,100,53,47,50,0,47,112,117,114,100,53,47,51,0,47,112,117,114,100,53,47,52,0,47,112,117,114,100,53,47,53,0,47,112,117,114,100,54,47,49,0,47,112,117,114,100,54,47,50,0,47,112,117,114,100,54,47,51,0,47,112,117,114,100,54,47,52,0,47,112,117,114,100,54,47,53,0,47,112,117,114,100,54,47,54,0,47,112,117,114,100,55,47,49,0,47,112,117,114,100,55,47,50,0,47,112,117,114,100,55,47,51,0,47,112,117,114,100,55,47,52,0,47,112,117,114,100,55,47,53,0,47,112,117,114,100,55,47,54,0,47,112,117,114,100,55,47,55,0,47,112,117,114,100,56,47,49,0,47,112,117,114,100,56,47,50,0,47,112,117,114,100,56,47,51,0,47,112,117,114,100,56,47,52,0,47,112,117,114,100,56,47,53,0,47,112,117,114,100,56,47,54,0,47,112,117,114,100,56,47,55,0,47,112,117,114,100,56,47,56,0,47,112,117,114,100,57,47,49,0,47,112,117,114,100,57,47,50,0,47,112,117,114,100,57,47,51,0,47,112,117,114,100,57,47,52,0,47,112,117,114,100,57,47,53,0,47,112,117,114,100,57,47,54,0,47,112,117,114,100,57,47,55,0,47,112,117,114,100,57,47,56,0,47,112,117,114,100,57,47,57,0,47,112,117,114,112,108,101,115,51,47,49,0,47,112,117,114,112,108,101,115,51,47,50,0,47,112,117,114,112,108,101,115,51,47,51,0,47,112,117,114,112,108,101,115,52,47,49,0,47,112,117,114,112,108,101,115,52,47,50,0,47,112,117,114,112,108,101,115,52,47,51,0,47,112,117,114,112,108,101,115,52,47,52,0,47,112,117,114,112,108,101,115,53,47,49,0,47,112,117,114,112,108,101,115,53,47,50,0,47,112,117,114,112,108,101,115,53,47,51,0,47,112,117,114,112,108,101,115,53,47,52,0,47,112,117,114,112,108,101,115,53,47,53,0,47,112,117,114,112,108,101,115,54,47,49,0,47,112,117,114,112,108,101,115,54,47,50,0,47,112,117,114,112,108,101,115,54,47,51,0,47,112,117,114,112,108,101,115,54,47,52,0,47,112,117,114,112,108,101,115,54,47,53,0,47,112,117,114,112,108,101,115,54,47,54,0,47,112,117,114,112,108,101,115,55,47,49,0,47,112,117,114,112,108,101,115,55,47,50,0,47,112,117,114,112,108,101,115,55,47,51,0,47,112,117,114,112,108,101,115,55,47,52,0,47,112,117,114,112,108,101,115,55,47,53,0,47,112,117,114,112,108,101,115,55,47,54,0,47,112,117,114,112,108,101,115,55,47,55,0,47,112,117,114,112,108,101,115,56,47,49,0,47,112,117,114,112,108,101,115,56,47,50,0,47,112,117,114,112,108,101,115,56,47,51,0,47,112,117,114,112,108,101,115,56,47,52,0,47,112,117,114,112,108,101,115,56,47,53,0,47,112,117,114,112,108,101,115,56,47,54,0,47,112,117,114,112,108,101,115,56,47,55,0,47,112,117,114,112,108,101,115,56,47,56,0,47,112,117,114,112,108,101,115,57,47,49,0,47,112,117,114,112,108,101,115,57,47,50,0,47,112,117,114,112,108,101,115,57,47,51,0,47,112,117,114,112,108,101,115,57,47,52,0,47,112,117,114,112,108,101,115,57,47,53,0,47,112,117,114,112,108,101,115,57,47,54,0,47,112,117,114,112,108,101,115,57,47,55,0,47,112,117,114,112,108,101,115,57,47,56,0,47,112,117,114,112,108,101,115,57,47,57,0,47,114,100,98,117,49,48,47,49,0,47,114,100,98,117,49,48,47,49,48,0,47,114,100,98,117,49,48,47,50,0,47,114,100,98,117,49,48,47,51,0,47,114,100,98,117,49,48,47,52,0,47,114,100,98,117,49,48,47,53,0,47,114,100,98,117,49,48,47,54,0,47,114,100,98,117,49,48,47,55,0,47,114,100,98,117,49,48,47,56,0,47,114,100,98,117,49,48,47,57,0,47,114,100,98,117,49,49,47,49,0,47,114,100,98,117,49,49,47,49,48,0,47,114,100,98,117,49,49,47,49,49,0,47,114,100,98,117,49,49,47,50,0,47,114,100,98,117,49,49,47,51,0,47,114,100,98,117,49,49,47,52,0,47,114,100,98,117,49,49,47,53,0,47,114,100,98,117,49,49,47,54,0,47,114,100,98,117,49,49,47,55,0,47,114,100,98,117,49,49,47,56,0,47,114,100,98,117,49,49,47,57,0,47,114,100,98,117,51,47,49,0,47,114,100,98,117,51,47,50,0,47,114,100,98,117,51,47,51,0,47,114,100,98,117,52,47,49,0,47,114,100,98,117,52,47,50,0,47,114,100,98,117,52,47,51,0,47,114,100,98,117,52,47,52,0,47,114,100,98,117,53,47,49,0,47,114,100,98,117,53,47,50,0,47,114,100,98,117,53,47,51,0,47,114,100,98,117,53,47,52,0,47,114,100,98,117,53,47,53,0,47,114,100,98,117,54,47,49,0,47,114,100,98,117,54,47,50,0,47,114,100,98,117,54,47,51,0,47,114,100,98,117,54,47,52,0,47,114,100,98,117,54,47,53,0,47,114,100,98,117,54,47,54,0,47,114,100,98,117,55,47,49,0,47,114,100,98,117,55,47,50,0,47,114,100,98,117,55,47,51,0,47,114,100,98,117,55,47,52,0,47,114,100,98,117,55,47,53,0,47,114,100,98,117,55,47,54,0,47,114,100,98,117,55,47,55,0,47,114,100,98,117,56,47,49,0,47,114,100,98,117,56,47,50,0,47,114,100,98,117,56,47,51,0,47,114,100,98,117,56,47,52,0,47,114,100,98,117,56,47,53,0,47,114,100,98,117,56,47,54,0,47,114,100,98,117,56,47,55,0,47,114,100,98,117,56,47,56,0,47,114,100,98,117,57,47,49,0,47,114,100,98,117,57,47,50,0,47,114,100,98,117,57,47,51,0,47,114,100,98,117,57,47,52,0,47,114,100,98,117,57,47,53,0,47,114,100,98,117,57,47,54,0,47,114,100,98,117,57,47,55,0,47,114,100,98,117,57,47,56,0,47,114,100,98,117,57,47,57,0,47,114,100,103,121,49,48,47,49,0,47,114,100,103,121,49,48,47,49,48,0,47,114,100,103,121,49,48,47,50,0,47,114,100,103,121,49,48,47,51,0,47,114,100,103,121,49,48,47,52,0,47,114,100,103,121,49,48,47,53,0,47,114,100,103,121,49,48,47,54,0,47,114,100,103,121,49,48,47,55,0,47,114,100,103,121,49,48,47,56,0,47,114,100,103,121,49,48,47,57,0,47,114,100,103,121,49,49,47,49,0,47,114,100,103,121,49,49,47,49,48,0,47,114,100,103,121,49,49,47,49,49,0,47,114,100,103,121,49,49,47,50,0,47,114,100,103,121,49,49,47,51,0,47,114,100,103,121,49,49,47,52,0,47,114,100,103,121,49,49,47,53,0,47,114,100,103,121,49,49,47,54,0,47,114,100,103,121,49,49,47,55,0,47,114,100,103,121,49,49,47,56,0,47,114,100,103,121,49,49,47,57,0,47,114,100,103,121,51,47,49,0,47,114,100,103,121,51,47,50,0,47,114,100,103,121,51,47,51,0,47,114,100,103,121,52,47,49,0,47,114,100,103,121,52,47,50,0,47,114,100,103,121,52,47,51,0,47,114,100,103,121,52,47,52,0,47,114,100,103,121,53,47,49,0,47,114,100,103,121,53,47,50,0,47,114,100,103,121,53,47,51,0,47,114,100,103,121,53,47,52,0,47,114,100,103,121,53,47,53,0,47,114,100,103,121,54,47,49,0,47,114,100,103,121,54,47,50,0,47,114,100,103,121,54,47,51,0,47,114,100,103,121,54,47,52,0,47,114,100,103,121,54,47,53,0,47,114,100,103,121,54,47,54,0,47,114,100,103,121,55,47,49,0,47,114,100,103,121,55,47,50,0,47,114,100,103,121,55,47,51,0,47,114,100,103,121,55,47,52,0,47,114,100,103,121,55,47,53,0,47,114,100,103,121,55,47,54,0,47,114,100,103,121,55,47,55,0,47,114,100,103,121,56,47,49,0,47,114,100,103,121,56,47,50,0,47,114,100,103,121,56,47,51,0,47,114,100,103,121,56,47,52,0,47,114,100,103,121,56,47,53,0,47,114,100,103,121,56,47,54,0,47,114,100,103,121,56,47,55,0,47,114,100,103,121,56,47,56,0,47,114,100,103,121,57,47,49,0,47,114,100,103,121,57,47,50,0,47,114,100,103,121,57,47,51,0,47,114,100,103,121,57,47,52,0,47,114,100,103,121,57,47,53,0,47,114,100,103,121,57,47,54,0,47,114,100,103,121,57,47,55,0,47,114,100,103,121,57,47,56,0,47,114,100,103,121,57,47,57,0,47,114,100,112,117,51,47,49,0,47,114,100,112,117,51,47,50,0,47,114,100,112,117,51,47,51,0,47,114,100,112,117,52,47,49,0,47,114,100,112,117,52,47,50,0,47,114,100,112,117,52,47,51,0,47,114,100,112,117,52,47,52,0,47,114,100,112,117,53,47,49,0,47,114,100,112,117,53,47,50,0,47,114,100,112,117,53,47,51,0,47,114,100,112,117,53,47,52,0,47,114,100,112,117,53,47,53,0,47,114,100,112,117,54,47,49,0,47,114,100,112,117,54,47,50,0,47,114,100,112,117,54,47,51,0,47,114,100,112,117,54,47,52,0,47,114,100,112,117,54,47,53,0,47,114,100,112,117,54,47,54,0,47,114,100,112,117,55,47,49,0,47,114,100,112,117,55,47,50,0,47,114,100,112,117,55,47,51,0,47,114,100,112,117,55,47,52,0,47,114,100,112,117,55,47,53,0,47,114,100,112,117,55,47,54,0,47,114,100,112,117,55,47,55,0,47,114,100,112,117,56,47,49,0,47,114,100,112,117,56,47,50,0,47,114,100,112,117,56,47,51,0,47,114,100,112,117,56,47,52,0,47,114,100,112,117,56,47,53,0,47,114,100,112,117,56,47,54,0,47,114,100,112,117,56,47,55,0,47,114,100,112,117,56,47,56,0,47,114,100,112,117,57,47,49,0,47,114,100,112,117,57,47,50,0,47,114,100,112,117,57,47,51,0,47,114,100,112,117,57,47,52,0,47,114,100,112,117,57,47,53,0,47,114,100,112,117,57,47,54,0,47,114,100,112,117,57,47,55,0,47,114,100,112,117,57,47,56,0,47,114,100,112,117,57,47,57,0,47,114,100,121,108,98,117,49,48,47,49,0,47,114,100,121,108,98,117,49,48,47,49,48,0,47,114,100,121,108,98,117,49,48,47,50,0,47,114,100,121,108,98,117,49,48,47,51,0,47,114,100,121,108,98,117,49,48,47,52,0,47,114,100,121,108,98,117,49,48,47,53,0,47,114,100,121,108,98,117,49,48,47,54,0,47,114,100,121,108,98,117,49,48,47,55,0,47,114,100,121,108,98,117,49,48,47,56,0,47,114,100,121,108,98,117,49,48,47,57,0,47,114,100,121,108,98,117,49,49,47,49,0,47,114,100,121,108,98,117,49,49,47,49,48,0,47,114,100,121,108,98,117,49,49,47,49,49,0,47,114,100,121,108,98,117,49,49,47,50,0,47,114,100,121,108,98,117,49,49,47,51,0,47,114,100,121,108,98,117,49,49,47,52,0,47,114,100,121,108,98,117,49,49,47,53,0,47,114,100,121,108,98,117,49,49,47,54,0,47,114,100,121,108,98,117,49,49,47,55,0,47,114,100,121,108,98,117,49,49,47,56,0,47,114,100,121,108,98,117,49,49,47,57,0,47,114,100,121,108,98,117,51,47,49,0,47,114,100,121,108,98,117,51,47,50,0,47,114,100,121,108,98,117,51,47,51,0,47,114,100,121,108,98,117,52,47,49,0,47,114,100,121,108,98,117,52,47,50,0,47,114,100,121,108,98,117,52,47,51,0,47,114,100,121,108,98,117,52,47,52,0,47,114,100,121,108,98,117,53,47,49,0,47,114,100,121,108,98,117,53,47,50,0,47,114,100,121,108,98,117,53,47,51,0,47,114,100,121,108,98,117,53,47,52,0,47,114,100,121,108,98,117,53,47,53,0,47,114,100,121,108,98,117,54,47,49,0,47,114,100,121,108,98,117,54,47,50,0,47,114,100,121,108,98,117,54,47,51,0,47,114,100,121,108,98,117,54,47,52,0,47,114,100,121,108,98,117,54,47,53,0,47,114,100,121,108,98,117,54,47,54,0,47,114,100,121,108,98,117,55,47,49,0,47,114,100,121,108,98,117,55,47,50,0,47,114,100,121,108,98,117,55,47,51,0,47,114,100,121,108,98,117,55,47,52,0,47,114,100,121,108,98,117,55,47,53,0,47,114,100,121,108,98,117,55,47,54,0,47,114,100,121,108,98,117,55,47,55,0,47,114,100,121,108,98,117,56,47,49,0,47,114,100,121,108,98,117,56,47,50,0,47,114,100,121,108,98,117,56,47,51,0,47,114,100,121,108,98,117,56,47,52,0,47,114,100,121,108,98,117,56,47,53,0,47,114,100,121,108,98,117,56,47,54,0,47,114,100,121,108,98,117,56,47,55,0,47,114,100,121,108,98,117,56,47,56,0,47,114,100,121,108,98,117,57,47,49,0,47,114,100,121,108,98,117,57,47,50,0,47,114,100,121,108,98,117,57,47,51,0,47,114,100,121,108,98,117,57,47,52,0,47,114,100,121,108,98,117,57,47,53,0,47,114,100,121,108,98,117,57,47,54,0,47,114,100,121,108,98,117,57,47,55,0,47,114,100,121,108,98,117,57,47,56,0,47,114,100,121,108,98,117,57,47,57,0,47,114,100,121,108,103,110,49,48,47,49,0,47,114,100,121,108,103,110,49,48,47,49,48,0,47,114,100,121,108,103,110,49,48,47,50,0,47,114,100,121,108,103,110,49,48,47,51,0,47,114,100,121,108,103,110,49,48,47,52,0,47,114,100,121,108,103,110,49,48,47,53,0,47,114,100,121,108,103,110,49,48,47,54,0,47,114,100,121,108,103,110,49,48,47,55,0,47,114,100,121,108,103,110,49,48,47,56,0,47,114,100,121,108,103,110,49,48,47,57,0,47,114,100,121,108,103,110,49,49,47,49,0,47,114,100,121,108,103,110,49,49,47,49,48,0,47,114,100,121,108,103,110,49,49,47,49,49,0,47,114,100,121,108,103,110,49,49,47,50,0,47,114,100,121,108,103,110,49,49,47,51,0,47,114,100,121,108,103,110,49,49,47,52,0,47,114,100,121,108,103,110,49,49,47,53,0,47,114,100,121,108,103,110,49,49,47,54,0,47,114,100,121,108,103,110,49,49,47,55,0,47,114,100,121,108,103,110,49,49,47,56,0,47,114,100,121,108,103,110,49,49,47,57,0,47,114,100,121,108,103,110,51,47,49,0,47,114,100,121,108,103,110,51,47,50,0,47,114,100,121,108,103,110,51,47,51,0,47,114,100,121,108,103,110,52,47,49,0,47,114,100,121,108,103,110,52,47,50,0,47,114,100,121,108,103,110,52,47,51,0,47,114,100,121,108,103,110,52,47,52,0,47,114,100,121,108,103,110,53,47,49,0,47,114,100,121,108,103,110,53,47,50,0,47,114,100,121,108,103,110,53,47,51,0,47,114,100,121,108,103,110,53,47,52,0,47,114,100,121,108,103,110,53,47,53,0,47,114,100,121,108,103,110,54,47,49,0,47,114,100,121,108,103,110,54,47,50,0,47,114,100,121,108,103,110,54,47,51,0,47,114,100,121,108,103,110,54,47,52,0,47,114,100,121,108,103,110,54,47,53,0,47,114,100,121,108,103,110,54,47,54,0,47,114,100,121,108,103,110,55,47,49,0,47,114,100,121,108,103,110,55,47,50,0,47,114,100,121,108,103,110,55,47,51,0,47,114,100,121,108,103,110,55,47,52,0,47,114,100,121,108,103,110,55,47,53,0,47,114,100,121,108,103,110,55,47,54,0,47,114,100,121,108,103,110,55,47,55,0,47,114,100,121,108,103,110,56,47,49,0,47,114,100,121,108,103,110,56,47,50,0,47,114,100,121,108,103,110,56,47,51,0,47,114,100,121,108,103,110,56,47,52,0,47,114,100,121,108,103,110,56,47,53,0,47,114,100,121,108,103,110,56,47,54,0,47,114,100,121,108,103,110,56,47,55,0,47,114,100,121,108,103,110,56,47,56,0,47,114,100,121,108,103,110,57,47,49,0,47,114,100,121,108,103,110,57,47,50,0,47,114,100,121,108,103,110,57,47,51,0,47,114,100,121,108,103,110,57,47,52,0,47,114,100,121,108,103,110,57,47,53,0,47,114,100,121,108,103,110,57,47,54,0,47,114,100,121,108,103,110,57,47,55,0,47,114,100,121,108,103,110,57,47,56,0,47,114,100,121,108,103,110,57,47,57,0,47,114,101,100,115,51,47,49,0,47,114,101,100,115,51,47,50,0,47,114,101,100,115,51,47,51,0,47,114,101,100,115,52,47,49,0,47,114,101,100,115,52,47,50,0,47,114,101,100,115,52,47,51,0,47,114,101,100,115,52,47,52,0,47,114,101,100,115,53,47,49,0,47,114,101,100,115,53,47,50,0,47,114,101,100,115,53,47,51,0,47,114,101,100,115,53,47,52,0,47,114,101,100,115,53,47,53,0,47,114,101,100,115,54,47,49,0,47,114,101,100,115,54,47,50,0,47,114,101,100,115,54,47,51,0,47,114,101,100,115,54,47,52,0,47,114,101,100,115,54,47,53,0,47,114,101,100,115,54,47,54,0,47,114,101,100,115,55,47,49,0,47,114,101,100,115,55,47,50,0,47,114,101,100,115,55,47,51,0,47,114,101,100,115,55,47,52,0,47,114,101,100,115,55,47,53,0,47,114,101,100,115,55,47,54,0,47,114,101,100,115,55,47,55,0,47,114,101,100,115,56,47,49,0,47,114,101,100,115,56,47,50,0,47,114,101,100,115,56,47,51,0,47,114,101,100,115,56,47,52,0,47,114,101,100,115,56,47,53,0,47,114,101,100,115,56,47,54,0,47,114,101,100,115,56,47,55,0,47,114,101,100,115,56,47,56,0,47,114,101,100,115,57,47,49,0,47,114,101,100,115,57,47,50,0,47,114,101,100,115,57,47,51,0,47,114,101,100,115,57,47,52,0,47,114,101,100,115,57,47,53,0,47,114,101,100,115,57,47,54,0,47,114,101,100,115,57,47,55,0,47,114,101,100,115,57,47,56,0,47,114,101,100,115,57,47,57,0,47,115,101,116,49,51,47,49,0,47,115,101,116,49,51,47,50,0,47,115,101,116,49,51,47,51,0,47,115,101,116,49,52,47,49,0,47,115,101,116,49,52,47,50,0,47,115,101,116,49,52,47,51,0,47,115,101,116,49,52,47,52,0,47,115,101,116,49,53,47,49,0,47,115,101,116,49,53,47,50,0,47,115,101,116,49,53,47,51,0,47,115,101,116,49,53,47,52,0,47,115,101,116,49,53,47,53,0,47,115,101,116,49,54,47,49,0,47,115,101,116,49,54,47,50,0,47,115,101,116,49,54,47,51,0,47,115,101,116,49,54,47,52,0,47,115,101,116,49,54,47,53,0,47,115,101,116,49,54,47,54,0,47,115,101,116,49,55,47,49,0,47,115,101,116,49,55,47,50,0,47,115,101,116,49,55,47,51,0,47,115,101,116,49,55,47,52,0,47,115,101,116,49,55,47,53,0,47,115,101,116,49,55,47,54,0,47,115,101,116,49,55,47,55,0,47,115,101,116,49,56,47,49,0,47,115,101,116,49,56,47,50,0,47,115,101,116,49,56,47,51,0,47,115,101,116,49,56,47,52,0,47,115,101,116,49,56,47,53,0,47,115,101,116,49,56,47,54,0,47,115,101,116,49,56,47,55,0,47,115,101,116,49,56,47,56,0,47,115,101,116,49,57,47,49,0,47,115,101,116,49,57,47,50,0,47,115,101,116,49,57,47,51,0,47,115,101,116,49,57,47,52,0,47,115,101,116,49,57,47,53,0,47,115,101,116,49,57,47,54,0,47,115,101,116,49,57,47,55,0,47,115,101,116,49,57,47,56,0,47,115,101,116,49,57,47,57,0,47,115,101,116,50,51,47,49,0,47,115,101,116,50,51,47,50,0,47,115,101,116,50,51,47,51,0,47,115,101,116,50,52,47,49,0,47,115,101,116,50,52,47,50,0,47,115,101,116,50,52,47,51,0,47,115,101,116,50,52,47,52,0,47,115,101,116,50,53,47,49,0,47,115,101,116,50,53,47,50,0,47,115,101,116,50,53,47,51,0,47,115,101,116,50,53,47,52,0,47,115,101,116,50,53,47,53,0,47,115,101,116,50,54,47,49,0,47,115,101,116,50,54,47,50,0,47,115,101,116,50,54,47,51,0,47,115,101,116,50,54,47,52,0,47,115,101,116,50,54,47,53,0,47,115,101,116,50,54,47,54,0,47,115,101,116,50,55,47,49,0,47,115,101,116,50,55,47,50,0,47,115,101,116,50,55,47,51,0,47,115,101,116,50,55,47,52,0,47,115,101,116,50,55,47,53,0,47,115,101,116,50,55,47,54,0,47,115,101,116,50,55,47,55,0,47,115,101,116,50,56,47,49,0,47,115,101,116,50,56,47,50,0,47,115,101,116,50,56,47,51,0,47,115,101,116,50,56,47,52,0,47,115,101,116,50,56,47,53,0,47,115,101,116,50,56,47,54,0,47,115,101,116,50,56,47,55,0,47,115,101,116,50,56,47,56,0,47,115,101,116,51,49,48,47,49,0,47,115,101,116,51,49,48,47,49,48,0,47,115,101,116,51,49,48,47,50,0,47,115,101,116,51,49,48,47,51,0,47,115,101,116,51,49,48,47,52,0,47,115,101,116,51,49,48,47,53,0,47,115,101,116,51,49,48,47,54,0,47,115,101,116,51,49,48,47,55,0,47,115,101,116,51,49,48,47,56,0,47,115,101,116,51,49,48,47,57,0,47,115,101,116,51,49,49,47,49,0,47,115,101,116,51,49,49,47,49,48,0,47,115,101,116,51,49,49,47,49,49,0,47,115,101,116,51,49,49,47,50,0,47,115,101,116,51,49,49,47,51,0,47,115,101,116,51,49,49,47,52,0,47,115,101,116,51,49,49,47,53,0,47,115,101,116,51,49,49,47,54,0,47,115,101,116,51,49,49,47,55,0,47,115,101,116,51,49,49,47,56,0,47,115,101,116,51,49,49,47,57,0,47,115,101,116,51,49,50,47,49,0,47,115,101,116,51,49,50,47,49,48,0,47,115,101,116,51,49,50,47,49,49,0,47,115,101,116,51,49,50,47,49,50,0,47,115,101,116,51,49,50,47,50,0,47,115,101,116,51,49,50,47,51,0,47,115,101,116,51,49,50,47,52,0,47,115,101,116,51,49,50,47,53,0,47,115,101,116,51,49,50,47,54,0,47,115,101,116,51,49,50,47,55,0,47,115,101,116,51,49,50,47,56,0,47,115,101,116,51,49,50,47,57,0,47,115,101,116,51,51,47,49,0,47,115,101,116,51,51,47,50,0,47,115,101,116,51,51,47,51,0,47,115,101,116,51,52,47,49,0,47,115,101,116,51,52,47,50,0,47,115,101,116,51,52,47,51,0,47,115,101,116,51,52,47,52,0,47,115,101,116,51,53,47,49,0,47,115,101,116,51,53,47,50,0,47,115,101,116,51,53,47,51,0,47,115,101,116,51,53,47,52,0,47,115,101,116,51,53,47,53,0,47,115,101,116,51,54,47,49,0,47,115,101,116,51,54,47,50,0,47,115,101,116,51,54,47,51,0,47,115,101,116,51,54,47,52,0,47,115,101,116,51,54,47,53,0,47,115,101,116,51,54,47,54,0,47,115,101,116,51,55,47,49,0,47,115,101,116,51,55,47,50,0,47,115,101,116,51,55,47,51,0,47,115,101,116,51,55,47,52,0,47,115,101,116,51,55,47,53,0,47,115,101,116,51,55,47,54,0,47,115,101,116,51,55,47,55,0,47,115,101,116,51,56,47,49,0,47,115,101,116,51,56,47,50,0,47,115,101,116,51,56,47,51,0,47,115,101,116,51,56,47,52,0,47,115,101,116,51,56,47,53,0,47,115,101,116,51,56,47,54,0,47,115,101,116,51,56,47,55,0,47,115,101,116,51,56,47,56,0,47,115,101,116,51,57,47,49,0,47,115,101,116,51,57,47,50,0,47,115,101,116,51,57,47,51,0,47,115,101,116,51,57,47,52,0,47,115,101,116,51,57,47,53,0,47,115,101,116,51,57,47,54,0,47,115,101,116,51,57,47,55,0,47,115,101,116,51,57,47,56,0,47,115,101,116,51,57,47,57,0,47,115,112,101,99,116,114,97,108,49,48,47,49,0,47,115,112,101,99,116,114,97,108,49,48,47,49,48,0,47,115,112,101,99,116,114,97,108,49,48,47,50,0,47,115,112,101,99,116,114,97,108,49,48,47,51,0,47,115,112,101,99,116,114,97,108,49,48,47,52,0,47,115,112,101,99,116,114,97,108,49,48,47,53,0,47,115,112,101,99,116,114,97,108,49,48,47,54,0,47,115,112,101,99,116,114,97,108,49,48,47,55,0,47,115,112,101,99,116,114,97,108,49,48,47,56,0,47,115,112,101,99,116,114,97,108,49,48,47,57,0,47,115,112,101,99,116,114,97,108,49,49,47,49,0,47,115,112,101,99,116,114,97,108,49,49,47,49,48,0,47,115,112,101,99,116,114,97,108,49,49,47,49,49,0,47,115,112,101,99,116,114,97,108,49,49,47,50,0,47,115,112,101,99,116,114,97,108,49,49,47,51,0,47,115,112,101,99,116,114,97,108,49,49,47,52,0,47,115,112,101,99,116,114,97,108,49,49,47,53,0,47,115,112,101,99,116,114,97,108,49,49,47,54,0,47,115,112,101,99,116,114,97,108,49,49,47,55,0,47,115,112,101,99,116,114,97,108,49,49,47,56,0,47,115,112,101,99,116,114,97,108,49,49,47,57,0,47,115,112,101,99,116,114,97,108,51,47,49,0,47,115,112,101,99,116,114,97,108,51,47,50,0,47,115,112,101,99,116,114,97,108,51,47,51,0,47,115,112,101,99,116,114,97,108,52,47,49,0,47,115,112,101,99,116,114,97,108,52,47,50,0,47,115,112,101,99,116,114,97,108,52,47,51,0,47,115,112,101,99,116,114,97,108,52,47,52,0,47,115,112,101,99,116,114,97,108,53,47,49,0,47,115,112,101,99,116,114,97,108,53,47,50,0,47,115,112,101,99,116,114,97,108,53,47,51,0,47,115,112,101,99,116,114,97,108,53,47,52,0,47,115,112,101,99,116,114,97,108,53,47,53,0,47,115,112,101,99,116,114,97,108,54,47,49,0,47,115,112,101,99,116,114,97,108,54,47,50,0,47,115,112,101,99,116,114,97,108,54,47,51,0,47,115,112,101,99,116,114,97,108,54,47,52,0,47,115,112,101,99,116,114,97,108,54,47,53,0,47,115,112,101,99,116,114,97,108,54,47,54,0,47,115,112,101,99,116,114,97,108,55,47,49,0,47,115,112,101,99,116,114,97,108,55,47,50,0,47,115,112,101,99,116,114,97,108,55,47,51,0,47,115,112,101,99,116,114,97,108,55,47,52,0,47,115,112,101,99,116,114,97,108,55,47,53,0,47,115,112,101,99,116,114,97,108,55,47,54,0,47,115,112,101,99,116,114,97,108,55,47,55,0,47,115,112,101,99,116,114,97,108,56,47,49,0,47,115,112,101,99,116,114,97,108,56,47,50,0,47,115,112,101,99,116,114,97,108,56,47,51,0,47,115,112,101,99,116,114,97,108,56,47,52,0,47,115,112,101,99,116,114,97,108,56,47,53,0,47,115,112,101,99,116,114,97,108,56,47,54,0,47,115,112,101,99,116,114,97,108,56,47,55,0,47,115,112,101,99,116,114,97,108,56,47,56,0,47,115,112,101,99,116,114,97,108,57,47,49,0,47,115,112,101,99,116,114,97,108,57,47,50,0,47,115,112,101,99,116,114,97,108,57,47,51,0,47,115,112,101,99,116,114,97,108,57,47,52,0,47,115,112,101,99,116,114,97,108,57,47,53,0,47,115,112,101,99,116,114,97,108,57,47,54,0,47,115,112,101,99,116,114,97,108,57,47,55,0,47,115,112,101,99,116,114,97,108,57,47,56,0,47,115,112,101,99,116,114,97,108,57,47,57,0,47,115,118,103,47,97,108,105,99,101,98,108,117,101,0,47,115,118,103,47,97,110,116,105,113,117,101,119,104,105,116,101,0,47,115,118,103,47,97,113,117,97,0,47,115,118,103,47,97,113,117,97,109,97,114,105,110,101,0,47,115,118,103,47,97,122,117,114,101,0,47,115,118,103,47,98,101,105,103,101,0,47,115,118,103,47,98,105,115,113,117,101,0,47,115,118,103,47,98,108,97,99,107,0,47,115,118,103,47,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,47,115,118,103,47,98,108,117,101,0,47,115,118,103,47,98,108,117,101,118,105,111,108,101,116,0,47,115,118,103,47,98,114,111,119,110,0,47,115,118,103,47,98,117,114,108,121,119,111,111,100,0,47,115,118,103,47,99,97,100,101,116,98,108,117,101,0,47,115,118,103,47,99,104,97,114,116,114,101,117,115,101,0,47,115,118,103,47,99,104,111,99,111,108,97,116,101,0,47,115,118,103,47,99,111,114,97,108,0,47,115,118,103,47,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,47,115,118,103,47,99,111,114,110,115,105,108,107,0,47,115,118,103,47,99,114,105,109,115,111,110,0,47,115,118,103,47,99,121,97,110,0,47,115,118,103,47,100,97,114,107,98,108,117,101,0,47,115,118,103,47,100,97,114,107,99,121,97,110,0,47,115,118,103,47,100,97,114,107,103,111,108,100,101,110,114,111,100,0,47,115,118,103,47,100,97,114,107,103,114,97,121,0,47,115,118,103,47,100,97,114,107,103,114,101,101,110,0,47,115,118,103,47,100,97,114,107,103,114,101,121,0,47,115,118,103,47,100,97,114,107,107,104,97,107,105,0,47,115,118,103,47,100,97,114,107,109,97,103,101,110,116,97,0,47,115,118,103,47,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,47,115,118,103,47,100,97,114,107,111,114,97,110,103,101,0,47,115,118,103,47,100,97,114,107,111,114,99,104,105,100,0,47,115,118,103,47,100,97,114,107,114,101,100,0,47,115,118,103,47,100,97,114,107,115,97,108,109,111,110,0,47,115,118,103,47,100,97,114,107,115,101,97,103,114,101,101,110,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,98,108,117,101,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,103,114,97,121,0,47,115,118,103,47,100,97,114,107,115,108,97,116,101,103,114,101,121,0,47,115,118,103,47,100,97,114,107,116,117,114,113,117,111,105,115,101,0,47,115,118,103,47,100,97,114,107],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+102400);allocate([118,105,111,108,101,116,0,47,115,118,103,47,100,101,101,112,112,105,110,107,0,47,115,118,103,47,100,101,101,112,115,107,121,98,108,117,101,0,47,115,118,103,47,100,105,109,103,114,97,121,0,47,115,118,103,47,100,105,109,103,114,101,121,0,47,115,118,103,47,100,111,100,103,101,114,98,108,117,101,0,47,115,118,103,47,102,105,114,101,98,114,105,99,107,0,47,115,118,103,47,102,108,111,114,97,108,119,104,105,116,101,0,47,115,118,103,47,102,111,114,101,115,116,103,114,101,101,110,0,47,115,118,103,47,102,117,99,104,115,105,97,0,47,115,118,103,47,103,97,105,110,115,98,111,114,111,0,47,115,118,103,47,103,104,111,115,116,119,104,105,116,101,0,47,115,118,103,47,103,111,108,100,0,47,115,118,103,47,103,111,108,100,101,110,114,111,100,0,47,115,118,103,47,103,114,97,121,0,47,115,118,103,47,103,114,101,101,110,0,47,115,118,103,47,103,114,101,101,110,121,101,108,108,111,119,0,47,115,118,103,47,103,114,101,121,0,47,115,118,103,47,104,111,110,101,121,100,101,119,0,47,115,118,103,47,104,111,116,112,105,110,107,0,47,115,118,103,47,105,110,100,105,97,110,114,101,100,0,47,115,118,103,47,105,110,100,105,103,111,0,47,115,118,103,47,105,118,111,114,121,0,47,115,118,103,47,107,104,97,107,105,0,47,115,118,103,47,108,97,118,101,110,100,101,114,0,47,115,118,103,47,108,97,118,101,110,100,101,114,98,108,117,115,104,0,47,115,118,103,47,108,97,119,110,103,114,101,101,110,0,47,115,118,103,47,108,101,109,111,110,99,104,105,102,102,111,110,0,47,115,118,103,47,108,105,103,104,116,98,108,117,101,0,47,115,118,103,47,108,105,103,104,116,99,111,114,97,108,0,47,115,118,103,47,108,105,103,104,116,99,121,97,110,0,47,115,118,103,47,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,47,115,118,103,47,108,105,103,104,116,103,114,97,121,0,47,115,118,103,47,108,105,103,104,116,103,114,101,101,110,0,47,115,118,103,47,108,105,103,104,116,103,114,101,121,0,47,115,118,103,47,108,105,103,104,116,112,105,110,107,0,47,115,118,103,47,108,105,103,104,116,115,97,108,109,111,110,0,47,115,118,103,47,108,105,103,104,116,115,101,97,103,114,101,101,110,0,47,115,118,103,47,108,105,103,104,116,115,107,121,98,108,117,101,0,47,115,118,103,47,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,47,115,118,103,47,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,47,115,118,103,47,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,47,115,118,103,47,108,105,103,104,116,121,101,108,108,111,119,0,47,115,118,103,47,108,105,109,101,0,47,115,118,103,47,108,105,109,101,103,114,101,101,110,0,47,115,118,103,47,108,105,110,101,110,0,47,115,118,103,47,109,97,103,101,110,116,97,0,47,115,118,103,47,109,97,114,111,111,110,0,47,115,118,103,47,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,47,115,118,103,47,109,101,100,105,117,109,98,108,117,101,0,47,115,118,103,47,109,101,100,105,117,109,111,114,99,104,105,100,0,47,115,118,103,47,109,101,100,105,117,109,112,117,114,112,108,101,0,47,115,118,103,47,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,47,115,118,103,47,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,47,115,118,103,47,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,47,115,118,103,47,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,47,115,118,103,47,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,47,115,118,103,47,109,105,100,110,105,103,104,116,98,108,117,101,0,47,115,118,103,47,109,105,110,116,99,114,101,97,109,0,47,115,118,103,47,109,105,115,116,121,114,111,115,101,0,47,115,118,103,47,109,111,99,99,97,115,105,110,0,47,115,118,103,47,110,97,118,97,106,111,119,104,105,116,101,0,47,115,118,103,47,110,97,118,121,0,47,115,118,103,47,111,108,100,108,97,99,101,0,47,115,118,103,47,111,108,105,118,101,0,47,115,118,103,47,111,108,105,118,101,100,114,97,98,0,47,115,118,103,47,111,114,97,110,103,101,0,47,115,118,103,47,111,114,97,110,103,101,114,101,100,0,47,115,118,103,47,111,114,99,104,105,100,0,47,115,118,103,47,112,97,108,101,103,111,108,100,101,110,114,111,100,0,47,115,118,103,47,112,97,108,101,103,114,101,101,110,0,47,115,118,103,47,112,97,108,101,116,117,114,113,117,111,105,115,101,0,47,115,118,103,47,112,97,108,101,118,105,111,108,101,116,114,101,100,0,47,115,118,103,47,112,97,112,97,121,97,119,104,105,112,0,47,115,118,103,47,112,101,97,99,104,112,117,102,102,0,47,115,118,103,47,112,101,114,117,0,47,115,118,103,47,112,105,110,107,0,47,115,118,103,47,112,108,117,109,0,47,115,118,103,47,112,111,119,100,101,114,98,108,117,101,0,47,115,118,103,47,112,117,114,112,108,101,0,47,115,118,103,47,114,101,100,0,47,115,118,103,47,114,111,115,121,98,114,111,119,110,0,47,115,118,103,47,114,111,121,97,108,98,108,117,101,0,47,115,118,103,47,115,97,100,100,108,101,98,114,111,119,110,0,47,115,118,103,47,115,97,108,109,111,110,0,47,115,118,103,47,115,97,110,100,121,98,114,111,119,110,0,47,115,118,103,47,115,101,97,103,114,101,101,110,0,47,115,118,103,47,115,101,97,115,104,101,108,108,0,47,115,118,103,47,115,105,101,110,110,97,0,47,115,118,103,47,115,105,108,118,101,114,0,47,115,118,103,47,115,107,121,98,108,117,101,0,47,115,118,103,47,115,108,97,116,101,98,108,117,101,0,47,115,118,103,47,115,108,97,116,101,103,114,97,121,0,47,115,118,103,47,115,108,97,116,101,103,114,101,121,0,47,115,118,103,47,115,110,111,119,0,47,115,118,103,47,115,112,114,105,110,103,103,114,101,101,110,0,47,115,118,103,47,115,116,101,101,108,98,108,117,101,0,47,115,118,103,47,116,97,110,0,47,115,118,103,47,116,101,97,108,0,47,115,118,103,47,116,104,105,115,116,108,101,0,47,115,118,103,47,116,111,109,97,116,111,0,47,115,118,103,47,116,117,114,113,117,111,105,115,101,0,47,115,118,103,47,118,105,111,108,101,116,0,47,115,118,103,47,119,104,101,97,116,0,47,115,118,103,47,119,104,105,116,101,0,47,115,118,103,47,119,104,105,116,101,115,109,111,107,101,0,47,115,118,103,47,121,101,108,108,111,119,0,47,115,118,103,47,121,101,108,108,111,119,103,114,101,101,110,0,47,121,108,103,110,51,47,49,0,47,121,108,103,110,51,47,50,0,47,121,108,103,110,51,47,51,0,47,121,108,103,110,52,47,49,0,47,121,108,103,110,52,47,50,0,47,121,108,103,110,52,47,51,0,47,121,108,103,110,52,47,52,0,47,121,108,103,110,53,47,49,0,47,121,108,103,110,53,47,50,0,47,121,108,103,110,53,47,51,0,47,121,108,103,110,53,47,52,0,47,121,108,103,110,53,47,53,0,47,121,108,103,110,54,47,49,0,47,121,108,103,110,54,47,50,0,47,121,108,103,110,54,47,51,0,47,121,108,103,110,54,47,52,0,47,121,108,103,110,54,47,53,0,47,121,108,103,110,54,47,54,0,47,121,108,103,110,55,47,49,0,47,121,108,103,110,55,47,50,0,47,121,108,103,110,55,47,51,0,47,121,108,103,110,55,47,52,0,47,121,108,103,110,55,47,53,0,47,121,108,103,110,55,47,54,0,47,121,108,103,110,55,47,55,0,47,121,108,103,110,56,47,49,0,47,121,108,103,110,56,47,50,0,47,121,108,103,110,56,47,51,0,47,121,108,103,110,56,47,52,0,47,121,108,103,110,56,47,53,0,47,121,108,103,110,56,47,54,0,47,121,108,103,110,56,47,55,0,47,121,108,103,110,56,47,56,0,47,121,108,103,110,57,47,49,0,47,121,108,103,110,57,47,50,0,47,121,108,103,110,57,47,51,0,47,121,108,103,110,57,47,52,0,47,121,108,103,110,57,47,53,0,47,121,108,103,110,57,47,54,0,47,121,108,103,110,57,47,55,0,47,121,108,103,110,57,47,56,0,47,121,108,103,110,57,47,57,0,47,121,108,103,110,98,117,51,47,49,0,47,121,108,103,110,98,117,51,47,50,0,47,121,108,103,110,98,117,51,47,51,0,47,121,108,103,110,98,117,52,47,49,0,47,121,108,103,110,98,117,52,47,50,0,47,121,108,103,110,98,117,52,47,51,0,47,121,108,103,110,98,117,52,47,52,0,47,121,108,103,110,98,117,53,47,49,0,47,121,108,103,110,98,117,53,47,50,0,47,121,108,103,110,98,117,53,47,51,0,47,121,108,103,110,98,117,53,47,52,0,47,121,108,103,110,98,117,53,47,53,0,47,121,108,103,110,98,117,54,47,49,0,47,121,108,103,110,98,117,54,47,50,0,47,121,108,103,110,98,117,54,47,51,0,47,121,108,103,110,98,117,54,47,52,0,47,121,108,103,110,98,117,54,47,53,0,47,121,108,103,110,98,117,54,47,54,0,47,121,108,103,110,98,117,55,47,49,0,47,121,108,103,110,98,117,55,47,50,0,47,121,108,103,110,98,117,55,47,51,0,47,121,108,103,110,98,117,55,47,52,0,47,121,108,103,110,98,117,55,47,53,0,47,121,108,103,110,98,117,55,47,54,0,47,121,108,103,110,98,117,55,47,55,0,47,121,108,103,110,98,117,56,47,49,0,47,121,108,103,110,98,117,56,47,50,0,47,121,108,103,110,98,117,56,47,51,0,47,121,108,103,110,98,117,56,47,52,0,47,121,108,103,110,98,117,56,47,53,0,47,121,108,103,110,98,117,56,47,54,0,47,121,108,103,110,98,117,56,47,55,0,47,121,108,103,110,98,117,56,47,56,0,47,121,108,103,110,98,117,57,47,49,0,47,121,108,103,110,98,117,57,47,50,0,47,121,108,103,110,98,117,57,47,51,0,47,121,108,103,110,98,117,57,47,52,0,47,121,108,103,110,98,117,57,47,53,0,47,121,108,103,110,98,117,57,47,54,0,47,121,108,103,110,98,117,57,47,55,0,47,121,108,103,110,98,117,57,47,56,0,47,121,108,103,110,98,117,57,47,57,0,47,121,108,111,114,98,114,51,47,49,0,47,121,108,111,114,98,114,51,47,50,0,47,121,108,111,114,98,114,51,47,51,0,47,121,108,111,114,98,114,52,47,49,0,47,121,108,111,114,98,114,52,47,50,0,47,121,108,111,114,98,114,52,47,51,0,47,121,108,111,114,98,114,52,47,52,0,47,121,108,111,114,98,114,53,47,49,0,47,121,108,111,114,98,114,53,47,50,0,47,121,108,111,114,98,114,53,47,51,0,47,121,108,111,114,98,114,53,47,52,0,47,121,108,111,114,98,114,53,47,53,0,47,121,108,111,114,98,114,54,47,49,0,47,121,108,111,114,98,114,54,47,50,0,47,121,108,111,114,98,114,54,47,51,0,47,121,108,111,114,98,114,54,47,52,0,47,121,108,111,114,98,114,54,47,53,0,47,121,108,111,114,98,114,54,47,54,0,47,121,108,111,114,98,114,55,47,49,0,47,121,108,111,114,98,114,55,47,50,0,47,121,108,111,114,98,114,55,47,51,0,47,121,108,111,114,98,114,55,47,52,0,47,121,108,111,114,98,114,55,47,53,0,47,121,108,111,114,98,114,55,47,54,0,47,121,108,111,114,98,114,55,47,55,0,47,121,108,111,114,98,114,56,47,49,0,47,121,108,111,114,98,114,56,47,50,0,47,121,108,111,114,98,114,56,47,51,0,47,121,108,111,114,98,114,56,47,52,0,47,121,108,111,114,98,114,56,47,53,0,47,121,108,111,114,98,114,56,47,54,0,47,121,108,111,114,98,114,56,47,55,0,47,121,108,111,114,98,114,56,47,56,0,47,121,108,111,114,98,114,57,47,49,0,47,121,108,111,114,98,114,57,47,50,0,47,121,108,111,114,98,114,57,47,51,0,47,121,108,111,114,98,114,57,47,52,0,47,121,108,111,114,98,114,57,47,53,0,47,121,108,111,114,98,114,57,47,54,0,47,121,108,111,114,98,114,57,47,55,0,47,121,108,111,114,98,114,57,47,56,0,47,121,108,111,114,98,114,57,47,57,0,47,121,108,111,114,114,100,51,47,49,0,47,121,108,111,114,114,100,51,47,50,0,47,121,108,111,114,114,100,51,47,51,0,47,121,108,111,114,114,100,52,47,49,0,47,121,108,111,114,114,100,52,47,50,0,47,121,108,111,114,114,100,52,47,51,0,47,121,108,111,114,114,100,52,47,52,0,47,121,108,111,114,114,100,53,47,49,0,47,121,108,111,114,114,100,53,47,50,0,47,121,108,111,114,114,100,53,47,51,0,47,121,108,111,114,114,100,53,47,52,0,47,121,108,111,114,114,100,53,47,53,0,47,121,108,111,114,114,100,54,47,49,0,47,121,108,111,114,114,100,54,47,50,0,47,121,108,111,114,114,100,54,47,51,0,47,121,108,111,114,114,100,54,47,52,0,47,121,108,111,114,114,100,54,47,53,0,47,121,108,111,114,114,100,54,47,54,0,47,121,108,111,114,114,100,55,47,49,0,47,121,108,111,114,114,100,55,47,50,0,47,121,108,111,114,114,100,55,47,51,0,47,121,108,111,114,114,100,55,47,52,0,47,121,108,111,114,114,100,55,47,53,0,47,121,108,111,114,114,100,55,47,54,0,47,121,108,111,114,114,100,55,47,55,0,47,121,108,111,114,114,100,56,47,49,0,47,121,108,111,114,114,100,56,47,50,0,47,121,108,111,114,114,100,56,47,51,0,47,121,108,111,114,114,100,56,47,52,0,47,121,108,111,114,114,100,56,47,53,0,47,121,108,111,114,114,100,56,47,54,0,47,121,108,111,114,114,100,56,47,55,0,47,121,108,111,114,114,100,56,47,56,0,47,121,108,111,114,114,100,57,47,49,0,47,121,108,111,114,114,100,57,47,50,0,47,121,108,111,114,114,100,57,47,51,0,47,121,108,111,114,114,100,57,47,52,0,47,121,108,111,114,114,100,57,47,53,0,47,121,108,111,114,114,100,57,47,54,0,47,121,108,111,114,114,100,57,47,55,0,47,121,108,111,114,114,100,57,47,56,0,47,121,108,111,114,114,100,57,47,57,0,97,108,105,99,101,98,108,117,101,0,97,110,116,105,113,117,101,119,104,105,116,101,0,97,110,116,105,113,117,101,119,104,105,116,101,49,0,97,110,116,105,113,117,101,119,104,105,116,101,50,0,97,110,116,105,113,117,101,119,104,105,116,101,51,0,97,110,116,105,113,117,101,119,104,105,116,101,52,0,97,113,117,97,109,97,114,105,110,101,0,97,113,117,97,109,97,114,105,110,101,49,0,97,113,117,97,109,97,114,105,110,101,50,0,97,113,117,97,109,97,114,105,110,101,51,0,97,113,117,97,109,97,114,105,110,101,52,0,97,122,117,114,101,0,97,122,117,114,101,49,0,97,122,117,114,101,50,0,97,122,117,114,101,51,0,97,122,117,114,101,52,0,98,101,105,103,101,0,98,105,115,113,117,101,0,98,105,115,113,117,101,49,0,98,105,115,113,117,101,50,0,98,105,115,113,117,101,51,0,98,105,115,113,117,101,52,0,98,108,97,110,99,104,101,100,97,108,109,111,110,100,0,98,108,117,101,0,98,108,117,101,49,0,98,108,117,101,50,0,98,108,117,101,51,0,98,108,117,101,52,0,98,108,117,101,118,105,111,108,101,116,0,98,114,111,119,110,0,98,114,111,119,110,49,0,98,114,111,119,110,50,0,98,114,111,119,110,51,0,98,114,111,119,110,52,0,98,117,114,108,121,119,111,111,100,0,98,117,114,108,121,119,111,111,100,49,0,98,117,114,108,121,119,111,111,100,50,0,98,117,114,108,121,119,111,111,100,51,0,98,117,114,108,121,119,111,111,100,52,0,99,97,100,101,116,98,108,117,101,0,99,97,100,101,116,98,108,117,101,49,0,99,97,100,101,116,98,108,117,101,50,0,99,97,100,101,116,98,108,117,101,51,0,99,97,100,101,116,98,108,117,101,52,0,99,104,97,114,116,114,101,117,115,101,0,99,104,97,114,116,114,101,117,115,101,49,0,99,104,97,114,116,114,101,117,115,101,50,0,99,104,97,114,116,114,101,117,115,101,51,0,99,104,97,114,116,114,101,117,115,101,52,0,99,104,111,99,111,108,97,116,101,0,99,104,111,99,111,108,97,116,101,49,0,99,104,111,99,111,108,97,116,101,50,0,99,104,111,99,111,108,97,116,101,51,0,99,104,111,99,111,108,97,116,101,52,0,99,111,114,97,108,0,99,111,114,97,108,49,0,99,111,114,97,108,50,0,99,111,114,97,108,51,0,99,111,114,97,108,52,0,99,111,114,110,102,108,111,119,101,114,98,108,117,101,0,99,111,114,110,115,105,108,107,0,99,111,114,110,115,105,108,107,49,0,99,111,114,110,115,105,108,107,50,0,99,111,114,110,115,105,108,107,51,0,99,111,114,110,115,105,108,107,52,0,99,114,105,109,115,111,110,0,99,121,97,110,0,99,121,97,110,49,0,99,121,97,110,50,0,99,121,97,110,51,0,99,121,97,110,52,0,100,97,114,107,103,111,108,100,101,110,114,111,100,0,100,97,114,107,103,111,108,100,101,110,114,111,100,49,0,100,97,114,107,103,111,108,100,101,110,114,111,100,50,0,100,97,114,107,103,111,108,100,101,110,114,111,100,51,0,100,97,114,107,103,111,108,100,101,110,114,111,100,52,0,100,97,114,107,103,114,101,101,110,0,100,97,114,107,107,104,97,107,105,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,49,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,50,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,51,0,100,97,114,107,111,108,105,118,101,103,114,101,101,110,52,0,100,97,114,107,111,114,97,110,103,101,0,100,97,114,107,111,114,97,110,103,101,49,0,100,97,114,107,111,114,97,110,103,101,50,0,100,97,114,107,111,114,97,110,103,101,51,0,100,97,114,107,111,114,97,110,103,101,52,0,100,97,114,107,111,114,99,104,105,100,0,100,97,114,107,111,114,99,104,105,100,49,0,100,97,114,107,111,114,99,104,105,100,50,0,100,97,114,107,111,114,99,104,105,100,51,0,100,97,114,107,111,114,99,104,105,100,52,0,100,97,114,107,115,97,108,109,111,110,0,100,97,114,107,115,101,97,103,114,101,101,110,0,100,97,114,107,115,101,97,103,114,101,101,110,49,0,100,97,114,107,115,101,97,103,114,101,101,110,50,0,100,97,114,107,115,101,97,103,114,101,101,110,51,0,100,97,114,107,115,101,97,103,114,101,101,110,52,0,100,97,114,107,115,108,97,116,101,98,108,117,101,0,100,97,114,107,115,108,97,116,101,103,114,97,121,0,100,97,114,107,115,108,97,116,101,103,114,97,121,49,0,100,97,114,107,115,108,97,116,101,103,114,97,121,50,0,100,97,114,107,115,108,97,116,101,103,114,97,121,51,0,100,97,114,107,115,108,97,116,101,103,114,97,121,52,0,100,97,114,107,115,108,97,116,101,103,114,101,121,0,100,97,114,107,116,117,114,113,117,111,105,115,101,0,100,97,114,107,118,105,111,108,101,116,0,100,101,101,112,112,105,110,107,0,100,101,101,112,112,105,110,107,49,0,100,101,101,112,112,105,110,107,50,0,100,101,101,112,112,105,110,107,51,0,100,101,101,112,112,105,110,107,52,0,100,101,101,112,115,107,121,98,108,117,101,0,100,101,101,112,115,107,121,98,108,117,101,49,0,100,101,101,112,115,107,121,98,108,117,101,50,0,100,101,101,112,115,107,121,98,108,117,101,51,0,100,101,101,112,115,107,121,98,108,117,101,52,0,100,105,109,103,114,97,121,0,100,105,109,103,114,101,121,0,100,111,100,103,101,114,98,108,117,101,0,100,111,100,103,101,114,98,108,117,101,49,0,100,111,100,103,101,114,98,108,117,101,50,0,100,111,100,103,101,114,98,108,117,101,51,0,100,111,100,103,101,114,98,108,117,101,52,0,102,105,114,101,98,114,105,99,107,0,102,105,114,101,98,114,105,99,107,49,0,102,105,114,101,98,114,105,99,107,50,0,102,105,114,101,98,114,105,99,107,51,0,102,105,114,101,98,114,105,99,107,52,0,102,108,111,114,97,108,119,104,105,116,101,0,102,111,114,101,115,116,103,114,101,101,110,0,103,97,105,110,115,98,111,114,111,0,103,104,111,115,116,119,104,105,116,101,0,103,111,108,100,0,103,111,108,100,49,0,103,111,108,100,50,0,103,111,108,100,51,0,103,111,108,100,52,0,103,111,108,100,101,110,114,111,100,0,103,111,108,100,101,110,114,111,100,49,0,103,111,108,100,101,110,114,111,100,50,0,103,111,108,100,101,110,114,111,100,51,0,103,111,108,100,101,110,114,111,100,52,0,103,114,97,121,0,103,114,97,121,48,0,103,114,97,121,49,0,103,114,97,121,49,48,0,103,114,97,121,49,48,48,0,103,114,97,121,49,49,0,103,114,97,121,49,50,0,103,114,97,121,49,51,0,103,114,97,121,49,52,0,103,114,97,121,49,53,0,103,114,97,121,49,54,0,103,114,97,121,49,55,0,103,114,97,121,49,56,0,103,114,97,121,49,57,0,103,114,97,121,50,0,103,114,97,121,50,48,0,103,114,97,121,50,49,0,103,114,97,121,50,50,0,103,114,97,121,50,51,0,103,114,97,121,50,52,0,103,114,97,121,50,53,0,103,114,97,121,50,54,0,103,114,97,121,50,55,0,103,114,97,121,50,56,0,103,114,97,121,50,57,0,103,114,97,121,51,0,103,114,97,121,51,48,0,103,114,97,121,51,49,0,103,114,97,121,51,50,0,103,114,97,121,51,51,0,103,114,97,121,51,52,0,103,114,97,121,51,53,0,103,114,97,121,51,54,0,103,114,97,121,51,55,0,103,114,97,121,51,56,0,103,114,97,121,51,57,0,103,114,97,121,52,0,103,114,97,121,52,48,0,103,114,97,121,52,49,0,103,114,97,121,52,50,0,103,114,97,121,52,51,0,103,114,97,121,52,52,0,103,114,97,121,52,53,0,103,114,97,121,52,54,0,103,114,97,121,52,55,0,103,114,97,121,52,56,0,103,114,97,121,52,57,0,103,114,97,121,53,0,103,114,97,121,53,48,0,103,114,97,121,53,49,0,103,114,97,121,53,50,0,103,114,97,121,53,51,0,103,114,97,121,53,52,0,103,114,97,121,53,53,0,103,114,97,121,53,54,0,103,114,97,121,53,55,0,103,114,97,121,53,56,0,103,114,97,121,53,57,0,103,114,97,121,54,0,103,114,97,121,54,48,0,103,114,97,121,54,49,0,103,114,97,121,54,50,0,103,114,97,121,54,51,0,103,114,97,121,54,52,0,103,114,97,121,54,53,0,103,114,97,121,54,54,0,103,114,97,121,54,55,0,103,114,97,121,54,56,0,103,114,97,121,54,57,0,103,114,97,121,55,0,103,114,97,121,55,48,0,103,114,97,121,55,49,0,103,114,97,121,55,50,0,103,114,97,121,55,51,0,103,114,97,121,55,52,0,103,114,97,121,55,53,0,103,114,97,121,55,54,0,103,114,97,121,55,55,0,103,114,97,121,55,56,0,103,114,97,121,55,57,0,103,114,97,121,56,0,103,114,97,121,56,48,0,103,114,97,121,56,49,0,103,114,97,121,56,50,0,103,114,97,121,56,51,0,103,114,97,121,56,52,0,103,114,97,121,56,53,0,103,114,97,121,56,54,0,103,114,97,121,56,55,0,103,114,97,121,56,56,0,103,114,97,121,56,57,0,103,114,97,121,57,0,103,114,97,121,57,48,0,103,114,97,121,57,49,0,103,114,97,121,57,50,0,103,114,97,121,57,51,0,103,114,97,121,57,52,0,103,114,97,121,57,53,0,103,114,97,121,57,54,0,103,114,97,121,57,55,0,103,114,97,121,57,56,0,103,114,97,121,57,57,0,103,114,101,101,110,0,103,114,101,101,110,49,0,103,114,101,101,110,50,0,103,114,101,101,110,51,0,103,114,101,101,110,52,0,103,114,101,101,110,121,101,108,108,111,119,0,103,114,101,121,0,103,114,101,121,48,0,103,114,101,121,49,0,103,114,101,121,49,48,0,103,114,101,121,49,48,48,0,103,114,101,121,49,49,0,103,114,101,121,49,50,0,103,114,101,121,49,51,0,103,114,101,121,49,52,0,103,114,101,121,49,53,0,103,114,101,121,49,54,0,103,114,101,121,49,55,0,103,114,101,121,49,56,0,103,114,101,121,49,57,0,103,114,101,121,50,0,103,114,101,121,50,48,0,103,114,101,121,50,49,0,103,114,101,121,50,50,0,103,114,101,121,50,51,0,103,114,101,121,50,52,0,103,114,101,121,50,53,0,103,114,101,121,50,54,0,103,114,101,121,50,55,0,103,114,101,121,50,56,0,103,114,101,121,50,57,0,103,114,101,121,51,0,103,114,101,121,51,48,0,103,114,101,121,51,49,0,103,114,101,121,51,50,0,103,114,101,121,51,51,0,103,114,101,121,51,52,0,103,114,101,121,51,53,0,103,114,101,121,51,54,0,103,114,101,121,51,55,0,103,114,101,121,51,56,0,103,114,101,121,51,57,0,103,114,101,121,52,0,103,114,101,121,52,48,0,103,114,101,121,52,49,0,103,114,101,121,52,50,0,103,114,101,121,52,51,0,103,114,101,121,52,52,0,103,114,101,121,52,53,0,103,114,101,121,52,54,0,103,114,101,121,52,55,0,103,114,101,121,52,56,0,103,114,101,121,52,57,0,103,114,101,121,53,0,103,114,101,121,53,48,0,103,114,101,121,53,49,0,103,114,101,121,53,50,0,103,114,101,121,53,51,0,103,114,101,121,53,52,0,103,114,101,121,53,53,0,103,114,101,121,53,54,0,103,114,101,121,53,55,0,103,114,101,121,53,56,0,103,114,101,121,53,57,0,103,114,101,121,54,0,103,114,101,121,54,48,0,103,114,101,121,54,49,0,103,114,101,121,54,50,0,103,114,101,121,54,51,0,103,114,101,121,54,52,0,103,114,101,121,54,53,0,103,114,101,121,54,54,0,103,114,101,121,54,55,0,103,114,101,121,54,56,0,103,114,101,121,54,57,0,103,114,101,121,55,0,103,114,101,121,55,48,0,103,114,101,121,55,49,0,103,114,101,121,55,50,0,103,114,101,121,55,51,0,103,114,101,121,55,52,0,103,114,101,121,55,53,0,103,114,101,121,55,54,0,103,114,101,121,55,55,0,103,114,101,121,55,56,0,103,114,101,121,55,57,0,103,114,101,121,56,0,103,114,101,121,56,48,0,103,114,101,121,56,49,0,103,114,101,121,56,50,0,103,114,101,121,56,51,0,103,114,101,121,56,52,0,103,114,101,121,56,53,0,103,114,101,121,56,54,0,103,114,101,121,56,55,0,103,114,101,121,56,56,0,103,114,101,121,56,57,0,103,114,101,121,57,0,103,114,101,121,57,48,0,103,114,101,121,57,49,0,103,114,101,121,57,50,0,103,114,101,121,57,51,0,103,114,101,121,57,52,0,103,114,101,121,57,53,0,103,114,101,121,57,54,0,103,114,101,121,57,55,0,103,114,101,121,57,56,0,103,114,101,121,57,57,0,104,111,110,101,121,100,101,119,0,104,111,110,101,121,100,101,119,49,0,104,111,110,101,121,100,101,119,50,0,104,111,110,101,121,100,101,119,51,0,104,111,110,101,121,100,101,119,52,0,104,111,116,112,105,110,107,0,104,111,116,112,105,110,107,49,0,104,111,116,112,105,110,107,50,0,104,111,116,112,105,110,107,51,0,104,111,116,112,105,110,107,52,0,105,110,100,105,97,110,114,101,100,0,105,110,100,105,97,110,114,101,100,49,0,105,110,100,105,97,110,114,101,100,50,0,105,110,100,105,97,110,114,101,100,51,0,105,110,100,105,97,110,114,101,100,52,0,105,110,100,105,103,111,0,105,110,118,105,115,0,105,118,111,114,121,0,105,118,111,114,121,49,0,105,118,111,114,121,50,0,105,118,111,114,121,51,0,105,118,111,114,121,52,0,107,104,97,107,105,0,107,104,97,107,105,49,0,107,104,97,107,105,50,0,107,104,97,107,105,51,0,107,104,97,107,105,52,0,108,97,118,101,110,100,101,114,0,108,97,118,101,110,100,101,114,98,108,117,115,104,0,108,97,118,101,110,100,101,114,98,108,117,115,104,49,0,108,97,118,101,110,100,101,114,98,108,117,115,104,50,0,108,97,118,101,110,100,101,114,98,108,117,115,104,51,0,108,97,118,101,110,100,101,114,98,108,117,115,104,52,0,108,97,119,110,103,114,101,101,110,0,108,101,109,111,110,99,104,105,102,102,111,110,0,108,101,109,111,110,99,104,105,102,102,111,110,49,0,108,101,109,111,110,99,104,105,102,102,111,110,50,0,108,101,109,111,110,99,104,105,102,102,111,110,51,0,108,101,109,111,110,99,104,105,102,102,111,110,52,0,108,105,103,104,116,98,108,117,101,0,108,105,103,104,116,98,108,117,101,49,0,108,105,103,104,116,98,108,117,101,50,0,108,105,103,104,116,98,108,117,101,51,0,108,105,103,104,116,98,108,117,101,52,0,108,105,103,104,116,99,111,114,97,108,0,108,105,103,104,116,99,121,97,110,0,108,105,103,104,116,99,121,97,110,49,0,108,105,103,104,116,99,121,97,110,50,0,108,105,103,104,116,99,121,97,110,51,0,108,105,103,104,116,99,121,97,110,52,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,49,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,50,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,51,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,52,0,108,105,103,104,116,103,111,108,100,101,110,114,111,100,121,101,108,108,111,119,0,108,105,103,104,116,103,114,97,121,0,108,105,103,104,116,103,114,101,121,0,108,105,103,104,116,112,105,110,107,0,108,105,103,104,116,112,105,110,107,49,0,108,105,103,104,116,112,105,110,107,50,0,108,105,103,104,116,112,105,110,107,51,0,108,105,103,104,116,112,105,110,107,52,0,108,105,103,104,116,115,97,108,109,111,110,0,108,105,103,104,116,115,97,108,109,111,110,49,0,108,105,103,104,116,115,97,108,109,111,110,50,0,108,105,103,104,116,115,97,108,109,111,110,51,0,108,105,103,104,116,115,97,108,109,111,110,52,0,108,105,103,104,116,115,101,97,103,114,101,101,110,0,108,105,103,104,116,115,107,121,98,108,117,101,0,108,105,103,104,116,115,107,121,98,108,117,101,49,0,108,105,103,104,116,115,107,121,98,108,117,101,50,0,108,105,103,104,116,115,107,121,98,108,117,101,51,0,108,105,103,104,116,115,107,121,98,108,117,101,52,0,108,105,103,104,116,115,108,97,116,101,98,108,117,101,0,108,105,103,104,116,115,108,97,116,101,103,114,97,121,0,108,105,103,104,116,115,108,97,116,101,103,114,101,121,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,49,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,50,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,51,0,108,105,103,104,116,115,116,101,101,108,98,108,117,101,52,0,108,105,103,104,116,121,101,108,108,111,119,0,108,105,103,104,116,121,101,108,108,111,119,49,0,108,105,103,104,116,121,101,108,108,111,119,50,0,108,105,103,104,116,121,101,108,108,111,119,51,0,108,105,103,104,116,121,101,108,108,111,119,52,0,108,105,109,101,103,114,101,101,110,0,108,105,110,101,110,0,109,97,103,101,110,116,97,0,109,97,103,101,110,116,97,49,0,109,97,103,101,110,116,97,50,0,109,97,103,101,110,116,97,51,0,109,97,103,101,110,116,97,52,0,109,97,114,111,111,110,0,109,97,114,111,111,110,49,0,109,97,114,111,111,110,50,0,109,97,114,111,111,110,51,0,109,97,114,111,111,110,52,0,109,101,100,105,117,109,97,113,117,97,109,97,114,105,110,101,0,109,101,100,105,117,109,98,108,117,101,0,109,101,100,105,117,109,111,114,99,104,105,100,0,109,101,100,105,117,109,111,114,99,104,105,100,49,0,109,101,100,105,117,109,111,114,99,104,105,100,50,0,109,101,100,105,117,109,111,114,99,104,105,100,51,0,109,101,100,105,117,109,111,114,99,104,105,100,52,0,109,101,100,105,117,109,112,117,114,112,108,101,0,109,101,100,105,117,109,112,117,114,112,108,101,49,0,109,101,100,105,117,109,112,117,114,112,108,101,50,0,109,101,100,105,117,109,112,117,114,112,108,101,51,0,109,101,100,105,117,109,112,117,114,112,108,101,52,0,109,101,100,105,117,109,115,101,97,103,114,101,101,110,0,109,101,100,105,117,109,115,108,97,116,101,98,108,117,101,0,109,101,100,105,117,109,115,112,114,105,110,103,103,114,101,101,110,0,109,101,100,105,117,109,116,117,114,113,117,111,105,115,101,0,109,101,100,105,117,109,118,105,111,108,101,116,114,101,100,0,109,105,100,110,105,103,104,116,98,108,117,101,0,109,105,110,116,99,114,101,97,109,0,109,105,115,116,121,114,111,115,101,0,109,105,115,116,121,114,111,115,101,49,0,109,105,115,116,121,114,111,115,101,50,0,109,105,115,116,121,114,111,115,101,51,0,109,105,115,116,121,114,111,115,101,52,0,109,111,99,99,97,115,105,110,0,110,97,118,97,106,111,119,104,105,116,101,0,110,97,118,97,106,111,119,104,105,116,101,49,0,110,97,118,97,106,111,119,104,105,116,101,50,0,110,97,118,97,106,111,119,104,105,116,101,51,0,110,97,118,97,106,111,119,104,105,116,101,52,0,110,97,118,121,0,110,97,118,121,98,108,117,101,0,110,111,110,101,0,111,108,100,108,97,99,101,0,111,108,105,118,101,100,114,97,98,0,111,108,105,118,101,100,114,97,98,49,0,111,108,105,118,101,100,114,97,98,50,0,111,108,105,118,101,100,114,97,98,51,0,111,108,105,118,101,100,114,97,98,52,0,111,114,97,110,103,101,0,111,114,97,110,103,101,49,0,111,114,97,110,103,101,50,0,111,114,97,110,103,101,51,0,111,114,97,110,103,101,52,0,111,114,97,110,103,101,114,101,100,0,111,114,97,110,103,101,114,101,100,49,0,111,114,97,110,103,101,114,101,100,50,0,111,114,97,110,103,101,114,101,100,51,0,111,114,97,110,103,101,114,101,100,52,0,111,114,99,104,105,100,0,111,114,99,104,105,100,49,0,111,114,99,104,105,100,50,0,111,114,99,104,105,100,51,0,111,114,99,104,105,100,52,0,112,97,108,101,103,111,108,100,101,110,114,111,100,0,112,97,108,101,103,114,101,101,110,0,112,97,108,101,103,114,101,101,110,49,0,112,97,108,101,103,114,101,101,110,50,0,112,97,108,101,103,114,101,101,110,51,0,112,97,108,101,103,114,101,101,110,52,0,112,97,108,101,116,117,114,113,117,111,105,115,101,0,112,97,108,101,116,117,114,113,117,111,105,115,101,49,0,112,97,108,101,116,117,114,113,117,111,105,115,101,50,0,112,97,108,101,116,117,114,113,117,111,105,115,101,51,0,112,97,108,101,116,117,114,113,117,111,105,115,101,52,0,112,97,108,101,118,105,111,108,101,116,114,101,100,0,112,97,108,101,118,105,111,108,101,116,114,101,100,49,0,112,97,108,101,118,105,111,108,101,116,114,101,100,50,0,112,97,108,101,118,105,111,108,101,116,114,101,100,51,0,112,97,108,101,118,105,111,108,101,116,114,101,100,52,0,112,97,112,97,121,97,119,104,105,112,0,112,101,97,99,104,112,117,102,102,0,112,101,97,99,104,112,117,102,102,49,0,112,101,97,99,104,112,117,102,102,50,0,112,101,97,99,104,112,117,102,102,51,0,112,101,97,99,104,112,117,102,102,52,0,112,101,114,117,0,112,105,110,107,0,112,105,110,107,49,0,112,105,110,107,50,0,112,105,110,107,51,0,112,105,110,107,52,0,112,108,117,109,0,112,108,117,109,49,0,112,108,117,109,50,0,112,108,117,109,51,0,112,108,117,109,52,0,112,111,119,100,101,114,98,108,117,101,0,112,117,114,112,108,101,0,112,117,114,112,108,101,49,0,112,117,114,112,108,101,50,0,112,117,114,112,108,101,51,0,112,117,114,112,108,101,52,0,114,101,100,0,114,101,100,49,0,114,101,100,50,0,114,101,100,51,0,114,101,100,52,0,114,111,115,121,98,114,111,119,110,0,114,111,115,121,98,114,111,119,110,49,0,114,111,115,121,98,114,111,119,110,50,0,114,111,115,121,98,114,111,119,110,51,0,114,111,115,121,98,114,111,119,110,52,0,114,111,121,97,108,98,108,117,101,0,114,111,121,97,108,98,108,117,101,49,0,114,111,121,97,108,98,108,117,101,50,0,114,111,121,97,108,98,108,117,101,51,0,114,111,121,97,108,98,108,117,101,52,0,115,97,100,100,108,101,98,114,111,119,110,0,115,97,108,109,111,110,0,115,97,108,109,111,110,49,0,115,97,108,109,111,110,50,0,115,97,108,109,111,110,51,0,115,97,108,109,111,110,52,0,115,97,110,100,121,98,114,111,119,110,0,115,101,97,103,114,101,101,110,0,115,101,97,103,114,101,101,110,49,0,115,101,97,103,114,101,101,110,50,0,115,101,97,103,114,101,101,110,51,0,115,101,97,103,114,101,101,110,52,0,115,101,97,115,104,101,108,108,0,115,101,97,115,104,101,108,108,49,0,115,101,97,115,104,101,108,108,50,0,115,101,97,115,104,101,108,108,51,0,115,101,97,115,104,101,108,108,52,0,115,105,101,110,110,97,0,115,105,101,110,110,97,49,0,115,105,101,110,110,97,50,0,115,105,101,110,110,97,51,0,115,105,101,110,110,97,52,0,115,107,121,98,108,117,101,0,115,107,121,98,108,117,101,49,0,115,107,121,98,108,117,101,50,0,115,107,121,98,108,117,101,51,0,115,107,121,98,108,117,101,52,0,115,108,97,116,101,98,108,117,101,0,115,108,97,116,101,98,108,117,101,49,0,115,108,97,116,101,98,108,117,101,50,0,115,108,97,116,101,98,108,117,101,51,0,115,108,97,116,101,98,108,117,101,52,0,115,108,97,116,101,103,114,97,121,0,115,108,97,116,101,103,114,97,121,49,0,115,108,97,116,101,103,114,97,121,50,0,115,108,97,116,101,103,114,97,121,51,0,115,108,97,116,101,103,114,97,121,52,0,115,108,97,116,101,103,114,101,121,0,115,110,111,119,0,115,110,111,119,49,0,115,110,111,119,50,0,115,110,111,119,51,0,115,110,111,119,52,0,115,112,114,105,110,103,103,114,101,101,110,0,115,112,114,105,110,103,103,114,101,101,110,49,0,115,112,114,105,110,103,103,114,101,101,110,50,0,115,112,114,105,110,103,103,114,101,101,110,51,0,115,112,114,105,110,103,103,114,101,101,110,52,0,115,116,101,101,108,98,108,117,101,0,115,116,101,101,108,98,108,117,101,49,0,115,116,101,101,108,98,108,117,101,50,0,115,116,101,101,108,98,108,117,101,51,0,115,116,101,101,108,98,108,117,101,52,0,116,97,110,0,116,97,110,49,0,116,97,110,50,0,116,97,110,51,0,116,97,110,52,0,116,104,105,115,116,108,101,0,116,104,105,115,116,108,101,49,0,116,104,105,115,116,108,101,50,0,116,104,105,115,116,108,101,51,0,116,104,105,115,116,108,101,52,0,116,111,109,97,116,111,0,116,111,109,97,116,111,49,0,116,111,109,97,116,111,50,0,116,111,109,97,116,111,51,0,116,111,109,97,116,111,52,0,116,117,114,113,117,111,105,115,101,0,116,117,114,113,117,111,105,115,101,49,0,116,117,114,113,117,111,105,115,101,50,0,116,117,114,113,117,111,105,115,101,51,0,116,117,114,113,117,111,105,115,101,52,0,118,105,111,108,101,116,0,118,105,111,108,101,116,114,101,100,0,118,105,111,108,101,116,114,101,100,49,0,118,105,111,108,101,116,114,101,100,50,0,118,105,111,108,101,116,114,101,100,51,0,118,105,111,108,101,116,114,101,100,52,0,119,104,101,97,116,0,119,104,101,97,116,49,0,119,104,101,97,116,50,0,119,104,101,97,116,51,0,119,104,101,97,116,52,0,119,104,105,116,101,0,119,104,105,116,101,115,109,111,107,101,0,121,101,108,108,111,119,0,121,101,108,108,111,119,49,0,121,101,108,108,111,119,50,0,121,101,108,108,111,119,51,0,121,101,108,108,111,119,52,0,121,101,108,108,111,119,103,114,101,101,110,0,108,97,99,107,0,104,105,116,101,0,105,103,104,116,103,114,101,121,0,88,49,49,47,0,47,37,115,47,37,115,0,105,109,97,103,101,115,99,97,108,101,0,102,97,108,115,101,0,98,108,97,99,107,0,100,111,116,116,101,100,0,100,97,115,104,101,100,0,99,112,45,62,115,114,99,0,104,116,109,108,116,97,98,108,101,46,99,0,101,109,105,116,95,104,116,109,108,95,105,109,103,0,99,112,45,62,115,114,99,91,48,93,0,116,114,97,110,115,112,97,114,101,110,116,0,95,37,100,0,37,100,0,49,0,50,0,51,0,52,0,53,0,54,0,55,0,56,0,57,0,49,48,0,49,49,0,49,50,0,49,51,0,49,52,0,49,53,0,49,54,0,49,55,0,49,56,0,49,57,0,50,48,0,65,103,110,111,100,101,105,110,102,111,95,116,0,65,103,101,100,103,101,105,110,102,111,95,116,0,114,111,119,103,0,99,111,108,103,0,65,103,114,97,112,104,105,110,102,111,95,116,0,60,84,65,66,76,69,62,0,100,101,108,120,32,62,61,32,48,0,112,111,115,95,104,116,109,108,95,116,98,108,0,100,101,108,121,32,62,61,32,48,0,116,97,98,108,101,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,99,111,110,116,101,110,116,10,0,102,105,120,101,100,32,116,97,98,108,101,32,115,105,122,101,32,119,105,116,104,32,117,110,115,112,101,99,105,102,105,101,100,32,119,105,100,116,104,32,111,114,32,104,101,105,103,104,116,10,0,99,101,108,108,32,115,105,122,101,32,116,111,111,32,115,109,97,108,108,32,102,111,114,32,99,111,110,116,101,110,116,10,0,102,105,120,101,100,32,99,101,108,108,32,115,105,122,101,32,119,105,116,104,32,117,110,115,112,101,99,105,102,105,101,100,32,119,105,100,116,104,32,111,114,32,104,101,105,103,104,116,10,0,78,111,32,111,114,32,105,109,112,114,111,112,101,114,32,105,109,97,103,101,32,102,105,108,101,61,34,37,115,34,10,0,112,101,110,99,111,108,111,114,0,99,111,108,111,114,0,45,62,0,45,45,0,102,80,81,46,99,0,80,81,99,104,101,99,107,0,72,101,97,112,32,111,118,101,114,102,108,111,119,10,0,37,33,80,83,45,65,100,111,98,101,45,50,46,48,10,47,110,111,100,101,32,123,10,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,47,121,32,101,120,99,104,32,100,101,102,10,32,32,47,120,32,101,120,99,104,32,100,101,102,10,32,32,110,101,119,112,97,116,104,10,32,32,120,32,121,32,109,111,118,101,116,111,10,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,88,32,121,32,108,105,110,101,116,111,10,32,32,99,108,111,115,101,112,97,116,104,32,102,105,108,108,10,125,32,100,101,102,10,47,99,101,108,108,32,123,10,32,32,47,89,32,101,120,99,104,32,100,101,102,10,32,32,47,88,32,101,120,99,104,32,100,101,102,10,32,32,47,121,32,101,120,99,104,32,100,101,102,10,32,32,47,120,32,101,120,99,104,32,100,101,102,10,32,32,110,101,119,112,97,116,104,10,32,32,120,32,121,32,109,111,118,101,116,111,10,32,32,120,32,89,32,108,105,110,101,116,111,10,32,32,88,32,89,32,108,105,110,101,116,111,10,32,32,88,32,121,32,108,105,110,101,116,111,10,32],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+112640);allocate([32,99,108,111,115,101,112,97,116,104,32,115,116,114,111,107,101,10,125,32,100,101,102,10,0,115,104,111,119,112,97,103,101,10,0,102,97,105,108,101,100,32,97,116,32,110,111,100,101,32,37,100,91,48,93,10,0,110,112,45,62,99,101,108,108,115,91,48,93,0,109,97,122,101,46,99,0,99,104,107,83,103,114,97,112,104,0,102,97,105,108,101,100,32,97,116,32,110,111,100,101,32,37,100,91,49,93,10,0,110,112,45,62,99,101,108,108,115,91,49,93,0,100,105,116,101,109,115,0,102,105,110,100,83,86,101,114,116,0,37,37,37,37,80,97,103,101,58,32,49,32,49,10,37,37,37,37,80,97,103,101,66,111,117,110,100,105,110,103,66,111,120,58,32,37,100,32,37,100,32,37,100,32,37,100,10,0,37,102,32,37,102,32,116,114,97,110,115,108,97,116,101,10,0,48,32,48,32,49,32,115,101,116,114,103,98,99,111,108,111,114,10,0,37,102,32,37,102,32,37,102,32,37,102,32,110,111,100,101,10,0,48,32,48,32,48,32,115,101,116,114,103,98,99,111,108,111,114,10,0,37,102,32,37,102,32,37,102,32,37,102,32,99,101,108,108,10,0,49,32,48,32,48,32,115,101,116,114,103,98,99,111,108,111,114,10,0,117,110,101,120,112,101,99,116,101,100,32,99,97,115,101,32,105,110,32,108,111,99,97,116,101,95,101,110,100,112,111,105,110,116,10,0,48,0,116,114,97,112,101,122,111,105,100,46,99,0,108,111,99,97,116,101,95,101,110,100,112,111,105,110,116,0,97,100,100,95,115,101,103,109,101,110,116,58,32,101,114,114,111,114,10,0,110,101,119,110,111,100,101,58,32,81,117,101,114,121,45,116,97,98,108,101,32,111,118,101,114,102,108,111,119,10,0,110,101,119,110,111,100,101,0,110,101,119,116,114,97,112,58,32,84,114,97,112,101,122,111,105,100,45,116,97,98,108,101,32,111,118,101,114,102,108,111,119,32,37,100,10,0,110,101,119,116,114,97,112,0,105,110,100,101,120,46,99,0,82,84,114,101,101,83,101,97,114,99,104,0,110,45,62,108,101,118,101,108,32,62,61,32,48,0,82,84,114,101,101,73,110,115,101,114,116,0,108,101,118,101,108,32,62,61,32,48,32,38,38,32,108,101,118,101,108,32,60,61,32,40,42,110,41,45,62,108,101,118,101,108,0,114,45,62,98,111,117,110,100,97,114,121,91,105,93,32,60,61,32,114,45,62,98,111,117,110,100,97,114,121,91,78,85,77,68,73,77,83,32,43,32,105,93,0,114,32,38,38,32,110,32,38,38,32,110,101,119,0,82,84,114,101,101,73,110,115,101,114,116,50,0,108,101,118,101,108,32,62,61,32,48,32,38,38,32,108,101,118,101,108,32,60,61,32,110,45,62,108,101,118,101,108,0,70,65,76,83,69,0,110,111,100,101,46,99,0,78,111,100,101,67,111,118,101,114,0,114,32,38,38,32,110,0,80,105,99,107,66,114,97,110,99,104,0,65,100,100,66,114,97,110,99,104,0,105,32,60,32,78,79,68,69,67,65,82,68,0,110,101,119,0,110,32,38,38,32,105,32,62,61,32,48,32,38,38,32,105,32,60,32,78,79,68,69,67,65,82,68,0,68,105,115,99,111,110,66,114,97,110,99,104,0,114,0,114,101,99,116,97,110,103,108,101,46,99,0,82,101,99,116,65,114,101,97,0,114,32,38,38,32,114,114,0,67,111,109,98,105,110,101,82,101,99,116,0,114,32,38,38,32,115,0,79,118,101,114,108,97,112,0,110,0,115,112,108,105,116,46,113,46,99,0,83,112,108,105,116,78,111,100,101,0,98,0,110,45,62,99,111,117,110,116,32,43,32,40,42,110,110,41,45,62,99,111,117,110,116,32,61,61,32,78,79,68,69,67,65,82,68,32,43,32,49,0,76,111,97,100,78,111,100,101,115,0,113,0,112,0,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,112,97,114,116,105,116,105,111,110,91,105,93,32,61,61,32,48,32,124,124,32,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,112,97,114,116,105,116,105,111,110,91,105,93,32,61,61,32,49,0,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,99,111,117,110,116,91,48,93,32,43,32,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,99,111,117,110,116,91,49,93,32,61,61,32,78,79,68,69,67,65,82,68,32,43,32,49,0,77,101,116,104,111,100,90,101,114,111,0,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,99,111,117,110,116,91,48,93,32,62,61,32,114,116,112,45,62,77,105,110,70,105,108,108,32,38,38,32,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,99,111,117,110,116,91,49,93,32,62,61,32,114,116,112,45,62,77,105,110,70,105,108,108,0,33,114,116,112,45,62,115,112,108,105,116,46,80,97,114,116,105,116,105,111,110,115,91,48,93,46,116,97,107,101,110,91,105,93,0,67,108,97,115,115,105,102,121,0,71,101,116,66,114,97,110,99,104,101,115,0,110,45,62,98,114,97,110,99,104,91,105,93,46,99,104,105,108,100,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,2,2,2,2,2,2,16,12,89,1,0,31,80,8,3,7,18,19,20,87,22,23,8,11,105,12,31,10,5,12,14,41,17,43,15,45,16,47,48,32,50,6,52,53,27,28,29,30,11,12,33,34,35,36,37,38,39,40,12,24,25,23,4,10,27,28,26,32,42,10,33,34,35,36,37,38,39,40,12,10,14,83,10,44,88,49,88,88,88,88,88,88,12,27,28,15,46,88,51,33,34,35,36,37,38,39,40,27,28,255,83,255,255,33,34,35,36,37,38,39,40,12,255,255,5,255,255,255,9,20,255,255,255,255,255,12,27,28,255,16,21,22,33,34,35,36,37,38,39,40,27,28,255,255,255,255,33,34,35,36,37,38,39,40,12,255,18,19,20,17,22,23,255,255,255,255,255,255,12,27,28,255,255,255,18,33,34,35,36,37,38,39,40,27,28,255,255,255,255,33,34,35,36,37,38,39,40,12,255,255,255,255,255,255,19,255,255,255,255,255,255,12,27,28,255,255,255,255,33,34,35,36,37,38,39,40,27,28,255,255,255,255,33,34,35,36,37,38,39,40,18,19,20,21,22,23,24,25,255,255,255,255,255,255,255,255,255,35,36,37,38,39,27,18,19,20,22,23,34,54,104,1,31,56,86,33,32,2,27,27,27,94,27,27,55,57,112,54,210,194,79,4,60,34,71,34,63,34,68,34,34,88,34,101,34,34,5,6,95,96,57,4,7,8,9,10,11,12,13,14,4,102,103,93,106,109,5,6,111,88,59,113,7,8,9,10,11,12,13,14,4,114,60,91,115,62,97,70,27,18,19,20,22,23,4,5,6,63,65,98,73,7,8,9,10,11,12,13,14,5,6,0,92,0,0,7,8,9,10,11,12,13,14,4,0,0,79,0,0,0,83,66,0,0,0,0,0,4,5,6,0,68,84,85,7,8,9,10,11,12,13,14,5,6,0,0,0,0,7,8,9,10,11,12,13,14,4,0,42,44,46,71,49,51,0,0,0,0,0,0,4,5,6,0,0,0,74,7,8,9,10,11,12,13,14,5,6,0,0,0,0,7,8,9,10,11,12,13,14,4,0,0,0,0,0,0,76,0,0,0,0,0,0,4,5,6,0,0,0,0,7,8,9,10,11,12,13,14,5,6,0,0,0,0,7,8,9,10,11,12,13,14,41,43,45,47,48,50,52,53,0,0,0,0,0,0,0,0,0,41,43,45,48,50,0,4,47,0,36,35,0,18,20,22,26,28,30,32,24,0,5,7,47,47,47,0,47,47,0,0,9,8,40,0,0,1,34,2,6,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,37,3,38,19,10,41,21,11,42,23,14,45,25,17,27,12,43,29,13,44,31,15,33,16,0,51,0,48,0,47,67,0,49,0,47,0,53,46,39,66,50,65,0,58,56,0,60,52,69,0,54,0,64,0,0,63,0,68,55,59,57,61,0,2,3,3,1,1,2,1,1,1,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,0,6,1,3,3,3,3,3,1,0,1,2,3,0,4,1,2,3,0,4,0,4,0,4,0,3,2,1,2,1,2,1,83,121,110,116,97,120,32,101,114,114,111,114,58,32,110,111,110,45,115,112,97,99,101,32,115,116,114,105,110,103,32,117,115,101,100,32,98,101,102,111,114,101,32,60,84,65,66,76,69,62,0,83,121,110,116,97,120,32,101,114,114,111,114,58,32,110,111,110,45,115,112,97,99,101,32,115,116,114,105,110,103,32,117,115,101,100,32,97,102,116,101,114,32,60,47,84,65,66,76,69,62,0,0,41,42,42,42,43,44,44,45,45,45,45,45,45,45,45,45,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,62,63,63,65,64,66,66,66,66,66,66,67,67,68,68,68,70,69,71,71,71,73,72,74,72,75,72,76,72,77,77,78,78,79,79,255,3,15,16,17,35,58,36,61,37,64,21,67,38,69,39,72,24,75,25,77,26,40,28,78,29,30,80,81,82,89,90,108,107,110,99,100,87,105,115,121,110,116,97,120,32,101,114,114,111,114,0,109,101,109,111,114,121,32,101,120,104,97,117,115,116,101,100,0,37,115,32,105,110,32,108,105,110,101,32,37,100,32,10,0,78,111,116,32,98,117,105,108,116,32,119,105,116,104,32,108,105,98,101,120,112,97,116,46,32,84,97,98,108,101,32,102,111,114,109,97,116,116,105,110,103,32,105,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,46,10,0,114,111,117,116,101,46,99,0,108,105,98,112,97,116,104,47,37,115,58,37,100,58,32,37,115,10,0,115,104,111,114,116,101,115,116,46,99,0,115,111,117,114,99,101,32,112,111,105,110,116,32,110,111,116,32,105,110,32,97,110,121,32,116,114,105,97,110,103,108,101,0,100,101,115,116,105,110,97,116,105,111,110,32,112,111,105,110,116,32,110,111,116,32,105,110,32,97,110,121,32,116,114,105,97,110,103,108,101,0,99,97,110,110,111,116,32,102,105,110,100,32,116,114,105,97,110,103,108,101,32,112,97,116,104,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,111,112,115,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,111,112,115,0,116,114,105,97,110,103,117,108,97,116,105,111,110,32,102,97,105,108,101,100,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,116,114,105,115,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,116,114,105,115,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,100,113,46,112,110,108,115,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,100,113,46,112,110,108,115,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,112,110,108,115,0,99,97,110,110,111,116,32,109,97,108,108,111,99,32,112,110,108,112,115,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,112,110,108,115,0,99,97,110,110,111,116,32,114,101,97,108,108,111,99,32,112,110,108,112,115,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,1,2,4,7,3,6,5,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,68,69,70,71,72,73,16,16,16,74,75,76,77,78,16,16,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,16,16,17,17,17,82,83,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,84,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,85,16,16,16,16,86,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,87,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,88,89,90,91,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,92,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,195,255,3,0,31,80,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,223,60,64,215,255,255,251,255,255,255,255,255,255,255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,254,255,255,255,127,2,254,255,255,255,255,0,0,0,0,0,255,191,182,0,255,255,255,7,7,0,0,0,255,7,255,255,255,255,255,255,255,254,255,195,255,255,255,255,255,255,255,255,255,255,255,255,239,31,254,225,255,159,0,0,255,255,255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,255,255,3,0,255,255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,1,0,0,0,0,0,0,0,0,253,31,0,0,0,0,0,0,240,3,255,127,255,255,255,255,255,255,255,239,255,223,225,255,207,255,254,254,238,159,249,255,255,253,197,227,159,89,128,176,207,255,3,0,238,135,249,255,255,253,109,195,135,25,2,94,192,255,63,0,238,191,251,255,255,253,237,227,191,27,1,0,207,255,0,0,238,159,249,255,255,253,237,227,159,25,192,176,207,255,2,0,236,199,61,214,24,199,255,195,199,29,129,0,192,255,0,0,238,223,253,255,255,253,239,227,223,29,96,3,207,255,0,0,236,223,253,255,255,253,239,227,223,29,96,64,207,255,6,0,236,223,253,255,255,255,255,231,223,93,128,0,207,255,0,252,236,255,127,252,255,255,251,47,127,128,95,255,0,0,12,0,254,255,255,255,255,127,255,7,63,32,255,3,0,0,0,0,150,37,240,254,174,236,255,59,95,32,255,243,0,0,0,0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,255,255,254,255,255,255,31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,255,3,255,255,231,193,255,255,127,64,255,51,255,255,255,255,191,32,255,255,255,255,255,247,255,255,255,255,255,255,255,255,255,61,127,61,255,255,255,255,255,61,255,255,255,255,61,127,61,255,127,255,255,255,255,255,255,255,61,255,255,255,255,255,255,255,255,135,0,0,0,0,255,255,0,0,255,255,255,255,255,255,255,255,255,255,31,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,159,255,255,254,255,255,7,255,255,255,255,255,255,255,255,255,199,1,0,255,223,15,0,255,255,15,0,255,255,15,0,255,223,13,0,255,255,255,255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,3,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,7,255,255,255,255,255,255,255,255,63,0,255,255,255,31,255,15,255,1,192,255,255,255,255,63,31,0,255,255,255,255,255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,255,255,255,255,255,255,127,254,255,31,0,255,3,255,3,128,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,243,255,255,255,255,255,255,191,255,3,0,255,255,255,255,255,255,63,0,255,227,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,222,111,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,63,255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,243,224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,255,255,255,255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,255,255,255,255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,255,255,255,255,255,255,255,255,255,255,247,224,255,255,255,255,63,254,255,255,255,255,255,255,255,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,255,255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,255,127,240,143,255,255,255,128,255,255,255,255,255,255,255,255,255,255,0,0,0,0,128,255,252,255,255,255,255,255,255,255,255,255,255,255,255,121,15,0,255,7,0,0,0,0,0,0,0,0,0,255,187,247,255,255,255,0,0,0,255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,15,0,255,3,0,0,252,8,255,255,255,255,255,7,255,255,255,255,7,0,255,255,255,31,255,255,255,255,255,255,247,255,0,128,255,3,0,0,0,0,255,255,255,255,255,255,127,0,255,63,255,3,255,255,127,4,255,255,255,255,255,255,255,127,5,0,0,56,255,255,60,0,126,126,126,0,127,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,255,255,15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,95,219,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,255,255,252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,255,3,254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,255,127,252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,0,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,63,255,255,255,255,15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,3,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,145,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,63,0,255,255,255,3,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,239,254,255,255,15,0,0,0,0,0,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,192,255,0,0,252,255,255,255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,255,255,255,255,199,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,30,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,0,255,3,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,31,0,255,255,255,255,255,127,0,0,248,255,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,223,223,255,255,255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,255,255,255,253,255,255,255,253,255,255,247,207,255,255,255,255,255,255,239,255,255,255,150,254,247,10,132,234,150,170,150,247,247,94,255,251,255,15,238,251,255,15,0,0,0,0,0,0,0,0,18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,16,16,34,35,16,36,37,38,39,40,41,42,43,16,44,45,46,17,47,48,17,17,49,17,17,17,50,51,52,53,54,55,56,57,17,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,58,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,59,16,60,61,62,63,64,65,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,66,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,67,16,16,68,16,69,70,71,16,72,16,73,16,16,16,16,74,75,76,77,16,16,78,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,16,16,16,16,16,16,82,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,83,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,84,85,86,87,16,16,88,89,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,90,16,91,92,93,94,95,96,97,98,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,254,255,0,252,1,0,0,248,1,0,0,120,0,0,0,0,255,251,223,251,0,0,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,252,255,224,175,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,255,32,64,176,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,134,254,255,255,255,0,64,73,0,0,0,0,0,24,0,223,255,0,200,0,0,0,0,0,0,0,1,0,60,0,0,0,0,0,0,0,0,0,0,0,0,16,224,1,30,0,96,255,191,0,0,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,207,3,0,0,0,3,0,32,255,127,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,16,0,32,30,0,48,0,1,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,252,15,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,3,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,255,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,63,2,0,0,0,0,0,0,0,0,0,4,0,0,0,0,16,0,0,0,0,0,0,128,0,128,192,223,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,254,255,255,255,0,252,255,255,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,192,255,223,255,7,0,0,0,0,0,0,0,0,0,0,128,6,0,252,0,0,24,62,0,0,128,191,0,204,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,96,255,255,255,31,0,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,0,0,1,0,0,24,0,0,0,0,0,0,0,0,0,56,0,0,0,0,16,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,254,127,47,0,0,255,3,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,196,255,255,255,255,0,0,0,192,0,0,0,0,0,0,0,0,1,0,224,159,0,0,0,0,127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,252,255,255,255,31,0,0,0,0,0,12,0,0,0,0,0,0,64,0,12,240,0,0,0,0,0,0,192,248,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,255,0,255,255,255,33,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,127,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,3,224,0,224,0,224,0,96,128,248,255,255,255,252,255,255,255,255,255,127,31,252,241,127,255,127,0,0,255,255,255,3,0,0,255,255,255,255,1,0,123,3,208,193,175,66,0,12,31,188,255,255,0,0,0,0,0,2,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,255,255,127,0,0,0,255,7,0,0,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,252,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,255,3],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+122880);allocate([224,135,3,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,127,255,15,0,0,0,0,0,0,0,0,255,255,255,251,255,255,255,255,255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,255,15,30,255,255,255,1,252,193,224,0,0,0,0,0,0,0,0,0,0,0,30,1,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,255,255,15,0,0,0,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,0,0,0,0,0,0,192,0,224,0,0,0,0,0,0,0,0,0,0,0,128,15,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,255,127,0,3,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,8,0,0,0,15,255,3,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,16,192,0,0,255,255,3,7,0,0,0,0,0,248,0,0,0,0,8,128,0,0,0,0,0,0,0,0,0,0,8,0,255,63,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,128,11,0,0,0,0,0,0,0,128,2,0,0,192,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,255,255,3,127,0,255,255,255,255,247,255,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,255,0,252,1,0,0,248,1,0,0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,48,135,255,255,255,255,255,143,255,0,0,0,0,0,0,224,255,255,7,255,15,0,0,0,0,0,0,255,255,255,255,255,63,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,143,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,0,255,1,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,255,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,63,252,255,63,0,0,0,3,0,0,0,0,0,0,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,255,255,255,255,127,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,127,0,255,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,8,0,0,0,8,0,0,32,0,0,0,32,0,0,128,0,0,0,128,0,0,0,2,0,0,0,2,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,255,255,255,255,255,15,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,127,254,127,254,255,254,255,0,0,0,0,255,7,255,255,255,127,255,255,255,255,255,255,255,15,255,255,255,255,255,7,0,0,0,0,0,0,0,0,192,255,255,255,7,0,255,255,255,255,255,7,255,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,1,0,191,255,255,255,255,255,255,255,255,31,255,255,15,0,255,255,255,255,223,7,0,0,255,255,1,0,255,255,255,255,255,255,255,127,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,30,255,255,255,255,255,255,255,63,15,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,255,255,255,225,255,0,0,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,97,108,110,117,109,0,97,108,112,104,97,0,98,108,97,110,107,0,99,110,116,114,108,0,100,105,103,105,116,0,103,114,97,112,104,0,108,111,119,101,114,0,112,114,105,110,116,0,112,117,110,99,116,0,115,112,97,99,101,0,117,112,112,101,114,0,120,100,105,103,105,116,0,47,112,114,111,99,47,115,101,108,102,47,102,100,47,0,105,110,102,105,110,105,116,121,0,110,97,110,0,76,67,95,65,76,76,0,76,67,95,67,84,89,80,69,0,0,0,0,76,67,95,78,85,77,69,82,73,67,0,0,76,67,95,84,73,77,69,0,0,0,0,0,76,67,95,67,79,76,76,65,84,69,0,0,76,67,95,77,79,78,69,84,65,82,89,0,76,67,95,77,69,83,83,65,71,69,83,0,76,65,78,71,0,67,46,85,84,70,45,56,0,80,79,83,73,88,0,77,85,83,76,95,76,79,67,80,65,84,72,0,67,46,85,84,70,45,56,0,0,0,0,0,0,0,0,0,67,0,114,119,97,0,9,0,10,0,13,0,12,0,7,0,27,0,91,91,58,97,108,110,117,109,58,93,95,93,0,91,94,91,58,97,108,110,117,109,58,93,95,93,0,91,91,58,115,112,97,99,101,58,93,93,0,91,94,91,58,115,112,97,99,101,58,93,93,0,91,91,58,100,105,103,105,116,58,93,93,0,91,94,91,58,100,105,103,105,116,58,93,93,0,47,116,109,112,47,116,109,112,102,105,108,101,95,88,88,88,88,88,88,0,119,43,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE+133165);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module[\"_i64Subtract\"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw\"Assertion failed: \"+Pointer_stringify(condition)+\", at: \"+[filename?Pointer_stringify(filename):\"unknown filename\",line,func?Pointer_stringify(func):\"unknown function\"]+\" at \"+stackTrace()}Module[\"_memset\"]=_memset;Module[\"_bitshift64Shl\"]=_bitshift64Shl;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};var ERRNO_MESSAGES={0:\"Success\",1:\"Not super-user\",2:\"No such file or directory\",3:\"No such process\",4:\"Interrupted system call\",5:\"I/O error\",6:\"No such device or address\",7:\"Arg list too long\",8:\"Exec format error\",9:\"Bad file number\",10:\"No children\",11:\"No more processes\",12:\"Not enough core\",13:\"Permission denied\",14:\"Bad address\",15:\"Block device required\",16:\"Mount device busy\",17:\"File exists\",18:\"Cross-device link\",19:\"No such device\",20:\"Not a directory\",21:\"Is a directory\",22:\"Invalid argument\",23:\"Too many open files in system\",24:\"Too many open files\",25:\"Not a typewriter\",26:\"Text file busy\",27:\"File too large\",28:\"No space left on device\",29:\"Illegal seek\",30:\"Read only file system\",31:\"Too many links\",32:\"Broken pipe\",33:\"Math arg out of domain of func\",34:\"Math result not representable\",35:\"File locking deadlock error\",36:\"File or path name too long\",37:\"No record locks available\",38:\"Function not implemented\",39:\"Directory not empty\",40:\"Too many symbolic links\",42:\"No message of desired type\",43:\"Identifier removed\",44:\"Channel number out of range\",45:\"Level 2 not synchronized\",46:\"Level 3 halted\",47:\"Level 3 reset\",48:\"Link number out of range\",49:\"Protocol driver not attached\",50:\"No CSI structure available\",51:\"Level 2 halted\",52:\"Invalid exchange\",53:\"Invalid request descriptor\",54:\"Exchange full\",55:\"No anode\",56:\"Invalid request code\",57:\"Invalid slot\",59:\"Bad font file fmt\",60:\"Device not a stream\",61:\"No data (for no delay io)\",62:\"Timer expired\",63:\"Out of streams resources\",64:\"Machine is not on the network\",65:\"Package not installed\",66:\"The object is remote\",67:\"The link has been severed\",68:\"Advertise error\",69:\"Srmount error\",70:\"Communication error on send\",71:\"Protocol error\",72:\"Multihop attempted\",73:\"Cross mount point (not really error)\",74:\"Trying to read unreadable message\",75:\"Value too large for defined data type\",76:\"Given log. name not unique\",77:\"f.d. invalid for this operation\",78:\"Remote address changed\",79:\"Can   access a needed shared lib\",80:\"Accessing a corrupted shared lib\",81:\".lib section in a.out corrupted\",82:\"Attempting to link in too many libs\",83:\"Attempting to exec a shared library\",84:\"Illegal byte sequence\",86:\"Streams pipe error\",87:\"Too many users\",88:\"Socket operation on non-socket\",89:\"Destination address required\",90:\"Message too long\",91:\"Protocol wrong type for socket\",92:\"Protocol not available\",93:\"Unknown protocol\",94:\"Socket type not supported\",95:\"Not supported\",96:\"Protocol family not supported\",97:\"Address family not supported by protocol family\",98:\"Address already in use\",99:\"Address not available\",100:\"Network interface is not configured\",101:\"Network is unreachable\",102:\"Connection reset by network\",103:\"Connection aborted\",104:\"Connection reset by peer\",105:\"No buffer space available\",106:\"Socket is already connected\",107:\"Socket is not connected\",108:\"Can't send after socket shutdown\",109:\"Too many references\",110:\"Connection timed out\",111:\"Connection refused\",112:\"Host is down\",113:\"Host is unreachable\",114:\"Socket already connected\",115:\"Connection already in progress\",116:\"Stale file handle\",122:\"Quota exceeded\",123:\"No medium (in tape drive)\",125:\"Operation canceled\",130:\"Previous owner died\",131:\"State not recoverable\"};function ___setErrNo(value){if(Module[\"___errno_location\"])HEAP32[Module[\"___errno_location\"]()>>2]=value;return value}var PATH={splitPath:(function(filename){var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)}),normalizeArray:(function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up--;up){parts.unshift(\"..\")}}return parts}),normalize:(function(path){var isAbsolute=path.charAt(0)===\"/\",trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path}),dirname:(function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir}),basename:(function(path){if(path===\"/\")return\"/\";var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)}),extname:(function(path){return PATH.splitPath(path)[3]}),join:(function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join(\"/\"))}),join2:(function(l,r){return PATH.normalize(l+\"/\"+r)}),resolve:(function(){var resolvedPath=\"\",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!==\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=path.charAt(0)===\"/\"}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter((function(p){return!!p})),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"}),relative:(function(from,to){from=PATH.resolve(from).substr(1);to=PATH.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")})};var TTY={ttys:[],init:(function(){}),shutdown:(function(){}),register:(function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)}),stream_ops:{open:(function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}stream.tty=tty;stream.seekable=false}),close:(function(stream){stream.tty.ops.flush(stream.tty)}),flush:(function(stream){stream.tty.ops.flush(stream.tty)}),read:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(ERRNO_CODES.ENXIO)}for(var i=0;i<length;i++){try{stream.tty.ops.put_char(stream.tty,buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})},default_tty_ops:{get_char:(function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=new Buffer(BUFSIZE);var bytesRead=0;var isPosixPlatform=process.platform!=\"win32\";var fd=process.stdin.fd;if(isPosixPlatform){var usingDevice=false;try{fd=fs.openSync(\"/dev/stdin\",\"r\");usingDevice=true}catch(e){}}try{bytesRead=fs.readSync(fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf(\"EOF\")!=-1)bytesRead=0;else throw e}if(usingDevice){fs.closeSync(fd)}if(bytesRead>0){result=buf.slice(0,bytesRead).toString(\"utf-8\")}else{result=null}}else if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else if(typeof readline==\"function\"){result=readline();if(result!==null){result+=\"\\n\"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()}),put_char:(function(tty,val){if(val===null||val===10){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"print\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})},default_tty1_ops:{put_char:(function(tty,val){if(val===null||val===10){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}}),flush:(function(tty){if(tty.output&&tty.output.length>0){Module[\"printErr\"](UTF8ArrayToString(tty.output,0));tty.output=[]}})}};var MEMFS={ops_table:null,mount:(function(mount){return MEMFS.createNode(null,\"/\",16384|511,0)}),createNode:(function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node}return node}),getFileDataAsRegularArray:(function(node){if(node.contents&&node.contents.subarray){var arr=[];for(var i=0;i<node.usedBytes;++i)arr.push(node.contents[i]);return arr}return node.contents}),getFileDataAsTypedArray:(function(node){if(!node.contents)return new Uint8Array;if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)}),expandFileStorage:(function(node,newCapacity){if(node.contents&&node.contents.subarray&&newCapacity>node.contents.length){node.contents=MEMFS.getFileDataAsRegularArray(node);node.usedBytes=node.contents.length}if(!node.contents||node.contents.subarray){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)|0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0);return}if(!node.contents&&newCapacity>0)node.contents=[];while(node.contents.length<newCapacity)node.contents.push(0)}),resizeFileStorage:(function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0;return}if(!node.contents||node.contents.subarray){var oldContents=node.contents;node.contents=new Uint8Array(new ArrayBuffer(newSize));if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize;return}if(!node.contents)node.contents=[];if(node.contents.length>newSize)node.contents.length=newSize;else while(node.contents.length<newSize)node.contents.push(0);node.usedBytes=newSize}),node_ops:{getattr:(function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}}),lookup:(function(parent,name){throw FS.genericErrors[ERRNO_CODES.ENOENT]}),mknod:(function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)}),rename:(function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}}}delete old_node.parent.contents[old_node.name];old_node.name=new_name;new_dir.contents[new_name]=old_node;old_node.parent=new_dir}),unlink:(function(parent,name){delete parent.contents[name]}),rmdir:(function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}delete parent.contents[name]}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node}),readlink:(function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return node.link})},stream_ops:{read:(function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);assert(size>=0);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size}),write:(function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=new Uint8Array(buffer.subarray(offset,offset+length));node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray)node.contents.set(buffer.subarray(offset,offset+length),position);else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position}),allocate:(function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&(contents.buffer===buffer||contents.buffer===buffer.buffer)){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<stream.node.usedBytes){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=_malloc(length);if(!ptr){throw new FS.ErrnoError(ERRNO_CODES.ENOMEM)}buffer.set(contents,ptr)}return{ptr:ptr,allocated:allocated}}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0})}};var IDBFS={dbs:{},indexedDB:(function(){if(typeof indexedDB!==\"undefined\")return indexedDB;var ret=null;if(typeof window===\"object\")ret=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;assert(ret,\"IDBFS used, but indexedDB not supported\");return ret}),DB_VERSION:21,DB_STORE_NAME:\"FILE_DATA\",mount:(function(mount){return MEMFS.mount.apply(null,arguments)}),syncfs:(function(mount,populate,callback){IDBFS.getLocalSet(mount,(function(err,local){if(err)return callback(err);IDBFS.getRemoteSet(mount,(function(err,remote){if(err)return callback(err);var src=populate?remote:local;var dst=populate?local:remote;IDBFS.reconcile(src,dst,callback)}))}))}),getDB:(function(name,callback){var db=IDBFS.dbs[name];if(db){return callback(null,db)}var req;try{req=IDBFS.indexedDB().open(name,IDBFS.DB_VERSION)}catch(e){return callback(e)}if(!req){return callback(\"Unable to connect to IndexedDB\")}req.onupgradeneeded=(function(e){var db=e.target.result;var transaction=e.target.transaction;var fileStore;if(db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)){fileStore=transaction.objectStore(IDBFS.DB_STORE_NAME)}else{fileStore=db.createObjectStore(IDBFS.DB_STORE_NAME)}if(!fileStore.indexNames.contains(\"timestamp\")){fileStore.createIndex(\"timestamp\",\"timestamp\",{unique:false})}});req.onsuccess=(function(){db=req.result;IDBFS.dbs[name]=db;callback(null,db)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),getLocalSet:(function(mount,callback){var entries={};function isRealDir(p){return p!==\".\"&&p!==\"..\"}function toAbsolute(root){return(function(p){return PATH.join2(root,p)})}var check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));while(check.length){var path=check.pop();var stat;try{stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path)))}entries[path]={timestamp:stat.mtime}}return callback(null,{type:\"local\",entries:entries})}),getRemoteSet:(function(mount,callback){var entries={};IDBFS.getDB(mount.mountpoint,(function(err,db){if(err)return callback(err);var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readonly\");transaction.onerror=(function(e){callback(this.error);e.preventDefault()});var store=transaction.objectStore(IDBFS.DB_STORE_NAME);var index=store.index(\"timestamp\");index.openKeyCursor().onsuccess=(function(event){var cursor=event.target.result;if(!cursor){return callback(null,{type:\"remote\",db:db,entries:entries})}entries[cursor.primaryKey]={timestamp:cursor.key};cursor.continue()})}))}),loadLocalEntry:(function(path,callback){var stat,node;try{var lookup=FS.lookupPath(path);node=lookup.node;stat=FS.stat(path)}catch(e){return callback(e)}if(FS.isDir(stat.mode)){return callback(null,{timestamp:stat.mtime,mode:stat.mode})}else if(FS.isFile(stat.mode)){node.contents=MEMFS.getFileDataAsTypedArray(node);return callback(null,{timestamp:stat.mtime,mode:stat.mode,contents:node.contents})}else{return callback(new Error(\"node type not supported\"))}}),storeLocalEntry:(function(path,entry,callback){try{if(FS.isDir(entry.mode)){FS.mkdir(path,entry.mode)}else if(FS.isFile(entry.mode)){FS.writeFile(path,entry.contents,{encoding:\"binary\",canOwn:true})}else{return callback(new Error(\"node type not supported\"))}FS.chmod(path,entry.mode);FS.utime(path,entry.timestamp,entry.timestamp)}catch(e){return callback(e)}callback(null)}),removeLocalEntry:(function(path,callback){try{var lookup=FS.lookupPath(path);var stat=FS.stat(path);if(FS.isDir(stat.mode)){FS.rmdir(path)}else if(FS.isFile(stat.mode)){FS.unlink(path)}}catch(e){return callback(e)}callback(null)}),loadRemoteEntry:(function(store,path,callback){var req=store.get(path);req.onsuccess=(function(event){callback(null,event.target.result)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),storeRemoteEntry:(function(store,path,entry,callback){var req=store.put(entry,path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),removeRemoteEntry:(function(store,path,callback){var req=store.delete(path);req.onsuccess=(function(){callback(null)});req.onerror=(function(e){callback(this.error);e.preventDefault()})}),reconcile:(function(src,dst,callback){var total=0;var create=[];Object.keys(src.entries).forEach((function(key){var e=src.entries[key];var e2=dst.entries[key];if(!e2||e.timestamp>e2.timestamp){create.push(key);total++}}));var remove=[];Object.keys(dst.entries).forEach((function(key){var e=dst.entries[key];var e2=src.entries[key];if(!e2){remove.push(key);total++}}));if(!total){return callback(null)}var completed=0;var db=src.type===\"remote\"?src.db:dst.db;var transaction=db.transaction([IDBFS.DB_STORE_NAME],\"readwrite\");var store=transaction.objectStore(IDBFS.DB_STORE_NAME);function done(err){if(err){if(!done.errored){done.errored=true;return callback(err)}return}if(++completed>=total){return callback(null)}}transaction.onerror=(function(e){done(this.error);e.preventDefault()});create.sort().forEach((function(path){if(dst.type===\"local\"){IDBFS.loadRemoteEntry(store,path,(function(err,entry){if(err)return done(err);IDBFS.storeLocalEntry(path,entry,done)}))}else{IDBFS.loadLocalEntry(path,(function(err,entry){if(err)return done(err);IDBFS.storeRemoteEntry(store,path,entry,done)}))}}));remove.sort().reverse().forEach((function(path){if(dst.type===\"local\"){IDBFS.removeLocalEntry(path,done)}else{IDBFS.removeRemoteEntry(store,path,done)}}))})};var NODEFS={isWindows:false,staticInit:(function(){NODEFS.isWindows=!!process.platform.match(/^win/)}),mount:(function(mount){assert(ENVIRONMENT_IS_NODE);return NODEFS.createNode(null,\"/\",NODEFS.getMode(mount.opts.root),0)}),createNode:(function(parent,name,mode,dev){if(!FS.isDir(mode)&&!FS.isFile(mode)&&!FS.isLink(mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=FS.createNode(parent,name,mode);node.node_ops=NODEFS.node_ops;node.stream_ops=NODEFS.stream_ops;return node}),getMode:(function(path){var stat;try{stat=fs.lstatSync(path);if(NODEFS.isWindows){stat.mode=stat.mode|(stat.mode&146)>>1}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return stat.mode}),realPath:(function(node){var parts=[];while(node.parent!==node){parts.push(node.name);node=node.parent}parts.push(node.mount.opts.root);parts.reverse();return PATH.join.apply(null,parts)}),flagsToPermissionStringMap:{0:\"r\",1:\"r+\",2:\"r+\",64:\"r\",65:\"r+\",66:\"r+\",129:\"rx+\",193:\"rx+\",514:\"w+\",577:\"w\",578:\"w+\",705:\"wx\",706:\"wx+\",1024:\"a\",1025:\"a\",1026:\"a+\",1089:\"a\",1090:\"a+\",1153:\"ax\",1154:\"ax+\",1217:\"ax\",1218:\"ax+\",4096:\"rs\",4098:\"rs+\"},flagsToPermissionString:(function(flags){flags&=~2097152;flags&=~2048;flags&=~32768;flags&=~524288;if(flags in NODEFS.flagsToPermissionStringMap){return NODEFS.flagsToPermissionStringMap[flags]}else{throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}}),node_ops:{getattr:(function(node){var path=NODEFS.realPath(node);var stat;try{stat=fs.lstatSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(NODEFS.isWindows&&!stat.blksize){stat.blksize=4096}if(NODEFS.isWindows&&!stat.blocks){stat.blocks=(stat.size+stat.blksize-1)/stat.blksize|0}return{dev:stat.dev,ino:stat.ino,mode:stat.mode,nlink:stat.nlink,uid:stat.uid,gid:stat.gid,rdev:stat.rdev,size:stat.size,atime:stat.atime,mtime:stat.mtime,ctime:stat.ctime,blksize:stat.blksize,blocks:stat.blocks}}),setattr:(function(node,attr){var path=NODEFS.realPath(node);try{if(attr.mode!==undefined){fs.chmodSync(path,attr.mode);node.mode=attr.mode}if(attr.timestamp!==undefined){var date=new Date(attr.timestamp);fs.utimesSync(path,date,date)}if(attr.size!==undefined){fs.truncateSync(path,attr.size)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),lookup:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);var mode=NODEFS.getMode(path);return NODEFS.createNode(parent,name,mode)}),mknod:(function(parent,name,mode,dev){var node=NODEFS.createNode(parent,name,mode,dev);var path=NODEFS.realPath(node);try{if(FS.isDir(node.mode)){fs.mkdirSync(path,node.mode)}else{fs.writeFileSync(path,\"\",{mode:node.mode})}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}return node}),rename:(function(oldNode,newDir,newName){var oldPath=NODEFS.realPath(oldNode);var newPath=PATH.join2(NODEFS.realPath(newDir),newName);try{fs.renameSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),unlink:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.unlinkSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),rmdir:(function(parent,name){var path=PATH.join2(NODEFS.realPath(parent),name);try{fs.rmdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readdir:(function(node){var path=NODEFS.realPath(node);try{return fs.readdirSync(path)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),symlink:(function(parent,newName,oldPath){var newPath=PATH.join2(NODEFS.realPath(parent),newName);try{fs.symlinkSync(oldPath,newPath)}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),readlink:(function(node){var path=NODEFS.realPath(node);try{path=fs.readlinkSync(path);path=NODEJS_PATH.relative(NODEJS_PATH.resolve(node.mount.opts.root),path);return path}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}})},stream_ops:{open:(function(stream){var path=NODEFS.realPath(stream.node);try{if(FS.isFile(stream.node.mode)){stream.nfd=fs.openSync(path,NODEFS.flagsToPermissionString(stream.flags))}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),close:(function(stream){try{if(FS.isFile(stream.node.mode)&&stream.nfd){fs.closeSync(stream.nfd)}}catch(e){if(!e.code)throw e;throw new FS.ErrnoError(ERRNO_CODES[e.code])}}),read:(function(stream,buffer,offset,length,position){if(length===0)return 0;var nbuffer=new Buffer(length);var res;try{res=fs.readSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}if(res>0){for(var i=0;i<res;i++){buffer[offset+i]=nbuffer[i]}}return res}),write:(function(stream,buffer,offset,length,position){var nbuffer=new Buffer(buffer.subarray(offset,offset+length));var res;try{res=fs.writeSync(stream.nfd,nbuffer,0,length,position)}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}return res}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){try{var stat=fs.fstatSync(stream.nfd);position+=stat.size}catch(e){throw new FS.ErrnoError(ERRNO_CODES[e.code])}}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};var WORKERFS={DIR_MODE:16895,FILE_MODE:33279,reader:null,mount:(function(mount){assert(ENVIRONMENT_IS_WORKER);if(!WORKERFS.reader)WORKERFS.reader=new FileReaderSync;var root=WORKERFS.createNode(null,\"/\",WORKERFS.DIR_MODE,0);var createdParents={};function ensureParent(path){var parts=path.split(\"/\");var parent=root;for(var i=0;i<parts.length-1;i++){var curr=parts.slice(0,i+1).join(\"/\");if(!createdParents[curr]){createdParents[curr]=WORKERFS.createNode(parent,parts[i],WORKERFS.DIR_MODE,0)}parent=createdParents[curr]}return parent}function base(path){var parts=path.split(\"/\");return parts[parts.length-1]}Array.prototype.forEach.call(mount.opts[\"files\"]||[],(function(file){WORKERFS.createNode(ensureParent(file.name),base(file.name),WORKERFS.FILE_MODE,0,file,file.lastModifiedDate)}));(mount.opts[\"blobs\"]||[]).forEach((function(obj){WORKERFS.createNode(ensureParent(obj[\"name\"]),base(obj[\"name\"]),WORKERFS.FILE_MODE,0,obj[\"data\"])}));(mount.opts[\"packages\"]||[]).forEach((function(pack){pack[\"metadata\"].files.forEach((function(file){var name=file.filename.substr(1);WORKERFS.createNode(ensureParent(name),base(name),WORKERFS.FILE_MODE,0,pack[\"blob\"].slice(file.start,file.end))}))}));return root}),createNode:(function(parent,name,mode,dev,contents,mtime){var node=FS.createNode(parent,name,mode);node.mode=mode;node.node_ops=WORKERFS.node_ops;node.stream_ops=WORKERFS.stream_ops;node.timestamp=(mtime||new Date).getTime();assert(WORKERFS.FILE_MODE!==WORKERFS.DIR_MODE);if(mode===WORKERFS.FILE_MODE){node.size=contents.size;node.contents=contents}else{node.size=4096;node.contents={}}if(parent){parent.contents[name]=node}return node}),node_ops:{getattr:(function(node){return{dev:1,ino:undefined,mode:node.mode,nlink:1,uid:0,gid:0,rdev:undefined,size:node.size,atime:new Date(node.timestamp),mtime:new Date(node.timestamp),ctime:new Date(node.timestamp),blksize:4096,blocks:Math.ceil(node.size/4096)}}),setattr:(function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}}),lookup:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}),mknod:(function(parent,name,mode,dev){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rename:(function(oldNode,newDir,newName){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),unlink:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),rmdir:(function(parent,name){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readdir:(function(node){var entries=[\".\",\"..\"];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries}),symlink:(function(parent,newName,oldPath){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}),readlink:(function(node){throw new FS.ErrnoError(ERRNO_CODES.EPERM)})},stream_ops:{read:(function(stream,buffer,offset,length,position){if(position>=stream.node.size)return 0;var chunk=stream.node.contents.slice(position,position+length);var ab=WORKERFS.reader.readAsArrayBuffer(chunk);buffer.set(new Uint8Array(ab),offset);return chunk.size}),write:(function(stream,buffer,offset,length,position){throw new FS.ErrnoError(ERRNO_CODES.EIO)}),llseek:(function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.size}}if(position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return position})}};STATICTOP+=16;STATICTOP+=16;STATICTOP+=16;var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:(function(e){if(!(e instanceof FS.ErrnoError))throw e+\" : \"+stackTrace();return ___setErrNo(e.errno)}),lookupPath:(function(path,opts){path=PATH.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}var parts=PATH.normalizeArray(path.split(\"/\").filter((function(p){return!!p})),false);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(ERRNO_CODES.ELOOP)}}}}return{path:current_path,node:current}}),getPath:(function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?mount+\"/\"+path:mount+path}path=path?node.name+\"/\"+path:node.name;node=node.parent}}),hashName:(function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length}),hashAddNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node}),hashRemoveNode:(function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}}),lookupNode:(function(parent,name){var err=FS.mayLookup(parent);if(err){throw new FS.ErrnoError(err,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)}),createNode:(function(parent,name,mode,rdev){if(!FS.FSNode){FS.FSNode=(function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev});FS.FSNode.prototype={};var readMode=292|73;var writeMode=146;Object.defineProperties(FS.FSNode.prototype,{read:{get:(function(){return(this.mode&readMode)===readMode}),set:(function(val){val?this.mode|=readMode:this.mode&=~readMode})},write:{get:(function(){return(this.mode&writeMode)===writeMode}),set:(function(val){val?this.mode|=writeMode:this.mode&=~writeMode})},isFolder:{get:(function(){return FS.isDir(this.mode)})},isDevice:{get:(function(){return FS.isChrdev(this.mode)})}})}var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node}),destroyNode:(function(node){FS.hashRemoveNode(node)}),isRoot:(function(node){return node===node.parent}),isMountpoint:(function(node){return!!node.mounted}),isFile:(function(mode){return(mode&61440)===32768}),isDir:(function(mode){return(mode&61440)===16384}),isLink:(function(mode){return(mode&61440)===40960}),isChrdev:(function(mode){return(mode&61440)===8192}),isBlkdev:(function(mode){return(mode&61440)===24576}),isFIFO:(function(mode){return(mode&61440)===4096}),isSocket:(function(mode){return(mode&49152)===49152}),flagModes:{\"r\":0,\"rs\":1052672,\"r+\":2,\"w\":577,\"wx\":705,\"xw\":705,\"w+\":578,\"wx+\":706,\"xw+\":706,\"a\":1089,\"ax\":1217,\"xa\":1217,\"a+\":1090,\"ax+\":1218,\"xa+\":1218},modeStringToFlags:(function(str){var flags=FS.flagModes[str];if(typeof flags===\"undefined\"){throw new Error(\"Unknown file open mode: \"+str)}return flags}),flagsToPermissionString:(function(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms}),nodePermissions:(function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf(\"r\")!==-1&&!(node.mode&292)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"w\")!==-1&&!(node.mode&146)){return ERRNO_CODES.EACCES}else if(perms.indexOf(\"x\")!==-1&&!(node.mode&73)){return ERRNO_CODES.EACCES}return 0}),mayLookup:(function(dir){var err=FS.nodePermissions(dir,\"x\");if(err)return err;if(!dir.node_ops.lookup)return ERRNO_CODES.EACCES;return 0}),mayCreate:(function(dir,name){try{var node=FS.lookupNode(dir,name);return ERRNO_CODES.EEXIST}catch(e){}return FS.nodePermissions(dir,\"wx\")}),mayDelete:(function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var err=FS.nodePermissions(dir,\"wx\");if(err){return err}if(isdir){if(!FS.isDir(node.mode)){return ERRNO_CODES.ENOTDIR}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return ERRNO_CODES.EBUSY}}else{if(FS.isDir(node.mode)){return ERRNO_CODES.EISDIR}}return 0}),mayOpen:(function(node,flags){if(!node){return ERRNO_CODES.ENOENT}if(FS.isLink(node.mode)){return ERRNO_CODES.ELOOP}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return ERRNO_CODES.EISDIR}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))}),MAX_OPEN_FDS:4096,nextfd:(function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(ERRNO_CODES.EMFILE)}),getStream:(function(fd){return FS.streams[fd]}),createStream:(function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=(function(){});FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get:(function(){return this.node}),set:(function(val){this.node=val})},isRead:{get:(function(){return(this.flags&2097155)!==1})},isWrite:{get:(function(){return(this.flags&2097155)!==0})},isAppend:{get:(function(){return this.flags&1024})}})}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream}),closeStream:(function(fd){FS.streams[fd]=null}),chrdev_stream_ops:{open:(function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}}),llseek:(function(){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)})},major:(function(dev){return dev>>8}),minor:(function(dev){return dev&255}),makedev:(function(ma,mi){return ma<<8|mi}),registerDevice:(function(dev,ops){FS.devices[dev]={stream_ops:ops}}),getDevice:(function(dev){return FS.devices[dev]}),getMounts:(function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts}),syncfs:(function(populate,callback){if(typeof populate===\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){console.log(\"warning: \"+FS.syncFSRequests+\" FS.syncfs operations in flight at once, probably just doing extra work\")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(err){assert(FS.syncFSRequests>0);FS.syncFSRequests--;return callback(err)}function done(err){if(err){if(!done.errored){done.errored=true;return doCallback(err)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach((function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)}))}),mount:(function(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot}),unmount:(function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach((function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}}));node.mounted=null;var idx=node.mount.mounts.indexOf(mount);assert(idx!==-1);node.mount.mounts.splice(idx,1)}),lookup:(function(parent,name){return parent.node_ops.lookup(parent,name)}),mknod:(function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.mayCreate(parent,name);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.mknod(parent,name,mode,dev)}),create:(function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)}),mkdir:(function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)}),mkdirTree:(function(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=ERRNO_CODES.EEXIST)throw e}}}),mkdev:(function(path,mode,dev){if(typeof dev===\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)}),symlink:(function(oldpath,newpath){if(!PATH.resolve(oldpath)){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}var newname=PATH.basename(newpath);var err=FS.mayCreate(parent,newname);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return parent.node_ops.symlink(parent,newname,oldpath)}),rename:(function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;try{lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(!old_dir||!new_dir)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(ERRNO_CODES.EXDEV)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}relative=PATH.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var err=FS.mayDelete(old_dir,old_name,isdir);if(err){throw new FS.ErrnoError(err)}err=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(err){throw new FS.ErrnoError(err)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}if(new_dir!==old_dir){err=FS.nodePermissions(old_dir,\"w\");if(err){throw new FS.ErrnoError(err)}}try{if(FS.trackingDelegate[\"willMovePath\"]){FS.trackingDelegate[\"willMovePath\"](old_path,new_path)}}catch(e){console.log(\"FS.trackingDelegate['willMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate[\"onMovePath\"])FS.trackingDelegate[\"onMovePath\"](old_path,new_path)}catch(e){console.log(\"FS.trackingDelegate['onMovePath']('\"+old_path+\"', '\"+new_path+\"') threw an exception: \"+e.message)}}),rmdir:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,true);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}return node.node_ops.readdir(node)}),unlink:(function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var err=FS.mayDelete(parent,name,false);if(err){throw new FS.ErrnoError(err)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(ERRNO_CODES.EBUSY)}try{if(FS.trackingDelegate[\"willDeletePath\"]){FS.trackingDelegate[\"willDeletePath\"](path)}}catch(e){console.log(\"FS.trackingDelegate['willDeletePath']('\"+path+\"') threw an exception: \"+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate[\"onDeletePath\"])FS.trackingDelegate[\"onDeletePath\"](path)}catch(e){console.log(\"FS.trackingDelegate['onDeletePath']('\"+path+\"') threw an exception: \"+e.message)}}),readlink:(function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!link.node_ops.readlink){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}return PATH.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))}),stat:(function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!node.node_ops.getattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}return node.node_ops.getattr(node)}),lstat:(function(path){return FS.stat(path,true)}),chmod:(function(path,mode,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})}),lchmod:(function(path,mode){FS.chmod(path,mode,true)}),fchmod:(function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chmod(stream.node,mode)}),chown:(function(path,uid,gid,dontFollow){var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}node.node_ops.setattr(node,{timestamp:Date.now()})}),lchown:(function(path,uid,gid){FS.chown(path,uid,gid,true)}),fchown:(function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}FS.chown(stream.node,uid,gid)}),truncate:(function(path,len){if(len<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var node;if(typeof path===\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(ERRNO_CODES.EPERM)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var err=FS.nodePermissions(node,\"w\");if(err){throw new FS.ErrnoError(err)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})}),ftruncate:(function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}FS.truncate(stream.node,len)}),utime:(function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})}),open:(function(path,flags,mode,fd_start,fd_end){if(path===\"\"){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}flags=typeof flags===\"string\"?FS.modeStringToFlags(flags):flags;mode=typeof mode===\"undefined\"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path===\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(ERRNO_CODES.EEXIST)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}if(!created){var err=FS.mayOpen(node,flags);if(err){throw new FS.ErrnoError(err)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;Module[\"printErr\"](\"read file: \"+path)}}try{if(FS.trackingDelegate[\"onOpenFile\"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate[\"onOpenFile\"](path,trackingFlags)}}catch(e){console.log(\"FS.trackingDelegate['onOpenFile']('\"+path+\"', flags) threw an exception: \"+e.message)}return stream}),close:(function(stream){if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}}),llseek:(function(stream,offset,whence){if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position}),read:(function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.read){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}var seeking=true;if(typeof position===\"undefined\"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead}),write:(function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.EISDIR)}if(!stream.stream_ops.write){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if(stream.flags&1024){FS.llseek(stream,0,2)}var seeking=true;if(typeof position===\"undefined\"){position=stream.position;seeking=false}else if(!stream.seekable){throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate[\"onWriteToFile\"])FS.trackingDelegate[\"onWriteToFile\"](stream.path)}catch(e){console.log(\"FS.trackingDelegate['onWriteToFile']('\"+path+\"') threw an exception: \"+e.message)}return bytesWritten}),allocate:(function(stream,offset,length){if(offset<0||length<=0){throw new FS.ErrnoError(ERRNO_CODES.EINVAL)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(ERRNO_CODES.EBADF)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP)}stream.stream_ops.allocate(stream,offset,length)}),mmap:(function(stream,buffer,offset,length,position,prot,flags){if((stream.flags&2097155)===1){throw new FS.ErrnoError(ERRNO_CODES.EACCES)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(ERRNO_CODES.ENODEV)}return stream.stream_ops.mmap(stream,buffer,offset,length,position,prot,flags)}),msync:(function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)}),munmap:(function(stream){return 0}),ioctl:(function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(ERRNO_CODES.ENOTTY)}return stream.stream_ops.ioctl(stream,cmd,arg)}),readFile:(function(path,opts){opts=opts||{};opts.flags=opts.flags||\"r\";opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret}),writeFile:(function(path,data,opts){opts=opts||{};opts.flags=opts.flags||\"w\";opts.encoding=opts.encoding||\"utf8\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error('Invalid encoding type \"'+opts.encoding+'\"')}var stream=FS.open(path,opts.flags,opts.mode);if(opts.encoding===\"utf8\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,0,opts.canOwn)}else if(opts.encoding===\"binary\"){FS.write(stream,data,0,data.length,0,opts.canOwn)}FS.close(stream)}),cwd:(function(){return FS.currentPath}),chdir:(function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(ERRNO_CODES.ENOENT)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR)}var err=FS.nodePermissions(lookup.node,\"x\");if(err){throw new FS.ErrnoError(err)}FS.currentPath=lookup.path}),createDefaultDirectories:(function(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")}),createDefaultDevices:(function(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:(function(){return 0}),write:(function(stream,buffer,offset,length,pos){return length})});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var random_device;if(typeof crypto!==\"undefined\"){var randomBuffer=new Uint8Array(1);random_device=(function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]})}else if(ENVIRONMENT_IS_NODE){random_device=(function(){return require(\"crypto\").randomBytes(1)[0]})}else{random_device=(function(){return Math.random()*256|0})}FS.createDevice(\"/dev\",\"random\",random_device);FS.createDevice(\"/dev\",\"urandom\",random_device);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")}),createSpecialDirectories:(function(){FS.mkdir(\"/proc\");FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount:(function(){var node=FS.createNode(\"/proc/self\",\"fd\",16384|511,73);node.node_ops={lookup:(function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:(function(){return stream.path})}};ret.parent=ret;return ret})};return node})},{},\"/proc/self/fd\")}),createStandardStreams:(function(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",\"r\");assert(stdin.fd===0,\"invalid handle for stdin (\"+stdin.fd+\")\");var stdout=FS.open(\"/dev/stdout\",\"w\");assert(stdout.fd===1,\"invalid handle for stdout (\"+stdout.fd+\")\");var stderr=FS.open(\"/dev/stderr\",\"w\");assert(stderr.fd===2,\"invalid handle for stderr (\"+stderr.fd+\")\")}),ensureErrnoError:(function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=(function(errno){this.errno=errno;for(var key in ERRNO_CODES){if(ERRNO_CODES[key]===errno){this.code=key;break}}});this.setErrno(errno);this.message=ERRNO_MESSAGES[errno]};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[ERRNO_CODES.ENOENT].forEach((function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"}))}),staticInit:(function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={\"MEMFS\":MEMFS,\"IDBFS\":IDBFS,\"NODEFS\":NODEFS,\"WORKERFS\":WORKERFS}}),init:(function(input,output,error){assert(!FS.init.initialized,\"FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)\");FS.init.initialized=true;FS.ensureErrnoError();Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()}),quit:(function(){FS.init.initialized=false;var fflush=Module[\"_fflush\"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}}),getMode:(function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode}),joinPath:(function(parts,forceRelative){var path=PATH.join.apply(null,parts);if(forceRelative&&path[0]==\"/\")path=path.substr(1);return path}),absolutePath:(function(relative,base){return PATH.resolve(base,relative)}),standardizePath:(function(path){return PATH.normalize(path)}),findObject:(function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{___setErrNo(ret.error);return null}}),analyzePath:(function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret}),createFolder:(function(parent,name,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.mkdir(path,mode)}),createPath:(function(parent,path,canRead,canWrite){parent=typeof parent===\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current}),createFile:(function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)}),createDataFile:(function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data===\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,\"w\");FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node}),createDevice:(function(parent,name,input,output){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:(function(stream){stream.seekable=false}),close:(function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}}),read:(function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead}),write:(function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EIO)}}if(length){stream.node.timestamp=Date.now()}return i})});return FS.mkdev(path,mode,dev)}),createLink:(function(parent,name,target,canRead,canWrite){var path=PATH.join2(typeof parent===\"string\"?parent:FS.getPath(parent),name);return FS.symlink(target,path)}),forceLoadFile:(function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;var success=true;if(typeof XMLHttpRequest!==\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(Module[\"read\"]){try{obj.contents=intArrayFromString(Module[\"read\"](obj.url),true);obj.usedBytes=obj.contents.length}catch(e){success=false}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}if(!success)___setErrNo(ERRNO_CODES.EIO);return success}),createLazyFile:(function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(function(from,to){if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);if(typeof Uint8Array!=\"undefined\")xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||\"\",true)}});var lazyArray=this;lazyArray.setDataGetter((function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]===\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]===\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]}));if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;console.log(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!==\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._length})},chunkSize:{get:(function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize})}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:(function(){return this.contents.length})}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach((function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}return fn.apply(null,arguments)}}));stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){if(!FS.forceLoadFile(node)){throw new FS.ErrnoError(ERRNO_CODES.EIO)}var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);assert(size>=0);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node}),createPreloadedFile:(function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(\"cp \"+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module[\"preloadPlugins\"].forEach((function(plugin){if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,(function(){if(onerror)onerror();removeRunDependency(dep)}));handled=true}}));if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){Browser.asyncLoad(url,(function(byteArray){processData(byteArray)}),onerror)}else{processData(url)}}),indexedDB:(function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB}),DB_NAME:(function(){return\"EM_FS_\"+window.location.pathname}),DB_VERSION:20,DB_STORE_NAME:\"FILE_DATA\",saveFilesToDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){console.log(\"creating db\");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],\"readwrite\");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror}),loadFilesFromDB:(function(paths,onload,onerror){onload=onload||(function(){});onerror=onerror||(function(){});var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],\"readonly\")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach((function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}}));transaction.onerror=onerror};openRequest.onerror=onerror})};var SYSCALLS={DEFAULT_POLLMASK:5,mappings:{},umask:511,calculateAt:(function(dirfd,path){if(path[0]!==\"/\"){var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);dir=dirstream.path}path=PATH.join2(dir,path)}return path}),doStat:(function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-ERRNO_CODES.ENOTDIR}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;HEAP32[buf+36>>2]=stat.size;HEAP32[buf+40>>2]=4096;HEAP32[buf+44>>2]=stat.blocks;HEAP32[buf+48>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+52>>2]=0;HEAP32[buf+56>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ino;return 0}),doMsync:(function(addr,stream,len,flags){var buffer=new Uint8Array(HEAPU8.subarray(addr,addr+len));FS.msync(stream,buffer,0,len,flags)}),doMkdir:(function(path,mode){path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}),doMknod:(function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-ERRNO_CODES.EINVAL}FS.mknod(path,mode,dev);return 0}),doReadlink:(function(path,buf,bufsize){if(bufsize<=0)return-ERRNO_CODES.EINVAL;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}),doAccess:(function(path,amode){if(amode&~7){return-ERRNO_CODES.EINVAL}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-ERRNO_CODES.EACCES}return 0}),doDup:(function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd}),doReadv:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret}),doWritev:(function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret}),varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),getStreamFromFD:(function(){var stream=FS.getStream(SYSCALLS.get());if(!stream)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return stream}),getSocketFromFD:(function(){var socket=SOCKFS.getSocket(SYSCALLS.get());if(!socket)throw new FS.ErrnoError(ERRNO_CODES.EBADF);return socket}),getSocketAddress:(function(allowNull){var addrp=SYSCALLS.get(),addrlen=SYSCALLS.get();if(allowNull&&addrp===0)return null;var info=__read_sockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall192(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get(),prot=SYSCALLS.get(),flags=SYSCALLS.get(),fd=SYSCALLS.get(),off=SYSCALLS.get();off<<=12;var ptr;var allocated=false;if(fd===-1){ptr=_memalign(PAGE_SIZE,len);if(!ptr)return-ERRNO_CODES.ENOMEM;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-ERRNO_CODES.EBADF;var res=FS.mmap(info,HEAPU8,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,flags:flags};return ptr}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall195(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall197(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),buf=SYSCALLS.get();return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___lock(){}function ___unlock(){}Module[\"_i64Add\"]=_i64Add;function _realloc(){throw\"bad\"}Module[\"_realloc\"]=_realloc;Module[\"_saveSetjmp\"]=_saveSetjmp;var _environ=STATICTOP;STATICTOP+=16;function ___buildEnvironment(env){var MAX_ENV_VALUES=64;var TOTAL_ENV_SIZE=1024;var poolPtr;var envPtr;if(!___buildEnvironment.called){___buildEnvironment.called=true;ENV[\"USER\"]=ENV[\"LOGNAME\"]=\"web_user\";ENV[\"PATH\"]=\"/\";ENV[\"PWD\"]=\"/\";ENV[\"HOME\"]=\"/home/web_user\";ENV[\"LANG\"]=\"C\";ENV[\"_\"]=Module[\"thisProgram\"];poolPtr=allocate(TOTAL_ENV_SIZE,\"i8\",ALLOC_STATIC);envPtr=allocate(MAX_ENV_VALUES*4,\"i8*\",ALLOC_STATIC);HEAP32[envPtr>>2]=poolPtr;HEAP32[_environ>>2]=envPtr}else{envPtr=HEAP32[_environ>>2];poolPtr=HEAP32[envPtr>>2]}var strings=[];var totalSize=0;for(var key in env){if(typeof env[key]===\"string\"){var line=key+\"=\"+env[key];strings.push(line);totalSize+=line.length}}if(totalSize>TOTAL_ENV_SIZE){throw new Error(\"Environment size exceeded TOTAL_ENV_SIZE!\")}var ptrSize=4;for(var i=0;i<strings.length;i++){var line=strings[i];writeAsciiToMemory(line,poolPtr);HEAP32[envPtr+i*ptrSize>>2]=poolPtr;poolPtr+=line.length+1}HEAP32[envPtr+strings.length*ptrSize>>2]=0}var ENV={};function _setenv(envname,envval,overwrite){if(envname===0){___setErrNo(ERRNO_CODES.EINVAL);return-1}var name=Pointer_stringify(envname);var val=Pointer_stringify(envval);if(name===\"\"||name.indexOf(\"=\")!==-1){___setErrNo(ERRNO_CODES.EINVAL);return-1}if(ENV.hasOwnProperty(name)&&!overwrite)return 0;ENV[name]=val;___buildEnvironment(ENV);return 0}function __exit(status){Module[\"exit\"](status)}function _exit(status){__exit(status)}function ___syscall91(which,varargs){SYSCALLS.varargs=varargs;try{var addr=SYSCALLS.get(),len=SYSCALLS.get();var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);SYSCALLS.doMsync(addr,stream,len,info.flags);FS.munmap(stream);SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),op=SYSCALLS.get();switch(op){case 21505:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21506:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};case 21519:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0};case 21520:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return-ERRNO_CODES.EINVAL};case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)};case 21523:{if(!stream.tty)return-ERRNO_CODES.ENOTTY;return 0};default:abort(\"bad ioctl syscall \"+op)}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module[\"_bitshift64Lshr\"]=_bitshift64Lshr;Module[\"_testSetjmp\"]=_testSetjmp;function _longjmp(env,value){Module[\"setThrew\"](env,value||1);throw\"longjmp\"}function _llvm_trap(){abort(\"trap!\")}function ___syscall33(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr(),amode=SYSCALLS.get();return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_get_now(){abort()}function _emscripten_get_now_is_monotonic(){return ENVIRONMENT_IS_NODE||typeof dateNow!==\"undefined\"||(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&self[\"performance\"]&&self[\"performance\"][\"now\"]}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if(clk_id===1&&_emscripten_get_now_is_monotonic()){now=_emscripten_get_now()}else{___setErrNo(ERRNO_CODES.EINVAL);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(){return _clock_gettime.apply(null,arguments)}function ___syscall10(which,varargs){SYSCALLS.varargs=varargs;try{var path=SYSCALLS.getStr();FS.unlink(path);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___map_file(pathname,size){___setErrNo(ERRNO_CODES.EPERM);return-1}function _getenv(name){if(name===0)return 0;name=Pointer_stringify(name);if(!ENV.hasOwnProperty(name))return 0;if(_getenv.ret)_free(_getenv.ret);_getenv.ret=allocate(intArrayFromString(ENV[name]),\"i8\",ALLOC_NORMAL);return _getenv.ret}function ___syscall5(which,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(),flags=SYSCALLS.get(),mode=SYSCALLS.get();var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module[\"_memcpy\"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);Module[\"_llvm_cttz_i32\"]=_llvm_cttz_i32;Module[\"___udivmoddi4\"]=___udivmoddi4;Module[\"___udivdi3\"]=___udivdi3;Module[\"___muldsi3\"]=___muldsi3;Module[\"___muldi3\"]=___muldi3;var _llvm_pow_f64=Math_pow;Module[\"_sbrk\"]=_sbrk;Module[\"_memmove\"]=_memmove;Module[\"___uremdi3\"]=___uremdi3;function _times(buffer){if(buffer!==0){_memset(buffer,0,16)}return 0}function _abort(){Module[\"abort\"]()}Module[\"_llvm_bswap_i32\"]=_llvm_bswap_i32;Module[\"_llvm_bswap_i16\"]=_llvm_bswap_i16;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doWritev(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall221(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),cmd=SYSCALLS.get();switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-ERRNO_CODES.EINVAL}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd};case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0};case 12:case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0};case 13:case 14:case 13:case 14:return 0;case 16:case 8:return-ERRNO_CODES.EINVAL;case 9:___setErrNo(ERRNO_CODES.EINVAL);return-1;default:{return-ERRNO_CODES.EINVAL}}}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall145(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();return SYSCALLS.doReadv(stream,iov,iovcnt)}catch(e){if(typeof FS===\"undefined\"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}FS.staticInit();__ATINIT__.unshift((function(){if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init()}));__ATMAIN__.push((function(){FS.ignorePermissions=false}));__ATEXIT__.push((function(){FS.quit()}));__ATINIT__.unshift((function(){TTY.init()}));__ATEXIT__.push((function(){TTY.shutdown()}));if(ENVIRONMENT_IS_NODE){var fs=require(\"fs\");var NODEJS_PATH=require(\"path\");NODEFS.staticInit()}___buildEnvironment(ENV);if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function _emscripten_get_now_actual(){var t=process[\"hrtime\"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!==\"undefined\"){_emscripten_get_now=dateNow}else if(typeof self===\"object\"&&self[\"performance\"]&&typeof self[\"performance\"][\"now\"]===\"function\"){_emscripten_get_now=(function(){return self[\"performance\"][\"now\"]()})}else if(typeof performance===\"object\"&&typeof performance[\"now\"]===\"function\"){_emscripten_get_now=(function(){return performance[\"now\"]()})}else{_emscripten_get_now=Date.now}DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module[\"dynCall_iiii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_d(index){try{return Module[\"dynCall_d\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module[\"dynCall_viiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_i(index){try{return Module[\"dynCall_i\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vi(index,a1){try{Module[\"dynCall_vi\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_vii(index,a1,a2){try{Module[\"dynCall_vii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module[\"dynCall_iiiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiddi(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiddi\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_ii(index,a1){try{return Module[\"dynCall_ii\"](index,a1)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_dddd(index,a1,a2,a3){try{return Module[\"dynCall_dddd\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module[\"dynCall_viii\"](index,a1,a2,a3)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_v(index){try{Module[\"dynCall_v\"](index)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiii(index,a1,a2,a3,a4){try{return Module[\"dynCall_iiiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module[\"dynCall_viiiiii\"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iii(index,a1,a2){try{return Module[\"dynCall_iii\"](index,a1,a2)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_iiiiii(index,a1,a2,a3,a4,a5){try{return Module[\"dynCall_iiiiii\"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module[\"dynCall_viiii\"](index,a1,a2,a3,a4)}catch(e){if(typeof e!==\"number\"&&e!==\"longjmp\")throw e;Module[\"setThrew\"](1,0)}}Module.asmGlobalArg={\"Math\":Math,\"Int8Array\":Int8Array,\"Int16Array\":Int16Array,\"Int32Array\":Int32Array,\"Uint8Array\":Uint8Array,\"Uint16Array\":Uint16Array,\"Uint32Array\":Uint32Array,\"Float32Array\":Float32Array,\"Float64Array\":Float64Array,\"NaN\":NaN,\"Infinity\":Infinity};Module.asmLibraryArg={\"abort\":abort,\"assert\":assert,\"enlargeMemory\":enlargeMemory,\"getTotalMemory\":getTotalMemory,\"abortOnCannotGrowMemory\":abortOnCannotGrowMemory,\"invoke_iiii\":invoke_iiii,\"invoke_d\":invoke_d,\"invoke_viiiii\":invoke_viiiii,\"invoke_i\":invoke_i,\"invoke_vi\":invoke_vi,\"invoke_vii\":invoke_vii,\"invoke_iiiiiii\":invoke_iiiiiii,\"invoke_viiiddi\":invoke_viiiddi,\"invoke_ii\":invoke_ii,\"invoke_dddd\":invoke_dddd,\"invoke_viii\":invoke_viii,\"invoke_v\":invoke_v,\"invoke_iiiii\":invoke_iiiii,\"invoke_viiiiii\":invoke_viiiiii,\"invoke_iii\":invoke_iii,\"invoke_iiiiii\":invoke_iiiiii,\"invoke_viiii\":invoke_viiii,\"___syscall221\":___syscall221,\"_emscripten_get_now_is_monotonic\":_emscripten_get_now_is_monotonic,\"_llvm_pow_f64\":_llvm_pow_f64,\"___syscall6\":___syscall6,\"_setenv\":_setenv,\"___assert_fail\":___assert_fail,\"___buildEnvironment\":___buildEnvironment,\"_longjmp\":_longjmp,\"_clock_gettime\":_clock_gettime,\"_times\":_times,\"___setErrNo\":___setErrNo,\"___syscall192\":___syscall192,\"___syscall197\":___syscall197,\"_emscripten_get_now\":_emscripten_get_now,\"___syscall195\":___syscall195,\"__exit\":__exit,\"_emscripten_memcpy_big\":_emscripten_memcpy_big,\"___syscall91\":___syscall91,\"_getenv\":_getenv,\"___map_file\":___map_file,\"___syscall33\":___syscall33,\"___syscall54\":___syscall54,\"___unlock\":___unlock,\"_emscripten_asm_const_iii\":_emscripten_asm_const_iii,\"___syscall10\":___syscall10,\"___lock\":___lock,\"_abort\":_abort,\"___syscall5\":___syscall5,\"___clock_gettime\":___clock_gettime,\"___syscall140\":___syscall140,\"_llvm_trap\":_llvm_trap,\"_exit\":_exit,\"___syscall145\":___syscall145,\"___syscall146\":___syscall146,\"DYNAMICTOP_PTR\":DYNAMICTOP_PTR,\"tempDoublePtr\":tempDoublePtr,\"ABORT\":ABORT,\"STACKTOP\":STACKTOP,\"STACK_MAX\":STACK_MAX,\"cttz_i8\":cttz_i8};// EMSCRIPTEN_START_ASM\nvar asm=(function(global,env,buffer) {\n\"use asm\";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.DYNAMICTOP_PTR|0;var j=env.tempDoublePtr|0;var k=env.ABORT|0;var l=env.STACKTOP|0;var m=env.STACK_MAX|0;var n=env.cttz_i8|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=global.Math.floor;var F=global.Math.abs;var G=global.Math.sqrt;var H=global.Math.pow;var I=global.Math.cos;var J=global.Math.sin;var K=global.Math.tan;var L=global.Math.acos;var M=global.Math.asin;var N=global.Math.atan;var O=global.Math.atan2;var P=global.Math.exp;var Q=global.Math.log;var R=global.Math.ceil;var S=global.Math.imul;var T=global.Math.min;var U=global.Math.max;var V=global.Math.clz32;var W=env.abort;var X=env.assert;var Y=env.enlargeMemory;var Z=env.getTotalMemory;var _=env.abortOnCannotGrowMemory;var $=env.invoke_iiii;var aa=env.invoke_d;var ba=env.invoke_viiiii;var ca=env.invoke_i;var da=env.invoke_vi;var ea=env.invoke_vii;var fa=env.invoke_iiiiiii;var ga=env.invoke_viiiddi;var ha=env.invoke_ii;var ia=env.invoke_dddd;var ja=env.invoke_viii;var ka=env.invoke_v;var la=env.invoke_iiiii;var ma=env.invoke_viiiiii;var na=env.invoke_iii;var oa=env.invoke_iiiiii;var pa=env.invoke_viiii;var qa=env.___syscall221;var ra=env._emscripten_get_now_is_monotonic;var sa=env._llvm_pow_f64;var ta=env.___syscall6;var ua=env._setenv;var va=env.___assert_fail;var wa=env.___buildEnvironment;var xa=env._longjmp;var ya=env._clock_gettime;var za=env._times;var Aa=env.___setErrNo;var Ba=env.___syscall192;var Ca=env.___syscall197;var Da=env._emscripten_get_now;var Ea=env.___syscall195;var Fa=env.__exit;var Ga=env._emscripten_memcpy_big;var Ha=env.___syscall91;var Ia=env._getenv;var Ja=env.___map_file;var Ka=env.___syscall33;var La=env.___syscall54;var Ma=env.___unlock;var Na=env._emscripten_asm_const_iii;var Oa=env.___syscall10;var Pa=env.___lock;var Qa=env._abort;var Ra=env.___syscall5;var Sa=env.___clock_gettime;var Ta=env.___syscall140;var Ua=env._llvm_trap;var Va=env._exit;var Wa=env.___syscall145;var Xa=env.___syscall146;var Ya=0.0;\n// EMSCRIPTEN_START_FUNCS\nfunction cr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(d|0){e=ym(c[c[42047]>>2]|0,2,b,0)|0;if(!e)e=ym(c[c[42047]>>2]|0,2,b,174318)|0;Cm(a,e,d)|0}return}function dr(a,b,d){a=a|0;b=b|0;d=d|0;c[42014]=b;c[42046]=a;c[41994]=0;a=d|0?d:17660;c[42049]=a;gp(a,b);Bq()|0;a=c[41994]|0;if(!a){Fp();a=c[41994]|0}return a|0}function er(a,b){a=a|0;b=b|0;return dr(0,a,b)|0}function fr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;d=c[b+76>>2]|0;f=c[b>>2]|0;i=b+12|0;if((d|0)!=0?(e=c[d>>2]|0,(e|0)!=0):0){bb[e&127](b);g=12}else g=4;do if((g|0)==4)if((c[b+40>>2]|0)==0?(h=b+36|0,(c[h>>2]|0)==0):0){if(a[f+13>>0]|0)gr(b);d=b+32|0;e=c[d>>2]|0;if(!e){c[h>>2]=c[13982];g=12;break}f=uL(e,91516)|0;c[h>>2]=f;if(!f){k=c[(c[i>>2]|0)+16>>2]|0;i=c[d>>2]|0;d=LJ(c[(bJ()|0)>>2]|0)|0;c[j>>2]=i;c[j+4>>2]=d;cb[k&31](83148,j);d=1}else g=12}else g=12;while(0);if((g|0)==12)if(!(c[b+152>>2]&1024))d=0;else{cb[c[(c[i>>2]|0)+16>>2]&31](83186,k);d=1}l=m;return d|0}function gr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+112|0;e=h;g=h+4|0;d=c[b+24>>2]|0;if(!d)a[g>>0]=0;else{c[e>>2]=d+1;yJ(g,83204,e)|0}e=c[b+20>>2]|0;e=e|0?e:83208;d=TK(e)|0;i=TK(g)|0;f=b+52|0;i=d+1+i+(TK(c[f>>2]|0)|0)|0;d=i+11|0;if((c[42050]|0)>>>0<(i+1|0)>>>0){c[42050]=d;d=zN(c[42051]|0,d)|0;c[42051]=d}else d=c[42051]|0;cL(d,e)|0;sN(c[42051]|0,g)|0;d=c[42051]|0;d=d+(TK(d)|0)|0;a[d>>0]=46;a[d+1>>0]=0;d=mL(c[f>>2]|0)|0;f=c[42051]|0;while(1){e=XL(d,58)|0;if(!e)break;sN(f,e+1|0)|0;i=c[42051]|0;g=i+(TK(i)|0)|0;a[g>>0]=46;a[g+1>>0]=0;a[e>>0]=0;f=i}sN(f,d)|0;xN(d);c[b+32>>2]=c[42051];l=h;return}function hr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i+8|0;g=i;if((b|0)!=0&(d|0)!=0){f=a+12|0;if(c[a+152>>2]&1024|0){cb[c[(c[f>>2]|0)+16>>2]&31](83186,g);Va(1)}if((ir(a,b,d)|0)==(d|0))e=d;else{g=c[(c[f>>2]|0)+16>>2]|0;c[h>>2]=d;cb[g&31](83218,h);Va(1)}}else e=0;l=i;return e|0}function ir(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=c[(c[b>>2]|0)+104>>2]|0;do if(!f){j=b+40|0;h=c[j>>2]|0;if(!h){e=oL(d,1,e,c[b+36>>2]|0)|0;break}f=b+44|0;i=b+48|0;g=c[i>>2]|0;do if(((c[f>>2]|0)+-1-g|0)>>>0<e>>>0){g=e+4096+g&-4096;c[f>>2]=g;f=zN(h,g)|0;c[j>>2]=f;if(!f){cb[c[(c[b+12>>2]|0)+16>>2]&31](83243,n);Va(1)}else{k=f;m=c[i>>2]|0;break}}else{k=h;m=g}while(0);MN(k+m|0,d|0,e|0)|0;n=(c[i>>2]|0)+e|0;c[i>>2]=n;a[(c[j>>2]|0)+n>>0]=0}else e=Za[f&31](b,d,e)|0;while(0);l=o;return e|0}function jr(a,b){a=a|0;b=b|0;var c=0;c=TK(b)|0;b=(hr(a,b,c)|0)==(c|0);return (b?1:-1)|0}function kr(b,c){b=b|0;c=c|0;var d=0,e=0;d=l;l=l+16|0;e=d;a[e>>0]=c;b=(hr(b,e,1)|0)==1;l=d;return (b?c:-1)|0}function lr(b){b=b|0;var d=0;d=c[b+36>>2]|0;if(((d|0)!=0?(a[b+144>>0]|0)==0:0)?(c[(c[b>>2]|0)+104>>2]|0)==0:0)b=BL(d)|0;else b=0;return b|0}function mr(a){a=a|0;var b=0,d=0;b=c[a+76>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)bb[d&127](a);lr(a)|0;return}function nr(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=c[a+76>>2]|0;if(c[a+152>>2]&1024|0){cb[c[(c[a+12>>2]|0)+16>>2]&31](83270,e);Va(1)}if((d|0)!=0?(b=c[d+8>>2]|0,(b|0)!=0):0)bb[b&127](a);else{lr(a)|0;or(a)}l=e;return}function or(b){b=b|0;var d=0,e=0,f=0;d=b+32|0;if((c[d>>2]|0?(e=b+36|0,f=c[e>>2]|0,(f|0)!=(c[13982]|0)):0)?(a[b+144>>0]|0)==0:0){if(f|0){AL(f)|0;c[e>>2]=0}c[d>>2]=0}return}function pr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;f=i;h=i+24|0;g=i+8|0;c[g>>2]=d;e=AJ(h,1024,b,g)|0;if((e|0)>=0){if((e|0)>1023){e=tw(e+1|0)|0;c[g>>2]=d;f=e;e=zJ(e,b,g)|0}else f=h;hr(a,f,e)|0;if((f|0)!=(h|0))xN(f)}else{c[f>>2]=LJ(c[(bJ()|0)>>2]|0)|0;_l(1,83287,f)|0}l=i;return}function qr(a,b){a=a|0;b=+b;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=rr(e,b)|0;hr(a,f,c[e>>2]|0)|0;l=d;return}function rr(b,d){b=b|0;d=+d;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(d<-1.0e15))if(!(d>1.0e15)){d=d*1.0e4;f=~~(d+(d<0.0?-.5:.5));if(!f){f=123221;e=1}else{l=(f|0)<0;k=4;i=0;e=174084;f=l?0-f|0:f;while(1){h=e+-1|0;if(!((f|0)!=0|(k|0)>0))break;g=(f|0)%10|0;j=(f|0)/10|0;if((g|0)==0&i<<24>>24==0)f=0;else{a[h>>0]=g|48;f=1;e=h}if((k|0)==1)if(!(f<<24>>24))f=1;else{e=e+-1|0;a[e>>0]=46;f=1}k=k+-1|0;i=f;f=j}if(l){a[h>>0]=45;e=h}f=e;e=174084-e|0}}else{f=83302;e=18}else{f=83301;e=19}c[b>>2]=e;return f|0}function sr(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d;f=rr(e,+h[b>>3])|0;hr(a,f,c[e>>2]|0)|0;hr(a,87598,1)|0;b=rr(e,+h[b+8>>3])|0;hr(a,b,c[e>>2]|0)|0;l=d;return}function tr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;e=0;while(1){h=b+(e<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];sr(a,f);e=e+1|0;if((e|0)>=(d|0))break;hr(a,87598,1)|0}l=g;return}function ur(a,b){a=a|0;b=b|0;var d=0;d=sw(392)|0;if(d|0){c[d>>2]=19216;c[d+16>>2]=22;c[d+32>>2]=a;c[d+36>>2]=b}return d|0}function vr(a){a=a|0;var b=0,d=0,e=0,f=0;b=sw(392)|0;d=b;e=a;f=d+40|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));f=b+60|0;e=a+60|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];f=b+80|0;e=a+80|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[f+16>>2]=c[e+16>>2];return b|0}function wr(a){a=a|0;Dr(a);xN(a);return}function xr(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42052]|0;if(e){d=c[e+4>>2]|0;if(!d){d=sw(632)|0;c[(c[42052]|0)+4>>2]=d}}}else{d=sw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42052]=d;c[d+32>>2]=b;c[d>>2]=a;return}function yr(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+160|0;d=c[e>>2]|0;if(d){e=c[42053]|0;if(e){d=c[e+4>>2]|0;if(!d){d=sw(632)|0;c[(c[42053]|0)+4>>2]=d}}}else{d=sw(632)|0;c[e>>2]=d;c[a+164>>2]=d}c[42053]=d;c[d+52>>2]=b;c[d>>2]=a;return (Gr(a,3,b)|0)!=0|0}function zr(a){a=a|0;var b=0;b=c[a+160>>2]|0;c[a+164>>2]=b;return b|0}function Ar(a){a=a|0;var b=0,d=0,e=0;a=a+164|0;b=c[a>>2]|0;d=c[b+4>>2]|0;if(d|0?(e=d+52|0,(c[e>>2]|0)==0):0)c[e>>2]=c[b+52>>2];c[a>>2]=d;return d|0}function Br(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+8|0;f=b+10|0;if((c[e>>2]|0)>(b|0))a=c[a>>2]|0;else{c[e>>2]=f;f=vw(c[a>>2]|0,f<<2)|0;c[a>>2]=f;a=f}c[a+(b<<2)>>2]=d;return}function Cr(a){a=a|0;var b=0;b=c[a>>2]|0;if(b|0)xN(b);c[a>>2]=0;c[a+8>>2]=0;c[a+4>>2]=0;return}function Dr(a){a=a|0;var b=0,d=0,e=0;d=a+160|0;b=c[d>>2]|0;while(1){if(!b)break;e=c[b+4>>2]|0;Cr(b+604|0);Cr(b+592|0);xN(c[b+584>>2]|0);xN(c[b+588>>2]|0);xN(b);b=e}c[42053]=0;c[42052]=0;c[a+192>>2]=0;c[a+164>>2]=0;c[d>>2]=0;c[a+28>>2]=0;return}function Er(b,d,e,f,g,h){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0;m=l;l=l+128|0;j=m+64|0;k=m;aM(j,e,63)|0;i=VK(j,58)|0;if(i|0)a[i>>0]=0;d=b+60+(d<<2)|0;while(1){b=c[d>>2]|0;if(!b)break;aM(k,c[b+4>>2]|0,63)|0;b=VK(k,58)|0;if(b|0)a[b>>0]=0;if((vJ(j,k)|0)<1)break;d=c[d>>2]|0}while(1){b=c[d>>2]|0;if(!b)break;aM(k,c[b+4>>2]|0,63)|0;b=VK(k,58)|0;if(b|0)a[b>>0]=0;if(vJ(j,k)|0)break;b=c[d>>2]|0;if((c[b+8>>2]|0)>(f|0))d=b;else break}k=tw(20)|0;c[k>>2]=c[d>>2];c[d>>2]=k;c[k+4>>2]=e;c[k+8>>2]=f;c[k+12>>2]=g;c[k+16>>2]=h;l=m;return 1}function Fr(a,b){a=a|0;b=b|0;b=l;l=l+16|0;_l(1,83375,b)|0;l=b;return 0}function Gr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+144|0;r=s;o=s+80|0;p=s+16|0;n=(d+-3|0)>>>0<2?0:d;aM(o,e,63)|0;e=VK(o,58)|0;if(e){f=e+1|0;a[e>>0]=0;e=VK(f,58)|0;if(!e)m=0;else{a[e>>0]=0;m=e+1|0}}else{m=0;f=0}i=(f|0)!=0;j=(m|0)==0;k=(n|0)==(d|0);h=b+60+(d<<2)|0;a:while(1){e=c[h>>2]|0;if(!e){e=0;break}aM(p,c[e+4>>2]|0,63)|0;e=VK(p,58)|0;if(!e)e=0;else{a[e>>0]=0;e=e+1|0}do if(!(vJ(p,o)|0)){g=(e|0)!=0;if(i&g?vJ(e,f)|0:0)break;if(!j?vJ(m,c[(c[(c[h>>2]|0)+12>>2]|0)+8>>2]|0)|0:0)break;if(k|g^1){q=16;break a}if(Gr(b,n,e)|0){q=16;break a}}while(0);h=c[h>>2]|0}do if((q|0)==16){e=c[h>>2]|0;f=e+16|0;g=b+8|0;if(e){if((c[f>>2]|0)==0?(Fr(0,0)|0,(c[f>>2]|0)==0):0){e=0;break}if((c[g>>2]|0)>0){q=c[13857]|0;o=c[e+4>>2]|0;p=c[(c[e+12>>2]|0)+8>>2]|0;c[r>>2]=c[19228+(d<<2)>>2];c[r+4>>2]=o;c[r+8>>2]=p;OL(q,83406,r)|0}}else e=0}while(0);c[b+80+(d<<2)>>2]=e;l=s;return e|0}function Hr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;do if(!e)e=0;else{if(c[4812]|0){cm(168216,0,0);c[4812]=0}h=mL(e)|0;e=VK(h,58)|0;if(e){a[e>>0]=0;f=b+60+(d<<2)|0;e=1;g=f;while(1){b=c[g>>2]|0;if(!b)break;d=mL(c[b+4>>2]|0)|0;b=VK(d,58)|0;if(b|0)a[b>>0]=0;if(!((a[h>>0]|0)!=0?(SK(h,d)|0)!=0:0)){e=c[42055]|0;if(e>>>0>=(c[42056]|0)>>>0){dm(168216,1)|0;e=c[42055]|0}c[42055]=e+1;a[e>>0]=32;fm(168216,c[(c[g>>2]|0)+4>>2]|0)|0;e=c[42055]|0;if(e>>>0>=(c[42056]|0)>>>0){dm(168216,1)|0;e=c[42055]|0}c[42055]=e+1;a[e>>0]=58;fm(168216,c[(c[(c[g>>2]|0)+12>>2]|0)+8>>2]|0)|0;e=0}xN(d);g=c[g>>2]|0}xN(h);if(e<<24>>24){g=0;i=19}}else{xN(h);g=0;f=b+60+(d<<2)|0;e=1;i=19}if((i|0)==19){while(1){b=c[f>>2]|0;if(!b)break;d=mL(c[b+4>>2]|0)|0;b=VK(d,58)|0;if(b|0)a[b>>0]=0;if(!((g|0)!=0?(SK(g,d)|0)==0:0)){e=c[42055]|0;if(e>>>0>=(c[42056]|0)>>>0){dm(168216,1)|0;e=c[42055]|0}c[42055]=e+1;a[e>>0]=32;fm(168216,d)|0;e=0}g=d;f=c[f>>2]|0;i=19}if(e<<24>>24){e=174318;break}}e=c[42055]|0;if(e>>>0>=(c[42056]|0)>>>0){dm(168216,1)|0;e=c[42055]|0}a[e>>0]=0;e=c[42054]|0;c[42055]=e}while(0);return e|0}function Ir(b){b=b|0;var d=0;if(!b)va(95990,83423,573,83437);if(!(a[b>>0]|0))va(95995,83423,574,83437);d=c[42058]|0;if(!d)b=0;else b=Za[c[d>>2]&31](d,b,512)|0;return b|0}function Jr(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;i=k;if(!b)va(96107,83423,589,83454);g=b+8|0;e=c[g>>2]|0;if(!e)va(96110,83423,590,83454);if(!(a[e>>0]|0))va(96119,83423,591,83454);h=b+20|0;f=c[h>>2]|0;do if(!f){d=OA(e)|0;if(!d){c[i>>2]=c[g>>2];_l(0,83478,i)|0;d=0;break}i=uL(d,123648)|0;c[h>>2]=i;if(!i){c[j>>2]=LJ(c[(bJ()|0)>>2]|0)|0;c[j+4>>2]=d;_l(0,83503,j)|0;d=0;break}d=c[42059]|0;if((d|0)>49){a[b+17>>0]=1;d=1;break}else{c[42059]=d+1;d=1;break}}else{NL(f,0,0)|0;if(!(c[h>>2]|0))va(83524,83423,614,83454);else d=1}while(0);l=k;return d|0}function Kr(b){b=b|0;var d=0,e=0;if(a[b+17>>0]|0?(d=b+20|0,e=c[d>>2]|0,e|0):0){AL(e)|0;c[d>>2]=0}return}function Lr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0;if(!b){e=-1;d=-1}else{i=c[b+48>>2]|0;e=d+8|0;f=+(i|0);if(!i){g=+h[d>>3];f=+h[e>>3]}else{h[e>>3]=f;h[d>>3]=f;g=f}e=~~(+((c[b+40>>2]|0)*72|0)/g);d=~~(+((c[b+44>>2]|0)*72|0)/f)}c[a>>2]=e;c[a+4>>2]=d;return}function Mr(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;n=l;l=l+48|0;f=n+16|0;j=n;k=n+32|0;m=b+4|0;if((e|0)!=0?(a[e>>0]|0)!=0:0){if(((c[42188]|0)==0?(g=c[42187]|0,(c[42060]|0)!=(g|0)):0)?(c[42060]=g,i=c[42058]|0,i|0):0){Kl(i)|0;c[42058]=0}o=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];o=!(o>=1.0)?96.0:o;h[j+8>>3]=o;h[j>>3]=o;d=Nr(e)|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];Lr(k,d,f);d=c[k+4>>2]|0;f=c[k>>2]|0}else{d=-1;f=-1}c[b>>2]=f;c[m>>2]=d;l=n;return}function Nr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;e=f;if(!a)va(95990,83423,638,83530);if(!(c[42058]|0))c[42058]=Ql(19252,c[4353]|0)|0;b=Ir(a)|0;a:do if(!b){b=sw(64)|0;if(!b)b=0;else{d=b+8|0;c[d>>2]=ap(0,a)|0;if(!((Jr(b)|0)<<24>>24)){Or(b);b=0;break}if(!(c[b+20>>2]|0))va(83524,83423,653,83530);do switch(Pr(b)|0){case 0:{a=My(c[d>>2]|0)|0;c[b+52>>2]=a;if(!a){c[e>>2]=c[d>>2];_l(0,83547,e)|0;Or(b);b=0;break a}break}case 2:{Qr(b);break}case 3:{Rr(b);break}case 1:{Sr(b);break}case 4:{Tr(b);break}case 6:{Ur(b);break}case 11:{Vr(b);break}case 8:{Wr(b);break}case 5:{Xr(b);break}case 12:{Yr(b);break}default:{}}while(0);Kr(b);e=c[42058]|0;Za[c[e>>2]&31](e,b,1)|0}}else Kr(b);while(0);l=f;return b|0}function Or(a){a=a|0;var b=0;b=c[a+8>>2]|0;if(b|0)cp(0,b)|0;xN(a);return}function Pr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+224|0;e=j+200|0;f=j;g=a+20|0;b=c[g>>2]|0;h=a+24|0;d=a+28|0;a:do if((b|0)!=0?(iN(e,1,20,b)|0)==20:0){b=0;while(1){if(b>>>0>=10){i=13;break a}if(!(wJ(e,c[19288+(b<<4)>>2]|0,c[19288+(b<<4)+4>>2]|0)|0))break;b=b+1|0}c[d>>2]=c[19288+(b<<4)+12>>2];a=c[19288+(b<<4)+8>>2]|0;c[h>>2]=a;switch(b|0){case 7:break;case 8:{if(wJ(e+8|0,83763,4)|0)break a;c[d>>2]=83768;c[h>>2]=11;a=11;break a}default:break a}while(1){if(!(DL(f,200,c[g>>2]|0)|0)){i=11;break}if(!(wJ(f,83758,4)|0)){i=8;break}}if((i|0)==8){c[d>>2]=86839;c[h>>2]=8;a=8;break}else if((i|0)==11){a=c[h>>2]|0;break}}else i=13;while(0);if((i|0)==13){c[d>>2]=83773;c[h>>2]=0;a=0}l=j;return a|0}function Qr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;NL(c[e>>2]|0,6,0)|0;if((fs(c[e>>2]|0,2,b)|0)<<24>>24?(fs(c[e>>2]|0,2,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Rr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;NL(c[e>>2]|0,16,0)|0;if((Zr(c[e>>2]|0,4,b)|0)<<24>>24?(Zr(c[e>>2]|0,4,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Sr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;b=h+12|0;d=h+8|0;e=h+4|0;f=h;c[a+48>>2]=0;g=a+20|0;NL(c[g>>2]|0,16,0)|0;if((((fs(c[g>>2]|0,2,b)|0)<<24>>24?(fs(c[g>>2]|0,2,d)|0)<<24>>24:0)?(fs(c[g>>2]|0,2,e)|0)<<24>>24:0)?(fs(c[g>>2]|0,2,f)|0)<<24>>24:0){c[a+40>>2]=c[b>>2]<<16|c[d>>2];c[a+44>>2]=c[e>>2]<<16|c[f>>2]}l=h;return}function Tr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+32|0;b=o+16|0;e=o+12|0;j=o+8|0;k=o+4|0;m=o;c[a+48>>2]=0;n=a+20|0;while(1){if(!((Zr(c[n>>2]|0,1,b)|0)<<24>>24))break;d=c[b>>2]|0;if((d|0)==255)continue;if(VK(83746,d)|0)continue;if((d|0)==192){i=6;break}f=c[n>>2]|0;if((d|0)==194){i=11;break}if(!((Zr(f,2,e)|0)<<24>>24))break;NL(c[n>>2]|0,(c[e>>2]|0)+-2|0,1)|0}if((i|0)==6){d=a+40|0;b=a+44|0;if(((Zr(c[n>>2]|0,3,m)|0)<<24>>24?(Zr(c[n>>2]|0,2,j)|0)<<24>>24:0)?(Zr(c[n>>2]|0,2,k)|0)<<24>>24:0){c[b>>2]=c[j>>2];c[d>>2]=c[k>>2]}}else if((((i|0)==11?(g=a+40|0,h=a+44|0,(Zr(f,3,m)|0)<<24>>24):0)?(Zr(c[n>>2]|0,2,j)|0)<<24>>24:0)?(Zr(c[n>>2]|0,2,k)|0)<<24>>24:0){c[h>>2]=c[j>>2];c[g>>2]=c[k>>2]}l=o;return}function Ur(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1056|0;j=m;b=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;c[a+48>>2]=72;i=a+20|0;NL(c[i>>2]|0,0,0)|0;while(1){if(!(DL(b,1024,c[i>>2]|0)|0))break;d=RL(b,83731)|0;if(!d)continue;c[j>>2]=e;c[j+4>>2]=f;c[j+8>>2]=g;c[j+12>>2]=h;if((FL(d,89305,j)|0)==4){k=5;break}}if((k|0)==5){j=c[e>>2]|0;c[a+32>>2]=j;k=c[f>>2]|0;c[a+36>>2]=k;c[a+40>>2]=(c[g>>2]|0)-j;c[a+44>>2]=(c[h>>2]|0)-k}l=m;return}function Vr(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;b=h+4|0;e=h;c[a+48>>2]=0;f=a+20|0;NL(c[f>>2]|0,15,0)|0;i=(dN(c[f>>2]|0)|0)==88;g=c[f>>2]|0;d=a+40|0;a=a+44|0;if(i){NL(g,24,0)|0;if((fs(c[f>>2]|0,4,b)|0)<<24>>24?(fs(c[f>>2]|0,4,e)|0)<<24>>24:0){c[d>>2]=c[b>>2];c[a>>2]=c[e>>2]}}else{NL(g,26,0)|0;if((fs(c[f>>2]|0,2,b)|0)<<24>>24?(fs(c[f>>2]|0,2,e)|0)<<24>>24:0){c[d>>2]=c[b>>2];c[a>>2]=c[e>>2]}}l=h;return}function Wr(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+352|0;C=F+80|0;B=F+72|0;E=F+64|0;D=F+56|0;A=F+48|0;d=F+40|0;s=F+32|0;t=F+24|0;u=F+16|0;v=F+8|0;w=F;x=F+328|0;y=F+128|0;z=F+96|0;if(!(c[42061]|0)){if(iM(168248,83616,1)|0){c[d>>2]=83616;_l(1,83643,d)|0}c[42061]=168248}m=b+20|0;NL(c[m>>2]|0,0,0)|0;n=z+12|0;o=z+20|0;p=z+8|0;q=z+16|0;r=z+4|0;d=0;g=0;f=0;e=0;a:while(1){if(!(DL(y,200,c[m>>2]|0)|0))break;if(g<<24>>24==0|d<<24>>24==0){i=y;k=e}else break;b:while(1){j=f;c:while(1){while(1){if(ZM(168248,i,4,z,0)|0){f=j;e=k;continue a}a[i+(c[n>>2]|0)>>0]=0;a[i+(c[o>>2]|0)>>0]=0;e=i+(c[p>>2]|0)|0;f=i+(c[q>>2]|0)|0;i=i+((c[r>>2]|0)+1)|0;if(!(vJ(e,96003)|0))break;if(!(vJ(e,96009)|0))break c;if(vJ(e,83690)|0)continue;c[C>>2]=t;c[C+4>>2]=u;c[C+8>>2]=v;c[C+12>>2]=w;if((FL(f,83698,C)|0)==4)break b}c[A>>2]=s;c[A+4>>2]=x;if((FL(f,83680,A)|0)!=2){c[D>>2]=s;if((FL(f,86206,D)|0)==1){e=1;f=es(+h[s>>3],83687)|0}else{e=g;f=j}}else{e=1;f=es(+h[s>>3],x)|0}if(!(d<<24>>24)){d=0;g=e;j=f}else{g=e;e=k;continue a}}c[E>>2]=s;c[E+4>>2]=x;if((FL(f,83680,E)|0)!=2){c[B>>2]=s;if((FL(f,86206,B)|0)==1){d=1;e=es(+h[s>>3],83687)|0}else e=k}else{d=1;e=es(+h[s>>3],x)|0}if(!(g<<24>>24)){g=0;f=j;k=e}else{f=j;continue a}}d=1;g=1;f=~~(+h[v>>3]-+h[t>>3]+1.0)>>>0;e=~~(+h[w>>3]-+h[u>>3]+1.0)>>>0}c[b+48>>2]=0;c[b+40>>2]=f;c[b+44>>2]=e;l=F;return}function Xr(a){a=a|0;var b=0,d=0,e=0,f=0.0,g=0.0;d=l;l=l+32|0;b=d;c[a+48>>2]=0;e=a+20|0;NL(c[e>>2]|0,0,0)|0;if(!(_r(c[e>>2]|0,b)|0)){g=+h[b>>3];c[a+32>>2]=~~g;f=+h[b+8>>3];c[a+36>>2]=~~f;c[a+40>>2]=~~(+h[b+16>>3]-g);c[a+44>>2]=~~(+h[b+24>>3]-f)}l=d;return}function Yr(a){a=a|0;var b=0,d=0,e=0,f=0;f=l;l=l+16|0;b=f+4|0;d=f;c[a+48>>2]=0;e=a+20|0;NL(c[e>>2]|0,6,0)|0;if((Zr(c[e>>2]|0,1,b)|0)<<24>>24?(Zr(c[e>>2]|0,1,d)|0)<<24>>24:0){c[a+40>>2]=c[b>>2];c[a+44>>2]=c[d>>2]}l=f;return}function Zr(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=dN(a)|0;if(EL(a)|0){e=0;break}c[d>>2]=c[d>>2]<<8|f;e=e+1|0}return e|0}function _r(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;d=h;e=h+16|0;while(1){if(!(DL(e,1024,a)|0)){a=1;break}f=RL(e,83606)|0;if(f|0){g=4;break}}if((g|0)==4){c[d+4>>2]=e;c[d>>2]=f+9;c[d+8>>2]=a;a=$r(d,b)|0}l=h;return a|0}function $r(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+1024|0;f=g;as(b);e=a[c[b>>2]>>0]|0;if(!(e<<24>>24))e=(bs(b)|0)&255;else e=e<<24>>24;if((((e|0)==91?(c[b>>2]=(c[b>>2]|0)+1,cs(b,f),(ds(f,d)|0)==0):0)?(cs(b,f),(ds(f,d+8|0)|0)==0):0)?(cs(b,f),(ds(f,d+16|0)|0)==0):0){cs(b,f);e=(ds(f,d+24|0)|0)!=0&1}else e=1;l=g;return e|0}function as(b){b=b|0;var d=0;d=c[b>>2]|0;while(1){d=a[d>>0]|0;if(!(d<<24>>24))d=(bs(b)|0)&255;else d=d<<24>>24;if(!((d&255)<<24>>24))break;if(!(nJ(d&255)|0))break;d=(c[b>>2]|0)+1|0;c[b>>2]=d}return}function bs(b){b=b|0;var d=0;d=b+4|0;if(!(DL(c[d>>2]|0,1024,c[b+8>>2]|0)|0))b=0;else{d=c[d>>2]|0;c[b>>2]=d;b=a[d>>0]|0}return b|0}function cs(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;as(b);e=0;f=c[b>>2]|0;while(1){f=a[f>>0]|0;if(!(f<<24>>24))g=(bs(b)|0)&255;else g=f<<24>>24;f=g<<24>>24;if(!f)break;if(!((f|0)==46|(f+-48|0)>>>0<10))break;a[d+e>>0]=g;e=e+1|0;f=(c[b>>2]|0)+1|0;c[b>>2]=f;if((e|0)==1023){e=1023;break}}a[d+e>>0]=0;return}function ds(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0;e=l;l=l+16|0;f=e;d=+nN(a,f);if((c[f>>2]|0)==(a|0))a=1;else{h[b>>3]=d;a=0}l=e;return a|0}function es(a,b){a=+a;b=b|0;var c=0.0,d=0.0;d=a*72.0;do if(!(vJ(b,83714)|0)){c=d;a=d>=0.0?.5:-.5}else{if(!(vJ(b,83717)|0)){a=d/96.0;c=a;a=a>=0.0?.5:-.5;break}if(!(vJ(b,83720)|0)){a=d/6.0;c=a;a=a>=0.0?.5:-.5;break}if(vJ(b,83687)|0?vJ(b,83723)|0:0)if(!(vJ(b,83725)|0)){a=a*28.346456664;c=a;a=a>=0.0?.5:-.5;break}else{b=(vJ(b,83728)|0)==0;d=a*2.8346456663999997;return (b?~~(d+(d>=0.0?.5:-.5)):0)|0}c=a>=0.0?.5:-.5}while(0);return ~~(a+c)|0}function fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;c[d>>2]=0;e=0;while(1){if(e>>>0>=b>>>0){e=1;break}f=dN(a)|0;if(EL(a)|0){e=0;break}c[d>>2]=c[d>>2]|f<<(e<<3);e=e+1|0}return e|0}function gs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[b+20>>2]|0;if(a|0)AL(a)|0;if(c[b+52>>2]|0?(e=c[b+60>>2]|0,e|0):0)bb[e&127](b);xN(b);return}function hs(){var a=0;ym(0,1,86200,90487)|0;a=ur(0,1)|0;rE(a,0);return a|0}function is(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0;m=l;l=l+304|0;k=m+24|0;j=m+8|0;f=m;i=m+40|0;if((MD(b,e)|0)!=999)if((ND(b,d)|0)==-1)b=-1;else{n=c[d+16>>2]|0;p=+h[n+32>>3];q=+h[n+16>>3];r=+h[n+24>>3];o=+h[n+40>>3];b=~~(r+(r>=0.0?.5:-.5));e=~~(q+(q>=0.0?.5:-.5));f=~~(p+(p>=0.0?.5:-.5));g=~~(o+(o>=0.0?.5:-.5));if(!(a[(c[n+8>>2]|0)+81>>0]|0)){c[k>>2]=e;c[k+4>>2]=b;c[k+8>>2]=f;c[k+12>>2]=g;yJ(i,83878,k)|0}else{c[j>>2]=b;c[j+4>>2]=e;c[j+8>>2]=g;c[j+12>>2]=f;yJ(i,83878,j)|0}Lm(d,87665,i,174318)|0;b=0}else{b=Hr(b,1,e)|0;c[f>>2]=e;c[f+4>>2]=b;_l(1,96028,f)|0;b=-1}l=m;return b|0}function js(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;yr(a,d)|0;d=c[a+164>>2]|0;c[d+56>>2]=_C(d,c[d+52>>2]|0)|0;b=d+152|0;if((Oo(f,122293,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b>>2]&67108864)){bm(83890,g);b=-1}else h=5;if((h|0)==5){c[d+36>>2]=e;if(!e)c[b>>2]=c[b>>2]|134217728;b=Dv(a,f)|0;aD(d);Dr(a)}l=i;return b|0}function ks(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i;f=c[b+60>>2]|0;yr(a,d)|0;b=c[a+164>>2]|0;c[b+56>>2]=_C(b,c[b+52>>2]|0)|0;if((Oo(f,122293,0,1)|0)!=0?(c[(c[f+16>>2]|0)+8>>2]|0)!=0:0)h=5;else if(!(c[b+152>>2]&67108864)){bm(83890,g);b=-1}else h=5;if((h|0)==5){xr(a,e);h=Dv(a,f)|0;aD(b);nr(b);Dr(a);b=h}l=i;return b|0}function ls(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;h=m+8|0;g=m;b=c[b+60>>2]|0;yr(a,d)|0;j=c[a+164>>2]|0;c[j+56>>2]=_C(j,c[j+52>>2]|0)|0;if((Oo(b,122293,0,1)|0)!=0?(c[(c[b+16>>2]|0)+8>>2]|0)!=0:0)k=5;else if(!(c[j+152>>2]&67108864)){bm(83890,g);b=-1}else k=5;do if((k|0)==5){if(e|0?(i=wN(4096)|0,c[e>>2]=i,i|0):0){g=j+40|0;c[g>>2]=i;c[j+44>>2]=4096;d=j+48|0;c[d>>2]=0;b=Dv(a,b)|0;aD(j);if(!b){c[e>>2]=c[g>>2];c[f>>2]=c[d>>2]}Dr(a);break}_l(1,83911,h)|0;b=-1}while(0);l=m;return b|0}function ms(a,b){a=a|0;b=b|0;pE(a,0,b);return}function ns(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if(!((a|0)!=0?(vs(a)|0)!=0:0))a=83967;f=TK(a)|0;e=f+25|0;if((e|0)>=129){d=tw(e)|0;if(!d)d=0;else g=6}else g=6;if((g|0)==6){cL(d,a)|0;c[b>>2]=f}return d|0}function os(a,b){a=a|0;b=b|0;io(b,a,1)|0;return}function ps(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;c[b>>2]=d;c[b+4>>2]=d+4096;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;c[a+12>>2]=e;c[a+16>>2]=f;return}function qs(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;ts(e,b);i=e+12|0;j=e+16|0;b=0;a:while(1){k=us(e)|0;if(!k)break;b=b+1|0;f=c[i>>2]|0;if(f|0)cb[f&31](k,d);h=Um(a,k)|0;while(1){if(!h)continue a;g=c[h>>2]&3;f=c[((g|0)==3?h:h+48|0)+40>>2]|0;if((f|0)==(k|0))f=c[((g|0)==2?h:h+-48|0)+40>>2]|0;if(!(lb[c[j>>2]&63](f,-1)|0))ts(e,f);h=Vm(a,h,k)|0}}return b|0}function rs(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;ss(a);a=b}return}function ss(a){a=a|0;xN(c[a>>2]|0);xN(a);return}function ts(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+8|0;f=k;g=a+8|0;i=a+4|0;d=c[i>>2]|0;if((c[g>>2]|0)==(c[d+4>>2]|0)){d=c[d+12>>2]|0;do if(!d){e=tw(16)|0;if(!e){_l(1,83948,f)|0;xa(168280,1)}c[e+8>>2]=c[i>>2];c[e+12>>2]=0;d=tw(4e6)|0;c[e>>2]=d;if(!d){_l(1,83948,j)|0;xa(168280,1)}else{c[e+4>>2]=d+4e6;c[(c[i>>2]|0)+12>>2]=e;h=e;break}}else h=d;while(0);c[i>>2]=h;c[g>>2]=c[h>>2]}lb[c[a+16>>2]&63](b,1)|0;j=c[g>>2]|0;c[g>>2]=j+4;c[j>>2]=b;l=k;return}function us(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function vs(b){b=b|0;var c=0;a:while(1){c=b;b=b+1|0;c=a[c>>0]|0;switch(c<<24>>24){case 95:continue a;case 0:{b=1;break a}default:{}}if(!(cK(c&255)|0)){b=0;break}}return b|0}function ws(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=0;f=co(a)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if(io(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,0)|0){en(a,e,1)|0;d=d+1|0}e=Rm(b,e)|0}f=eo(a,f)|0}return d|0}function xs(a){a=a|0;a=Mo(a,83972,0)|0;if(!a)va(83977,83980,529,83989);else return c[a+8>>2]|0;return 0}function ys(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=l;l=l+4320|0;s=u+24|0;r=u+8|0;q=u;t=u+4184|0;p=u+4160|0;f=u+40|0;if(mn(b)|0){To(b,0,83998,-12,0);To(b,1,84010,16,0);o=ns(e,f,t)|0;k=zs(b)|0;m=tw((mn(k)|0)<<2)|0;ps(p,u+4144|0,u+48|0,23,22);h=co(k)|0;n=p+16|0;i=o+(c[f>>2]|0)|0;j=c[13857]|0;e=0;while(1){if(!h)break;if(!(lb[c[n>>2]&63](h,-1)|0)){c[q>>2]=e;yJ(i,84912,q)|0;v=Ip(k,o,1)|0;w=Ip(b,o,1)|0;Oo(w,83998,12,0)|0;a[(Mo(w,83998,0)|0)+8>>0]=1;f=qs(k,h,v,p)|0;Bs(v,w);g=Cs(w)|0;Ds(b,w);c[m+(e<<2)>>2]=w;qo(k,v)|0;if(a[174212]|0){c[r>>2]=e;c[r+4>>2]=f;c[r+8>>2]=g;OL(j,84022,r)|0}e=e+1|0}h=eo(k,h)|0}if(a[174212]|0){r=mn(b)|0;v=nn(b)|0;w=Dn(b)|0;c[s>>2]=r;c[s+4>>2]=v;c[s+8>>2]=e;c[s+12>>2]=w;OL(j,84052,s)|0}ln(k)|0;Uo(b,0,83998);Uo(b,1,84010);rs(p);f=vw(m,e<<2)|0;if((o|0)!=(t|0))xN(o)}else{f=0;e=0}c[d>>2]=e;l=u;return f|0}function zs(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;c[g>>2]=c[4414];g=gn(84099,g,0)|0;Gs(g,a);b=co(a)|0;while(1){if(!b)break;if(!(c[(Mo(b,84010,0)|0)+12>>2]|0)){f=no(g,Dn(b)|0,1)|0;Oo(f,84010,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=b;c[(Mo(b,84010,0)|0)+12>>2]=f}b=eo(a,b)|0}d=co(a)|0;while(1){if(!d)break;e=c[(Mo(d,84010,0)|0)+12>>2]|0;b=Pm(a,d)|0;while(1){if(!b)break;f=c[(Mo(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,84010,0)|0)+12>>2]|0;do if((f|0)!=(e|0))if(f>>>0>e>>>0){an(g,e,f,0,1)|0;break}else{an(g,f,e,0,1)|0;break}while(0);b=Rm(a,b)|0}d=eo(a,d)|0}l=h;return g|0}function As(b,d){b=b|0;d=d|0;var e=0;b=(c[b+16>>2]|0)+8|0;e=a[b>>0]|0;if((d|0)>=0)a[b>>0]=d;return e|0}function Bs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=co(a)|0;while(1){if(!e)break;f=c[(c[e+16>>2]|0)+12>>2]|0;a:do if((c[f>>2]&3|0)==1)io(b,f,1)|0;else{d=co(f)|0;while(1){if(!d)break a;io(b,d,1)|0;d=eo(f,d)|0}}while(0);e=eo(a,e)|0}return}function Cs(a){a=a|0;return ws(a,c[a+60>>2]|0)|0}function Ds(a,b){a=a|0;b=b|0;Es(a,b,0);return}function Es(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=(d|0)==0;b=Jp(b)|0;while(1){if(!b)break;if((a[(Mo(b,83998,0)|0)+8>>0]|0)==0?(f=Fs(b,c,d)|0,f|0):0){if(g)e=(xJ(Dn(b)|0,92999,7)|0)==0;else e=1;Es(b,f,e&1)}b=Kp(b)|0}return}function Fs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=0;h=co(a)|0;while(1){f=(e|0)==0;if(!h)break;g=no(b,Dn(h)|0,0)|0;if(g){if(f)e=Ip(b,Dn(a)|0,1)|0;io(e,g,1)|0}h=eo(a,h)|0}if((d|0)!=0&f)e=Ip(b,Dn(a)|0,1)|0;if(e|0?(ws(e,a)|0,Mm(a,e)|0,(xJ(Dn(e)|0,92999,7)|0)==0):0)c[(Oo(e,83972,12,0)|0)+8>>2]=a;return e|0}function Gs(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;d=Jp(b)|0;e=c[13857]|0;while(1){if(!d)break;a:do if(!(xJ(Dn(d)|0,92999,7)|0)){f=no(a,Dn(d)|0,1)|0;Oo(f,84010,16,1)|0;c[(c[f+16>>2]|0)+12>>2]=d;b=co(d)|0;while(1){if(!b)break a;if(c[(Mo(b,84010,0)|0)+12>>2]|0){k=Dn(b)|0;j=Dn(d)|0;i=Dn(c[(Mo(b,84010,0)|0)+12>>2]|0)|0;c[g>>2]=k;c[g+4>>2]=j;c[g+8>>2]=i;OL(e,84102,g)|0}c[(Mo(b,84010,0)|0)+12>>2]=f;b=eo(d,b)|0}}else Gs(a,d);while(0);d=Kp(d)|0}l=h;return}function Hs(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0;n=+h[a>>3];j=~~(n+(n>=0.0?.5:-.5));n=+h[a+8>>3];a=~~(n+(n>=0.0?.5:-.5));n=+h[b>>3];g=~~(n+(n>=0.0?.5:-.5));n=+h[b+8>>3];f=~~(n+(n>=0.0?.5:-.5));l=g-j|0;i=((l|0)>-1?l:0-l|0)<<1;l=l>>31|1;m=f-a|0;k=((m|0)>-1?m:0-m|0)<<1;m=m>>31|1;a:do if((i|0)>(k|0)){e=0-i|0;d=k-(i>>1)|0;b=j;while(1){zx(c,b,a);if((b|0)==(g|0))break a;j=(d|0)>-1;d=d+k+(j?e:0)|0;b=b+l|0;a=(j?m:0)+a|0}}else{e=0-k|0;d=j;b=i-(k>>1)|0;while(1){zx(c,d,a);if((a|0)==(f|0))break a;k=(b|0)>-1;d=(k?l:0)+d|0;b=b+i+(k?e:0)|0;a=a+m|0}}while(0);return}function Is(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;j=n+4|0;do if((a|0)<1)d=0;else{f=e+16|0;if((c[f>>2]|0)>>>0<4){d=Js(a,b,d,e)|0;break}m=tw(a<<5)|0;d=0;while(1){if((d|0)==(a|0))break;g=c[b+(d<<2)>>2]|0;aB(g);h=m+(d<<5)|0;g=(c[g+16>>2]|0)+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];c[h+16>>2]=c[g+16>>2];c[h+20>>2]=c[g+20>>2];c[h+24>>2]=c[g+24>>2];c[h+28>>2]=c[g+28>>2];d=d+1|0}if((c[f>>2]|0)==4){h=e+28|0;a:do if(c[h>>2]&2|0){f=e+24|0;c[f>>2]=sw(a<<2)|0;d=0;while(1){if((d|0)==(a|0))break a;g=Im(c[b+(d<<2)>>2]|0,84169)|0;if(g|0?(c[k>>2]=j,g=(FL(g,122203,k)|0)>0,i=c[j>>2]|0,g&(i|0)>-1):0)c[(c[f>>2]|0)+(d<<2)>>2]=i;d=d+1|0}}while(0);d=Ks(a,m,e)|0;if(c[h>>2]&2)xN(c[e+24>>2]|0)}else d=0;xN(m)}while(0);l=n;return d|0}function Js(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0.0,L=0.0;H=l;l=l+144|0;C=H+136|0;B=H+64|0;G=H+48|0;w=H+40|0;v=H;u=H+120|0;A=H+104|0;D=H+96|0;E=c[g+20>>2]|0;c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0;a:do if((b|0)>=1){x=A+12|0;y=A+8|0;z=A+4|0;p=(E|0)==0;F=c[13857]|0;q=u+4|0;r=u+8|0;s=u+12|0;o=0;i=0;while(1){if((o|0)==(b|0))break;t=c[e+(o<<2)>>2]|0;aB(t);if(!p?(a[E+o>>0]|0)!=0:0){n=c[t+16>>2]|0;I=+h[n+16>>3];j=~~(I+(I>=0.0?.5:-.5));c[u>>2]=j;I=+h[n+24>>3];k=~~(I+(I>=0.0?.5:-.5));c[q>>2]=k;I=+h[n+32>>3];m=~~(I+(I>=0.0?.5:-.5));c[r>>2]=m;I=+h[n+40>>3];n=~~(I+(I>=0.0?.5:-.5));c[s>>2]=n;if(!i){c[A>>2]=c[u>>2];c[A+4>>2]=c[u+4>>2];c[A+8>>2]=c[u+8>>2];c[A+12>>2]=c[u+12>>2]}else{c[A>>2]=c[((j|0)<(c[A>>2]|0)?u:A)>>2];c[z>>2]=c[((k|0)<(c[z>>2]|0)?u:A)+4>>2];c[y>>2]=c[((m|0)>(c[y>>2]|0)?u:A)+8>>2];c[x>>2]=c[((n|0)>(c[x>>2]|0)?u:A)+12>>2]}i=i+1|0}if((d[174212]|0)>2){n=Dn(t)|0;t=c[t+16>>2]|0;L=+h[t+16>>3];K=+h[t+24>>3];J=+h[t+32>>3];I=+h[t+40>>3];c[v>>2]=n;h[v+8>>3]=L;h[v+16>>3]=K;h[v+24>>3]=J;h[v+32>>3]=I;OL(F,84236,v)|0}o=o+1|0}r=tw(b<<5)|0;i=0;while(1){if((i|0)==(b|0))break;v=r+(i<<5)|0;u=(c[(c[e+(i<<2)>>2]|0)+16>>2]|0)+16|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];c[v+16>>2]=c[u+16>>2];c[v+20>>2]=c[u+20>>2];c[v+24>>2]=c[u+24>>2];c[v+28>>2]=c[u+28>>2];i=i+1|0}p=g+8|0;q=Ns(b,r,c[p>>2]|0)|0;if(a[174212]|0){c[w>>2]=q;OL(F,84264,w)|0}if((q|0)>=1){o=(E|0)!=0;i=D+4|0;if(o){c[D>>2]=((c[y>>2]|0)+(c[A>>2]|0)|0)/2|0;c[i>>2]=((c[x>>2]|0)+(c[z>>2]|0)|0)/2|0}else{c[i>>2]=0;c[D>>2]=0}n=sw(b<<4)|0;m=g+16|0;i=0;while(1){if((i|0)>=(b|0))break;j=c[e+(i<<2)>>2]|0;k=n+(i<<4)|0;c[n+(i<<4)+12>>2]=i;if((c[m>>2]|0)==3){y=(c[j+16>>2]|0)+16|0;z=c[p>>2]|0;A=Dn(j)|0;c[B>>2]=c[y>>2];c[B+4>>2]=c[y+4>>2];c[B+8>>2]=c[y+8>>2];c[B+12>>2]=c[y+12>>2];c[B+16>>2]=c[y+16>>2];c[B+20>>2]=c[y+20>>2];c[B+24>>2]=c[y+24>>2];c[B+28>>2]=c[y+28>>2];c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];Os(B,k,q,z,C,A)}else{c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];Ps(f,j,k,q,g,C)}i=i+1|0}k=sw(b<<2)|0;i=0;while(1){if((i|0)>=(b|0))break;c[k+(i<<2)>>2]=n+(i<<4);i=i+1|0}AK(k,b,4,23);m=tx()|0;i=sw(b<<3)|0;b:do if(o){j=0;while(1){if((j|0)>=(b|0)){j=0;break}if(a[E+j>>0]|0){f=c[k+(j<<2)>>2]|0;g=i+(c[f+12>>2]<<3)|0;c[C>>2]=c[D>>2];c[C+4>>2]=c[D+4>>2];Rs(f,m,g,C)}j=j+1|0}while(1){if((j|0)>=(b|0))break b;if(!(a[E+j>>0]|0)){D=c[k+(j<<2)>>2]|0;Ss(j,D,m,i+(c[D+12>>2]<<3)|0,q,c[p>>2]|0,r)}j=j+1|0}}else{j=0;while(1){if((j|0)>=(b|0))break b;E=c[k+(j<<2)>>2]|0;Ss(j,E,m,i+(c[E+12>>2]<<3)|0,q,c[p>>2]|0,r);j=j+1|0}}while(0);xN(k);j=0;while(1){if((j|0)>=(b|0))break;xN(c[n+(j<<4)+4>>2]|0);j=j+1|0}xN(n);wx(m);xN(r);if((d[174212]|0)>1){j=0;while(1){if((j|0)>=(b|0))break a;D=c[i+(j<<3)>>2]|0;E=c[i+(j<<3)+4>>2]|0;c[G>>2]=j;c[G+4>>2]=D;c[G+8>>2]=E;OL(F,84280,G)|0;j=j+1|0}}}else i=0}else i=0;while(0);l=H;return i|0}function Ks(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+16|0;f=C;A=sw(b<<3)|0;y=c[e+4>>2]|0;B=e+28|0;z=(c[B>>2]&1|0)==0;v=(y|0)>0;w=b+-1|0;x=~~+R(+(+G(+(+(b|0)))));w=v?(w+y|0)/(y|0)|0:(w+x|0)/(x|0)|0;x=v?y:x;y=z?x:w;x=z?w:x;if(a[174212]|0){w=c[13857]|0;c[f>>2]=z?84175:84185;c[f+4>>2]=x;c[f+8>>2]=y;OL(w,84198,f)|0}u=sw((y<<3)+8|0)|0;v=sw((x<<3)+8|0)|0;w=sw(b*24|0)|0;j=e+8|0;f=0;i=w;while(1){if((f|0)>=(b|0))break;o=+h[d+(f<<5)+8>>3];n=+h[d+(f<<5)+24>>3];p=+((c[j>>2]|0)>>>0);h[i>>3]=+h[d+(f<<5)+16>>3]-+h[d+(f<<5)>>3]+p;h[i+8>>3]=n-o+p;c[i+16>>2]=f;f=f+1|0;i=i+24|0}t=sw(b<<2)|0;f=0;while(1){if((f|0)>=(b|0))break;c[t+(f<<2)>>2]=w+(f*24|0);f=f+1|0}f=c[e+24>>2]|0;if(!f)if(!(c[B>>2]&64)){AK(t,b,4,25);i=0;f=0;k=0}else{i=0;f=0;k=0}else{c[42109]=f;AK(t,b,4,24);i=0;f=0;k=0}while(1){if((k|0)>=(b|0)){g=0.0;f=0;break}e=c[t+(k<<2)>>2]|0;j=u+(f<<3)|0;p=+h[j>>3];o=+h[e>>3];h[j>>3]=p>o?p:o;j=v+(i<<3)|0;o=+h[j>>3];p=+h[e+8>>3];h[j>>3]=o>p?o:p;j=i+1|0;e=f+1|0;if(z){f=(e|0)==(y|0);i=f?j:i;f=f?0:e}else{s=(j|0)==(x|0);i=s?0:j;f=s?e:f}k=k+1|0}while(1){if((f|0)>(y|0)){g=0.0;f=x;break}s=u+(f<<3)|0;p=+h[s>>3];h[s>>3]=g;g=g+p;f=f+1|0}while(1){if((f|0)<=0)break;s=f+-1|0;p=+h[v+(s<<3)>>3];h[v+(f<<3)>>3]=g;g=g+p;f=s}h[v>>3]=g;i=0;f=0;s=0;while(1){if((s|0)>=(b|0))break;q=c[(c[t+(s<<2)>>2]|0)+16>>2]|0;g=+h[d+(q<<5)>>3];p=+h[d+(q<<5)+8>>3];m=+h[d+(q<<5)+16>>3];o=+h[d+(q<<5)+24>>3];k=c[B>>2]|0;j=u+(f<<3)|0;r=f+1|0;do if(!(k&4)){n=+h[u+(r<<3)>>3];if(!(k&8)){g=(n+ +h[j>>3]-m-g)*.5;break}else{g=n-(m-g);break}}else g=+h[j>>3];while(0);c[A+(q<<3)>>2]=~~g;j=v+(i<<3)|0;e=i+1|0;if(!(k&16)){g=+h[v+(e<<3)>>3];if(!(k&32))g=(g+ +h[j>>3]-o-p)*.5}else g=+h[j>>3]-(o-p);c[A+(q<<3)+4>>2]=~~g;if(z){f=(r|0)==(y|0);i=f?e:i;f=f?0:r}else{q=(e|0)==(x|0);i=q?0:e;f=q?r:f}s=s+1|0}xN(w);xN(t);xN(u);xN(v);l=C;return A|0}function Ls(a,b){a=a|0;b=b|0;var d=0;d=c[42109]|0;a=c[d+(c[(c[a>>2]|0)+16>>2]<<2)>>2]|0;b=c[d+(c[(c[b>>2]|0)+16>>2]<<2)>>2]|0;return ((a|0)>(b|0)?1:((a|0)<(b|0))<<31>>31)|0}function Ms(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a>>2]|0;b=c[b>>2]|0;e=+h[a+8>>3]+ +h[a>>3];d=+h[b+8>>3]+ +h[b>>3];return (e<d?1:(e>d)<<31>>31)|0}function Ns(a,b,e){a=a|0;b=b|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;t=l;l=l+96|0;r=t+80|0;s=t+48|0;q=t+8|0;n=t;m=(a*100|0)+-1|0;f=+(e<<1|0);o=0.0;p=0.0;e=0;while(1){if((e|0)>=(a|0))break;j=f+(+h[b+(e<<5)+16>>3]-+h[b+(e<<5)>>3]);k=f+(+h[b+(e<<5)+24>>3]-+h[b+(e<<5)+8>>3]);o=o-(j+k);p=p-j*k;e=e+1|0}j=+(m|0);k=o*o-j*4.0*p;if(!(k<0.0)){f=+G(+k);i=j*2.0;g=(f-o)/i;i=(-o-f)/i;e=~~g;e=(e|0)==0?1:e;if((d[174212]|0)>2){n=c[13857]|0;oL(84423,27,1,n)|0;h[q>>3]=j;h[q+8>>3]=o;h[q+16>>3]=p;h[q+24>>3]=k;h[q+32>>3]=f;OL(n,84451,q)|0;c[s>>2]=e;h[s+8>>3]=g;c[s+16>>2]=~~i;h[s+24>>3]=i;OL(n,84477,s)|0;h[r>>3]=p+(o*g+g*(j*g));h[r+8>>3]=p+(o*i+i*(j*i));OL(n,84499,r)|0}}else{h[n>>3]=k;_l(1,84396,n)|0;e=-1}l=t;return e|0}function Os(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0.0,x=0.0;v=l;l=l+32|0;u=v+16|0;t=v;q=+h[a>>3];r=+h[a+8>>3];o=+h[a+16>>3];p=+h[a+24>>3];s=tx()|0;k=c[g>>2]|0;a=k-f|0;m=c[g+4>>2]|0;j=m-f|0;k=f-~~(q+(q>=0.0?.5:-.5))+k+~~(o+(o>=0.0?.5:-.5))|0;m=f-~~(r+(r>=0.0?.5:-.5))+m+~~(p+(p>=0.0?.5:-.5))|0;if((a|0)>-1)g=(a|0)/(e|0)|0;else g=((a+1|0)/(e|0)|0)+-1|0;if((j|0)>-1)n=(j|0)/(e|0)|0;else n=((j+1|0)/(e|0)|0)+-1|0;if((k|0)>-1)k=(k|0)/(e|0)|0;else k=((k+1|0)/(e|0)|0)+-1|0;if((m|0)>-1)j=(m|0)/(e|0)|0;else j=((m+1|0)/(e|0)|0)+-1|0;while(1){if((g|0)>(k|0))break;else a=n;while(1){if((a|0)>(j|0))break;zx(s,g,a);a=a+1|0}g=g+1|0}m=b+4|0;c[m>>2]=Dx(s)|0;k=Cx(s)|0;n=b+8|0;c[n>>2]=k;x=+(f<<1|0);w=+(e|0);j=~~+R(+((x+(o-q))/w));a=~~+R(+((x+(p-r))/w));c[b>>2]=a+j;a:do if((d[174212]|0)>2){g=c[13857]|0;c[t>>2]=i;c[t+4>>2]=k;c[t+8>>2]=j;c[t+12>>2]=a;OL(g,84355,t)|0;a=0;while(1){if((a|0)>=(c[n>>2]|0))break a;i=c[m>>2]|0;t=c[i+(a<<3)+4>>2]|0;c[u>>2]=c[i+(a<<3)>>2];c[u+4>>2]=t;OL(g,84382,u)|0;a=a+1|0}}while(0);wx(s);l=v;return}function Ps(a,b,e,f,g,i){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,S=0.0;P=l;l=l+128|0;G=P+112|0;F=P+104|0;O=P+16|0;N=P;I=P+64|0;J=P+56|0;A=P+40|0;B=P+96|0;z=P+88|0;w=P+24|0;x=P+80|0;y=P+72|0;L=c[g+8>>2]|0;H=c[g+12>>2]|0;D=(a|0)==0?b:a;M=tx()|0;K=b+16|0;C=c[K>>2]|0;u=+h[C+16>>3];E=(c[i>>2]|0)-~~(u+(u>=0.0?.5:-.5))|0;u=+h[C+24>>3];C=(c[i+4>>2]|0)-~~(u+(u>=0.0?.5:-.5))|0;a:do if((c[g+16>>2]|0)==1){w=tw((mn(b)|0)<<2)|0;a=0;i=co(b)|0;while(1){if(!i)break;y=i+16|0;c[w+(a<<2)>>2]=c[(c[y>>2]|0)+112>>2];c[(c[y>>2]|0)+112>>2]=0;a=a+1|0;i=eo(b,i)|0}p=E-L|0;q=C-L|0;r=E+L|0;s=C+L|0;o=1;while(1){a=c[K>>2]|0;if((o|0)>(c[a+180>>2]|0))break;n=c[(c[a+184>>2]|0)+(o<<2)>>2]|0;j=c[n+16>>2]|0;u=+h[j+16>>3];a=~~(u+(u>=0.0?.5:-.5));u=+h[j+24>>3];i=~~(u+(u>=0.0?.5:-.5));u=+h[j+32>>3];g=~~(u+(u>=0.0?.5:-.5));u=+h[j+40>>3];j=~~(u+(u>=0.0?.5:-.5));b:do if((g|0)>(a|0)&(j|0)>(i|0)){a=p+a|0;k=q+i|0;g=r+g|0;m=s+j|0;if((a|0)>-1)i=(a|0)/(f|0)|0;else i=((a+1|0)/(f|0)|0)+-1|0;if((k|0)>-1)k=(k|0)/(f|0)|0;else k=((k+1|0)/(f|0)|0)+-1|0;if((g|0)>-1)j=(g|0)/(f|0)|0;else j=((g+1|0)/(f|0)|0)+-1|0;if((m|0)>-1)g=(m|0)/(f|0)|0;else g=((m+1|0)/(f|0)|0)+-1|0;while(1){if((i|0)>(j|0))break;else a=k;while(1){if((a|0)>(g|0))break;zx(M,i,a);a=a+1|0}i=i+1|0}a=co(n)|0;while(1){if(!a)break b;c[(c[a+16>>2]|0)+212>>2]=n;a=eo(n,a)|0}}while(0);o=o+1|0}s=A+8|0;t=I+4|0;u=+(L|0);v=J+4|0;r=B+4|0;q=z+4|0;p=co(b)|0;while(1){if(!p)break;LA(A,p);S=+h[A>>3];Q=+h[s>>3];n=~~(S+(S>=0.0?.5:-.5))+E|0;c[I>>2]=n;o=~~(Q+(Q>=0.0?.5:-.5))+C|0;c[t>>2]=o;i=p+16|0;a=c[i>>2]|0;c:do if(!(c[a+212>>2]|0)){c[J>>2]=~~(u+(+h[a+88>>3]+ +h[a+96>>3])*.5);c[v>>2]=~~(u+ +h[a+80>>3]*.5);c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];Us(B,F,G);a=c[B>>2]|0;g=c[r>>2]|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];Vs(z,F,G);j=c[z>>2]|0;k=c[q>>2]|0;if((a|0)>-1)i=(a|0)/(f|0)|0;else i=((a+1|0)/(f|0)|0)+-1|0;if((g|0)>-1)m=(g|0)/(f|0)|0;else m=((g+1|0)/(f|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(f|0)|0;else j=((j+1|0)/(f|0)|0)+-1|0;if((k|0)>-1)g=(k|0)/(f|0)|0;else g=((k+1|0)/(f|0)|0)+-1|0;while(1){if((i|0)>(j|0))break;else a=m;while(1){if((a|0)>(g|0))break;zx(M,i,a);a=a+1|0}i=i+1|0}if((n|0)>-1)a=(n|0)/(f|0)|0;else a=((n+1|0)/(f|0)|0)+-1|0;c[I>>2]=a;if((o|0)>-1)a=(o|0)/(f|0)|0;else a=((o+1|0)/(f|0)|0)+-1|0;c[t>>2]=a;a=Pm(D,p)|0;while(1){if(!a)break c;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];Ws(a,G,M,E,C,f,H);a=Rm(D,a)|0}}else{if((n|0)>-1)a=(n|0)/(f|0)|0;else a=((n+1|0)/(f|0)|0)+-1|0;c[I>>2]=a;if((o|0)>-1)a=(o|0)/(f|0)|0;else a=((o+1|0)/(f|0)|0)+-1|0;c[t>>2]=a;a=Pm(D,p)|0;while(1){if(!a)break c;if((c[(c[i>>2]|0)+212>>2]|0)!=(c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)){c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];Ws(a,G,M,E,C,f,H)}a=Rm(D,a)|0}}while(0);p=eo(b,p)|0}a=0;i=co(b)|0;while(1){if(!i)break;c[(c[i+16>>2]|0)+112>>2]=c[w+(a<<2)>>2];a=a+1|0;i=eo(b,i)|0}xN(w)}else{s=w+8|0;t=I+4|0;u=+(L|0);v=J+4|0;r=x+4|0;q=y+4|0;p=co(b)|0;while(1){if(!p)break a;LA(w,p);Q=+h[w>>3];S=+h[s>>3];n=~~(Q+(Q>=0.0?.5:-.5))+E|0;c[I>>2]=n;o=~~(S+(S>=0.0?.5:-.5))+C|0;c[t>>2]=o;a=c[p+16>>2]|0;c[J>>2]=~~(u+(+h[a+88>>3]+ +h[a+96>>3])*.5);c[v>>2]=~~(u+ +h[a+80>>3]*.5);c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];Us(x,F,G);a=c[x>>2]|0;g=c[r>>2]|0;c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];Vs(y,F,G);j=c[y>>2]|0;k=c[q>>2]|0;if((a|0)>-1)i=(a|0)/(f|0)|0;else i=((a+1|0)/(f|0)|0)+-1|0;if((g|0)>-1)m=(g|0)/(f|0)|0;else m=((g+1|0)/(f|0)|0)+-1|0;if((j|0)>-1)j=(j|0)/(f|0)|0;else j=((j+1|0)/(f|0)|0)+-1|0;if((k|0)>-1)g=(k|0)/(f|0)|0;else g=((k+1|0)/(f|0)|0)+-1|0;while(1){if((i|0)>(j|0))break;else a=m;while(1){if((a|0)>(g|0))break;zx(M,i,a);a=a+1|0}i=i+1|0}if((n|0)>-1)a=(n|0)/(f|0)|0;else a=((n+1|0)/(f|0)|0)+-1|0;c[I>>2]=a;if((o|0)>-1)a=(o|0)/(f|0)|0;else a=((o+1|0)/(f|0)|0)+-1|0;c[t>>2]=a;a=Pm(D,p)|0;while(1){if(!a)break;c[G>>2]=c[I>>2];c[G+4>>2]=c[I+4>>2];Ws(a,G,M,E,C,f,H);a=Rm(D,a)|0}p=eo(b,p)|0}}while(0);j=e+4|0;c[j>>2]=Dx(M)|0;k=e+8|0;c[k>>2]=Cx(M)|0;i=c[K>>2]|0;Q=+(L<<1|0);S=+(f|0);a=~~+R(+((Q+(+h[i+32>>3]-+h[i+16>>3]))/S));i=~~+R(+((Q+(+h[i+40>>3]-+h[i+24>>3]))/S));c[e>>2]=i+a;d:do if((d[174212]|0)>2){g=c[13857]|0;e=Dn(b)|0;b=c[k>>2]|0;c[N>>2]=e;c[N+4>>2]=b;c[N+8>>2]=a;c[N+12>>2]=i;OL(g,84355,N)|0;a=0;while(1){if((a|0)>=(c[k>>2]|0))break d;b=c[j>>2]|0;N=c[b+(a<<3)+4>>2]|0;c[O>>2]=c[b+(a<<3)>>2];c[O+4>>2]=N;OL(g,84382,O)|0;a=a+1|0}}while(0);wx(M);l=P;return}function Qs(a,b){a=a|0;b=b|0;return (c[c[b>>2]>>2]|0)-(c[c[a>>2]>>2]|0)|0}function Rs(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;i=k+16|0;j=k;m=c[a+4>>2]|0;h=c[a+8>>2]|0;c[e>>2]=0-(c[f>>2]|0);g=e+4|0;c[g>>2]=0-(c[f+4>>2]|0);a=0;f=m;while(1){if((a|0)>=(h|0))break;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];xx(b,i);a=a+1|0;f=f+8|0}if((d[174212]|0)>1){m=c[13857]|0;b=c[e>>2]|0;e=c[g>>2]|0;c[j>>2]=h;c[j+4>>2]=b;c[j+8>>2]=e;OL(m,84329,j)|0}l=k;return}function Ss(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0,m=0,n=0.0,o=0.0;m=c[b+12>>2]|0;j=+h[i+(m<<5)+24>>3]-+h[i+(m<<5)+8>>3];k=+h[i+(m<<5)+16>>3]-+h[i+(m<<5)>>3];if(!((a|0)==0?(o=+(g<<1|0),n=+(f|0),(Ts((~~+R(+((o+k)/n))|0)/-2|0,(~~+R(+((o+j)/n))|0)/-2|0,b,d,e,f,i)|0)!=0):0))l=3;a:do if((l|0)==3?(Ts(0,0,b,d,e,f,i)|0)==0:0)if((~~+R(+k)|0)<(~~+R(+j)|0)){m=1;while(1){l=0-m|0;a=0;while(1){if((a|0)<=(l|0)){g=l;break}if(Ts(l,a,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)>=(m|0))break;if(Ts(g,a,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)>=(m|0))break;if(Ts(g,a,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)<=(l|0))break;if(Ts(g,a,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)<=0)break;if(!(Ts(g,a,b,d,e,f,i)|0))a=a+-1|0;else break a}m=m+1|0}}else{m=1;while(1){l=0-m|0;a=0;while(1){if((a|0)>=(m|0)){g=l;break}if(Ts(a,l,b,d,e,f,i)|0)break a;a=a+1|0}while(1){if((g|0)>=(m|0))break;if(Ts(a,g,b,d,e,f,i)|0)break a;g=g+1|0}while(1){if((a|0)<=(l|0))break;if(Ts(a,g,b,d,e,f,i)|0)break a;a=a+-1|0}while(1){if((g|0)<=(l|0))break;if(Ts(a,g,b,d,e,f,i)|0)break a;g=g+-1|0}while(1){if((a|0)>=0)break;if(!(Ts(a,g,b,d,e,f,i)|0))a=a+1|0;else break a}m=m+1|0}}while(0);return}function Ts(a,b,e,f,g,i,j){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0.0,y=0.0;u=l;l=l+48|0;s=u+32|0;t=u+8|0;r=u;n=e+4|0;p=c[e+8>>2]|0;q=r+4|0;k=c[n>>2]|0;m=0;while(1){if((m|0)>=(p|0)){o=5;break}w=k;v=c[w+4>>2]|0;c[r>>2]=(c[w>>2]|0)+a;c[q>>2]=v+b;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];if(Ax(f,s)|0){k=0;break}k=k+8|0;m=m+1|0}if((o|0)==5){e=c[e+12>>2]|0;y=+h[j+(e<<5)>>3];x=+h[j+(e<<5)+8>>3];c[g>>2]=(S(i,a)|0)-~~(y+(y>=0.0?.5:-.5));e=g+4|0;c[e>>2]=(S(i,b)|0)-~~(x+(x>=0.0?.5:-.5));k=c[n>>2]|0;m=0;while(1){if((m|0)>=(p|0))break;v=k;w=c[v+4>>2]|0;c[r>>2]=(c[v>>2]|0)+a;c[q>>2]=w+b;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];xx(f,s);k=k+8|0;m=m+1|0}if((d[174212]|0)>1){k=c[13857]|0;v=c[g>>2]|0;w=c[e>>2]|0;c[t>>2]=p;c[t+4>>2]=a;c[t+8>>2]=b;c[t+12>>2]=v;c[t+16>>2]=w;OL(k,84295,t)|0;k=1}else k=1}l=u;return k|0}function Us(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+4>>2]|0)-(c[d+4>>2]|0)|0;c[a>>2]=(c[b>>2]|0)-(c[d>>2]|0);c[a+4>>2]=e;return}function Vs(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function Ws(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0;A=l;l=l+112|0;x=A+96|0;w=A+80|0;q=A+48|0;r=A+32|0;y=A+16|0;z=A;n=A+64|0;h[y>>3]=+(c[b>>2]|0);s=y+8|0;h[s>>3]=+(c[b+4>>2]|0);v=+(g|0);a:do if((i|0)!=0?(t=a+16|0,m=c[(c[t>>2]|0)+8>>2]|0,(m|0)!=0):0){p=+(e|0);o=+(f|0);i=z+8|0;e=0;while(1){if((e|0)>=(c[m+4>>2]|0))break a;n=c[m>>2]|0;b=c[n+(e*48|0)>>2]|0;g=c[n+(e*48|0)+4>>2]|0;f=c[n+(e*48|0)+8>>2]|0;a=c[n+(e*48|0)+12>>2]|0;m=n+(e*48|0)+16|0;c[q>>2]=c[m>>2];c[q+4>>2]=c[m+4>>2];c[q+8>>2]=c[m+8>>2];c[q+12>>2]=c[m+12>>2];n=n+(e*48|0)+32|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];if(!f){c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];m=b+16|0;c[z>>2]=c[m>>2];c[z+4>>2]=c[m+4>>2];c[z+8>>2]=c[m+8>>2];c[z+12>>2]=c[m+12>>2];m=2}else{c[y>>2]=c[q>>2];c[y+4>>2]=c[q+4>>2];c[y+8>>2]=c[q+8>>2];c[y+12>>2]=c[q+12>>2];c[z>>2]=c[b>>2];c[z+4>>2]=c[b+4>>2];c[z+8>>2]=c[b+8>>2];c[z+12>>2]=c[b+12>>2];m=1}j=p+ +h[y>>3];h[y>>3]=j;k=o+ +h[s>>3];h[s>>3]=k;if(!(j>=0.0))j=(j+1.0)/v+-1.0;else j=j/v;h[y>>3]=j;if(!(k>=0.0))j=(k+1.0)/v+-1.0;else j=k/v;h[s>>3]=j;j=p+ +h[z>>3];h[z>>3]=j;k=o+ +h[i>>3];h[i>>3]=k;if(!(j>=0.0))j=(j+1.0)/v+-1.0;else j=j/v;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/v+-1.0;else j=k/v;h[i>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Hs(w,x,d);while(1){if((m|0)>=(g|0))break;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];f=b+(m<<4)|0;c[z>>2]=c[f>>2];c[z+4>>2]=c[f+4>>2];c[z+8>>2]=c[f+8>>2];c[z+12>>2]=c[f+12>>2];j=p+ +h[z>>3];h[z>>3]=j;k=o+ +h[i>>3];h[i>>3]=k;if(!(j>=0.0))j=(j+1.0)/v+-1.0;else j=j/v;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/v+-1.0;else j=k/v;h[i>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Hs(w,x,d);m=m+1|0}if(a|0){c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[z>>2]=c[r>>2];c[z+4>>2]=c[r+4>>2];c[z+8>>2]=c[r+8>>2];c[z+12>>2]=c[r+12>>2];j=p+ +h[z>>3];h[z>>3]=j;k=o+ +h[i>>3];h[i>>3]=k;if(!(j>=0.0))j=(j+1.0)/v+-1.0;else j=j/v;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/v+-1.0;else j=k/v;h[i>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Hs(w,x,d)}e=e+1|0;m=c[(c[t>>2]|0)+8>>2]|0}}else u=4;while(0);if((u|0)==4){LA(n,c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0);c[z>>2]=c[n>>2];c[z+4>>2]=c[n+4>>2];c[z+8>>2]=c[n+8>>2];c[z+12>>2]=c[n+12>>2];j=+(e|0)+ +h[z>>3];h[z>>3]=j;m=z+8|0;k=+(f|0)+ +h[m>>3];h[m>>3]=k;if(!(j>=0.0))j=(j+1.0)/v+-1.0;else j=j/v;h[z>>3]=j;if(!(k>=0.0))j=(k+1.0)/v+-1.0;else j=k/v;h[m>>3]=j;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];Hs(w,x,d)}l=A;return}function Xs(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0;a:do if((a|0)<1)f=0-a|0;else{s=(e|0)==0;q=(f|0)==0;j=0;while(1){if((j|0)==(a|0)){f=0;break a}r=c[b+(j<<2)>>2]|0;g=s?r:e;k=c[d+(j<<3)>>2]|0;l=c[d+(j<<3)+4>>2]|0;m=+(k|0);n=m/72.0;o=+(l|0);p=o/72.0;i=co(r)|0;while(1){if(!i)break;f=c[i+16>>2]|0;t=c[f+132>>2]|0;h[t>>3]=n+ +h[t>>3];t=t+8|0;h[t>>3]=p+ +h[t>>3];t=f+16|0;h[t>>3]=m+ +h[t>>3];t=f+24|0;h[t>>3]=o+ +h[t>>3];f=c[f+108>>2]|0;if(f|0){t=f+56|0;h[t>>3]=m+ +h[t>>3];t=f+64|0;h[t>>3]=o+ +h[t>>3]}b:do if(!q){f=Pm(g,i)|0;while(1){if(!f)break b;Ys(f,k,l);f=Rm(g,f)|0}}while(0);i=eo(r,i)|0}Zs(r,k,l);j=j+1|0}}while(0);return f|0}function Ys(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0;e=c[a+16>>2]|0;a=c[e+96>>2]|0;m=+(b|0);l=+(d|0);if(a|0){k=a+56|0;h[k>>3]=m+ +h[k>>3];k=a+64|0;h[k>>3]=l+ +h[k>>3]}a=c[e+108>>2]|0;if(a|0){k=a+56|0;h[k>>3]=m+ +h[k>>3];k=a+64|0;h[k>>3]=l+ +h[k>>3]}a=c[e+100>>2]|0;if(a|0){k=a+56|0;h[k>>3]=m+ +h[k>>3];k=a+64|0;h[k>>3]=l+ +h[k>>3]}a=c[e+104>>2]|0;if(a|0){k=a+56|0;h[k>>3]=m+ +h[k>>3];k=a+64|0;h[k>>3]=l+ +h[k>>3]}j=c[e+8>>2]|0;a:do if(j|0){d=c[j+4>>2]|0;a=0;while(1){if((a|0)>=(d|0))break a;k=c[j>>2]|0;e=c[k+(a*48|0)>>2]|0;f=c[k+(a*48|0)+4>>2]|0;g=c[k+(a*48|0)+8>>2]|0;i=c[k+(a*48|0)+12>>2]|0;b=0;while(1){if((b|0)>=(f|0))break;n=e+(b<<4)|0;h[n>>3]=m+ +h[n>>3];n=e+(b<<4)+8|0;h[n>>3]=l+ +h[n>>3];b=b+1|0}if(g|0){n=k+(a*48|0)+16|0;h[n>>3]=m+ +h[n>>3];n=k+(a*48|0)+24|0;h[n>>3]=l+ +h[n>>3]}if(i|0){n=k+(a*48|0)+32|0;h[n>>3]=m+ +h[n>>3];n=k+(a*48|0)+40|0;h[n>>3]=l+ +h[n>>3]}a=a+1|0}}while(0);return}function Zs(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0;j=b+16|0;b=c[j>>2]|0;o=b+16|0;m=b+24|0;f=b+32|0;b=b+40|0;g=+(d|0);l=g+ +h[f>>3];i=+(e|0);n=i+ +h[m>>3];k=i+ +h[b>>3];h[o>>3]=g+ +h[o>>3];h[m>>3]=n;h[f>>3]=l;h[b>>3]=k;b=c[j>>2]|0;f=c[b+12>>2]|0;if((f|0)!=0?(a[f+81>>0]|0)!=0:0){o=f+56|0;h[o>>3]=g+ +h[o>>3];f=f+64|0;h[f>>3]=i+ +h[f>>3];f=1}else f=1;while(1){if((f|0)>(c[b+180>>2]|0))break;Zs(c[(c[b+184>>2]|0)+(f<<2)>>2]|0,d,e);f=f+1|0;b=c[j>>2]|0}return}function _s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Is(a,b,d,e)|0;if(!f)a=1;else{a=Xs(a,b,f,d,c[e+12>>2]|0)|0;xN(f)}return a|0}function $s(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;p=l;l=l+32|0;o=p;n=_s(a,b,d,e)|0;if(!n){aB(d);m=(c[d+16>>2]|0)+16|0;c[o>>2]=c[m>>2];c[o+4>>2]=c[m+4>>2];c[o+8>>2]=c[m+8>>2];c[o+12>>2]=c[m+12>>2];c[o+16>>2]=c[m+16>>2];c[o+20>>2]=c[m+20>>2];c[o+24>>2]=c[m+24>>2];c[o+28>>2]=c[m+28>>2];f=o+8|0;g=o+16|0;i=o+24|0;e=0;while(1){if((e|0)>=(a|0))break;k=c[(c[b+(e<<2)>>2]|0)+16>>2]|0;j=c[k+180>>2]|0;k=k+184|0;d=1;while(1){if((d|0)>(j|0))break;r=c[(c[(c[k>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;q=r+16|0;h[o>>3]=+h[(+h[o>>3]<+h[q>>3]?o:q)>>3];h[f>>3]=+h[(+h[f>>3]<+h[r+24>>3]?o:q)+8>>3];h[g>>3]=+h[(+h[g>>3]>+h[r+32>>3]?o:q)+16>>3];h[i>>3]=+h[(+h[i>>3]>+h[r+40>>3]?o:q)+24>>3];d=d+1|0}e=e+1|0}c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[m+16>>2]=c[o+16>>2];c[m+20>>2]=c[o+20>>2];c[m+24>>2]=c[o+24>>2];c[m+28>>2]=c[o+28>>2]}l=p;return n|0}function at(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=l;l=l+16|0;g=h;if(!f)va(84513,84519,1400,84526);e=bt(b,e,e)|0;c[f+8>>2]=e;if(a[174212]|0){i=c[13857]|0;c[g>>2]=e;OL(i,84538,g)|0}c[f+12>>2]=0;c[f+20>>2]=0;ct(b,d,f)|0;l=h;return c[f+16>>2]|0}function bt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=i+4|0;g=Im(b,84668)|0;a:do if(g){c[h>>2]=f;h=(FL(g,122203,h)|0)==1;b=c[f>>2]|0;if(h&(b|0)>-1)d=b;else{switch(a[g>>0]|0){case 84:case 116:break;default:break a}d=e}}while(0);l=i;return d|0}function ct(a,b,c){a=a|0;b=b|0;c=c|0;return dt(Im(a,84551)|0,b,c)|0}function dt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0;u=l;l=l+64|0;r=u+40|0;q=u+32|0;t=u+24|0;s=u+16|0;m=u+8|0;k=u;i=u+48|0;j=u+44|0;if(!e)va(84513,84519,1292,84560);o=e+28|0;c[o>>2]=0;p=e+16|0;c[p>>2]=d;n=e+4|0;c[n>>2]=0;c[e+24>>2]=0;a:do if(b|0?(f=a[b>>0]|0,f<<24>>24):0)switch(f<<24>>24|0){case 97:{d=b+5|0;if(!(xJ(b,84578,5)|0)){c[p>>2]=4;m=et(d,e)|0;c[k>>2]=j;m=(FL(m,122203,k)|0)>0;d=c[j>>2]|0;if(!(m&(d|0)>0))break a;c[n>>2]=d;break a}else{if(xJ(b,84584,6)|0)break a;c[p>>2]=5;c[m>>2]=i;m=(FL(d,84591,m)|0)>0;v=+g[i>>2];g[e>>2]=m&v>0.0?v:1.0;break a}}case 99:{if(f<<24>>24!=99)break a;if(vJ(b,92999)|0)break a;c[p>>2]=1;break a}case 103:{if(f<<24>>24!=103)break a;if(vJ(b,96302)|0)break a;c[p>>2]=3;break a}case 110:{if(f<<24>>24!=110)break a;if(vJ(b,96289)|0)break a;c[p>>2]=2;break a}default:break a}while(0);if(a[174212]|0){d=c[13857]|0;oL(84594,11,1,d)|0;c[s>>2]=ft(c[p>>2]|0)|0;OL(d,84606,s)|0;if((c[p>>2]|0)==5){h[t>>3]=+g[e>>2];OL(d,84619,t)|0}c[q>>2]=c[n>>2];OL(d,84632,q)|0;c[r>>2]=c[o>>2];OL(d,84645,r)|0}l=u;return c[p>>2]|0}function et(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;a:do if((a[b>>0]|0)==95){f=d+28|0;e=1;while(1){b=b+1|0;b:while(1){if(!e)break a;d=a[b>>0]|0;if(!(d<<24>>24))break a;switch(d<<24>>24|0){case 99:{g=10;break b}case 105:{g=9;break b}case 117:{g=11;break b}case 116:{g=12;break b}case 98:{d=32;break b}case 108:{g=7;break b}case 114:{g=8;break b}default:e=0}}if((g|0)==7){g=0;d=4}else if((g|0)==8){g=0;d=8}else if((g|0)==9){g=0;d=64}else if((g|0)==10){g=0;d=1}else if((g|0)==11){g=0;d=2}else if((g|0)==12){g=0;d=16}c[f>>2]=c[f>>2]|d}}while(0);return b|0}function ft(a){a=a|0;switch(a|0){case 1:{a=92999;break}case 2:{a=96289;break}case 3:{a=96302;break}case 4:{a=84578;break}case 5:{a=84584;break}default:a=84658}return a|0}function gt(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n;m=n+80|0;do if(a){if(!e){e=yN(1,20)|0;c[e+4>>2]=d>>>0>80?d:80}d=c[e>>2]|0;j=c[e+4>>2]|0;if(!d){h=100;d=a;i=yN(100,j)|0}else{h=d+100|0;i=zN(c[e+8>>2]|0,S(h,j)|0)|0;GN(i+(S(j,d)|0)|0,0,j*100|0)|0;d=a}while(1){d=ht(k,d,b,m)|0;if(!d)break;a=c[e>>2]|0;f=h<<1;g=S(h,j)|0;if((a|0)==(h|0)){i=zN(i,S(f,j)|0)|0;GN(i+g|0,0,g|0)|0;a=c[e>>2]|0}else f=h;a=i+(S(a,j)|0)|0;g=k;h=a+80|0;do{c[a>>2]=c[g>>2];a=a+4|0;g=g+4|0}while((a|0)<(h|0));c[e>>2]=(c[e>>2]|0)+1;h=f}if(c[m>>2]|0){m=e+16|0;c[m>>2]=c[m>>2]|1}d=c[e>>2]|0;if(!d){xN(i);xN(e);e=0;break}else{c[e+8>>2]=zN(i,S(d,j)|0)|0;break}}while(0);l=n;return e|0}function ht(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+80|0;n=r+64|0;g=r;c[f>>2]=0;do{h=a[d>>0]|0;d=d+1|0}while((nJ(h)|0)!=0);p=(e|0)!=0;j=e+4|0;k=g+8|0;q=b+72|0;m=e+8|0;o=e+40|0;i=b+8|0;a:do switch(h|0){case 69:{c[b>>2]=0;d=it(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e>>2];break}case 101:{c[b>>2]=1;d=it(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e>>2];break}case 80:{c[b>>2]=2;d=jt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[j>>2];break}case 112:{c[b>>2]=3;d=jt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[j>>2];break}case 98:{c[b>>2]=4;d=jt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[m>>2];break}case 66:{c[b>>2]=5;d=jt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[m>>2];break}case 99:{d=kt(d,n)|0;if(!d){c[f>>2]=1;d=0;break a}m=lt(c[n>>2]|0,g)|0;c[n>>2]=m;if(!m){c[f>>2]=1;d=0;break a}if(!(c[g>>2]|0)){c[b>>2]=9;c[i>>2]=c[k>>2];if(!p)break a;c[q>>2]=c[e+24>>2];break a}else{c[b>>2]=14;h=i+64|0;do{c[i>>2]=c[g>>2];i=i+4|0;g=g+4|0}while((i|0)<(h|0));if(!p)break a;c[q>>2]=c[o>>2];break a}}case 67:{d=kt(d,n)|0;if(!d){c[f>>2]=1;d=0;break a}m=lt(c[n>>2]|0,g)|0;c[n>>2]=m;if(!m){c[f>>2]=1;d=0;break a}if(!(c[g>>2]|0)){c[b>>2]=8;c[i>>2]=c[k>>2];if(!p)break a;c[q>>2]=c[e+20>>2];break a}else{c[b>>2]=13;h=i+64|0;do{c[i>>2]=c[g>>2];i=i+4|0;g=g+4|0}while((i|0)<(h|0));if(!p)break a;c[q>>2]=c[o>>2];break a}}case 76:{c[b>>2]=6;d=jt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+12>>2];break}case 84:{c[b>>2]=7;d=mt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}d=mt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=nt(d,b+24|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=mt(d,b+32|0)|0;if(!d){c[f>>2]=1;d=0;break a}d=kt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+16>>2];break}case 70:{c[b>>2]=10;d=mt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}d=kt(d,b+16|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+28>>2];break}case 83:{c[b>>2]=11;d=kt(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+32>>2];break}case 73:{c[b>>2]=12;d=it(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}d=kt(d,b+40|0)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+36>>2];break}case 116:{c[b>>2]=15;d=ot(d,i)|0;if(!d){c[f>>2]=1;d=0;break a}if(p)c[q>>2]=c[e+44>>2];break}case 0:{d=0;break}default:{c[f>>2]=1;d=0}}while(0);l=r;return d|0}function it(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0;i=l;l=l+16|0;e=i;h[b>>3]=+nN(a,e);f=c[e>>2]|0;if(((f|0)!=(a|0)?(h[b+8>>3]=+nN(f,e),g=c[e>>2]|0,(f|0)!=(g|0)):0)?(h[b+16>>3]=+nN(g,e),d=c[e>>2]|0,(g|0)!=(d|0)):0){h[b+24>>3]=+nN(d,e);a=c[e>>2]|0;a=(d|0)==(a|0)?0:a}else a=0;l=i;return a|0}function jt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=k+4|0;g=k;a=pt(a,j)|0;do if(a){d=c[j>>2]|0;i=yN(d,24)|0;c[b>>2]=d;e=i;f=0;while(1){if((f|0)>=(d|0)){d=9;break}h[e>>3]=+nN(a,g);d=c[g>>2]|0;if((a|0)==(d|0)){d=5;break}h[e+8>>3]=+nN(d,g);a=c[g>>2]|0;if((d|0)==(a|0)){d=7;break}h[e+16>>3]=0.0;e=e+24|0;d=c[b>>2]|0;f=f+1|0}if((d|0)==5){c[j>>2]=f;xN(i);a=0;break}else if((d|0)==7){c[j>>2]=f;xN(i);a=0;break}else if((d|0)==9){c[j>>2]=f;c[b+4>>2]=i;break}}else a=0;while(0);l=k;return a|0}function kt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j;b=pt(b,i)|0;f=c[i>>2]|0;do if(!((b|0)==0|(f|0)<1)){do{h=a[b>>0]|0;e=h<<24>>24==0;b=b+1|0}while(h<<24>>24!=45&(e^1));if(!e){h=yN(f+1|0,1)|0;g=h;e=f;while(1){if((e|0)<=0){e=9;break}e=a[b>>0]|0;if(!(e<<24>>24)){e=8;break}a[g>>0]=e;e=(c[i>>2]|0)+-1|0;c[i>>2]=e;g=g+1|0;b=b+1|0}if((e|0)==8){xN(h);b=0;break}else if((e|0)==9){a[g>>0]=0;c[d>>2]=h;break}}else b=0}else b=0;while(0);l=j;return b|0}function lt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=a[b>>0]|0;f=d+8|0;g=b+1|0;switch(e|0){case 91:{b=qt(g,d)|0;break}case 40:{b=rt(g,d)|0;break}case 47:case 35:{c[d>>2]=0;c[f>>2]=b;break}default:if(!(cK(e)|0))b=0;else{c[d>>2]=0;c[f>>2]=b}}return b|0}function mt(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0;f=l;l=l+16|0;d=f;e=+nN(a,d);d=c[d>>2]|0;if((d|0)==(a|0))d=0;else h[b>>3]=e;l=f;return d|0}function nt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;a=pt(a,e)|0;e=c[e>>2]|0;c[b>>2]=(e|0)<0?0:e|0?2:1;l=d;return a|0}function ot(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=qJ(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function pt(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[b>>2]=rJ(a,e,10)|0;b=c[e>>2]|0;l=d;return ((b|0)==(a|0)?0:b)|0}function qt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;c[b>>2]=1;n=b+8|0;i=mt(a,n)|0;do if(((((i|0)!=0?(j=mt(i,b+16|0)|0,(j|0)!=0):0)?(e=mt(j,b+24|0)|0,(e|0)!=0):0)?(f=mt(e,b+32|0)|0,(f|0)!=0):0)?(k=b+40|0,d=pt(f,k)|0,(d|0)!=0):0){b=c[k>>2]|0;f=yN(b,8)|0;e=0;while(1){if((e|0)>=(b|0)){d=13;break}d=mt(d,m)|0;if(!d){d=9;break}g[f+(e<<3)>>2]=+h[m>>3];d=kt(d,f+(e<<3)+4|0)|0;if(!d){d=12;break}e=e+1|0;b=c[k>>2]|0}if((d|0)==9){xN(f);a=0;break}else if((d|0)==12){xN(f);a=0;break}else if((d|0)==13){c[n+36>>2]=f;break}}else a=0;while(0);l=o;return a|0}function rt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;n=p;c[b>>2]=2;k=mt(a,b+8|0)|0;do if(((((((k|0)!=0?(m=mt(k,b+16|0)|0,(m|0)!=0):0)?(e=mt(m,b+24|0)|0,(e|0)!=0):0)?(f=mt(e,b+32|0)|0,(f|0)!=0):0)?(i=mt(f,b+40|0)|0,(i|0)!=0):0)?(j=mt(i,b+48|0)|0,(j|0)!=0):0)?(o=b+56|0,d=pt(j,o)|0,(d|0)!=0):0){e=c[o>>2]|0;i=yN(e,8)|0;f=0;while(1){if((f|0)>=(e|0)){d=15;break}d=mt(d,n)|0;if(!d){d=11;break}g[i+(f<<3)>>2]=+h[n>>3];d=kt(d,i+(f<<3)+4|0)|0;if(!d){d=14;break}f=f+1|0;e=c[o>>2]|0}if((d|0)==11){xN(i);a=0;break}else if((d|0)==14){xN(i);a=0;break}else if((d|0)==15){c[b+60>>2]=i;break}}else a=0;while(0);l=p;return a|0}function st(a,b,c){a=a|0;b=b|0;c=c|0;return gt(a,b,c,0)|0}function tt(a){a=a|0;return st(a,0,0)|0}function ut(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=c[a+12>>2]|0;if(a|0){f=c[a+8>>2]|0;g=a+4|0;h=(e|0)==0;b=0;while(1){if((b|0)>=(c[a>>2]|0))break;d=f+(S(c[g>>2]|0,b)|0)|0;if(!h)bb[e&127](d);vt(d);b=b+1|0}xN(f);xN(a)}return}function vt(a){a=a|0;var b=0,d=0;b=a+8|0;d=b+4|0;switch(c[a>>2]|0){case 3:case 2:{xN(c[d>>2]|0);break}case 5:case 4:{xN(c[d>>2]|0);break}case 6:{xN(c[d>>2]|0);break}case 7:{xN(c[a+40>>2]|0);break}case 9:case 8:{xN(c[b>>2]|0);break}case 14:case 13:{wt(b);break}case 10:{xN(c[a+16>>2]|0);break}case 11:{xN(c[b>>2]|0);break}case 12:{xN(c[a+40>>2]|0);break}default:{}}return}function wt(a){a=a|0;var b=0,d=0,e=0;switch(c[a>>2]|0){case 1:{e=a+40|0;b=a+8+36|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(c[e>>2]|0))break;xN(c[d+(a<<3)+4>>2]|0);a=a+1|0}xN(d);break}case 2:{e=a+56|0;d=a+60|0;a=0;while(1){b=c[d>>2]|0;if((a|0)>=(c[e>>2]|0))break;xN(c[b+(a<<3)+4>>2]|0);a=a+1|0}xN(b);break}default:{}}return}function xt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;k=o+4|0;n=o;c[d>>2]=0;c[e>>2]=(qn(ro(b)|0)|0)!=0&1;f=c[42261]|0;a:do if(f|0?(h=Jm(b,f)|0,i=a[h>>0]|0,i<<24>>24):0){f=19448;while(1){g=c[f>>2]|0;if(!g)break a;if(i<<24>>24==(a[g>>0]|0)?(vJ(h,g)|0)==0:0)break;f=f+12|0}c[d>>2]=c[f+4>>2];c[e>>2]=c[f+8>>2]}while(0);f=c[42272]|0;if((f|0?(c[e>>2]|0)==1:0)?(j=Jm(b,f)|0,a[j>>0]|0):0)yt(j,e);f=c[42273]|0;if((f|0?(c[d>>2]|0)==1:0)?(m=Jm(b,f)|0,a[m>>0]|0):0)yt(m,d);if(a[(c[b+16>>2]|0)+153>>0]|0){j=b+-48|0;i=ro(c[((c[b>>2]&3|0)==2?b:j)+40>>2]|0)|0;m=c[b>>2]&3;xt(an(i,c[((m|0)==2?b:j)+40>>2]|0,c[((m|0)==3?b:b+48|0)+40>>2]|0,0,0)|0,k,n);c[e>>2]=c[k>>2]|c[e>>2];c[d>>2]=c[n>>2]|c[d>>2]}l=o;return}function yt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;m=o;k=o+4|0;j=0;e=0;a:while(1){c[d>>2]=e;f=(j|0)<4;g=(j|0)==3;h=(j|0)==0;while(1){if(!(f&(a[b>>0]|0)!=0))break a;c[k>>2]=0;i=zt(b,k)|0;e=c[k>>2]|0;if(!e){n=5;break a}b=(e|0)==8;if(!(g&b)){if(!(h&b)){b=e;break}if(a[i>>0]|0){b=8;break}}c[k>>2]=0;b=i}e=c[d>>2]|b<<(j<<3);j=j+1|0;b=i}if((n|0)==5){c[m>>2]=b;_l(0,84673,m)|0}l=o;return}function zt(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;c[e>>2]=0;d=At(a,19508,e)|0;if((d|0)==(a|0)){while(1){d=At(a,19524,e)|0;if((a|0)==(d|0))break;else a=d}d=At(a,19572,e)|0}a=c[e>>2]|0;if((a|0)!=0&(a&15|0)==0){a=a|1;c[e>>2]=a}c[b>>2]=c[b>>2]|a;l=f;return d|0}function At(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;while(1){e=c[b>>2]|0;if(!e)break;f=TK(e)|0;if(!(xJ(a,e,f)|0)){g=4;break}b=b+8|0}if((g|0)==4){c[d>>2]=c[d>>2]|c[b+4>>2];a=a+f|0}return a|0}function Bt(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,i=0;g=0;d=0.0;while(1){if((g|0)==4)break;f=b>>(g<<3)&15;e=1336;while(1){if(!(c[e+16>>2]|0))break;if((f|0)==(c[e>>2]|0)){i=6;break}e=e+24|0}if((i|0)==6){i=0;d=d+ +h[e+8>>3]}g=g+1|0}return +(d*10.0*+BA(a,c[42265]|0,1.0,0.0))}function Ct(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0;s=l;l=l+96|0;n=s+80|0;r=s;m=f>4.0?f*.25*.35:.35;k=+h[d+8>>3];o=m*k;i=+h[d>>3];m=m*i;f=+h[b>>3];i=i+f;h[n>>3]=i;e=+h[b+8>>3];k=k+e;h[n+8>>3]=k;d=r+64|0;p=r+32|0;q=r+16|0;j=r+24|0;if(!(g&32)){c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];h[q>>3]=o+i;h[j>>3]=k-m;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];f=i;e=k}else{c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];h[q>>3]=o+f;h[j>>3]=e-m;c[p>>2]=c[n>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2]}h[r+48>>3]=f-o;h[r+56>>3]=m+e;d=g>>>4&1^1;do if(!(g&64))if(!(g&128)){ED(a,q,3,d);break}else{ED(a,p,3,d);break}else ED(a,r,3,d);while(0);l=s;return}function Dt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0.0,C=0,D=0,E=0;D=l;l=l+160|0;A=D+144|0;C=D;u=e*4.0;E=(g&32|0)!=0;z=E^1;u=!(u<f)|z?.45:f/u*.45;w=!(f>1.0)|z?0.0:(f+-1.0)*.05/e;y=+h[d+8>>3];v=-y;B=u*v;x=+h[d>>3];u=u*x;v=w*v;w=w*x;f=+h[b>>3];s=x+f;h[A>>3]=s;t=+h[b+8>>3];e=y+t;h[A+8>>3]=e;x=f+x*.5;y=y*.5+t;d=C+128|0;i=x-v;j=y-w;z=C+48|0;k=C+64|0;m=C+40|0;n=C+32|0;o=C+24|0;p=C+16|0;q=C+80|0;r=C+56|0;if(E){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[C>>2]=c[b>>2];c[C+4>>2]=c[b+4>>2];c[C+8>>2]=c[b+8>>2];c[C+12>>2]=c[b+12>>2];h[p>>3]=s-B;h[o>>3]=e-u;h[n>>3]=i;h[m>>3]=j;h[z>>3]=s-v;h[r>>3]=e-w;c[k>>2]=c[A>>2];c[k+4>>2]=c[A+4>>2];c[k+8>>2]=c[A+8>>2];c[k+12>>2]=c[A+12>>2];h[q>>3]=v+s;i=w+e;f=s}else{c[d>>2]=c[A>>2];c[d+4>>2]=c[A+4>>2];c[d+8>>2]=c[A+8>>2];c[d+12>>2]=c[A+12>>2];c[C>>2]=c[A>>2];c[C+4>>2]=c[A+4>>2];c[C+8>>2]=c[A+8>>2];c[C+12>>2]=c[A+12>>2];h[p>>3]=f-B;h[o>>3]=t-u;h[n>>3]=i;h[m>>3]=j;h[z>>3]=f;h[r>>3]=t;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];h[q>>3]=f;i=t;e=t}h[C+88>>3]=i;h[C+96>>3]=v+x;h[C+104>>3]=w+y;h[C+112>>3]=B+f;h[C+120>>3]=u+e;do if(!(g&64))if(!(g&128)){ED(a,C,9,1);break}else{ED(a,z,6,1);break}else ED(a,C,6,1);while(0);l=D;return}function Et(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;q=l;l=l+64|0;p=q;t=+h[d+8>>3];s=+h[d>>3];k=+h[b>>3];e=s+k;m=+h[b+8>>3];f=t+m;i=k+s*.2;j=t*.2+m;k=k+s*.6;m=t*.6+m;h[p>>3]=i-t;h[p+8>>3]=s+j;n=p+16|0;h[n>>3]=t+i;o=p+24|0;h[o>>3]=j-s;h[p+32>>3]=t+k;h[p+40>>3]=m-s;h[p+48>>3]=k-t;h[p+56>>3]=s+m;if(!(g&64)){if(g&128|0){d=2;g=1;r=3}}else{d=3;g=0;r=3}if((r|0)==3){h[p+(g<<4)>>3]=i;h[p+(g<<4)+8>>3]=j;h[p+(d<<4)>>3]=k;h[p+(d<<4)+8>>3]=m}ED(a,p,4,1);c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[n>>3]=e;h[o>>3]=f;HD(a,p,2);l=q;return}function Ft(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0;o=l;l=l+64|0;n=o;j=+h[d+8>>3];r=j*-.4;i=+h[d>>3];q=i*.4;t=+h[b>>3];e=t+i*.8;s=+h[b+8>>3];f=j*.8+s;i=i+t;j=j+s;h[n>>3]=r+t;k=n+8|0;h[k>>3]=q+s;d=n+16|0;h[d>>3]=t-r;m=n+24|0;h[m>>3]=s-q;h[n+32>>3]=e-r;h[n+40>>3]=f-q;h[n+48>>3]=r+e;h[n+56>>3]=q+f;if(!(g&64)){if(g&128|0){c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];d=2;p=5}}else{c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];d=3;p=5}if((p|0)==5){h[n+(d<<4)>>3]=e;h[n+(d<<4)+8>>3]=f}ED(a,n,4,g>>>4&1^1);h[n>>3]=e;h[k>>3]=f;h[n+16>>3]=i;h[m>>3]=j;HD(a,n,2);l=o;return}function Gt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;k=l;l=l+80|0;j=k;p=+h[d+8>>3];m=-p/3.0;r=+h[d>>3];f=r/3.0;q=+h[b>>3];n=q+r*.5;o=+h[b+8>>3];e=p*.5+o;i=j+64|0;h[j+64>>3]=r+q;h[j+72>>3]=p+o;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];h[j+16>>3]=m+n;h[j+24>>3]=f+e;i=j+32|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[j+48>>3]=n-m;h[j+56>>3]=e-f;d=g>>>4&1^1;do if(!(g&64))if(!(g&128)){ED(a,j,4,d);break}else{ED(a,j,3,d);break}else ED(a,i,3,d);while(0);l=k;return}function Ht(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;var g=0,i=0,j=0.0;g=l;l=l+32|0;i=g;j=+h[c>>3];e=+h[c+8>>3];d=+G(+(j*j+e*e))*.5;j=j*.5+ +h[b>>3];h[i>>3]=j-d;e=e*.5+ +h[b+8>>3];h[i+8>>3]=e-d;h[i+16>>3]=d+j;h[i+24>>3]=d+e;DD(a,i,2,f>>>4&1^1);l=g;return}function It(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+112|0;o=r+48|0;p=r+16|0;q=r;t=f>4.0?f*.5*.25:.5;s=+h[b>>3];m=+h[d>>3];f=+h[b+8>>3];e=+h[d+8>>3];k=t*e;t=t*m;c[p>>2]=c[b>>2];c[p+4>>2]=c[b+4>>2];c[p+8>>2]=c[b+8>>2];c[p+12>>2]=c[b+12>>2];h[p+16>>3]=s+m;h[p+24>>3]=f+e;h[o>>3]=t+(s-k);e=f+t+k;h[o+8>>3]=e;h[o+48>>3]=t+(s+k);f=f-t+k;h[o+56>>3]=f;m=k*-.95;i=t+(s+m);j=t*4.0/3.0;b=o+32|0;k=k*4.0/3.0;m=t+(s-m);d=o+16|0;n=o+24|0;if(!(g&32)){h[d>>3]=i-j;h[n>>3]=e-k;h[b>>3]=m-j;e=f-k}else{h[d>>3]=j+i;h[n>>3]=k+e;h[b>>3]=j+m;e=f+k}h[o+40>>3]=e;HD(a,p,2);if(!(g&64)){if(g&128|0)MA(q,o,3,.5,o,0)}else MA(q,o,3,.5,0,o);GD(a,o,4,0,0,0);l=r;return}function Jt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=+f;g=g|0;var i=0;g=l;l=l+32|0;i=g;e=+h[b>>3]+ +h[d>>3];f=+h[b+8>>3]+ +h[d+8>>3];c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=e;h[i+24>>3]=f;HD(a,i,2);l=g;return}function Kt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+80|0;j=n+72|0;k=n+8|0;m=n;i=+Bt(a,g);i=i*i;h[m>>3]=i;c[f+12>>2]=g;g=f+32|0;a=e+3|0;f=b+(a<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];if((e|0)>(d|0)?(p=+h[b+(e<<4)>>3]-+h[f>>3],o=+h[b+(e<<4)+8>>3]-+h[b+(a<<4)+8>>3],p*p+o*o<i):0)e=e+-3|0;s=k+48|0;r=b+(e<<4)|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];q=k+32|0;a=b+(e+1<<4)|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];f=k+16|0;d=b+(e+2<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];c[j>>2]=k;c[j+4>>2]=m;Cz(j,26,k,1);c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];c[a>>2]=c[q>>2];c[a+4>>2]=c[q+4>>2];c[a+8>>2]=c[q+8>>2];c[a+12>>2]=c[q+12>>2];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];m=b+(e+3<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];l=n;return e|0}function Lt(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a>>2]|0;e=+h[b>>3]-+h[f>>3];d=+h[b+8>>3]-+h[f+8>>3];return e*e+d*d<=+h[c[a+4>>2]>>3]|0}function Mt(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0;o=l;l=l+80|0;k=o+72|0;m=o+8|0;n=o;j=+Bt(a,g);j=j*j;h[n>>3]=j;c[f+8>>2]=g;f=f+16|0;a=b+(d<<4)|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];if(!((e|0)>(d|0)?(i=d+3|0,q=+h[a>>3]-+h[b+(i<<4)>>3],p=+h[b+(d<<4)+8>>3]-+h[b+(i<<4)+8>>3],q*q+p*p<j):0))i=d;e=b+(i+3<<4)|0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];g=m+16|0;d=b+(i+2<<4)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];r=m+32|0;a=b+(i+1<<4)|0;c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];s=m+48|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];c[k>>2]=s;c[k+4>>2]=n;Cz(k,26,m,0);n=b+(i<<4)|0;c[n>>2]=c[s>>2];c[n+4>>2]=c[s+4>>2];c[n+8>>2]=c[s+8>>2];c[n+12>>2]=c[s+12>>2];c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];c[e>>2]=c[m>>2];c[e+4>>2]=c[m+4>>2];c[e+8>>2]=c[m+8>>2];c[e+12>>2]=c[m+12>>2];l=o;return i|0}function Nt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0;t=(g|0)!=0;p=(i|0)!=0;F=f+24|0;D=f+12|0;A=e+3|0;B=b+(A<<4)|0;x=e+1|0;E=f+16|0;A=b+(A<<4)+8|0;C=b+(x<<4)|0;z=f+32|0;v=b+(e<<4)|0;H=f+8|0;w=f+40|0;y=b+(e+2<<4)|0;x=b+(x<<4)+8|0;f=b+(e<<4)+8|0;if(!((e|0)==(d|0)&(t&p))){if(p){j=+Bt(a,i);o=+h[v>>3];n=+h[f>>3];l=+h[B>>3];m=+h[A>>3];r=o-l;s=n-m;s=+G(+(r*r+s*s))*.9;j=j>=s?s:j;if(n==m){k=l+(o<l?-j:j);j=n}else{k=o;j=m+(n<m?-j:j)}h[C>>3]=o;h[x>>3]=n;h[B>>3]=k;h[A>>3]=j;c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];c[D>>2]=i;h[z>>3]=l;h[w>>3]=m}if(t){l=+Bt(a,g);f=b+(d<<4)|0;k=+h[f>>3];j=+h[b+(d<<4)+8>>3];D=d+3|0;n=+h[b+(D<<4)>>3];o=+h[b+(D<<4)+8>>3];r=k-n;s=j-o;s=+G(+(r*r+s*s))*.9;l=l>=s?s:l;if(j==o){m=k+(k<n?l:-l);l=j}else{m=k;l=j+(j<o?l:-l)}D=d+1|0;u=b+(D<<4)|0;h[u>>3]=m;h[b+(D<<4)+8>>3]=l;c[f>>2]=c[u>>2];c[f+4>>2]=c[u+4>>2];c[f+8>>2]=c[u+8>>2];c[f+12>>2]=c[u+12>>2];u=d+2|0;h[b+(u<<4)>>3]=n;h[b+(u<<4)+8>>3]=o;u=16}}else{s=+h[v>>3];r=+h[f>>3];k=+h[B>>3];j=+h[A>>3];l=+Bt(a,g);q=+Bt(a,i);o=s-k;m=r-j;m=+G(+(o*o+m*m));d=!(l+q>=m);m=m/3.0;l=d?l:m;m=d?q:m;if(r==j){d=s<k;o=k+(d?-m:m);q=s+(d?l:-l);n=r;l=r}else{d=r<j;o=s;q=s;n=r+(d?l:-l);l=j+(d?-m:m)}h[C>>3]=q;h[x>>3]=n;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];h[B>>3]=o;h[A>>3]=l;c[y>>2]=c[B>>2];c[y+4>>2]=c[B+4>>2];c[y+8>>2]=c[B+8>>2];c[y+12>>2]=c[B+12>>2];c[D>>2]=i;h[z>>3]=s;h[w>>3]=r;u=16}if((u|0)==16){c[H>>2]=g;h[E>>3]=k;h[F>>3]=j}return}function Ot(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0.0,o=0.0;m=+h[b>>3];k=+h[c>>3]-m;o=+h[b+8>>3];j=+h[c+8>>3]-o;l=d*10.0/(+G(+(j*j+k*k))+.0001);k=(k+(k>=0.0?.0001:-.0001))*l;j=l*(j+(j>=0.0?.0001:-.0001));l=k*.5;n=j*.5;i=m-n;f=o-l;n=m+n;l=o+l;o=k+i;m=f+j;k=k+n;j=l+j;g=o>k?o:k;g=n>g?n:g;d=m>j?m:j;d=l>d?l:d;k=o<k?o:k;k=n<k?n:k;j=m<j?m:j;j=l<j?l:j;h[a>>3]=i<k?i:k;h[a+8>>3]=f<j?f:j;h[a+16>>3]=i>g?i:g;h[a+24>>3]=f>d?f:d;return}function Pt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0;q=l;l=l+48|0;m=q+32|0;k=q+16|0;p=q;n=(c[a+16>>2]|0)+12|0;o=c[n>>2]|0;c[n>>2]=b;CD(a,c[(c[a>>2]|0)+336>>2]|0);LD(a,g);t=+h[e>>3]-+h[d>>3];b=e+8|0;r=+h[b>>3]-+h[d+8>>3];s=10.0/(+G(+(r*r+t*t))+.0001);h[e>>3]=(t+(t>=0.0?.0001:-.0001))*s;h[b>>3]=s*(r+(r>=0.0?.0001:-.0001));b=0;while(1){if((b|0)>=4)break;j=i>>(b<<3)&255;if(!j)break;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];Qt(p,a,k,m,f,g,j);c[d>>2]=c[p>>2];c[d+4>>2]=c[p+4>>2];c[d+8>>2]=c[p+8>>2];c[d+12>>2]=c[p+12>>2];b=b+1|0}c[n>>2]=o;l=q;return}function Qt(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;g=+g;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+32|0;m=q+16|0;k=q;n=i&15;j=1336;while(1){o=c[j>>2]|0;if(!o)break;if((n|0)==(o|0)){p=4;break}j=j+24|0}if((p|0)==4){r=+h[j+8>>3]*f;h[e>>3]=+h[e>>3]*r;o=e+8|0;h[o>>3]=r*+h[o>>3];p=c[j+16>>2]|0;c[k>>2]=c[d>>2];c[k+4>>2]=c[d+4>>2];c[k+8>>2]=c[d+8>>2];c[k+12>>2]=c[d+12>>2];c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];eb[p&15](b,k,m,f,g,i);h[d>>3]=+h[d>>3]+ +h[e>>3];p=d+8|0;h[p>>3]=+h[p>>3]+ +h[o>>3]};c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=q;return}function Rt(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;g=i+8|0;f=i;d=Im(b,84775)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else{d=Im(b,84787)|0;if((d|0)!=0?(a[d>>0]|0)!=0:0){e=d;h=5}else d=0}if((h|0)==5){d=st(e,0,120)|0;if(!d){c[f>>2]=Dn(b)|0;_l(0,84794,f)|0;c[g>>2]=e;_l(3,84847,g)|0}}l=i;return d|0}function St(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+16|0;j=sw(304)|0;if(!j)_l(1,84855,k)|0;b=a+16|0;a=c[b>>2]|0;c[j>>2]=a;c[b>>2]=j;b=j+152|0;d=j+144|0;e=j+148|0;if(!a){c[d>>2]=3;c[e>>2]=0;h[b>>3]=1.0}else{f=j+16|0;g=a+16|0;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));f=j+56|0;g=a+56|0;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));c[d>>2]=c[a+144>>2];c[e>>2]=c[a+148>>2];h[b>>3]=+h[a+152>>3];c[j+136>>2]=c[a+136>>2];f=j+96|0;g=a+96|0;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0))}l=k;return j|0}function Tt(a){a=a|0;var b=0;a=a+16|0;b=c[a>>2]|0;if(!b)va(84881,84885,117,84892);else{xN(c[b+212>>2]|0);xN(c[b+208>>2]|0);xN(c[b+216>>2]|0);xN(c[b+220>>2]|0);xN(c[b+224>>2]|0);xN(c[b+228>>2]|0);xN(c[b+232>>2]|0);xN(c[b+236>>2]|0);xN(c[b+240>>2]|0);xN(c[b+244>>2]|0);xN(c[b+248>>2]|0);xN(c[b+252>>2]|0);xN(c[b+256>>2]|0);xN(c[b+272>>2]|0);xN(c[b+284>>2]|0);xN(c[b+280>>2]|0);c[a>>2]=c[b>>2];xN(b);return}}function Ut(d,e,f,g,h,i,j){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0;m=c[d+16>>2]|0;l=c[d+152>>2]|0;k=m+192|0;if((e|0)!=0&(l&32768|0)!=0)c[k>>2]=e;if(((l&65536|0)!=0?(c[m+212>>2]=nw(i,j)|0,(f|0)!=0):0)?(a[f>>0]|0)!=0:0){c[m+208>>2]=nw(f,j)|0;d=1}else d=0;do if(l&4194304){if(g|0?a[g>>0]|0:0){c[m+228>>2]=nw(g,j)|0;d=m+260|0;b[d>>1]=b[d>>1]|1;d=1;break}e=c[k>>2]|0;if(e){c[m+228>>2]=mL(e)|0;d=1}}while(0);if((h|0)!=0&(l&8388608|0)!=0?(a[h>>0]|0)!=0:0){c[m+244>>2]=nw(h,j)|0;d=1}return d|0}function Vt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+80|0;i=j;h=j+8|0;g=c[(c[b>>2]|0)+168>>2]|0;f=c[(c[(c[g+16>>2]|0)+8>>2]|0)+92>>2]|0;Wt(b,e);b=Im(d,86759)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0){fm(e,b)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}else{if((g|0)!=(d|0)&(f|0)!=0){fm(e,f)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}c[f>>2]=b+1;a[b>>0]=95}switch(Co(d)|0){case 0:{f=(g|0)==(d|0)?96302:84906;b=(c[d>>2]|0)>>>4;break}case 1:{f=96289;b=(c[d>>2]|0)>>>4;break}case 2:{f=96253;b=(c[d>>2]|0)>>>4;break}default:{f=0;b=0}}fm(e,f)|0;c[i>>2]=b;yJ(h,84912,i)|0;fm(e,h)|0;f=e+4|0;b=c[f>>2]|0;if(b>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;b=c[f>>2]|0}a[b>>0]=0;b=c[e>>2]|0;c[f>>2]=b}l=j;return b|0}function Wt(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+144|0;h=i;g=i+8|0;e=c[b+160>>2]|0;if((e|0)>1?c[b+152>>2]&64|0:0){fm(d,c[(c[(c[b>>2]|0)+308>>2]|0)+(e<<2)>>2]|0)|0;f=d+4|0;e=c[f>>2]|0;if(e>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;e=c[f>>2]|0}c[f>>2]=e+1;a[e>>0]=95}f=c[b+196>>2]|0;e=c[b+200>>2]|0;if((f|0)>0|(e|0)>0){c[h>>2]=f;c[h+4>>2]=e;yJ(g,84916,h)|0;fm(d,g)|0}l=i;return}function Xt(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0;s=l;l=l+48|0;p=s+16|0;f=s+32|0;q=s;r=+h[(c[a+16>>2]|0)+152>>3];o=Yt(d,0,f)|0;if((o+-1|0)>>>0>=2){e=+h[b+16>>3];k=(+h[b>>3]+e)*.5;h[q>>3]=k;i=+h[b+24>>3];m=(+h[b+8>>3]+i)*.5;h[q+8>>3]=m;k=e-k;m=i-m;n=r>.5;if(n)LD(a,.5);j=c[f>>2]|0;i=0.0;f=c[j+8>>2]|0;while(1){d=c[f>>2]|0;if(!d)break;b=f+4|0;if(+g[b>>2]==0.0)e=i;else{AD(a,d);if(!(c[f+12>>2]|0))e=6.283185307179586;else e=i+ +g[b>>2]*6.283185307179586;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];b=ZE(p,k,m,i,e)|0;GD(a,c[b>>2]|0,c[b+4>>2]|0,0,0,1);WI(b)}i=e;f=f+12|0}if(n)LD(a,r);Zt(j)}l=s;return o|0}function Yt(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;n=q+8|0;i=q;p=sw(12)|0;h=mL(b)|0;a:do if(!d){d=1;f=h;while(1){switch(a[f>>0]|0){case 0:break a;case 58:{d=d+1|0;break}default:{}}f=f+1|0}}while(0);c[p+4>>2]=h;o=sw((d*12|0)+12|0)|0;c[p+8>>2]=o;j=1.0;f=0;d=0;while(1){h=uN(h,92977)|0;if(!h){h=20;break}k=+_t(h);if(!(k>=0.0)){h=17;break}m=k-j;if(m>0.0)if((c[4921]|0)!=0?!(m<1.0e-05&m>-1.0e-05):0){c[i>>2]=b;_l(0,84927,i)|0;c[4921]=0;k=j;d=3}else k=j;j=j-k;if(k>0.0)a[o+(f*12|0)+8>>0]=1;if(a[h>>0]|0)c[o+(f*12|0)>>2]=h;g[o+(f*12|0)+4>>2]=k;if(j<1.0e-05&j>-1.0e-05){h=30;break}else{f=f+1|0;h=0}}b:do if((h|0)==17){if(!(c[4921]|0))d=1;else{c[n>>2]=b;_l(1,84962,n)|0;c[4921]=0;d=2}Zt(p)}else if((h|0)==20){b=f+-1|0;if(j>0.0){h=0;i=0;while(1){if((h|0)>=(f|0))break;n=(+g[o+(h*12|0)+4>>2]==0.0&1)+i|0;h=h+1|0;i=n}if((i|0)<=0){f=o+(b*12|0)+4|0;g[f>>2]=j+ +g[f>>2];f=b;h=30;break}j=j/+(i|0);h=0;while(1){if((h|0)>=(f|0)){f=b;h=30;break b}i=o+(h*12|0)+4|0;if(+g[i>>2]==0.0)g[i>>2]=j;h=h+1|0}}else{f=b;h=30}}while(0);if((h|0)==30){while(1){if((f|0)<=-1)break;if(+g[o+(f*12|0)+4>>2]>0.0)break;f=f+-1|0}n=f+1|0;c[o+(n*12|0)>>2]=0;c[p>>2]=n;c[e>>2]=p}l=q;return d|0}function Zt(a){a=a|0;xN(c[a+4>>2]|0);xN(c[a+8>>2]|0);xN(a);return}function _t(b){b=b|0;var d=0.0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;b=VK(b,59)|0;if(!b)d=0.0;else{g=b+1|0;a[b>>0]=0;d=+nN(g,e);d=(d>=0.0?(c[e>>2]|0)!=(g|0):0)?d:-1.0}l=f;return +d}function $t(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0;u=l;l=l+80|0;o=u+64|0;s=u;t=+h[(c[a+16>>2]|0)+152>>3];p=Yt(d,0,o)|0;if((p+-1|0)>>>0>=2){q=s+16|0;d=s+48|0;i=b+48|0;r=s+32|0;j=b+32|0;k=b+16|0;if(!e){c[s>>2]=c[b>>2];c[s+4>>2]=c[b+4>>2];c[s+8>>2]=c[b+8>>2];c[s+12>>2]=c[b+12>>2];c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[r>>2]=c[j>>2];c[r+4>>2]=c[j+4>>2];c[r+8>>2]=c[j+8>>2];c[r+12>>2]=c[j+12>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];c[d+8>>2]=c[i+8>>2];c[d+12>>2]=c[i+12>>2]}else{c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];c[q>>2]=c[i>>2];c[q+4>>2]=c[i+4>>2];c[q+8>>2]=c[i+8>>2];c[q+12>>2]=c[i+12>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}m=+h[q>>3];f=+h[s>>3];n=m-f;h[r>>3]=f;h[q>>3]=f;e=t>.5;if(e)LD(a,.5);k=c[o>>2]|0;b=s+48|0;j=c[k+8>>2]|0;while(1){d=c[j>>2]|0;if(!d)break;i=j+4|0;if(!(+g[i>>2]==0.0)){AD(a,d);if(!(c[j+12>>2]|0))f=m;else f=+h[s>>3]+n*+g[i>>2];h[r>>3]=f;h[q>>3]=f;ED(a,s,4,1);f=+h[q>>3];h[b>>3]=f;h[s>>3]=f}j=j+12|0}if(e)LD(a,t);Zt(k)}l=u;return p|0}function au(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;g=f>>>16^2;c[d+264>>2]=g;h=d+268|0;c[h>>2]=g+2;g=d+272|0;xN(c[g>>2]|0);d=sw(c[h>>2]<<4)|0;c[g>>2]=d;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];g=d+16|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];if(!(e&8192))cD(a,d,d,2)|0;if(!f)Wv(d)}return}function bu(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+144|0;c=r+80|0;e=r+16|0;j=r;k=+h[b>>3];o=a+16|0;m=+h[o>>3];p=a+24|0;n=a+8|0;if(!(((((((((!(k>m)?(d=+h[a>>3],!(k<d)):0)?(f=+h[b+8>>3],g=+h[p>>3],!(f>g)):0)?(i=+h[n>>3],!(f<i)):0)?(k=+h[b+16>>3],!(k>m|k<d)):0)?(k=+h[b+24>>3],!(k>g|k<i)):0)?(k=+h[b+32>>3],!(k>m|k<d)):0)?(k=+h[b+40>>3],!(k>g|k<i)):0)?(k=+h[b+48>>3],!(k>m|k<d)):0)?(m=+h[b+56>>3],!(m>g|m<i)):0))q=11;a:do if((q|0)==11){if(!(cu(b)|0)){MA(j,b,3,.5,c,e);bu(a,c);bu(a,e);break}else e=0;while(1){if((e|0)==4)break a;d=+h[b+(e<<4)>>3];if(!(d>+h[o>>3])){if(d<+h[a>>3]){c=a;q=15}}else{c=o;q=15}if((q|0)==15){q=0;h[c>>3]=d}d=+h[b+(e<<4)+8>>3];if(!(d>+h[p>>3])){if(d<+h[n>>3]){c=a;q=18}}else{c=o;q=18}if((q|0)==18){q=0;h[c+8>>3]=d}e=e+1|0}}while(0);l=r;return}function cu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,h=0,i=0;b=l;l=l+48|0;d=b+32|0;e=b+16|0;f=b;i=a+48|0;h=a+16|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];g=+$v(f,e,d);h=a+32|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];c[d>>2]=c[h>>2];c[d+4>>2]=c[h+4>>2];c[d+8>>2]=c[h+8>>2];c[d+12>>2]=c[h+12>>2];a=g<4.0&+$v(f,e,d)<4.0&1;l=b;return a|0}function du(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0;m=l;l=l+16|0;k=m;j=c[b+152>>2]|0;g=+h[b+352>>3];n=+h[b+432>>3];f=g*n/72.0;h[b+488>>3]=f;i=+h[b+440>>3];g=g*i/72.0;h[b+496>>3]=g;h[b+520>>3]=n/72.0;i=i/72.0;e=b+528|0;h[e>>3]=i;if(c[42195]|j&4096|0)h[e>>3]=-i;p=(c[b+360>>2]|0)==0;o=b+376|0;n=+((c[b+452>>2]|0)>>>0);e=b+368|0;h[(p?e:o)>>3]=+((c[b+448>>2]|0)>>>0)/(p?f:g);h[(p?o:e)>>3]=n/(p?g:f);ID(b,CA(d,ym(d,0,86555,0)|0,174318)|0);c[b+160>>2]=0;eu(b,d);if(j&2|0)fu(b,d);e=co(d)|0;while(1){if(!e)break;a[(c[e+16>>2]|0)+116>>0]=0;e=eo(d,e)|0}gu(b,k);while(1){if(!((hu(b)|0)<<24>>24))break;if((iu(b)|0)>1)hD(b);ju(b);while(1){if(!((ku(b)|0)<<24>>24))break;lu(b,d);mu(b)}if((iu(b)|0)>1)iD(b);nu(b,k)}ou(b);l=m;return}function eu(a,b){a=a|0;b=b|0;var d=0;d=St(a)|0;c[d+4>>2]=0;c[d+8>>2]=b;c[d+12>>2]=0;nv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);dD(a,b);return}function fu(b,c){b=b|0;c=c|0;var d=0,e=0,f=0,g=0;AD(b,119608);d=Im(c,85383)|0;if(d|0?a[d>>0]|0:0)AD(b,d);d=Im(c,86463)|0;if(d|0?a[d>>0]|0:0)yD(b,d);zv(b,c);g=co(c)|0;while(1){if(!g)break;d=Im(g,122556)|0;if(d|0?a[d>>0]|0:0)yD(b,d);d=Im(g,122547)|0;if(d|0?a[d>>0]|0:0)AD(b,d);d=Im(g,86429)|0;do if(d|0?a[d>>0]|0:0){if(!(VK(d,58)|0)){yD(b,d);break}e=mL(d)|0;d=e;while(1){d=uN(d,92977)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}yD(b,d);d=0}xN(e)}while(0);d=Im(g,86463)|0;if(d|0?a[d>>0]|0:0)yD(b,d);f=Pm(c,g)|0;while(1){if(!f)break;d=Im(f,122556)|0;do if(d|0?a[d>>0]|0:0){if(!(VK(d,58)|0)){yD(b,d);break}e=mL(d)|0;d=e;while(1){d=uN(d,92977)|0;if(!d)break;if(!(a[d>>0]|0)){d=0;continue}yD(b,d);d=0}xN(e)}while(0);d=Im(f,86463)|0;if(d|0?a[d>>0]|0:0)yD(b,d);f=Rm(c,f)|0}g=eo(c,g)|0}return}function gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;e=m+8|0;j=m;h=c[a>>2]|0;d=c[h+312>>2]|0;g=a+156|0;c[g>>2]=d;h=c[h+316>>2]|0;i=a+152|0;f=a+52|0;k=a+160|0;if(!h)if((d|0)>1?(c[i>>2]&64|0)==0:0){c[e>>2]=c[f>>2];_l(0,85558,e)|0;c[g>>2]=1;d=0;a=1}else{d=0;a=1}else{a=h+4|0;if((c[h>>2]|0)>1?(c[i>>2]&64|0)==0:0){c[j>>2]=c[f>>2];_l(0,85558,j)|0;c[h+8>>2]=(c[g>>2]|0)+1}d=h+8|0;a=c[a>>2]|0}c[k>>2]=a;c[b>>2]=d;l=m;return}function hu(a){a=a|0;return (c[a+160>>2]|0)<=(c[a+156>>2]|0)|0}function iu(a){a=a|0;var b=0;b=c[(c[a>>2]|0)+316>>2]|0;return c[((b|0)==0?a+156|0:b)>>2]|0}function ju(a){a=a|0;var b=0,d=0;d=a+172|0;b=c[d+4>>2]|0;a=a+196|0;c[a>>2]=c[d>>2];c[a+4>>2]=b;return}function ku(a){a=a|0;var b=0,d=0;d=c[a+196>>2]|0;if(((d|0)>-1?(d|0)<(c[a+164>>2]|0):0)?(b=c[a+200>>2]|0,(b|0)>-1):0)a=(b|0)<(c[a+168>>2]|0)&1;else a=0;return a|0}function lu(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+176|0;m=q;f=q+48|0;n=q+32|0;o=c[d+16>>2]|0;p=c[d+152>>2]|0;if((c[d+160>>2]|0)<=1?(c[d+196>>2]|0)<=0:0)h=0;else{cm(n,128,f);g=o+212|0;h=c[g>>2]|0;Wt(d,n);fm(n,h)|0;i=n+4|0;f=c[i>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){dm(n,1)|0;f=c[i>>2]|0}a[f>>0]=0;j=c[n>>2]|0;c[i>>2]=j;c[g>>2]=j}YE(Im(e,85008)|0);qu(d);fD(d);yD(d,122122);AD(d,119608);i=o+208|0;j=o+260|0;do if(p&4259840|0){if((c[i>>2]|0)==0?(b[j>>1]&1)==0:0)break;if(p&655360){g=p&131072;c[o+264>>2]=g>>>16^2;f=sw((g>>>12^32)+32|0)|0;r=d+288|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];r=f+16|0;s=d+304|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];if(!g){Wv(f);g=4}else g=2}else{f=0;g=0}if(!(p&8192))cD(d,f,f,g)|0;c[o+272>>2]=f;c[o+268>>2]=g}while(0);f=e+16|0;if(p&32768|0?(k=c[(c[f>>2]|0)+12>>2]|0,k|0):0)c[o+192>>2]=c[k>>2];g=(p&4|0)!=0;do if(!g){if((c[i>>2]|0)==0?(b[j>>1]&1)==0:0)break;s=d+256|0;c[m>>2]=c[s>>2];c[m+4>>2]=c[s+4>>2];c[m+8>>2]=c[s+8>>2];c[m+12>>2]=c[s+12>>2];c[m+16>>2]=c[s+16>>2];c[m+20>>2]=c[s+20>>2];c[m+24>>2]=c[s+24>>2];c[m+28>>2]=c[s+28>>2];au(d,m);tD(d,c[i>>2]|0,c[o+228>>2]|0,c[o+244>>2]|0,c[o+212>>2]|0)}while(0);ru(d,e);f=c[(c[f>>2]|0)+12>>2]|0;if(f|0)mw(d,4,f);do if(!g){if((c[i>>2]|0)==0?(b[j>>1]&1)==0:0)break;uD(d)}while(0);su(d,e,p);gD(d);if(h|0){gm(n);c[o+212>>2]=h}l=q;return}function mu(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;d=h+24|0;b=h+16|0;j=h+8|0;f=h;g=a+196|0;i=a+188|0;c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[i>>2];c[d+4>>2]=c[i+4>>2];pu(j,b,d);i=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=i;if(!((ku(a)|0)<<24>>24)){e=a+180|0;if(!(c[a+184>>2]|0))c[a+200>>2]=c[a+176>>2];else c[g>>2]=c[a+172>>2];c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];pu(f,b,d);i=c[f+4>>2]|0;j=g;c[j>>2]=c[f>>2];c[j+4>>2]=i}l=h;return}function nu(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;a=a+160|0;if(!d)c[a>>2]=(c[a>>2]|0)+1;else{c[a>>2]=c[d>>2];c[b>>2]=d+4}return}function ou(a){a=a|0;eD(a);Tt(a);return}function pu(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[d+4>>2]|0)+(c[b+4>>2]|0)|0;c[a>>2]=(c[d>>2]|0)+(c[b>>2]|0);c[a+4>>2]=e;return}function qu(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0;v=l;l=l+48|0;n=v+32|0;g=v+24|0;j=v+8|0;k=v+16|0;m=v;e=a+196|0;d=c[e>>2]|0;e=c[e+4>>2]|0;o=g;c[o>>2]=d;c[o+4>>2]=e;o=a+164|0;i=c[o>>2]|0;o=c[o+4>>2]|0;u=j;c[u>>2]=i;c[u+4>>2]=o;u=a+360|0;if(c[u>>2]|0){c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];yv(k,n);e=k;d=c[e>>2]|0;e=c[e+4>>2]|0;o=g;c[o>>2]=d;c[o+4>>2]=e;c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];yv(m,n);o=m;i=c[o>>2]|0;o=c[o+4>>2]|0;n=j;c[n>>2]=i;c[n+4>>2]=o}r=+(d|0);s=+h[a+320>>3];f=r*s-+h[a+240>>3];h[a+288>>3]=f;p=+(e|0);q=+h[a+328>>3];t=p*q-+h[a+248>>3];h[a+296>>3]=t;h[a+304>>3]=s+f;h[a+312>>3]=q+t;d=a+472|0;e=a+456|0;if(!(c[(c[a+12>>2]|0)+28>>2]|0)){c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2]}else{c[d>>2]=c[((c[d>>2]|0)<(c[e>>2]|0)?d:e)>>2];n=a+476|0;c[n>>2]=c[((c[n>>2]|0)<(c[a+460>>2]|0)?d:e)+4>>2];n=a+480|0;c[n>>2]=c[((c[n>>2]|0)>(c[a+464>>2]|0)?d:e)+8>>2];n=a+484|0;c[n>>2]=c[((c[n>>2]|0)>(c[a+468>>2]|0)?d:e)+12>>2]}j=c[a+152>>2]|0;b=+h[a+336>>3];d=a+256|0;e=a+264|0;f=+h[a+344>>3];g=a+272|0;if(!(j&128)){b=b+s*(r-+(i|0)*.5);h[d>>3]=b;t=f+q*(p-+(o|0)*.5);h[e>>3]=t;r=s+b;h[g>>3]=r;f=q+t;s=b;q=r}else{q=+h[a+368>>3]*.5;s=b-q;h[d>>3]=s;r=+h[a+376>>3]*.5;t=f-r;h[e>>3]=t;q=b+q;h[g>>3]=q;f=f+r}h[a+280>>3]=f;b=+h[a+352>>3];d=a+512|0;e=a+504|0;g=(c[42195]|j&4096|0)!=0;r=+h[a+384>>3]/b;b=+h[a+392>>3]/b;if(!(c[u>>2]|0)){h[e>>3]=r-s;p=b;b=b-t}else{h[d>>3]=-f-b;p=r;f=q;d=e;b=r-s}h[d>>3]=g?-f-p:b;l=v;return}function ru(b,d){b=b|0;d=d|0;var e=0,f=0.0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+48|0;q=s;o=s+40|0;p=s+36|0;r=s+32|0;e=Im(d,85383)|0;if(!e){j=1;e=122006}else{i=(a[e>>0]|0)==0;j=i&1;e=i?122006:e}h=c[b+152>>2]|0;i=(a[e>>0]|0)==116;if(!(h&256))if(i){m=(vJ(e,122187)|0)==0;k=m?122006:e;m=m?1:j;n=8}else{k=e;m=j;n=8}else if(!(i?!(vJ(e,122187)|0):0)){k=e;m=j;n=8}if((n|0)==8?!((m|0)!=0&(h&33554432|0)!=0):0)if(!((uv(k,o,p)|0)<<24>>24)){AD(b,k);yD(b,122187);r=b+256|0;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];c[q+16>>2]=c[r+16>>2];c[q+20>>2]=c[r+20>>2];c[q+24>>2]=c[r+24>>2];c[q+28>>2]=c[r+28>>2];FD(b,q,1)}else{c[r>>2]=0;i=c[o>>2]|0;AD(b,i);yD(b,122187);tv(d,r)|0;e=c[o+4>>2]|0;h=AA(d,c[42205]|0,0,0)|0;f=+g[p>>2];if(!e)BD(b,122122,h,f);else BD(b,e,h,f);r=(c[r>>2]|0)>>>1&1|2;p=b+256|0;c[q>>2]=c[p>>2];c[q+4>>2]=c[p+4>>2];c[q+8>>2]=c[p+8>>2];c[q+12>>2]=c[p+12>>2];c[q+16>>2]=c[p+16>>2];c[q+20>>2]=c[p+20>>2];c[q+24>>2]=c[p+24>>2];c[q+28>>2]=c[p+28>>2];FD(b,q,r);xN(i)}e=c[(c[(c[d+16>>2]|0)+8>>2]|0)+88>>2]|0;if(e|0)wv(b,e);l=s;return}function su(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=(c[a>>2]|0)+28|0;c[g>>2]=(c[g>>2]|0)+1;g=(d&4|0)!=0;if(!g)tu(a,b,d);a:do if(!(d&1)){if(d&16|0){nD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;vu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}oD(a);lD(a);e=co(b)|0;while(1){if(!e)break;uu(a,e);e=eo(b,e)|0}mD(a);break}if(!(d&8)){f=co(b)|0;while(1){if(!f)break a;uu(a,f);e=Pm(b,f)|0;while(1){if(!e)break;uu(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0);vu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}}lD(a);e=co(b)|0;while(1){if(!e)break;if((wu(b,e)|0)<<24>>24)uu(a,e);e=eo(b,e)|0}mD(a);nD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;if((xu(b,e)|0)<<24>>24)vu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}oD(a)}else{lD(a);e=co(b)|0;while(1){if(!e)break;uu(a,e);e=eo(b,e)|0}mD(a);nD(a);f=co(b)|0;while(1){if(!f)break;e=Pm(b,f)|0;while(1){if(!e)break;vu(a,e);e=Rm(b,e)|0}f=eo(b,f)|0}oD(a)}while(0);if(g)tu(a,b,d);return}function tu(e,f,i){e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;R=l;l=l+128|0;y=R+72|0;P=R+64|0;J=R+112|0;K=R;L=R+104|0;M=f+16|0;N=(i&4|0)!=0;O=e+16|0;z=K+24|0;A=K+56|0;C=K+8|0;D=K+16|0;E=K+32|0;F=K+40|0;G=K+48|0;H=(i&8|0)==0;I=L+4|0;x=1;while(1){j=c[M>>2]|0;if((x|0)>(c[j+180>>2]|0))break;w=c[(c[j+184>>2]|0)+(x<<2)>>2]|0;if((rv(e,w)|0)<<24>>24){if(N)tu(e,w,i);sv(e,w);j=c[O>>2]|0;s=j+208|0;if(!(c[s>>2]|0))v=(b[j+260>>1]&1)!=0;else v=1;YE(Im(w,85008)|0);t=j+212|0;u=j+228|0;q=j+244|0;r=w+16|0;if(!(N|v^1)){p=(c[r>>2]|0)+16|0;c[y>>2]=c[p>>2];c[y+4>>2]=c[p+4>>2];c[y+8>>2]=c[p+8>>2];c[y+12>>2]=c[p+12>>2];c[y+16>>2]=c[p+16>>2];c[y+20>>2]=c[p+20>>2];c[y+24>>2]=c[p+24>>2];c[y+28>>2]=c[p+28>>2];au(e,y);tD(e,c[s>>2]|0,c[u>>2]|0,c[q>>2]|0,c[t>>2]|0)}c[J>>2]=0;j=tv(w,J)|0;if(!j)o=0;else{CD(e,j);o=c[J>>2]&1}j=d[(c[r>>2]|0)+112>>0]|0;do if(!(j&1)){if(j&2|0){j=DA(w,c[42196]|0,91260)|0;k=DA(w,c[42197]|0,91268)|0;Q=29;break}if(j&8|0){j=DA(w,c[42200]|0,91276)|0;k=DA(w,c[42201]|0,91284)|0;Q=29;break}if(j&4|0){j=DA(w,c[42198]|0,91292)|0;k=DA(w,c[42199]|0,91300)|0;Q=29;break}j=Im(w,122556)|0;if(!j)k=0;else k=(a[j>>0]|0)==0?0:j;j=Im(w,122547)|0;if(!j)j=k;else j=(a[j>>0]|0)==0?k:j;m=Im(w,86429)|0;if(m)k=(a[m>>0]|0)==0?k:m;if(!((o|0)!=0&(k|0)!=0)){m=Im(w,85383)|0;if(m|0?a[m>>0]|0:0){k=m;Q=29;break}j=(j|0)==0?122122:j;m=(k|0)==0?119608:k;c[L>>2]=0;if(!o){k=0;o=m}else{o=m;Q=31}}else Q=29}else{j=DA(w,c[42196]|0,91244)|0;k=DA(w,c[42197]|0,91252)|0;Q=29}while(0);if((Q|0)==29){c[L>>2]=0;j=(j|0)==0?122122:j;o=(k|0)==0?119608:k;Q=31}if((Q|0)==31){Q=0;if(!((uv(o,L,y)|0)<<24>>24)){AD(e,o);k=1}else{AD(e,c[L>>2]|0);k=c[I>>2]|0;m=AA(w,c[42205]|0,0,0)|0;n=+g[y>>2];if(!k)BD(e,122122,m,n);else BD(e,k,m,n);k=(c[J>>2]|0)>>>1&1|2}}m=c[42204]|0;if((m|0?(B=Jm(w,m)|0,B|0):0)?a[B>>0]|0:0)LD(e,+BA(w,c[42204]|0,1.0,0.0));p=c[J>>2]|0;m=c[42203]|0;do if(p&4){m=AA(w,m,1,0)|0;if(m|k|0){o=c[r>>2]|0;S=o+16|0;c[K>>2]=c[S>>2];c[K+4>>2]=c[S+4>>2];c[K+8>>2]=c[S+8>>2];c[K+12>>2]=c[S+12>>2];o=o+32|0;c[E>>2]=c[o>>2];c[E+4>>2]=c[o+4>>2];c[E+8>>2]=c[o+8>>2];c[E+12>>2]=c[o+12>>2];h[D>>3]=+h[E>>3];h[z>>3]=+h[C>>3];h[G>>3]=+h[K>>3];h[A>>3]=+h[F>>3];if(!m)yD(e,122187);else yD(e,j);vy(e,K,4,p,k)}}else{if(!(p&64)){if(AA(w,m,1,0)|0){yD(e,j);S=(c[r>>2]|0)+16|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];c[y+12>>2]=c[S+12>>2];c[y+16>>2]=c[S+16>>2];c[y+20>>2]=c[S+20>>2];c[y+24>>2]=c[S+24>>2];c[y+28>>2]=c[S+28>>2];FD(e,y,k);break}if(!k)break;yD(e,122187);S=(c[r>>2]|0)+16|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];c[y+12>>2]=c[S+12>>2];c[y+16>>2]=c[S+16>>2];c[y+20>>2]=c[S+20>>2];c[y+24>>2]=c[S+24>>2];c[y+28>>2]=c[S+28>>2];FD(e,y,k);break}S=c[r>>2]|0;p=S+16|0;c[K>>2]=c[p>>2];c[K+4>>2]=c[p+4>>2];c[K+8>>2]=c[p+8>>2];c[K+12>>2]=c[p+12>>2];S=S+32|0;c[E>>2]=c[S>>2];c[E+4>>2]=c[S+4>>2];c[E+8>>2]=c[S+8>>2];c[E+12>>2]=c[S+12>>2];h[D>>3]=+h[E>>3];h[z>>3]=+h[C>>3];h[G>>3]=+h[K>>3];h[A>>3]=+h[F>>3];if(!(AA(w,m,1,0)|0))yD(e,122187);else yD(e,j);if(($t(e,K,o,0)|0)>1){c[P>>2]=Dn(w)|0;_l(3,85391,P)|0}S=(c[r>>2]|0)+16|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];c[y+12>>2]=c[S+12>>2];c[y+16>>2]=c[S+16>>2];c[y+20>>2]=c[S+20>>2];c[y+24>>2]=c[S+24>>2];c[y+28>>2]=c[S+28>>2];FD(e,y,0)}while(0);xN(c[L>>2]|0);j=c[(c[r>>2]|0)+12>>2]|0;if(j|0)mw(e,5,j);if(v){if(N){S=(c[r>>2]|0)+16|0;c[y>>2]=c[S>>2];c[y+4>>2]=c[S+4>>2];c[y+8>>2]=c[S+8>>2];c[y+12>>2]=c[S+12>>2];c[y+16>>2]=c[S+16>>2];c[y+20>>2]=c[S+20>>2];c[y+24>>2]=c[S+24>>2];c[y+28>>2]=c[S+28>>2];au(e,y);tD(e,c[s>>2]|0,c[u>>2]|0,c[q>>2]|0,c[t>>2]|0)}uD(e)}a:do if(!H){k=co(w)|0;while(1){if(!k)break a;uu(e,k);j=Pm(w,k)|0;while(1){if(!j)break;vu(e,j);j=Rm(w,j)|0}k=eo(w,k)|0}}while(0);vv(e,f);if(!N)tu(e,w,i)}x=x+1|0}l=R;return}function uu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+32|0;e=j;h=c[b>>2]|0;i=d+16|0;a:do if(((c[(c[i>>2]|0)+8>>2]|0?(jv(b,ro(d)|0,d)|0)<<24>>24:0)?(k=b+256|0,c[e>>2]=c[k>>2],c[e+4>>2]=c[k+4>>2],c[e+8>>2]=c[k+8>>2],c[e+12>>2]=c[k+12>>2],c[e+16>>2]=c[k+16>>2],c[e+20>>2]=c[k+20>>2],c[e+24>>2]=c[k+24>>2],c[e+28>>2]=c[k+28>>2],(kv(d,e)|0)<<24>>24):0)?(f=(c[i>>2]|0)+116|0,g=c[h+28>>2]|0,(a[f>>0]|0)!=(g|0)):0){a[f>>0]=g;ID(b,Dn(d)|0);e=CA(d,c[42239]|0,174318)|0;if(a[e>>0]|0)ID(b,e);e=CA(d,c[42227]|0,174318)|0;b:do if(a[e>>0]|0){Au(e)|0;e=168440;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f)break b;if((a[f>>0]|0)!=105)continue;if(!(vJ(f,119143)|0))break a}}while(0);lv(b,d);cb[c[(c[(c[(c[i>>2]|0)+8>>2]|0)+4>>2]|0)+20>>2]&31](b,d);e=c[(c[i>>2]|0)+108>>2]|0;if(e|0?a[e+81>>0]|0:0)mw(b,10,e);mv(b)}while(0);l=j;return}function vu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;g=h;e=b+256|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];c[g+16>>2]=c[e+16>>2];c[g+20>>2]=c[e+20>>2];c[g+24>>2]=c[e+24>>2];c[g+28>>2]=c[e+28>>2];a:do if((yu(d,g)|0)<<24>>24?(f=d+-48|0,(zu(b,d)|0)<<24>>24):0){i=d+48|0;e=TK(Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;e=wN(e+3+(TK(Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)|0)|0;cL(e,Dn(c[((c[d>>2]&3|0)==3?d:i)+40>>2]|0)|0)|0;i=(qn(ro(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0)==0;g=e+(TK(e)|0)|0;if(i){a[g>>0]=a[122565]|0;a[g+1>>0]=a[122566]|0;a[g+2>>0]=a[122567]|0}else{a[g>>0]=a[122562]|0;a[g+1>>0]=a[122563]|0;a[g+2>>0]=a[122564]|0}sN(e,Dn(c[((c[d>>2]&3|0)==2?d:f)+40>>2]|0)|0)|0;ID(b,e);xN(e);e=CA(d,c[42268]|0,174318)|0;if(a[e>>0]|0)ID(b,e);e=CA(d,c[42262]|0,174318)|0;b:do if(!(a[e>>0]|0))e=0;else{Au(e)|0;e=168440;while(1){f=e;e=e+4|0;f=c[f>>2]|0;if(!f){e=168440;break b}if((a[f>>0]|0)!=105)continue;if(!(vJ(f,119143)|0))break a}}while(0);Bu(b,d,e);Cu(b,d,e);Du(b)}while(0);l=h;return}function wu(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function xu(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+16|0;a=1;while(1){e=c[d>>2]|0;if((a|0)>(c[e+180>>2]|0)){a=1;break}if(!(Bo(c[(c[e+184>>2]|0)+(a<<2)>>2]|0,b)|0))a=a+1|0;else{a=0;break}}return a|0}function yu(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;i=j+32|0;f=j;g=b+16|0;b=c[g>>2]|0;e=c[b+8>>2]|0;if((e|0)!=0?(e=e+8|0,c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+16>>2]=c[e+16>>2],c[f+20>>2]=c[e+20>>2],c[f+24>>2]=c[e+24>>2],c[f+28>>2]=c[e+28>>2],c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(iv(f,i)|0)!=0):0)b=1;else h=3;do if((h|0)==3){e=c[b+96>>2]|0;if(e){c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[i+16>>2]=c[d+16>>2];c[i+20>>2]=c[d+20>>2];c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];if((zB(e,i)|0)<<24>>24){b=1;break}b=c[g>>2]|0}b=c[b+108>>2]|0;if((b|0?a[b+81>>0]|0:0)?(c[i>>2]=c[d>>2],c[i+4>>2]=c[d+4>>2],c[i+8>>2]=c[d+8>>2],c[i+12>>2]=c[d+12>>2],c[i+16>>2]=c[d+16>>2],c[i+20>>2]=c[d+20>>2],c[i+24>>2]=c[d+24>>2],c[i+28>>2]=c[d+28>>2],(zB(b,i)|0)<<24>>24):0){b=1;break}b=0}while(0);l=j;return b|0}function zu(b,d){b=b|0;d=d|0;var e=0,f=0;a:do if((c[b+156>>2]|0)>=2?(e=CA(d,c[42267]|0,174318)|0,(ev(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=0;while(1){if((e|0)>=2){e=0;break a}f=(e|0)==1;f=CA(c[((c[d>>2]&3|0)==((f?2:3)|0)?d:d+((f?-1:1)*48|0)|0)+40>>2]|0,c[42237]|0,174318)|0;if(!(a[f>>0]|0)){e=1;break a}if(!((ev(b,f)|0)<<24>>24))e=e+1|0;else{e=1;break}}}else e=0;else e=1;while(0);return e|0}function Au(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+192|0;q=r+24|0;p=r+16|0;o=r+8|0;n=r;i=r+48|0;m=r+32|0;if(a[85265]|0){cm(168704,128,174084);a[85265]=0}cm(m,128,r+56|0);c[i>>2]=b;j=m+4|0;k=m+8|0;d=0;h=0;a:while(1){b:while(1){e=cv(i,m)|0;f=d<<24>>24!=0;if(!e){d=22;break a}g=d<<24>>24==0;switch(e|0){case 40:if(f){d=8;break a}else{d=1;continue b}case 41:if(g){d=10;break a}else{d=0;continue b}default:break b}}f=168440+(h<<2)|0;if(g){if((h|0)==63){d=13;break}e=c[42177]|0;if(e>>>0>=(c[42178]|0)>>>0){dm(168704,1)|0;e=c[42177]|0}c[42177]=e+1;a[e>>0]=0;c[f>>2]=c[42177];f=h+1|0}else f=h;e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}a[e>>0]=0;e=c[m>>2]|0;c[j>>2]=e;fm(168704,e)|0;e=c[42177]|0;if(e>>>0>=(c[42178]|0)>>>0){dm(168704,1)|0;e=c[42177]|0}c[42177]=e+1;a[e>>0]=0;h=f}do if((d|0)==8){c[n>>2]=b;_l(1,85266,n)|0;c[42110]=0;gm(m)}else if((d|0)==10){c[o>>2]=b;_l(1,85300,o)|0;c[42110]=0;gm(m)}else if((d|0)==13){c[p>>2]=b;_l(0,85328,p)|0;c[f>>2]=0;gm(m)}else if((d|0)==22){if(f){c[q>>2]=b;_l(1,85351,q)|0;c[42110]=0;gm(m);break}c[168440+(h<<2)>>2]=0;gm(m);d=c[42177]|0;if(d>>>0>=(c[42178]|0)>>>0){dm(168704,1)|0;d=c[42177]|0}a[d>>0]=0;c[42177]=c[42176]}while(0);l=r;return 168440}function Bu(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;E=l;l=l+160|0;B=E+24|0;z=E+20|0;y=E+16|0;k=E;n=E+32|0;A=c[d+152>>2]|0;c[B>>2]=0;c[z>>2]=0;c[y>>2]=0;C=St(d)|0;c[C+4>>2]=3;c[C+8>>2]=f;c[C+12>>2]=9;w=f+16|0;t=c[(c[w>>2]|0)+96>>2]|0;D=C+260|0;if((t|0?(a[t+82>>0]|0)==0:0)?(GA(Im(f,85081)|0,0)|0)<<24>>24:0)b[D>>1]=b[D>>1]|512;if(g|0?c[(c[w>>2]|0)+8>>2]|0:0)CD(d,g);g=c[42283]|0;if((g|0?(i=Jm(f,g)|0,i|0):0)?a[i>>0]|0:0)LD(d,+BA(f,c[42283]|0,1.0,0.0));do if(A&16777216|0){g=f+48|0;i=C+176|0;if((e[(c[(ro(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)|0)+16>>2]|0)+178>>1]|0)>2){m=+h[(c[(c[(c[((c[f>>2]&3|0)==3?f:g)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[i>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);m=+h[(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+132>>2]|0)+16>>3]*72.0;h[C+184>>3]=+(~~(m+(m>=0.0?.5:-.5))|0);break}else{c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0;break}}while(0);r=C+200|0;s=C+204|0;q=C+192|0;if(A&32768|0){j=c[w>>2]|0;g=c[j+96>>2]|0;if(!g)g=c[q>>2]|0;else{g=c[g>>2]|0;c[q>>2]=g}i=C+196|0;c[i>>2]=g;c[s>>2]=g;c[r>>2]=g;g=c[j+108>>2]|0;if(g|0)c[i>>2]=c[g>>2];g=c[j+104>>2]|0;if(g|0)c[r>>2]=c[g>>2];g=c[j+100>>2]|0;if(g|0)c[s>>2]=c[g>>2]}t=C+208|0;if(!(A&65536))k=0;else{cm(k,128,n);c[C+212>>2]=nw(Vt(d,f,k)|0,f)|0;gm(k);g=Im(f,96280)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=31;else{g=Im(f,96285)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=31;else j=0}if((p|0)==31)j=nw(g,f)|0;g=Im(f,85094)|0;i=(j|0)!=0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=36;else p=34;do if((p|0)==34){g=Im(f,85103)|0;if(g|0?a[g>>0]|0:0){p=36;break}if(i){g=mL(j)|0;p=39}}while(0);if((p|0)==36){g=nw(g,f)|0;p=39}if((p|0)==39)c[t>>2]=g;g=Im(f,85111)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=44;else p=42;do if((p|0)==42){g=Im(f,85121)|0;if(g|0?a[g>>0]|0:0){p=44;break}if(i){g=mL(j)|0;p=47}}while(0);if((p|0)==44){g=nw(g,f)|0;p=47}if((p|0)==47)c[C+216>>2]=g;g=Im(f,85130)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=52;else p=50;do if((p|0)==50){g=Im(f,85139)|0;if(g|0?a[g>>0]|0:0){p=52;break}if(i)c[C+220>>2]=mL(j)|0}while(0);if((p|0)==52){c[C+220>>2]=nw(g,f)|0;b[D>>1]=b[D>>1]|128}g=Im(f,85147)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=59;else p=57;do if((p|0)==57){g=Im(f,85156)|0;if(g|0?a[g>>0]|0:0){p=59;break}if(i)c[C+224>>2]=mL(j)|0}while(0);if((p|0)==59){c[C+224>>2]=nw(g,f)|0;b[D>>1]=b[D>>1]|256}k=j}o=C+244|0;do if(A&8388608){g=Im(f,85164)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)i=nw(g,f)|0;else i=0;g=Im(f,85171)|0;j=(i|0)!=0;if((g|0)!=0?(a[g>>0]|0)!=0:0){b[D>>1]=b[D>>1]|64;g=nw(g,f)|0;p=72}else p=70;if((p|0)==70?j:0){g=mL(i)|0;p=72}if((p|0)==72)c[o>>2]=g;g=Im(f,85182)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){g=nw(g,f)|0;p=78}else p=76;if((p|0)==76?j:0){g=mL(i)|0;p=78}if((p|0)==78)c[C+248>>2]=g;g=Im(f,85194)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){c[C+252>>2]=nw(g,f)|0;b[D>>1]=b[D>>1]|16}else p=82;if((p|0)==82?j:0)c[C+252>>2]=mL(i)|0;g=Im(f,85205)|0;if(g|0?a[g>>0]|0:0){b[D>>1]=b[D>>1]|32;c[C+256>>2]=nw(g,f)|0;break}if(j)c[C+256>>2]=mL(i)|0;else i=0}else i=0;while(0);do if(A&4194304|0){g=Im(f,96245)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0)p=94;else p=92;do if((p|0)==92){g=Im(f,85216)|0;if(g|0?a[g>>0]|0:0){p=94;break}g=c[q>>2]|0;if(g|0)c[C+228>>2]=mL(g)|0}while(0);if((p|0)==94){n=Wu(g,f)|0;c[C+228>>2]=nw(n,f)|0;xN(n);b[D>>1]=b[D>>1]|1}g=Im(f,85228)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){n=Wu(g,f)|0;c[C+232>>2]=nw(n,f)|0;xN(n);b[D>>1]=b[D>>1]|8}else p=100;if((p|0)==100?(u=c[q>>2]|0,u|0):0)c[C+232>>2]=mL(u)|0;g=Im(f,85241)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){u=Wu(g,f)|0;c[C+236>>2]=nw(u,f)|0;xN(u);b[D>>1]=b[D>>1]|2}else p=105;if((p|0)==105?(v=c[r>>2]|0,v|0):0)c[C+236>>2]=mL(v)|0;g=Im(f,85253)|0;if(g|0?a[g>>0]|0:0){v=Wu(g,f)|0;c[C+240>>2]=nw(v,f)|0;xN(v);b[D>>1]=b[D>>1]|4;break}g=c[s>>2]|0;if(g|0)c[C+240>>2]=mL(g)|0}while(0);xN(k);xN(i);n=C+228|0;do if(A&4259840|0?(x=c[(c[w>>2]|0)+8>>2]|0,x|0):0){if(!(c[t>>2]|0)){if((A&524288|0)==0|(c[n>>2]|0)==0)break}else if(!(A&524288))break;m=+h[(c[d+16>>2]|0)+152>>3]*.5;m=m>2.0?m:2.0;i=c[x+4>>2]|0;g=0;while(1){if((g|0)>=(i|0))break;Xu(B,z,y,(c[x>>2]|0)+(g*48|0)|0,m);g=g+1|0}j=c[y>>2]|0;c[C+276>>2]=j;k=c[z>>2]|0;c[C+280>>2]=k;if(!(A&8192)){g=0;i=0;while(1){if((i|0)>=(j|0))break;g=(c[k+(i<<2)>>2]|0)+g|0;i=i+1|0}B=c[B>>2]|0;cD(d,B,B,g)|0;g=B}else g=c[B>>2]|0;c[C+284>>2]=g;c[C+264>>2]=2;c[C+272>>2]=g;c[C+268>>2]=c[k>>2]}while(0);rD(d,f);g=c[t>>2]|0;if(!((g|0)==0?!(b[D>>1]&1):0))tD(d,g,c[n>>2]|0,c[o>>2]|0,c[C+212>>2]|0);l=E;return}function Cu(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;T=l;l=l+240|0;P=T+224|0;O=T+208|0;z=T+144|0;y=T+112|0;S=T+64|0;C=T+48|0;D=T+32|0;E=T+16|0;F=T;G=T+192|0;H=T+176|0;A=T+160|0;B=T+128|0;c[E>>2]=0;c[E+4>>2]=0;c[E+8>>2]=0;c[E+12>>2]=0;Q=+h[(c[b+16>>2]|0)+152>>3];YE(Im(e,85008)|0);N=e+16|0;a:do if(c[(c[N>>2]|0)+8>>2]|0){R=+BA(e,c[42265]|0,1.0,0.0);k=CA(e,c[42246]|0,174318)|0;r=(f|0)!=0;b:do if(r){g=f;while(1){i=g;g=g+4|0;i=c[i>>2]|0;if(!i){p=0;break b}if((a[i>>0]|0)!=116)continue;if(!(vJ(i,95899)|0)){p=1;break}}}else p=0;while(0);j=k;q=0;i=0;c:while(1){g=q+1|0;switch(a[j>>0]|0){case 0:break c;case 58:break;case 59:{g=q;i=i+1|0;break}default:g=q}j=j+1|0;q=g}o=(q|0)!=0;if((i|0)!=0&o)if(!(Ku(b,e,f,k,g,R,Q)|0))break;else m=122122;else m=k;g=d[(c[N>>2]|0)+115>>0]|0;if(!(g&1))if(!(g&2))if(!(g&8))if(!(g&4)){u=m;g=DA(e,c[42247]|0,m)|0}else{j=91300;g=91292;k=169012;i=169008;n=18}else{j=91284;g=91276;k=169020;i=169016;n=18}else{j=91268;g=91260;k=169004;i=169e3;n=18}else{j=91252;g=91244;k=168996;i=168992;n=18}if((n|0)==18){i=c[i>>2]|0;i=DA(e,i,Lu(m,g)|0)|0;g=DA(e,c[k>>2]|0,j)|0;if((i|0)==(m|0))u=m;else{yD(b,i);u=i}}if((g|0)!=(m|0))AD(b,g);J=S+16|0;L=S+4|0;M=S+32|0;K=S+12|0;I=S+8|0;if(p<<24>>24){i=(a[u>>0]|0)==0?122122:u;g=(a[g>>0]|0)==0?122122:g;yD(b,122187);AD(b,i);o=S;m=c[c[(c[N>>2]|0)+8>>2]>>2]|0;n=o+48|0;do{c[o>>2]=c[m>>2];o=o+4|0;m=m+4|0}while((o|0)<(n|0));N=aA(S,Mu(e)|0,Q,0,0)|0;ED(b,c[N+8>>2]|0,c[N>>2]|0,1);Nu(N);yD(b,i);if((g|0)!=(i|0))AD(b,g);g=c[I>>2]|0;if(g|0){N=c[S>>2]|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[P>>2]=c[N>>2];c[P+4>>2]=c[N+4>>2];c[P+8>>2]=c[N+8>>2];c[P+12>>2]=c[N+12>>2];Pt(b,2,O,P,R,Q,g)}g=c[K>>2]|0;if(!g)break;S=(c[S>>2]|0)+((c[L>>2]|0)+-1<<4)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[P>>2]=c[S>>2];c[P+4>>2]=c[S+4>>2];c[P+8>>2]=c[S+8>>2];c[P+12>>2]=c[S+12>>2];Pt(b,3,O,P,R,Q,g);break}i=c[N>>2]|0;if(!o){do if(!(a[i+115>>0]&3)){if(a[u>>0]|0){yD(b,u);AD(b,g);break}yD(b,122122);if(!(a[g>>0]|0)){AD(b,122122);break}else{AD(b,g);break}}while(0);k=b+152|0;j=0;while(1){g=c[(c[N>>2]|0)+8>>2]|0;if((j|0)>=(c[g+4>>2]|0))break a;o=S;m=(c[g>>2]|0)+(j*48|0)|0;n=o+48|0;do{c[o>>2]=c[m>>2];o=o+4|0;m=m+4|0}while((o|0)<(n|0));g=c[S>>2]|0;i=c[L>>2]|0;do if(!(c[k>>2]&16384)){GD(b,g,i,0,0,0);g=c[I>>2]|0;if(g|0){H=c[S>>2]|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];Pt(b,2,O,P,R,Q,g)}g=c[K>>2]|0;if(g|0){H=(c[S>>2]|0)+((c[L>>2]|0)+-1<<4)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[P>>2]=c[H>>2];c[P+4>>2]=c[H+4>>2];c[P+8>>2]=c[H+8>>2];c[P+12>>2]=c[H+12>>2];Pt(b,3,O,P,R,Q,g)}if((c[(c[(c[N>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[I>>2]|0)){if(!(r&(c[K>>2]|0)!=0))break}else if(!r)break;CD(b,f)}}else GD(b,g,i,c[I>>2]|0,c[K>>2]|0,0);while(0);j=j+1|0}}w=c[(c[i+8>>2]|0)+4>>2]|0;v=w*48|0;x=wN(v)|0;v=wN(v)|0;t=+(q+2|0)*.5;e=C+8|0;f=D+8|0;r=E+8|0;s=F+8|0;q=0;while(1){if((q|0)>=(w|0))break;o=S;m=(c[c[(c[N>>2]|0)+8>>2]>>2]|0)+(q*48|0)|0;n=o+48|0;do{c[o>>2]=c[m>>2];o=o+4|0;m=m+4|0}while((o|0)<(n|0));g=c[L>>2]|0;c[x+(q*48|0)+4>>2]=g;c[v+(q*48|0)+4>>2]=g;k=g<<4;j=wN(k)|0;c[x+(q*48|0)>>2]=j;k=wN(k)|0;c[v+(q*48|0)>>2]=k;i=c[S>>2]|0;c[F>>2]=c[i>>2];c[F+4>>2]=c[i+4>>2];c[F+8>>2]=c[i+8>>2];c[F+12>>2]=c[i+12>>2];i=0;while(1){m=j+(i<<4)|0;n=k+(i<<4)+8|0;o=k+(i<<4)|0;p=j+(i<<4)+8|0;if((i|0)>=(g+-1|0))break;c[C>>2]=c[F>>2];c[C+4>>2]=c[F+4>>2];c[C+8>>2]=c[F+8>>2];c[C+12>>2]=c[F+12>>2];g=i+1|0;U=(c[S>>2]|0)+(g<<4)|0;c[D>>2]=c[U>>2];c[D+4>>2]=c[U+4>>2];c[D+8>>2]=c[U+8>>2];c[D+12>>2]=c[U+12>>2];if(!i){c[O>>2]=c[C>>2];c[O+4>>2]=c[C+4>>2];c[O+8>>2]=c[C+8>>2];c[O+12>>2]=c[C+12>>2];c[P>>2]=c[D>>2];c[P+4>>2]=c[D+4>>2];c[P+8>>2]=c[D+8>>2];c[P+12>>2]=c[D+12>>2];Ou(G,O,P);c[m>>2]=c[G>>2];c[m+4>>2]=c[G+4>>2];c[m+8>>2]=c[G+8>>2];c[m+12>>2]=c[G+12>>2]}else{c[O>>2]=c[E>>2];c[O+4>>2]=c[E+4>>2];c[O+8>>2]=c[E+8>>2];c[O+12>>2]=c[E+12>>2];c[P>>2]=c[D>>2];c[P+4>>2]=c[D+4>>2];c[P+8>>2]=c[D+8>>2];c[P+12>>2]=c[D+12>>2];Ou(H,O,P);c[m>>2]=c[H>>2];c[m+4>>2]=c[H+4>>2];c[m+8>>2]=c[H+8>>2];c[m+12>>2]=c[H+12>>2]}Y=c[S>>2]|0;V=i+2|0;Z=Y+(V<<4)|0;c[E>>2]=c[Z>>2];c[E+4>>2]=c[Z+4>>2];c[E+8>>2]=c[Z+8>>2];c[E+12>>2]=c[Z+12>>2];U=i+3|0;Y=Y+(U<<4)|0;c[F>>2]=c[Y>>2];c[F+4>>2]=c[Y+4>>2];c[F+8>>2]=c[Y+8>>2];c[F+12>>2]=c[Y+12>>2];X=j+(g<<4)|0;W=j+(V<<4)|0;c[y>>2]=c[C>>2];c[y+4>>2]=c[C+4>>2];c[y+8>>2]=c[C+8>>2];c[y+12>>2]=c[C+12>>2];c[z>>2]=c[D>>2];c[z+4>>2]=c[D+4>>2];c[z+8>>2]=c[D+8>>2];c[z+12>>2]=c[D+12>>2];c[O>>2]=c[Z>>2];c[O+4>>2]=c[Z+4>>2];c[O+8>>2]=c[Z+8>>2];c[O+12>>2]=c[Z+12>>2];c[P>>2]=c[Y>>2];c[P+4>>2]=c[Y+4>>2];c[P+8>>2]=c[Y+8>>2];c[P+12>>2]=c[Y+12>>2];Pu(A,y,z,O,P);c[W>>2]=c[A>>2];c[W+4>>2]=c[A+4>>2];c[W+8>>2]=c[A+8>>2];c[W+12>>2]=c[A+12>>2];c[X>>2]=c[A>>2];c[X+4>>2]=c[A+4>>2];c[X+8>>2]=c[A+8>>2];c[X+12>>2]=c[A+12>>2];h[o>>3]=+h[C>>3]-t*+h[m>>3];h[n>>3]=+h[e>>3]-t*+h[p>>3];h[k+(g<<4)>>3]=+h[D>>3]-t*+h[X>>3];h[k+(g<<4)+8>>3]=+h[f>>3]-t*+h[j+(g<<4)+8>>3];h[k+(V<<4)>>3]=+h[E>>3]-t*+h[W>>3];h[k+(V<<4)+8>>3]=+h[r>>3]-t*+h[j+(V<<4)+8>>3];i=U;g=c[L>>2]|0}c[O>>2]=c[E>>2];c[O+4>>2]=c[E+4>>2];c[O+8>>2]=c[E+8>>2];c[O+12>>2]=c[E+12>>2];c[P>>2]=c[F>>2];c[P+4>>2]=c[F+4>>2];c[P+8>>2]=c[F+8>>2];c[P+12>>2]=c[F+12>>2];Ou(B,O,P);c[m>>2]=c[B>>2];c[m+4>>2]=c[B+4>>2];c[m+8>>2]=c[B+8>>2];c[m+12>>2]=c[B+12>>2];h[o>>3]=+h[F>>3]-t*+h[m>>3];h[n>>3]=+h[s>>3]-t*+h[p>>3];q=q+1|0}s=mL(u)|0;f=0;r=u;i=u;j=u;g=s;while(1){g=uN(g,92977)|0;if(!g)break;e=(a[g>>0]|0)==0?122122:g;if((e|0)!=(j|0))if(!(a[(c[N>>2]|0)+115>>0]&3)){yD(b,e);AD(b,e);j=e}else j=e;m=(f|0)==0;n=(f|1|0)==1;g=0;while(1){if((g|0)>=(w|0))break;o=c[v+(g*48|0)>>2]|0;p=c[x+(g*48|0)>>2]|0;q=c[v+(g*48|0)+4>>2]|0;k=0;while(1){if((k|0)>=(q|0))break;Z=o+(k<<4)|0;h[Z>>3]=+h[p+(k<<4)>>3]+ +h[Z>>3];Z=o+(k<<4)+8|0;h[Z>>3]=+h[p+(k<<4)+8>>3]+ +h[Z>>3];k=k+1|0}GD(b,o,q,0,0,0);g=g+1|0}f=f+1|0;r=m?e:r;i=n?e:i;g=0}g=c[I>>2]|0;if(!g)i=0;else{if(i){if(!(a[(c[N>>2]|0)+115>>0]&3)){yD(b,i);AD(b,i)}}else i=0;Z=c[S>>2]|0;c[O>>2]=c[J>>2];c[O+4>>2]=c[J+4>>2];c[O+8>>2]=c[J+8>>2];c[O+12>>2]=c[J+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Pt(b,2,O,P,R,Q,g)}g=c[K>>2]|0;if(g|0){if((i|0)!=(r|0)?(a[(c[N>>2]|0)+115>>0]&3)==0:0){yD(b,r);AD(b,r);g=c[K>>2]|0}Z=(c[S>>2]|0)+((c[L>>2]|0)+-1<<4)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[P>>2]=c[Z>>2];c[P+4>>2]=c[Z+4>>2];c[P+8>>2]=c[Z+8>>2];c[P+12>>2]=c[Z+12>>2];Pt(b,3,O,P,R,Q,g)}xN(s);g=0;while(1){if((g|0)>=(w|0))break;xN(c[x+(g*48|0)>>2]|0);xN(c[v+(g*48|0)>>2]|0);g=g+1|0}xN(x);xN(v)}while(0);l=T;return}function Du(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=l;l=l+64|0;q=D+48|0;t=D+32|0;s=D+16|0;r=D;z=c[a+16>>2]|0;A=c[z+8>>2]|0;p=z+208|0;C=z+212|0;m=z+268|0;B=z+260|0;n=z+272|0;if(!((c[p>>2]|0)==0?!(b[B>>1]&1):0))d=3;a:do if((d|0)==3?(uD(a),o=z+276|0,e=c[o>>2]|0,e|0):0){h=z+280|0;d=c[h>>2]|0;i=z+284|0;j=z+228|0;k=z+244|0;f=c[d>>2]|0;g=1;while(1){if((g|0)>=(e|0))break a;c[m>>2]=c[d+(g<<2)>>2];c[n>>2]=(c[i>>2]|0)+(f<<4);tD(a,c[p>>2]|0,c[j>>2]|0,c[k>>2]|0,c[C>>2]|0);uD(a);y=c[h>>2]|0;f=(c[y+(g<<2)>>2]|0)+f|0;g=g+1|0;e=c[o>>2]|0;d=y}}while(0);c[m>>2]=0;c[n>>2]=0;o=A+16|0;d=c[o>>2]|0;e=c[d+8>>2]|0;p=z+236|0;u=z+240|0;v=z+224|0;w=z+256|0;x=z+220|0;y=z+252|0;if(e){m=c[e>>2]|0;d=c[m>>2]|0;n=c[m+8>>2]|0;k=m+16|0;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];c[s+8>>2]=c[k+8>>2];c[s+12>>2]=c[k+12>>2];m=m+32|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];if(!n){c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2]}else{c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2]}m=b[B>>1]|0;k=c[x>>2]|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Eu(a,q,(m<<8&65535)<<16>>16>>15&255,k,(m<<14&65535)<<16>>16>>15&255);m=c[(c[o>>2]|0)+8>>2]|0;k=c[m>>2]|0;m=(c[m+4>>2]|0)+-1|0;d=c[k+(m*48|0)>>2]|0;e=c[k+(m*48|0)+4>>2]|0;n=c[k+(m*48|0)+12>>2]|0;j=k+(m*48|0)+16|0;c[s>>2]=c[j>>2];c[s+4>>2]=c[j+4>>2];c[s+8>>2]=c[j+8>>2];c[s+12>>2]=c[j+12>>2];s=k+(m*48|0)+32|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];if(!n){s=d+(e+-1<<4)|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2]}else{c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}d=b[B>>1]|0;s=c[v>>2]|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Eu(a,q,(d<<7&65535)<<16>>16>>15&255,s,(d<<13&65535)<<16>>16>>15&255);d=c[o>>2]|0}g=c[d+96>>2]|0;h=(b[B>>1]<<12&65535)<<16>>16>>15<<16>>16;k=z+216|0;i=c[k>>2]|0;m=z+232|0;j=c[m>>2]|0;n=z+248|0;e=c[n>>2]|0;f=c[C>>2]|0;if(!((FA(CA(A,c[42263]|0,122116)|0)|0)<<24>>24))d=0;else d=c[(c[o>>2]|0)+8>>2]|0;Fu(a,g,11,h,i,j,e,f,d);i=c[(c[o>>2]|0)+108>>2]|0;j=(b[B>>1]<<12&65535)<<16>>16>>15<<16>>16;h=c[k>>2]|0;g=c[m>>2]|0;e=c[n>>2]|0;f=c[C>>2]|0;if(!((FA(CA(A,c[42263]|0,122116)|0)|0)<<24>>24))d=0;else d=c[(c[o>>2]|0)+8>>2]|0;Fu(a,i,11,j,h,g,e,f,d);Fu(a,c[(c[o>>2]|0)+100>>2]|0,7,(b[B>>1]<<13&65535)<<16>>16>>15<<16>>16,c[v>>2]|0,c[u>>2]|0,c[w>>2]|0,c[C>>2]|0,0);Fu(a,c[(c[o>>2]|0)+104>>2]|0,6,(b[B>>1]<<14&65535)<<16>>16>>15<<16>>16,c[x>>2]|0,c[p>>2]|0,c[y>>2]|0,c[C>>2]|0,0);sD(a);Tt(a);l=D;return}function Eu(a,d,e,f,g){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;h=j;i=c[a+16>>2]|0;if(!(e<<24>>24))f=c[i+208>>2]|0;if(!(g<<24>>24==0?((f|0)==0?(b[i+260>>1]&1)==0:0):0)){c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];Ju(a,h)}l=j;return}function Fu(b,d,e,f,g,h,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+16|0;o=s;r=c[b+152>>2]|0;if(d|0?a[d+81>>0]|0:0){if(!j)n=0;else{n=sw((TK(j)|0)+11|0)|0;switch(e|0){case 11:{m=86200;break}case 7:{m=86616;break}case 6:{m=86626;break}default:va(123221,84885,2730,85020)}c[o>>2]=j;c[o+4>>2]=m;yJ(n,85036,o)|0}o=b+16|0;q=(c[o>>2]|0)+12|0;p=c[q>>2]|0;c[q>>2]=e;q=(g|0)!=0;j=(f|0)!=0;m=(r&4|0)!=0;if(!(m|(j|q)^1)){Gu(b,d);tD(b,g,h,i,n)}mw(b,e,d);if(k|0)Hu(b,d,k);if(j|q){if(m){Gu(b,d);tD(b,g,h,i,n)}uD(b)}xN(n);c[(c[o>>2]|0)+12>>2]=p}l=s;return}function Gu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;i=d+268|0;c[i>>2]=j+2;j=d+272|0;xN(c[j>>2]|0);d=sw(c[i>>2]<<4)|0;c[j>>2]=d;j=b+56|0;i=b+24|0;h[d>>3]=+h[j>>3]-+h[i>>3]*.5;g=b+64|0;b=b+32|0;h[d+8>>3]=+h[g>>3]-+h[b>>3]*.5;h[d+16>>3]=+h[j>>3]+ +h[i>>3]*.5;h[d+24>>3]=+h[g>>3]+ +h[b>>3]*.5;if(!(e&8192))cD(a,d,d,2)|0;if(!f)Wv(d)}return}function Hu(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+96|0;g=o+80|0;i=o+32|0;j=o+16|0;k=o;f=c[d>>2]|0;while(1){m=a[f>>0]|0;if(!(m<<24>>24))break;if(!(nJ(m&255)|0)){n=4;break}else f=f+1|0}if((n|0)==4){p=+h[d+24>>3];m=d+56|0;Iu(i,p*.5+ +h[m>>3],+h[d+64>>3]-+h[d+32>>3]*.5);n=i+16|0;Iu(j,+h[i>>3]-p,+h[i+8>>3]);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];n=i+32|0;c[g>>2]=c[m>>2];c[g+4>>2]=c[m+4>>2];c[g+8>>2]=c[m+8>>2];c[g+12>>2]=c[m+12>>2];SA(k,e,g);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];CD(b,c[(c[b>>2]|0)+336>>2]|0);yD(b,c[d+8>>2]|0);HD(b,i,3)}l=o;return}function Iu(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Ju(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0;d=c[a+16>>2]|0;e=c[a+152>>2]|0;if(e&4259840|0){f=e&131072;j=f>>>16^2;c[d+264>>2]=j;k=d+268|0;c[k>>2]=j+2;j=d+272|0;xN(c[j>>2]|0);d=sw(c[k>>2]<<4)|0;c[j>>2]=d;i=+h[b>>3];h[d>>3]=i+-3.0;g=+h[b+8>>3];h[d+8>>3]=g+-3.0;h[d+16>>3]=i+3.0;h[d+24>>3]=g+3.0;if(!(e&8192))cD(a,d,d,2)|0;if(!f)Wv(d)}return}function Ku(a,b,d,e,f,h,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;h=+h;i=+i;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=l;l=l+256|0;C=I+224|0;B=I+208|0;j=I+192|0;E=I+144|0;F=I+96|0;G=I+48|0;D=I;k=I+240|0;e=Yt(e,f,k)|0;if((e|0)>1){y=b+48|0;z=ro(c[((c[b>>2]&3|0)==3?b:y)+40>>2]|0)|0;y=Dn(c[((c[b>>2]&3|0)==3?b:y)+40>>2]|0)|0;z=(qn(z)|0)!=0;A=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[j>>2]=y;c[j+4>>2]=z?85055:85060;c[j+8>>2]=A;_l(3,85065,j)|0;if((e|0)==2)e=1;else H=4}else if((e|0)==1)e=1;else H=4;if((H|0)==4){A=b+16|0;r=c[k>>2]|0;s=r+8|0;t=G+4|0;u=E+8|0;v=E+12|0;q=(d|0)!=0;w=E+32|0;x=E+4|0;y=E+16|0;z=D+4|0;e=0;p=0;while(1){f=c[(c[A>>2]|0)+8>>2]|0;if((p|0)>=(c[f+4>>2]|0))break;j=E;f=(c[f>>2]|0)+(p*48|0)|0;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));b=1;m=1.0;o=c[s>>2]|0;a:while(1){f=c[o>>2]|0;if(!f)break;k=o+4|0;n=+g[k>>2];do if(n<1.0e-05&n>-1.0e-05)f=b;else{yD(a,f);n=+g[k>>2];m=m-n;e=c[o>>2]|0;if(b|0){Uu(E,n,G,D);k=c[G>>2]|0;GD(a,k,c[t>>2]|0,0,0,0);xN(k);if(m<1.0e-05&m>-1.0e-05){H=11;break a}else{f=0;break}}if(m<1.0e-05&m>-1.0e-05){H=13;break a}j=F;f=D;b=j+48|0;do{c[j>>2]=c[f>>2];j=j+4|0;f=f+4|0}while((j|0)<(b|0));n=+g[k>>2];Uu(F,n/(m+n),G,D);xN(c[F>>2]|0);f=c[G>>2]|0;GD(a,f,c[t>>2]|0,0,0,0);xN(f);f=0}while(0);b=f;o=o+12|0}if((H|0)==11){H=0;xN(c[D>>2]|0)}else if((H|0)==13){H=0;o=c[D>>2]|0;GD(a,o,c[z>>2]|0,0,0,0);xN(o)}if(c[u>>2]|0){yD(a,c[c[s>>2]>>2]|0);AD(a,c[c[s>>2]>>2]|0);k=c[E>>2]|0;o=c[u>>2]|0;c[B>>2]=c[y>>2];c[B+4>>2]=c[y+4>>2];c[B+8>>2]=c[y+8>>2];c[B+12>>2]=c[y+12>>2];c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];Pt(a,2,B,C,h,i,o)}if(c[v>>2]|0){yD(a,e);AD(a,e);k=(c[E>>2]|0)+((c[x>>2]|0)+-1<<4)|0;o=c[v>>2]|0;c[B>>2]=c[w>>2];c[B+4>>2]=c[w+4>>2];c[B+8>>2]=c[w+8>>2];c[B+12>>2]=c[w+12>>2];c[C>>2]=c[k>>2];c[C+4>>2]=c[k+4>>2];c[C+8>>2]=c[k+8>>2];c[C+12>>2]=c[k+12>>2];Pt(a,3,B,C,h,i,o)}do if((c[(c[(c[A>>2]|0)+8>>2]|0)+4>>2]|0)>1){if(!(c[u>>2]|0)){if(!(q&(c[v>>2]|0)!=0))break}else if(!q)break;CD(a,d)}while(0);p=p+1|0}Zt(r);e=0}l=I;return e|0}function Lu(b,d){b=b|0;d=d|0;var e=0,f=0;e=1;a:while(1){switch(a[b>>0]|0){case 0:break a;case 58:{e=e+1|0;break}default:{}}b=b+1|0}f=S((TK(d)|0)+1|0,e)|0;b=f+10|0;if((c[42174]|0)<(f|0)){c[42174]=b;b=zN(c[42175]|0,b)|0;c[42175]=b}else b=c[42175]|0;cL(b,d)|0;while(1){e=e+-1|0;b=c[42175]|0;if(!e)break;f=b+(TK(b)|0)|0;a[f>>0]=58;a[f+1>>0]=0;sN(b,d)|0}return b|0}function Mu(b){b=b|0;var d=0,e=0;d=c[42261]|0;a:do if(!d)e=7;else{d=Jm(b,d)|0;switch(a[d>>0]|0){case 110:if(!(vJ(d,120517)|0)){d=2;break a}else{e=7;break a}case 102:if(!(vJ(d,85042)|0)){d=1;break a}else{e=7;break a}case 98:{if(!(vJ(d,85050)|0)){d=3;break a}if(!(vJ(d,96016)|0)){d=4;break a}else{e=7;break a}}default:{e=7;break a}}}while(0);if((e|0)==7){d=(qn(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0)!=0;d=d?1:2}return d|0}function Nu(a){a=a|0;if(a|0){xN(c[a+8>>2]|0);xN(a)}return}function Ou(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;e=+h[b>>3]-+h[c>>3];f=+h[b+8>>3]-+h[c+8>>3];d=2.0/+G(+(e*e+f*f+.0001));h[a>>3]=f*d;h[a+8>>3]=-(e*d);return}function Pu(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0;g=+h[c>>3]-+h[d>>3];i=+h[c+8>>3]-+h[d+8>>3];f=+G(+(g*g+i*i));if(f<.0001){j=+h[b>>3]-+h[e>>3];f=+h[b+8>>3]-+h[e+8>>3];i=f;g=j;f=+G(+(j*j+f*f+.0001))}j=2.0/f;h[a>>3]=j*i;h[a+8>>3]=-(g*j);return}function Qu(a,b,c){a=+a;b=+b;c=+c;return +((1.0-a/b)*c*.5)}function Ru(a,b,c){a=+a;b=+b;c=+c;return +(c*.5)}function Su(a,b,c){a=+a;b=+b;c=+c;return +(a/b*c*.5)}function Tu(a,b,c){a=+a;b=+b;c=+c;b=a/b;return +((!(b<=.5)?1.0-b:b)*c)}function Uu(a,b,d,e){a=a|0;b=+b;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+16|0;q=r;p=c[a+4>>2]|0;j=(p+-1|0)/3|0;k=d+4|0;if((p+-4|0)>>>0<3){c[k>>2]=4;c[d>>2]=sw(64)|0;c[e+4>>2]=4;p=sw(64)|0;c[e>>2]=p;MA(q,c[a>>2]|0,3,b,c[d>>2]|0,p)}else{p=sw(j<<3)|0;f=0;g=c[a>>2]|0;i=0.0;while(1){if((f|0)>=(j|0))break;s=+Vu(g);h[p+(f<<3)>>3]=s;f=f+1|0;g=g+48|0;i=i+s}b=b*i;n=0;i=0.0;while(1){f=n+1|0;o=p+(n<<3)|0;if((j|0)<=(n|0))break;i=i+ +h[o>>3];if(!(i>=b))n=f;else break}f=(f*3|0)+1|0;c[k>>2]=f;c[d>>2]=sw(f<<4)|0;f=((j-n|0)*3|0)+1|0;m=e+4|0;c[m>>2]=f;c[e>>2]=sw(f<<4)|0;f=0;while(1){if((f|0)>=(c[k>>2]|0))break;j=(c[d>>2]|0)+(f<<4)|0;g=(c[a>>2]|0)+(f<<4)|0;c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];f=f+1|0}f=f+-4|0;g=0;while(1){j=c[a>>2]|0;k=c[e>>2]|0;if((g|0)>=(c[m>>2]|0))break;k=k+(g<<4)|0;j=j+(f<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];f=f+1|0;g=g+1|0}s=+h[o>>3];e=n*3|0;MA(q,j+(e<<4)|0,3,(b-(i-s))/s,(c[d>>2]|0)+(e<<4)|0,k);xN(p)}l=r;return}function Vu(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0;e=+h[a+16>>3];c=+h[a>>3]-e;d=+h[a+24>>3];f=+h[a+8>>3]-d;f=+G(+(c*c+f*f));c=+h[a+32>>3];e=e-c;b=+h[a+40>>3];d=d-b;d=f+ +G(+(e*e+d*d));c=c-+h[a+48>>3];b=b-+h[a+56>>3];return +(d+ +G(+(c*c+b*b)))}function Wu(b,d){b=b|0;d=d|0;d=so(d)|0;if((a[(c[d+16>>2]|0)+115>>0]|0)==1)d=vB(b)|0;else d=sB(b,d)|0;return bv(d)|0}function Xu(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=+f;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=l;l=l+1664|0;m=q+1600|0;n=q+800|0;o=q;p=tw(24)|0;c[p+16>>2]=1;j=((c[e+4>>2]|0)+-1|0)/3|0;h=0;i=p;while(1){if((h|0)>=(j|0))break;k=h*3|0;g=0;while(1){if((g|0)==4)break;r=m+(g<<4)|0;s=(c[e>>2]|0)+(g+k<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];g=g+1|0}h=h+1|0;i=Yu(m,i)|0}g=0;h=0;i=p;while(1){if(!i){h=p;g=p;break}j=c[i+16>>2]|0;k=n+(g<<4)|0;e=o+(g<<4)|0;Zu(h,i,j,k,e,f);g=g+1|0;if(!((g|0)==50|(j|0)==0)){h=i;i=j;continue}_u(a,b,d,g,n,o);c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];c[o>>2]=c[e>>2];c[o+4>>2]=c[e+4>>2];c[o+8>>2]=c[e+8>>2];c[o+12>>2]=c[e+12>>2];h=i;g=1;i=j}while(1){if(!h)break;s=c[h+16>>2]|0;xN(g);h=s;g=s}l=q;return}function Yu(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+144|0;f=g+128|0;d=g+64|0;e=g;if(!(cu(a)|0)){MA(f,a,3,.5,d,e);d=Yu(e,Yu(d,b)|0)|0}else{d=b+16|0;if((c[d>>2]|0)==1){c[d>>2]=0;c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2]}d=a+48|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];d=av(f,b)|0}l=g;return d|0}function Zu(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=+g;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0;t=l;l=l+96|0;p=t+80|0;o=t+64|0;n=t+48|0;q=t+32|0;r=t+16|0;s=t;c[q>>2]=c[b>>2];c[q+4>>2]=c[b+4>>2];c[q+8>>2]=c[b+8>>2];c[q+12>>2]=c[b+12>>2];m=q+8|0;b=s+8|0;k=r+8|0;do if(a){c[r>>2]=c[a>>2];c[r+4>>2]=c[a+4>>2];c[r+8>>2]=c[a+8>>2];c[r+12>>2]=c[a+12>>2];if(!d){j=+h[q>>3];h[s>>3]=j*2.0-+h[r>>3];i=+h[m>>3];h[b>>3]=i*2.0-+h[k>>3];break}else{c[s>>2]=c[d>>2];c[s+4>>2]=c[d+4>>2];c[s+8>>2]=c[d+8>>2];c[s+12>>2]=c[d+12>>2];j=+h[q>>3];i=+h[m>>3];break}}else{c[s>>2]=c[d>>2];c[s+4>>2]=c[d+4>>2];c[s+8>>2]=c[d+8>>2];c[s+12>>2]=c[d+12>>2];j=+h[q>>3];h[r>>3]=j*2.0-+h[s>>3];i=+h[m>>3];h[k>>3]=i*2.0-+h[b>>3]}while(0);c[n>>2]=c[r>>2];c[n+4>>2]=c[r+4>>2];c[n+8>>2]=c[r+8>>2];c[n+12>>2]=c[r+12>>2];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[s>>2];c[p+4>>2]=c[s+4>>2];c[p+8>>2]=c[s+8>>2];c[p+12>>2]=c[s+12>>2];v=+$u(n,o,p);u=+I(+v)*g;g=+J(+v)*g;h[e>>3]=u+j;h[e+8>>3]=g+i;h[f>>3]=j-u;h[f+8>>3]=i-g;l=t;return}function _u(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;i=e<<1;j=c[d>>2]|0;k=c[b>>2]|0;h=0;l=0;while(1){if((h|0)>=(j|0))break;m=(c[k+(h<<2)>>2]|0)+l|0;h=h+1|0;l=m}m=j+1|0;c[d>>2]=m;m=vw(k,m<<2)|0;c[b>>2]=m;c[m+(h<<2)>>2]=i;c[a>>2]=vw(c[a>>2]|0,l+i<<4)|0;b=i+-1+l|0;h=0;while(1){if((h|0)>=(e|0))break;m=(c[a>>2]|0)+(h+l<<4)|0;k=f+(h<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];m=(c[a>>2]|0)+(b-h<<4)|0;k=g+(h<<4)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];h=h+1|0}return}function $u(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0;f=+h[b+8>>3];e=+h[b>>3];d=+O(+(+h[c+8>>3]-f),+(+h[c>>3]-e));e=+O(+(+h[a+8>>3]-f),+(+h[a>>3]-e));d=d-e;return +(e+(d>0.0?d+-6.283185307179586:d)*.5)}function av(a,b){a=a|0;b=b|0;var d=0;d=tw(24)|0;c[d+16>>2]=0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b+16>>2]=d;return d|0}function bv(b){b=b|0;var c=0,d=0,e=0,f=0,g=0;c=b;g=b;a:while(1){d=0;while(1){e=c;c=c+1|0;e=a[e>>0]|0;if(!(e<<24>>24))break a;if(d<<24>>24){f=5;break}if(e<<24>>24!=92){f=10;break}else d=1}b:do if((f|0)==5){d=g+1|0;switch(e<<24>>24|0){case 114:{e=13;break b}case 108:case 110:{e=10;break b}default:break b}}else if((f|0)==10)d=g+1|0;while(0);a[g>>0]=e;g=d}a[g>>0]=0;return b|0}function cv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=c[b>>2]|0;while(1){j=a[e>>0]|0;f=j<<24>>24;if(!(j<<24>>24)){h=3;break}g=e+1|0;if(j<<24>>24==44|(nJ(f)|0)!=0)e=g;else break}if((h|0)==3)g=e+1|0;a:do switch(f|0){case 0:{f=0;break}case 41:case 40:{e=g;break}default:{h=d+4|0;i=d+8|0;g=j;while(1){if((dv(g<<24>>24)|0)<<24>>24){f=1;break a}f=c[h>>2]|0;if(f>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;f=c[h>>2]|0}c[h>>2]=f+1;a[f>>0]=g;j=e+1|0;e=j;g=a[j>>0]|0}}}while(0);c[b>>2]=e;return f|0}function dv(a){a=a|0;switch(a|0){case 0:case 44:case 41:case 40:{a=1;break}default:a=0}return a|0}function ev(a,b){a=a|0;b=b|0;return fv(c[a>>2]|0,c[a+160>>2]|0,c[a+156>>2]|0,b)|0}function fv(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+160|0;k=o+20|0;m=o+16|0;n=o;c[k>>2]=0;c[m>>2]=0;cm(n,128,o+24|0);fm(n,f)|0;g=n+4|0;f=c[g>>2]|0;if(f>>>0>=(c[n+8>>2]|0)>>>0){dm(n,1)|0;f=c[g>>2]|0}a[f>>0]=0;h=c[n>>2]|0;c[g>>2]=h;i=b+300|0;j=b+296|0;f=0;g=h;a:while(1){if(f){f=1;break}f=vN(g,c[i>>2]|0,k)|0;if(!f){f=0;break}g=vN(f,c[j>>2]|0,m)|0;h=(g|0)!=0;if(h)f=vN(0,c[j>>2]|0,m)|0;else f=0;switch(((f|0)!=0&1)+(h&1)&3){case 2:{g=gv(b,g,0)|0;f=gv(b,f,e)|0;h=(g|0)>(f|0);f=(f&g|0)>-1&(((h?g:f)|0)>=(d|0)&((h?f:g)|0)<=(d|0));g=0;continue a}case 1:{f=(gv(b,g,d)|0)==(d|0);g=0;continue a}default:{f=0;g=0;continue a}}}gm(n);l=o;return f|0}function gv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=a[d>>0]|0;if(!(h<<24>>24==97?(vJ(d,85379)|0)==0:0))f=3;a:do if((f|0)==3){if((hv(d)|0)<<24>>24){e=pN(d)|0;break}g=c[b+308>>2]|0;if(!g)e=-1;else{b=c[b+312>>2]|0;e=1;while(1){if((e|0)>(b|0)){e=-1;break a}f=c[g+(e<<2)>>2]|0;if(h<<24>>24==(a[f>>0]|0)?(vJ(d,f)|0)==0:0)break a;e=e+1|0}}}while(0);return e|0}function hv(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=1;break}if(((c&255)+-48|0)>>>0<10)b=b+1|0;else{b=0;break}}return b|0}function iv(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3];else a=0;return a&1|0}function jv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;a:do if((c[b+156>>2]|0)>=2?(f=CA(e,c[42237]|0,174318)|0,(ev(b,f)|0)<<24>>24==0):0)if(!(a[f>>0]|0))if(!(Um(d,e)|0))f=1;else{f=Um(d,e)|0;while(1){if(!f){f=0;break a}g=CA(f,c[42267]|0,174318)|0;if(!(a[g>>0]|0)){f=1;break a}if((ev(b,g)|0)<<24>>24){f=1;break a}f=Vm(d,f,e)|0}}else f=0;else f=1;while(0);return f|0}function kv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+64|0;e=d+32|0;f=d;a=(c[a+16>>2]|0)+48|0;c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[f+16>>2]=c[a+16>>2];c[f+20>>2]=c[a+20>>2];c[f+24>>2]=c[a+24>>2];c[f+28>>2]=c[a+28>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];b=(iv(f,e)|0)&255;l=d;return b|0}function lv(a,d){a=a|0;d=d|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0.0,w=0.0;s=c[a+152>>2]|0;t=St(a)|0;c[t+4>>2]=2;c[t+8>>2]=d;c[t+12>>2]=8;n=d+16|0;if(s&16777216|0){if((e[(c[(ro(d)|0)+16>>2]|0)+178>>1]|0)>2){g=+h[(c[(c[n>>2]|0)+132>>2]|0)+16>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0)}else g=0.0;h[t+168>>3]=g}nv(a,c[(c[n>>2]|0)+104>>2]|0,d);do if(s&4259840|0){if((c[t+208>>2]|0)==0?(b[t+260>>1]&1)==0:0)break;q=yy(d)|0;l=c[n>>2]|0;g=+h[l+16>>3];r=+h[l+24>>3];l=ov(d)|0;a:do if((q|2|0)==3){m=c[(c[n>>2]|0)+12>>2]|0;if(!((pv(m)|0)<<24>>24))f=0;else f=(c[m+4>>2]|l|0)!=0;o=t+264|0;if(!((s&524288|0)==0|((m|0)==0|f))){i=m+8|0;p=c[i>>2]|0;p=(p|0)<3?1:p;j=m+4|0;k=c[j>>2]|0;k=(k|0)>1?k:1;q=c[m+44>>2]|0;f=Im(d,87699)|0;if(!f)f=0;else f=pN(f)|0;f=(f+-4|0)>>>0>56?20:f;if(!(c[j>>2]|l)){c[o>>2]=0;i=sw(32)|0;f=c[n>>2]|0;w=+h[f+88>>3];h[i>>3]=g-w;v=+h[f+80>>3]*.5;h[i+8>>3]=r-v;h[i+16>>3]=g+w;h[i+24>>3]=r+v;f=2;break}i=c[i>>2]|0;if(((i|0)<3?+h[m+32>>3]==0.0:0)?+h[m+24>>3]==0.0:0){if(c[m>>2]|0){c[o>>2]=1;i=sw(32)|0;h[i>>3]=g;h[i+8>>3]=r;f=(k<<1)+-1|0;h[i+16>>3]=g+ +h[q+(f<<4)>>3];h[i+24>>3]=r+ +h[q+(f<<4)+8>>3];f=2;break}c[o>>2]=2;i=(k<<1)+-1|0;i=qv(+h[q+(i<<4)>>3],+h[q+(i<<4)+8>>3],f)|0;j=0;while(1){if((j|0)>=(f|0))break a;q=i+(j<<4)|0;h[q>>3]=g+ +h[q>>3];q=i+(j<<4)+8|0;h[q>>3]=r+ +h[q>>3];j=j+1|0}}m=S(i,k+-1|0)|0;c[o>>2]=2;if((i|0)<(f|0)){i=sw(p<<4)|0;f=0;while(1){if((f|0)>=(p|0)){f=p;break a}o=f+m|0;h[i+(f<<4)>>3]=g+ +h[q+(o<<4)>>3];h[i+(f<<4)+8>>3]=r+ +h[q+(o<<4)+8>>3];f=f+1|0}}else{l=(i|0)/(f|0)|0;i=sw(f<<4)|0;j=0;k=0;while(1){if((j|0)>=(f|0))break a;p=k+m|0;h[i+(j<<4)>>3]=g+ +h[q+(p<<4)>>3];h[i+(j<<4)+8>>3]=r+ +h[q+(p<<4)+8>>3];j=j+1|0;k=k+l|0}}}else{f=o;u=32}}else{f=t+264|0;u=32}while(0);if((u|0)==32){c[f>>2]=0;i=sw(32)|0;f=c[n>>2]|0;h[i>>3]=g-+h[f+88>>3];w=+h[f+80>>3]*.5;h[i+8>>3]=r-w;h[i+16>>3]=g+ +h[f+96>>3];h[i+24>>3]=r+w;f=2}if(!(s&8192))cD(a,i,i,f)|0;c[t+272>>2]=i;c[t+268>>2]=f}while(0);YE(Im(d,85008)|0);pD(a,d);return}function mv(a){a=a|0;qD(a);Tt(a);return}function nv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m;f=Im(e,96280)|0;i=Im(e,96245)|0;k=Im(e,85164)|0;cm(j,128,m+16|0);if(!d)h=0;else h=c[d>>2]|0;if(!((f|0)!=0?(a[f>>0]|0)!=0:0))f=Im(e,96285)|0;g=Vt(b,e,j)|0;if(!i)d=0;else d=Wu(i,e)|0;Ut(b,h,f,d,k,g,e)|0;xN(d);gm(j);l=m;return}function ov(b){b=b|0;var d=0,e=0;b=DA(b,c[42227]|0,174318)|0;a:do if(!(a[b>>0]|0))b=0;else{Au(b)|0;b=0;d=168440;while(1){e=c[d>>2]|0;if(!e)break a;e=(vJ(e,95883)|0)==0;b=e?1:b;d=d+4|0}}while(0);return b|0}function pv(a){a=a|0;var b=0.0;if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0&1;else a=0;return a|0}function qv(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0,f=0.0,g=0;f=6.283185307179586/+(c|0);g=sw(c<<4)|0;d=0.0;e=0;while(1){if((e|0)>=(c|0))break;h[g+(e<<4)>>3]=+I(+d)*a;h[g+(e<<4)+8>>3]=+J(+d)*b;d=f+d;e=e+1|0}return g|0}function rv(b,d){b=b|0;d=d|0;var e=0;a:do if((c[b+156>>2]|0)>=2?(e=CA(d,ym(d,0,86543,0)|0,174318)|0,(ev(b,e)|0)<<24>>24==0):0)if(!(a[e>>0]|0)){e=co(d)|0;while(1){if(!e){e=0;break a}if((jv(b,d,e)|0)<<24>>24){e=1;break a}e=eo(d,e)|0}}else e=0;else e=1;while(0);return e|0}function sv(a,b){a=a|0;b=b|0;var d=0;d=St(a)|0;c[d+4>>2]=1;c[d+8>>2]=b;c[d+12>>2]=1;nv(a,c[(c[b+16>>2]|0)+12>>2]|0,b);jD(a,b);return}function tv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;b=Im(b,86439)|0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){Au(b)|0;e=168440;b=0;while(1){g=e;while(1){f=c[g>>2]|0;if(!f){e=168440;break a}e=g+4|0;if(!(vJ(f,95883)|0)){f=1;break}if(!(vJ(f,91338)|0)){e=g;h=9;break}if(!(vJ(f,91345)|0)){e=g;h=11;break}if(!(vJ(f,91320)|0)){e=g;h=13;break}else g=e}if((h|0)==9)while(1){h=0;i=e;e=e+4|0;f=c[e>>2]|0;c[i>>2]=f;if(!f){e=g;f=3;break}else h=9}else if((h|0)==11)while(1){h=0;f=e;e=e+4|0;i=c[e>>2]|0;c[f>>2]=i;if(!i){e=g;f=64;break}else h=11}else if((h|0)==13)while(1){h=0;f=e;e=e+4|0;i=c[e>>2]|0;c[f>>2]=i;if(!i){e=g;f=4;break}else h=13}b=b|f}}else{e=0;b=0}while(0);c[d>>2]=b;return e|0}function uv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;i=k;j=k+4|0;c[j>>2]=0;m=(Yt(b,0,j)|0)==0;j=c[j>>2]|0;if((m?(f=c[j>>2]|0,(f|0)>=2):0)?(h=j+8|0,(c[c[h>>2]>>2]|0)!=0):0){if((f|0)>2)_l(0,85406,i)|0;m=tw((TK(b)|0)+1|0)|0;c[d>>2]=m;cL(m,c[c[h>>2]>>2]|0)|0;if(!(c[(c[h>>2]|0)+12>>2]|0))c[d+4>>2]=0;else{m=c[d>>2]|0;m=m+((TK(m)|0)+1)|0;c[d+4>>2]=m;cL(m,c[(c[h>>2]|0)+12>>2]|0)|0}b=c[h>>2]|0;do if(!(a[b+8>>0]|0))if(!(a[b+20>>0]|0)){g[e>>2]=0.0;break}else{g[e>>2]=1.0-+g[b+16>>2];break}else c[e>>2]=c[b+4>>2];while(0);Zt(j);b=1}else{c[d>>2]=0;Zt(j);b=0}l=k;return b|0}function vv(a,b){a=a|0;b=b|0;kD(a,b);Tt(a);return}function wv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,i=0,j=0.0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+96|0;s=A+48|0;v=A+16|0;z=A+8|0;y=A;w=A+80|0;c[w>>2]=1e3;f=tw(16e3)|0;x=a+256|0;e=1;d=1;i=0;t=0;u=c[b+8>>2]|0;while(1){if((t|0)>=(c[b>>2]|0))break;p=c[u>>2]|0;k=u+80|0;m=f+8|0;q=u+8|0;n=q+4|0;a:do switch(p|0){case 1:case 0:{c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];c[v+16>>2]=c[k+16>>2];c[v+20>>2]=c[k+20>>2];c[v+24>>2]=c[k+24>>2];c[v+28>>2]=c[k+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];if(iv(v,s)|0){B=+h[q>>3];j=+h[u+24>>3];h[f>>3]=B-j;o=+h[u+16>>3];r=+h[u+32>>3];h[m>>3]=o-r;h[f+16>>3]=B+j;h[f+24>>3]=o+r;DD(a,f,2,(p|0)==0?d:0)}break}case 3:case 2:{c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];c[v+16>>2]=c[k+16>>2];c[v+20>>2]=c[k+20>>2];c[v+24>>2]=c[k+24>>2];c[v+28>>2]=c[k+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];if(iv(v,s)|0){f=xv(f,w,c[n>>2]|0,c[q>>2]|0)|0;ED(a,f,c[q>>2]|0,(c[u>>2]|0)==2?d:0)}break}case 5:case 4:{c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];c[v+16>>2]=c[k+16>>2];c[v+20>>2]=c[k+20>>2];c[v+24>>2]=c[k+24>>2];c[v+28>>2]=c[k+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];if(iv(v,s)|0){f=xv(f,w,c[n>>2]|0,c[q>>2]|0)|0;GD(a,f,c[q>>2]|0,0,0,(c[u>>2]|0)==4?d&255:0)}break}case 6:{c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];c[v+16>>2]=c[k+16>>2];c[v+20>>2]=c[k+20>>2];c[v+24>>2]=c[k+24>>2];c[v+28>>2]=c[k+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];if(iv(v,s)|0){f=xv(f,w,c[n>>2]|0,c[q>>2]|0)|0;HD(a,f,c[q>>2]|0)}break}case 7:{c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];c[v+16>>2]=c[k+16>>2];c[v+20>>2]=c[k+20>>2];c[v+24>>2]=c[k+24>>2];c[v+28>>2]=c[k+28>>2];c[s>>2]=c[x>>2];c[s+4>>2]=c[x+4>>2];c[s+8>>2]=c[x+8>>2];c[s+12>>2]=c[x+12>>2];c[s+16>>2]=c[x+16>>2];c[s+20>>2]=c[x+20>>2];c[s+24>>2]=c[x+24>>2];c[s+28>>2]=c[x+28>>2];if(iv(v,s)|0){h[f>>3]=+h[q>>3];h[m>>3]=+h[u+16>>3];q=c[u+112>>2]|0;c[s>>2]=c[f>>2];c[s+4>>2]=c[f+4>>2];c[s+8>>2]=c[f+8>>2];c[s+12>>2]=c[f+12>>2];xD(a,s,q)}break}case 8:{AD(a,c[q>>2]|0);d=1;break}case 9:{yD(a,c[q>>2]|0);d=1;break}case 13:{d=u+16|0;if((c[q>>2]|0)!=2){p=c[d+36>>2]|0;q=c[p+12>>2]|0;B=+g[p+8>>2];d=~~(+O(+(+h[u+40>>3]-+h[u+24>>3]),+(+h[u+32>>3]-+h[d>>3]))*180.0/3.141592653589793);AD(a,c[p+4>>2]|0);BD(a,q,d,B);d=2;break a}q=c[u+68>>2]|0;k=c[q+4>>2]|0;m=c[q+12>>2]|0;r=+g[q+8>>2];o=+h[u+40>>3];j=+h[d>>3];if(o==j?+h[u+48>>3]==+h[u+24>>3]:0)d=0;else d=~~(+L(+((j-o)/+h[u+32>>3]))*180.0/3.141592653589793);AD(a,k);BD(a,m,d,r);d=3;break}case 14:{_l(0,85472,y)|0;break}case 12:{if(!e)e=0;else{_l(0,85512,z)|0;e=0}break}case 11:{Au(c[q>>2]|0)|0;CD(a,168440);i=168440;break}default:{}}while(0);t=t+1|0;u=u+120|0}if(i|0)CD(a,c[(c[a>>2]|0)+336>>2]|0);xN(f);l=A;return}function xv(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=c[b>>2]|0;f=g<<1;f=(f|0)>(e|0)?f:e;if((g|0)<(e|0)){a=vw(a,f<<4)|0;c[b>>2]=f}b=0;while(1){if((b|0)>=(e|0))break;h[a+(b<<4)>>3]=+h[d+(b*24|0)>>3];h[a+(b<<4)+8>>3]=+h[d+(b*24|0)+8>>3];b=b+1|0}return a|0}function yv(a,b){a=a|0;b=b|0;var d=0;d=c[b>>2]|0;c[a>>2]=c[b+4>>2];c[a+4>>2]=d;return}function zv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+16|0;f=1;while(1){d=c[g>>2]|0;if((f|0)>(c[d+180>>2]|0))break;e=c[(c[d+184>>2]|0)+(f<<2)>>2]|0;zv(b,e);d=Im(e,122556)|0;if(d|0?a[d>>0]|0:0)yD(b,d);d=Im(e,122547)|0;if(d|0?a[d>>0]|0:0)yD(b,d);d=Im(e,85383)|0;if(d|0?a[d>>0]|0:0)yD(b,d);d=Im(e,86429)|0;if(d|0?a[d>>0]|0:0)AD(b,d);d=Im(e,86463)|0;if(d|0?a[d>>0]|0:0)yD(b,d);f=f+1|0}return}function Av(a){a=a|0;var b=0,d=0,e=0;b=c[42180]|0;if(!b){b=Ql(19688,c[4345]|0)|0;c[42180]=b}if(!(Za[c[b>>2]&31](b,a,4)|0)){d=c[42180]|0;e=c[d>>2]|0;b=mL(a)|0;Za[e&31](d,b,1)|0;b=1}else b=0;return b|0}function Bv(a,b,c){a=a|0;b=b|0;c=c|0;xN(b);return}function Cv(a){a=a|0;var b=0;b=c[42181]|0;if(!a){if((b|0)>0?(b=b+-1|0,c[42181]=b,(b|0)==0):0){$K(1,c[42182]|0)|0;xN(c[42182]|0)}}else{c[42181]=b+1;if(!b){c[42182]=mL($K(1,0)|0)|0;$K(1,134909)|0}}return}function Dv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0;v=l;l=l+96|0;s=v+72|0;r=v+56|0;q=v+48|0;u=v+32|0;t=v+24|0;f=v+8|0;e=v;if(a[174212]|0)uA();do if((Oo(d,122293,0,1)|0)!=0?(p=d+16|0,(c[(c[p>>2]|0)+8>>2]|0)!=0):0){Ev(d);Fv(b,d);Gv(b,d);Cv(1);k=b+56|0;m=b+184|0;n=b+192|0;o=b+28|0;j=zr(b)|0;a:while(1){if(!j){i=33;break}e=c[k>>2]|0;f=j+20|0;if(!e){c[f>>2]=0;e=0}else{c[f>>2]=c[e+8>>2];e=c[e+12>>2]|0}c[j+24>>2]=e;c[j+12>>2]=b;c[j+28>>2]=c[m>>2];c[j+620>>2]=24752;c[j+624>>2]=c[6216];if(!(c[(c[p>>2]|0)+8>>2]|0)){i=13;break}f=j+52|0;i=_C(j,c[f>>2]|0)|0;c[j+56>>2]=i;switch(i|0){case 999:{i=16;break a}case 21:{e=1;break}case 24:{e=520;break}default:e=Hv(d)|0}g=j+152|0;c[g>>2]=c[g>>2]|e;e=c[n>>2]|0;do if(!e)i=24;else{if(c[e+152>>2]&32|0?(vJ(c[f>>2]|0,c[e+52>>2]|0)|0)==0:0){e=c[42183]|0;if(!e){i=27;break}c[e+8>>2]=j;c[j+36>>2]=c[e+36>>2];i=29;break}aD(e);c[n>>2]=0;c[o>>2]=0;i=24}while(0);if((i|0)==24){c[42183]=0;i=27}if((i|0)==27?(i=0,($C(j)|0)==0):0){c[n>>2]=j;i=29}if((i|0)==29){c[j+8>>2]=0;c[j+104>>2]=24868;Iv(j);Jv(j);Kv(j,d);Lv(j,d);Mv(j,d);if(!(c[g>>2]&128))du(j,d);c[42183]=j}j=Ar(b)|0}if((i|0)==13){_l(1,85670,t)|0;Cv(0);if(!(a[174212]|0)){e=-1;break}e=c[13857]|0;t=Dn(d)|0;w=+vA();c[u>>2]=t;h[u+8>>3]=w;OL(e,85641,u)|0;e=-1;break}else if((i|0)==16){c[q>>2]=c[f>>2];_l(1,85691,q)|0;Cv(0);if(!(a[174212]|0)){e=-1;break}e=c[13857]|0;u=Dn(d)|0;w=+vA();c[r>>2]=u;h[r+8>>3]=w;OL(e,85641,r)|0;e=-1;break}else if((i|0)==33){Cv(0);if(!(a[174212]|0)){e=0;break}e=c[13857]|0;u=Dn(d)|0;w=+vA();c[s>>2]=u;h[s+8>>3]=w;OL(e,85641,s)|0;e=0;break}}else i=5;while(0);if((i|0)==5){_l(1,85593,e)|0;if(!(a[174212]|0))e=-1;else{e=c[13857]|0;u=Dn(d)|0;w=+vA();c[f>>2]=u;h[f+8>>3]=w;OL(e,85641,f)|0;e=-1}}l=v;return e|0}function Ev(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;Rv(a,b);b=eo(a,b)|0}return}function Fv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0;o=l;l=l+32|0;k=o+24|0;f=o+16|0;j=o+8|0;n=o;c[b+168>>2]=d;g=b+293|0;a[g>>0]=0;e=Im(d,90490)|0;if(e|0?(c[f>>2]=j,c[f+4>>2]=n,i=FL(e,90497,f)|0,(i|0)>0):0){p=+h[j>>3]*72.0;e=b+208|0;h[e>>3]=p;h[b+200>>3]=p;if((i|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[g>>0]=1}f=b+292|0;a[f>>0]=0;e=Im(d,86093)|0;if(e|0?(c[k>>2]=j,c[k+4>>2]=n,m=FL(e,90497,k)|0,(m|0)>0):0){p=+h[j>>3]*72.0;e=b+224|0;h[e>>3]=p;h[b+216>>3]=p;if((m|0)!=1)h[e>>3]=+h[n>>3]*72.0;a[f>>0]=1}e=b+294|0;a[e>>0]=0;f=b+232|0;g=d+16|0;n=(c[(c[g>>2]|0)+8>>2]|0)+48|0;c[f>>2]=c[n>>2];c[f+4>>2]=c[n+4>>2];c[f+8>>2]=c[n+8>>2];c[f+12>>2]=c[n+12>>2];f=c[(c[g>>2]|0)+8>>2]|0;if(+h[f+48>>3]>.001?+h[f+56>>3]>.001:0)a[e>>0]=1;c[b+288>>2]=a[f+81>>0]|0?90:0;e=b+196|0;c[e>>2]=86097;f=Im(d,86100)|0;if(f|0?a[f>>0]|0:0)c[e>>2]=f;n=b+256|0;m=(c[g>>2]|0)+16|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];c[n+16>>2]=c[m+16>>2];c[n+20>>2]=c[m+20>>2];c[n+24>>2]=c[m+24>>2];c[n+28>>2]=c[m+28>>2];c[42203]=ym(d,0,86495,0)|0;c[42204]=ym(d,0,86480,0)|0;c[b+320>>2]=DA(0,c[42221]|0,92987)|0;h[b+328>>3]=+BA(0,c[42220]|0,14.0,1.0);c[b+336>>2]=19724;c[b+188>>2]=Dn(d)|0;l=o;return}function Gv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=b+304|0;f=c[e>>2]|0;if(f|0){xN(f);c[e>>2]=0}g=b+308|0;e=c[g>>2]|0;if(e|0){xN(e);c[g>>2]=0}h=b+316|0;e=c[h>>2]|0;if(e|0){xN(e);c[h>>2]=0}e=Im(d,85844)|0;f=b+312|0;if(e){c[f>>2]=Pv(b,d,e)|0;e=Im(d,85851)|0;if(e|0?a[e>>0]|0:0)c[h>>2]=Qv(b,e)|0}else{c[g>>2]=0;c[f>>2]=1}return}function Hv(b){b=b|0;var c=0;b=Im(b,85812)|0;a:do if(!b)b=0;else{c=b+1|0;switch(a[b>>0]|0){case 110:{if(!(vJ(c,85824)|0))b=1;else{b=0;break a}break}case 101:{if(!(vJ(c,85834)|0))b=16;else{b=0;break a}break}default:{b=0;break a}}}while(0);return b|0}function Iv(b){b=b|0;var d=0,e=0.0,f=0;d=c[b>>2]|0;f=b+240|0;if(!(a[d+292>>0]|0)){if((c[b+56>>2]|0)==300)e=+h[(c[b+68>>2]|0)+8>>3];else e=4.0;h[b+248>>3]=e;h[f>>3]=e}else{b=d+216|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2]}return}function Jv(b){b=b|0;var d=0,e=0;d=c[b>>2]|0;e=b+416|0;a:do if(!(a[d+293>>0]|0))switch(c[b+56>>2]|0){case 300:{d=(c[b+84>>2]|0)+8|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];break a}case 30:case 21:case 22:case 4:case 3:case 2:{h[b+424>>3]=36.0;h[e>>3]=36.0;break a}default:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;break a}}else{d=d+200|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2]}while(0);return}function Kv(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0;g=c[(c[b>>2]|0)+192>>2]|0;e=+h[(c[(c[d+16>>2]|0)+8>>2]|0)+24>>3];d=b+432|0;f=b+440|0;do if(!(e!=0.0)){if(g|0?a[g+128>>0]|0:0){g=g+112|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];break}if((c[b+56>>2]|0)==300){g=(c[b+84>>2]|0)+40|0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];break}else{h[f>>3]=96.0;h[d>>3]=96.0;break}}else{h[f>>3]=e;h[d>>3]=e}while(0);return}\nfunction ob(a){a=a|0;var b=0;b=l;l=l+a|0;l=l+15&-16;return b|0}function pb(){return l|0}function qb(a){a=a|0;l=a}function rb(a,b){a=a|0;b=b|0;l=a;m=b}function sb(a,b){a=a|0;b=b|0;if(!o){o=a;p=b}}function tb(a){a=a|0;D=a}function ub(){return D|0}function vb(a){a=a|0;c[41846]=a;return 0}function wb(){return c[41846]|0}function xb(a,b){a=a|0;b=b|0;Na(0,a|0,b|0)|0;return}function yb(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i+4|0;g=i;c[f>>2]=0;h=hs()|0;ms(h,10904);ms(h,17148);Zl(1)|0;Yl(16)|0;while(1){a=Sn(a)|0;e=c[f>>2]|0;if(!a)break;if(e|0){a=174318;continue}is(h,a,d)|0;ls(h,a,b,f,g)|0;a=174318}l=i;return e|0}function zb(a){a=a|0;var d=0,e=0,f=0,g=0;g=l;l=l+16|0;d=g+4|0;e=g;f=c[(c[a+16>>2]|0)+8>>2]|0;a=a+64|0;switch(c[a>>2]|0){case 0:{sx(f);break}case 1:{if(b[(c[f+16>>2]|0)+136>>1]&1)kB(f);break}case 4:case 5:case 6:{px(f,e,d);Cb(f,c[e>>2]|0,c[d>>2]|0,c[a>>2]|0);break}default:{}}l=g;return}function Ab(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[a+16>>2]|0)+8>>2]|0;if(!(c[41847]|0)){c[41847]=c[4443];c[41848]=9;c[41849]=17}f=e+64|0;d=(c[f>>2]|0)+8|0;b=c[d>>2]|0;c[d>>2]=167388;d=a+152|0;switch(c[a+64>>2]|0){case 2:{fx(a,e,a,0);break}case 3:{fx(a,e,a,1);break}case 1:case 0:{if(!(c[d>>2]&134217728))_p(e,a)|0;break}case 6:case 5:case 4:{Bb(e);if(!(c[d>>2]&134217728))_p(e,a)|0;break}default:{}}c[(c[f>>2]|0)+8>>2]=b;return}function Bb(b){b=b|0;var d=0,e=0;d=c[41851]|0;if((d|0)!=(c[41850]|0)){e=c[c[41882]>>2]|0;if(!e){e=qB(b,0,84787,174318)|0;c[c[41882]>>2]=e;d=c[41851]|0}if(d>>>0>=(c[41852]|0)>>>0){dm(167400,1)|0;d=c[41851]|0}a[d>>0]=0;d=c[41850]|0;c[41851]=d;Cm(b,e,d)|0}if(c[(c[b+16>>2]|0)+12>>2]|0){e=c[(c[41882]|0)+4>>2]|0;d=c[41867]|0;if(d>>>0>=(c[41868]|0)>>>0){dm(167464,1)|0;d=c[41867]|0}a[d>>0]=0;d=c[41866]|0;c[41867]=d;Cm(b,e,d)|0}Lm(b,59593,c[(c[41882]|0)+8236>>2]|0,174318)|0;d=0;while(1){if((d|0)==8)break;gm(167400+(d<<4)|0);d=d+1|0}xN(c[41882]|0);h[1]=1.0;h[5]=1.0;c[41883]=0;c[41887]=0;return}function Cb(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=wN(8240)|0;c[41882]=j;h=j+8232|0;a:do switch(g|0){case 6:{b[h>>1]=14;g=59609;h=j;break}case 5:{b[h>>1]=12;g=59613;h=j;break}default:{g=Im(d,59593)|0;if((g|0?a[g>>0]|0:0)?(i=Db(g)|0,(i&65535)>10):0){h=c[41882]|0;b[h+8232>>1]=i;break a}g=Db(59605)|0;h=c[41882]|0;b[h+8232>>1]=g;g=59605}}while(0);c[h+8236>>2]=g;j=d+16|0;g=c[j>>2]|0;if(!(c[g+180>>2]|0))i=0;else{i=qB(d,0,84787,174318)|0;h=c[41882]|0;g=c[j>>2]|0}c[h>>2]=i;if(!(a[g+113>>0]&8))g=0;else g=qB(d,0,59617,174318)|0;c[(c[41882]|0)+4>>2]=g;i=qB(d,1,84787,174318)|0;c[(c[41882]|0)+8>>2]=i;i=qB(d,1,59617,174318)|0;c[(c[41882]|0)+12>>2]=i;i=qB(d,2,84787,174318)|0;g=c[41882]|0;c[g+16>>2]=i;if(!f)h=0;else{h=qB(d,2,59625,174318)|0;g=c[41882]|0}c[g+20>>2]=h;if(!e)h=0;else{h=qB(d,2,59633,174318)|0;g=c[41882]|0}c[g+24>>2]=h;h=a[(c[j>>2]|0)+113>>0]|0;if(!(h&33))i=0;else{i=qB(d,2,59617,174318)|0;g=c[41882]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+28>>2]=i;if(!(h&2))i=0;else{i=qB(d,2,59641,174318)|0;g=c[41882]|0;h=a[(c[j>>2]|0)+113>>0]|0}c[g+32>>2]=i;if(!(h&4))h=0;else{h=qB(d,2,59650,174318)|0;g=c[41882]|0}c[g+36>>2]=h;g=0;while(1){if((g|0)==8)break;cm(167400+(g<<4)|0,1024,(c[41882]|0)+40+(g<<10)|0);g=g+1|0}return}function Db(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;i=j+8|0;g=0;d=b;a:while(1){e=d;do{f=e;e=e+1|0;f=a[f>>0]|0;if(!(f<<24>>24)){e=8;break a}}while(((f<<24>>24)+-48|0)>>>0>=10);d=i+g|0;if((g|0)>=1023){e=7;break}a[d>>0]=f;g=g+1|0;d=e}if((e|0)==7){c[h>>2]=b;_l(0,59659,h)|0}else if((e|0)==8)d=i+g|0;a[d>>0]=0;i=(pN(i)|0)&65535;l=j;return i|0}function Eb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;d=c[c[41882]>>2]|0;b=c[41855]|0;if(b>>>0>=(c[41856]|0)>>>0){dm(167416,1)|0;b=c[41855]|0}a[b>>0]=0;b=c[41854]|0;c[41855]=b;Cm(e,d,b)|0;if(c[(c[e+16>>2]|0)+12>>2]|0){d=c[(c[41882]|0)+4>>2]|0;b=c[41871]|0;if(b>>>0>=(c[41872]|0)>>>0){dm(167480,1)|0;b=c[41871]|0}a[b>>0]=0;b=c[41870]|0;c[41871]=b;Cm(e,d,b)|0}h[2]=1.0;h[6]=1.0;c[41884]=0;c[41888]=0;return}function Fb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41855]|0;if((b|0)!=(c[41854]|0)){d=c[(c[41882]|0)+8>>2]|0;if(b>>>0>=(c[41856]|0)>>>0){dm(167416,1)|0;b=c[41855]|0}a[b>>0]=0;b=c[41854]|0;c[41855]=b;Cm(e,d,b)|0}b=c[41871]|0;if((b|0)!=(c[41870]|0)){d=c[(c[41882]|0)+12>>2]|0;if(b>>>0>=(c[41872]|0)>>>0){dm(167480,1)|0;b=c[41871]|0}a[b>>0]=0;b=c[41870]|0;c[41871]=b;Cm(e,d,b)|0}h[9]=1.0;h[11]=1.0;c[41891]=0;c[41893]=0;return}function Gb(b){b=b|0;var d=0,e=0;e=c[(c[b+16>>2]|0)+8>>2]|0;b=c[41855]|0;if((b|0)!=(c[41854]|0)){d=c[(c[41882]|0)+16>>2]|0;if(b>>>0>=(c[41856]|0)>>>0){dm(167416,1)|0;b=c[41855]|0}a[b>>0]=0;b=c[41854]|0;c[41855]=b;Cm(e,d,b)|0}b=c[41859]|0;if((b|0)!=(c[41858]|0)){d=c[(c[41882]|0)+24>>2]|0;if(b>>>0>=(c[41860]|0)>>>0){dm(167432,1)|0;b=c[41859]|0}a[b>>0]=0;b=c[41858]|0;c[41859]=b;Cm(e,d,b)|0}b=c[41863]|0;if((b|0)!=(c[41862]|0)){d=c[(c[41882]|0)+20>>2]|0;if(b>>>0>=(c[41864]|0)>>>0){dm(167448,1)|0;b=c[41863]|0}a[b>>0]=0;b=c[41862]|0;c[41863]=b;Cm(e,d,b)|0}b=c[41871]|0;if((b|0)!=(c[41870]|0)){d=c[(c[41882]|0)+28>>2]|0;if(b>>>0>=(c[41872]|0)>>>0){dm(167480,1)|0;b=c[41871]|0}a[b>>0]=0;b=c[41870]|0;c[41871]=b;Cm(e,d,b)|0}b=c[41875]|0;if((b|0)!=(c[41874]|0)){d=c[(c[41882]|0)+36>>2]|0;if(b>>>0>=(c[41876]|0)>>>0){dm(167496,1)|0;b=c[41875]|0}a[b>>0]=0;b=c[41874]|0;c[41875]=b;Cm(e,d,b)|0}b=c[41879]|0;if((b|0)!=(c[41878]|0)){d=c[(c[41882]|0)+32>>2]|0;if(b>>>0>=(c[41880]|0)>>>0){dm(167512,1)|0;b=c[41879]|0}a[b>>0]=0;b=c[41878]|0;c[41879]=b;Cm(e,d,b)|0}h[10]=1.0;h[12]=1.0;h[3]=1.0;h[4]=1.0;h[7]=1.0;h[8]=1.0;c[41892]=0;c[41894]=0;c[41885]=0;c[41886]=0;c[41889]=0;c[41890]=0;return}function Hb(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+1056|0;j=t+16|0;s=t+8|0;r=t;k=t+32|0;o=c[(c[d+16>>2]|0)+12>>2]|0;p=c[11344+(o<<2)>>2]|0;fm(p,59762)|0;g=f+4|0;Qb(k,+h[(c[g>>2]|0)+16>>3]);fm(p,k)|0;Tb(d,174318,c[c[g>>2]>>2]|0);Nb(d);q=a[f+48>>0]|0;q=q<<24>>24==108?-1:q<<24>>24==114&1;g=c[g>>2]|0;if(!g)g=0;else g=c[g+24>>2]&127;i=b[(c[41882]|0)+8232>>1]|0;if((i&65535)>14?(m=c[11392+((i&65535)+-15<<2)>>2]&g,n=167532+(o<<2)|0,(c[n>>2]|0)!=(m|0)):0){c[r>>2]=m;yJ(k,59765,r)|0;fm(p,k)|0;c[n>>2]=m}r=e+8|0;h[r>>3]=+h[f+24>>3]+ +h[r>>3];fm(p,59771)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];Pb(p,j);c[s>>2]=q;yJ(k,87214,s)|0;fm(p,k)|0;Qb(k,+h[f+32>>3]);fm(p,k)|0;Tb(d,174318,c[f>>2]|0);l=t;return}function Ib(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+1040|0;f=i;g=i+16|0;e=c[(c[a+16>>2]|0)+12>>2]|0;Mb(a);Nb(a);e=11344+(e<<2)|0;if(!d){a=c[e>>2]|0;fm(a,59759)|0}else{if((d|1|0)==3)Vb(a,d,b,2);else Wb(a);a=c[e>>2]|0;fm(a,59756)|0};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Pb(a,f);Qb(g,+h[b+16>>3]-+h[b>>3]);fm(a,g)|0;Qb(g,+h[b+24>>3]-+h[b+8>>3]);fm(a,g)|0;l=i;return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Mb(a);Nb(a);if(!d)Ob(a,112,b,c);else{if((d|1|0)==3)Vb(a,d,b,c);else Wb(a);Ob(a,80,b,c)}return}function Kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Mb(a);Nb(a);if(!f)Ob(a,66,b,c);else{if((f|1|0)==3)Vb(a,f,b,c);else Wb(a);Ob(a,98,b,c)}return}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;Mb(a);Nb(a);Ob(a,76,b,c);return}function Mb(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1184|0;i=n;f=n+24|0;m=n+8|0;cm(m,1024,n+152|0);j=b+16|0;d=c[j>>2]|0;g=+h[d+152>>3];e=8+(c[d+12>>2]<<3)|0;if(g!=+h[e>>3]){h[e>>3]=g;fm(m,59722)|0;h[i>>3]=+h[(c[j>>2]|0)+152>>3];yJ(f,59736,i)|0;Rb(f,0);fm(m,f)|0;f=m+4|0;d=c[f>>2]|0;e=m+8|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=41;d=c[f>>2]|0;if(d>>>0>=(c[e>>2]|0)>>>0){dm(m,1)|0;d=c[f>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[f>>2]=d;Tb(b,59741,d);d=c[j>>2]|0}d=c[d+160>>2]|0;if(d|0){j=m+4|0;k=m+8|0;a:while(1){i=d+4|0;d=c[d>>2]|0;if(!d)break;switch(a[d>>0]|0){case 102:{if(!(vJ(d,95883)|0)){d=i;continue a}break}case 98:{if(!(vJ(d,95865)|0)){d=i;continue a}break}case 115:{if(!(vJ(d,95870)|0)){d=i;continue a}break}default:{}}fm(m,d)|0;do{f=d;d=d+1|0}while((a[f>>0]|0)!=0);if(a[d>>0]|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=40;f=0;while(1){if(!(a[d>>0]|0))break;if(f|0){e=c[j>>2]|0;if(e>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;e=c[j>>2]|0}c[j>>2]=e+1;a[e>>0]=44}fm(m,d)|0;do{e=d;d=d+1|0}while((a[e>>0]|0)!=0);f=f+1|0}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}c[j>>2]=d+1;a[d>>0]=41}d=c[j>>2]|0;if(d>>>0>=(c[k>>2]|0)>>>0){dm(m,1)|0;d=c[j>>2]|0}a[d>>0]=0;d=c[m>>2]|0;c[j>>2]=d;Tb(b,59741,d);d=i}gm(m)}l=n;return}function Nb(a){a=a|0;Sb((c[a+16>>2]|0)+16|0);Tb(a,68683,174018);return}function Ob(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;k=l;l=l+1040|0;j=k;i=k+16|0;h=c[11344+(c[(c[b+16>>2]|0)+12>>2]<<2)>>2]|0;g=h+4|0;b=c[g>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[g>>2]|0}c[g>>2]=b+1;a[b>>0]=d;c[j>>2]=f;yJ(i,59686,j)|0;fm(h,i)|0;b=0;while(1){if((b|0)>=(f|0))break;i=e+(b<<4)|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];Pb(h,j);b=b+1|0}l=k;return}function Pb(a,b){a=a|0;b=b|0;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,+h[b>>3]);fm(a,d)|0;Qb(d,+ex(+h[b+8>>3]));fm(a,d)|0;l=c;return}function Qb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+16|0;d=c;h[d>>3]=b>-1.0e-08&b<1.0e-08?0.0:b;yJ(a,59691,d)|0;Rb(a,1);l=c;return}function Rb(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=VK(b,46)|0;e=(c|0)!=0;if(!d){if(e){d=b+(TK(b)|0)|0;f=10}}else{while(1){c=d+1|0;if(!(a[c>>0]|0))break;else d=c}a:while(1){switch(a[d>>0]|0){case 46:{f=5;break a}case 48:break;default:{f=6;break a}}a[d>>0]=0;d=d+-1|0}if((f|0)==5)a[d>>0]=0;else if((f|0)==6)d=d+1|0;if(e)f=10}if((f|0)==10){a[d>>0]=32;a[d+1>>0]=0}return}function Sb(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j;e=a[b+3>>0]|0;f=d[b>>0]|0;g=d[b+1>>0]|0;b=d[b+2>>0]|0;if(e<<24>>24==-1){c[h>>2]=f;c[h+4>>2]=g;c[h+8>>2]=b;yJ(174018,68563,h)|0}else{c[i>>2]=f;c[i+4>>2]=g;c[i+8>>2]=b;c[i+12>>2]=e&255;yJ(174018,59704,i)|0}l=j;return}function Tb(a,b,d){a=a|0;b=b|0;d=d|0;Ub(c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0,b,d);return}function Ub(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=l;l=l+1040|0;h=f;g=f+8|0;i=TK(e)|0;c[h>>2]=d;c[h+4>>2]=i;yJ(g,59697,h)|0;fm(b,g)|0;fm(b,e)|0;e=b+4|0;d=c[e>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[e>>2]|0}c[e>>2]=d+1;a[d>>0]=32;l=f;return}function Vb(b,d,f,i){b=b|0;d=d|0;f=f|0;i=i|0;var j=0.0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+1120|0;s=w+64|0;v=w+80|0;k=w+32|0;q=w+16|0;r=w;t=c[b+16>>2]|0;j=+(c[t+136>>2]|0)*3.141592653589793/180.0;if((e[(c[41882]|0)+8232>>1]|0)<14)Wb(b);else{cm(v,1024,w+96|0);u=(d|0)==2;if(u){GB(f,k,i,j,2);f=v+4|0;d=c[f>>2]|0;if(d>>>0>=(c[v+8>>2]|0)>>>0){dm(v,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=91;c[s>>2]=c[k>>2];c[s+4>>2]=c[k+4>>2];c[s+8>>2]=c[k+8>>2];c[s+12>>2]=c[k+12>>2];Pb(v,s);r=k+16|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];Pb(v,s)}else{GB(f,k,i,0.0,3);p=+h[k+24>>3];n=+h[k>>3];m=+h[k+8>>3];o=p*.25;if(j==0.0){h[q>>3]=n;j=m}else{h[q>>3]=n+o*+I(+j);j=m+o*+J(+j)}h[q+8>>3]=j;h[r>>3]=n;h[r+8>>3]=m;f=v+4|0;d=c[f>>2]|0;if(d>>>0>=(c[v+8>>2]|0)>>>0){dm(v,1)|0;d=c[f>>2]|0}c[f>>2]=d+1;a[d>>0]=40;c[s>>2]=c[q>>2];c[s+4>>2]=c[q+4>>2];c[s+8>>2]=c[q+8>>2];c[s+12>>2]=c[q+12>>2];Pb(v,s);Xb(v,o);c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];Pb(v,s);Xb(v,p)}fm(v,59747)|0;f=t+140|0;j=+g[f>>2];i=t+56|0;d=t+96|0;if(j>0.0){Yb(v,j,i);Yb(v,+g[f>>2],d)}else{Yb(v,0.0,i);Yb(v,1.0,d)}hm(v)|0;k=v+4|0;d=c[k>>2]|0;i=v+8|0;f=d>>>0>=(c[i>>2]|0)>>>0;if(u){if(f){dm(v,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=93}else{if(f){dm(v,1)|0;d=c[k>>2]|0}c[k>>2]=d+1;a[d>>0]=41}d=c[k>>2]|0;if(d>>>0>=(c[i>>2]|0)>>>0){dm(v,1)|0;d=c[k>>2]|0}a[d>>0]=0;u=c[v>>2]|0;c[k>>2]=u;Tb(b,59744,u);gm(v)}l=w;return}function Wb(a){a=a|0;Sb((c[a+16>>2]|0)+56|0);Tb(a,59744,174018);return}function Xb(a,b){a=a|0;b=+b;var c=0,d=0;c=l;l=l+1024|0;d=c;Qb(d,b);fm(a,d)|0;l=c;return}function Yb(a,b,c){a=a|0;b=+b;c=c|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;h[f>>3]=b;yJ(e,59750,f)|0;Rb(e,1);Sb(c);Ub(a,e,174018);l=d;return}function Zb(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0;e=l;l=l+1040|0;i=e;f=e+16|0;g=c[11344+(c[(c[a+16>>2]|0)+12>>2]<<2)>>2]|0;fm(g,59859)|0;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];Pb(g,i);Qb(f,+h[d+16>>3]-+h[d>>3]);fm(g,f)|0;Qb(f,+h[d+24>>3]-+h[d+8>>3]);fm(g,f)|0;Tb(a,174318,c[b+8>>2]|0);l=e;return}function _b(a){a=a|0;var b=0;switch(c[a+64>>2]|0){case 0:{b=vr(c[a>>2]|0)|0;js(b,c[(c[a+16>>2]|0)+8>>2]|0,60646,0)|0;wr(b);break}case 1:{sx(c[(c[a>>2]|0)+168>>2]|0);break}default:{}}return}function $b(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;d=f;e=c[(c[b+16>>2]|0)+8>>2]|0;if(!(c[41895]|0)){c[41895]=c[4443];c[41896]=9;c[41897]=17}c[(c[e+64>>2]|0)+8>>2]=167580;ac(e,1);c[d>>2]=0;a[d+4>>0]=(a[(c[e+16>>2]|0)+115>>0]|0)==1&1;g=c[b+64>>2]|0;a[d+5>>0]=((g|0)==0|(g|0)==3)&1;a[d+6>>0]=0;bc(e,b,1,d);l=f;return}function ac(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;ac(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function bc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;p=q+8|0;o=q;n=(d|0)!=0;if(n){m=Ql(11764,c[4345]|0)|0;To(a,1,86759,12,0);To(a,2,86759,12,0);To(a,0,86759,-12,0);f=cc(a,0,m)|0;j=co(a)|0;i=0;g=0;while(1){if(!j)break;if(!(xJ(Dn(j)|0,92999,7)|0)){k=g;g=dc(m,Dn(j)|0)|0}else{k=g+1|0;g=g+f|0}c[(Mo(j,86759,0)|0)+8>>2]=g;h=Pm(a,j)|0;g=i;while(1){if(!h)break;c[(Mo(h,86759,0)|0)+8>>2]=g;h=Rm(a,h)|0;g=g+1|0}j=eo(a,j)|0;i=g;g=k}Kl(m)|0}else f=0;m=c[e>>2]|0;c[e>>2]=m+1;ec(b,m);jr(b,82353)|0;fc(a,b,d,e);gc(a,b,e);jr(b,82324)|0;ec(b,c[e>>2]|0);if(n){c[o>>2]=f;pr(b,59862,o)}else{c[p>>2]=c[(Mo(a,86759,0)|0)+8>>2];pr(b,59882,p)}ic(a,b,d,hc(a,b,d,e)|0,e);jc(a,b,d,e);jr(b,134917)|0;p=(c[e>>2]|0)+-1|0;c[e>>2]=p;ec(b,p);if(n)jr(b,95790)|0;else jr(b,68206)|0;l=q;return}function cc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((so(a)|0)!=(a|0)){e=b+1|0;c[(Mo(a,86759,0)|0)+8>>2]=b;if(!(xJ(Dn(a)|0,92999,7)|0)){b=Dn(a)|0;vc(d,b,c[(Mo(a,86759,0)|0)+8>>2]|0);b=e}else b=e}e=Jp(a)|0;while(1){if(!e)break;a=cc(e,b,d)|0;e=Kp(e)|0;b=a}return b|0}function dc(a,b){a=a|0;b=b|0;a=Za[c[a>>2]&31](a,b,512)|0;if(!a)a=-1;else a=c[a+12>>2]|0;return a|0}function ec(a,b){a=a|0;b=b|0;while(1){if((b|0)<=0)break;jr(a,60614)|0;b=b+-1|0}return}function fc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=l;l=l+32|0;g=h+16|0;f=h+8|0;i=h;j=Dn(a)|0;ec(b,c[e>>2]|0);c[i>>2]=mc(j,e)|0;pr(b,59970,i);if(d|0){jr(b,82324)|0;ec(b,c[e>>2]|0);j=(qn(a)|0)!=0;c[f>>2]=j?92645:122116;pr(b,60584,f);ec(b,c[e>>2]|0);j=(sn(a)|0)!=0;c[g>>2]=j?92645:122116;pr(b,60601,g)}l=h;return}function gc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;m=o;i=so(b)|0;j=c[b>>2]&3;f=Dm(i,j,0)|0;a:do if(f|0){k=e+5|0;while(1){if(!f)break a;g=Jm(b,f)|0;do if(g|0){h=f+8|0;if(!(a[g>>0]|0)){g=c[h>>2]|0;if((a[g>>0]|0)!=108)break;if(vJ(g,86200)|0)break}jr(d,82324)|0;ec(d,c[e>>2]|0);c[m>>2]=mc(c[h>>2]|0,e)|0;pr(d,60020,m);if(a[k>>0]|0?oc(c[h>>2]|0)|0:0){pc(Jm(b,f)|0,d,e);break}c[n>>2]=mc(Jm(b,f)|0,e)|0;pr(d,60027,n)}while(0);f=Dm(i,j,f)|0}}while(0);l=o;return}function hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;f=Jp(a)|0;if(f){jr(b,82324)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(b,g);g=(d|0)!=0;if(g){jr(b,59944)|0;a=0;d=f}else{jr(b,60004)|0;ec(b,c[e>>2]|0);a=0;d=f}while(1){if(!d)break;if(!a)a=1;else jr(b,82324)|0;if(g)nc(d,b,e);else{c[h>>2]=c[(Mo(d,86759,0)|0)+8>>2];pr(b,122203,h)}d=Kp(d)|0}if(g)a=1;else{c[e>>2]=(c[e>>2]|0)+-1;jr(b,134917)|0;ec(b,c[e>>2]|0);jr(b,82319)|0;a=1}}else a=0;l=i;return a|0}function ic(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=co(a)|0;e=(e|0)!=0;if(!g){if((d|0)!=0&e){c[f>>2]=(c[f>>2]|0)+-1;jr(b,134917)|0;ec(b,c[f>>2]|0);jr(b,82319)|0}}else{jr(b,82324)|0;h=(d|0)!=0;if(h)if(e)e=0;else{e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);jr(b,59944)|0;e=0}else{e=c[f>>2]|0;c[f>>2]=e+1;ec(b,e);jr(b,59958)|0;ec(b,c[f>>2]|0);e=0}while(1){if(!g)break;if(xJ(Dn(g)|0,92999,7)|0){do if(e)if(h){jr(b,82324)|0;break}else{jr(b,85990)|0;break}else e=1;while(0);lc(g,b,d,f)}g=eo(a,g)|0}c[f>>2]=(c[f>>2]|0)+-1;jr(b,134917)|0;ec(b,c[f>>2]|0);jr(b,82319)|0}return}function jc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;f=co(a)|0;a:do if(f|0){while(1){if(!f)break a;if(Pm(a,f)|0)break;f=eo(a,f)|0}jr(b,82324)|0;i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);jr(b,59894)|0;i=(d|0)!=0;if(i)g=0;else{ec(b,c[e>>2]|0);g=0}while(1){if(!f)break;h=Pm(a,f)|0;while(1){if(!h)break;do if(g)if(i){jr(b,82324)|0;break}else{jr(b,85990)|0;break}else g=1;while(0);kc(h,b,d,e);h=Rm(a,h)|0}f=eo(a,f)|0}c[e>>2]=(c[e>>2]|0)+-1;jr(b,134917)|0;ec(b,c[e>>2]|0);jr(b,82319)|0}while(0);return}function kc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;h=j+16|0;g=j+8|0;f=j;if(!d){c[i>>2]=c[(Mo(a,86759,0)|0)+8>>2];pr(b,122203,i)}else{i=c[e>>2]|0;c[e>>2]=i+1;ec(b,i);jr(b,82353)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Mo(a,86759,0)|0)+8>>2];pr(b,59906,f);ec(b,c[e>>2]|0);c[g>>2]=c[(Mo(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0,86759,0)|0)+8>>2];pr(b,59920,g);ec(b,c[e>>2]|0);c[h>>2]=c[(Mo(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0,86759,0)|0)+8>>2];pr(b,59933,h);gc(a,b,e);jr(b,134917)|0;i=(c[e>>2]|0)+-1|0;c[e>>2]=i;ec(b,i);jr(b,68206)|0}l=j;return}function lc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i+16|0;g=i+8|0;f=i;if(!d){c[h>>2]=c[(Mo(a,86759,0)|0)+8>>2];pr(b,122203,h)}else{h=c[e>>2]|0;c[e>>2]=h+1;ec(b,h);jr(b,82353)|0;ec(b,c[e>>2]|0);c[f>>2]=c[(Mo(a,86759,0)|0)+8>>2];pr(b,59906,f);ec(b,c[e>>2]|0);c[g>>2]=mc(Dn(a)|0,e)|0;pr(b,59970,g);gc(a,b,e);jr(b,134917)|0;h=(c[e>>2]|0)+-1|0;c[e>>2]=h;ec(b,h);jr(b,68206)|0}l=i;return}function mc(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;g=d+4|0;if(a[g>>0]|0)b=vB(b)|0;if(!(c[41898]|0)){cm(167592,1024,0);e=b}else e=b;a:while(1){f=a[e>>0]|0;switch(f<<24>>24){case 0:break a;case 34:{fm(167592,59983)|0;break}case 92:{fm(167592,81595)|0;break}case 47:{fm(167592,59986)|0;break}case 8:{fm(167592,59989)|0;break}case 12:{fm(167592,59992)|0;break}case 10:{fm(167592,59995)|0;break}case 13:{fm(167592,59998)|0;break}case 9:{fm(167592,60001)|0;break}default:{d=c[41899]|0;if(d>>>0>=(c[41900]|0)>>>0){dm(167592,1)|0;d=c[41899]|0}c[41899]=d+1;a[d>>0]=f}}e=e+1|0}d=c[41899]|0;if(d>>>0>=(c[41900]|0)>>>0){dm(167592,1)|0;d=c[41899]|0}a[d>>0]=0;d=c[41898]|0;c[41899]=d;if(a[g>>0]|0)xN(b);return d|0}function nc(a,b,c){a=a|0;b=b|0;c=c|0;bc(a,b,0,c);a=Jp(a)|0;while(1){if(!a)break;jr(b,82324)|0;nc(a,b,c);a=Kp(a)|0}return}function oc(b){b=b|0;var c=0;c=b+1|0;a:do if((a[b>>0]|0)==95){b=(a[c>>0]|0)+-100<<24>>24;switch(((b&255)>>>2|b<<6&255)<<24>>24){case 0:{if(!(vJ(c,60541)|0)){b=1;break a}break}case 2:{if(!(vJ(c,60547)|0)){b=1;break a}break}case 1:{if(!(vJ(c,60554)|0)){b=1;break a}b=(vJ(c,60568)|0)==0;break a}case 4:{if(!(vJ(c,60561)|0)){b=1;break a}b=(vJ(c,60576)|0)==0;break a}default:{b=0;break a}}b=0}else b=0;while(0);return b&1|0}function pc(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;do if(b|0?a[b>>0]|0:0){h=tt(b)|0;if(!h){c[f>>2]=b;_l(0,60032,f)|0;break}jr(d,134917)|0;g=c[e>>2]|0;c[e>>2]=g+1;ec(d,g);jr(d,60059)|0;g=h+8|0;b=0;f=0;while(1){if((f|0)>=(c[h>>2]|0))break;if(!b)b=1;else jr(d,82324)|0;qc((c[g>>2]|0)+(f*80|0)|0,d,e);f=f+1|0}c[e>>2]=(c[e>>2]|0)+-1;jr(d,134917)|0;ec(d,c[e>>2]|0);jr(d,82319)|0;ut(h)}while(0);l=i;return}function qc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+240|0;y=A+224|0;x=A+216|0;w=A+208|0;v=A+200|0;u=A+192|0;t=A+184|0;s=A+176|0;r=A+152|0;q=A+136|0;p=A+128|0;o=A+112|0;n=A+104|0;m=A+96|0;k=A+88|0;j=A+72|0;i=A+48|0;z=A+40|0;g=A+8|0;f=A;e=c[d>>2]|0;c[d>>2]=e+1;ec(b,e);jr(b,82353)|0;ec(b,c[d>>2]|0);e=c[a>>2]|0;a:do switch(e|0){case 1:case 0:{c[f>>2]=(e|0)==0?69:101;pr(b,60062,f);ec(b,c[d>>2]|0);D=+h[a+16>>3];C=+h[a+24>>3];B=+h[a+32>>3];h[g>>3]=+h[a+8>>3];h[g+8>>3]=D;h[g+16>>3]=C;h[g+24>>3]=B;pr(b,60075,g);break}case 3:case 2:{c[z>>2]=(e|0)==2?80:112;pr(b,60062,z);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 5:case 4:{c[i>>2]=(e|0)==4?66:98;pr(b,60062,i);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 6:{pr(b,60110,A+56|0);ec(b,c[d>>2]|0);rc(b,a+8|0);break}case 7:{pr(b,60122,A+64|0);ec(b,c[d>>2]|0);D=+h[a+16>>3];h[j>>3]=+h[a+8>>3];h[j+8>>3]=D;pr(b,60134,j);ec(b,c[d>>2]|0);z=c[a+24>>2]|0;c[k>>2]=(z|0)==0?108:(z|0)==1?99:114;pr(b,60156,k);ec(b,c[d>>2]|0);h[m>>3]=+h[a+32>>3];pr(b,60172,m);ec(b,c[d>>2]|0);c[n>>2]=mc(c[a+40>>2]|0,d)|0;pr(b,60189,n);break}case 9:case 8:{c[o>>2]=(e|0)==8?67:99;pr(b,60062,o);ec(b,c[d>>2]|0);pr(b,60203,A+120|0);ec(b,c[d>>2]|0);c[p>>2]=mc(c[a+8>>2]|0,d)|0;pr(b,60220,p);break}case 13:case 14:{c[q>>2]=(e|0)==13?67:99;pr(b,60062,q);ec(b,c[d>>2]|0);switch(c[a+8>>2]|0){case 0:{pr(b,60203,A+144|0);ec(b,c[d>>2]|0);c[r>>2]=mc(c[a+16>>2]|0,d)|0;pr(b,60220,r);break a}case 1:{pr(b,60235,A+160|0);ec(b,c[d>>2]|0);sc(b,a+16|0,d);break a}default:{pr(b,60254,A+168|0);ec(b,c[d>>2]|0);tc(b,a+16|0,d);break a}}}case 10:{pr(b,60273,s);ec(b,c[d>>2]|0);h[t>>3]=+h[a+8>>3];pr(b,60285,t);ec(b,c[d>>2]|0);c[u>>2]=mc(c[a+16>>2]|0,d)|0;pr(b,60301,u);break}case 11:{pr(b,60315,v);ec(b,c[d>>2]|0);c[w>>2]=mc(c[a+8>>2]|0,d)|0;pr(b,60327,w);break}case 15:{pr(b,60342,x);ec(b,c[d>>2]|0);c[y>>2]=c[a+8>>2];pr(b,60354,y);break}default:{}}while(0);z=(c[d>>2]|0)+-1|0;c[d>>2]=z;ec(b,z);jr(b,68206)|0;l=A;return}function rc(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0;j=l;l=l+48|0;i=j+32|0;g=j+16|0;f=j+8|0;e=c[b>>2]|0;d=c[b+4>>2]|0;pr(a,60515,j);b=0;while(1){if((b|0)>=(e|0))break;if((b|0)>0)pr(a,85990,f);k=+h[d+(b*24|0)+8>>3];h[g>>3]=+h[d+(b*24|0)>>3];h[g+8>>3]=k;pr(a,60527,g);b=b+1|0}pr(a,60468,i);l=j;return}function sc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0;e=l;l=l+32|0;f=e+16|0;i=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=g;pr(a,60471,i);ec(a,c[d>>2]|0);g=+h[b+24>>3];h[f>>3]=+h[b+16>>3];h[f+8>>3]=g;pr(a,60493,f);ec(a,c[d>>2]|0);uc(a,c[b+32>>2]|0,c[b+36>>2]|0,d);l=e;return}function tc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0;e=l;l=l+48|0;f=e+24|0;j=e;ec(a,c[d>>2]|0);g=+h[b+8>>3];i=+h[b+16>>3];h[j>>3]=+h[b>>3];h[j+8>>3]=g;h[j+16>>3]=i;pr(a,60370,j);ec(a,c[d>>2]|0);i=+h[b+32>>3];g=+h[b+40>>3];h[f>>3]=+h[b+24>>3];h[f+8>>3]=i;h[f+16>>3]=g;pr(a,60398,f);ec(a,c[d>>2]|0);uc(a,c[b+48>>2]|0,c[b+52>>2]|0,d);l=e;return}function uc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+48|0;k=m+32|0;j=m+16|0;i=m+8|0;pr(a,60426,m);f=0;while(1){if((f|0)>=(b|0))break;if((f|0)>0)pr(a,85990,i);o=+g[d+(f<<3)>>2];n=mc(c[d+(f<<3)+4>>2]|0,e)|0;h[j>>3]=o;c[j+8>>2]=n;pr(a,60437,j);f=f+1|0}pr(a,60468,k);l=m;return}function vc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=Za[c[a>>2]&31](a,b,512)|0;if(e){if((c[e+12>>2]|0)!=(d|0)){c[f>>2]=b;_l(0,60617,f)|0}}else{f=yN(1,16)|0;c[f+8>>2]=mL(b)|0;c[f+12>>2]=d;Za[c[a>>2]&31](a,f,1)|0}l=g;return}function wc(a,b,d){a=a|0;b=b|0;d=d|0;xN(c[b+8>>2]|0);xN(b);return}function xc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;jr(a,61472)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;pr(a,61482,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;pr(a,61517,e);c[d>>2]=S(c[a+168>>2]|0,c[a+164>>2]|0)|0;pr(a,61530,d);jr(a,61543)|0;jr(a,61553)|0;jr(a,61561)|0;jr(a,61569)|0;jr(a,61577)|0;jr(a,61585)|0;jr(a,61593)|0;jr(a,61597)|0;jr(a,61602)|0;l=b;return}function yc(a){a=a|0;jr(a,61453)|0;return}function zc(a){a=a|0;c[41902]=2;return}function Ac(a){a=a|0;c[41902]=1;return}function Bc(a){a=a|0;c[41902]=2;return}function Cc(a){a=a|0;c[41902]=0;return}function Dc(a){a=a|0;c[41902]=2;return}function Ec(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0;p=l;l=l+80|0;o=p;m=c[(c[b+16>>2]|0)+16>>2]|0;n=c[41902]|0;f=c[e+4>>2]|0;g=+h[f+16>>3]*+h[b+352>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;j=c[e>>2]|0;k=g*2.0/3.0*+((TK(j)|0)>>>0)*.5;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;e=a[e+48>>0]|0;r=+h[d>>3];q=+h[d+8>>3]+-72.0;j=Oc(j)|0;c[o>>2]=4;c[o+4>>2]=e<<24>>24==108?0:e<<24>>24==114?2:1;c[o+8>>2]=m;c[o+12>>2]=n;c[o+16>>2]=0;c[o+20>>2]=f;h[o+24>>3]=g;h[o+32>>3]=i;c[o+40>>2]=6;h[o+48>>3]=g;h[o+56>>3]=k;c[o+64>>2]=~~(r+(r>=0.0?.5:-.5));c[o+68>>2]=~~(q+(q>=0.0?.5:-.5));c[o+72>>2]=j;pr(b,61398,o);l=p;return}function Fc(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(vJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(Nc(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;pr(b,61341,j);k=10}break}default:va(123221,60738,163,60769)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function Gc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41902]|0;Lc(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));pr(a,61276,f);l=e;return}function Hc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41902]|0;Lc(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;pr(a,61180,g);Mc(a,b,d,1);l=f;return}function Ic(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;i=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;f=a+16|0;e=c[f>>2]|0;q=~~+h[e+152>>3];r=c[e+16>>2]|0;s=c[41902]|0;if((d|0)<=3)va(60731,60738,360,60758);t=wN((d*140|0)+140|0)|0;Lc(e,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[f>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[i>>2]=~~(E+(E>=0.0?.5:-.5));c[i+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(yJ(t,73948,i)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;MA(x,w,3,+(f|0)/6.0,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(yJ(e,73948,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;pr(a,61231,A);c[z>>2]=t;pr(a,73955,z);xN(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;pr(a,73960,B);e=e+1|0}jr(a,134917)|0;l=C;return}function Jc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41902]|0;Lc(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;pr(a,61180,f);Mc(a,b,d,0);l=e;return}function Kc(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;pr(a,61174,e);l=d;return}function Lc(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function Mc(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));pr(a,73948,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));pr(a,73948,i)}jr(a,134917)|0;l=j;return}function Nc(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c[a>>2]=0;m=c[41903]|0;h=195075;g=0;i=-1;while(1){j=170940+(g<<1)|0;k=171452+(g<<1)|0;l=171964+(g<<1)|0;if((g|0)>=(m|0)){n=6;break}o=(b[j>>1]|0)-d|0;k=(b[k>>1]|0)-e|0;j=(b[l>>1]|0)-f|0;j=(S(k,k)|0)+(S(o,o)|0)+(S(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((n|0)==6){c[41903]=m+1;if((m|0)==256)g=i;else{b[j>>1]=d;b[k>>1]=e;b[l>>1]=f;c[a>>2]=1}}return g|0}function Oc(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41904]|0;if(!d){c[41905]=64;d=wN(64)|0;c[41904]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41905]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41905]=d;d=zN(c[41904]|0,d)|0;c[41904]=d;d=d+e|0}b=d+1|0;if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;yJ(b,74073,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=b}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41904]|0}function Pc(b){b=b|0;var d=0,e=0,f=0;e=c[b+16>>2]|0;switch(c[b+64>>2]|0){case 0:{jr(b,61069)|0;d=e+208|0;e=c[d>>2]|0;if(e|0?a[e>>0]|0:0){jr(b,61083)|0;jr(b,ow(c[d>>2]|0)|0)|0;jr(b,134917)|0}break}case 1:{d=e+208|0;f=c[d>>2]|0;if(f|0?a[f>>0]|0:0){jr(b,61083)|0;jr(b,ow(c[d>>2]|0)|0)|0;jr(b,87598)|0;jr(b,ow(Dn(c[e+8>>2]|0)|0)|0)|0;jr(b,134917)|0}break}case 3:{f=ow(Dn(c[e+8>>2]|0)|0)|0;jr(b,61092)|0;jr(b,f)|0;jr(b,61102)|0;jr(b,f)|0;jr(b,61057)|0;break}default:{}}return}function Qc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;d=c[a+16>>2]|0;e=d+264|0;f=d+228|0;g=d+244|0;h=d+208|0;i=d+272|0;b=d+268|0;d=d+212|0;switch(c[a+64>>2]|0){case 2:{Sc(a,c[e>>2]|0,c[i>>2]|0,c[b>>2]|0,c[h>>2]|0,c[f>>2]|0,c[g>>2]|0,c[d>>2]|0);break}case 3:{Sc(a,c[e>>2]|0,c[i>>2]|0,c[b>>2]|0,c[h>>2]|0,c[f>>2]|0,c[g>>2]|0,c[d>>2]|0);jr(a,61061)|0;break}default:{}}return}function Rc(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;g=c[a+16>>2]|0;Sc(a,c[g+264>>2]|0,c[g+272>>2]|0,c[g+268>>2]|0,b,d,e,f);return}function Sc(b,d,e,f,g,i,j,k){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0;y=l;l=l+128|0;x=y+120|0;u=y+112|0;t=y+96|0;s=y+80|0;r=y+56|0;w=y+48|0;q=y+40|0;v=y+24|0;p=y;a:do if((e|0)!=0&(f|0)!=0){m=f+10|0;if((c[41906]|0)<(f|0)){c[41906]=m;o=zN(c[41907]|0,m<<3)|0;c[41907]=o}else o=c[41907]|0;m=0;while(1){if((m|0)>=(f|0))break;z=+h[e+(m<<4)>>3];c[o+(m<<3)>>2]=~~(z+(z>=0.0?.5:-.5));z=+h[e+(m<<4)+8>>3];c[o+(m<<3)+4>>2]=~~(z+(z>=0.0?.5:-.5));m=m+1|0}n=b+64|0;m=c[n>>2]|0;e=(g|0)!=0;if(e&(m|0)==0){if(!(a[g>>0]|0))break;switch(d|0){case 0:{v=c[o>>2]|0;w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[p>>2]=g;c[p+4>>2]=v;c[p+8>>2]=w;c[p+12>>2]=x;c[p+16>>2]=f;pr(b,60803,p);break a}case 1:{w=c[o>>2]|0;x=c[o+4>>2]|0;f=(c[o+8>>2]|0)-w|0;c[v>>2]=g;c[v+4>>2]=w;c[v+8>>2]=x;c[v+12>>2]=f;pr(b,60824,v);break a}case 2:{c[q>>2]=g;pr(b,60844,q);m=0;while(1){if((m|0)>=(f|0))break;v=c[41907]|0;x=c[v+(m<<3)+4>>2]|0;c[w>>2]=c[v+(m<<3)>>2];c[w+4>>2]=x;pr(b,60852,w);m=m+1|0}jr(b,134917)|0;break a}default:va(123221,60859,63,60879)}}if(e&(m|0)==1){if(!(a[g>>0]|0))break;if(!d){w=c[o+12>>2]|0;x=c[o+8>>2]|0;f=c[o+4>>2]|0;c[r>>2]=c[o>>2];c[r+4>>2]=w;c[r+8>>2]=x;c[r+12>>2]=f;c[r+16>>2]=g;c[r+20>>2]=i;pr(b,60896,r);break}else va(123221,60859,75,60879)}if((m&-2|0)==2){switch(d|0){case 1:{jr(b,60929)|0;break}case 0:{jr(b,60950)|0;break}case 2:{jr(b,60969)|0;break}default:va(123221,60859,91,60879)}if(k|0?a[k>>0]|0:0){jr(b,66449)|0;jr(b,rw(k)|0)|0;jr(b,83723)|0}if(e?a[g>>0]|0:0){jr(b,60988)|0;jr(b,rw(g)|0)|0;jr(b,83723)|0}if(j|0?a[j>>0]|0:0){jr(b,67408)|0;jr(b,ow(j)|0)|0;jr(b,83723)|0}if(i|0?a[i>>0]|0:0){jr(b,60996)|0;jr(b,ow(i)|0)|0;jr(b,83723)|0}jr(b,61005)|0;jr(b,61013)|0;b:do switch(d|0){case 1:{f=c[41907]|0;w=c[f>>2]|0;x=c[f+4>>2]|0;f=(c[f+8>>2]|0)-w|0;c[s>>2]=w;c[s+4>>2]=x;c[s+8>>2]=f;pr(b,61023,s);break}case 0:{v=c[41907]|0;w=c[v+12>>2]|0;x=c[v+8>>2]|0;f=c[v+4>>2]|0;c[t>>2]=c[v>>2];c[t+4>>2]=w;c[t+8>>2]=x;c[t+12>>2]=f;pr(b,61032,t);break}case 2:{w=c[41907]|0;m=c[w+4>>2]|0;c[u>>2]=c[w>>2];c[u+4>>2]=m;pr(b,61044,u);m=1;while(1){if((m|0)>=(f|0))break b;v=c[41907]|0;w=c[v+(m<<3)+4>>2]|0;c[x>>2]=c[v+(m<<3)>>2];c[x+4>>2]=w;pr(b,61050,x);m=m+1|0}}default:{}}while(0);if((c[n>>2]|0)==3){jr(b,66273)|0;break}else{jr(b,61057)|0;break}}}while(0);l=y;return}function Tc(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;jr(a,61472)|0;j=c[c[a+12>>2]>>2]|0;i=c[j+4>>2]|0;h=c[j+8>>2]|0;c[g>>2]=c[j>>2];c[g+4>>2]=i;c[g+8>>2]=h;pr(a,61482,g);c[e>>2]=Dn(c[f+8>>2]|0)|0;pr(a,61517,e);c[d>>2]=S(c[a+168>>2]|0,c[a+164>>2]|0)|0;pr(a,61530,d);jr(a,61543)|0;jr(a,61553)|0;jr(a,61561)|0;jr(a,61569)|0;jr(a,61577)|0;jr(a,61585)|0;jr(a,61593)|0;jr(a,61597)|0;jr(a,61602)|0;l=b;return}function Uc(a){a=a|0;jr(a,61453)|0;return}function Vc(a){a=a|0;c[41908]=2;return}function Wc(a){a=a|0;c[41908]=1;return}function Xc(a){a=a|0;c[41908]=2;return}function Yc(a){a=a|0;c[41908]=0;return}function Zc(a){a=a|0;c[41908]=2;return}function _c(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0;n=l;l=l+80|0;m=n;j=c[(c[b+16>>2]|0)+16>>2]|0;k=c[41908]|0;f=c[e+4>>2]|0;g=+h[f+16>>3]*+h[b+352>>3];i=c[b+360>>2]|0?1.5707963267948966:0.0;f=c[f+8>>2]|0;if(!f)f=-1;else f=c[f+20>>2]|0;q=a[e+48>>0]|0;p=+h[d>>3];o=+h[d+8>>3];e=id(c[e>>2]|0)|0;c[m>>2]=4;c[m+4>>2]=q<<24>>24==108?0:q<<24>>24==114?2:1;c[m+8>>2]=j;c[m+12>>2]=k;c[m+16>>2]=0;c[m+20>>2]=f;h[m+24>>3]=g;h[m+32>>3]=i;c[m+40>>2]=4;h[m+48>>3]=0.0;h[m+56>>3]=0.0;c[m+64>>2]=~~(p+(p>=0.0?.5:-.5));c[m+68>>2]=~~(o+(o>=0.0?.5:-.5));c[m+72>>2]=e;pr(b,61398,m);l=n;return}function $c(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;j=n;i=n+20|0;m=e+32|0;a:do switch(c[m>>2]|0){case 5:{f=0;while(1){g=c[12652+(f<<2)>>2]|0;if((f|0)==8)break a;h=c[e>>2]|0;if((a[g>>0]|0)==(a[h>>0]|0)?(vJ(g,h)|0)==0:0){k=10;break a}f=f+1|0}}case 1:{g=e+1|0;h=e+2|0;f=(hd(i,d[e>>0]|0,d[g>>0]|0,d[h>>0]|0)|0)+32|0;if(!(c[i>>2]|0))k=10;else{o=d[e>>0]|0;i=d[g>>0]|0;k=d[h>>0]|0;c[j>>2]=0;c[j+4>>2]=f;c[j+8>>2]=o;c[j+12>>2]=i;c[j+16>>2]=k;pr(b,61341,j);k=10}break}case 0:{f=0;k=10;break}default:va(123221,61362,168,61381)}while(0);if((k|0)==10)c[e>>2]=f;c[m>>2]=6;l=n;return}function ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0;e=l;l=l+112|0;f=e+8|0;u=e+104|0;t=e;k=c[a+16>>2]|0;s=~~+h[k+152>>3];r=c[k+16>>2]|0;q=c[k+56>>2]|0;p=c[41908]|0;fd(k,u,t);n=+h[b>>3];k=~~(n+(n>=0.0?.5:-.5));m=+h[b+8>>3];j=~~(m+(m>=0.0?.5:-.5));i=+h[b+16>>3];n=i-n;g=+h[b+24>>3];m=g-m;b=c[u>>2]|0;o=+h[t>>3];c[f>>2]=1;c[f+4>>2]=1;c[f+8>>2]=b;c[f+12>>2]=s;c[f+16>>2]=r;c[f+20>>2]=q;c[f+24>>2]=p;c[f+28>>2]=0;c[f+32>>2]=d|0?20:-1;h[f+40>>3]=o;c[f+48>>2]=0;h[f+56>>3]=0.0;c[f+64>>2]=k;c[f+68>>2]=j;c[f+72>>2]=~~(n+(n>=0.0?.5:-.5));c[f+76>>2]=~~(m+(m>=0.0?.5:-.5));c[f+80>>2]=k;c[f+84>>2]=j;c[f+88>>2]=~~(i+(i>=0.0?.5:-.5));c[f+92>>2]=~~(g+(g>=0.0?.5:-.5));pr(a,61276,f);l=e;return}function bd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;f=l;l=l+96|0;g=f+8|0;o=f+80|0;p=f;q=c[a+16>>2]|0;n=~~+h[q+152>>3];m=c[q+16>>2]|0;k=c[q+56>>2]|0;j=c[41908]|0;fd(q,o,p);o=c[o>>2]|0;i=+h[p>>3];c[g>>2]=2;c[g+4>>2]=3;c[g+8>>2]=o;c[g+12>>2]=n;c[g+16>>2]=m;c[g+20>>2]=k;c[g+24>>2]=j;c[g+28>>2]=0;c[g+32>>2]=e|0?20:-1;h[g+40>>3]=i;c[g+48>>2]=0;c[g+52>>2]=0;c[g+56>>2]=0;c[g+60>>2]=0;c[g+64>>2]=0;c[g+68>>2]=d+1;pr(a,61180,g);gd(a,b,d,1);l=f;return}function cd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0;C=l;l=l+192|0;B=C+176|0;z=C+168|0;A=C+104|0;y=C+96|0;f=C+88|0;u=C+180|0;v=C+80|0;w=C+16|0;x=C;e=a+16|0;p=c[e>>2]|0;q=~~+h[p+152>>3];r=c[p+16>>2]|0;s=c[41908]|0;t=wN((d*140|0)+140|0)|0;fd(p,u,v);if(!g){o=4;j=0;k=-1}else{o=5;j=c[(c[e>>2]|0)+56>>2]|0;k=20}E=+h[b>>3];n=w+48|0;h[n>>3]=E;D=+h[b+8>>3];h[w+56>>3]=D;c[f>>2]=~~(E+(E>=0.0?.5:-.5));c[f+4>>2]=~~(D+(D>=0.0?.5:-.5));m=x+8|0;e=t+(yJ(t,73948,f)|0)|0;p=1;g=0;while(1){i=g+3|0;if((i|0)>=(d|0))break;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];f=1;while(1){if((f|0)==4){f=1;break}F=f+g|0;h[w+(f<<4)>>3]=+h[b+(F<<4)>>3];h[w+(f<<4)+8>>3]=+h[b+(F<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;MA(x,w,3,+(f|0)/6.0,0,0);D=+h[x>>3];E=+h[m>>3];c[y>>2]=~~(D+(D>=0.0?.5:-.5));c[y+4>>2]=~~(E+(E>=0.0?.5:-.5));f=f+1|0;e=e+(yJ(e,73948,y)|0)|0}p=p+6|0;g=i}f=c[u>>2]|0;E=+h[v>>3];c[A>>2]=3;c[A+4>>2]=o;c[A+8>>2]=f;c[A+12>>2]=q;c[A+16>>2]=r;c[A+20>>2]=j;c[A+24>>2]=s;c[A+28>>2]=0;c[A+32>>2]=k;h[A+40>>3]=E;c[A+48>>2]=0;c[A+52>>2]=0;c[A+56>>2]=0;c[A+60>>2]=p;pr(a,61231,A);c[z>>2]=t;pr(a,73955,z);xN(t);f=p+-1|0;e=0;while(1){if((e|0)>=(p|0))break;c[B>>2]=((e|0)%(f|0)|0|0)!=0&1;pr(a,73960,B);e=e+1|0}jr(a,134917)|0;l=C;return}function dd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;e=l;l=l+96|0;f=e+8|0;m=e+80|0;n=e;o=c[a+16>>2]|0;k=~~+h[o+152>>3];j=c[o+16>>2]|0;i=c[41908]|0;fd(o,m,n);m=c[m>>2]|0;g=+h[n>>3];c[f>>2]=2;c[f+4>>2]=1;c[f+8>>2]=m;c[f+12>>2]=k;c[f+16>>2]=j;c[f+20>>2]=0;c[f+24>>2]=i;c[f+28>>2]=0;c[f+32>>2]=0;h[f+40>>3]=g;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=d;pr(a,61180,f);gd(a,b,d,0);l=e;return}function ed(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;pr(a,61174,e);l=d;return}function fd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function gd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));pr(a,73948,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));pr(a,73948,i)}jr(a,134917)|0;l=j;return}function hd(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c[a>>2]=0;m=c[41909]|0;h=195075;g=0;i=-1;while(1){j=172476+(g<<1)|0;k=172988+(g<<1)|0;l=173500+(g<<1)|0;if((g|0)>=(m|0)){n=6;break}o=(b[j>>1]|0)-d|0;k=(b[k>>1]|0)-e|0;j=(b[l>>1]|0)-f|0;j=(S(k,k)|0)+(S(o,o)|0)+(S(j,j)|0)|0;if((j|0)<(h|0))if(!j)break;else{h=j;i=g}g=g+1|0}if((n|0)==6){c[41909]=m+1;if((m|0)==256)g=i;else{b[j>>1]=d;b[k>>1]=e;b[l>>1]=f;c[a>>2]=1}}return g|0}function id(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41910]|0;if(!d){c[41911]=64;d=wN(64)|0;c[41910]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41911]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41911]=d;d=zN(c[41910]|0,d)|0;c[41910]=d;d=d+e|0}b=d+1|0;if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;yJ(b,74073,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=b}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41910]|0}function jd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=l;l=l+16|0;b=d;jr(a,66181)|0;if((c[a+64>>2]|0)==2)jr(a,66196)|0;else jr(a,134917)|0;g=c[c[a+12>>2]>>2]|0;f=c[g+4>>2]|0;e=c[g+8>>2]|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;c[b+8>>2]=e;pr(a,66207,b);l=d;return}function kd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+8|0;e=g;jr(a,66135)|0;b=a+64|0;d=a+12|0;if((c[b>>2]|0)!=2){c[e>>2]=c[(c[d>>2]|0)+28>>2];pr(a,66146,e)}if((c[(c[d>>2]|0)+20>>2]|0)==0?(c[b>>2]|0)!=2:0){b=c[a+476>>2]|0;d=c[a+480>>2]|0;e=c[a+484>>2]|0;c[f>>2]=c[a+472>>2];c[f+4>>2]=b;c[f+8>>2]=d;c[f+12>>2]=e;pr(a,62515,f)}jr(a,66161)|0;jr(a,66174)|0;l=g;return}function ld(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;k=l;l=l+32|0;j=k+24|0;f=k+8|0;i=k;g=c[b+16>>2]|0;a[174028]=0;e=b+12|0;h=g+8|0;if(!(c[(c[e>>2]|0)+28>>2]|0)){c[i>>2]=Dn(c[h>>2]|0)|0;pr(b,62446,i);d=b+64|0;if((c[d>>2]|0)==2)jr(b,62479)|0;else jr(b,62461)|0;do if(!(c[(c[e>>2]|0)+20>>2]|0))if((c[d>>2]|0)==2){n=c[b+460>>2]|0;m=c[b+464>>2]|0;d=c[b+468>>2]|0;c[f>>2]=c[b+456>>2];c[f+4>>2]=n;c[f+8>>2]=m;c[f+12>>2]=d;pr(b,62515,f);break}else{jr(b,62491)|0;break}while(0);jr(b,62545)|0;by(b,c[(c[e>>2]|0)+24>>2]|0,12928);dy(b);d=c[(c[e>>2]|0)+20>>2]|0;if(d|0){c[i>>2]=c[d>>2];c[i+4>>2]=0;by(b,0,i)}}c[41912]=(a[(c[(c[h>>2]|0)+16>>2]|0)+115>>0]|0)==1?1:-1;if(!(a[174028]|0)){jr(b,62565)|0;a[174028]=1}d=c[g+208>>2]|0;if(d|0){c[j>>2]=ey(d,c[41912]|0)|0;pr(b,62578,j)}l=k;return}function md(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;b=l;l=l+16|0;f=b;c[f>>2]=d;c[f+4>>2]=e;pr(a,62430,f);l=b;return}function nd(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0.0;s=l;l=l+144|0;r=s+128|0;q=s+112|0;p=s+72|0;o=s+56|0;n=s+40|0;m=s+32|0;e=s+24|0;b=s+8|0;d=s;f=c[a+456>>2]|0;j=c[a+460>>2]|0;g=c[a+464>>2]|0;i=c[a+468>>2]|0;k=a+12|0;t=(c[(c[k>>2]|0)+28>>2]|0)+1|0;c[d>>2]=t;c[d+4>>2]=t;pr(a,62057,d);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[b>>2]=f;c[b+4>>2]=j;c[b+8>>2]=g;c[b+12>>2]=i;pr(a,62074,b)}d=a+360|0;c[e>>2]=c[d>>2]|0?62108:62118;pr(a,62127,e);b=a+64|0;if((c[b>>2]|0)==1){c[m>>2]=g;c[m+4>>2]=i;pr(a,62152,m)}m=c[a+200>>2]|0;t=c[a+204>>2]|0;c[n>>2]=c[a+196>>2];c[n+4>>2]=m;c[n+8>>2]=t;pr(a,62191,n);if(!(c[(c[k>>2]|0)+20>>2]|0)){c[o>>2]=f;c[o+4>>2]=j;c[o+8>>2]=g-f;c[o+12>>2]=i-j;pr(a,62211,o)}w=+h[a+496>>3];t=c[d>>2]|0;v=+h[a+504>>3];u=+h[a+512>>3];h[p>>3]=+h[a+488>>3];h[p+8>>3]=w;c[p+16>>2]=t;h[p+24>>3]=v;h[p+32>>3]=u;pr(a,62251,p);if((c[b>>2]|0)==1){if((g|0)>14399|(i|0)>14399){t=c[(c[k>>2]|0)+16>>2]|0;c[q>>2]=g;c[q+4>>2]=i;c[q+8>>2]=14400;cb[t&31](62294,q)}c[r>>2]=f;c[r+4>>2]=j;c[r+8>>2]=g;c[r+12>>2]=i;pr(a,62389,r)}l=s;return}function od(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=a+12|0;if(c[(c[b>>2]|0)+20>>2]|0){jr(a,61981)|0;by(a,0,(c[(c[b>>2]|0)+20>>2]|0)+4|0)}jr(a,61998)|0;jr(a,62025)|0;c[d>>2]=c[(c[b>>2]|0)+28>>2];pr(a,62040,d);l=e;return}function pd(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;pr(a,61974,d);jr(a,61967)|0;l=b;return}function qd(a){a=a|0;jr(a,77410)|0;return}function rd(a){a=a|0;jr(a,61967)|0;return}function sd(a){a=a|0;jr(a,77410)|0;return}function td(a){a=a|0;jr(a,61967)|0;return}function ud(a){a=a|0;jr(a,77410)|0;return}function vd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;e=l;l=l+16|0;d=e;if(b|0?(g=(c[a+16>>2]|0)+272|0,c[g>>2]|0):0){jr(a,61863)|0;tr(a,c[g>>2]|0,2);jr(a,61874)|0;c[d>>2]=ey(b,c[41912]|0)|0;pr(a,61878,d)}l=e;return}function wd(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+32|0;j=m+8|0;k=m;f=c[b+16>>2]|0;if(!(+h[f+40>>3]<.5)){Dd(b,f+16|0);f=e+4|0;qr(b,+h[(c[f>>2]|0)+16>>3]);c[j>>2]=c[c[f>>2]>>2];pr(b,61822,j);f=ey(c[e>>2]|0,c[41912]|0)|0;i=e+32|0;switch(a[e+48>>0]|0){case 114:{g=+h[i>>3];break}case 108:{g=0.0;break}default:g=+h[i>>3]*.5}h[d>>3]=+h[d>>3]-g;n=d+8|0;h[n>>3]=+h[e+24>>3]+ +h[n>>3];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];sr(b,j);jr(b,61837)|0;qr(b,+h[i>>3]);c[k>>2]=f;pr(b,61846,k)}l=m;return}function xd(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+32|0;f=g;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];h[f+16>>3]=+h[b+16>>3]-+h[b>>3];h[f+24>>3]=+h[b+24>>3]-+h[b+8>>3];b=a+16|0;if(d|0?(e=c[b>>2]|0,+h[e+80>>3]>.5):0){Dd(a,e+56|0);tr(a,f,2);jr(a,61780)|0}if(+h[(c[b>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[b>>2]|0)+16|0);tr(a,f,2);jr(a,61800)|0}l=g;return}function yd(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+16|0;i=j;g=a+16|0;if(e|0?(f=c[g>>2]|0,+h[f+80>>3]>.5):0){Dd(a,f+56|0);jr(a,61701)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];sr(a,i);jr(a,61710)|0;e=1;while(1){if((e|0)>=(d|0))break;f=b+(e<<4)|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];sr(a,i);jr(a,61719)|0;e=e+1|0}jr(a,61746)|0}if(+h[(c[g>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[g>>2]|0)+16|0);jr(a,61701)|0;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];sr(a,i);jr(a,61710)|0;e=1;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];sr(a,i);jr(a,61719)|0;e=e+1|0}jr(a,61762)|0}l=j;return}function zd(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0;k=l;l=l+16|0;f=k;i=a+16|0;if(g|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);jr(a,61701)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];sr(a,f);jr(a,61710)|0;e=1;while(1){if((e|0)>=(d|0))break;tr(a,b+(e<<4)|0,3);jr(a,61736)|0;e=e+3|0}jr(a,61746)|0}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);jr(a,61701)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];sr(a,f);jr(a,61710)|0;e=1;while(1){if((e|0)>=(d|0))break;tr(a,b+(e<<4)|0,3);jr(a,61736)|0;e=e+3|0}jr(a,61728)|0}l=k;return}function Ad(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;g=l;l=l+16|0;f=g;e=a+16|0;if(+h[(c[e>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[e>>2]|0)+16|0);jr(a,61701)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];sr(a,f);jr(a,61710)|0;e=1;while(1){if((e|0)>=(d|0))break;i=b+(e<<4)|0;c[f>>2]=c[i>>2];c[f+4>>2]=c[i+4>>2];c[f+8>>2]=c[i+8>>2];c[f+12>>2]=c[i+12>>2];sr(a,f);jr(a,61719)|0;e=e+1|0}jr(a,61728)|0}l=g;return}function Bd(a,b){a=a|0;b=b|0;jr(a,61698)|0;jr(a,b)|0;jr(a,134917)|0;return}function Cd(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;g=n+16|0;m=n+8|0;k=n;i=a+16|0;if(f|0?(j=c[i>>2]|0,+h[j+80>>3]>.5):0){Dd(a,j+56|0);jr(a,77305)|0;tr(a,d,e);jr(a,87598)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];sr(a,g);c[k>>2]=e;c[k+4>>2]=b;pr(a,61615,k)}if(+h[(c[i>>2]|0)+40>>3]>.5){Ed(a);Dd(a,(c[i>>2]|0)+16|0);jr(a,77305)|0;tr(a,d,e);jr(a,87598)|0;c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];sr(a,g);c[m>>2]=e;c[m+4>>2]=b;pr(a,61631,m)}l=n;return}function Dd(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=l;l=l+32|0;e=f;if(b|0){switch(c[(c[a+16>>2]|0)+4>>2]|0){case 1:case 0:{d=96302;break}case 2:{d=96289;break}case 3:{d=96253;break}default:d=61667}i=+h[b+8>>3];g=+h[b+16>>3];h[e>>3]=+h[b>>3];h[e+8>>3]=i;h[e+16>>3]=g;c[e+24>>2]=d;pr(a,61674,e)}l=f;return}function Ed(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;g=b+16|0;i=c[g>>2]|0;d=c[i+160>>2]|0;qr(b,+h[i+152>>3]);jr(b,61648)|0;while(1){if(!d)break;i=d+4|0;f=c[d>>2]|0;if(!f)break;if(!(vJ(f,95870)|0)){d=i;continue}else e=f;while(1){d=e+1|0;if(!(a[e>>0]|0))break;else e=d}a:while(1){if(!(a[d>>0]|0))break;c[j>>2]=d;pr(b,61663,j);while(1){e=d+1|0;if(!(a[d>>0]|0)){d=e;continue a}else d=e}}if(!(vJ(f,119143)|0))h[(c[g>>2]|0)+152>>3]=0.0;c[k>>2]=f;pr(b,81649,k);d=i}l=m;return}function Fd(b){b=b|0;var d=0;jr(b,67687)|0;d=Im(c[(c[b>>2]|0)+168>>2]|0,67743)|0;if(d|0?a[d>>0]|0:0){jr(b,67754)|0;jr(b,d)|0;jr(b,67778)|0}jr(b,67799)|0;jr(b,67847)|0;jr(b,67901)|0;d=b+12|0;jr(b,ow(c[c[c[d>>2]>>2]>>2]|0)|0)|0;jr(b,71030)|0;jr(b,ow(c[(c[c[d>>2]>>2]|0)+4>>2]|0)|0)|0;jr(b,71040)|0;jr(b,ow(c[(c[c[d>>2]>>2]|0)+8>>2]|0)|0)|0;jr(b,68283)|0;jr(b,68307)|0;return}function Gd(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0.0;i=l;l=l+48|0;g=i+16|0;f=i+8|0;e=i;d=c[b+16>>2]|0;jr(b,67522)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){jr(b,68246)|0;jr(b,ow(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=S(c[b+168>>2]|0,c[b+164>>2]|0)|0;pr(b,67527,e);e=c[b+452>>2]|0;c[f>>2]=c[b+448>>2];c[f+4>>2]=e;pr(b,67543,f);m=+h[b+392>>3];k=+h[b+400>>3];j=+h[b+408>>3];h[g>>3]=+h[b+384>>3];h[g+8>>3]=m;h[g+16>>3]=k;h[g+24>>3]=j;pr(b,67576,g);jr(b,67607)|0;jr(b,67643)|0;jr(b,69237)|0;l=i;return}function Hd(a){a=a|0;jr(a,67514)|0;return}function Id(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;de(a,b,0,86543,c[(c[a+16>>2]|0)+8>>2]|0);jr(a,69237)|0;return}function Jd(a){a=a|0;jr(a,67362)|0;return}function Kd(b){b=b|0;var d=0,e=0,f=0,g=0;e=l;l=l+16|0;f=e;g=c[b+16>>2]|0;d=g+8|0;de(b,c[g+212>>2]|0,0,96302,c[d>>2]|0);jr(b,67466)|0;qr(b,+h[b+488>>3]);jr(b,87598)|0;qr(b,+h[b+496>>3]);c[f>>2]=0-(c[b+360>>2]|0);pr(b,67485,f);qr(b,+h[b+504>>3]);jr(b,87598)|0;qr(b,-+h[b+512>>3]);jr(b,67509)|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){jr(b,67418)|0;jr(b,ow(Dn(c[d>>2]|0)|0)|0)|0;jr(b,67426)|0}l=e;return}function Ld(a){a=a|0;jr(a,67362)|0;return}function Md(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,92999,c[b>>2]|0);jr(a,69237)|0;jr(a,67418)|0;jr(a,ow(Dn(c[b>>2]|0)|0)|0)|0;jr(a,67426)|0;return}function Nd(a){a=a|0;jr(a,67362)|0;return}function Od(a){a=a|0;var b=0,d=0,e=0;d=c[a+16>>2]|0;b=c[a+160>>2]|0;if((b|0)>1)b=c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0;else b=0;e=d+8|0;de(a,c[d+212>>2]|0,b,96289,c[e>>2]|0);jr(a,69237)|0;jr(a,67418)|0;jr(a,ow(Dn(c[e>>2]|0)|0)|0)|0;jr(a,67426)|0;return}function Pd(a){a=a|0;jr(a,67362)|0;return}function Qd(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=d+8|0;de(a,c[d+212>>2]|0,0,96253,c[b>>2]|0);jr(a,69237)|0;jr(a,67418)|0;b=nw(87089,c[b>>2]|0)|0;jr(a,ow(b)|0)|0;xN(b);jr(a,67426)|0;return}function Rd(a){a=a|0;jr(a,67362)|0;return}function Sd(b,c,d,e,f){b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;jr(b,67368)|0;if(f|0){jr(b,67371)|0;jr(b,ow(f)|0)|0;jr(b,83723)|0}jr(b,67261)|0;jr(b,69198)|0;if(c|0?a[c>>0]|0:0){jr(b,67379)|0;jr(b,c)|0;jr(b,83723)|0}if(d|0?a[d>>0]|0:0){jr(b,67393)|0;jr(b,pw(d,1)|0)|0;jr(b,83723)|0}if(e|0?a[e>>0]|0:0){jr(b,67408)|0;jr(b,ow(e)|0)|0;jr(b,83723)|0}jr(b,69237)|0;return}function Td(a){a=a|0;jr(a,69192)|0;jr(a,67362)|0;return}function Ud(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0;M=l;l=l+176|0;L=M+160|0;K=M+152|0;F=M+136|0;J=M+128|0;E=M+120|0;D=M+112|0;C=M+104|0;B=M+96|0;A=M+88|0;y=M+80|0;w=M+72|0;v=M+64|0;u=M+56|0;t=M+48|0;i=M+40|0;q=M+32|0;s=M+24|0;r=M+16|0;p=M+8|0;o=M;I=c[e+16>>2]|0;jr(e,66893)|0;switch(a[g+48>>0]|0){case 108:{jr(e,66899)|0;break}case 114:{jr(e,66920)|0;break}default:jr(e,66939)|0}H=f+8|0;G=+h[g+24>>3]+ +h[H>>3];h[H>>3]=G;H=I+260|0;if(!(b[H>>1]&512)){jr(e,66961)|0;qr(e,+h[f>>3]);jr(e,66966)|0;qr(e,-G);jr(e,83723)|0}x=g+4|0;f=c[x>>2]|0;n=c[f+8>>2]|0;if(n){f=n+16|0;i=n+8|0;switch(c[(c[(c[(c[e>>2]|0)+168>>2]|0)+16>>2]|0)+244>>2]|0){case 1:{m=n;break}case 2:{m=n+24|0;f=n+32|0;i=n+28|0;break}default:m=n+4|0}j=c[f>>2]|0;f=c[i>>2]|0;k=c[n+12>>2]|0;c[o>>2]=c[m>>2];pr(e,66972,o);i=c[n+24>>2]|0;if(i|0){c[p>>2]=i;pr(e,66989,p)}jr(e,83723)|0;if(f|0){c[r>>2]=f;pr(e,66993,r)}if(k|0){c[s>>2]=k;pr(e,67011,s)}if(!j)j=0;else{c[q>>2]=j;pr(e,67030,q)}}else{c[i>>2]=c[f>>2];pr(e,67047,i);j=0;f=0}i=c[x>>2]|0;if(i|0?(z=c[i+24>>2]|0,z&127|0):0){if(!((f|0)!=0|(z&1|0)==0))pr(e,67065,t);if(!((j|0)!=0|(z&2|0)==0))pr(e,67085,u);if(z&100|0){pr(e,67106,v);if(!(z&4))f=0;else{pr(e,90990,w);f=1}if(z&64){c[y>>2]=f|0?85990:174318;pr(e,67125,y);f=1}if(z&32|0){c[A>>2]=f|0?85990:174318;pr(e,67136,A)}pr(e,83723,B)}if(z&8|0)pr(e,67151,C);if(z&16|0)pr(e,67175,D)}h[E>>3]=+h[(c[x>>2]|0)+16>>3];pr(e,67197,E);f=I+16|0;switch(c[I+48>>2]|0){case 5:{f=c[f>>2]|0;if(SK(f,122122)|0){c[J>>2]=f;pr(e,67215,J)}break}case 1:{E=d[f+1>>0]|0;J=d[f+2>>0]|0;c[F>>2]=d[f>>0];c[F+4>>2]=E;c[F+8>>2]=J;pr(e,67226,F);break}default:va(123221,66407,486,67248)}jr(e,67261)|0;if(b[H>>1]&512){c[K>>2]=ow(c[I+212>>2]|0)|0;pr(e,67263,K);jr(e,67312)|0;qr(e,-G);jr(e,67330)|0}jr(e,pw(c[g>>2]|0,1)|0)|0;if(b[H>>1]&512)pr(e,67333,L);jr(e,67353)|0;l=M;return}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;switch(c|0){case 2:{d=ae(a,b,2)|0;break}case 3:{d=be(a)|0;break}default:d=0}jr(a,66857)|0;_d(a,c,d);jr(a,66866)|0;qr(a,+h[b>>3]);jr(a,66872)|0;c=b+8|0;qr(a,-+h[c>>3]);jr(a,66879)|0;qr(a,+h[b+16>>3]-+h[b>>3]);jr(a,66886)|0;qr(a,+h[b+24>>3]-+h[c>>3]);jr(a,66273)|0;return}function Wd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;switch(d|0){case 2:{e=ae(a,b,c)|0;break}case 3:{e=be(a)|0;break}default:e=0}jr(a,66848)|0;_d(a,d,e);jr(a,66263)|0;e=0;while(1){if((e|0)>=(c|0))break;qr(a,+h[b+(e<<4)>>3]);jr(a,85990)|0;qr(a,-+h[b+(e<<4)+8>>3]);jr(a,87598)|0;e=e+1|0}qr(a,+h[b>>3]);jr(a,85990)|0;qr(a,-+h[b+8>>3]);jr(a,66273)|0;return}function Xd(a,d,e,f,g,h){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;g=c[a+16>>2]|0;switch(h|0){case 2:{f=ae(a,d,e)|0;break}case 3:{f=be(a)|0;break}default:f=0}jr(a,66443)|0;if(b[g+260>>1]&512){jr(a,66449)|0;jr(a,ow(c[g+212>>2]|0)|0)|0;jr(a,66455)|0}_d(a,h,f);jr(a,66460)|0;ce(a,d,e);jr(a,66273)|0;return}function Yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;jr(a,66253)|0;_d(a,0,0);jr(a,66263)|0;d=0;while(1){if((d|0)>=(c|0))break;qr(a,+h[b+(d<<4)>>3]);jr(a,85990)|0;qr(a,-+h[b+(d<<4)+8>>3]);jr(a,87598)|0;d=d+1|0}jr(a,66273)|0;return}function Zd(a,b){a=a|0;b=b|0;jr(a,66247)|0;jr(a,ow(b)|0)|0;jr(a,68307)|0;return}function _d(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+96|0;k=q+48|0;p=q+40|0;n=q+32|0;o=q+24|0;j=q+16|0;g=q+8|0;f=q;m=c[b+16>>2]|0;jr(b,66278)|0;a:do switch(d|0){case 2:{c[f>>2]=e;pr(b,66286,f);break}case 3:{c[g>>2]=e;pr(b,66297,g);break}case 0:{jr(b,120517)|0;break}default:{d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:break a;default:{}}h[j>>3]=+(d&255)/255.0;pr(b,66308,j)}}}while(0);jr(b,66327)|0;e=m+16|0;f=k;g=e;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);d=m+152|0;if(+h[d>>3]!=1.0){jr(b,66338)|0;qr(b,+h[d>>3])}switch(c[m+144>>2]|0){case 1:{c[o>>2]=66378;pr(b,66355,o);break}case 2:{c[n>>2]=66382;pr(b,66355,n);break}default:{}}b:do if((c[m+48>>2]|0)==1){d=a[e+3>>0]|0;switch(d<<24>>24){case -1:case 0:break b;default:{}}h[p>>3]=+(d&255)/255.0;pr(b,66386,p)}while(0);jr(b,83723)|0;l=q;return}function $d(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{jr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){jr(b,122187)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;pr(b,68563,f);break a}default:va(123221,66407,117,66427)}while(0);l=g;return}function ae(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+112|0;o=t+64|0;r=t+56|0;n=t+48|0;m=t+40|0;i=t+32|0;k=t;q=c[41914]|0;c[41914]=q+1;p=c[b+16>>2]|0;f=+(c[p+136>>2]|0)*3.141592653589793/180.0;c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;GB(d,k,e,f,0);c[o>>2]=q;pr(b,66680,o);jr(b,66745)|0;qr(b,+h[k>>3]);jr(b,66750)|0;qr(b,+h[k+8>>3]);jr(b,66757)|0;qr(b,+h[k+16>>3]);jr(b,66764)|0;qr(b,+h[k+24>>3]);jr(b,66771)|0;k=p+140|0;f=+g[k>>2];if(f>0.0){h[i>>3]=f+-.001;pr(b,66776,i)}else jr(b,66552)|0;d=p+56|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);jr(b,66588)|0;a:do if((c[p+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=7;break a}default:{}}h[m>>3]=+(d&255)/255.0;pr(b,84591,m)}else s=7;while(0);if((s|0)==7)jr(b,66603)|0;jr(b,66606)|0;f=+g[k>>2];if(f>0.0){h[n>>3]=f;pr(b,66776,n)}else jr(b,66612)|0;d=p+96|0;e=o;i=d;j=e+40|0;do{c[e>>2]=c[i>>2];e=e+4|0;i=i+4|0}while((e|0)<(j|0));$d(b,o);jr(b,66588)|0;b:do if((c[p+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{s=14;break b}default:{}}h[r>>3]=+(d&255)/255.0;pr(b,84591,r)}else s=14;while(0);if((s|0)==14)jr(b,66603)|0;jr(b,66816)|0;l=t;return q|0}function be(b){b=b|0;var d=0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;k=q+16|0;o=q+8|0;j=q;n=c[41913]|0;c[41913]=n+1;m=c[b+16>>2]|0;r=+(c[m+136>>2]|0)*3.141592653589793/180.0;e=r;if(r==0.0){f=50;d=50}else{f=~~((+I(+e)+1.0)*50.0);d=~~((1.0-+J(+e))*50.0)}c[k>>2]=n;c[k+4>>2]=f;c[k+8>>2]=d;pr(b,66468,k);jr(b,66552)|0;d=m+56|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);jr(b,66588)|0;a:do if((c[m+88>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=6;break a}default:{}}h[j>>3]=+(d&255)/255.0;pr(b,84591,j)}else p=6;while(0);if((p|0)==6)jr(b,66603)|0;jr(b,66606)|0;jr(b,66612)|0;d=m+96|0;f=k;g=d;i=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(i|0));$d(b,k);jr(b,66588)|0;b:do if((c[m+128>>2]|0)==1){d=a[d+3>>0]|0;switch(d<<24>>24){case -1:case 0:{p=10;break b}default:{}}h[o>>3]=+(d&255)/255.0;pr(b,84591,o)}else p=10;while(0);if((p|0)==10)jr(b,66603)|0;jr(b,66648)|0;l=q;return n|0}function ce(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;i=l;l=l+16|0;g=i;e=77;f=0;while(1){if((f|0)>=(d|0))break;c[g>>2]=e;pr(a,66465,g);qr(a,+h[b+(f<<4)>>3]);jr(a,85990)|0;qr(a,-+h[b+(f<<4)+8>>3]);e=(f|0)==0?67:32;f=f+1|0}l=i;return}function de(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;jr(b,67436)|0;jr(b,ow(d)|0)|0;if(e|0){c[h>>2]=ow(e)|0;pr(b,67444,h)}c[i>>2]=f;pr(b,67448,i);d=Im(g,67460)|0;if(d|0?a[d>>0]|0:0){jr(b,87598)|0;jr(b,ow(d)|0)|0}jr(b,83723)|0;l=j;return}function ee(a){a=a|0;var b=0;jr(a,68267)|0;b=a+12|0;jr(a,oe(c[c[c[b>>2]>>2]>>2]|0)|0)|0;jr(a,71030)|0;jr(a,oe(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;jr(a,71040)|0;jr(a,oe(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;jr(a,68283)|0;return}function fe(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[b+16>>2]|0;jr(b,68244)|0;d=d+8|0;if(a[(Dn(c[d>>2]|0)|0)>>0]|0){jr(b,68246)|0;jr(b,oe(Dn(c[d>>2]|0)|0)|0)|0}c[e>>2]=S(c[b+168>>2]|0,c[b+164>>2]|0)|0;pr(b,68255,e);c[41915]=0;l=f;return}function ge(a){a=a|0;c[41915]=1;return}function he(a){a=a|0;c[41915]=-1;return}function ie(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+48|0;i=n+8|0;m=n;f=c[b+16>>2]|0;if(c[f+144>>2]|0?(k=e+4|0,j=~~(+h[(c[k>>2]|0)+16>>3]*+h[b+352>>3]),j|0):0){pe(b);jr(b,68183)|0;g=d+8|0;h[g>>3]=+h[g>>3]-+(j|0)*.55;c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];sr(b,i);jr(b,68197)|0;jr(b,c[e>>2]|0)|0;jr(b,68206)|0;jr(b,68004)|0;g=i;d=f+16|0;f=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(f|0));qe(b,i);jr(b,68208)|0;i=c[k>>2]|0;k=c[i+8>>2]|0;k=c[((k|0)==0?i:k+4|0)>>2]|0;jr(b,83723)|0;jr(b,k)|0;jr(b,83723)|0;c[m>>2]=j;pr(b,68217,m);switch(a[e+48>>0]|0){case 108:{jr(b,68222)|0;break}case 114:{jr(b,68233)|0;break}default:{}}re(b);jr(b,134917)|0}l=n;return}function je(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){n=+h[b>>3];e=b+8|0;m=+h[e>>3];k=+h[b+24>>3]-m;h[b>>3]=n-(+h[b+16>>3]-n);h[e>>3]=m-k;pe(a);jr(a,68169)|0;tr(a,b,2);jr(a,68004)|0;do if(!d)if(!(c[41915]|0)){jr(a,82288)|0;break}else{jr(a,122006)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41915]|0)==1)c[41915]=0;jr(a,68115)|0;qr(a,+h[g+152>>3]);jr(a,68158)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){jr(a,68012)|0;b=c[i>>2]|0}if((b|0)==2)jr(a,68021)|0;re(a);jr(a,134917)|0}l=j;return}function ke(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+48|0;f=j;g=c[a+16>>2]|0;i=g+144|0;if(c[i>>2]|0){pe(a);jr(a,68141)|0;tr(a,b,d);jr(a,68004)|0;do if(!e)if(!(c[41915]|0)){jr(a,82288)|0;break}else{jr(a,122006)|0;break}else{b=f;d=g+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f)}while(0);if((c[41915]|0)==1)c[41915]=0;jr(a,68115)|0;qr(a,+h[g+152>>3]);jr(a,68158)|0;b=f;d=g+16|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));qe(a,f);b=c[i>>2]|0;if((b|0)==1){jr(a,68012)|0;b=c[i>>2]|0}if((b|0)==2)jr(a,68021)|0;re(a);jr(a,134917)|0}l=j;return}function le(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0;m=l;l=l+48|0;i=m;j=c[a+16>>2]|0;k=j+144|0;if(c[k>>2]|0){pe(a);jr(a,67990)|0;tr(a,b,d);jr(a,68004)|0;e=i;f=j+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));qe(a,i);jr(a,68115)|0;qr(a,+h[j+152>>3]);e=c[k>>2]|0;if((e|0)==1){jr(a,68012)|0;e=c[k>>2]|0}if((e|0)==2)jr(a,68021)|0;jr(a,68124)|0;re(a);jr(a,134917)|0}l=m;return}function me(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;g=i;e=c[a+16>>2]|0;h=e+144|0;if(c[h>>2]|0){pe(a);jr(a,67990)|0;tr(a,b,d);jr(a,68004)|0;f=g;b=e+16|0;d=f+40|0;do{c[f>>2]=c[b>>2];f=f+4|0;b=b+4|0}while((f|0)<(d|0));qe(a,g);b=c[h>>2]|0;if((b|0)==1){jr(a,68012)|0;b=c[h>>2]|0}if((b|0)==2)jr(a,68021)|0;re(a);jr(a,134917)|0}l=i;return}function ne(a,b){a=a|0;b=b|0;jr(a,67987)|0;jr(a,oe(b)|0)|0;jr(a,134917)|0;return}function oe(a){a=a|0;return a|0}function pe(b){b=b|0;if(!(a[b+144>>0]|0))jr(b,68112)|0;else jr(b,c[b+148>>2]|0)|0;return}function qe(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{jr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){jr(b,82288)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;pr(b,68563,f);break a}default:va(123221,68030,49,68094)}while(0);l=g;return}function re(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;h=c[a+16>>2]|0;e=h+8|0;switch(c[h+12>>2]|0){case 8:{b=1;d=96289;break}case 10:{b=0;d=96289;break}case 3:case 2:case 9:{b=1;d=96253;break}case 7:case 6:case 11:{b=0;d=96253;break}case 0:{b=1;d=96302;break}case 4:{b=0;d=68066;break}case 1:{b=1;d=96302;break}case 5:{b=0;d=96302;break}default:va(123221,68030,106,68049)}h=c[(c[e>>2]|0)+8>>2]|0;c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=h;pr(a,68078,f);l=g;return}function se(a){a=a|0;var b=0;jr(a,71002)|0;jr(a,71010)|0;b=a+12|0;jr(a,De(c[c[c[b>>2]>>2]>>2]|0)|0)|0;jr(a,71030)|0;jr(a,De(c[(c[c[b>>2]>>2]|0)+4>>2]|0)|0)|0;jr(a,71040)|0;jr(a,De(c[(c[c[b>>2]>>2]|0)+8>>2]|0)|0)|0;jr(a,71043)|0;return}function te(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;i=j+24|0;g=j+16|0;f=j+8|0;e=j;d=c[b+16>>2]|0;c[41919]=~~(+h[b+232>>3]-+h[b+216>>3]);c[41918]=~~(+h[b+224>>3]-+h[b+208>>3]);jr(b,69689)|0;jr(b,69696)|0;d=Dn(c[d+8>>2]|0)|0;if(a[d>>0]|0){jr(b,69765)|0;jr(b,De(d)|0)|0;jr(b,69773)|0}c[e>>2]=S(c[b+168>>2]|0,c[b+164>>2]|0)|0;pr(b,69782,e);jr(b,69802)|0;jr(b,69837)|0;jr(b,69865)|0;jr(b,69871)|0;jr(b,69914)|0;jr(b,69955)|0;jr(b,69974)|0;jr(b,69991)|0;jr(b,70039)|0;jr(b,70092)|0;jr(b,70168)|0;jr(b,70244)|0;jr(b,70253)|0;jr(b,70276)|0;jr(b,70303)|0;jr(b,70356)|0;jr(b,70378)|0;jr(b,70423)|0;jr(b,70435)|0;jr(b,70445)|0;jr(b,70471)|0;jr(b,70356)|0;jr(b,70523)|0;jr(b,70423)|0;jr(b,70435)|0;jr(b,70567)|0;jr(b,70276)|0;jr(b,70303)|0;jr(b,70356)|0;jr(b,70523)|0;jr(b,70423)|0;jr(b,70435)|0;jr(b,70445)|0;jr(b,70471)|0;jr(b,70356)|0;jr(b,70378)|0;jr(b,70423)|0;jr(b,70435)|0;jr(b,70580)|0;jr(b,70588)|0;jr(b,70594)|0;jr(b,70608)|0;jr(b,70616)|0;jr(b,70649)|0;e=(c[41919]|0)+10|0;c[f>>2]=c[41918];c[f+4>>2]=e;pr(b,70726,f);jr(b,70756)|0;jr(b,70765)|0;jr(b,70823)|0;jr(b,70833)|0;jr(b,70898)|0;f=c[41919]|0;c[g>>2]=c[41918];c[g+4>>2]=f;pr(b,70935,g);g=c[41919]|0;c[i>>2]=c[41918];c[i+4>>2]=g;pr(b,70963,i);l=j;return}function ue(a){a=a|0;jr(a,69240)|0;jr(a,69252)|0;jr(a,69260)|0;jr(a,69323)|0;jr(a,69252)|0;jr(a,69368)|0;jr(a,69417)|0;jr(a,69471)|0;jr(a,69252)|0;jr(a,69571)|0;jr(a,69620)|0;jr(a,69252)|0;jr(a,69672)|0;return}function ve(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j+16|0;h=j+8|0;g=j;jr(b,69198)|0;if(d|0?a[d>>0]|0:0){c[g>>2]=De(d)|0;pr(b,69201,g)}if(e|0?a[e>>0]|0:0){c[h>>2]=De(e)|0;pr(b,69212,h)}if(f|0?a[f>>0]|0:0){c[i>>2]=De(f)|0;pr(b,69224,i)}jr(b,69237)|0;l=j;return}function we(a){a=a|0;jr(a,69192)|0;return}function xe(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;A=l;l=l+112|0;y=A+96|0;z=A+88|0;w=A+80|0;q=A+72|0;v=A+64|0;t=A+56|0;s=A+48|0;r=A+40|0;p=A+24|0;o=A+8|0;n=A;x=c[b+16>>2]|0;m=+h[f+32>>3];switch(a[f+48>>0]|0){case 108:{j=+h[e>>3];break}case 114:{j=+h[e>>3]-m;break}default:j=+h[e>>3]-m*.5}g=f+40|0;i=+h[g>>3];u=f+4|0;k=+h[(c[u>>2]|0)+16>>3];if(i<k){i=k*1.1+1.0;h[g>>3]=i}D=j+-8.0;B=+((c[41919]|0)>>>0)-+h[e+8>>3];C=k/5.0+(k<12.0?1.4:2.0);k=C+(B-i);pr(b,68854,n);h[o>>3]=D;h[o+8>>3]=k;pr(b,68791,o);h[p>>3]=m+j+8.0-D;h[p+8>>3]=C+B-k;pr(b,68815,p);jr(b,68889)|0;jr(b,68923)|0;g=c[u>>2]|0;e=c[g+8>>2]|0;if(e){c[r>>2]=c[e+4>>2];pr(b,69013,r);g=c[e+8>>2]|0;if(g|0){c[s>>2]=g;pr(b,69032,s)}g=c[e+12>>2]|0;if(g|0){c[t>>2]=g;pr(b,69049,t)}g=c[e+16>>2]|0;if(g|0){c[v>>2]=g;pr(b,69067,v)}}else{c[q>>2]=c[g>>2];pr(b,69013,q)}h[w>>3]=+h[(c[u>>2]|0)+16>>3];pr(b,69083,w);g=x+16|0;switch(c[x+48>>2]|0){case 5:{g=c[g>>2]|0;if(SK(g,122122)|0){c[z>>2]=g;pr(b,69103,z)}break}case 1:{x=d[g+1>>0]|0;z=d[g+2>>0]|0;c[y>>2]=d[g>>0];c[y+4>>2]=x;c[y+8>>2]=z;pr(b,69113,y);break}default:va(123221,68577,438,69134)}jr(b,69147)|0;jr(b,De(c[f>>2]|0)|0)|0;jr(b,69158)|0;jr(b,69181)|0;l=A;return}function ye(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0;e=l;l=l+32|0;f=e+16|0;j=e;jr(a,68755)|0;m=+h[b>>3];i=+h[b+16>>3]-m;k=+h[b+8>>3];g=+h[b+24>>3]-k;k=+((c[41919]|0)>>>0)-(k+g);h[j>>3]=m-i;h[j+8>>3]=k;pr(a,68791,j);h[f>>3]=i*2.0;h[f+8>>3]=g*2.0;pr(a,68815,f);He(a,d);jr(a,68637)|0;Fe(a);jr(a,68843)|0;l=e;return}function ze(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+24|0;j=m+8|0;g=m;jr(a,68360)|0;n=c[41919]|0;c[g>>2]=c[41918];c[g+4>>2]=n;pr(a,68613,g);He(a,e);jr(a,68637)|0;Fe(a);jr(a,68640)|0;g=d+-1|0;e=0;while(1){if((e|0)>=(d|0))break;i=+h[b+(e<<4)>>3];f=+((c[41919]|0)>>>0)-+h[b+(e<<4)+8>>3];if(!e){jr(a,68667)|0;h[j>>3]=i;h[j+8>>3]=f;pr(a,68733,j);jr(a,68744)|0}else{h[k>>3]=i;h[k+8>>3]=f;pr(a,68733,k)}if((e|0)==(g|0))jr(a,68747)|0;e=e+1|0}jr(a,68476)|0;l=m;return}function Ae(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;f=l;l=l+16|0;e=f;jr(a,68360)|0;h=c[41919]|0;c[e>>2]=c[41918];c[e+4>>2]=h;pr(a,68613,e);He(a,g);jr(a,68637)|0;Fe(a);jr(a,68640)|0;Ie(a,b,d);jr(a,68653)|0;l=f;return}function Be(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0.0;k=l;l=l+48|0;j=k+24|0;i=k+8|0;f=k;jr(a,68360)|0;g=c[41919]|0;c[f>>2]=c[41918];c[f+4>>2]=g;pr(a,68397,f);jr(a,68437)|0;f=d+-1|0;g=b+8|0;e=0;while(1){if((e|0)>=(d|0))break;if(!e){jr(a,68449)|0;m=+((c[41919]|0)>>>0)-+h[g>>3];h[i>>3]=+h[b>>3];h[i+8>>3]=m;pr(a,68453,i);jr(a,68464)|0}else{m=+((c[41919]|0)>>>0)-+h[b+(e<<4)+8>>3];h[j>>3]=+h[b+(e<<4)>>3];h[j+8>>3]=m;pr(a,68453,j)}if((e|0)==(f|0))jr(a,68468)|0;e=e+1|0}jr(a,68472)|0;Fe(a);jr(a,68476)|0;l=k;return}function Ce(a,b){a=a|0;b=b|0;jr(a,68295)|0;jr(a,De(b)|0)|0;jr(a,68307)|0;return}function De(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;e=u;d=c[41916]|0;if(!d){c[41917]=64;d=tw(64)|0;c[41916]=d}s=e+15|0;r=e+14|0;g=0;q=0;o=0;e=0;f=0;a:while(1){n=(o|0)!=0;m=g;p=b;j=e;k=f;b:while(1){if(!p){t=29;break a}b=a[p>>0]|0;if(!(b<<24>>24)){t=29;break a}e=c[41917]|0;if((q|0)>(e+-8|0)){d=e<<1;c[41917]=d;d=vw(c[41916]|0,d)|0;c[41916]=d;d=d+q|0;e=a[p>>0]|0}else e=b;b=p+1|0;switch(e<<24>>24){case 60:{e=4;f=87147;t=24;break b}case 62:{e=4;f=87130;t=25;break b}case 38:{t=11;break b}case 45:{e=5;f=87141;i=m;break b}default:{}}if(n&e<<24>>24==32){t=13;break}switch(e<<24>>24){case 34:{e=6;f=87104;t=24;break b}case 39:{e=5;f=87135;t=25;break b}default:{}}if(e<<24>>24<0){i=127;f=0}else{e=1;f=p;t=24;break}while(1){g=i&255;h=e&255;if(g>>>0>=h>>>0)break;e=h&i&255;i=g>>>1;f=f+1|0}g=(f|0)>1;j=HN(j|0,k|0,6)|0;k=g?f:m;f=IN(e&255|0,0,(g?0:j)|0,(g?0:D)|0)|0;g=D;m=k+-1|0;if((k|0)>1){p=b;j=f;k=g}else{t=19;break}}if((t|0)==11){t=0;f=(Ee(p)|0)==0;e=f?5:1;f=f?87124:p;i=m}else if((t|0)==13){t=0;f=(a[o>>0]|0)==32;e=f?6:1;f=f?87117:p;i=m}else if((t|0)==19){t=0;a[s>>0]=59;e=3;i=r;j=f;k=g;while(1){f=UN(j|0,k|0,10,0)|0;h=i+-1|0;a[i>>0]=f|48;f=j;j=PN(j|0,k|0,10,0)|0;g=k;k=D;o=e;e=e+1|0;if((o|0)>11){t=21;break a}if(!(g>>>0>0|(g|0)==0&f>>>0>9))break;else i=h}f=i+-2|0;a[h>>0]=35;a[f>>0]=38;i=m}else if((t|0)==24){t=0;i=m}else if((t|0)==25){t=0;i=m}h=d+e|0;g=e;while(1){if(!g)break;a[d>>0]=a[f>>0]|0;g=g+-1|0;f=f+1|0;d=d+1|0}g=i;q=e+q|0;o=p;d=h;e=j;f=k}if((t|0)==21){oL(68313,46,1,c[13857]|0)|0;Va(1)}else if((t|0)==29){a[d>>0]=0;l=u;return c[41916]|0}return 0}function Ee(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function Fe(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;k=l;l=l+48|0;d=k+8|0;j=k;i=c[a+16>>2]|0;jr(a,68488)|0;e=d;f=i+16|0;g=e+40|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));Ge(a,d);b=+h[i+152>>3];if(b!=1.0){h[j>>3]=b;pr(a,68506,j)}switch(c[i+144>>2]|0){case 1:{jr(a,68523)|0;break}case 2:{jr(a,68541)|0;break}default:{}}jr(a,68558)|0;l=k;return}function Ge(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0;g=l;l=l+16|0;f=g;a:do switch(c[e+32>>2]|0){case 5:{jr(b,c[e>>2]|0)|0;break}case 1:if(!(a[e+3>>0]|0)){jr(b,120517)|0;break a}else{i=d[e+1>>0]|0;h=d[e+2>>0]|0;c[f>>2]=d[e>>0];c[f+4>>2]=i;c[f+8>>2]=h;pr(b,68563,f);break a}default:va(123221,68577,94,68597)}while(0);l=g;return}function He(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g;if(!b)jr(a,68716)|0;else{d=c[a+16>>2]|0;jr(a,68686)|0;b=f;d=d+56|0;e=b+40|0;do{c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}while((b|0)<(e|0));Ge(a,f);jr(a,68713)|0}l=g;return}function Ie(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0;i=l;l=l+32|0;g=i;e=68667;f=0;while(1){if((f|0)>=(d|0))break;k=+h[b+(f<<4)>>3];j=+((c[41919]|0)>>>0)-+h[b+(f<<4)+8>>3];c[g>>2]=e;h[g+8>>3]=k;h[g+16>>3]=j;pr(a,68670,g);e=(f|0)==0?68683:174318;f=f+1|0}jr(a,83723)|0;l=i;return}function Je(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+16|0;d=b+8|0;e=b;jr(a,73300)|0;jr(a,73315)|0;jr(a,73354)|0;jr(a,73403)|0;c[e>>2]=122122;c[e+4>>2]=73491;pr(a,73472,e);c[d>>2]=122006;c[d+4>>2]=73497;pr(a,73472,d);l=b;return}function Ke(a){a=a|0;var b=0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;b=l;l=l+64|0;d=b+8|0;j=b;c[j>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;pr(a,72253,j);i=+h[a+368>>3]*.5*+h[a+488>>3];g=+h[a+376>>3]*.5*+h[a+496>>3];f=+N(+(i/500.0))*180.0/3.141592653589793*2.0;e=+N(+(g/500.0))*180.0/3.141592653589793*2.0;h[d>>3]=i;h[d+8>>3]=g;h[d+16>>3]=-500.0;h[d+24>>3]=i;h[d+32>>3]=g;h[d+40>>3]=0.0;h[d+48>>3]=(f>e?f:e)*1.2;pr(a,72275,d);jr(a,72422)|0;jr(a,73252)|0;l=b;return}function Le(a){a=a|0;jr(a,72236)|0;return}function Me(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0;f=l;l=l+16|0;h=f;c[h>>2]=b;c[h+4>>2]=d;c[h+8>>2]=e;pr(a,72206,h);g[41920]=+(S(d,-10)|0);l=f;return}function Ne(a){a=a|0;jr(a,72189)|0;return}function Oe(a){a=a|0;jr(a,72171)|0;return}function Pe(a){a=a|0;jr(a,72155)|0;return}function Qe(a){a=a|0;jr(a,72134)|0;g[41920]=+g[41920]+-2.0;return}function Re(a){a=a|0;jr(a,72115)|0;return}function Se(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=Dn(c[(c[a+16>>2]|0)+8>>2]|0)|0;pr(a,72093,d);l=b;return}function Te(a){a=a|0;jr(a,72077)|0;return}function Ue(a){a=a|0;jr(a,72059)|0;g[41920]=+g[41920]+-5.0;return}function Ve(a){a=a|0;jr(a,72043)|0;g[41920]=+g[41920]+5.0;return}function We(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0;r=l;l=l+144|0;o=r+104|0;q=r+56|0;m=r+32|0;j=r+24|0;i=r;p=e+4|0;n=c[p>>2]|0;f=+h[n+16>>3];n=c[n>>2]|0;c[i>>2]=c[e>>2];h[i+8>>3]=f;c[i+16>>2]=n;pr(b,71889,i);g[41921]=+g[41920]+-9.0;i=e+32|0;switch(a[e+48>>0]|0){case 108:{f=+h[d>>3];break}case 114:{f=+h[d>>3]-+h[i>>3];k=5;break}default:{f=+h[d>>3]-+h[i>>3]*.5;k=5}}if((k|0)==5)h[d>>3]=f;u=+h[b+488>>3];t=(f+ +h[b+504>>3])*u;s=(+h[d+8>>3]+ +h[b+512>>3])*+h[b+496>>3];h[j>>3]=u*+h[(c[p>>2]|0)+16>>3];n=af(b,71941,j)|0;f=+(c[b+360>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=f;i=af(b,71158,m)|0;f=+g[41921];h[o>>3]=t;h[o+8>>3]=s;h[o+16>>3]=f;d=af(b,71190,o)|0;j=o;k=(c[b+16>>2]|0)+16|0;m=j+40|0;do{c[j>>2]=c[k>>2];j=j+4|0;k=k+4|0}while((j|0)<(m|0));o=bf(b,o,0.0)|0;e=c[e>>2]|0;c[q>>2]=c[c[p>>2]>>2];h[q+8>>3]=.25;h[q+16>>3]=0.0;c[q+24>>2]=e;c[q+28>>2]=72028;c[q+32>>2]=n;c[q+36>>2]=i;c[q+40>>2]=d;c[q+44>>2]=o;q=af(b,71953,q)|0;jr(b,q)|0;xN(q);xN(i);xN(o);xN(d);xN(n);l=r;return}function Xe(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+240|0;x=z+192|0;y=z+152|0;t=z+128|0;r=z+104|0;o=z+80|0;n=z+48|0;e=z+24|0;m=z;jr(a,71766)|0;g[41921]=+g[41920]+-6.0;j=+h[b>>3];i=+h[a+488>>3];p=(j+ +h[a+504>>3])*i;k=+h[b+8>>3];A=+h[a+496>>3];q=(k+ +h[a+512>>3])*A;j=i*(+h[b+16>>3]-j);k=A*(+h[b+24>>3]-k);s=a+16|0;A=j+k;i=+h[(c[s>>2]|0)+152>>3]/A*.5*5.0;h[m>>3]=j;h[m+8>>3]=A*.25;h[m+16>>3]=k;b=af(a,71126,m)|0;m=a+360|0;A=+(c[m>>2]|0);h[e>>3]=90.0;h[e+8>>3]=0.0;h[e+16>>3]=A;e=af(a,71158,e)|0;A=+g[41921];h[x>>3]=p;h[x+8>>3]=q;h[x+16>>3]=A;f=af(a,71190,x)|0;u=x;v=(c[s>>2]|0)+16|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));v=bf(a,x,0.0)|0;h[n>>3]=1.0;h[n+8>>3]=i;c[n+16>>2]=b;c[n+20>>2]=e;c[n+24>>2]=f;c[n+28>>2]=v;w=af(a,71781,n)|0;jr(a,w)|0;xN(b);xN(e);xN(f);xN(v);xN(w);if(d|0){h[o>>3]=j;h[o+8>>3]=k;h[o+16>>3]=1.0;f=af(a,71126,o)|0;A=+(c[m>>2]|0);h[r>>3]=0.0;h[r+8>>3]=0.0;h[r+16>>3]=A;e=af(a,71158,r)|0;A=+g[41921];h[t>>3]=p;h[t+8>>3]=q;h[t+16>>3]=A;b=af(a,71190,t)|0;u=x;v=(c[s>>2]|0)+56|0;w=u+40|0;do{c[u>>2]=c[v>>2];u=u+4|0;v=v+4|0}while((u|0)<(w|0));x=bf(a,x,0.0)|0;h[y>>3]=0.0;h[y+8>>3]=0.0;h[y+16>>3]=0.0;c[y+24>>2]=f;c[y+28>>2]=e;c[y+32>>2]=b;c[y+36>>2]=x;y=af(a,71827,y)|0;jr(a,y)|0;xN(f);xN(e);xN(b);xN(x);xN(y)}l=z;return}function Ye(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;N=l;l=l+336|0;E=N+296|0;M=N+288|0;L=N+272|0;K=N+264|0;J=N+240|0;G=N+232|0;D=N+208|0;C=N+184|0;A=N+160|0;z=N+152|0;y=N+136|0;x=N+128|0;w=N+96|0;v=N+88|0;u=N+56|0;f=N+48|0;m=N+24|0;k=N;jr(a,71631)|0;g[41921]=+g[41920]+-2.0;s=a+488|0;t=a+496|0;q=+h[t>>3];h[k>>3]=+h[s>>3];h[k+8>>3]=q;h[k+16>>3]=1.0;k=af(a,71126,k)|0;B=a+360|0;q=+(c[B>>2]|0);h[m>>3]=0.0;h[m+8>>3]=0.0;h[m+16>>3]=q;m=af(a,71158,m)|0;q=+g[41921]+-2.0;h[E>>3]=0.0;h[E+8>>3]=0.0;h[E+16>>3]=q;n=af(a,71190,E)|0;F=a+16|0;i=E;j=(c[F>>2]|0)+16|0;r=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(r|0));j=bf(a,E,0.0)|0;c[f>>2]=71253;c[f+4>>2]=d+1;H=a+512|0;I=a+504|0;i=0;f=af(a,71222,f)|0;while(1){o=+h[H>>3];p=+h[I>>3];q=+h[(c[F>>2]|0)+152>>3];if((i|0)>=(d|0))break;o=o+ +h[b+(i<<4)+8>>3];h[u>>3]=p+ +h[b+(i<<4)>>3];h[u+8>>3]=o;h[u+16>>3]=0.0;h[u+24>>3]=q;O=af(a,71267,u)|0;c[v>>2]=f;c[v+4>>2]=O;r=af(a,71296,v)|0;xN(O);xN(f);i=i+1|0;f=r}o=o+ +h[b+8>>3];h[w>>3]=p+ +h[b>>3];h[w+8>>3]=o;h[w+16>>3]=0.0;h[w+24>>3]=q;w=af(a,71267,w)|0;c[x>>2]=f;c[x+4>>2]=w;O=af(a,71296,x)|0;xN(w);xN(f);c[y>>2]=k;c[y+4>>2]=m;c[y+8>>2]=n;c[y+12>>2]=j;y=af(a,71646,y)|0;c[z>>2]=O;c[z+4>>2]=y;O=af(a,71351,z)|0;xN(y);jr(a,O)|0;xN(k);xN(m);xN(n);xN(j);xN(O);if(e|0){q=+h[t>>3];h[A>>3]=+h[s>>3];h[A+8>>3]=q;h[A+16>>3]=1.0;n=af(a,71126,A)|0;q=+(c[B>>2]|0);h[C>>3]=0.0;h[C+8>>3]=0.0;h[C+16>>3]=q;m=af(a,71158,C)|0;q=+g[41921]+-2.0;h[D>>3]=0.0;h[D+8>>3]=0.0;h[D+16>>3]=q;k=af(a,71190,D)|0;i=E;j=(c[F>>2]|0)+56|0;r=i+40|0;do{c[i>>2]=c[j>>2];i=i+4|0;j=j+4|0}while((i|0)<(r|0));j=bf(a,E,.25)|0;c[G>>2]=d;i=0;f=af(a,71691,G)|0;while(1){if((i|0)>=(d|0))break;q=+h[b+(i<<4)+8>>3]+ +h[H>>3];h[J>>3]=+h[b+(i<<4)>>3]+ +h[I>>3];h[J+8>>3]=q;h[J+16>>3]=0.0;G=af(a,71706,J)|0;c[K>>2]=f;c[K+4>>2]=G;O=af(a,71728,K)|0;xN(G);xN(f);i=i+1|0;f=O}c[L>>2]=n;c[L+4>>2]=m;c[L+8>>2]=k;c[L+12>>2]=j;L=af(a,71738,L)|0;c[M>>2]=f;c[M+4>>2]=L;O=af(a,71351,M)|0;xN(L);jr(a,O)|0;xN(n);xN(m);xN(k);xN(j);xN(O)}l=N;return}function Ze(a,b,d,e,f,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0;B=l;l=l+208|0;e=B+160|0;A=B+152|0;z=B+136|0;y=B+128|0;x=B+96|0;w=B+88|0;v=B+56|0;k=B+48|0;s=B+24|0;r=B;jr(a,71558)|0;g[41921]=+g[41920]+-4.0;C=+h[a+496>>3];h[r>>3]=+h[a+488>>3];h[r+8>>3]=C;h[r+16>>3]=1.0;r=af(a,71126,r)|0;C=+(c[a+360>>2]|0);h[s>>3]=0.0;h[s+8>>3]=0.0;h[s+16>>3]=C;s=af(a,71158,s)|0;C=+g[41921]+-2.0;h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=C;t=af(a,71190,e)|0;u=a+16|0;f=e;i=(c[u>>2]|0)+56|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));n=bf(a,e,0.0)|0;c[k>>2]=71572;c[k+4>>2]=d+2;o=a+504|0;p=a+512|0;q=d+-1|0;m=0;e=af(a,71222,k)|0;while(1){if((m|0)>=(d|0))break;f=b+(m<<4)|0;i=b+(m<<4)+8|0;D=+h[i>>3]+ +h[p>>3];C=+h[(c[u>>2]|0)+152>>3];h[v>>3]=+h[f>>3]+ +h[o>>3];h[v+8>>3]=D;h[v+16>>3]=0.0;h[v+24>>3]=C;k=af(a,71267,v)|0;c[w>>2]=e;c[w+4>>2]=k;j=af(a,71296,w)|0;xN(k);xN(e);if((m|0)==0|(m|0)==(q|0)){C=+h[i>>3]+ +h[p>>3];D=+h[(c[u>>2]|0)+152>>3];h[x>>3]=+h[f>>3]+ +h[o>>3];h[x+8>>3]=C;h[x+16>>3]=0.0;h[x+24>>3]=D;k=af(a,71267,x)|0;c[y>>2]=j;c[y+4>>2]=k;e=af(a,71296,y)|0;xN(k);xN(j)}else e=j;m=m+1|0}c[z>>2]=r;c[z+4>>2]=s;c[z+8>>2]=t;c[z+12>>2]=n;b=af(a,71581,z)|0;c[A>>2]=e;c[A+4>>2]=b;d=af(a,71351,A)|0;xN(b);jr(a,d)|0;xN(r);xN(s);xN(t);xN(n);xN(d);l=B;return}function _e(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0.0;v=l;l=l+160|0;e=v+120|0;u=v+112|0;t=v+96|0;s=v+88|0;r=v+56|0;m=v+48|0;n=v+24|0;q=v;jr(a,71110)|0;g[41921]=+g[41920]+-6.0;w=+h[a+496>>3];h[q>>3]=+h[a+488>>3];h[q+8>>3]=w;h[q+16>>3]=1.0;q=af(a,71126,q)|0;w=+(c[a+360>>2]|0);h[n>>3]=0.0;h[n+8>>3]=0.0;h[n+16>>3]=w;n=af(a,71158,n)|0;w=+g[41921];h[e>>3]=0.0;h[e+8>>3]=0.0;h[e+16>>3]=w;o=af(a,71190,e)|0;p=a+16|0;f=e;i=(c[p>>2]|0)+16|0;j=f+40|0;do{c[f>>2]=c[i>>2];f=f+4|0;i=i+4|0}while((f|0)<(j|0));i=bf(a,e,0.0)|0;c[m>>2]=71253;c[m+4>>2]=d;j=a+504|0;k=a+512|0;f=0;e=af(a,71222,m)|0;while(1){if((f|0)>=(d|0))break;y=+h[b+(f<<4)+8>>3]+ +h[k>>3];w=+h[(c[p>>2]|0)+152>>3];h[r>>3]=+h[b+(f<<4)>>3]+ +h[j>>3];h[r+8>>3]=y;h[r+16>>3]=0.0;h[r+24>>3]=w;x=af(a,71267,r)|0;c[s>>2]=e;c[s+4>>2]=x;m=af(a,71296,s)|0;xN(x);xN(e);f=f+1|0;e=m}c[t>>2]=q;c[t+4>>2]=n;c[t+8>>2]=o;c[t+12>>2]=i;t=af(a,71305,t)|0;c[u>>2]=e;c[u+4>>2]=t;x=af(a,71351,u)|0;xN(t);jr(a,x)|0;xN(q);xN(n);xN(o);xN(i);xN(x);l=v;return}function $e(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;pr(a,71091,e);l=d;return}function af(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+1056|0;h=i;e=i+24|0;f=i+8|0;c[f>>2]=d;g=AJ(e,1024,b,f)|0;do if((g|0)>=0)if((g|0)>1023){a=wN(g+1|0)|0;c[f>>2]=d;zJ(a,b,f)|0;break}else{a=mL(e)|0;break}else{a=c[(c[a+12>>2]|0)+16>>2]|0;c[h>>2]=LJ(c[(bJ()|0)>>2]|0)|0;cb[a&31](71536,h);a=mL(174318)|0}while(0);l=i;return a|0}function bf(a,b,e){a=a|0;b=b|0;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+112|0;o=q+104|0;j=q+96|0;i=q+64|0;m=q+48|0;p=q+32|0;n=q+16|0;k=q;g=c[b+32>>2]|0;a:do switch(g|0){case 5:{f=c[b>>2]|0;if(!(vJ(f,121110)|0)){c[k>>2]=71373;h[k+8>>3]=e;f=af(a,71356,k)|0;break a}if(!(vJ(f,118240)|0)){c[n>>2]=71377;h[n+8>>3]=e;f=af(a,71356,n)|0;break a}if(!(vJ(f,116239)|0)){c[p>>2]=71383;h[p+8>>3]=e;f=af(a,71356,p)|0;break a}else{c[m>>2]=f;h[m+8>>3]=e;f=af(a,71356,m)|0;break a}}case 1:{s=+(d[b+1>>0]|0)*.00390625;r=+(d[b+2>>0]|0)*.00390625;h[i>>3]=+(d[b>>0]|0)*.00390625;h[i+8>>3]=s;h[i+16>>3]=r;h[i+24>>3]=e;f=af(a,71388,i)|0;break}default:{p=c[13857]|0;n=c[b>>2]|0;c[j>>2]=g;c[j+4>>2]=n;OL(p,71427,j)|0;va(123221,71477,436,71497)}}while(0);c[o>>2]=f;p=af(a,71514,o)|0;xN(f);l=q;return p|0}function cf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=l;l=l+32|0;d=b+24|0;e=b+16|0;g=b;f=c[a+16>>2]|0;h=c[c[a+12>>2]>>2]|0;j=c[h>>2]|0;i=c[h+4>>2]|0;h=c[h+8>>2]|0;c[g>>2]=73943;c[g+4>>2]=j;c[g+8>>2]=i;c[g+12>>2]=h;pr(a,76562,g);f=Dn(c[f+8>>2]|0)|0;c[e>>2]=73943;c[e+4>>2]=f;pr(a,76594,e);c[d>>2]=73943;pr(a,76608,d);l=b;return}function df(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=73943;pr(a,76510,d);l=b;return}function ef(a){a=a|0;var b=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+304|0;V=W+296|0;U=W+288|0;T=W+272|0;R=W+264|0;Q=W+256|0;P=W+248|0;O=W+240|0;N=W+232|0;M=W+224|0;L=W+216|0;K=W+208|0;J=W+200|0;I=W+192|0;G=W+184|0;F=W+176|0;E=W+168|0;D=W+160|0;C=W+152|0;A=W+144|0;z=W+136|0;y=W+128|0;x=W+120|0;w=W+112|0;v=W+104|0;u=W+96|0;t=W+88|0;s=W+80|0;r=W+72|0;q=W+64|0;p=W+56|0;o=W+48|0;S=W+40|0;B=W+24|0;n=W+16|0;m=W;f=c[a+456>>2]|0;g=c[a+460>>2]|0;i=c[a+464>>2]|0;j=c[a+468>>2]|0;k=a+360|0;a:do if(c[4007]|0){switch(c[k>>2]|0){case 90:case 0:break a;default:{}}rf();c[4007]=0}while(0);e=(+(j|0)-+(g|0))/72.0;b=(+(i|0)-+(f|0))/72.0;k=(c[k>>2]|0)==90;d=k?e:b;e=k?b:e;h[m>>3]=d;h[m+8>>3]=e;pr(a,74130,m);c[n>>2]=73943;pr(a,74145,n);if(d>0.0){b=+jL(d);h[16879]=b;b=b+(3.0-+(~~b|0))}else b=3.0;b=+H(10.0,+b);h[16879]=b;h[B>>3]=b;h[B+8>>3]=b;pr(a,74314,B);c[S>>2]=73943;pr(a,74349,S);c[o>>2]=73943;pr(a,74407,o);c[p>>2]=73943;pr(a,74467,p);c[q>>2]=73943;pr(a,74516,q);c[r>>2]=73943;pr(a,74555,r);c[s>>2]=73943;pr(a,74606,s);c[t>>2]=73943;pr(a,74668,t);c[u>>2]=73943;pr(a,74778,u);c[v>>2]=73943;pr(a,74869,v);c[w>>2]=73943;pr(a,74923,w);c[x>>2]=73943;pr(a,74992,x);pr(a,75028,y);c[z>>2]=73943;pr(a,75153,z);c[A>>2]=73943;pr(a,75182,A);pr(a,75222,C);c[D>>2]=73943;pr(a,75315,D);c[E>>2]=73943;pr(a,75374,E);c[F>>2]=73943;pr(a,75455,F);pr(a,75525,G);c[I>>2]=73943;pr(a,75614,I);c[J>>2]=73943;pr(a,75719,J);c[K>>2]=73943;pr(a,75795,K);c[L>>2]=73943;pr(a,75834,L);c[M>>2]=73943;pr(a,75933,M);c[N>>2]=73943;pr(a,75979,N);pr(a,76068,O);c[P>>2]=73943;pr(a,76109,P);c[Q>>2]=73943;pr(a,76192,Q);c[R>>2]=73943;pr(a,76293,R);h[T>>3]=e;h[T+8>>3]=d;pr(a,76357,T);pr(a,76385,U);pr(a,76393,V);l=W;return}function ff(a){a=a|0;var b=0;b=l;l=l+16|0;pr(a,74123,b);l=b;return}function gf(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0;q=l;l=l+48|0;p=q+24|0;o=q+8|0;n=q;j=+h[e+32>>3];switch(a[e+48>>0]|0){case 108:{i=+h[d>>3];break}case 114:{g=j;f=4;break}default:{g=j*.5;f=4}}if((f|0)==4){i=+h[d>>3]-g;h[d>>3]=i}k=e+4|0;f=c[k>>2]|0;g=+h[f+16>>3];r=d+8|0;m=+h[r>>3]+g/216.0;h[r>>3]=m;i=j/144.0+i;h[d>>3]=i;f=c[f>>2]|0;do if(f){d=c[41922]|0;if(d|0?(vJ(d,f)|0)==0:0)break;c[n>>2]=pf(f)|0;pr(b,74022,n);r=c[k>>2]|0;c[41922]=c[r>>2];g=+h[r+16>>3]}while(0);f=~~g;f=(f|0)>1?f:1;if((f|0)!=(c[41923]|0)){j=+h[16879];c[o>>2]=f;h[o+8>>3]=j;pr(b,74030,o);c[41923]=f}c[p>>2]=qf(c[e>>2]|0)|0;h[p+8>>3]=i;h[p+16>>3]=m;pr(b,74051,p);l=q;return}function hf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[b>>3];k=(+h[b+16>>3]-i)*2.0/72.0;g=+h[b+8>>3];j=(+h[b+24>>3]-g)*2.0/72.0;c[f>>2]=1;c[f+4>>2]=d|0?73964:174318;h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i/72.0;h[f+32>>3]=g/72.0;pr(a,73970,f);l=e;return}function jf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,1);l=e;return}function kf(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0.0,w=0;t=l;l=l+128|0;s=t+112|0;q=t+104|0;p=t+96|0;e=t+88|0;n=t+16|0;o=t;k=c[a+16>>2]|0;j=wN((d*140|0)+140|0)|0;nf(k,t+116|0,t+80|0);v=+h[b>>3];k=n+48|0;h[k>>3]=v;u=+h[b+8>>3];h[n+56>>3]=u;c[e>>2]=~~(v+(v>=0.0?.5:-.5));c[e+4>>2]=~~(u+(u>=0.0?.5:-.5));i=o+8|0;e=j+(yJ(j,73948,e)|0)|0;r=1;g=0;while(1){m=g+3|0;if((m|0)>=(d|0))break;c[n>>2]=c[k>>2];c[n+4>>2]=c[k+4>>2];c[n+8>>2]=c[k+8>>2];c[n+12>>2]=c[k+12>>2];f=1;while(1){if((f|0)==4){f=1;break}w=f+g|0;h[n+(f<<4)>>3]=+h[b+(w<<4)>>3];h[n+(f<<4)+8>>3]=+h[b+(w<<4)+8>>3];f=f+1|0}while(1){if((f|0)==7)break;MA(o,n,3,+(f|0)/6.0,0,0);u=+h[o>>3];v=+h[i>>3];c[p>>2]=~~(u+(u>=0.0?.5:-.5));c[p+4>>2]=~~(v+(v>=0.0?.5:-.5));f=f+1|0;e=e+(yJ(e,73948,p)|0)|0}r=r+6|0;g=m}c[q>>2]=j;pr(a,73955,q);xN(j);f=r+-1|0;e=0;while(1){if((e|0)>=(r|0))break;c[s>>2]=((e|0)%(f|0)|0|0)!=0&1;pr(a,73960,s);e=e+1|0}jr(a,134917)|0;l=t;return}function lf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=l;l=l+16|0;nf(c[a+16>>2]|0,e+8|0,e);of(a,b,d,0);l=e;return}function mf(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=73943;c[e+4>>2]=b;pr(a,73936,e);l=d;return}function nf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0;switch(c[a+144>>2]|0){case 1:{e=10.0;a=1;break}case 2:{e=10.0;a=2;break}default:{e=0.0;a=0}}c[b>>2]=a;h[d>>3]=e;return}function of(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+16|0;i=j+8|0;g=j;f=0;while(1){if((f|0)>=(d|0))break;m=+h[b+(f<<4)>>3];k=+h[b+(f<<4)+8>>3];c[g>>2]=~~(m+(m>=0.0?.5:-.5));c[g+4>>2]=~~(k+(k>=0.0?.5:-.5));pr(a,73948,g);f=f+1|0}if(e|0){k=+h[b>>3];m=+h[b+8>>3];c[i>>2]=~~(k+(k>=0.0?.5:-.5));c[i+4>>2]=~~(m+(m>=0.0?.5:-.5));pr(a,73948,i)}jr(a,134917)|0;l=j;return}function pf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;a:while(1){d=15756;while(1){e=c[d+4>>2]|0;if(!e)break;if(!(vJ(e,b)|0)){g=6;break a}d=d+8|0}c[f>>2]=74104;c[f+4>>2]=b;_l(1,74078,f)|0;d=XL(b,45)|0;if(!d){d=74121;break}a[d>>0]=0}l=h;return d|0}function qf(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;d=c[41924]|0;if(!d){c[41925]=64;d=wN(64)|0;c[41924]=d;e=0}else e=0;while(1){g=b+1|0;f=a[b>>0]|0;if(!(f<<24>>24))break;b=c[41925]|0;if((e|0)>(b+-8|0)){d=b<<1;c[41925]=d;d=zN(c[41924]|0,d)|0;c[41924]=d;d=d+e|0}b=d+1|0;if(f<<24>>24<=-1){a[d>>0]=92;c[h>>2]=f&255;yJ(b,74073,h)|0;b=g;d=d+4|0;e=e+4|0;continue}if(f<<24>>24==92){a[d>>0]=92;e=e+1|0;d=b}a[d>>0]=f;b=g;d=d+1|0;e=e+1|0}a[d>>0]=0;l=i;return c[41924]|0}function rf(){var a=0,b=0;a=l;l=l+16|0;b=a;c[b>>2]=74104;c[b+4>>2]=76501;_l(0,76483,b)|0;l=a;return}function sf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0;e=l;l=l+32|0;f=e+8|0;j=e;b=b+8|0;k=c[b>>2]|0;c[j>>2]=k;c[j+4>>2]=k;pr(a,77081,j);i=(+h[d+16>>3]+ +h[d>>3])*.5;g=(+h[d+24>>3]+ +h[d+8>>3])*.5;c[f>>2]=c[b>>2];h[f+8>>3]=i;h[f+16>>3]=g;pr(a,77123,f);l=e;return}function tf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=l;l=l+48|0;f=e;i=+h[d>>3];k=+h[d+16>>3]-i;g=+h[d+24>>3];j=g-+h[d+8>>3];g=+(~~(+h[a+232>>3]-+h[a+216>>3])>>>0)-g;c[f>>2]=c[b+8>>2];h[f+8>>3]=k;h[f+16>>3]=j;h[f+24>>3]=i;h[f+32>>3]=g;pr(a,77168,f);jr(a,77260)|0;l=e;return}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return}function vf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;t=l;l=l+160|0;s=t+152|0;r=t+136|0;q=t+120|0;k=t+112|0;n=t+104|0;m=t+88|0;j=t+72|0;i=t+64|0;o=t;if(!a)va(96077,77265,212,77284);if(!b)va(96107,77265,213,77284);p=b+8|0;if(!(c[p>>2]|0))va(96110,77265,214,77284);if(c[b+52>>2]|0){c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];b=o+32|0;d=d+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];f=+h[o>>3];h[o+16>>3]=f;h[o+24>>3]=+h[o+40>>3];h[o+48>>3]=+h[b>>3];g=+h[o+8>>3];h[o+56>>3]=g;if(e<<24>>24){pr(a,77305,i);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[j>>3]=+h[o+(b<<4)>>3];h[j+8>>3]=u;pr(a,77308,j);b=b+1|0}h[m>>3]=f;h[m+8>>3]=g;pr(a,77308,m);m=c[p>>2]|0;c[n>>2]=4;c[n+4>>2]=m;pr(a,77315,n)}pr(a,77305,k);b=0;while(1){if((b|0)==4)break;u=+h[o+(b<<4)+8>>3];h[q>>3]=+h[o+(b<<4)>>3];h[q+8>>3]=u;pr(a,77308,q);b=b+1|0}h[r>>3]=f;h[r+8>>3]=g;pr(a,77308,r);r=c[p>>2]|0;c[s>>2]=4;c[s+4>>2]=r;pr(a,77330,s)}l=t;return}function wf(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+112|0;o=p+24|0;n=p+16|0;m=p;g=p+28|0;if(!b)va(96077,77265,153,77346);if(!d)va(96107,77265,154,77346);if(!(c[d+8>>2]|0))va(96110,77265,155,77346);j=d+52|0;k=d+60|0;if(c[j>>2]|0){f=c[k>>2]|0;if((f|0)==84)i=18;else{bb[f&127](d);c[j>>2]=0;c[k>>2]=0;c[d+56>>2]=0;i=10}}else i=10;do if((i|0)==10){if(!((Jr(d)|0)<<24>>24))break;f=gN(c[d+20>>2]|0)|0;if((c[d+24>>2]&-2|0)==6){yK(f,g)|0;g=c[g+36>>2]|0;c[d+56>>2]=g;f=ZL(0,g,1,1,f,0)|0;c[j>>2]=f;a[d+16>>0]=1}else f=c[j>>2]|0;if(f|0)c[k>>2]=84;Kr(d);if(c[j>>2]|0)i=18}while(0);if((i|0)==18){q=+h[e+8>>3]-+(c[d+36>>2]|0);h[m>>3]=+h[e>>3]-+(c[d+32>>2]|0);h[m+8>>3]=q;pr(b,77364,m);if(!(a[d+16>>0]|0)){c[n>>2]=c[d+12>>2];pr(b,77395,n)}else cy(b,d);pr(b,77410,o)}l=p;return}function xf(a){a=a|0;UK(c[a+52>>2]|0,c[a+56>>2]|0)|0;return}function yf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+80|0;f=g+48|0;if(!a)va(96077,77265,121,77420);e=c[a+16>>2]|0;if(!e)va(84881,77265,123,77420);if(!b)va(96107,77265,124,77420);d=b+8|0;if(!(c[d>>2]|0))va(96110,77265,125,77420);if(!(c[e+8>>2]|0))va(123706,77265,128,77420);else{pr(a,77440,g);pr(a,77449,g+8|0);pr(a,77476,g+16|0);pr(a,77501,g+24|0);pr(a,77530,g+32|0);pr(a,77558,g+40|0);c[f>>2]=c[d>>2];pr(a,77565,f);pr(a,77604,g+56|0);pr(a,95790,g+64|0);l=g;return}}function zf(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0.0;i=l;l=l+128|0;g=i+80|0;f=i;if(!a)va(96077,77265,97,77609);if(!b)va(96107,77265,98,77609);e=c[b+8>>2]|0;if(!e)va(96110,77265,99,77609);else{m=+h[d>>3];j=~~(m+(m>=0.0?.5:-.5));m=+h[d+8>>3];b=~~(m+(m>=0.0?.5:-.5));m=+h[d+16>>3];k=~~(m+(m>=0.0?.5:-.5));m=+h[d+24>>3];d=~~(m+(m>=0.0?.5:-.5));c[f>>2]=2;c[f+4>>2]=5;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=-1;c[f+24>>2]=1;c[f+28>>2]=-1;c[f+32>>2]=0;h[f+40>>3]=0.0;c[f+48>>2]=0;c[f+52>>2]=0;c[f+56>>2]=0;c[f+60>>2]=0;c[f+64>>2]=0;c[f+68>>2]=5;c[f+72>>2]=0;c[f+76>>2]=e;pr(a,77628,f);c[g>>2]=j;c[g+4>>2]=b;c[g+8>>2]=j;c[g+12>>2]=d;c[g+16>>2]=k;c[g+20>>2]=d;c[g+24>>2]=k;c[g+28>>2]=b;c[g+32>>2]=j;c[g+36>>2]=b;pr(a,77686,g);l=i;return}}function Af(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0;p=l;l=l+96|0;o=p+56|0;n=p+32|0;m=p;q=+h[d+16>>3];i=+h[d>>3];k=q-i;j=+h[d+24>>3];f=+h[d+8>>3];g=j-f;i=(q+i-k)*.5;if(!a)va(96077,77265,53,77718);if(!b)va(96107,77265,54,77718);e=b+8|0;if(!(c[e>>2]|0))va(96110,77265,55,77718);jr(a,77737)|0;jr(a,c[e>>2]|0)|0;e=a+360|0;f=-((j+f+g)*.5);if(!(c[e>>2]|0)){h[o>>3]=k;h[o+8>>3]=g;h[o+16>>3]=i;h[o+24>>3]=f;pr(a,77866,o)}else{h[m>>3]=g;h[m+8>>3]=k;h[m+16>>3]=i;h[m+24>>3]=f;pr(a,77757,m);c[n>>2]=c[e>>2];h[n+8>>3]=i;h[n+16>>3]=f;pr(a,77836,n)}jr(a,77945)|0;l=p;return}function Bf(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;Cf(b);b=eo(a,b)|0}c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;Df(b);b=Rm(a,b)|0}c=eo(a,c)|0}return}function Cf(a){a=a|0;var b=0,d=0;Oo(a,122257,304,1)|0;TA(a);HB(a,c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&1);a=a+16|0;c[(c[a>>2]|0)+176>>2]=0;b=sw(20)|0;d=c[a>>2]|0;c[d+172>>2]=b;c[d+184>>2]=0;d=sw(20)|0;b=c[a>>2]|0;c[b+180>>2]=d;c[b+200>>2]=0;b=sw(12)|0;d=c[a>>2]|0;c[d+196>>2]=b;c[d+192>>2]=0;d=sw(12)|0;b=c[a>>2]|0;c[b+188>>2]=d;c[b+208>>2]=0;b=sw(12)|0;a=c[a>>2]|0;c[a+204>>2]=b;c[a+216>>2]=1;return}function Df(d){d=d|0;var e=0,f=0,g=0,h=0,i=0;Oo(d,122270,176,1)|0;UA(d)|0;h=AA(d,c[42244]|0,1,0)|0;g=d+16|0;c[(c[g>>2]|0)+156>>2]=h;h=CA(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,c[42238]|0,174318)|0;i=CA(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,c[42238]|0,174318)|0;e=c[g>>2]|0;f=e+154|0;b[f>>1]=1;b[e+168>>1]=1;if((h|0)==(i|0)&(a[h>>0]|0)!=0){b[f>>1]=1e3;i=e+156|0;c[i>>2]=(c[i>>2]|0)*100}if(zk(d)|0){i=c[g>>2]|0;b[i+154>>1]=0;c[i+156>>2]=0}i=(AA(d,c[42264]|0,0,0)|0)&255;a[(c[g>>2]|0)+152>>0]=i;i=(AA(d,c[42245]|0,1,0)|0)&65535;b[(c[g>>2]|0)+170>>1]=i;return}function Ef(a){a=a|0;var b=0,d=0;Ff(c[(c[a+16>>2]|0)+192>>2]|0);d=co(a)|0;while(1){if(!d)break;b=Pm(a,d)|0;while(1){if(!b)break;oB(b);b=Rm(a,b)|0}Gf(d);d=eo(a,d)|0}Hf(a);return}function Ff(b){b=b|0;var d=0,e=0,f=0,g=0;while(1){if(!b)break;f=b+16|0;g=c[(c[f>>2]|0)+164>>2]|0;If(b);d=c[f>>2]|0;if((a[d+156>>0]|0)!=1){b=g;continue}e=c[d+180>>2]|0;if(e){xN(e);d=c[f>>2]|0}e=c[d+172>>2]|0;if(e){xN(e);d=c[f>>2]|0}xN(d);xN(b);b=g}return}function Gf(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+172>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+180>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+188>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+196>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+204>>2]|0;if(d){xN(d);b=c[e>>2]|0}lw(c[b+104>>2]|0);lw(c[(c[e>>2]|0)+108>>2]|0);b=c[(c[e>>2]|0)+8>>2]|0;if(b|0)bb[c[(c[b+4>>2]|0)+4>>2]&127](a);Qo(a,122257)|0;return}function Hf(a){a=a|0;var d=0,e=0,f=0,g=0,h=0;d=Jp(a)|0;while(1){if(!d)break;Hf(d);d=Kp(d)|0}if(Oo(a,122293,0,1)|0){g=a+16|0;d=c[g>>2]|0;e=c[d+184>>2]|0;if(e){xN(e);d=c[g>>2]|0}e=c[d+268>>2]|0;if(e){xN(e);d=c[g>>2]|0}e=c[d+216>>2]|0;if(e){xN(e);d=c[g>>2]|0}e=c[d+196>>2]|0;do if(e|0){f=b[d+236>>1]|0;while(1){if((f|0)>(b[d+238>>1]|0))break;xN(c[e+(f<<6)+12>>2]|0);h=c[g>>2]|0;f=f+1|0;d=h;e=c[h+196>>2]|0}if((b[d+236>>1]|0)==-1){xN(e+-64|0);break}else{xN(e);break}}while(0);if((so(a)|0)!=(a|0)){lw(c[(c[g>>2]|0)+12>>2]|0);Qo(a,122293)|0}}return}function If(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+176>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[d+172>>2]|0)+(a<<2)>>2]|0;Xg(b);xN(c[b+16>>2]|0);xN(b);b=a;d=c[e>>2]|0}b=c[d+184>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;b=c[(c[(c[e>>2]|0)+180>>2]|0)+(a<<2)>>2]|0;Xg(b);xN(c[b+16>>2]|0);xN(b);b=a}return}function Jf(a){a=a|0;if(mn(a)|0)Kf(a);Yx(a);return}function Kf(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+48|0;g=h+32|0;f=h;b=bt(a,-1,8)|0;d=ct(a,0,f)|0;at(a,2,8,f)|0;d=(d|0)==0;e=(b|0)<0;if(e&d)Lf(a);else{if(d)c[f+16>>2]=3;else b=e?8:b;c[f+8>>2]=b;c[f+20>>2]=0;e=ys(a,g,0)|0;b=c[g>>2]|0;do if((b|0)==1){Lf(a);b=0}else{if(c[(c[(c[a+16>>2]|0)+8>>2]|0)+84>>2]|0){Lf(a);b=0;break}c[f+12>>2]=1;d=0;while(1){if((d|0)>=(b|0))break;b=c[e+(d<<2)>>2]|0;Mf(b,a);Lf(b);d=d+1|0;b=c[g>>2]|0}Nf(a);$s(c[g>>2]|0,e,a,f)|0;Of(a);Pf(c[g>>2]|0,e,a);b=0}while(0);while(1){if((b|0)>=(c[g>>2]|0))break;f=e+(b<<2)|0;xN(c[(c[(c[f>>2]|0)+16>>2]|0)+8>>2]|0);Hf(c[f>>2]|0);qo(a,c[f>>2]|0)|0;b=b+1|0}xN(e)}l=h;return}function Lf(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+48|0;k=m+40|0;e=m;i=AA(a,ym(a,0,77960,0)|0,-1,1)|0;FB(a,10);d=yk(a,e)|0;Rf(a,a);Bf(a);f=(i|0)==1;g=e+32|0;h=(i|0)==2;i=(i|0)==3;j=e+28|0;e=e+24|0;while(1){kj(a,d);if(f){d=3;break}if(c[g>>2]|0){_l(0,77966,k)|0;c[e>>2]=0;d=0}uh(a,(d|0)!=0&1);if(h){d=7;break}xi(a,d);if(i){d=9;break}n=(c[j>>2]|0)+-1|0;c[j>>2]=n;if(!((n|0)!=0&(c[e>>2]|0)!=0)){d=11;break}}if((d|0)==3)Sf(a,1);else if((d|0)==7)Sf(a,2);else if((d|0)==9)Sf(a,2);else if((d|0)==11){if(b[(c[a+16>>2]|0)+136>>1]&16)Tf(a);ek(a);Xf(a);if((FA(Im(a,78057)|0)|0)<<24>>24)_k(a)}l=m;return}function Mf(b,d){b=b|0;d=d|0;var e=0,f=0;Oo(b,122293,280,1)|0;e=sw(96)|0;b=c[b+16>>2]|0;c[b+8>>2]=e;d=c[d+16>>2]|0;f=c[d+8>>2]|0;h[e>>3]=+h[f>>3];h[e+24>>3]=+h[f+24>>3];c[b+144>>2]=c[d+144>>2];a[b+115>>0]=a[d+115>>0]|0;c[b+116>>2]=c[d+116>>2];c[b+248>>2]=c[d+248>>2];c[b+252>>2]=c[d+252>>2];c[b+244>>2]=c[d+244>>2];return}function Nf(a){a=a|0;var b=0,d=0,e=0;b=sw((mn(a)|0)<<4)|0;d=co(a)|0;while(1){if(!d)break;e=c[d+16>>2]|0;c[e+132>>2]=b;h[b>>3]=+h[e+16>>3]/72.0;h[b+8>>3]=+h[e+24>>3]/72.0;b=b+16|0;d=eo(a,d)|0}return}function Of(a){a=a|0;var b=0,d=0,e=0,f=0;e=c[(c[(co(a)|0)+16>>2]|0)+132>>2]|0;b=e;d=co(a)|0;while(1){if(!d)break;f=c[d+16>>2]|0;c[f+132>>2]=0;h[f+16>>3]=+h[b>>3]*72.0;h[f+24>>3]=+h[b+8>>3]*72.0;b=b+16|0;d=eo(a,d)|0}xN(e);return}function Pf(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=0;f=0;while(1){if((e|0)>=(a|0))break;i=(c[(c[(c[b+(e<<2)>>2]|0)+16>>2]|0)+180>>2]|0)+f|0;e=e+1|0;f=i}i=d+16|0;c[(c[i>>2]|0)+180>>2]=f;g=sw((f<<2)+4|0)|0;c[(c[i>>2]|0)+184>>2]=g;g=0;e=1;while(1){if((g|0)>=(a|0))break;h=(c[b+(g<<2)>>2]|0)+16|0;f=1;while(1){d=c[h>>2]|0;if((f|0)>(c[d+180>>2]|0))break;d=xs(c[(c[d+184>>2]|0)+(f<<2)>>2]|0)|0;c[(c[(c[i>>2]|0)+184>>2]|0)+(e<<2)>>2]=d;Qf(c[(c[(c[h>>2]|0)+184>>2]|0)+(f<<2)>>2]|0,d);f=f+1|0;e=e+1|0}g=g+1|0}return}function Qf(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;Oo(d,122293,280,1)|0;g=d+16|0;d=(c[g>>2]|0)+16|0;f=b+16|0;b=(c[f>>2]|0)+16|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];c[d+16>>2]=c[b+16>>2];c[d+20>>2]=c[b+20>>2];c[d+24>>2]=c[b+24>>2];c[d+28>>2]=c[b+28>>2];b=c[f>>2]|0;d=c[g>>2]|0;a[d+275>>0]=a[b+275>>0]|0;d=d+48|0;b=b+48|0;e=d+64|0;do{c[d>>2]=c[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(e|0));b=c[(c[f>>2]|0)+180>>2]|0;c[(c[g>>2]|0)+180>>2]=b;d=sw((b<<2)+4|0)|0;c[(c[g>>2]|0)+184>>2]=d;d=1;while(1){e=c[f>>2]|0;if((d|0)>(b|0))break;e=xs(c[(c[e+184>>2]|0)+(d<<2)>>2]|0)|0;c[(c[(c[g>>2]|0)+184>>2]|0)+(d<<2)>>2]=e;Qf(c[(c[(c[f>>2]|0)+184>>2]|0)+(d<<2)>>2]|0,e);d=d+1|0}f=e+12|0;c[(c[g>>2]|0)+12>>2]=c[f>>2];c[f>>2]=0;return}function Rf(a,b){a=a|0;b=b|0;if((so(a)|0)!=(a|0))Oo(a,122293,280,1)|0;if((a|0)==(b|0))c[(c[(so(a)|0)+16>>2]|0)+188>>2]=a;a=Jp(a)|0;while(1){if(!a)break;Rf(a,b);a=Kp(a)|0}return}function Sf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+1040|0;k=m+8|0;j=m;e=m+16|0;f=ym(a,1,80034,174318)|0;g=ym(a,1,78100,174318)|0;h=(b|0)>0;d=(b|0)==1;b=co(a)|0;while(1){if(!b)break;if(h?(i=b+16|0,c[j>>2]=c[(c[i>>2]|0)+232>>2],yJ(e,122203,j)|0,Cm(b,f,e)|0,!d):0){c[k>>2]=c[(c[i>>2]|0)+236>>2];yJ(e,122203,k)|0;Cm(b,g,e)|0}b=eo(a,b)|0}l=m;return}function Tf(a){a=a|0;var b=0,c=0,d=0;c=Ip(a,79538,0)|0;if(c|0){b=co(c)|0;while(1){if(!b)break;d=eo(c,b)|0;dh(a,b);Uf(a,b);Gf(b);po(a,b)|0;b=d}Mp(a,c)|0}return}function Uf(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=c[(c[b+16>>2]|0)+232>>2]|0;i=a+16|0;a=c[(c[i>>2]|0)+196>>2]|0;d=c[a+(j<<6)>>2]|0;h=a+(j<<6)+4|0;g=0;e=0;while(1){if((e|0)>=(d|0)){f=7;break}f=c[(c[h>>2]|0)+(e<<2)>>2]|0;e=e+1|0;if((f|0)==(b|0)){f=4;break}else g=f}if((f|0)==4){while(1){if((e|0)>=(d|0))break;f=c[a+(j<<6)+4>>2]|0;c[f+(e+-1<<2)>>2]=c[f+(e<<2)>>2];f=c[(c[i>>2]|0)+196>>2]|0;e=e+1|0;d=c[f+(j<<6)>>2]|0;a=f;f=4}c[a+(j<<6)>>2]=d+-1}else if((f|0)==7?(g|0)!=(b|0):0)va(78066,78073,248,78083);return}function Vf(a){a=a|0;return c[(c[(so(a)|0)+16>>2]|0)+188>>2]|0}function Wf(b,c){b=b|0;c=c|0;var d=0;d=a[b+28>>0]|0;if(a[c+28>>0]|0)if(d<<24>>24){d=~~(+h[b>>3]-+h[c>>3]);if(!d)d=~~(+h[b+8>>3]-+h[c+8>>3])}else d=-1;else d=d<<24>>24!=0&1;return d|0}function Xf(a){a=a|0;Yf(a,1);return}function Yf(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;_=l;l=l+656|0;P=_+592|0;O=_+552|0;g=_+544|0;U=_+96|0;V=_;Z=_+632|0;W=d+16|0;Y=b[(c[W>>2]|0)+136>>1]&14;Q=Y&65535;R=U+16|0;c[R>>2]=_+368;S=V+16|0;c[S>>2]=_+192;do if(Y<<16>>16){T=Y<<16>>16==4;f=d+60|0;do if(T){Zf(d);if(!(a[(c[(c[f>>2]|0)+16>>2]|0)+113>>0]&1))C=9;else{_l(0,78106,g)|0;C=9}}else if(Y<<16>>16==8){Zf(d);if(!(a[(c[(c[f>>2]|0)+16>>2]|0)+113>>0]&1)){IB(d,0);n=0;m=0;k=0;break}else{_f(d);IB(d,1);n=0;m=0;k=0;break}}else C=9;while(0);if((C|0)==9){Yk(d);if(iy()|0)break;X=sw(96)|0;L=c[(c[W>>2]|0)+248>>2]|0;c[Z+8>>2]=(L|0)/4|0;c[Z+12>>2]=L;q=sw(512)|0;G=Z+4|0;c[G>>2]=0;c[Z>>2]=0;j=c[W>>2]|0;D=b[j+236>>1]|0;E=0;M=0;N=q;F=q;m=q;n=q;p=q;I=0;J=0;a:while(1){if((D|0)>(b[j+238>>1]|0))break;r=c[j+196>>2]|0;i=c[r+(D<<6)>>2]|0;H=i+E|0;g=c[r+(D<<6)+4>>2]|0;f=c[g>>2]|0;if(!f)f=I;else{o=+(I|0);f=c[f+16>>2]|0;z=+h[f+16>>3]-+h[f+88>>3];f=~~(o<z?o:z)}if((i|0)!=0?(K=c[g+(i+-1<<2)>>2]|0,(K|0)!=0):0){o=+(J|0);g=c[K+16>>2]|0;z=+h[g+16>>3]+ +h[g+96>>3];g=~~(o>z?o:z)}else g=J;B=f+-16|0;A=g+16|0;y=0;u=M;v=N;s=j;w=F;k=m;g=q;f=r;while(1){if((y|0)>=(i|0))break;q=c[(c[f+(D<<6)+4>>2]|0)+(y<<2)>>2]|0;x=q+16|0;f=c[x>>2]|0;i=c[f+112>>2]|0;if(i){i=i+16|0;j=c[(c[i>>2]|0)+96>>2]|0;if(!j){C=21;break a}t=j+56|0;f=f+16|0;c[t>>2]=c[f>>2];c[t+4>>2]=c[f+4>>2];c[t+8>>2]=c[f+8>>2];c[t+12>>2]=c[f+12>>2];a[(c[(c[i>>2]|0)+96>>2]|0)+81>>0]=1;f=c[x>>2]|0}if((a[f+156>>0]|0)!=0?(fb[c[17228>>2]&31](q)|0)<<24>>24==0:0){r=u;f=v;j=w;i=p}else{t=0;r=u;s=v;j=w;C=25}b:do if((C|0)==25){while(1){C=0;q=c[x>>2]|0;i=c[(c[q+180>>2]|0)+(t<<2)>>2]|0;if(!i)break;switch(a[(c[i+16>>2]|0)+112>>0]|0){case 6:case 4:{f=r;i=s;break}default:{$f(i,1,16,64);f=r+1|0;c[s+(r<<2)>>2]=i;if(!(f&127)){g=vw(g,(r<<2)+516|0)|0;i=g;j=g;k=g;n=g;p=g}else i=s}}t=t+1|0;r=f;s=i;C=25}f=c[q+188>>2]|0;c:do if(!f)i=p;else{t=0;i=p;while(1){f=c[f+(t<<2)>>2]|0;if(!f)break c;$f(f,2,0,128);p=r+1|0;c[s+(r<<2)>>2]=f;if(!(p&127)){g=vw(i,(r<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=s;q=c[x>>2]|0;t=t+1|0;r=p;s=f;f=c[q+188>>2]|0}}while(0);f=c[q+204>>2]|0;if(!f)f=s;else{if(!(a[q+156>>0]|0)){w=q+96|0;z=+h[w>>3];t=q+240|0;h[w>>3]=+h[t>>3];h[t>>3]=z;t=0;q=s}else{t=0;q=s}while(1){f=c[f+(t<<2)>>2]|0;if(!f){f=q;break b}$f(f,0,0,128);p=r+1|0;c[q+(r<<2)>>2]=f;if(!(p&127)){g=vw(n,(r<<2)+516|0)|0;f=g;j=g;k=g;n=g;i=g}else f=q;t=t+1|0;r=p;q=f;f=c[(c[x>>2]|0)+204>>2]|0}}}while(0);s=c[W>>2]|0;x=c[s+196>>2]|0;y=y+1|0;u=r;v=f;w=j;p=i;i=c[x+(D<<6)>>2]|0;f=x}D=D+1|0;E=H;M=u;N=v;F=w;j=s;m=k;q=g;I=B;J=A}if((C|0)==21)va(78174,78187,313,78200);c[Z>>2]=I;c[G>>2]=J;AK(F,M,4,10);c[X+84>>2]=sw((E<<5)+11520|0)|0;c[Z+16>>2]=sw(D<<5)|0;d:do if(Y<<16>>16==2){f=(c[W>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break d;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);f=c[i>>2]|0}f=f+164|0}}while(0);B=V+48|0;C=V+-48|0;D=U+48|0;E=U+-48|0;A=V+16|0;z=+(L|0);y=0;e:while(1){if((y|0)>=(M|0))break;v=N+(y<<2)|0;s=c[v>>2]|0;t=cg(s)|0;u=s+16|0;g=c[u>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?t:s;f=g;g=c[g+16>>2]|0}else f=s;i=f+16|0;if(c[g+164>>2]&32){g=c[R>>2]|0;MN(g|0,c[i>>2]|0,176)|0;n=U;p=f;q=n+48|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));c[R>>2]=g;p=c[f>>2]&3;n=c[U>>2]&3;c[((n|0)==3?U:D)+40>>2]=c[((p|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?U:E)+40>>2]=c[((p|0)==3?f:f+48|0)+40>>2];n=g+16|0;p=(c[i>>2]|0)+56|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));n=g+56|0;p=(c[i>>2]|0)+16|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));a[g+112>>0]=1;c[g+116>>2]=f;f=U}r=f+16|0;x=1;f=y;while(1){w=f+1|0;if((w|0)>=(M|0))break;j=N+(w<<2)|0;f=c[j>>2]|0;if((t|0)!=(cg(f)|0))break;if(!(a[(c[u>>2]|0)+113>>0]|0)){k=f+16|0;g=c[k>>2]|0;if(!(a[g+44>>0]|0)){g=(a[g+84>>0]|0)==0?t:f;f=g;g=c[g+16>>2]|0}i=f+16|0;if(c[g+164>>2]&32){g=c[S>>2]|0;MN(g|0,c[i>>2]|0,176)|0;n=V;p=f;q=n+48|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));c[S>>2]=g;p=c[f>>2]&3;n=c[V>>2]&3;c[((n|0)==3?V:B)+40>>2]=c[((p|0)==2?f:f+-48|0)+40>>2];c[((n|0)==2?V:C)+40>>2]=c[((p|0)==3?f:f+48|0)+40>>2];n=g+16|0;p=(c[i>>2]|0)+56|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));n=g+56|0;p=(c[i>>2]|0)+16|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));a[g+112>>0]=1;c[g+116>>2]=f;g=c[A>>2]|0}i=c[r>>2]|0;f=g+16|0;n=O;p=i+16|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));n=P;p=f;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));if(Wf(O,P)|0)break;f=g+56|0;n=O;p=i+56|0;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));n=P;p=f;q=n+40|0;do{c[n>>2]=c[p>>2];n=n+4|0;p=p+4|0}while((n|0)<(q|0));if(Wf(O,P)|0)break;L=c[u>>2]|0;if((c[L+164>>2]&15|0)==2?(c[L+96>>2]|0)!=(c[(c[k>>2]|0)+96>>2]|0):0)break;if(c[(c[(c[j>>2]|0)+16>>2]|0)+164>>2]&64|0)break}x=x+1|0;f=w}if(T){if((x|0)==1)f=P;else f=sw(x<<2)|0;c[f>>2]=cg(c[v>>2]|0)|0;g=1;while(1){if((g|0)>=(x|0))break;c[f+(g<<2)>>2]=c[v+(g<<2)>>2];g=g+1|0}ry(d,f,x,Q,17224);if((x|0)>1)xN(f);y=w;continue}f=c[s>>2]&3;L=c[((f|0)==3?s:s+48|0)+40>>2]|0;f=c[((f|0)==2?s:s+-48|0)+40>>2]|0;g=c[L+16>>2]|0;n=c[g+232>>2]|0;if((L|0)!=(f|0))if((n|0)==(c[(c[f+16>>2]|0)+232>>2]|0)){dg(d,Z,X,N,y,x,Q);y=w;continue}else{eg(d,Z,X,N,y,x,Q);y=w;continue}j=c[W>>2]|0;f=j+196|0;k=n+-1|0;i=g+24|0;do if((n|0)==(b[j+238>>1]|0))if((n|0)>0){f=~~(+h[(c[(c[c[(c[f>>2]|0)+(k<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[i>>3]);break}else{f=~~+h[g+80>>3];break}else{g=c[f>>2]|0;o=+h[i>>3];f=~~(o-+h[(c[(c[c[g+(n+1<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]);if((n|0)!=(b[j+236>>1]|0)){L=~~(+h[(c[(c[c[g+(k<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-o);f=(L|0)<(f|0)?L:f}}while(0);Oz(X,N,y,x,z,+((f|0)/2|0|0),17224);f=0;while(1){if((f|0)>=(x|0)){y=w;continue e}g=c[(c[(c[N+(f+y<<2)>>2]|0)+16>>2]|0)+96>>2]|0;if(g|0)_A(d,g);f=f+1|0}}f=(c[W>>2]|0)+192|0;while(1){g=c[f>>2]|0;if(!g)break;i=g+16|0;f=c[i>>2]|0;if((a[f+156>>0]|0)==1?(c[f+104>>2]|0)!=0:0){bg(g);_A(d,c[(c[i>>2]|0)+104>>2]|0);f=c[i>>2]|0}f=f+164|0}if(!e){n=X;k=X}else{fg(d);n=X;k=X}}f:do if((c[42274]|0)!=0|(c[42275]|0)!=0?(c[42280]|0)!=0|(c[42279]|0)!=0:0){j=co(d)|0;while(1){if(!j)break f;g:do if(c[42274]|0){f=Sm(d,j)|0;while(1){if(!f)break g;g=f+-48|0;i=(c[f>>2]&3|0)==2?f:g;if(c[(c[i+16>>2]|0)+100>>2]|0){Wz(i,1)|0;_A(d,c[(c[((c[f>>2]&3|0)==2?f:g)+16>>2]|0)+100>>2]|0)}f=Tm(d,f)|0}}while(0);h:do if(c[42275]|0){f=Pm(d,j)|0;while(1){if(!f)break h;g=f+16|0;if(c[(c[g>>2]|0)+104>>2]|0?Wz(f,0)|0:0)_A(d,c[(c[g>>2]|0)+104>>2]|0);f=Rm(d,f)|0}}while(0);j=eo(d,j)|0}}while(0);switch(Y&15){case 4:case 8:break;default:{xN(m);xN(c[n+84>>2]|0);xN(k);xN(c[Z+16>>2]|0);jy()}}c[42193]=1;c[42194]=1}while(0);l=_;return}function Zf(a){a=a|0;var b=0,d=0,e=0.0,f=0;b=co(a)|0;while(1){if(!b)break;d=c[b+16>>2]|0;if(c[d+204>>2]|0){f=d+96|0;e=+h[f>>3];d=d+240|0;h[f>>3]=+h[d>>3];h[d>>3]=e}b=eo(a,b)|0}return}function _f(b){b=b|0;var d=0,e=0,f=0,g=0;d=(c[b+16>>2]|0)+192|0;a:while(1){f=c[d>>2]|0;if(!f){d=12;break}g=f+16|0;d=c[g>>2]|0;do if((a[d+156>>0]|0)==1){e=c[d+112>>2]|0;if(!e){e=c[d+104>>2]|0;if(!e)break;bg(f);d=e}else{e=c[(c[e+16>>2]|0)+96>>2]|0;if(!e){d=6;break a}f=e+56|0;d=d+16|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];a[e+81>>0]=1;d=e}_A(b,d);d=c[g>>2]|0}while(0);d=d+164|0}if((d|0)==6)va(78374,78187,234,78393);else if((d|0)==12)return}function $f(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;h=b+-48|0;i=b+48|0;j=b+16|0;do if(!d){g=c[b>>2]&3;d=c[((g|0)==3?b:i)+40>>2]|0;g=c[((g|0)==2?b:h)+40>>2]|0;if((d|0)!=(g|0)){d=(c[(c[d+16>>2]|0)+232>>2]|0)==(c[(c[g+16>>2]|0)+232>>2]|0)?2:1;break}d=c[j>>2]|0;if(!(a[d+44>>0]|0))d=(a[d+84>>0]|0)==0?8:4;else d=4}while(0);a:do if(!e)switch(d|0){case 1:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)<(c[(c[(c[((e|0)==2?b:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)?16:32;break a}case 2:{e=c[b>>2]&3;e=(c[(c[(c[((e|0)==3?b:i)+40>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[((e|0)==2?b:h)+40>>2]|0)+16>>2]|0)+236>>2]|0)?16:32;break a}default:{e=16;break a}}while(0);c[(c[j>>2]|0)+164>>2]=d|f|e;return}function ag(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+624|0;y=C+584|0;x=C+544|0;r=C+368|0;s=C+96|0;u=C;t=s+16|0;c[t>>2]=r;v=u+16|0;c[v>>2]=C+192;B=c[b>>2]|0;A=c[d>>2]|0;w=B+16|0;p=c[w>>2]|0;d=c[p+164>>2]|0;e=d&15;z=A+16|0;b=c[z>>2]|0;f=c[b+164>>2]&15;do if((f|0)==(e|0)){o=cg(B)|0;q=cg(A)|0;m=c[o>>2]|0;f=m&3;e=c[(c[((f|0)==3?o:o+48|0)+40>>2]|0)+16>>2]|0;f=c[(c[((f|0)==2?o:o+-48|0)+40>>2]|0)+16>>2]|0;g=(c[e+232>>2]|0)-(c[f+232>>2]|0)|0;n=c[q>>2]|0;k=n&3;j=c[(c[((k|0)==3?q:q+48|0)+40>>2]|0)+16>>2]|0;k=c[(c[((k|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0;i=(c[j+232>>2]|0)-(c[k+232>>2]|0)|0;g=(g|0)>-1?g:0-g|0;i=(i|0)>-1?i:0-i|0;if((g|0)!=(i|0)){b=g-i|0;break}f=~~(+h[e+16>>3]-+h[f+16>>3]);f=(f|0)>-1?f:0-f|0;e=~~(+h[j+16>>3]-+h[k+16>>3]);e=(e|0)>-1?e:0-e|0;if((f|0)!=(e|0)){b=f-e|0;break}f=m>>>4;e=n>>>4;if((f|0)!=(e|0)){b=f-e|0;break}if(!(a[p+44>>0]|0)){d=(a[p+84>>0]|0)==0?o:B;f=d;d=c[(c[d+16>>2]|0)+164>>2]|0}else f=B;e=f+16|0;if(d&32){MN(r|0,c[e>>2]|0,176)|0;g=s;i=f;j=g+48|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));c[t>>2]=r;i=c[f>>2]&3;g=c[s>>2]&3;c[((g|0)==3?s:s+48|0)+40>>2]=c[((i|0)==2?f:f+-48|0)+40>>2];c[((g|0)==2?s:s+-48|0)+40>>2]=c[((i|0)==3?f:f+48|0)+40>>2];g=r+16|0;i=(c[e>>2]|0)+56|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));g=r+56|0;i=(c[e>>2]|0)+16|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));a[r+112>>0]=1;c[r+116>>2]=f;f=s;b=c[z>>2]|0}if(!(a[b+44>>0]|0)){b=(a[b+84>>0]|0)==0?q:A;e=b;b=c[b+16>>2]|0}else e=A;d=e+16|0;if(!(c[b+164>>2]&32))e=b;else{b=c[v>>2]|0;MN(b|0,c[d>>2]|0,176)|0;g=u;i=e;j=g+48|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));c[v>>2]=b;i=c[e>>2]&3;g=c[u>>2]&3;c[((g|0)==3?u:u+48|0)+40>>2]=c[((i|0)==2?e:e+-48|0)+40>>2];c[((g|0)==2?u:u+-48|0)+40>>2]=c[((i|0)==3?e:e+48|0)+40>>2];g=b+16|0;i=(c[d>>2]|0)+56|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));g=b+56|0;i=(c[d>>2]|0)+16|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));a[b+112>>0]=1;c[b+116>>2]=e;e=c[u+16>>2]|0}d=c[f+16>>2]|0;b=e+16|0;g=x;i=d+16|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));g=y;i=b;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));b=Wf(x,y)|0;if(!b){b=e+56|0;g=x;i=d+56|0;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));g=y;i=b;j=g+40|0;do{c[g>>2]=c[i>>2];g=g+4|0;i=i+4|0}while((g|0)<(j|0));b=Wf(x,y)|0;if(!b){d=c[(c[w>>2]|0)+164>>2]&192;b=c[(c[z>>2]|0)+164>>2]&192;if((d|0)==(b|0)){b=((c[B>>2]|0)>>>4)-((c[A>>2]|0)>>>4)|0;break}else{b=d-b|0;break}}}}else b=f-e|0;while(0);l=C;return b|0}function bg(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;f=b+16|0;d=c[f>>2]|0;if(c[d+176>>2]|0){d=c[d+180>>2]|0;while(1){d=(c[d>>2]|0)+16|0;e=c[d>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}e=c[e+96>>2]|0;g=+h[e+24>>3];i=+h[e+32>>3];e=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=c[f>>2]|0;f=c[(c[d>>2]|0)+96>>2]|0;h[f+56>>3]=+h[b+16>>3]+(e?i:g)*.5;h[f+64>>3]=+h[b+24>>3];a[f+81>>0]=1}return}function cg(a){a=a|0;var b=0,d=0;while(1){b=c[a+16>>2]|0;d=c[b+172>>2]|0;if(!d)break;else a=d}while(1){b=c[b+116>>2]|0;if(!b)break;a=b;b=c[b+16>>2]|0}return a|0}function dg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0.0,E=0.0,F=0.0,G=0.0;B=l;l=l+1712|0;x=B+1664|0;o=B+1488|0;u=B+1392|0;A=B+1696|0;y=B+696|0;z=B;n=u+16|0;c[n>>2]=o;s=c[f+(g<<2)>>2]|0;t=s+16|0;k=c[t>>2]|0;v=a[k+113>>0]|0;if(c[k+164>>2]&32){MN(o|0,k|0,176)|0;p=u;q=s;r=p+48|0;do{c[p>>2]=c[q>>2];p=p+4|0;q=q+4|0}while((p|0)<(r|0));c[n>>2]=o;p=c[u>>2]&3;c[((p|0)==3?u:u+48|0)+40>>2]=c[((c[s>>2]&3|0)==2?s:s+-48|0)+40>>2];c[((p|0)==2?u:u+-48|0)+40>>2]=c[((c[s>>2]&3|0)==3?s:s+48|0)+40>>2];p=o+16|0;q=(c[t>>2]|0)+56|0;r=p+40|0;do{c[p>>2]=c[q>>2];p=p+4|0;q=q+4|0}while((p|0)<(r|0));k=c[n>>2]|0;p=k+56|0;q=(c[t>>2]|0)+16|0;r=p+40|0;do{c[p>>2]=c[q>>2];p=p+4|0;q=q+4|0}while((p|0)<(r|0));a[k+112>>0]=1;c[k+116>>2]=s;s=u}k=1;while(1){if((k|0)>=(i|0)){u=6;break}if(!(a[(c[(c[f+(k+g<<2)>>2]|0)+16>>2]|0)+113>>0]|0))k=k+1|0;else{u=7;break}}a:do if((u|0)==6)if(!(v<<24>>24)){k=c[s+16>>2]|0;if(c[k+96>>2]|0){Dg(b,d,e,s,j);break}n=s+48|0;o=s+-48|0;if((j|0)==2){A=c[s>>2]&3;Eg(c[((A|0)==3?s:n)+40>>2]|0,c[((A|0)==2?s:o)+40>>2]|0,f,g,i,2);break}r=a[k+49>>0]|0;v=a[k+89>>0]|0;t=(j|0)==10;if(!(r<<24>>24==1&v<<24>>24!=4)?!(r<<24>>24!=4&v<<24>>24==1):0){p=c[s>>2]&3;q=c[((p|0)==3?s:n)+40>>2]|0;p=c[((p|0)==2?s:o)+40>>2]|0;k=c[q+16>>2]|0;n=c[k+232>>2]|0;o=c[b+16>>2]|0;if((n|0)>0){j=c[o+196>>2]|0;v=n+~(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1)|0;m=+h[(c[(c[c[j+(v<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[j+(v<<6)+16>>3]-+h[k+24>>3]-+h[j+(n<<6)+24>>3]}else m=+(c[o+252>>2]|0);C=+(i+1|0);w=+(c[d+12>>2]|0)/C;m=m/C;Gg(b,d,e,q,s,y,1);Gg(b,d,e,p,s,z,0);p=y+52|0;q=z+52|0;r=e+80|0;k=0;while(1){if((k|0)>=(i|0))break a;s=c[f+(k+g<<2)>>2]|0;o=c[p>>2]|0;n=o+-1|0;G=+h[y+56+(n<<5)>>3];F=+h[y+56+(n<<5)+16>>3];C=+h[y+56+(n<<5)+24>>3];h[16880]=G;h[16881]=C;k=k+1|0;E=+(k|0);D=w*E;h[16882]=D+F;C=m*E+C;h[16883]=C;h[16884]=G;h[16885]=C;n=(c[q>>2]|0)+-1|0;G=+h[z+56+(n<<5)+16>>3];h[16886]=G;h[16887]=m+C;E=+h[z+56+(n<<5)>>3];F=+h[z+56+(n<<5)+24>>3];h[16890]=G;h[16889]=F;h[16888]=E-D;h[16891]=C;n=0;while(1){if((n|0)>=(o|0)){n=0;break}o=y+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Iz(e,x);n=n+1|0;o=c[p>>2]|0}while(1){if((n|0)==3)break;d=135040+(n<<5)|0;c[x>>2]=c[d>>2];c[x+4>>2]=c[d+4>>2];c[x+8>>2]=c[d+8>>2];c[x+12>>2]=c[d+12>>2];c[x+16>>2]=c[d+16>>2];c[x+20>>2]=c[d+20>>2];c[x+24>>2]=c[d+24>>2];c[x+28>>2]=c[d+28>>2];Iz(e,x);n=n+1|0}o=c[q>>2]|0;while(1){n=o+-1|0;if((o|0)<=0)break;o=z+56+(n<<5)|0;c[x>>2]=c[o>>2];c[x+4>>2]=c[o+4>>2];c[x+8>>2]=c[o+8>>2];c[x+12>>2]=c[o+12>>2];c[x+16>>2]=c[o+16>>2];c[x+20>>2]=c[o+20>>2];c[x+24>>2]=c[o+24>>2];c[x+28>>2]=c[o+28>>2];Iz(e,x);o=n}if(t)n=ky(e,A)|0;else n=qy(e,A)|0;o=c[A>>2]|0;if(!o)break a;Gz(s,c[((c[s>>2]&3|0)==2?s:s+-48|0)+40>>2]|0,n,o,17224);c[r>>2]=0}}Fg(b,d,e,f,g,i,s,t&1)}else u=7;while(0);if((u|0)==7)Cg(b,f,g,i,s,j);l=B;return}function eg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;da=l;l=l+2576|0;T=da+2528|0;aa=da+2568|0;k=da+2352|0;n=da+2176|0;w=da+1904|0;Z=da+1808|0;ba=da+1712|0;U=da+1016|0;V=da+320|0;W=da+256|0;Y=da+2564|0;_=da+2560|0;B=da+288|0;C=da+224|0;M=da+192|0;N=da+160|0;O=da+128|0;P=da+96|0;Q=da+64|0;R=da+32|0;X=da;t=w+16|0;c[t>>2]=k;o=Z+16|0;c[o>>2]=n;ca=ba+16|0;c[ca>>2]=da+2e3;if(!(c[41926]|0)){c[41926]=tw(32e3)|0;c[41927]=tw(32e3)|0;c[41928]=2e3;c[41929]=2e3}x=c[f+(g<<2)>>2]|0;K=c[x>>2]&3;p=x+48|0;q=x+-48|0;K=(c[(c[(c[((K|0)==3?x:p)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((K|0)==2?x:q)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;u=w+-48|0;$=Z+-48|0;r=x+16|0;s=w+48|0;if((((K|0)>-1?K:0-K|0)|0)<=1){k=c[r>>2]|0;if(!(c[k+164>>2]&32)){w=x;n=0}else{n=c[t>>2]|0;MN(n|0,k|0,176)|0;y=w;z=x;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));c[t>>2]=n;y=c[w>>2]&3;c[((y|0)==3?w:s)+40>>2]=c[((c[x>>2]&3|0)==2?x:q)+40>>2];c[((y|0)==2?w:u)+40>>2]=c[((c[x>>2]&3|0)==3?x:p)+40>>2];y=n+16|0;z=(c[r>>2]|0)+56|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));k=c[t>>2]|0;y=k+56|0;z=(c[r>>2]|0)+16|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));a[k+112>>0]=1;n=0;L=12}}else{MN(k|0,c[r>>2]|0,176)|0;y=w;z=x;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));y=w+48|0;z=p;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));c[t>>2]=k;k=c[r>>2]|0;if(!(c[k+164>>2]&32)){MN(n|0,k|0,176)|0;y=Z;z=x;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));c[o>>2]=n;o=c[w>>2]|0;c[((o&3|0)==3?w:s)+40>>2]=c[((c[x>>2]&3|0)==3?x:p)+40>>2];y=Z+48|0;z=p;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0))}else{n=c[o>>2]|0;MN(n|0,k|0,176)|0;y=Z;z=x;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));c[o>>2]=n;y=c[Z>>2]&3;c[((y|0)==3?Z:Z+48|0)+40>>2]=c[((c[x>>2]&3|0)==2?x:q)+40>>2];c[((y|0)==2?Z:$)+40>>2]=c[((c[x>>2]&3|0)==3?x:p)+40>>2];y=n+16|0;z=(c[r>>2]|0)+56|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));k=c[o>>2]|0;y=k+56|0;z=(c[r>>2]|0)+16|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));a[k+112>>0]=1;c[k+116>>2]=x;o=c[w>>2]|0;c[((o&3|0)==3?w:s)+40>>2]=c[((c[x>>2]&3|0)==2?x:q)+40>>2];y=(c[t>>2]|0)+16|0;z=(c[r>>2]|0)+56|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0))}k=cg(x)|0;while(1){n=c[(c[k+16>>2]|0)+172>>2]|0;if(!n)break;else k=n}c[((o&3|0)==2?w:u)+40>>2]=c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2];k=c[t>>2]|0;a[k+84>>0]=0;a[k+112>>0]=1;n=k+56|0;c[n>>2]=0;c[n+4>>2]=0;c[n+8>>2]=0;c[n+12>>2]=0;n=1;L=12}if((L|0)==12)c[k+116>>2]=x;J=(j|0)==2;if(J?(v=ig(b,w,c[41926]|0,aa)|0,c[_>>2]=v,(v|0)!=0):0)L=63;else L=15;a:do if((L|0)==15){I=(j|0)==10;c[_>>2]=0;o=c[w>>2]&3;k=c[((o|0)==3?w:w+48|0)+40>>2]|0;o=c[((o|0)==2?w:w+-48|0)+40>>2]|0;c[aa>>2]=o;jg(B,b,d,k,0,w);c[U>>2]=c[B>>2];c[U+4>>2]=c[B+4>>2];c[U+8>>2]=c[B+8>>2];c[U+12>>2]=c[B+12>>2];c[U+16>>2]=c[B+16>>2];c[U+20>>2]=c[B+20>>2];c[U+24>>2]=c[B+24>>2];c[U+28>>2]=c[B+28>>2];c[W>>2]=c[B>>2];c[W+4>>2]=c[B+4>>2];c[W+8>>2]=c[B+8>>2];c[W+12>>2]=c[B+12>>2];c[W+16>>2]=c[B+16>>2];c[W+20>>2]=c[B+20>>2];Jz(e,w,1,U,kg(k)|0);D=U+52|0;K=(c[D>>2]|0)+-1|0;F=W+24|0;h[F>>3]=+h[U+56+(K<<5)+24>>3];G=W+8|0;h[G>>3]=+h[U+56+(K<<5)+8>>3];K=c[k+16>>2]|0;H=b+16|0;m=+h[K+24>>3]-+h[(c[(c[H>>2]|0)+196>>2]|0)+(c[K+232>>2]<<6)+16>>3];c[T>>2]=c[W>>2];c[T+4>>2]=c[W+4>>2];c[T+8>>2]=c[W+8>>2];c[T+12>>2]=c[W+12>>2];c[T+16>>2]=c[W+16>>2];c[T+20>>2]=c[W+20>>2];c[T+24>>2]=c[W+24>>2];c[T+28>>2]=c[W+28>>2];lg(C,T,1,m);c[W>>2]=c[C>>2];c[W+4>>2]=c[C+4>>2];c[W+8>>2]=c[C+8>>2];c[W+12>>2]=c[C+12>>2];c[W+16>>2]=c[C+16>>2];c[W+20>>2]=c[C+20>>2];c[W+24>>2]=c[C+24>>2];c[W+28>>2]=c[C+28>>2];C=W+16|0;if(+h[W>>3]<+h[C>>3]?+h[G>>3]<+h[F>>3]:0){K=c[D>>2]|0;c[D>>2]=K+1;K=U+56+(K<<5)|0;c[K>>2]=c[W>>2];c[K+4>>2]=c[W+4>>2];c[K+8>>2]=c[W+8>>2];c[K+12>>2]=c[W+12>>2];c[K+16>>2]=c[W+16>>2];c[K+20>>2]=c[W+20>>2];c[K+24>>2]=c[W+24>>2];c[K+28>>2]=c[W+28>>2]}y=b+60|0;E=V+52|0;z=e+56|0;A=e+69|0;j=e+16|0;B=e+29|0;K=w;q=0;r=-1;b:while(1){s=0;p=0;v=K;while(1){t=o;x=o;u=s|1;o=135040+(s<<5)|0;k=k+16|0;if((a[(c[t+16>>2]|0)+156>>0]|0)!=1)break b;if((fb[c[17228>>2]&31](t)|0)<<24>>24)break b;mg(M,d,b,c[(c[k>>2]|0)+232>>2]|0);c[o>>2]=c[M>>2];c[o+4>>2]=c[M+4>>2];c[o+8>>2]=c[M+8>>2];c[o+12>>2]=c[M+12>>2];c[o+16>>2]=c[M+16>>2];c[o+20>>2]=c[M+20>>2];c[o+24>>2]=c[M+24>>2];c[o+28>>2]=c[M+28>>2];if(!p){q=ng(t)|0;o=(q|0)<((a[(c[(c[y>>2]|0)+16>>2]|0)+113>>0]<<1&2)+3&255|0);q=o?q:q+-2|0;r=o?r:1;o=(o^1)&1}else o=p;if(!((o|0)==0|(r|0)>0))break;u=135040+(u<<5)|0;jg(N,b,d,t,v,c[c[(c[t+16>>2]|0)+180>>2]>>2]|0);c[u>>2]=c[N>>2];c[u+4>>2]=c[N+4>>2];c[u+8>>2]=c[N+8>>2];c[u+12>>2]=c[N+12>>2];c[u+16>>2]=c[N+16>>2];c[u+20>>2]=c[N+20>>2];c[u+24>>2]=c[N+24>>2];c[u+28>>2]=c[N+28>>2];u=c[c[(c[x+16>>2]|0)+180>>2]>>2]|0;x=c[u>>2]&3;k=c[((x|0)==3?u:u+48|0)+40>>2]|0;x=c[((x|0)==2?u:u+-48|0)+40>>2]|0;c[aa>>2]=x;s=s+2|0;r=r+-1|0;p=o;v=u;o=x}jg(O,b,d,t,v,c[c[(c[t+16>>2]|0)+180>>2]>>2]|0);c[V>>2]=c[O>>2];c[V+4>>2]=c[O+4>>2];c[V+8>>2]=c[O+8>>2];c[V+12>>2]=c[O+12>>2];c[V+16>>2]=c[O+16>>2];c[V+20>>2]=c[O+20>>2];c[V+24>>2]=c[O+24>>2];c[V+28>>2]=c[O+28>>2];Mz(e,v,1,V,kg(c[((c[v>>2]&3|0)==2?v:v+-48|0)+40>>2]|0)|0);t=V+56+((c[E>>2]|0)+-1<<5)|0;s=c[x+16>>2]|0;m=+h[s+24>>3]+ +h[(c[(c[H>>2]|0)+196>>2]|0)+(c[s+232>>2]<<6)+24>>3];c[T>>2]=c[t>>2];c[T+4>>2]=c[t+4>>2];c[T+8>>2]=c[t+8>>2];c[T+12>>2]=c[t+12>>2];c[T+16>>2]=c[t+16>>2];c[T+20>>2]=c[t+20>>2];c[T+24>>2]=c[t+24>>2];c[T+28>>2]=c[t+28>>2];lg(W,T,4,m);if(+h[W>>3]<+h[C>>3]?+h[G>>3]<+h[F>>3]:0){t=c[E>>2]|0;c[E>>2]=t+1;t=V+56+(t<<5)|0;c[t>>2]=c[W>>2];c[t+4>>2]=c[W+4>>2];c[t+8>>2]=c[W+8>>2];c[t+12>>2]=c[W+12>>2];c[t+16>>2]=c[W+16>>2];c[t+20>>2]=c[W+20>>2];c[t+24>>2]=c[W+24>>2];c[t+28>>2]=c[W+28>>2]}h[z>>3]=1.5707963267948966;a[A>>0]=1;og(e,K,v,U,V,u);if(!I){k=qy(e,Y)|0;o=c[Y>>2]|0;if(J&(o|0)>4){v=k+16|0;c[v>>2]=c[k>>2];c[v+4>>2]=c[k+4>>2];c[v+8>>2]=c[k+8>>2];c[v+12>>2]=c[k+12>>2];v=k+32|0;o=k+(o+-1<<4)|0;c[v>>2]=c[o>>2];c[v+4>>2]=c[o+4>>2];c[v+8>>2]=c[o+8>>2];c[v+12>>2]=c[o+12>>2];TN(k+48|0,o|0,16)|0;c[Y>>2]=4;o=4}else L=33}else{k=ky(e,Y)|0;o=c[Y>>2]|0;L=33}if((L|0)==33){L=0;if(!o)break a}u=c[_>>2]|0;p=u+o|0;if((p|0)>(c[41928]|0)){c[41928]=p<<1;t=vw(c[41926]|0,p<<5)|0;c[41926]=t;o=c[Y>>2]|0}else t=c[41926]|0;s=0;p=u;while(1){if((s|0)>=(o|0))break;v=t+(p<<4)|0;u=k+(s<<4)|0;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];s=s+1|0;p=p+1|0}c[_>>2]=p;o=pg(c[c[(c[x+16>>2]|0)+180>>2]>>2]|0,q,t,_)|0;qg(K,e);p=c[o>>2]&3;k=c[((p|0)==3?o:o+48|0)+40>>2]|0;p=c[((p|0)==2?o:o+-48|0)+40>>2]|0;c[aa>>2]=p;x=k+16|0;jg(P,b,d,k,c[c[(c[x>>2]|0)+172>>2]>>2]|0,o);c[U>>2]=c[P>>2];c[U+4>>2]=c[P+4>>2];c[U+8>>2]=c[P+8>>2];c[U+12>>2]=c[P+12>>2];c[U+16>>2]=c[P+16>>2];c[U+20>>2]=c[P+20>>2];c[U+24>>2]=c[P+24>>2];c[U+28>>2]=c[P+28>>2];Jz(e,o,1,U,kg(k)|0);K=U+56+((c[D>>2]|0)+-1<<5)|0;x=c[x>>2]|0;m=+h[x+24>>3]-+h[(c[(c[H>>2]|0)+196>>2]|0)+(c[x+232>>2]<<6)+16>>3];c[T>>2]=c[K>>2];c[T+4>>2]=c[K+4>>2];c[T+8>>2]=c[K+8>>2];c[T+12>>2]=c[K+12>>2];c[T+16>>2]=c[K+16>>2];c[T+20>>2]=c[K+20>>2];c[T+24>>2]=c[K+24>>2];c[T+28>>2]=c[K+28>>2];lg(W,T,1,m);if(+h[W>>3]<+h[C>>3]?+h[G>>3]<+h[F>>3]:0){K=c[D>>2]|0;c[D>>2]=K+1;K=U+56+(K<<5)|0;c[K>>2]=c[W>>2];c[K+4>>2]=c[W+4>>2];c[K+8>>2]=c[W+8>>2];c[K+12>>2]=c[W+12>>2];c[K+16>>2]=c[W+16>>2];c[K+20>>2]=c[W+20>>2];c[K+24>>2]=c[W+24>>2];c[K+28>>2]=c[W+28>>2]}h[j>>3]=-1.5707963267948966;a[B>>0]=1;K=o;o=p}s=v+-48|0;mg(Q,d,b,c[(c[k>>2]|0)+232>>2]|0);c[o>>2]=c[Q>>2];c[o+4>>2]=c[Q+4>>2];c[o+8>>2]=c[Q+8>>2];c[o+12>>2]=c[Q+12>>2];c[o+16>>2]=c[Q+16>>2];c[o+20>>2]=c[Q+20>>2];c[o+24>>2]=c[Q+24>>2];c[o+28>>2]=c[Q+28>>2];jg(R,b,d,t,v,0);c[V>>2]=c[R>>2];c[V+4>>2]=c[R+4>>2];c[V+8>>2]=c[R+8>>2];c[V+12>>2]=c[R+12>>2];c[V+16>>2]=c[R+16>>2];c[V+20>>2]=c[R+20>>2];c[V+24>>2]=c[R+24>>2];c[V+28>>2]=c[R+28>>2];c[W>>2]=c[R>>2];c[W+4>>2]=c[R+4>>2];c[W+8>>2]=c[R+8>>2];c[W+12>>2]=c[R+12>>2];c[W+16>>2]=c[R+16>>2];c[W+20>>2]=c[R+20>>2];c[W+24>>2]=c[R+24>>2];c[W+28>>2]=c[R+28>>2];r=(n|0)!=0;Mz(e,r?Z:v,1,V,kg(c[((c[v>>2]&3|0)==2?v:s)+40>>2]|0)|0);R=(c[E>>2]|0)+-1|0;h[F>>3]=+h[V+56+(R<<5)+24>>3];h[G>>3]=+h[V+56+(R<<5)+8>>3];R=c[x+16>>2]|0;m=+h[R+24>>3]+ +h[(c[(c[H>>2]|0)+196>>2]|0)+(c[R+232>>2]<<6)+24>>3];c[T>>2]=c[W>>2];c[T+4>>2]=c[W+4>>2];c[T+8>>2]=c[W+8>>2];c[T+12>>2]=c[W+12>>2];c[T+16>>2]=c[W+16>>2];c[T+20>>2]=c[W+20>>2];c[T+24>>2]=c[W+24>>2];c[T+28>>2]=c[W+28>>2];lg(X,T,4,m);c[W>>2]=c[X>>2];c[W+4>>2]=c[X+4>>2];c[W+8>>2]=c[X+8>>2];c[W+12>>2]=c[X+12>>2];c[W+16>>2]=c[X+16>>2];c[W+20>>2]=c[X+20>>2];c[W+24>>2]=c[X+24>>2];c[W+28>>2]=c[X+28>>2];if(+h[W>>3]<+h[C>>3]?+h[G>>3]<+h[F>>3]:0){X=c[E>>2]|0;c[E>>2]=X+1;X=V+56+(X<<5)|0;c[X>>2]=c[W>>2];c[X+4>>2]=c[W+4>>2];c[X+8>>2]=c[W+8>>2];c[X+12>>2]=c[W+12>>2];c[X+16>>2]=c[W+16>>2];c[X+20>>2]=c[W+20>>2];c[X+24>>2]=c[W+24>>2];c[X+28>>2]=c[W+28>>2]}og(e,K,v,U,V,u);if(I)q=ky(e,Y)|0;else q=qy(e,Y)|0;k=c[Y>>2]|0;if(!(J&(k|0)>4)){if(!k)break}else{X=q+32|0;k=q+(k+-1<<4)|0;W=q+16|0;c[W>>2]=c[q>>2];c[W+4>>2]=c[q+4>>2];c[W+8>>2]=c[q+8>>2];c[W+12>>2]=c[q+12>>2];c[X>>2]=c[k>>2];c[X+4>>2]=c[k+4>>2];c[X+8>>2]=c[k+8>>2];c[X+12>>2]=c[k+12>>2];TN(q+48|0,k|0,16)|0;c[Y>>2]=4;k=4}o=c[_>>2]|0;n=o+k|0;if((n|0)>(c[41928]|0)){c[41928]=n<<1;p=vw(c[41926]|0,n<<5)|0;c[41926]=p;k=c[Y>>2]|0}else p=c[41926]|0;n=0;while(1){if((n|0)>=(k|0))break;Y=p+(o<<4)|0;X=q+(n<<4)|0;c[Y>>2]=c[X>>2];c[Y+4>>2]=c[X+4>>2];c[Y+8>>2]=c[X+8>>2];c[Y+12>>2]=c[X+12>>2];n=n+1|0;o=o+1|0}c[_>>2]=o;qg(K,e);if(r)k=(c[Z>>2]&3|0)==2?Z:$;else k=(c[v>>2]&3|0)==2?v:s;c[aa>>2]=c[k+40>>2];v=o;L=63}while(0);c:do if((L|0)==63){if((i|0)==1){Gz(w,c[aa>>2]|0,c[41926]|0,v,17224);break}t=d+12|0;u=v+-1|0;m=+((S(c[t>>2]|0,i+-1|0)|0)/2|0|0);n=c[41926]|0;k=1;while(1){if((k|0)>=(u|0))break;d=n+(k<<4)|0;h[d>>3]=+h[d>>3]-m;k=k+1|0}k=c[41928]|0;if((k|0)>(c[41929]|0)){c[41929]=k;o=vw(c[41927]|0,k<<4)|0;c[41927]=o;n=c[41926]|0}else o=c[41927]|0;k=0;while(1){if((k|0)>=(v|0))break;d=o+(k<<4)|0;$=n+(k<<4)|0;c[d>>2]=c[$>>2];c[d+4>>2]=c[$+4>>2];c[d+8>>2]=c[$+8>>2];c[d+12>>2]=c[$+12>>2];k=k+1|0}Gz(w,c[aa>>2]|0,o,v,17224);r=ba+48|0;s=ba+-48|0;q=1;while(1){if((q|0)>=(i|0))break c;o=c[f+(q+g<<2)>>2]|0;p=o+16|0;k=c[p>>2]|0;if(c[k+164>>2]&32){n=c[ca>>2]|0;MN(n|0,k|0,176)|0;y=ba;z=o;A=y+48|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));c[ca>>2]=n;y=c[ba>>2]&3;c[((y|0)==3?ba:r)+40>>2]=c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2];c[((y|0)==2?ba:s)+40>>2]=c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2];y=n+16|0;z=(c[p>>2]|0)+56|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));k=c[ca>>2]|0;y=k+56|0;z=(c[p>>2]|0)+16|0;A=y+40|0;do{c[y>>2]=c[z>>2];y=y+4|0;z=z+4|0}while((y|0)<(A|0));a[k+112>>0]=1;c[k+116>>2]=o;o=ba}p=c[41926]|0;k=1;while(1){if((k|0)>=(u|0))break;aa=p+(k<<4)|0;h[aa>>3]=+(c[t>>2]|0)+ +h[aa>>3];k=k+1|0}n=c[41927]|0;k=0;while(1){if((k|0)>=(v|0))break;aa=n+(k<<4)|0;d=p+(k<<4)|0;c[aa>>2]=c[d>>2];c[aa+4>>2]=c[d+4>>2];c[aa+8>>2]=c[d+8>>2];c[aa+12>>2]=c[d+12>>2];k=k+1|0}Gz(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,n,v,17224);q=q+1|0}}while(0);l=da;return}function fg(a){a=a|0;var b=0,d=0,e=0;b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;if((fb[c[4306]&31](d)|0)<<24>>24?(e=c[(c[d+16>>2]|0)+8>>2]|0,e|0):0)gg(e);d=Rm(a,d)|0}b=eo(a,b)|0}return}function gg(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[a+4>>2]|0;g=tw(f*48|0)|0;b=g;d=0;e=(c[a>>2]|0)+((f+-1|0)*48|0)|0;while(1){if((d|0)>=(f|0)){b=0;break}hg(e,b);b=b+48|0;d=d+1|0;e=e+-48|0}while(1){d=c[a>>2]|0;if((b|0)>=(f|0))break;xN(c[d+(b*48|0)>>2]|0);b=b+1|0}xN(d);c[a>>2]=g;return}function hg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[a+4>>2]|0;h=tw(g<<4)|0;d=h;e=0;f=(c[a>>2]|0)+(g+-1<<4)|0;while(1){if((e|0)>=(g|0))break;c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];d=d+16|0;e=e+1|0;f=f+-16|0}c[b>>2]=h;c[b+4>>2]=g;c[b+8>>2]=c[a+12>>2];c[b+12>>2]=c[a+8>>2];h=b+16|0;g=a+32|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];h=b+32|0;g=a+16|0;c[h>>2]=c[g>>2];c[h+4>>2]=c[g+4>>2];c[h+8>>2]=c[g+8>>2];c[h+12>>2]=c[g+12>>2];return}function ig(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=l;l=l+96|0;r=y+80|0;t=y+64|0;s=y+48|0;v=y+32|0;w=y+16|0;x=y;n=d;while(1){u=n+16|0;g=c[u>>2]|0;if(!(a[g+112>>0]|0))break;n=c[g+116>>2]|0}g=c[n>>2]&3;q=c[((g|0)==2?n:n+-48|0)+40>>2]|0;g=c[((g|0)==3?n:n+48|0)+40>>2]|0;n=q+16|0;o=g+16|0;z=(c[(c[n>>2]|0)+232>>2]|0)-(c[(c[o>>2]|0)+232>>2]|0)|0;switch(((z|0)>-1?z:0-z|0)|0){case 1:{g=0;break}case 2:{if(!(a[(c[(c[b+60>>2]|0)+16>>2]|0)+113>>0]&1))p=6;else g=0;break}default:p=6}do if((p|0)==6){if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(g|0)){c[f>>2]=q;z=(c[o>>2]|0)+16|0;p=(c[u>>2]|0)+16|0;c[t>>2]=c[z>>2];c[t+4>>2]=c[z+4>>2];c[t+8>>2]=c[z+8>>2];c[t+12>>2]=c[z+12>>2];c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];Ag(v,t,r);p=(c[n>>2]|0)+16|0;z=(c[u>>2]|0)+56|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[r>>2]=c[z>>2];c[r+4>>2]=c[z+4>>2];c[r+8>>2]=c[z+8>>2];c[r+12>>2]=c[z+12>>2];Ag(w,t,r)}else{c[f>>2]=g;z=(c[n>>2]|0)+16|0;p=(c[u>>2]|0)+56|0;c[t>>2]=c[z>>2];c[t+4>>2]=c[z+4>>2];c[t+8>>2]=c[z+8>>2];c[t+12>>2]=c[z+12>>2];c[r>>2]=c[p>>2];c[r+4>>2]=c[p+4>>2];c[r+8>>2]=c[p+8>>2];c[r+12>>2]=c[p+12>>2];Ag(v,t,r);p=(c[o>>2]|0)+16|0;z=(c[u>>2]|0)+16|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[r>>2]=c[z>>2];c[r+4>>2]=c[z+4>>2];c[r+8>>2]=c[z+8>>2];c[r+12>>2]=c[z+12>>2];Ag(w,t,r)}g=c[(c[u>>2]|0)+96>>2]|0;n=e+16|0;o=e+32|0;b=e+48|0;if(!g){c[e>>2]=c[v>>2];c[e+4>>2]=c[v+4>>2];c[e+8>>2]=c[v+8>>2];c[e+12>>2]=c[v+12>>2];c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[o>>2]=c[w>>2];c[o+4>>2]=c[w+4>>2];c[o+8>>2]=c[w+8>>2];c[o+12>>2]=c[w+12>>2];c[b>>2]=c[w>>2];c[b+4>>2]=c[w+4>>2];c[b+8>>2]=c[w+8>>2];c[b+12>>2]=c[w+12>>2];g=4;break}k=+h[g+24>>3];m=+h[g+32>>3];q=(c[(c[(ro(q)|0)+16>>2]|0)+116>>2]&1|0)==0;z=(c[(c[u>>2]|0)+96>>2]|0)+56|0;c[x>>2]=c[z>>2];c[x+4>>2]=c[z+4>>2];c[x+8>>2]=c[z+8>>2];c[x+12>>2]=c[z+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[v>>2];c[t+4>>2]=c[v+4>>2];c[t+8>>2]=c[v+8>>2];c[t+12>>2]=c[v+12>>2];c[r>>2]=c[z>>2];c[r+4>>2]=c[z+4>>2];c[r+8>>2]=c[z+8>>2];c[r+12>>2]=c[z+12>>2];z=(Bg(s,t,r)|0)==0;i=(q?k:m)*.5;j=+h[x>>3];g=x+8|0;k=(q?m:k)*.5;m=+h[g>>3];if(z){h[x>>3]=j-i;i=k+m}else{h[x>>3]=i+j;i=m-k}h[g>>3]=i;c[e>>2]=c[v>>2];c[e+4>>2]=c[v+4>>2];c[e+8>>2]=c[v+8>>2];c[e+12>>2]=c[v+12>>2];c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];g=e+64|0;c[g>>2]=c[x>>2];c[g+4>>2]=c[x+4>>2];c[g+8>>2]=c[x+8>>2];c[g+12>>2]=c[x+12>>2];c[b>>2]=c[x>>2];c[b+4>>2]=c[x+4>>2];c[b+8>>2]=c[x+8>>2];c[b+12>>2]=c[x+12>>2];c[o>>2]=c[x>>2];c[o+4>>2]=c[x+4>>2];c[o+8>>2]=c[x+8>>2];c[o+12>>2]=c[x+12>>2];g=e+80|0;z=e+96|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2];g=7}while(0);l=y;return g|0}function jg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0,l=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0;s=c[f+16>>2]|0;q=+h[s+16>>3];m=q-+h[s+88>>3]+-4.0;k=wg(d,f,g,i,-1)|0;p=e+8|0;r=d+16|0;if(!k){n=~~(m+(m>=0.0?.5:-.5));k=c[e>>2]|0;k=(n|0)<(k|0)?n:k}else{l=xg(d,f,k)|0;do if(!l){n=c[k+16>>2]|0;j=+h[n+16>>3]+ +h[n+240>>3];if(!(a[n+156>>0]|0)){j=j+ +(c[(c[r>>2]|0)+248>>2]|0)*.5;break}else{j=j+ +(c[p>>2]|0);break}}else j=+h[(c[l+16>>2]|0)+32>>3]+ +(c[p>>2]|0);while(0);o=j<m?j:m;k=~~(o+(o>=0.0?.5:-.5))}o=+(k|0);n=(a[s+156>>0]|0)==1;if(n?(c[s+104>>2]|0)!=0:0)m=q+10.0;else m=q+ +h[s+96>>3]+4.0;l=wg(d,f,g,i,1)|0;if(!l){p=~~(m+(m>=0.0?.5:-.5));k=c[e+4>>2]|0;k=(p|0)>(k|0)?p:k}else{k=xg(d,f,l)|0;do if(!k){f=c[l+16>>2]|0;j=+h[f+16>>3]-+h[f+88>>3];if(!(a[f+156>>0]|0)){j=j-+(c[(c[r>>2]|0)+248>>2]|0)*.5;break}else{j=j-+(c[p>>2]|0);break}}else j=+h[(c[k+16>>2]|0)+16>>3]-+(c[p>>2]|0);while(0);m=j>m?j:m;k=~~(m+(m>=0.0?.5:-.5))}j=+(k|0);if(n?(c[s+104>>2]|0)!=0:0){j=j-+h[s+96>>3];if(j<o)j=q}q=+h[s+24>>3];r=c[(c[r>>2]|0)+196>>2]|0;s=c[s+232>>2]|0;m=q-+h[r+(s<<6)+16>>3];q=q+ +h[r+(s<<6)+24>>3];h[b>>3]=o;h[b+8>>3]=m;h[b+16>>3]=j;h[b+24>>3]=q;return}function kg(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)if((c[b+176>>2]|0)>1)b=1;else b=(c[b+184>>2]|0)>1&1;else b=0;return b|0}function lg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0,i=0;i=l;l=l+32|0;f=i;g=b+16|0;switch(d|0){case 1:{vg(f,+h[b>>3],e,+h[g>>3],+h[b+8>>3]);break}case 4:{vg(f,+h[b>>3],+h[b+24>>3],+h[g>>3],e);break}default:{}}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2];c[a+16>>2]=c[f+16>>2];c[a+20>>2]=c[f+20>>2];c[a+24>>2]=c[f+24>>2];c[a+28>>2]=c[f+28>>2];l=i;return}function mg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0,m=0,n=0,o=0;l=c[b+16>>2]|0;k=l+(e<<5)|0;j=+h[k>>3];m=l+(e<<5)+8|0;g=+h[m>>3];n=l+(e<<5)+16|0;f=+h[n>>3];l=l+(e<<5)+24|0;i=+h[l>>3];if(j==f){d=c[(c[d+16>>2]|0)+196>>2]|0;o=e+1|0;j=+(c[b>>2]|0);g=+h[(c[(c[c[d+(o<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[d+(o<<6)+24>>3];f=+(c[b+4>>2]|0);i=+h[(c[(c[c[d+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[d+(e<<6)+16>>3];h[k>>3]=j;h[m>>3]=g;h[n>>3]=f;h[l>>3]=i}h[a>>3]=j;h[a+8>>3]=g;h[a+16>>3]=f;h[a+24>>3]=i;return}function ng(b){b=b|0;var d=0,e=0;b=c[b+16>>2]|0;e=b+16|0;d=0;while(1){b=c[c[b+180>>2]>>2]|0;b=c[(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0;if((a[b+156>>0]|0)!=1)break;if((c[b+184>>2]|0)!=1)break;if((c[b+176>>2]|0)!=1)break;if(+h[b+16>>3]!=+h[e>>3])break;d=d+1|0}return d|0}function og(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=l;l=l+32|0;j=k;h=sg(b,-1)|0;b=sg(b,1)|0;if(!((h|0)!=0?!(Xz(h)|0):0))i=3;do if((i|0)==3){if(b|0?(Xz(b)|0)==0:0)break;h=tg(d,-1)|0;b=tg(d,1)|0;if(h|0?(Xz(h)|0)==0:0)break;if(b|0?(Xz(b)|0)==0:0)break;h=e+52|0;b=0;while(1){if((b|0)>=(c[h>>2]|0))break;d=e+56+(b<<5)|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];c[j+20>>2]=c[d+20>>2];c[j+24>>2]=c[d+24>>2];c[j+28>>2]=c[d+28>>2];Iz(a,j);b=b+1|0}h=c[a+80>>2]|0;i=g+-3|0;b=0;while(1){if((b|0)>=(g|0))break;e=135040+(b<<5)|0;c[j>>2]=c[e>>2];c[j+4>>2]=c[e+4>>2];c[j+8>>2]=c[e+8>>2];c[j+12>>2]=c[e+12>>2];c[j+16>>2]=c[e+16>>2];c[j+20>>2]=c[e+20>>2];c[j+24>>2]=c[e+24>>2];c[j+28>>2]=c[e+28>>2];Iz(a,j);b=b+1|0}d=h+1|0;i=i+d|0;h=c[f+52>>2]|0;while(1){b=h+-1|0;if((h|0)<=0)break;h=f+56+(b<<5)|0;c[j>>2]=c[h>>2];c[j+4>>2]=c[h+4>>2];c[j+8>>2]=c[h+8>>2];c[j+12>>2]=c[h+12>>2];c[j+16>>2]=c[h+16>>2];c[j+20>>2]=c[h+20>>2];c[j+24>>2]=c[h+24>>2];c[j+28>>2]=c[h+28>>2];Iz(a,j);h=b}ug(a,d,i)}while(0);l=k;return}function pg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[e>>2]|0;while(1){if(!b)break;a=c[c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;b=b+-1|0}c[e>>2]=f+1;g=d+(f<<4)|0;b=d+(f+-1<<4)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];f=c[e>>2]|0;c[e>>2]=f+1;f=d+(f<<4)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];f=d+(c[e>>2]<<4)|0;e=(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];return a|0}function qg(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0;n=d+80|0;m=d+84|0;e=0;d=b;a:while(1){k=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;l=k+16|0;if((a[(c[l>>2]|0)+156>>0]|0)!=1)break;if((fb[c[17228>>2]&31](k)|0)<<24>>24)break;d=c[n>>2]|0;while(1){if((e|0)>=(d|0))break a;b=c[m>>2]|0;j=c[l>>2]|0;f=+h[j+24>>3];if(!(+h[b+(e<<5)+8>>3]>f))break;e=e+1|0}do if(!(+h[b+(e<<5)+24>>3]<f)){g=+h[b+(e<<5)>>3];i=~~g;f=+h[b+(e<<5)+16>>3];d=~~f;if(!(c[j+104>>2]|0)){rg(k,i,~~((g+f)*.5),d);break}else{rg(k,i,d,~~(f+ +h[j+96>>3]));break}}while(0);d=c[c[(c[l>>2]|0)+180>>2]>>2]|0}return}function rg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+16>>2]|0;h[a+16>>3]=+(d|0);h[a+88>>3]=+(d-b|0);h[a+96>>3]=+(e-d|0);return}function sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180>>2]|0;h=((h|0)==2?a:a+-48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((S(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(S((c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function tg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;i=c[(c[(c[((h|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172>>2]|0;h=((h|0)==3?a:a+48|0)+40|0;g=0;a=0;while(1){e=c[i+(g<<2)>>2]|0;if(!e)break;f=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;do if((S(f-(c[(c[(c[h>>2]|0)+16>>2]|0)+236>>2]|0)|0,b)|0)>=1){d=c[e+16>>2]|0;if(!(c[d+8>>2]|0)){d=c[d+116>>2]|0;if(!d)break;if(!(c[(c[d+16>>2]|0)+8>>2]|0))break}if(a|0?(S((c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-f|0,b)|0)<=0:0)break;a=e}while(0);g=g+1|0}return a|0}function ug(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0,j=0.0,k=0.0,l=0.0,m=0,n=0,o=0,p=0;p=a+84|0;f=b+-1|0;while(1){if((f|0)>(d|0))break;i=c[p>>2]|0;g=i+(f<<5)|0;e=+h[g>>3];i=i+(f<<5)+16|0;j=+h[i>>3];o=~~((e+j)*.5);k=+(o+-8|0);l=+(o+8|0);if(!(f-b&1)){if(e>=j){h[g>>3]=k;h[i>>3]=l}}else if(e+16.0>j){h[g>>3]=k;h[i>>3]=l}f=f+1|0}o=(c[a+80>>2]|0)+-1|0;f=0;while(1){if((f|0)>=(o|0))break;g=c[p>>2]|0;n=f+1|0;i=g+(n<<5)|0;m=g+(f<<5)+16|0;a=g+(n<<5)+16|0;g=g+(f<<5)|0;if(!((f|0)<(b|0)|(f|0)>(d|0))?(f-b&1|0)==0:0){e=+h[g>>3]+16.0;if(e>+h[a>>3])h[a>>3]=e;e=+h[m>>3]+-16.0;if(!(e<+h[i>>3])){f=n;continue}h[i>>3]=e;f=n;continue}if(!((f|0)<(d|0)&(n|0)>=(b|0))){f=n;continue}if(n-b&1|0){f=n;continue}e=+h[a>>3];if(+h[g>>3]+16.0>e)h[g>>3]=e+-16.0;e=+h[i>>3];if(!(+h[m>>3]+-16.0<e)){f=n;continue}h[m>>3]=e+16.0;f=n}return}function vg(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function wg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[(c[b+16>>2]|0)+196>>2]|0;h=c[d+16>>2]|0;j=c[h+232>>2]|0;i=k+(j<<6)|0;j=k+(j<<6)+4|0;h=c[h+236>>2]|0;a:do{h=h+g|0;if((h|0)<=-1){b=0;break}if((h|0)>=(c[i>>2]|0)){b=0;break}b=c[(c[j>>2]|0)+(h<<2)>>2]|0;k=c[b+16>>2]|0;switch(a[k+156>>0]|0){case 0:break a;case 1:{if(c[k+104>>2]|0)break a;break}default:{}}}while((zg(b,d,e,f)|0)<<24>>24!=0);return b|0}function xg(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){i=c[d+212>>2]|0;h=i}else{i=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[i>>2]&3;h=c[(c[(c[((g|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;i=c[(c[(c[((g|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0}d=c[e+16>>2]|0;if(!(a[d+156>>0]|0)){e=c[d+212>>2]|0;e=(e|0)==(b|0)?0:e;return ((e|0)==(h|0)|((e|0)==0|(e|0)==(i|0))?0:e)|0}f=c[(c[(c[c[d+180>>2]>>2]|0)+16>>2]|0)+116>>2]|0;g=c[f>>2]&3;d=c[(c[(c[((g|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if(!(!((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))?(yg(d,e)|0)!=0:0)){d=c[(c[(c[((g|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;d=(d|0)==(b|0)?0:d;if((d|0)==(h|0)|((d|0)==0|(d|0)==(i|0)))d=0;else{e=(yg(d,e)|0)==0;return (e?0:d)|0}}return d|0}function yg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0;d=c[a+16>>2]|0;a=c[b+16>>2]|0;f=+h[a+16>>3];if((+h[d+16>>3]<=f?f<=+h[d+32>>3]:0)?(e=+h[a+24>>3],+h[d+24>>3]<=e):0)a=e<=+h[d+40>>3];else a=0;return a&1|0}function zg(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=c[b+16>>2]|0;j=(c[i+236>>2]|0)>(c[(c[d+16>>2]|0)+236>>2]|0);a:do if((c[i+184>>2]|0)==1){b:do if(f|0){h=0;b=c[c[i+180>>2]>>2]|0;while(1){if((h|0)>=2)break b;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((b|0)==(d|0))break b;g=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[g+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[g+184>>2]|0)!=1)break b;if(!(a[g+156>>0]|0))break b;if((c[b+184>>2]|0)!=1)break b;if(!(a[b+156>>0]|0))break b;h=h+1|0;f=c[c[b+180>>2]>>2]|0;b=c[c[g+180>>2]>>2]|0}}while(0);if(e|0?(c[i+176>>2]|0)==1:0){g=0;d=e;b=c[c[i+172>>2]>>2]|0;while(1){if((g|0)>=2){b=0;break a}b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((b|0)==(d|0)){b=0;break a}f=c[b+16>>2]|0;b=c[d+16>>2]|0;if(j^(c[f+236>>2]|0)>(c[b+236>>2]|0)){b=1;break a}if((c[f+176>>2]|0)!=1){b=0;break a}if(!(a[f+156>>0]|0)){b=0;break a}if((c[b+176>>2]|0)!=1){b=0;break a}if(!(a[b+156>>0]|0)){b=0;break a}g=g+1|0;d=c[c[b+172>>2]>>2]|0;b=c[c[f+172>>2]>>2]|0}}else b=0}else b=0;while(0);return b|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]+ +h[c+8>>3];h[a>>3]=+h[b>>3]+ +h[c>>3];h[a+8>>3]=d;return}function Bg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[b+8>>3];d=+h[b>>3];return (~~((+h[a+8>>3]-e)*(+h[c>>3]-d)-(+h[c+8>>3]-e)*(+h[a>>3]-d))|0)>0|0}\nfunction UA(b){b=b|0;var d=0,e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+112|0;m=v+96|0;n=v+80|0;s=v+40|0;u=v;r=b+48|0;p=ro(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)|0;g=m+8|0;c[g>>2]=0;o=n+8|0;c[o>>2]=0;d=c[42259]|0;if(((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0){VA(b,m);t=(dp(e)|0)!=0;i=+h[m>>3];f=c[g>>2]|0;d=c[m+12>>2]|0;e=iw(b,e,t?2:0,i,f,d)|0;t=b+16|0;c[(c[t>>2]|0)+96>>2]=e;e=(c[p+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|1;e=FA(CA(b,c[42269]|0,122116)|0)|0;a[(c[t>>2]|0)+114>>0]=e;t=1;e=f}else{t=0;d=0;i=0.0;e=0}f=c[42260]|0;if((f|0?(j=Jm(b,f)|0,j|0):0)?a[j>>0]|0:0){if(!e){VA(b,m);i=+h[m>>3];e=c[g>>2]|0;d=c[m+12>>2]|0}g=(dp(j)|0)!=0;j=iw(b,j,g?2:0,i,e,d)|0;c[(c[b+16>>2]|0)+108>>2]=j;j=(c[p+16>>2]|0)+113|0;a[j>>0]=a[j>>0]|32}d=c[42274]|0;if(((d|0)!=0?(k=Jm(b,d)|0,(k|0)!=0):0)?(a[k>>0]|0)!=0:0){WA(b,m,n);j=(dp(k)|0)!=0;i=+h[n>>3];d=c[o>>2]|0;e=c[n+12>>2]|0;k=iw(b,k,j?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+100>>2]=k;k=(c[p+16>>2]|0)+113|0;a[k>>0]=a[k>>0]|2}else{e=0;i=0.0;d=0}f=c[42275]|0;if((f|0?(q=Jm(b,f)|0,q|0):0)?a[q>>0]|0:0){if(!d){WA(b,m,n);e=c[n+12>>2]|0;i=+h[n>>3];d=c[o>>2]|0}o=(dp(q)|0)!=0;q=iw(b,q,o?2:0,i,d,e)|0;c[(c[b+16>>2]|0)+104>>2]=q;q=(c[p+16>>2]|0)+113|0;a[q>>0]=a[q>>0]|4}d=Im(b,96258)|0;d=d|0?d:174318;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0)+16>>2]|0)+145>>0]=1;g=b+16|0;f=(c[g>>2]|0)+16|0;e=c[((c[b>>2]&3|0)==3?b:r)+40>>2]|0;XA(s,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=s;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((YA(b,c[42281]|0)|0)<<24>>24)a[(c[g>>2]|0)+46>>0]=0;d=Im(b,96267)|0;d=d|0?d:174318;e=b+-48|0;if(a[d>>0]|0)a[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+145>>0]=1;f=(c[g>>2]|0)+56|0;e=c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0;XA(u,c[(c[(c[(c[e+16>>2]|0)+8>>2]|0)+4>>2]|0)+8>>2]|0,e,d);d=u;e=f+40|0;do{c[f>>2]=c[d>>2];f=f+4|0;d=d+4|0}while((f|0)<(e|0));if((YA(b,c[42282]|0)|0)<<24>>24)a[(c[g>>2]|0)+86>>0]=0;l=v;return t|0}function VA(a,b){a=a|0;b=b|0;h[b>>3]=+BA(a,c[42256]|0,14.0,1.0);c[b+8>>2]=DA(a,c[42257]|0,92987)|0;c[b+12>>2]=DA(a,c[42258]|0,122122)|0;return}function WA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=b+8|0;if(!(c[e>>2]|0))VA(a,b);h[d>>3]=+BA(a,c[42276]|0,+h[b>>3],1.0);c[d+8>>2]=DA(a,c[42277]|0,c[e>>2]|0)|0;c[d+12>>2]=DA(a,c[42278]|0,c[b+12>>2]|0)|0;return}function XA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+128|0;k=m+80|0;h=m+40|0;g=m;if((f|0)!=0?(j=VK(f,58)|0,(j|0)!=0):0){a[j>>0]=0;i=j+1|0;nb[d&31](h,e,f,i);e=k;g=h;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));a[j>>0]=58;f=i}else{nb[d&31](g,e,f,0);e=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0))}e=b;g=k;d=e+36|0;do{c[e>>2]=c[g>>2];e=e+4|0;g=g+4|0}while((e|0)<(d|0));c[b+36>>2]=f;l=m;return}function YA(b,c){b=b|0;c=c|0;var d=0;if(((c|0)!=0?(d=Jm(b,c)|0,(d|0)!=0):0)?(a[d>>0]|0)!=0:0)b=(FA(d)|0)<<24>>24==0&1;else b=0;return b|0}function ZA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;k=l;l=l+32|0;i=k;j=c[b+8>>2]|0;d=c[b+4>>2]|0;d=(c[b+44>>2]|0)+((S((d|0)>1?d+-1|0:0,j)|0)<<4)|0;e=i+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];f=i+8|0;g=i+24|0;b=1;while(1){if((b|0)>=(j|0))break;m=d+(b<<4)|0;o=+h[m>>3];h[i>>3]=+h[(+h[i>>3]<o?i:m)>>3];n=+h[m+8>>3];h[f>>3]=+h[(+h[f>>3]<n?i:m)+8>>3];h[e>>3]=+h[(+h[e>>3]>o?e:m)>>3];h[g>>3]=+h[(+h[g>>3]>n?e:m)+8>>3];b=b+1|0}c[a>>2]=c[i>>2];c[a+4>>2]=c[i+4>>2];c[a+8>>2]=c[i+8>>2];c[a+12>>2]=c[i+12>>2];c[a+16>>2]=c[i+16>>2];c[a+20>>2]=c[i+20>>2];c[a+24>>2]=c[i+24>>2];c[a+28>>2]=c[i+28>>2];l=k;return}function _A(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+64|0;g=d+32|0;e=d;f=c[a+16>>2]|0;a=f+16|0;f=c[f+116>>2]&1;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];$A(e,g,b,f);c[a>>2]=c[e>>2];c[a+4>>2]=c[e+4>>2];c[a+8>>2]=c[e+8>>2];c[a+12>>2]=c[e+12>>2];c[a+16>>2]=c[e+16>>2];c[a+20>>2]=c[e+20>>2];c[a+24>>2]=c[e+24>>2];c[a+28>>2]=c[e+28>>2];l=d;return}function $A(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0.0;m=+h[d+56>>3];l=+h[d+64>>3];j=e<<24>>24==0;k=+h[d+24>>3];i=+h[d+32>>3];g=(j?k:i)*.5;f=m-g;g=m+g;if(f<+h[b>>3])h[b>>3]=f;e=b+16|0;if(g>+h[e>>3])h[e>>3]=g;g=(j?i:k)*.5;f=l-g;g=l+g;e=b+8|0;if(f<+h[e>>3])h[e>>3]=f;e=b+24|0;if(g>+h[e>>3])h[e>>3]=g;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function aB(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0,O=0.0,P=0,Q=0.0,R=0.0;M=l;l=l+432|0;I=M+400|0;u=M+384|0;v=M+288|0;L=M+224|0;H=M+192|0;B=M+144|0;C=M+64|0;d=M+368|0;e=M+352|0;f=M+336|0;D=M+320|0;w=M+256|0;x=M+160|0;y=M+112|0;z=M+80|0;A=M+32|0;J=M;G=L+16|0;K=b+16|0;if((mn(b)|0)==0?(c[(c[K>>2]|0)+180>>2]|0)==0:0){bB(L,0.0,0.0);bB(d,0.0,0.0);c[G>>2]=c[d>>2];c[G+4>>2]=c[d+4>>2];c[G+8>>2]=c[d+8>>2];c[G+12>>2]=c[d+12>>2]}else{bB(e,2147483647.0,2147483647.0);c[L>>2]=c[e>>2];c[L+4>>2]=c[e+4>>2];c[L+8>>2]=c[e+8>>2];c[L+12>>2]=c[e+12>>2];bB(f,-2147483647.0,-2147483647.0);c[G>>2]=c[f>>2];c[G+4>>2]=c[f+4>>2];c[G+8>>2]=c[f+8>>2];c[G+12>>2]=c[f+12>>2];E=L+24|0;F=L+8|0;p=C+8|0;q=v+16|0;r=v+8|0;s=v+24|0;t=B+8|0;o=co(b)|0;while(1){if(!o)break;LA(B,o);d=o+16|0;n=c[d>>2]|0;h[C>>3]=(+h[n+88>>3]+ +h[n+96>>3])*.5;h[p>>3]=+h[n+80>>3]*.5;c[u>>2]=c[B>>2];c[u+4>>2]=c[B+4>>2];c[u+8>>2]=c[B+8>>2];c[u+12>>2]=c[B+12>>2];c[I>>2]=c[C>>2];c[I+4>>2]=c[C+4>>2];c[I+8>>2]=c[C+8>>2];c[I+12>>2]=c[C+12>>2];cB(v,u,I);c[u>>2]=c[B>>2];c[u+4>>2]=c[B+4>>2];c[u+8>>2]=c[B+8>>2];c[u+12>>2]=c[B+12>>2];c[I>>2]=c[C>>2];c[I+4>>2]=c[C+4>>2];c[I+8>>2]=c[C+8>>2];c[I+12>>2]=c[C+12>>2];dB(D,u,I);c[q>>2]=c[D>>2];c[q+4>>2]=c[D+4>>2];c[q+8>>2]=c[D+8>>2];c[q+12>>2]=c[D+12>>2];h[L>>3]=+h[(+h[L>>3]<+h[v>>3]?L:v)>>3];h[F>>3]=+h[(+h[F>>3]<+h[r>>3]?L:v)+8>>3];h[G>>3]=+h[(+h[G>>3]>+h[q>>3]?L:v)+16>>3];h[E>>3]=+h[(+h[E>>3]>+h[s>>3]?L:v)+24>>3];d=c[(c[d>>2]|0)+108>>2]|0;if(d|0?a[d+81>>0]|0:0){n=c[(c[K>>2]|0)+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(w,I,d,n);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];c[L+16>>2]=c[w+16>>2];c[L+20>>2]=c[w+20>>2];c[L+24>>2]=c[w+24>>2];c[L+28>>2]=c[w+28>>2]}n=Pm(b,o)|0;while(1){if(!n)break;m=n+16|0;d=c[m>>2]|0;g=c[d+8>>2]|0;if(g|0){i=c[g+4>>2]|0;f=0;while(1){if((f|0)>=(i|0))break;k=c[g>>2]|0;j=c[k+(f*48|0)+4>>2]|0;k=k+(f*48|0)|0;e=0;while(1){if((e|0)>=(j|0))break;P=(c[k>>2]|0)+(e<<4)|0;c[B>>2]=c[P>>2];c[B+4>>2]=c[P+4>>2];c[B+8>>2]=c[P+8>>2];c[B+12>>2]=c[P+12>>2];O=+h[B>>3];h[L>>3]=+h[(+h[L>>3]<O?L:B)>>3];N=+h[t>>3];h[F>>3]=+h[(+h[F>>3]<N?L:B)+8>>3];h[G>>3]=+h[(+h[G>>3]>O?G:B)>>3];h[E>>3]=+h[(+h[E>>3]>N?G:B)+8>>3];e=e+1|0}f=f+1|0}e=c[d+96>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[K>>2]|0)+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(x,I,e,d);c[L>>2]=c[x>>2];c[L+4>>2]=c[x+4>>2];c[L+8>>2]=c[x+8>>2];c[L+12>>2]=c[x+12>>2];c[L+16>>2]=c[x+16>>2];c[L+20>>2]=c[x+20>>2];c[L+24>>2]=c[x+24>>2];c[L+28>>2]=c[x+28>>2];d=c[m>>2]|0}e=c[d+100>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[K>>2]|0)+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(y,I,e,d);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];c[L+16>>2]=c[y+16>>2];c[L+20>>2]=c[y+20>>2];c[L+24>>2]=c[y+24>>2];c[L+28>>2]=c[y+28>>2];d=c[m>>2]|0}e=c[d+104>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[(c[K>>2]|0)+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(z,I,e,d);c[L>>2]=c[z>>2];c[L+4>>2]=c[z+4>>2];c[L+8>>2]=c[z+8>>2];c[L+12>>2]=c[z+12>>2];c[L+16>>2]=c[z+16>>2];c[L+20>>2]=c[z+20>>2];c[L+24>>2]=c[z+24>>2];c[L+28>>2]=c[z+28>>2];d=c[m>>2]|0}d=c[d+108>>2]|0;if(d|0?a[d+81>>0]|0:0){P=c[(c[K>>2]|0)+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(A,I,d,P);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];c[L+16>>2]=c[A+16>>2];c[L+20>>2]=c[A+20>>2];c[L+24>>2]=c[A+24>>2];c[L+28>>2]=c[A+28>>2]}}n=Rm(b,n)|0}o=eo(b,o)|0}d=c[K>>2]|0;f=c[d+180>>2]|0;g=d+184|0;i=H+8|0;j=H+16|0;k=H+24|0;e=1;while(1){if((e|0)>(f|0))break;P=c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0;R=+h[P+16>>3];h[H>>3]=R;Q=+h[P+24>>3];h[i>>3]=Q;N=+h[P+32>>3];h[j>>3]=N;O=+h[P+40>>3];h[k>>3]=O;h[L>>3]=+h[(+h[L>>3]<R?L:H)>>3];h[F>>3]=+h[(+h[F>>3]<Q?L:H)+8>>3];h[G>>3]=+h[(+h[G>>3]>N?L:H)+16>>3];h[E>>3]=+h[(+h[E>>3]>O?L:H)+24>>3];e=e+1|0}e=c[d+12>>2]|0;if((e|0)!=0?(a[e+81>>0]|0)!=0:0){d=c[d+116>>2]&1;c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[I+16>>2]=c[L+16>>2];c[I+20>>2]=c[L+20>>2];c[I+24>>2]=c[L+24>>2];c[I+28>>2]=c[L+28>>2];$A(J,I,e,d);c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];c[L+16>>2]=c[J+16>>2];c[L+20>>2]=c[J+20>>2];c[L+24>>2]=c[J+24>>2];c[L+28>>2]=c[J+28>>2];d=c[K>>2]|0}P=d+16|0;c[P>>2]=c[L>>2];c[P+4>>2]=c[L+4>>2];c[P+8>>2]=c[L+8>>2];c[P+12>>2]=c[L+12>>2];c[P+16>>2]=c[L+16>>2];c[P+20>>2]=c[L+20>>2];c[P+24>>2]=c[L+24>>2];c[P+28>>2]=c[L+28>>2]}l=M;return}function bB(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function cB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function dB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]+ +h[c+8>>3];h[a>>3]=+h[b>>3]+ +h[c>>3];h[a+8>>3]=d;return}function eB(a){a=a|0;if((c[a+60>>2]|0)==(a|0))a=1;else a=(bL(Dn(a)|0,92999,7)|0)==0;return a&1|0}function fB(a){a=a|0;var b=0;b=Ql(22616,c[4345]|0)|0;iB(a,b);return b|0}function gB(a,b){a=a|0;b=b|0;a=Za[c[a>>2]&31](a,b,512)|0;if(!a)a=0;else a=c[a+12>>2]|0;return a|0}function hB(a,b,c){a=a|0;b=b|0;c=c|0;c=an(ro(b)|0,b,c,0,1)|0;Oo(c,122270,176,1)|0;Mm(a,c)|0;return c|0}function iB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=a+16|0;e=1;while(1){a=c[f>>2]|0;if((e|0)>(c[a+180>>2]|0))break;a=c[(c[a+184>>2]|0)+(e<<2)>>2]|0;d=Dn(a)|0;if(!(Za[c[b>>2]&31](b,d,512)|0)){i=sw(16)|0;c[i+8>>2]=d;c[i+12>>2]=a;Za[c[b>>2]&31](b,i,1)|0}else{c[g>>2]=d;_l(0,93022,g)|0}iB(a,b);e=e+1|0}l=h;return}function jB(a,b,c){a=a|0;b=b|0;c=c|0;xN(b);return}function kB(a){a=a|0;var b=0,c=0,d=0;d=Ip(a,93007,1)|0;Oo(d,122293,280,1)|0;b=co(a)|0;while(1){if(!b)break;c=Pm(a,b)|0;while(1){if(!c)break;lB(c,d);c=Rm(a,c)|0}b=eo(a,b)|0}b=co(d)|0;while(1){if(!b)break;c=eo(d,b)|0;mB(b);qo(a,b)|0;b=c}ln(d)|0;return}function lB(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b>>2]&3;f=c[((e|0)==3?b:b+48|0)+40>>2]|0;e=c[((e|0)==2?b:b+-48|0)+40>>2]|0;if(!((a[(c[f+16>>2]|0)+118>>0]|0)==0?!(a[(c[e+16>>2]|0)+118>>0]|0):0)){f=nB(f,d)|0;e=hB(b,f,nB(e,d)|0)|0;f=c[b+16>>2]|0;d=f+8|0;e=c[e+16>>2]|0;c[e+8>>2]=c[d>>2];c[d>>2]=0;d=f+96|0;c[e+96>>2]=c[d>>2];c[d>>2]=0;d=f+108|0;c[e+108>>2]=c[d>>2];c[d>>2]=0;d=f+100|0;c[e+100>>2]=c[d>>2];c[d>>2]=0;f=f+104|0;c[e+104>>2]=c[f>>2];c[f>>2]=0;oB(b)}return}function mB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;b=c[e>>2]|0;d=c[b+132>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+8>>2]|0;if(d){bb[c[(c[d+4>>2]|0)+4>>2]&127](a);b=c[e>>2]|0}lw(c[b+104>>2]|0);lw(c[(c[e>>2]|0)+108>>2]|0);Qo(a,122257)|0;return}function nB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=ro(b)|0;a:do if(a[(c[b+16>>2]|0)+118>>0]|0){io(d,b,1)|0;b=VK(Dn(b)|0,58)|0;if(!b)va(95990,92654,1225,93074);d=b+1|0;b=no(f,d,0)|0;if(!b){b=no(f,d,1)|0;Oo(b,122257,304,1)|0;d=Dm(f,1,0)|0;while(1){if(!d)break a;g=Jm(b,d)|0;e=c[d+12>>2]|0;if((g|0)!=(e|0))Cm(b,d,e)|0;d=Dm(f,1,d)|0}}}while(0);return b|0}function oB(a){a=a|0;var b=0;b=a+16|0;xN(c[(c[b>>2]|0)+144>>2]|0);pB(a);lw(c[(c[b>>2]|0)+96>>2]|0);lw(c[(c[b>>2]|0)+108>>2]|0);lw(c[(c[b>>2]|0)+100>>2]|0);lw(c[(c[b>>2]|0)+104>>2]|0);Qo(a,122270)|0;return}function pB(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;a=c[e>>2]|0;b=c[a+8>>2]|0;if(b){d=0;while(1){a=c[b>>2]|0;if((d|0)>=(c[b+4>>2]|0))break;xN(c[a+(d*48|0)>>2]|0);d=d+1|0;b=c[(c[e>>2]|0)+8>>2]|0}xN(a);xN(c[(c[e>>2]|0)+8>>2]|0);a=c[e>>2]|0}c[a+8>>2]=0;return}function qB(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ym(a,b,c,0)|0;if(!e)e=ym(a,b,c,d)|0;return e|0}function rB(a,b){a=a|0;b=b|0;return vJ(c[a>>2]|0,c[b>>2]|0)|0}function sB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+1072|0;k=q+8|0;j=q;i=q+16|0;o=q+24|0;c[i>>2]=b;if((c[42399]|0)!=(d|0)){c[42399]=d;a[174217]=0}cm(o,1024,q+40|0);n=o+8|0;p=o+4|0;while(1){f=b+1|0;c[i>>2]=f;e=a[b>>0]|0;if(!(e<<24>>24))break;do if((e&255)<192)if(e<<24>>24==38){g=uB(i)|0;if(!g)e=38;else{if(g>>>0<127){e=g&255;break}b=c[p>>2]|0;f=b>>>0>=(c[n>>2]|0)>>>0;h=g>>>6;e=(g&63|128)&255;if(g>>>0<2047){if(f){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=h|192;break}if(f){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=g>>>12|224;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=h&63|128}}else{h=0;m=9}else if((e&255)>=224)if((e&255)>=240)if((e&255)<248){h=3;m=9}else{if(!(a[174217]|0)){c[j>>2]=Dn(d)|0;_l(0,94489,j)|0;a[174217]=1}h=-1;e=tB(e,o)|0;m=9}else{h=2;m=9}else{h=1;m=9}while(0);do if((m|0)==9){m=0;g=0;while(1){if((g|0)>=(h|0)){m=34;break}if((a[f>>0]&-64)<<24>>24!=-128)break;b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;g=g+1|0;e=a[f>>0]|0;f=f+1|0}if((m|0)==34){m=0;c[i>>2]=f;break}c[i>>2]=f;if(!(a[174217]|0)){g=Dn(d)|0;c[k>>2]=h+1;c[k+4>>2]=g;_l(0,94610,k)|0;a[174217]=1}e=tB(e,o)|0}while(0);b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}c[p>>2]=b+1;a[b>>0]=e;b=c[i>>2]|0}b=c[p>>2]|0;if(b>>>0>=(c[n>>2]|0)>>>0){dm(o,1)|0;b=c[p>>2]|0}a[b>>0]=0;n=c[o>>2]|0;c[p>>2]=n;p=mL(n)|0;gm(o);l=q;return p|0}function tB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+16|0;g=j;a[g>>0]=b;a[g+1>>0]=0;g=vB(g)|0;h=d+4|0;i=d+8|0;e=TK(g)|0;f=g;while(1){if((e|0)<=1)break;b=c[h>>2]|0;if(b>>>0>=(c[i>>2]|0)>>>0){dm(d,1)|0;b=c[h>>2]|0}k=a[f>>0]|0;c[h>>2]=b+1;a[b>>0]=k;e=e+-1|0;f=f+1|0}k=a[f>>0]|0;xN(g);l=j;return k|0}function uB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;d=i+8|0;e=c[b>>2]|0;a:do if((a[e>>0]|0)!=35){c[h>>2]=d;f=0;while(1){if((f|0)>=8){d=0;break a}g=a[e+f>>0]|0;if(!(g<<24>>24)){d=0;break a}f=f+1|0;if(g<<24>>24==59)break;a[d>>0]=g;d=d+1|0}a[d>>0]=0;d=qN(h,22652,252,8,30)|0;if(!d)d=0;else{e=e+f|0;d=c[d+4>>2]|0}}else{h=a[e+1>>0]|0;d=h&255;b:do if((h|32)<<24>>24==120){h=0;g=2;while(1){if((g|0)>=8){f=h;break b}f=a[e+g>>0]|0;d=f&255;if((f+-65&255)>=6)if((f+-97&255)>=6)if((f+-48&255)<10)f=-48;else{f=h;break b}else f=-87;else f=-55;d=f+d|0;h=d+(h<<4)|0;g=g+1|0}}else{f=0;g=1;while(1){if((g|0)>=8)break b;h=a[e+g>>0]|0;d=h&255;if((h+-48&255)>=10)break b;f=(f*10|0)+-48+d|0;g=g+1|0}}while(0);d=(d|0)==59;e=d?e+(g+1)|0:e;d=d?f:0}while(0);c[b>>2]=e;l=i;return d|0}function vB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+1056|0;i=n;k=n+8|0;c[i>>2]=b;cm(k,1024,n+24|0);j=k+8|0;m=k+4|0;while(1){c[i>>2]=b+1;d=a[b>>0]|0;if(!(d<<24>>24))break;b=d&255;if(d<<24>>24==38){b=uB(i)|0;if(!b){b=38;e=c[j>>2]|0;h=7}else h=6}else h=6;do if((h|0)==6){h=0;e=c[j>>2]|0;if(b>>>0<127)h=7;else{d=c[m>>2]|0;e=d>>>0>=e>>>0;f=b>>>6;g=(b&63|128)&255;if(b>>>0<2047){if(e){dm(k,1)|0;b=c[m>>2]|0}else b=d;c[m>>2]=b+1;a[b>>0]=f|192;b=c[m>>2]|0;if(b>>>0>=(c[j>>2]|0)>>>0){dm(k,1)|0;b=c[m>>2]|0}c[m>>2]=b+1;a[b>>0]=g;break}if(e){dm(k,1)|0;d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=b>>>12|224;b=c[m>>2]|0;if(b>>>0>=(c[j>>2]|0)>>>0){dm(k,1)|0;b=c[m>>2]|0}c[m>>2]=b+1;a[b>>0]=f&63|128;b=c[m>>2]|0;if(b>>>0>=(c[j>>2]|0)>>>0){dm(k,1)|0;b=c[m>>2]|0}c[m>>2]=b+1;a[b>>0]=g}}while(0);if((h|0)==7){d=c[m>>2]|0;if(d>>>0>=e>>>0){dm(k,1)|0;d=c[m>>2]|0}c[m>>2]=d+1;a[d>>0]=b}b=c[i>>2]|0}b=c[m>>2]|0;if(b>>>0>=(c[j>>2]|0)>>>0){dm(k,1)|0;b=c[m>>2]|0}a[b>>0]=0;j=c[k>>2]|0;c[m>>2]=j;m=mL(j)|0;gm(k);l=n;return m|0}function wB(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+1040|0;h=j;cm(h,1024,j+16|0);i=h+4|0;g=h+8|0;while(1){d=b+1|0;e=a[b>>0]|0;f=c[g>>2]|0;if(!(e<<24>>24))break;if((e&255)<127){b=c[i>>2]|0;if(b>>>0>=f>>>0){dm(h,1)|0;b=c[i>>2]|0}c[i>>2]=b+1;a[b>>0]=e;b=d;continue}else{e=a[d>>0]&63|e<<6&255;d=c[i>>2]|0;if(d>>>0>=f>>>0){dm(h,1)|0;d=c[i>>2]|0}c[i>>2]=d+1;a[d>>0]=e;b=b+2|0;continue}}b=c[i>>2]|0;if(b>>>0>=f>>>0){dm(h,1)|0;b=c[i>>2]|0}a[b>>0]=0;g=c[h>>2]|0;c[i>>2]=g;i=mL(g)|0;gm(h);l=j;return i|0}function xB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;e=n+48|0;d=n+32|0;f=n+64|0;g=n+16|0;i=n;j=b+16|0;k=a+16|0;m=c[k>>2]|0;if(((+h[j>>3]>=+h[m+48>>3]?+h[m+64>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=+h[m+56>>3]:0)?+h[m+72>>3]>=+h[b+8>>3]:0){m=m+16|0;c[d>>2]=c[j>>2];c[d+4>>2]=c[j+4>>2];c[d+8>>2]=c[j+8>>2];c[d+12>>2]=c[j+12>>2];c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];yB(g,d,e);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];cB(i,d,e);c[f>>2]=a;c[f+4>>2]=0;d=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0;c[e>>2]=c[i>>2];c[e+4>>2]=c[i+4>>2];c[e+8>>2]=c[i+8>>2];c[e+12>>2]=c[i+12>>2];d=lb[d&63](f,e)|0}else d=0;l=n;return d|0}function yB(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[b+8>>3]+ +h[c+8>>3])*.5;h[a>>3]=(+h[b>>3]+ +h[c>>3])*.5;h[a+8>>3]=d;return}function zB(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;e=l;l=l+80|0;j=e+64|0;k=e+48|0;m=e;n=e+32|0;g=e+16|0;h[m>>3]=+h[a+24>>3]*.5;h[m+8>>3]=+h[a+32>>3]*.5;a=a+56|0;c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];cB(n,k,j);i=+h[n>>3];f=+h[n+8>>3];c[k>>2]=c[a>>2];c[k+4>>2]=c[a+4>>2];c[k+8>>2]=c[a+8>>2];c[k+12>>2]=c[a+12>>2];c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];dB(g,k,j);d=+h[g+8>>3];if((+h[b+16>>3]>=i?+h[g>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=f:0)a=d>=+h[b+8>>3]&1;else a=0;l=e;return a|0}function AB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+80|0;k=n+48|0;j=n;h=a+16|0;a=c[h>>2]|0;i=c[a+8>>2]|0;a:do if((i|0)!=0?(g=i+8|0,c[j>>2]=c[g>>2],c[j+4>>2]=c[g+4>>2],c[j+8>>2]=c[g+8>>2],c[j+12>>2]=c[g+12>>2],c[j+16>>2]=c[g+16>>2],c[j+20>>2]=c[g+20>>2],c[j+24>>2]=c[g+24>>2],c[j+28>>2]=c[g+28>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(BB(j,k)|0)!=0):0){d=i+4|0;a=0;while(1){if((a|0)>=(c[d>>2]|0))break;e=j;f=(c[i>>2]|0)+(a*48|0)|0;g=e+48|0;do{c[e>>2]=c[f>>2];e=e+4|0;f=f+4|0}while((e|0)<(g|0));c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if(!((CB(j,k)|0)<<24>>24))a=a+1|0;else{a=1;break a}}a=c[h>>2]|0;m=7}else m=7;while(0);do if((m|0)==7){a=c[a+96>>2]|0;if(a|0?(c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(zB(a,k)|0)<<24>>24):0){a=1;break}a=0}while(0);l=n;return a|0}function BB(a,b){a=a|0;b=b|0;if((+h[a+16>>3]>=+h[b>>3]?+h[b+16>>3]>=+h[a>>3]:0)?+h[a+24>>3]>=+h[b+8>>3]:0)a=+h[b+24>>3]>=+h[a+8>>3];else a=0;return a&1|0}function CB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+96|0;k=n+64|0;j=n+48|0;i=n+32|0;f=n+16|0;g=n;m=a+4|0;d=c[m>>2]|0;if(!d)va(94719,92654,1637,94727);e=c[a>>2]|0;c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)>=(d|0)){h=7;break}d=(c[a>>2]|0)+(e<<4)|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];c[i>>2]=c[d>>2];c[i+4>>2]=c[d+4>>2];c[i+8>>2]=c[d+8>>2];c[i+12>>2]=c[d+12>>2];c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2];c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];c[k+16>>2]=c[b+16>>2];c[k+20>>2]=c[b+20>>2];c[k+24>>2]=c[b+24>>2];c[k+28>>2]=c[b+28>>2];if((Vv(i,j,k)|0)!=-1){d=1;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];e=e+1|0;d=c[m>>2]|0}do if((h|0)==7){d=c[a+8>>2]|0;if(d|0?(g=a+16|0,h=c[a>>2]|0,c[i>>2]=c[g>>2],c[i+4>>2]=c[g+4>>2],c[i+8>>2]=c[g+8>>2],c[i+12>>2]=c[g+12>>2],c[j>>2]=c[h>>2],c[j+4>>2]=c[h+4>>2],c[j+8>>2]=c[h+8>>2],c[j+12>>2]=c[h+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(DB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=c[a+12>>2]|0;if(d|0?(h=a+32|0,m=(c[a>>2]|0)+((c[m>>2]|0)+-1<<4)|0,c[i>>2]=c[h>>2],c[i+4>>2]=c[h+4>>2],c[i+8>>2]=c[h+8>>2],c[i+12>>2]=c[h+12>>2],c[j>>2]=c[m>>2],c[j+4>>2]=c[m+4>>2],c[j+8>>2]=c[m+8>>2],c[j+12>>2]=c[m+12>>2],c[k>>2]=c[b>>2],c[k+4>>2]=c[b+4>>2],c[k+8>>2]=c[b+8>>2],c[k+12>>2]=c[b+12>>2],c[k+16>>2]=c[b+16>>2],c[k+20>>2]=c[b+20>>2],c[k+24>>2]=c[b+24>>2],c[k+28>>2]=c[b+28>>2],(DB(i,j,d,k)|0)<<24>>24):0){d=1;break}d=0}while(0);l=n;return d|0}function DB(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0;m=l;l=l+160|0;g=m+144|0;f=m+128|0;n=m+96|0;i=m+64|0;j=m+32|0;k=m;o=+h[e+16>>3];c[f>>2]=c[a>>2];c[f+4>>2]=c[a+4>>2];c[f+8>>2]=c[a+8>>2];c[f+12>>2]=c[a+12>>2];c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Ot(n,f,g,1.0,d);if(((o>=+h[n>>3]?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Ot(i,f,g,1.0,d),+h[i+16>>3]>=+h[e>>3]):0)?(o=+h[e+24>>3],c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Ot(j,f,g,1.0,d),o>=+h[j+8>>3]):0)?(c[f>>2]=c[a>>2],c[f+4>>2]=c[a+4>>2],c[f+8>>2]=c[a+8>>2],c[f+12>>2]=c[a+12>>2],c[g>>2]=c[b>>2],c[g+4>>2]=c[b+4>>2],c[g+8>>2]=c[b+8>>2],c[g+12>>2]=c[b+12>>2],Ot(k,f,g,1.0,d),+h[k+24>>3]>=+h[e+8>>3]):0)f=1;else f=0;l=m;return f|0}function EB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;a:do if((b|0)!=0?(e=a[b>>0]|0,e<<24>>24!=0):0){f=b+1|0;do switch(e<<24>>24|0){case 48:{d=2;break a}case 57:case 56:case 55:case 54:case 53:case 52:case 51:case 50:case 49:{d=10;break a}case 67:case 99:{if(!(SK(f,94742)|0)){d=4;break a}if(!(SK(f,94748)|0)){d=12;break a}break}case 70:case 102:{if(!(SK(f,94756)|0)){d=2;break a}break}case 76:case 108:{if(!(SK(f,94761)|0)){d=2;break a}break}case 78:case 110:{if(!(SK(f,94765)|0)){d=0;break a}if(!(SK(f,94769)|0)){d=2;break a}break}case 79:case 111:{if(!(SK(f,94771)|0)){d=8;break a}break}case 80:case 112:{if(!(SK(f,94776)|0)){d=6;break a}break}case 83:case 115:{if(!(SK(f,94784)|0)){d=10;break a}break}case 84:case 116:{if(!(SK(f,94790)|0)){d=10;break a}break}case 89:case 121:{if(!(SK(f,94794)|0)){d=10;break a}break}default:{}}while(0);c[g>>2]=b;_l(0,94797,g)|0}while(0);l=h;return d|0}function FB(d,f){d=d|0;f=f|0;var g=0;g=Im(d,94838)|0;if(g)if(!(a[g>>0]|0))f=0;else f=EB(g,f)|0;d=(c[d+16>>2]|0)+136|0;b[d>>1]=e[d>>1]|f;return}function GB(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=+d;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0;w=l;l=l+32|0;n=w+16|0;p=w;v=e&1;u=e&2;j=n+8|0;k=p+8|0;g=+h[a>>3];i=+h[a+8>>3];a:do if((c|0)==2){t=+h[a+16>>3]-g;q=+h[a+24>>3]-i;s=g-t;h[n>>3]=s;t=g+t;h[p>>3]=t;f=i-q;h[j>>3]=f;q=i+q;h[k>>3]=q;g=s}else{h[p>>3]=g;h[n>>3]=g;h[k>>3]=i;h[j>>3]=i;e=0;m=g;f=i;while(1){if((e|0)>=(c|0)){t=g;g=m;q=i;break a}x=a+(e<<4)|0;s=+h[x>>3];q=+h[(s<m?x:n)>>3];h[n>>3]=q;t=+h[a+(e<<4)+8>>3];r=+h[(t<f?x:n)+8>>3];h[j>>3]=r;s=+h[(s>g?x:p)>>3];h[p>>3]=s;t=+h[(t>i?x:p)+8>>3];h[k>>3]=t;e=e+1|0;m=q;f=r;g=s;i=t}}while(0);s=g+(t-g)*.5;r=f+(q-f)*.5;e=(u|0)!=0;o=-r;j=b+8|0;a=b+24|0;m=r-f;k=b+16|0;if(!v){i=d;g=+J(+i);i=+I(+i);f=(q-r)*g;if(e){h[j>>3]=r-f;f=r+f}else{h[j>>3]=f-r;f=o-m*g}h[a>>3]=f;d=(t-s)*i;h[b>>3]=s-d;h[k>>3]=s+d}else{d=s-g;d=+G(+(d*d+m*m));h[j>>3]=e?r:o;h[b>>3]=s;h[k>>3]=d*.25;h[a>>3]=d}l=w;return}function HB(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0;f=b<<24>>24==0;b=c[a+16>>2]|0;d=+h[b+32>>3]*72.0;e=+h[b+40>>3]*72.0;g=(f?d:e)*.5;h[b+96>>3]=g;h[b+88>>3]=g;h[b+80>>3]=f?e:d;return}function IB(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=l;l=l+16|0;j=y+8|0;x=4;w=wN(40)|0;c[w>>2]=0;s=y;o=0;e=ha(22,b|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;a:do if((g|0)!=1){o=0;v=ha(23,e<<3|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){e=LN(c[f>>2]|0,w|0,x|0)|0;if(!e)xa(f|0,p|0);D=p}else e=-1;if((e|0)!=1){if(!(a[174213]|0))t=0;else{o=0;e=ca(2)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){n=0;k=0;m=0;j=0;i=0;d=v;h=v;e=D;g=0;u=74;break}t=e}o=0;e=na(31,b|0,94846)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)!=1){c[42400]=0;b:do if(e|0?(i=a[e>>0]|0,i<<24>>24):0){h=e;f=i;g=0;while(1){i=h+1|0;if(!(f<<24>>24))break b;switch(f<<24>>24|0){case 99:{e=8;u=15;break}case 105:{e=18;u=15;break}case 109:{e=1;u=15;break}case 114:{e=4;u=15;break}case 115:{e=2;u=15;break}default:e=g}if((u|0)==15){u=0;e=g|e;c[42400]=e}h=i;f=a[i>>0]|0;g=e}}while(0);if(d|0){o=0;$(11,0,94850,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=D;g=0;u=74;break}}o=0;r=na(32,b|0,0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){m=c[r+16>>2]|0;if(c[42400]&2|0){o=0;ea(25,c[13857]|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break}}o=0;g=ha(24,b|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){n=0;while(1){if(!g)break;o=0;e=na(33,b|0,g|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=LN(c[f>>2]|0,w|0,x|0)|0;if(!h)xa(f|0,p|0);D=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}i=n;while(1){if(!e)break;if(!((c[42189]|0)==2?(c[(c[e+16>>2]|0)+8>>2]|0)!=0:0))u=32;c:do if((u|0)==32){u=0;do if(a[174213]|0){k=c[e>>2]&3;j=(c[c[((k|0)==3?e:e+48|0)+40>>2]>>2]|0)>>>4;k=(c[c[((k|0)==2?e:e+-48|0)+40>>2]>>2]|0)>>>4;if(j>>>0>k>>>0){o=0;f=$(15,t|0,k|0,j|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=LN(c[h>>2]|0,w|0,x|0)|0;if(!d)xa(h|0,p|0);D=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}if(f|0)break c;o=0;ja(59,t|0,k|0,j|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=LN(c[f>>2]|0,w|0,x|0)|0;if(!h)xa(f|0,p|0);D=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}break}else{o=0;f=$(15,t|0,j|0,k|0)|0;h=o;o=0;if((h|0)!=0&(p|0)!=0){d=LN(c[h>>2]|0,w|0,x|0)|0;if(!d)xa(h|0,p|0);D=p}else d=-1;if((d|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}if(f|0)break c;o=0;ja(59,t|0,j|0,k|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){h=LN(c[f>>2]|0,w|0,x|0)|0;if(!h)xa(f|0,p|0);D=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}break}}while(0);c[v+(i<<3)+4>>2]=e;o=0;d=ha(25,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=LN(c[f>>2]|0,w|0,x|0)|0;if(!h)xa(f|0,p|0);D=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}c[v+(i<<3)>>2]=d;i=i+1|0}while(0);o=0;e=na(34,b|0,e|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){h=LN(c[f>>2]|0,w|0,x|0)|0;if(!h)xa(f|0,p|0);D=p}else h=-1;if((h|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}}o=0;g=na(35,b|0,g|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74;break a}n=i}o=0;j=ha(26,n<<3|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){o=0;pa(25,v|0,n|0,8,36);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){g=c[m>>2]|0;o=0;da(87,g+2|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){i=c[m+16>>2]|0;d=i+(g*40|0)|0;i=i+((g+1|0)*40|0)|0;q=c[13857]|0;h=0;while(1){if((h|0)>=(n|0))break;if((h|0)>0?c[42400]&16|0:0){o=0;ea(25,q|0,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}}e=c[v+(h<<3)+4>>2]|0;k=c[e>>2]&3;g=c[(c[(c[((k|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;e=c[(c[(c[((k|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if((g|0)==(e|0)){o=0;pa(26,m|0,g|0,i|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}}else{o=0;ja(60,m|0,e|0,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}o=0;ja(60,m|0,g|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}}o=0;e=$(16,m|0,i|0,d|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}if(e|0){k=t;m=j;i=r;d=v;h=v;break a}e=j+(h<<3)|0;o=0;pa(27,s|0,m|0,d|0,i|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}g=s;k=c[g+4>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=k;o=0;da(88,m|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74;break a}h=h+1|0}o=0;ka(8);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){o=0;e=ha(27,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)!=1){c[r+20>>2]=e;o=0;e=ha(28,r|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)!=1){c[r+24>>2]=e;o=0;ja(61,n|0,j|0,r|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){w=JN(169604,1,w|0,x|0)|0;x=D;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)!=1){k=t;m=j;i=r;d=v;h=v;e=0;g=q;u=74}else{k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=q;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=0;u=74}}else{k=t;m=j;i=r;d=v;h=v;e=D;g=0;u=74}}else{k=t;m=0;i=r;d=v;h=v;e=D;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=r;d=v;h=v;e=D;g=0;u=74}}else{n=0;k=t;m=0;j=0;i=0;d=v;h=v;e=D;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=v;e=D;g=0;u=74}}else{n=0;k=0;m=0;j=0;i=0;d=0;h=0;e=D;g=0;u=74}while(0);d:while(1){if((u|0)==74){u=0;if(e|0){q=g;continue}o=0;da(89,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){z=g;f=h;q=d;r=i;s=j;t=m;v=k;u=n;e=D;g=z;h=f;d=q;i=r;j=s;m=t;k=v;n=u;u=74;continue}if(c[42400]&4|0){o=0;ba(7,g|0,i|0,n|0,m|0,d|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;z=k;u=n;e=D;g=f;h=q;d=r;i=s;j=t;m=v;k=z;n=u;u=74;continue}}o=0;ma(10,b|0,i|0,n|0,m|0,d|0,0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){f=g;q=h;r=d;s=i;t=j;v=m;z=k;u=n;e=D;g=f;h=q;d=r;i=s;j=t;m=v;k=z;n=u;u=74;continue}q=g}if(!(a[174213]|0))e=0;else{o=0;da(90,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;g=q;u=74;continue}e=0}while(1){if((e|0)>=(n|0))break;o=0;da(91,c[m+(e<<3)+4>>2]|0);f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,w|0,x|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;g=q;u=74;continue d}e=e+1|0}o=0;da(91,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;g=q;u=74;continue}o=0;da(92,i|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;g=q;u=74;continue}o=0;da(91,h|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,w|0,x|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;g=q;u=74}else break}xN(w|0);l=y;return}function JB(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+64|0;p=q+32|0;o=q+16|0;j=q;k=q+48|0;nL(95717,a)|0;nL(95728,a)|0;m=b+16|0;n=j+8|0;i=k+4|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;d=c[m>>2]|0;e=c[d+(g*40|0)+20>>2]|0;f=c[d+(g*40|0)+24>>2]|0;if((e|0)==(f|0)){CC(j,e);d=~~+h[j>>3];e=~~+h[n>>3]}else{EC(k,(c[e>>2]&1|0)==0?e:f,d+(g*40|0)|0);d=c[k>>2]|0;e=c[i>>2]|0}c[o>>2]=g;c[o+4>>2]=d;c[o+8>>2]=e;OL(a,95748,o)|0;g=g+1|0}f=b+4|0;e=b+20|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;o=c[e>>2]|0;b=c[o+(d*24|0)+16>>2]|0;r=+h[o+(d*24|0)>>3];c[p>>2]=c[o+(d*24|0)+12>>2];c[p+4>>2]=b;h[p+8>>3]=r;OL(a,95768,p)|0;d=d+1|0}nL(95790,a)|0;l=q;return}function KB(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;f=c[a>>2]&3;e=c[(c[((f|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;a=c[(c[((f|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;d=+h[e+16>>3]-+h[a+16>>3];b=+h[e+24>>3]-+h[a+24>>3];return ~~(d*d+b*b)|0}function LB(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function MB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n;CC(n+16|0,d);k=d+32|0;m=d+36|0;g=0;while(1){if((g|0)>=(c[k>>2]|0))break;h=c[(c[m>>2]|0)+(g<<2)>>2]|0;do if(!(a[h+36>>0]|0)){i=c[h+20>>2]|0;if((i|0)==(d|0)){AC(j,h,c[h+24>>2]|0);VC(b,f,h,0.0)|0;break}else{AC(j,h,i);VC(b,e,h,0.0)|0;break}}while(0);g=g+1|0}c[b>>2]=(c[b>>2]|0)+2;l=n;return}function NB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;h=k;CC(k+16|0,b);i=b+32|0;j=b+36|0;f=0;while(1){if((f|0)>=(c[i>>2]|0))break;g=c[(c[j>>2]|0)+(f<<2)>>2]|0;e=c[g+20>>2]|0;if((e|0)==(b|0))e=c[g+24>>2]|0;AC(h,g,e);VC(a,d,g,0.0)|0;f=f+1|0}c[a>>2]=(c[a>>2]|0)+1;c[d+24>>2]=b;c[d+20>>2]=b;l=k;return}function OB(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=l;l=l+128|0;F=K+64|0;n=K+48|0;G=K+32|0;H=K+16|0;I=K;g=0;i=e;while(1){if(!i)break;g=g+1|0;i=c[i+8>>2]|0}E=sw((g*56|0)+-112|0)|0;c[F+52>>2]=0;c[F+48>>2]=0;D=e+8|0;e=c[D>>2]|0;i=c[e+8>>2]|0;g=c[e+20>>2]|0;if(c[g>>2]&1)g=c[e+24>>2]|0;AC(n,e,g);j=e;o=e;q=0.0;p=+h[n>>3];C=0;m=0.0;A=+h[n+8>>3];while(1){B=i+8|0;if(!(c[B>>2]|0))break;y=BC(j,i)|0;tG(d,y,c[o+12>>2]|0);w=o+36|0;x=i+36|0;if((a[w>>0]|0)==(a[x>>0]|0))if((c[B>>2]|0)==(f|0)){AC(H,i,y);e=H;J=12}else{n=o;e=C;k=A}else{CC(G,y);e=G;J=12}if((J|0)==12){J=0;z=+h[e>>3];k=+h[e+8>>3];n=a[w>>0]|0;t=n<<24>>24!=0;e=(o|0)==(c[D>>2]|0);j=g+40|0;v=y+48|0;s=i+20|0;r=g+48|0;u=y+40|0;if(t){g=e?0:m>A?1:3;if(n<<24>>24==(a[x>>0]|0)){n=u;o=j;j=r;e=0}else{n=u;o=j;j=r;e=(c[s>>2]|0)==(y|0)?1:3}}else{g=e?0:q>p?4:2;if(!(a[x>>0]|0)){n=v;o=r;e=0}else{n=v;o=r;e=(c[s>>2]|0)==(y|0)?4:2}}DC(F,(t^1)&1,+h[j>>3],+h[o>>3],+h[n>>3],g,e);e=C+1|0;g=E+(C*56|0)|0;n=F;o=g+56|0;do{c[g>>2]=c[n>>2];g=g+4|0;n=n+4|0}while((g|0)<(o|0));if((a[w>>0]|0)!=(a[x>>0]|0)?(c[B>>2]|0)==(f|0):0){AC(I,i,y);j=(a[x>>0]|0)!=0;q=+h[(j?u:v)>>3];DC(F,(j^1)&1,+h[(j?v:u)>>3],q,q,j?(A>k?1:3):p>z?4:2,0);j=C+2|0;g=E+(e*56|0)|0;n=F;o=g+56|0;do{c[g>>2]=c[n>>2];g=g+4|0;n=n+4|0}while((g|0)<(o|0));g=y;n=i;q=p;p=z;e=j;m=A}else{g=y;n=i;q=p;p=z;m=A}}j=i;i=c[B>>2]|0;o=n;C=e;A=k}i=zN(E,C*56|0)|0;e=C+-1|0;g=0;while(1){if((g|0)>=(C|0))break;if((g|0)>0)c[i+(g*56|0)+48>>2]=i+((g+-1|0)*56|0);j=g+1|0;if((g|0)>=(e|0)){g=j;continue}c[i+(g*56|0)+52>>2]=i+(j*56|0);g=j}c[b>>2]=C;c[b+4>>2]=i;l=K;return}function PB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24680,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&4)){while(1){d=c[(c[b+36>>2]|0)+8>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=sw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+40>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|4;d=c[c[f+36>>2]>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+56>>3];vC(j,g,+h[b+48>>3])}i=i+1|0}return j|0}function QB(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=Ql(24680,c[4345]|0)|0;k=a+8|0;i=0;while(1){if((i|0)>=(c[a>>2]|0))break;b=(c[k>>2]|0)+(i*72|0)|0;if(!(c[b>>2]&2)){while(1){d=c[(c[b+36>>2]|0)+12>>2]|0;if(!d)break;d=c[d+20>>2]|0;if(!d)break;if(!(c[d>>2]&1))b=d;else break}g=sw(40)|0;c[g+36>>2]=b;h[g+8>>3]=+h[b+48>>3];f=b;d=c[b>>2]|0;while(1){c[f>>2]=d|2;d=c[(c[f+36>>2]|0)+4>>2]|0;if(!d)break;e=c[d+24>>2]|0;if(!e)break;d=c[e>>2]|0;if(d&1|0)break;else f=e}h[g+16>>3]=+h[f+64>>3];vC(j,g,+h[b+40>>3])}i=i+1|0}return j|0}function RB(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=e+20|0;i=e+24|0;e=0;while(1){if((e|0)>=(b|0))break;g=c[d+(e<<3)>>2]|0;h=c[d+(e<<3)+4>>2]|0;f=0;while(1){if((f|0)>=(g|0))break;k=h+(f*56|0)|0;uC(_B(c[((a[k>>0]|0)==0?j:i)>>2]|0,k)|0,k);f=f+1|0}e=e+1|0}return}function SB(a){a=a|0;var b=0,d=0;d=a+20|0;aC(c[d>>2]|0);b=a+24|0;aC(c[b>>2]|0);bC(c[d>>2]|0);bC(c[b>>2]|0);cC(c[d>>2]|0,a);cC(c[b>>2]|0,a);dC(c[d>>2]|0);dC(c[b>>2]|0);return}function TB(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0,E=0.0;z=l;l=l+224|0;n=z+176|0;m=z+208|0;x=z+160|0;y=z+128|0;k=z+96|0;t=z+64|0;u=z+32|0;o=z;v=u+8|0;h[v>>3]=1797693134862315708145274.0e284;h[u>>3]=1797693134862315708145274.0e284;w=u+24|0;h[w>>3]=-1797693134862315708145274.0e284;p=u+16|0;h[p>>3]=-1797693134862315708145274.0e284;nL(94965,a)|0;c[n>>2]=10;c[n+4>>2]=10;OL(a,95371,n)|0;nL(123092,a)|0;i=b+4|0;q=t+16|0;r=t+8|0;s=t+24|0;j=b+12|0;g=0;while(1){if((g|0)>=(c[i>>2]|0))break;D=(c[j>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];C=+h[r>>3];B=+h[q>>3];A=+h[s>>3];h[k>>3]=+h[t>>3];h[k+8>>3]=C;h[k+16>>3]=B;h[k+24>>3]=A;OL(a,123111,k)|0;g=g+1|0}g=0;while(1){if((g|0)>=(d|0))break;D=c[f+(g<<3)+4>>2]|0;k=e+(g<<3)|0;c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[n>>2]=c[u>>2];c[n+4>>2]=c[u+4>>2];c[n+8>>2]=c[u+8>>2];c[n+12>>2]=c[u+12>>2];c[n+16>>2]=c[u+16>>2];c[n+20>>2]=c[u+20>>2];c[n+24>>2]=c[u+24>>2];c[n+28>>2]=c[u+28>>2];$B(o,a,D,m,b,n);c[u>>2]=c[o>>2];c[u+4>>2]=c[o+4>>2];c[u+8>>2]=c[o+8>>2];c[u+12>>2]=c[o+12>>2];c[u+16>>2]=c[o+16>>2];c[u+20>>2]=c[o+20>>2];c[u+24>>2]=c[o+24>>2];c[u+28>>2]=c[o+28>>2];g=g+1|0}nL(95388,a)|0;i=b+8|0;g=0;while(1){if((g|0)>=(c[b>>2]|0))break;D=(c[i>>2]|0)+(g*72|0)+40|0;c[t>>2]=c[D>>2];c[t+4>>2]=c[D+4>>2];c[t+8>>2]=c[D+8>>2];c[t+12>>2]=c[D+12>>2];c[t+16>>2]=c[D+16>>2];c[t+20>>2]=c[D+20>>2];c[t+24>>2]=c[D+24>>2];c[t+28>>2]=c[D+28>>2];E=+h[t>>3];A=+h[r>>3];B=+h[q>>3];C=+h[s>>3];h[y>>3]=E;h[y+8>>3]=A;h[y+16>>3]=B;h[y+24>>3]=C;OL(a,123148,y)|0;h[u>>3]=+h[(+h[u>>3]<E?u:t)>>3];h[v>>3]=+h[(+h[v>>3]<A?u:t)+8>>3];h[p>>3]=+h[(+h[p>>3]>B?u:t)+16>>3];h[w>>3]=+h[(+h[w>>3]>C?u:t)+24>>3];g=g+1|0}v=~~(+h[v>>3]+10.0);y=~~(+h[p>>3]+10.0);D=~~(+h[w>>3]+10.0);c[x>>2]=~~(+h[u>>3]+10.0);c[x+4>>2]=v;c[x+8>>2]=y;c[x+12>>2]=D;OL(a,95413,x)|0;l=z;return}function UB(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+112|0;I=Q+88|0;H=Q+72|0;P=Q+32|0;L=Q+16|0;M=Q;N=Q+56|0;O=Q+40|0;J=c[13857]|0;z=(j|0)==0;A=M+8|0;B=L+8|0;y=0;k=0;m=0;p=0;j=0;while(1){if((y|0)>=(f|0))break;C=c[i+(y<<3)+4>>2]|0;D=C+48|0;x=(c[(c[((c[C>>2]&3|0)==3?C:D)+40>>2]|0)+16>>2]|0)+16|0;E=C+16|0;F=(c[E>>2]|0)+16|0;c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];VB(N,H,I);c[L>>2]=c[N>>2];c[L+4>>2]=c[N+4>>2];c[L+8>>2]=c[N+8>>2];c[L+12>>2]=c[N+12>>2];F=C+-48|0;x=(c[(c[((c[C>>2]&3|0)==2?C:F)+40>>2]|0)+16>>2]|0)+16|0;w=(c[E>>2]|0)+56|0;c[H>>2]=c[x>>2];c[H+4>>2]=c[x+4>>2];c[H+8>>2]=c[x+8>>2];c[H+12>>2]=c[x+12>>2];c[I>>2]=c[w>>2];c[I+4>>2]=c[w+4>>2];c[I+8>>2]=c[w+8>>2];c[I+12>>2]=c[w+12>>2];VB(O,H,I);c[M>>2]=c[O>>2];c[M+4>>2]=c[O+4>>2];c[M+8>>2]=c[O+8>>2];c[M+12>>2]=c[O+12>>2];w=c[g+(y<<3)>>2]|0;x=c[g+(y<<3)+4>>2]|0;v=w*3|0;G=v+1|0;if((v|0)>=(m|0)){if(k|0)xN(j);p=tw(G<<4)|0;k=p;m=G;j=p}if(!(a[x>>0]|0)){o=+(XB(x,e)|0);n=+h[L>>3]}else{n=+WB(x,e);o=+h[B>>3]}s=k+16|0;h[k+16>>3]=n;h[k+24>>3]=o;c[p>>2]=c[s>>2];c[p+4>>2]=c[s+4>>2];c[p+8>>2]=c[s+8>>2];c[p+12>>2]=c[s+12>>2];s=1;q=x;t=2;while(1){r=t+1|0;u=k+(r<<4)|0;v=k+(t<<4)|0;if((s|0)>=(w|0))break;q=x+(s*56|0)|0;if(!(a[q>>0]|0))o=+(XB(q,e)|0);else n=+WB(q,e);r=k+(t+2<<4)|0;h[v>>3]=n;h[k+(t<<4)+8>>3]=o;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];s=s+1|0;t=t+3|0}if(!(a[q>>0]|0)){o=+(XB(q,e)|0);n=+h[M>>3]}else{n=+WB(q,e);o=+h[A>>3]}h[u>>3]=n;h[k+(r<<4)+8>>3]=o;c[v>>2]=c[u>>2];c[v+4>>2]=c[u+4>>2];c[v+8>>2]=c[u+8>>2];c[v+12>>2]=c[u+12>>2];if((d[174212]|0)>1){x=Dn(c[((c[C>>2]&3|0)==3?C:D)+40>>2]|0)|0;D=Dn(c[((c[C>>2]&3|0)==2?C:F)+40>>2]|0)|0;c[P>>2]=x;c[P+4>>2]=D;OL(J,94924,P)|0}Gz(C,c[((c[C>>2]&3|0)==2?C:F)+40>>2]|0,k,G,24668);if((!z?(K=c[(c[E>>2]|0)+96>>2]|0,K|0):0)?(a[K+81>>0]|0)==0:0){c[H>>2]=c[L>>2];c[H+4>>2]=c[L+4>>2];c[H+8>>2]=c[L+8>>2];c[H+12>>2]=c[L+12>>2];c[I>>2]=c[M>>2];c[I+4>>2]=c[M+4>>2];c[I+8>>2]=c[M+8>>2];c[I+12>>2]=c[M+12>>2];$z(b,C,H,I)}y=y+1|0}xN(j);l=Q;return}function VB(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[d>>3]+ +h[b>>3];e=b+8|0;h[e>>3]=+h[d+8>>3]+ +h[e>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function WB(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=_B(c[b+24>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+40>>3];return +(d+ +(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0)*(+h[b+56>>3]-d))}function XB(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=_B(c[b+20>>2]|0,a)|0;b=c[e+36>>2]|0;d=+h[b+48>>3];return ~~(d+(1.0-+(c[a+44>>2]|0)/+((c[e+24>>2]|0)+1|0))*(+h[b+64>>3]-d))|0}function YB(a){a=a|0;return 0}function ZB(a){a=a|0;return 0}function _B(a,b){a=a|0;b=b|0;a=Za[c[a>>2]&31](a,b+8|0,512)|0;if(!a)va(94937,94943,423,94951);a=c[a+16>>2]|0;a=Za[c[a>>2]&31](a,b+16|0,512)|0;if(!a)va(94962,94943,425,94951);else return a|0;return 0}function $B(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0;z=l;l=l+32|0;y=z+16|0;u=z+8|0;m=z;j=c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;t=c[f+4>>2]|0;if(!(a[t>>0]|0)){s=+h[j+56>>3];k=+h[j+40>>3];j=XB(t,g)|0;k=(s+k)*.5}else{s=+h[j+64>>3];k=+h[j+48>>3];j=~~((s+k)*.5);k=+WB(t,g)}A=~~k;p=+h[i>>3];r=+(A|0);p=p<r?p:r;h[i>>3]=p;v=i+8|0;q=+h[v>>3];s=+(j|0);q=q<s?q:s;h[v>>3]=q;w=i+16|0;k=+h[w>>3];r=k>r?k:r;h[w>>3]=r;x=i+24|0;k=+h[x>>3];s=k>s?k:s;h[x>>3]=s;c[m>>2]=A;c[m+4>>2]=j;OL(d,95464,m)|0;o=c[f>>2]|0;m=t;n=1;f=A;while(1){if((n|0)>=(o|0))break;m=t+(n*56|0)|0;if(!(a[m>>0]|0))j=XB(m,g)|0;else f=~~+WB(m,g);B=+(f|0);D=p<B?p:B;h[i>>3]=D;k=+(j|0);C=q<k?q:k;h[v>>3]=C;B=r>B?r:B;h[w>>3]=B;k=s>k?s:k;h[x>>3]=k;c[u>>2]=f;c[u+4>>2]=j;OL(d,95486,u)|0;n=n+1|0;p=D;q=C;r=B;s=k}j=c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+112>>2]|0;if(!(a[m>>0]|0)){D=+h[j+56>>3];k=+h[j+40>>3];j=XB(m,g)|0;k=(D+k)*.5}else{D=+h[j+64>>3];k=+h[j+48>>3];j=~~((D+k)*.5);k=+WB(m,g)}A=~~k;C=+(A|0);h[i>>3]=p<C?p:C;D=+(j|0);h[v>>3]=q<D?q:D;h[w>>3]=r>C?r:C;h[x>>3]=s>D?s:D;c[y>>2]=A;c[y+4>>2]=j;OL(d,95500,y)|0;c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];c[b+16>>2]=c[i+16>>2];c[b+20>>2]=c[i+20>>2];c[b+24>>2]=c[i+24>>2];c[b+28>>2]=c[i+28>>2];l=z;return}function aC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;c[b+32>>2]=FC(c[b+24>>2]|0)|0;b=c[b>>2]|0}a=c[a>>2]|0}return}function bC(a){a=a|0;var b=0;a=Ol(a)|0;while(1){if(!a)break;b=Ol(c[a+16>>2]|0)|0;while(1){if(!b)break;if(c[b+24>>2]|0)tC(b);b=c[b>>2]|0}a=c[a>>2]|0}return}function cC(a,b){a=a|0;b=b|0;var d=0;d=Ol(a)|0;while(1){if(!d)break;a=Ol(c[d+16>>2]|0)|0;while(1){if(!a)break;hC(a,b);a=c[a>>2]|0}d=c[d>>2]|0}return}function dC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0;e=Ol(a)|0;while(1){if(!e)break;i=e+8|0;f=Ol(c[e+16>>2]|0)|0;while(1){if(!f)break;a=f+24|0;a:do if(c[a>>2]|0){if(c[42400]&8|0)eC(f,~~+h[i>>3]);g=f+32|0;KC(c[g>>2]|0);b=c[a>>2]|0;d=f+28|0;a=0;while(1){if((a|0)>=(b|0))break a;c[(c[(c[d>>2]|0)+(a<<2)>>2]|0)+44>>2]=(c[(c[(c[g>>2]|0)+4>>2]|0)+(a*12|0)+4>>2]|0)+1;a=a+1|0}}while(0);f=c[f>>2]|0}e=c[e>>2]|0}return}function eC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0.0,m=0.0;j=l;l=l+32|0;d=j;g=a+24|0;a:do if((c[g>>2]|0)>=2){i=c[13857]|0;m=+h[a+8>>3];k=+h[a+16>>3];c[d>>2]=b;h[d+8>>3]=m;h[d+16>>3]=k;OL(i,95521,d)|0;f=a+32|0;a=a+28|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break a;e=c[(c[(c[f>>2]|0)+4>>2]|0)+(b*12|0)+8>>2]|0;b:do if(Sl(e)|0){fC(i,c[(c[a>>2]|0)+(b<<2)>>2]|0);nL(95541,i)|0;d=Za[c[e>>2]&31](e,0,128)|0;while(1){if(!d)break b;nL(95546,i)|0;fC(i,c[(c[a>>2]|0)+(c[d>>2]<<2)>>2]|0);nL(134917,i)|0;d=Za[c[e>>2]&31](e,d,8)|0}}while(0);b=b+1|0}}while(0);l=j;return}function fC(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0;m=l;l=l+80|0;k=m+40|0;j=m;n=(a[d>>0]|0)==0;i=+h[d+8>>3];e=+h[d+24>>3];f=+h[d+16>>3];g=gC(c[d+32>>2]|0)|0;d=gC(c[d+36>>2]|0)|0;if(n){h[k>>3]=f;h[k+8>>3]=i;h[k+16>>3]=e;h[k+24>>3]=i;c[k+32>>2]=g;c[k+36>>2]=d;OL(b,95552,k)|0}else{h[j>>3]=i;h[j+8>>3]=f;h[j+16>>3]=i;h[j+24>>3]=e;c[j+32>>2]=g;c[j+36>>2]=d;OL(b,95552,j)|0}l=m;return}function gC(a){a=a|0;switch(a|0){case 0:{a=95603;break}case 1:{a=95598;break}case 2:{a=95591;break}case 3:{a=95584;break}case 4:{a=95576;break}default:a=0}return a|0}function hC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;r=w+8|0;t=w;u=c[a+32>>2]|0;v=c[a+28>>2]|0;p=a+24|0;m=r+4|0;n=t+4|0;j=0;a=c[p>>2]|0;a:while(1){q=j+1|0;if((q|0)>=(a|0))break;o=v+(j<<2)|0;k=q;while(1){if((k|0)>=(a|0)){j=q;continue a}b:do if(((JC(u,j,k)|0)==0?(JC(u,k,j)|0)==0:0)?(s=v+(k<<2)|0,iC(c[o>>2]|0,c[s>>2]|0)|0):0){f=c[o>>2]|0;a=c[f+48>>2]|0;i=c[s>>2]|0;d=c[i+48>>2]|0;e=(d|0)==0;if(a)if(e)a=1;else a=+h[a+8>>3]!=+h[d+8>>3];else a=e^1;g=a&1;jC(r,f,i,0,g);a=c[r>>2]|0;i=c[m>>2]|0;f=g^1;jC(t,c[o>>2]|0,c[s>>2]|0,1,f);d=c[t>>2]|0;e=c[n>>2]|0;switch(i|0){case -1:{kC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);kC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);if((e|0)!=1)break b;lC(c[o>>2]|0,c[s>>2]|0,f,b);break b}case 0:switch(e|0){case -1:{kC(c[s>>2]|0,c[o>>2]|0,g,0,a,b);kC(c[s>>2]|0,c[o>>2]|0,f,1,d,b);break b}case 0:{kC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);kC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}case 1:{kC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);kC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);break b}default:break b}case 1:{kC(c[o>>2]|0,c[s>>2]|0,0,g,a,b);kC(c[o>>2]|0,c[s>>2]|0,1,f,d,b);if((e|0)!=-1)break b;lC(c[o>>2]|0,c[s>>2]|0,f,b);break b}default:break b}}while(0);k=k+1|0;a=c[p>>2]|0}}l=w;return}function iC(a,b){a=a|0;b=b|0;if(!(+h[a+8>>3]==+h[b+8>>3]))va(95674,94943,843,95705);if((+h[a+16>>3]==+h[b+16>>3]?+h[a+24>>3]==+h[b+24>>3]:0)?(c[a+32>>2]|0)==(c[b+32>>2]|0):0)a=(c[a+36>>2]|0)==(c[b+36>>2]|0);else a=0;return a&1|0}function jC(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=0;while(1){b=mC(b,e)|0;h=g+1|0;if(!b){i=0;break}d=mC(d,f)|0;if(!d){j=5;break}if(!(iC(b,d)|0)){j=6;break}else g=h}if((j|0)==5)va(123221,94943,871,95623);else if((j|0)==6)i=oC(b,nC(b,d)|0,h,1-e|0)|0;c[a>>2]=g;c[a+4>>2]=i;return}function kC(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=i+24|0;v=i+20|0;i=_B(c[((a[b>>0]|0)==0?v:w)>>2]|0,b)|0;HC(c[i+32>>2]|0,c[b+40>>2]|0,c[d+40>>2]|0);s=1;while(1){if((s|0)>(g|0))break;t=mC(b,e)|0;u=mC(d,f)|0;j=i+32|0;k=b+40|0;l=d+40|0;m=t+8|0;n=b+36|0;o=b+32|0;p=b+16|0;q=u+40|0;r=t+40|0;do if(!(a[b>>0]|0)){i=_B(c[w>>2]|0,t)|0;j=c[j>>2]|0;d=c[k>>2]|0;b=c[l>>2]|0;if(+h[m>>3]==+h[p>>3]){p=(c[o>>2]|0)==1;j=(JC(j,d,b)|0)!=0;k=c[i+32>>2]|0;d=c[q>>2]|0;b=c[r>>2]|0;if(p)if(j){HC(k,d,b);break}else{HC(k,b,d);break}else if(j){HC(k,b,d);break}else{HC(k,d,b);break}}else{p=(c[n>>2]|0)==1;j=(JC(j,d,b)|0)!=0;k=c[i+32>>2]|0;d=c[q>>2]|0;b=c[r>>2]|0;if(p)if(j){HC(k,b,d);break}else{HC(k,d,b);break}else if(j){HC(k,d,b);break}else{HC(k,b,d);break}}}else{i=_B(c[v>>2]|0,t)|0;j=c[j>>2]|0;d=c[k>>2]|0;b=c[l>>2]|0;if(+h[m>>3]==+h[p>>3]){p=(c[o>>2]|0)==2;j=(JC(j,d,b)|0)!=0;k=c[i+32>>2]|0;d=c[q>>2]|0;b=c[r>>2]|0;if(p)if(j){HC(k,b,d);break}else{HC(k,d,b);break}else if(j){HC(k,d,b);break}else{HC(k,b,d);break}}else{p=(c[n>>2]|0)==2;j=(JC(j,d,b)|0)!=0;k=c[i+32>>2]|0;d=c[q>>2]|0;b=c[r>>2]|0;if(p)if(j){HC(k,d,b);break}else{HC(k,b,d);break}else if(j){HC(k,b,d);break}else{HC(k,d,b);break}}}while(0);b=t;d=u;s=s+1|0}return}function lC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0;while(1){if(!(iC(b,d)|0))break;g=mC(b,1)|0;d=mC(d,e)|0;b=g}g=c[(_B(c[((a[b>>0]|0)==0?f+20|0:f+24|0)>>2]|0,b)|0)+32>>2]|0;IC(g,c[b+40>>2]|0,c[d+40>>2]|0);return}function mC(a,b){a=a|0;b=b|0;if(!a)va(95610,94943,798,95614);else return c[((b|0)==0?a+48|0:a+52|0)>>2]|0;return 0}function nC(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=a[b>>0]|0;if(d<<24>>24==(a[c>>0]|0)?!(+h[b+8>>3]!=+h[c+8>>3]):0){if(!(d<<24>>24))b=pC(b,c,3,1)|0;else b=pC(b,c,4,2)|0;l=f;return b|0}_l(1,95636,e)|0;xa(169604,1);return 0}function oC(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=1;while(1){if((m|0)>(e|0))break;l=mC(b,f)|0;g=+h[l+8>>3]==+h[b+16>>3];k=0-d|0;i=b+36|0;j=b+32|0;do if(!(a[b>>0]|0))if(g){g=(c[j>>2]|0)==1;break}else{g=(c[i>>2]|0)==3;break}else if(g){g=(c[j>>2]|0)==4;break}else{g=(c[i>>2]|0)==2;break}while(0);b=l;m=m+1|0;d=g?k:d}return d|0}function pC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0,i=0.0,j=0,k=0,l=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0;p=+h[a+24>>3];i=+h[b+16>>3];do if(!(p<i)?(f=+h[a+16>>3],m=+h[b+24>>3],!(f>m)):0){if(i<p&f<i){b=qC(a,b,d,e)|0;break}if(i<f&f<m){b=0-(qC(b,a,d,e)|0)|0;break}g=b+36|0;s=a+36|0;b=b+32|0;a=a+32|0;if(!(f==i))if(p==i){d=c[s>>2]|0;return ((d|0)==(c[b>>2]|0)?0:(d|0)==(e|0)?1:-1)|0}else{b=c[a>>2]|0;b=(b|0)==(c[g>>2]|0)?0:(b|0)==(e|0)?1:-1;break}q=c[b>>2]|0;r=c[a>>2]|0;if(!(p==m))if(p<m){s=(c[s>>2]|0)==(d|0);b=sC(q,r,d,e)|0;b=s?b:0-b|0;break}else{s=(c[g>>2]|0)==(e|0);b=sC(r,q,d,e)|0;b=s?b:0-b|0;break}n=c[g>>2]|0;if((r|0)==(q|0)?(c[s>>2]|0)==(n|0):0){b=0;break}o=(q|0)==(d|0);j=(r|0)!=(e|0);b=(r|0)!=(d|0);k=(q|0)==(e|0);if((q|0)==(n|0)){if(o|k){b=o?1:-1;break}if(b?(c[s>>2]|0)!=(d|0):0){b=1;break}if(j?(c[s>>2]|0)!=(e|0):0){b=-1;break}b=0;break}l=(n|0)!=(e|0);if(!(l|o^1)){if(b?(c[s>>2]|0)==(e|0):0){b=1;break}if((r|0)==(d|0)?(c[s>>2]|0)!=(e|0):0){b=-1;break}b=0;break}g=c[s>>2]|0;a=(n|0)!=(d|0);if(!(a|k^1)){if((r|0)==(e|0)&(g|0)!=(d|0)){b=1;break}return (j&(g|0)==(d|0))<<31>>31|0}b=(q|0)!=0;if(!(b|a)){b=rC(r,g,d)|0;break}if(!(b|l)){b=0-(rC(r,g,e)|0)|0;break}if(o&(n|0)==0){b=rC(g,r,d)|0;break}else{b=0-(rC(g,r,e)|0)|0;break}}else b=0;while(0);return b|0}function qC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0;i=+h[a+24>>3];j=+h[b+24>>3];k=a+36|0;f=b+32|0;do if(i<j){a=c[k>>2]|0;if((a|0)==(d|0)?(c[f>>2]|0)==(e|0):0){a=-1;break}if((a|0)==(e|0)?(c[f>>2]|0)==(d|0):0){a=1;break}a=0}else{f=c[f>>2]|0;g=(f|0)==(e|0);a=b+36|0;if(i==j){f=c[a>>2]|0;a=c[k>>2]|0;if(g){a=sC(a,f,d,e)|0;break}else{a=0-(sC(f,a,d,e)|0)|0;break}}if(g?(c[a>>2]|0)==(e|0):0){a=-1;break}if((f|0)==(d|0)?(c[a>>2]|0)==(d|0):0){a=1;break}a=0}while(0);return a|0}function rC(a,b,c){a=a|0;b=b|0;c=c|0;return ((a|0)==(c|0)?((b|0)==(c|0))<<31>>31:1)|0}function sC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(d|0)){b=(a|0)==0;if(b)return 0;else b=b&1}return ((a|0)!=0|(b|0)!=(c|0))<<31>>31|0}function tC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;g=c[a+28>>2]|0;h=c[a+24>>2]|0;d=c[a+32>>2]|0;a=0;a:while(1){e=a+1|0;if((e|0)>=(h|0))break;f=g+(a<<2)|0;b=e;while(1){if((b|0)==(h|0)){a=e;continue a}switch(nC(c[f>>2]|0,c[g+(b<<2)>>2]|0)|0){case 1:{HC(d,a,b);break}case -1:{HC(d,b,a);break}default:{}}b=b+1|0}}return}function uC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+24|0;e=c[f>>2]|0;d=e+1|0;c[f>>2]=d;c[b+40>>2]=e;e=a+28|0;a=c[e>>2]|0;if(!a)a=tw(d<<2)|0;else a=vw(a,d<<2)|0;c[e>>2]=a;c[a+((c[f>>2]|0)+-1<<2)>>2]=b;return}function vC(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;h[f>>3]=d;e=Za[c[a>>2]&31](a,f,512)|0;if(!e){e=sw(24)|0;h[e+8>>3]=+h[f>>3];c[e+16>>2]=Ql(24716,c[4345]|0)|0;Za[c[a>>2]&31](a,e,1)|0}f=c[e+16>>2]|0;Za[c[f>>2]&31](f,b,1)|0;l=g;return}function wC(a,b,d){a=a|0;b=b|0;d=d|0;GC(c[b+32>>2]|0);xN(c[b+28>>2]|0);xN(b);return}function xC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];d=c+8|0;a=b+8|0;if(!(e>f))if(e<f)a=!(+h[a>>3]>=+h[d>>3])<<31>>31;else a=0;else a=!(+h[a>>3]<=+h[d>>3])&1;return a|0}function yC(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+16>>2]|0)|0;xN(b);return}function zC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[b>>3];e=+h[c>>3];return (f>e?1:(f<e)<<31>>31)|0}function AC(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,l=0,m=0;m=(a[d+36>>0]|0)!=0;k=e+40|0;j=e+48|0;i=e+64|0;l=e+56|0;do if((c[d+24>>2]|0)==(e|0)){f=+h[k>>3];g=+h[j>>3];if(m){g=(g+ +h[i>>3])*.5;break}else{f=(f+ +h[l>>3])*.5;break}}else{g=+h[i>>3];f=+h[l>>3];if(m){g=(g+ +h[j>>3])*.5;break}else{f=(f+ +h[k>>3])*.5;break}}while(0);h[b>>3]=f;h[b+8>>3]=g;return}function BC(a,b){a=a|0;b=b|0;var d=0;d=c[a+20>>2]|0;if((d|0)!=(c[b+20>>2]|0)?(d|0)!=(c[b+24>>2]|0):0)d=c[a+24>>2]|0;return d|0}function CC(a,b){a=a|0;b=b|0;var c=0.0;c=(+h[b+48>>3]+ +h[b+64>>3])*.5;h[a>>3]=(+h[b+40>>3]+ +h[b+56>>3])*.5;h[a+8>>3]=c;return}function DC(b,d,e,f,g,i,j){b=b|0;d=d|0;e=+e;f=+f;g=+g;i=i|0;j=j|0;var k=0,l=0,m=0;a[b>>0]=d;h[b+8>>3]=e;d=b+16|0;k=b+32|0;l=b+36|0;m=b+24|0;if(f<g){h[d>>3]=f;h[m>>3]=g;c[k>>2]=i;c[l>>2]=j;d=0}else{h[m>>3]=f;h[d>>3]=g;c[l>>2]=i;c[k>>2]=j;d=1}a[b+1>>0]=d;return}function EC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0;f=c[b+36>>2]|0;i=b+64|0;g=b+56|0;e=b+40|0;do if((c[f+4>>2]|0)!=(d|0)){b=b+48|0;if((c[f+12>>2]|0)==(d|0)){e=~~((+h[e>>3]+ +h[g>>3])*.5);b=~~+h[b>>3];break}if((c[f+8>>2]|0)==(d|0)){e=~~+h[e>>3];b=~~((+h[b>>3]+ +h[i>>3])*.5);break}if((c[f>>2]|0)==(d|0)){e=~~+h[g>>3];b=~~((+h[b>>3]+ +h[i>>3])*.5)}else{e=0;b=0}}else{e=~~((+h[e>>3]+ +h[g>>3])*.5);b=~~+h[i>>3]}while(0);c[a>>2]=e;c[a+4>>2]=b;return}function FC(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=sw(8)|0;c[d>>2]=a;e=d+4|0;c[e>>2]=sw(a*12|0)|0;b=0;while(1){if((b|0)>=(a|0))break;g=eG()|0;f=c[e>>2]|0;c[f+(b*12|0)+8>>2]=g;c[f+(b*12|0)>>2]=0;b=b+1|0}return d|0}function GC(a){a=a|0;var b=0,d=0,e=0;d=a+4|0;b=0;while(1){e=c[d>>2]|0;if((b|0)>=(c[a>>2]|0))break;Kl(c[e+(b*12|0)+8>>2]|0)|0;b=b+1|0}xN(e);xN(a);return}function HC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;Za[c[d>>2]&31](d,f,1)|0;l=e;return}function IC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e;c[f>>2]=d;a=a+4|0;g=c[(c[a>>2]|0)+(b*12|0)+8>>2]|0;Za[c[g>>2]&31](g,f,2)|0;c[f>>2]=b;d=c[(c[a>>2]|0)+(d*12|0)+8>>2]|0;Za[c[d>>2]&31](d,f,2)|0;l=e;return}function JC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=c[(c[a+4>>2]|0)+(b*12|0)+8>>2]|0;d=(Za[c[d>>2]&31](d,f,512)|0)!=0&1;l=e;return d|0}function KC(a){a=a|0;var b=0,d=0,e=0,f=0;b=c[a>>2]|0;do if(b|0){f=a+4|0;if((b|0)==1){c[(c[f>>2]|0)+4>>2]=0;break}e=LC(b)|0;d=0;b=0;while(1){if((d|0)>=(c[a>>2]|0)){b=0;break}if(!(c[(c[f>>2]|0)+(d*12|0)>>2]|0))b=MC(a,d,b,e)|0;d=d+1|0}while(1){d=NC(e)|0;if((d|0)<=-1)break;c[(c[f>>2]|0)+(d*12|0)+4>>2]=b;b=b+1|0}OC(e)}while(0);return}function LC(a){a=a|0;var b=0;b=sw(8)|0;c[b+4>>2]=sw(a<<2)|0;c[b>>2]=-1;return b|0}function MC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;i=a+4|0;g=c[i>>2]|0;j=g+(b*12|0)|0;c[j>>2]=1;g=c[g+(b*12|0)+8>>2]|0;h=g+4|0;d=d+1|0;g=Ol(g)|0;while(1){if(!g)break;f=c[(c[h>>2]|0)+8>>2]|0;if((f|0)<0)f=c[g+8>>2]|0;else f=g+(0-f)|0;f=c[f>>2]|0;if(!(c[(c[i>>2]|0)+(f*12|0)>>2]|0))d=MC(a,f,d,e)|0;g=c[g>>2]|0}c[j>>2]=2;PC(e,b);return d+1|0}function NC(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if((b|0)==-1)a=-1;else{d=c[(c[a+4>>2]|0)+(b<<2)>>2]|0;c[a>>2]=b+-1;a=d}return a|0}function OC(a){a=a|0;xN(c[a+4>>2]|0);xN(a);return}function PC(a,b){a=a|0;b=b|0;var d=0;d=(c[a>>2]|0)+1|0;c[a>>2]=d;c[(c[a+4>>2]|0)+(d<<2)>>2]=b;return}function QC(a){a=a|0;var d=0,e=0,f=0;e=c[a>>2]|0;c[a+8>>2]=e;c[a+12>>2]=c[a+4>>2];d=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;f=c[d>>2]|0;b[f+(a*40|0)+18>>1]=b[f+(a*40|0)+16>>1]|0;a=a+1|0}return}function RC(a){a=a|0;var d=0,e=0,f=0;d=c[a+8>>2]|0;c[a>>2]=d;c[a+4>>2]=c[a+12>>2];e=a+16|0;a=0;while(1){if((a|0)>=(d|0))break;f=c[e>>2]|0;b[f+(a*40|0)+16>>1]=b[f+(a*40|0)+18>>1]|0;a=a+1|0}d=d+2|0;while(1){if((a|0)>=(d|0))break;b[(c[e>>2]|0)+(a*40|0)+16>>1]=0;a=a+1|0}return}function SC(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=sw(((c[a>>2]|0)*6|0)+(b<<1)<<2)|0;c[a+20>>2]=sw((((c[a>>2]|0)*3|0)+b|0)*24|0)|0;e=c[a>>2]|0;f=a+16|0;a=0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+24|0;a=a+1|0}e=e+2|0;while(1){if((a|0)>=(e|0))break;c[(c[f>>2]|0)+(a*40|0)+28>>2]=d;d=d+(b<<2)|0;a=a+1|0}return}function TC(a){a=a|0;var b=0;b=sw(24)|0;c[b>>2]=0;c[b+16>>2]=sw(a*40|0)|0;return b|0}function UC(a){a=a|0;var b=0,d=0;d=c[a+16>>2]|0;b=c[a>>2]|0;c[d+(b*40|0)+32>>2]=b;c[a>>2]=b+1;return d+(b*40|0)|0}function VC(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,g=0;g=a+4|0;f=c[g>>2]|0;c[g>>2]=f+1;g=c[a+20>>2]|0;a=g+(f*24|0)|0;c[g+(f*24|0)+12>>2]=c[b+32>>2];c[g+(f*24|0)+16>>2]=c[d+32>>2];h[a>>3]=e;c[g+(f*24|0)+8>>2]=0;WC(b,f);WC(d,f);return a|0}function WC(a,d){a=a|0;d=d|0;var e=0,f=0;e=a+16|0;f=b[e>>1]|0;c[(c[a+28>>2]|0)+(f<<16>>16<<2)>>2]=d;b[e>>1]=f+1<<16>>16;return}function XC(a){a=a|0;var b=0;b=a+16|0;xN(c[(c[b>>2]|0)+28>>2]|0);xN(c[b>>2]|0);xN(c[a+20>>2]|0);xN(a);return}function YC(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c[a>>2]|0;i=a+16|0;f=0;while(1){if((f|0)>=(g|0))break;c[(c[i>>2]|0)+(f*40|0)>>2]=-2147483648;f=f+1|0}mG();a:do if(!(pG(d)|0)){c[d+8>>2]=0;c[d>>2]=0;d=a+20|0;b:while(1){g=rG()|0;if(!g){f=0;break a}c[g>>2]=0-(c[g>>2]|0);if((g|0)==(e|0)){f=0;break a}i=g+16|0;j=g+28|0;f=0;while(1){if((f|0)>=(b[i>>1]|0))continue b;k=(c[d>>2]|0)+((c[(c[j>>2]|0)+(f<<2)>>2]|0)*24|0)|0;l=ZC(a,k,g)|0;m=c[l>>2]|0;do if((m|0)<0){n=~~-(+(c[g>>2]|0)+ +h[k>>3]);if((m|0)==-2147483648){c[l>>2]=n;if(pG(l)|0){f=1;break a}c[l+8>>2]=g;c[l+12>>2]=k;break}else{if((m|0)>=(n|0))break;sG(l,n);c[l+8>>2]=g;c[l+12>>2]=k;break}}while(0);f=f+1|0}}}else f=1;while(0);return f|0}function ZC(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=c[b+12>>2]|0;if((e|0)==(c[d+32>>2]|0))e=c[b+16>>2]|0;return (c[a+16>>2]|0)+(e*40|0)|0}function _C(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[a>>2]|0;Gr(d,3,b)|0;b=c[d+92>>2]|0;do if(b){e=c[b+16>>2]|0;h=c[e+12>>2]|0;c[a+76>>2]=h;f=c[e+16>>2]|0;c[a+84>>2]=f;g=a+80|0;c[g>>2]=c[e>>2];c[a+88>>2]=c[b+4>>2];e=a+152|0;f=c[e>>2]|c[f>>2];c[e>>2]=f;b=c[d+80>>2]|0;d=a+60|0;if(!b){c[d>>2]=0;b=999;break}else{i=c[b+16>>2]|0;c[d>>2]=c[i+12>>2];d=c[i+16>>2]|0;c[a+68>>2]=d;c[a+72>>2]=c[b+4>>2];c[e>>2]=f|c[d>>2];c[a+64>>2]=c[((h|0)==0?g:i)>>2];b=300;break}}else b=999;while(0);return b|0}function $C(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(!(fr(a)|0))if((b|0)!=0?(d=c[b>>2]|0,(d|0)!=0):0){bb[d&127](a);a=0}else a=0;else a=1;return a|0}function aD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+4>>2]|0,d|0):0)bb[d&127](a);c[(c[a>>2]|0)+24>>2]=0;nr(a);return}function bD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0.0;j=+h[b+504>>3];g=+h[b+512>>3];l=+h[b+352>>3];k=(c[b+360>>2]|0)==0;i=+h[d>>3];f=+h[d+8>>3];e=l*+h[b+528>>3]*((k?g:j)+(k?f:i));h[a>>3]=l*+h[b+520>>3]*(k?j+i:-(g+f));h[a+8>>3]=e;return}function cD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;f=+h[a+504>>3];g=+h[a+512>>3];i=+h[a+352>>3];j=i*+h[a+520>>3];i=i*+h[a+528>>3];a:do if(!(c[a+360>>2]|0)){a=0;while(1){if((a|0)>=(e|0))break a;h[d+(a<<4)>>3]=j*(f+ +h[b+(a<<4)>>3]);h[d+(a<<4)+8>>3]=i*(g+ +h[b+(a<<4)+8>>3]);a=a+1|0}}else{a=0;while(1){if((a|0)>=(e|0))break a;k=-(j*(g+ +h[b+(a<<4)+8>>3]));h[d+(a<<4)+8>>3]=i*(f+ +h[b+(a<<4)>>3]);h[d+(a<<4)>>3]=k;a=a+1|0}}while(0);return d|0}function dD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+8>>2]|0,d|0):0)bb[d&127](a);return}function eD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+12>>2]|0,d|0):0)bb[d&127](a);mr(a);return}function fD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+24>>2]|0,d|0):0)bb[d&127](a);return}function gD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+28>>2]|0,d|0):0)bb[d&127](a);return}function hD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+16>>2]|0,d|0):0){b=c[a+160>>2]|0;nb[d&31](a,c[(c[(c[a>>2]|0)+308>>2]|0)+(b<<2)>>2]|0,b,c[a+156>>2]|0)}return}function iD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+20>>2]|0,d|0):0)bb[d&127](a);return}function jD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+32>>2]|0,d|0):0)bb[d&127](a);return}function kD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+36>>2]|0,d|0):0)bb[d&127](a);return}function lD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+40>>2]|0,d|0):0)bb[d&127](a);return}function mD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+44>>2]|0,d|0):0)bb[d&127](a);return}function nD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+48>>2]|0,d|0):0)bb[d&127](a);return}function oD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+52>>2]|0,d|0):0)bb[d&127](a);return}function pD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+56>>2]|0,d|0):0)bb[d&127](a);return}function qD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+60>>2]|0,d|0):0)bb[d&127](a);return}function rD(a,b){a=a|0;b=b|0;var d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+64>>2]|0,d|0):0)bb[d&127](a);return}function sD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+68>>2]|0,d|0):0)bb[d&127](a);return}function tD(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=c[a+60>>2]|0;if(g|0?(h=c[g+72>>2]|0,h|0):0)$a[h&7](a,b,d,e,f);return}function uD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+76>>2]|0,d|0):0)bb[d&127](a);return}function vD(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+60>>2]|0;if(d|0?(e=c[d+80>>2]|0,e|0):0)cb[e&31](a,b);return}function wD(a){a=a|0;var b=0,d=0;b=c[a+60>>2]|0;if(b|0?(d=c[b+84>>2]|0,d|0):0)bb[d&127](a);return}function xD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+48|0;f=k+32|0;h=k;i=k+16|0;j=c[b+60>>2]|0;m=c[e>>2]|0;do if(m|0?a[m>>0]|0:0){m=c[b+16>>2]|0;if(m|0?(c[m+144>>2]|0)==0:0)break;if(!(c[b+152>>2]&8192)){c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];bD(i,b,f);c[h>>2]=c[i>>2];c[h+4>>2]=c[i+4>>2];c[h+8>>2]=c[i+8>>2];c[h+12>>2]=c[i+12>>2]}else{c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2]}if(j|0?(g=c[j+88>>2]|0,g|0):0){c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];hb[g&127](b,f,e)}}while(0);l=k;return}function yD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+16|0;i=VK(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(zD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)cb[e&31](b,g);if(h)a[i>>0]=58;return}function zD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+32|0;g=k+16|0;j=k+8|0;i=k;c[d>>2]=b;c[d+32>>2]=5;e=QE(b)|0;f=c[a+16>>2]|0;if(!((f|0)!=0?(qN(e,f,c[a+20>>2]|0,4,37)|0)!=0:0))h=3;a:do if((h|0)==3){switch(RE(b,d,c[a+24>>2]|0)|0){case 0:break a;case 1:break;default:{_l(1,95828,g)|0;break a}}a=tw((TK(b)|0)+16|0)|0;c[i>>2]=b;yJ(a,95793,i)|0;if(Av(a)|0){c[j>>2]=b;_l(0,95802,j)|0}xN(a)}while(0);l=k;return}function AD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=c[b+60>>2]|0;g=(c[b+16>>2]|0)+56|0;i=VK(d,58)|0;h=(i|0)!=0;if(h)a[i>>0]=0;if(f|0?(zD(c[b+68>>2]|0,d,g),e=c[f+92>>2]|0,e|0):0)cb[e&31](b,g);if(h)a[i>>0]=58;return}function BD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=+e;var f=0,h=0,i=0,j=0;h=c[a+60>>2]|0;i=a+16|0;j=(c[i>>2]|0)+96|0;if(h|0?(zD(c[a+68>>2]|0,b,j),f=c[h+92>>2]|0,f|0):0)cb[f&31](a,j);j=c[i>>2]|0;c[j+136>>2]=d;g[j+140>>2]=e;return}function CD(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=c[b+60>>2]|0;b=c[b+16>>2]|0;c[b+160>>2]=d;a:do if((d|0)!=0&(j|0)!=0){j=b+144|0;i=b+152|0;g=b+148|0;b=d;b:while(1){f=b+4|0;b=c[b>>2]|0;if(!b)break a;c:do switch(a[b>>0]|0){case 115:{if(!(vJ(b,95849)|0)){c[j>>2]=3;b=f;continue b}if(!(vJ(b,95870)|0)){d=115;while(1){e=b+1|0;if(!(d<<24>>24))break;b=e;d=a[e>>0]|0}h[i>>3]=+mN(e);b=f;continue b}break}case 100:{if(!(vJ(b,122135)|0)){c[j>>2]=1;b=f;continue b}if(!(vJ(b,122128)|0)){c[j>>2]=2;b=f;continue b}break}case 105:{if(vJ(b,119143)|0?vJ(b,95855)|0:0)break c;c[j>>2]=0;b=f;continue b}case 98:{if(!(vJ(b,95865)|0)){h[i>>3]=2.0;b=f;continue b}break}case 102:{if(!(vJ(b,95883)|0)){c[g>>2]=1;b=f;continue b}break}case 117:{if(!(vJ(b,95890)|0)){c[g>>2]=0;b=f;continue b}break}case 116:{if(!(vJ(b,95899)|0)){b=f;continue b}break}default:{}}while(0);c[k>>2]=b;_l(0,95907,k)|0;b=f}}while(0);l=m;return}function DD(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;d=c[a+60>>2]|0;if((d|0?(i=d+96|0,f=c[i>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){d=b+16|0;h[g>>3]=(+h[b>>3]+ +h[d>>3])*.5;h[g+8>>3]=(+h[b+8>>3]+ +h[b+24>>3])*.5;b=g+16|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];if(!(c[a+152>>2]&8192)){cD(a,g,g,2)|0;f=c[i>>2]|0}hb[f&127](a,g,e)}l=j;return}function ED(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o;f=c[a+60>>2]|0;if((f|0?(n=f+100|0,c[n>>2]|0):0)?(k=a+16|0,g=c[k>>2]|0,c[g+144>>2]|0):0){j=g+16|0;if(!(e&4))g=0;else{i=g+56|0;e=e&-5;f=m;g=j;h=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));f=j;g=i;h=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));g=1}if(!(c[a+152>>2]&8192)){f=d+10|0;if((c[42440]|0)<(d|0)){c[42440]=f;f=vw(c[42441]|0,f<<4)|0;c[42441]=f}else f=c[42441]|0;cD(a,b,f,d)|0;nb[c[n>>2]&31](a,f,d,e)}else nb[c[n>>2]&31](a,b,d,e);if(g|0){f=(c[k>>2]|0)+16|0;g=m;h=f+40|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0))}}l=o;return}function FD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+64|0;f=e;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];g=f+32|0;b=b+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[f+16>>3]=+h[f>>3];h[f+24>>3]=+h[f+40>>3];h[f+48>>3]=+h[g>>3];h[f+56>>3]=+h[f+8>>3];ED(a,f,4,d);l=e;return}function GD(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;h=c[a+60>>2]|0;do if((h|0?(j=h+104|0,i=c[j>>2]|0,i|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){h=g&255;if(c[a+152>>2]&8192|0){kb[i&15](a,b,d,e,f,h);break}g=d+10|0;if((c[42440]|0)<(d|0)){c[42440]=g;g=vw(c[42441]|0,g<<4)|0;c[42441]=g}else g=c[42441]|0;cD(a,b,g,d)|0;kb[c[j>>2]&15](a,g,d,e,f,h)}while(0);return}function HD(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a+60>>2]|0;do if((e|0?(g=e+108|0,f=c[g>>2]|0,f|0):0)?c[(c[a+16>>2]|0)+144>>2]|0:0){if(c[a+152>>2]&8192|0){hb[f&127](a,b,d);break}e=d+10|0;if((c[42440]|0)<(d|0)){c[42440]=e;e=vw(c[42441]|0,e<<4)|0;c[42441]=e}else e=c[42441]|0;cD(a,b,e,d)|0;hb[c[g>>2]&127](a,e,d)}while(0);return}function ID(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+60>>2]|0;if((d|0?!((e|0)==0|(a[d>>0]|0)==0):0)?(f=c[e+112>>2]|0,f|0):0)cb[f&31](b,d);return}function JD(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;H=l;l=l+112|0;D=H+64|0;G=H;n=H+96|0;z=H+48|0;A=H+32|0;E=c[b+60>>2]|0;if(!b)va(96077,95960,691,95971);if(!d)va(95990,95960,692,95971);if(!(a[d>>0]|0))va(95995,95960,693,95971);F=Ir(d)|0;if(!F){if((E|0)!=0&(My(d)|0)!=0?(m=c[E+116>>2]|0,m|0):0)$a[m&7](b,d,e,f,g&255)}else{s=b+432|0;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];Lr(n,F,D);s=c[n>>2]|0;m=c[n+4>>2]|0;if(!((s|0)<1&(m|0)<1)){n=G+16|0;c[n>>2]=c[e>>2];c[n+4>>2]=c[e+4>>2];c[n+8>>2]=c[e+8>>2];c[n+12>>2]=c[e+12>>2];c[G>>2]=c[e>>2];c[G+4>>2]=c[e+4>>2];c[G+8>>2]=c[e+8>>2];c[G+12>>2]=c[e+12>>2];B=G+24|0;C=G+8|0;d=1;k=+h[G>>3];x=+h[C>>3];j=+h[n>>3];y=+h[B>>3];while(1){if((d|0)>=(f|0))break;I=e+(d<<4)|0;v=+h[I>>3];t=+h[(k<v?G:I)>>3];h[G>>3]=t;w=+h[e+(d<<4)+8>>3];u=+h[(x<w?G:I)+8>>3];h[C>>3]=u;v=+h[(j>v?n:I)>>3];h[n>>3]=v;w=+h[(y>w?n:I)+8>>3];h[B>>3]=w;d=d+1|0;k=t;x=u;j=v;y=w}v=j-k;w=y-x;o=+(m|0);p=+(s|0);t=v/p;q=w/o;u=o*q;r=p*t;a:do switch(KD(i)|0){case 1:if(t<q){p=r;o=o*t;break a}else{p=p*q;o=u;break a}case 2:{p=r;break}case 3:{o=u;break}case 4:{p=r;o=u;break}default:{}}while(0);if(p<v){v=(v-p)*.5;k=v+k;h[G>>3]=k;j=j-v;h[n>>3]=j}if(o<w){w=(w-o)*.5;h[C>>3]=w+x;h[B>>3]=y-w}if(!(c[b+152>>2]&8192)){c[D>>2]=c[G>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];bD(z,b,D);c[G>>2]=c[z>>2];c[G+4>>2]=c[z+4>>2];c[G+8>>2]=c[z+8>>2];c[G+12>>2]=c[z+12>>2];c[D>>2]=c[n>>2];c[D+4>>2]=c[n+4>>2];c[D+8>>2]=c[n+8>>2];c[D+12>>2]=c[n+12>>2];bD(A,b,D);c[n>>2]=c[A>>2];c[n+4>>2]=c[A+4>>2];c[n+8>>2]=c[A+8>>2];c[n+12>>2]=c[A+12>>2];k=+h[G>>3];j=+h[n>>3]}if(k>j){h[G>>3]=j;h[n>>3]=k}j=+h[C>>3];k=+h[B>>3];if(j>k){h[C>>3]=k;h[B>>3]=j}if(E|0){I=c[b+72>>2]|0;c[D>>2]=c[G>>2];c[D+4>>2]=c[G+4>>2];c[D+8>>2]=c[G+8>>2];c[D+12>>2]=c[G+12>>2];c[D+16>>2]=c[G+16>>2];c[D+20>>2]=c[G+20>>2];c[D+24>>2]=c[G+24>>2];c[D+28>>2]=c[G+28>>2];OD(b,F,D,g,I)}}}l=H;return}function KD(b){b=b|0;if(a[b>>0]|0)if(SK(b,96003)|0)if(SK(b,96009)|0)if(!(SK(b,96016)|0))b=4;else b=(FA(b)|0)<<24>>24!=0&1;else b=3;else b=2;else b=0;return b|0}function LD(a,b){a=a|0;b=+b;if(c[a+60>>2]|0)h[(c[a+16>>2]|0)+152>>3]=b;return}function MD(a,b){a=a|0;b=b|0;b=Gr(a,1,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+184>>2]=c[b+4>>2];c[a+172>>2]=c[b+12>>2];c[a+176>>2]=c[b>>2];c[a+180>>2]=c[b+16>>2];b=300}return b|0}function ND(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;f=i;Oo(b,122293,280,1)|0;g=b+16|0;c[(c[g>>2]|0)+144>>2]=a;if((so(b)|0)!=(b|0))c[(c[(so(b)|0)+16>>2]|0)+144>>2]=a;d=Im(b,96021)|0;e=a+172|0;if((d|0)!=0?(c[e>>2]=0,(MD(a,d)|0)==999):0){h=Hr(a,1,d)|0;c[f>>2]=d;c[f+4>>2]=h;_l(1,96028,f)|0;d=-1}else{e=c[e>>2]|0;if(!e)d=-1;else{Cv(1);aw(b,c[c[a+180>>2]>>2]&1);d=c[(c[g>>2]|0)+8>>2]|0;c[(c[(so(b)|0)+16>>2]|0)+8>>2]=d;Bz();d=c[e>>2]|0;if(d|0?(bb[d&127](b),h=c[e+4>>2]|0,h|0):0)c[(c[g>>2]|0)+148>>2]=h;Cv(0);d=0}}l=i;return d|0}function OD(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+176|0;k=n+8|0;j=n;h=n+40|0;if(!b)va(96077,96081,52,96095);if(!d)va(96107,96081,53,96095);i=c[d+8>>2]|0;if(!i)va(96110,96081,54,96095);if(!(a[i>>0]|0))va(96119,96081,55,96095);cL(h,c[d+28>>2]|0)|0;i=h+(TK(h)|0)|0;a[i>>0]=58;a[i+1>>0]=0;sN(h,g)|0;if((PD(b,h)|0)==999){c[j>>2]=h;_l(0,96131,j)|0}g=c[b+92>>2]|0;if(g|0?(m=c[g>>2]|0,m|0):0){c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];nb[m&31](b,d,k,f)}l=n;return}function PD(a,b){a=a|0;b=b|0;b=Gr(c[a>>2]|0,4,b)|0;if(!b)b=999;else{b=c[b+16>>2]|0;c[a+92>>2]=c[b+12>>2];c[a+96>>2]=c[b>>2];b=300}return b|0}function QD(a){a=a|0;return 1}function RD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function SD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+336|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function TD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]-10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function UD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+344|0;h[c>>3]=+h[c>>3]+10.0/+h[b+352>>3];a[b+537>>0]=1;return 0}function VD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]*1.1;a[b+537>>0]=1;return 0}function WD(b){b=b|0;var c=0;a[b+536>>0]=0;c=b+352|0;h[c>>3]=+h[c>>3]/1.1;a[b+537>>0]=1;return 0}function XD(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0;e=b+536|0;d=(a[e>>0]|0)==0;a[e>>0]=d&1;if(d){d=c[b+448>>2]|0;e=c[b+452>>2]|0;i=+(d>>>0);g=+(e>>>0);f=i/+(d|0)<g/+(e|0);h[b+352>>3]=(f?i:g)/+((f?d:e)|0);e=b+336|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;a[b+537>>0]=1}return 0}function YD(b){b=b|0;var d=0,e=0;d=c[(c[b>>2]|0)+168>>2]|0;e=b+580|0;if(!(c[e>>2]|0)){c[e>>2]=d;e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]|2;mE(b,d)}du(b,d);a[b+540>>0]=1;return}function ZD(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+16|0;m=C;x=b+452|0;t=b+448|0;y=e+8|0;o=b+536|0;A=b+360|0;p=b+541|0;q=b+538|0;z=b+336|0;n=d&255;B=b+344|0;u=b+352|0;v=b+528|0;w=b+520|0;switch(d|0){case 1:{c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];fE(b,m);lE(b);a[q>>0]=1;a[p>>0]=n;r=13;break}case 2:{a[q>>0]=1;a[p>>0]=n;r=13;break}case 3:{c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];fE(b,m);a[q>>0]=1;a[p>>0]=n;r=13;break}case 4:{a[o>>0]=0;j=+h[z>>3];k=+h[u>>3];i=+((c[t>>2]|0)>>>0)*.5;g=k*+h[w>>3];f=(+h[y>>3]-+((c[x>>2]|0)>>>0)*.5)*.10000000000000009/(k*+h[v>>3]);if(!(c[A>>2]|0))h[z>>3]=j+(+h[e>>3]-i)*.10000000000000009/g;else{h[z>>3]=j-f;f=(+h[e>>3]-i)*.10000000000000009/g}h[B>>3]=f+ +h[B>>3];h[u>>3]=k*1.1;r=13;break}case 5:{a[o>>0]=0;s=+h[u>>3]/1.1;h[u>>3]=s;k=+h[z>>3];j=+((c[t>>2]|0)>>>0)*.5;f=+h[v>>3];i=+h[w>>3];g=(+h[y>>3]-+((c[x>>2]|0)>>>0)*.5)*.10000000000000009;if(!(c[A>>2]|0))h[z>>3]=k-(+h[e>>3]-j)*.10000000000000009/(s*i);else{h[z>>3]=k+g/(s*f);g=(+h[e>>3]-j)*.10000000000000009;f=i}h[B>>3]=+h[B>>3]-g/(s*f);r=13;break}default:{}}if((r|0)==13)a[b+537>>0]=1;B=b+560|0;c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];l=C;return}function _D(b,c,d){b=b|0;c=c|0;d=d|0;a[b+538>>0]=0;a[b+541>>0]=0;return}function $D(b,d){b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0.0;n=l;l=l+16|0;f=n;m=b+560|0;e=(+h[d>>3]-+h[m>>3])/+h[b+520>>3];g=(+h[d+8>>3]-+h[b+568>>3])/+h[b+528>>3];if(!(+F(+e)<.0001?+F(+g)<.0001:0)){switch(a[b+541>>0]|0){case 0:{c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];fE(b,f);break}case 2:{f=b+336|0;o=+h[b+352>>3];j=+h[f>>3];i=e/o;k=b+344|0;e=g/o;g=+h[k>>3];if(!(c[b+360>>2]|0)){h[f>>3]=j-i;e=g-e}else{h[f>>3]=j-e;e=i+g}h[k>>3]=e;a[b+537>>0]=1;break}default:{}}c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2]}l=n;return}function aE(a,b,c){a=a|0;b=b|0;c=c|0;return}function bE(a){a=a|0;return}function cE(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[b>>2]|0;if(d){d=uL(d,123648)|0;if(d|0){i=er(d,0)|0;AL(d)|0;f=5}}else{i=er(c[13950]|0,0)|0;f=5}if((f|0)==5?i|0:0){g=j+168|0;d=c[g>>2]|0;if(d|0){f=c[j+172>>2]|0;if((f|0)!=0?(h=c[f+4>>2]|0,(h|0)!=0):0){bb[h&127](d);d=c[g>>2]|0}fw(d);ln(c[g>>2]|0)|0}To(i,0,122293,280,1);To(i,1,122257,304,1);To(i,2,122270,176,1);c[g>>2]=i;c[(c[i+16>>2]|0)+144>>2]=j;if((is(j,i,e)|0)!=-1){c[b+580>>2]=0;c[b+576>>2]=0;a[b+537>>0]=1}}return}function dE(a,b){a=a|0;b=b|0;a=c[a>>2]|0;is(a,c[a+168>>2]|0,b)|0;return}function eE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=c[a>>2]|0;f=g+160|0;e=c[f>>2]|0;if((e|0)!=0?(c[g+164>>2]|0)==0:0){i=g+192|0;h=c[i>>2]|0;c[f>>2]=0;c[i>>2]=0;f=h}else{f=0;e=0}ks(g,c[g+168>>2]|0,b,d)|0;if(e|0){i=c[a>>2]|0;c[i+160>>2]=e;c[i+192>>2]=f}return}function fE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0,k=0.0,m=0;f=l;l=l+80|0;e=f+48|0;g=f;m=f+32|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];gE(m,b,e);k=+h[m>>3];j=+h[m+8>>3];i=1.0/+h[b+352>>3];h[g+16>>3]=k+i;h[g+24>>3]=j+i;h[g>>3]=k-i;h[g+8>>3]=j-i;d=c[(c[b>>2]|0)+168>>2]|0;c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];c[e+16>>2]=c[g+16>>2];c[e+20>>2]=c[g+20>>2];c[e+24>>2]=c[g+24>>2];c[e+28>>2]=c[g+28>>2];d=hE(d,e)|0;e=b+576|0;if((d|0)!=(c[e>>2]|0)){iE(b);c[e>>2]=d;jE(b);a[b+537>>0]=1}l=f;return}function gE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[b+352>>3];g=+h[d>>3];i=e*+h[b+520>>3];e=+h[d+8>>3]/(e*+h[b+528>>3]);if(!(c[b+360>>2]|0))f=g/i;else{f=e;e=-g/i}i=e-+h[b+512>>3];h[a>>3]=f-+h[b+504>>3];h[a+8>>3]=i;return}function hE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g;e=co(a)|0;a:while(1){if(!e){e=9;break}d=Pm(a,e)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((AB(d,f)|0)<<24>>24){e=6;break a}d=Rm(a,d)|0}e=eo(a,e)|0}do if((e|0)!=6)if((e|0)==9){d=fo(a)|0;while(1){if(!d)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];if((xB(d,f)|0)<<24>>24){e=12;break}d=go(a,d)|0}if((e|0)==12)break;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];c[f+20>>2]=c[b+20>>2];c[f+24>>2]=c[b+24>>2];c[f+28>>2]=c[b+28>>2];d=kE(a,f)|0;if(!d){d=a;break}else break}while(0);l=g;return d|0}function iE(b){b=b|0;var d=0;d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{d=(c[d+16>>2]|0)+112|0;a[d>>0]=a[d>>0]&-2;break a}case 1:{d=(c[d+16>>2]|0)+117|0;a[d>>0]=a[d>>0]&-2;break a}case 2:{d=(c[d+16>>2]|0)+115|0;a[d>>0]=a[d>>0]&-2;break a}default:break a}while(0);c[b+584>>2]=0;return}function jE(b){b=b|0;var d=0,e=0;e=b+584|0;d=c[e>>2]|0;if(d|0){xN(d);c[e>>2]=0}d=c[b+576>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{b=(c[d+16>>2]|0)+112|0;a[b>>0]=a[b>>0]|1;b=ym(d,0,96245,0)|0;if(!b)break a;c[e>>2]=nw(Jm(d,b)|0,d)|0;break a}case 1:{b=(c[d+16>>2]|0)+117|0;a[b>>0]=a[b>>0]|1;b=ym(ro(d)|0,1,96245,0)|0;if(!b)break a;c[e>>2]=nw(Jm(d,b)|0,d)|0;break a}case 2:{b=(c[d+16>>2]|0)+115|0;a[b>>0]=a[b>>0]|1;b=ym(ro(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0,2,96245,0)|0;if(!b)break a;c[e>>2]=nw(Jm(d,b)|0,d)|0;break a}default:break a}while(0);return}function kE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0;m=l;l=l+32|0;e=m;g=c[a+16>>2]|0;i=c[g+180>>2]|0;j=g+184|0;d=1;while(1){if((d|0)>(i|0)){k=4;break}f=c[(c[j>>2]|0)+(d<<2)>>2]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];c[e+16>>2]=c[b+16>>2];c[e+20>>2]=c[b+20>>2];c[e+24>>2]=c[b+24>>2];c[e+28>>2]=c[b+28>>2];f=kE(f,e)|0;if(!f)d=d+1|0;else{a=f;break}}do if((k|0)==4){o=+h[g+24>>3];n=+h[g+40>>3];if(((+h[b+16>>3]>=+h[g+16>>3]?+h[g+32>>3]>=+h[b>>3]:0)?+h[b+24>>3]>=o:0)?n>=+h[b+8>>3]:0)break;a=0}while(0);l=m;return a|0}function lE(b){b=b|0;var d=0,e=0,f=0;f=b+580|0;d=c[f>>2]|0;a:do if(d|0)switch(Co(d)|0){case 0:{e=(c[d+16>>2]|0)+112|0;a[e>>0]=a[e>>0]&-7|4;break a}case 1:{e=(c[d+16>>2]|0)+117|0;a[e>>0]=a[e>>0]&-7|4;break a}case 2:{e=(c[d+16>>2]|0)+115|0;a[e>>0]=a[e>>0]&-7|4;break a}default:break a}while(0);d=b+588|0;e=c[d>>2]|0;if(e|0){xN(e);c[d>>2]=0}d=c[b+576>>2]|0;c[f>>2]=d;b:do if(d|0)switch(Co(d)|0){case 0:{f=(c[d+16>>2]|0)+112|0;a[f>>0]=a[f>>0]|2;mE(b,d);break b}case 1:{f=(c[d+16>>2]|0)+117|0;a[f>>0]=a[f>>0]|2;nE(b,d);break b}case 2:{f=(c[d+16>>2]|0)+115|0;a[f>>0]=a[f>>0]|2;oE(b,d);break b}default:break b}while(0);return}function mE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=a+592|0;do if((so(b)|0)==(b|0))if(!(qn(b)|0)){Br(d,0,96302);break}else{Br(d,0,96294);break}else Br(d,0,96308);while(0);Br(d,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;d=0;e=2;while(1){d=Dm(b,0,d)|0;if(!d)break;Br(f,e,c[d+8>>2]|0);Br(f,e+1|0,Jm(b,d)|0);Br(f,e+2|0,0);e=e+3|0}c[a+608>>2]=e;d=ym(b,0,96280,0)|0;if(!d){d=ym(b,0,96285,0)|0;if(d|0)g=11}else g=11;if((g|0)==11)c[a+588>>2]=nw(Jm(b,d)|0,b)|0;return}function nE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=a+592|0;Br(f,0,96289);Br(f,1,Dn(b)|0);c[a+596>>2]=2;f=a+604|0;g=so(ro(b)|0)|0;e=2;d=0;while(1){d=Dm(g,1,d)|0;if(!d)break;Br(f,e,c[d+8>>2]|0);Br(f,e|1,Jm(b,d)|0);e=e+2|0}c[a+608>>2]=e;d=ym(ro(b)|0,1,96280,0)|0;if(!d){d=ym(ro(b)|0,1,96285,0)|0;if(d|0)h=6}else h=6;if((h|0)==6)c[a+588>>2]=nw(Jm(b,d)|0,b)|0;return}function oE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=a+592|0;Br(h,0,96253);k=b+48|0;Br(h,1,Dn(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0);k=(qn(ro(c[((c[b>>2]&3|0)==3?b:k)+40>>2]|0)|0)|0)!=0;Br(h,3,k?122562:122565);k=b+-48|0;Br(h,4,Dn(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0);c[a+596>>2]=7;i=a+604|0;j=so(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0)|0;g=7;d=0;a:while(1){while(1){d=Dm(j,2,d)|0;if(!d)break a;e=d+8|0;f=c[e>>2]|0;if(!(vJ(f,96258)|0)){l=5;break}if(!(vJ(f,96267)|0)){l=7;break}if(vJ(f,96276)|0)break;Br(h,6,Jm(b,d)|0)}if((l|0)==5){l=0;Br(h,2,Jm(b,d)|0)}else if((l|0)==7){l=0;Br(h,5,Jm(b,d)|0)}Br(i,g,c[e>>2]|0);Br(i,g+1|0,Jm(b,d)|0);g=g+2|0}c[a+608>>2]=g;d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96280,0)|0;if(!d){d=ym(ro(c[((c[b>>2]&3|0)==2?b:k)+40>>2]|0)|0,2,96285,0)|0;if(d|0)l=13}else l=13;if((l|0)==13)c[a+588>>2]=nw(Jm(b,d)|0,b)|0;return}function pE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=qE(a,b,c[d>>2]|0)|0;d=c[d+4>>2]|0;while(1){f=c[d+4>>2]|0;if(!f)break;b=0;while(1){e=c[f+(b*20|0)+4>>2]|0;if(!e)break;Er(a,c[d>>2]|0,e,c[f+(b*20|0)+8>>2]|0,g,f+(b*20|0)|0)|0;b=b+1|0}d=d+8|0}return}function qE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=tw(12)|0;if(!b)b=0;else b=mL(b)|0;c[e+4>>2]=b;c[e+8>>2]=mL(d)|0;d=a+100|0;c[e>>2]=c[d>>2];c[d>>2]=e;return e|0}function rE(b,c){b=b|0;c=c|0;sE(b);a[b+44>>0]=0;tE(b)|0;qA(b)|0;return}function sE(b){b=b|0;var d=0,e=0;d=c[b+32>>2]|0;a:do if(d|0)while(1){e=c[d>>2]|0;if(!e)break a;if((a[e>>0]|0)==103?RL(e,96317)|0:0)pE(b,0,c[d+4>>2]|0);d=d+8|0}while(0);return}function tE(a){a=a|0;var b=0;b=Gr(a,2,96330)|0;if(!b)a=999;else{c[a+148>>2]=c[(c[b+16>>2]|0)+12>>2];a=300}return a|0}function uE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a=c[a+148>>2]|0;if((a|0)!=0?(e=c[a>>2]|0,(e|0)!=0):0)a=lb[e&63](b,d)|0;else a=0;return a|0}function vE(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;return (c[b>>2]|0)-(c[d>>2]|0)|0}function wE(a){a=a|0;var b=0.0,d=0.0;a=c[a+16>>2]|0;d=+h[a+16>>3];b=+h[a+24>>3];return (xE(~~(d>b?d:b)>>>0)|0)+1|0}function xE(a){a=a|0;var b=0,c=0;if(!a)a=-1;else{b=a>>>0>65535;c=b?a>>>16:a;a=b?16:0;b=c>>>0>255;c=b?c>>>8:c;a=b?a|8:a;b=c>>>0>15;c=b?c>>>4:c;a=b?a|4:a;b=c>>>0>3;a=((b?c>>>2:c)>>>0>1&1)+(b?a|2:a)|0}return a|0}function yE(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;q=r;p=zE(b,d,e,f,g)|0;e=AE(p)|0;if((e|0)>=0){n=q+16|0;o=q+24|0;m=q+8|0;k=g+32|0;e=0;g=0;while(1){if((g|0)>=(d|0))break;f=b+(g*40|0)+32|0;do if(c[f>>2]|0){BE(q,p,b+(g*40|0)|0);i=+h[n>>3];j=+h[o>>3];if(!(c[q>>2]|0)){a[(c[f>>2]|0)+36>>0]=1;break}if(+h[m>>3]==0.0){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1;break}if((a[k>>0]|0)==1){f=c[f>>2]|0;h[f+16>>3]=i;h[f+24>>3]=j;a[f+36>>0]=1}else e=1}while(0);g=g+1|0}CE(p)}l=r;return e|0}function zE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;g=sw(28)|0;j=Ql(24904,c[4348]|0)|0;h=g+20|0;c[h>>2]=j;do if(j){j=iH()|0;c[g+24>>2]=j;if(!j){oL(96548,14,1,c[13857]|0)|0;i=6;break}else{c[g>>2]=a;c[g+4>>2]=b;c[g+8>>2]=d;c[g+12>>2]=e;c[g+16>>2]=f;break}}else{oL(96548,14,1,c[13857]|0)|0;i=6}while(0);if((i|0)==6){a=c[h>>2]|0;if(a|0)Kl(a)|0;a=c[g+24>>2]|0;if(a|0)kH(a)|0;xN(g);g=0}return g|0}function AE(a){a=a|0;var b=0;b=LE(a)|0;if((b|0)>=0){ME(a);NE(a);b=Kl(c[a+20>>2]|0)|0}return b|0}function BE(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0.0,N=0,O=0;O=l;l=l+464|0;L=O+416|0;N=O+400|0;I=O+384|0;j=O+352|0;n=O+320|0;o=O+288|0;p=O+256|0;r=O+224|0;s=O+192|0;t=O+160|0;u=O+128|0;v=O+96|0;w=O+64|0;x=O+32|0;J=O;y=c[d+32>>2]|0;e=+h[y>>3];B=d+16|0;z=(e*2.0+ +h[B>>3])*.125;C=y+8|0;K=d+24|0;i=+h[K>>3];M=(+h[C>>3]*2.0+i)*.5;if(!y)va(96341,96351,445,96361);f=L;g=f+36|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));A=y+16|0;h[A>>3]=+h[d>>3]-e;D=d+8|0;E=y+24|0;h[E>>3]=i+ +h[D>>3];DE(j,b,d,L);m=c[j>>2]|0;f=c[j+4>>2]|0;e=+h[j+8>>3];H=j+16|0;c[N>>2]=c[H>>2];c[N+4>>2]=c[H+4>>2];c[N+8>>2]=c[H+8>>2];c[N+12>>2]=c[H+12>>2];H=a+16|0;G=a+8|0;F=a+4|0;a:do if(!m){c[a>>2]=0;c[F>>2]=f;h[G>>3]=e;c[H>>2]=c[N>>2];c[H+4>>2]=c[N+4>>2];c[H+8>>2]=c[N+8>>2];c[H+12>>2]=c[N+12>>2]}else{h[E>>3]=+h[D>>3];DE(n,b,d,L);g=c[n>>2]|0;j=c[n+4>>2]|0;i=+h[n+8>>3];n=n+16|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];f=j;e=i}else g=m;h[E>>3]=+h[D>>3]-+h[C>>3];DE(o,b,d,L);m=c[o>>2]|0;j=c[o+4>>2]|0;i=+h[o+8>>3];o=o+16|0;c[I>>2]=c[o>>2];c[I+4>>2]=c[o+4>>2];c[I+8>>2]=c[o+8>>2];c[I+12>>2]=c[o+12>>2];if(!m){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];f=j;e=i}else m=g;h[A>>3]=+h[d>>3];h[E>>3]=+h[D>>3]+ +h[K>>3];DE(p,b,d,L);g=c[p>>2]|0;j=c[p+4>>2]|0;i=+h[p+8>>3];p=p+16|0;c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=g;f=j;e=i}h[E>>3]=+h[D>>3]-+h[C>>3];DE(r,b,d,L);g=c[r>>2]|0;j=c[r+4>>2]|0;i=+h[r+8>>3];r=r+16|0;c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=g;f=j;e=i}h[A>>3]=+h[d>>3]+ +h[B>>3];h[E>>3]=+h[D>>3]+ +h[K>>3];DE(s,b,d,L);g=c[s>>2]|0;j=c[s+4>>2]|0;i=+h[s+8>>3];s=s+16|0;c[I>>2]=c[s>>2];c[I+4>>2]=c[s+4>>2];c[I+8>>2]=c[s+8>>2];c[I+12>>2]=c[s+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=g;f=j;e=i}h[E>>3]=+h[D>>3];DE(t,b,d,L);g=c[t>>2]|0;j=c[t+4>>2]|0;i=+h[t+8>>3];t=t+16|0;c[I>>2]=c[t>>2];c[I+4>>2]=c[t+4>>2];c[I+8>>2]=c[t+8>>2];c[I+12>>2]=c[t+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=g;f=j;e=i}h[E>>3]=+h[D>>3]-+h[C>>3];DE(u,b,d,L);g=c[u>>2]|0;j=c[u+4>>2]|0;i=+h[u+8>>3];u=u+16|0;c[I>>2]=c[u>>2];c[I+4>>2]=c[u+4>>2];c[I+8>>2]=c[u+8>>2];c[I+12>>2]=c[u+12>>2];if(!g){c[a>>2]=0;c[F>>2]=j;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];f=j;e=i}else g=m;t=L+12|0;u=L+32|0;n=(c[L+28>>2]|0)!=0;o=(c[u>>2]|0)==0;j=c[t>>2]|0;m=c[L>>2]|0;do if(!(o&(((c[L+24>>2]|0)!=0|n)^1)&(j|0)==0&(m|0)==0)){do if(o&(n^1)){h[A>>3]=+h[d>>3]-+h[y>>3];p=v+4|0;r=v+8|0;s=v+16|0;m=E;j=D;i=+h[K>>3];b:while(1){while(1){h[m>>3]=i+ +h[j>>3];if(!(+h[A>>3]<=+h[d>>3]+ +h[B>>3])){n=42;break b}DE(v,b,d,L);n=c[v>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[I>>2]=c[s>>2];c[I+4>>2]=c[s+4>>2];c[I+8>>2]=c[s+8>>2];c[I+12>>2]=c[s+12>>2];if(!n){n=39;break b}if(k<e)break;else{m=A;j=A;i=z}}c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=A;j=A;i=z;g=n;f=o;e=k}if((n|0)==39){c[a>>2]=0;c[F>>2]=o;h[G>>3]=k;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break a}else if((n|0)==42){j=c[t>>2]|0;m=c[L>>2]|0;break}}while(0);if(!((j|0)==0&(m|0)==0))break;h[A>>3]=+h[d>>3]-+h[y>>3];k=+h[D>>3];n=w+4|0;o=w+8|0;p=w+16|0;i=k;k=k+ +h[K>>3];while(1){h[E>>3]=k;if(!(k>=i-+h[C>>3])){n=51;break}DE(w,b,d,L);j=c[w>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];if(!j){n=47;break}if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];g=j;f=m;e=i}i=+h[D>>3];k=+h[E>>3]-M}if((n|0)==47){c[a>>2]=0;c[F>>2]=m;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break a}else if((n|0)==51){m=c[L>>2]|0;break}}else m=0;while(0);i=+h[d>>3];k=i+ +h[B>>3];h[A>>3]=k;q=+h[C>>3];h[E>>3]=+h[D>>3]-q;t=L+20|0;o=(c[L+4>>2]|0)!=0;n=(m|0)==0;m=c[t>>2]|0;j=c[u>>2]|0;c:do if(!(n&(((c[L+8>>2]|0)!=0|o)^1)&(m|0)==0&(j|0)==0)){do if(n&(o^1)){h[A>>3]=k;p=x+4|0;r=x+8|0;s=x+16|0;m=E;j=D;i=q;d:while(1){while(1){h[m>>3]=+h[j>>3]-i;i=+h[d>>3];if(!(+h[A>>3]>=i-+h[y>>3])){n=61;break d}DE(x,b,d,L);n=c[x>>2]|0;o=c[p>>2]|0;k=+h[r>>3];c[I>>2]=c[s>>2];c[I+4>>2]=c[s+4>>2];c[I+8>>2]=c[s+8>>2];c[I+12>>2]=c[s+12>>2];if(!n){n=58;break d}if(k<e)break;else{m=A;j=A;i=z}}c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];m=A;j=A;i=z;g=n;f=o;e=k}if((n|0)==58){c[a>>2]=0;c[F>>2]=o;h[G>>3]=k;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break a}else if((n|0)==61){m=c[t>>2]|0;j=c[u>>2]|0;break}}while(0);if(!((m|0)==0&(j|0)==0))break;h[A>>3]=i+ +h[B>>3];i=+h[D>>3];n=J+4|0;o=J+8|0;p=J+16|0;k=i;i=i-+h[C>>3];while(1){h[E>>3]=i;if(!(i<=k+ +h[K>>3]))break c;DE(J,b,d,L);j=c[J>>2]|0;m=c[n>>2]|0;i=+h[o>>3];c[I>>2]=c[p>>2];c[I+4>>2]=c[p+4>>2];c[I+8>>2]=c[p+8>>2];c[I+12>>2]=c[p+12>>2];if(!j)break;if(i<e){c[N>>2]=c[I>>2];c[N+4>>2]=c[I+4>>2];c[N+8>>2]=c[I+8>>2];c[N+12>>2]=c[I+12>>2];g=j;f=m;e=i}k=+h[D>>3];i=M+ +h[E>>3]}c[a>>2]=0;c[F>>2]=m;h[G>>3]=i;c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];break a}while(0);c[a>>2]=g;c[F>>2]=f;h[G>>3]=e;c[H>>2]=c[N>>2];c[H+4>>2]=c[N+4>>2];c[H+8>>2]=c[N+8>>2];c[H+12>>2]=c[N+12>>2]}while(0);l=O;return}function CE(a){a=a|0;kH(c[a+24>>2]|0)|0;xN(a);return}function DE(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0.0,j=0,k=0,m=0,n=0.0,o=0,p=0,q=0,r=0.0,s=0,t=0;t=l;l=l+48|0;q=t+32|0;s=t+16|0;p=t;g=c[e+32>>2]|0;if(!g)va(96341,96351,382,96370);o=g+16|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];o=d+4|0;m=0;g=0;while(1){if((m|0)>=(c[o>>2]|0))break;j=c[d>>2]|0;k=j+(m*40|0)|0;do if((k|0)!=(e|0)){if(+h[j+(m*40|0)+16>>3]>0.0?+h[j+(m*40|0)+24>>3]>0.0:0)break;g=((EE(e,k)|0)!=0&1)+g|0}while(0);m=m+1|0}FE(e,q);m=c[d+24>>2]|0;m=mH(m,c[m>>2]|0,q)|0;if(!m){c[b>>2]=g;h[b+8>>3]=0.0;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}else{k=m;i=0.0;while(1){if(!k)break;j=c[(c[k+4>>2]|0)+16>>2]|0;if((j|0)!=(e|0)){GE(j,s);n=+HE(q,s);if(n>0.0){g=g+1|0;i=i+ +IE(e,j,q,n,f)}d=c[j+32>>2]|0;if(((d|0)!=0?(a[d+36>>0]|0)!=0:0)?(FE(j,s),r=+HE(q,s),r>0.0):0){g=g+1|0;i=i+ +JE(e,j,q,r,f)}}k=c[k>>2]|0}hH(m);c[b>>2]=g;h[b+8>>3]=i;s=b+16|0;c[s>>2]=c[p>>2];c[s+4>>2]=c[p+4>>2];c[s+8>>2]=c[p+8>>2];c[s+12>>2]=c[p+12>>2]}l=t;return}function EE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0.0,g=0.0;a=c[a+32>>2]|0;if(+h[b+16>>3]==0.0?+h[b+24>>3]==0.0:0){if(!a)a=0;else{g=+h[b>>3];f=+h[a+16>>3];if((g>f?g<f+ +h[a>>3]:0)?(d=+h[b+8>>3],e=+h[a+24>>3],d>e):0)a=d<e+ +h[a+8>>3];else a=0;a=a&1}return a|0}va(96407,96351,219,96444);return 0}function FE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;a=c[a+32>>2]|0;e=+h[a+16>>3];c[b>>2]=~~e;d=+h[a+24>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(e+ +h[a>>3]);c[b+12>>2]=~~(d+ +h[a+8>>3]);return}function GE(a,b){a=a|0;b=b|0;var d=0.0,e=0.0;e=+h[a>>3];c[b>>2]=~~e;d=+h[a+8>>3];c[b+4>>2]=~~d;c[b+8>>2]=~~(e+ +h[a+16>>3]);c[b+12>>2]=~~(d+ +h[a+24>>3]);return}function HE(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;i=c[a+8>>2]|0;j=c[b>>2]|0;if((((i|0)>=(j|0)?(k=c[a>>2]|0,l=c[b+8>>2]|0,(k|0)<=(l|0)):0)?(e=c[a+12>>2]|0,f=c[b+4>>2]|0,(e|0)>=(f|0)):0)?(g=c[a+4>>2]|0,h=c[b+12>>2]|0,(g|0)<=(h|0)):0)d=(+(c[((i|0)<(l|0)?a:b)+8>>2]|0)-+(c[((k|0)>(j|0)?a:b)>>2]|0))*(+(c[((e|0)<(h|0)?a:b)+12>>2]|0)-+(c[((g|0)>(f|0)?a:b)+4>>2]|0));else d=0.0;return +d}function IE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=KE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{GE(a,i);g=+HE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(FE(a,i),h=+HE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function JE(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;var g=0.0,h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;a=KE(a,b)|0;f=f+(((a|0)<0?5:a)<<2)|0;a=c[f>>2]|0;if(!a){c[f>>2]=b;g=e}else{GE(a,i);g=+HE(d,i);g=g>e?g:0.0;a=c[f>>2]|0;if((c[a+32>>2]|0)!=0?(FE(a,i),h=+HE(d,i),h>e):0)g=h>g?h:g;if(!(g>0.0)){c[f>>2]=b;g=e}}l=j;return +g}function KE(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0;e=c[b+32>>2]|0;f=c[d+32>>2]|0;if((e|0)==(f|0))va(96386,96351,276,96396);do if((a[e+36>>0]|0)!=0?(a[f+36>>0]|0)!=0:0){k=+h[b>>3];e=b+8|0;if(k==0.0?+h[e>>3]==0.0:0){e=-1;break}i=+h[d>>3];j=+h[d+8>>3];if(!(i==0.0&j==0.0)){g=+h[e>>3];f=i<k;e=i>k;if(j<g){if(f){e=0;break}e=e?2:1;break}if(!(j>g))return (f|e^1?(f?3:-1):5)|0;if(f)e=6;else e=e?8:7}else e=-1}else e=-1;while(0);return e|0}function LE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;k=l;l=l+32|0;d=k+24|0;e=k+16|0;f=k;g=wE(a)|0;h=a+4|0;i=e+4|0;j=a+20|0;b=0;while(1){if((b|0)>=(c[h>>2]|0)){b=0;break}m=sw(32)|0;o=(c[a>>2]|0)+(b*40|0)|0;n=m+12|0;c[m+28>>2]=o;OE(f,o);c[n>>2]=c[f>>2];c[n+4>>2]=c[f+4>>2];c[n+8>>2]=c[f+8>>2];c[n+12>>2]=c[f+12>>2];n=c[n>>2]|0;c[e>>2]=(((c[m+20>>2]|0)-n|0)/2|0)+n;n=c[m+16>>2]|0;c[i>>2]=(((c[m+24>>2]|0)-n|0)/2|0)+n;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[m+8>>2]=PE(d,g)|0;n=c[j>>2]|0;if(!(Za[c[n>>2]&31](n,m,1)|0)){b=-1;break}else b=b+1|0}l=k;return b|0}function ME(a){a=a|0;var b=0,d=0,e=0;d=a+20|0;e=c[d>>2]|0;b=a+24|0;a=Za[c[e>>2]&31](e,0,128)|0;while(1){if(!a)break;e=c[b>>2]|0;nH(e,a+12|0,c[a+28>>2]|0,e,0)|0;e=c[d>>2]|0;a=Za[c[e>>2]&31](e,a,8)|0}return}function NE(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=a+20|0;f=Sl(c[e>>2]|0)|0;d=0;while(1){if(!(Sl(c[e>>2]|0)|0))break;g=c[e>>2]|0;a=c[(c[g+8>>2]|0)+4>>2]|0;if(!a){h=8;break}b=c[(c[g+4>>2]|0)+8>>2]|0;if((b|0)<0)a=c[a+8>>2]|0;else a=a+(0-b)|0;if(!a){h=8;break}Za[c[g>>2]&31](g,a,4096)|0;xN(a);d=d+1|0}if((h|0)==8)va(96457,96351,616,96460);if((f|0)==(d|0))return;else va(96472,96351,623,96460)}function OE(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,j=0,k=0,l=0.0;d=c[b+32>>2]|0;if(!d){e=0.0;f=0.0}else{e=+h[d>>3];f=+h[d+8>>3]}l=+h[b>>3];k=~~+E(+(l-e));g=+h[b+8>>3];j=~~+E(+(g-f));i=~~+R(+(e+(l+ +h[b+16>>3])));if((i|0)==2147483647)va(96484,96351,264,96511);d=~~+R(+(f+(g+ +h[b+24>>3])));if((d|0)==2147483647)va(96521,96351,266,96511);else{c[a>>2]=k;c[a+4>>2]=j;c[a+8>>2]=i;c[a+12>>2]=d;return}}function PE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;f=0;e=c[a>>2]|0;d=c[a+4>>2]|0;while(1){a=b+-1|0;if((b|0)<=0)break;i=e>>>a&1;b=d>>>a&1;g=b+-1|0;h=g&(e^d);g=g&0-i;f=i<<1|f<<2|i^b;b=a;e=h^e^g;d=h^d^g}return f|0}function QE(b){b=b|0;var d=0,e=0,f=0,g=0;d=TK(b)|0;if(d>>>0>=(c[42442]|0)>>>0){d=d+11|0;c[42442]=d;d=vw(c[42443]|0,d)|0;c[42443]=d;if(!d)d=0;else e=4}else{d=c[42443]|0;e=4}if((e|0)==4){g=d;while(1){e=a[b>>0]|0;if(!(e<<24>>24))break;f=e&255;if(iJ(f)|0)e=(hJ(f)|0)&255;a[g>>0]=e;g=g+1|0;b=b+1|0}a[g>>0]=0}return d|0}function RE(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,i=0.0,j=0.0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0.0;N=l;l=l+144|0;s=N+96|0;q=N+80|0;v=N+124|0;t=N+72|0;w=N+64|0;x=N+56|0;K=N+48|0;L=N+40|0;M=N+32|0;G=N+24|0;H=N+16|0;I=N+8|0;J=N;k=N+120|0;n=N+116|0;o=N+112|0;p=N+108|0;c[e+32>>2]=f;while(1)if((a[b>>0]|0)==32)b=b+1|0;else break;c[p>>2]=255;g=a[b>>0]|0;y=e+12|0;z=e+8|0;A=e+4|0;B=e+24|0;C=e+16|0;D=e+1|0;E=e+2|0;F=e+3|0;a:do if(g<<24>>24==35){c[q>>2]=k;c[q+4>>2]=n;c[q+8>>2]=o;c[q+12>>2]=p;if((FL(b,96563,q)|0)<=2){g=a[b>>0]|0;r=12;break}switch(f|0){case 0:{O=+((c[k>>2]|0)>>>0)/255.0;h[K>>3]=O;i=+((c[n>>2]|0)>>>0)/255.0;h[L>>3]=i;j=+((c[o>>2]|0)>>>0)/255.0;h[M>>3]=j;m=+((c[p>>2]|0)>>>0)/255.0;SE(O,i,j,t,w,x);h[e>>3]=+h[t>>3];h[z>>3]=+h[w>>3];h[C>>3]=+h[x>>3];h[B>>3]=m;b=0;break a}case 1:{a[e>>0]=c[k>>2];a[D>>0]=c[n>>2];a[E>>0]=c[o>>2];a[F>>0]=c[p>>2];b=0;break a}case 3:{j=+((c[k>>2]|0)>>>0)/255.0;h[K>>3]=j;m=+((c[n>>2]|0)>>>0)/255.0;h[L>>3]=m;O=+((c[o>>2]|0)>>>0)/255.0;h[M>>3]=O;TE(j,m,O,G,H,I,J);a[e>>0]=~~+h[G>>3]*255;a[D>>0]=~~+h[H>>3]*255;a[E>>0]=~~+h[I>>3]*255;a[F>>0]=~~+h[J>>3]*255;b=0;break a}case 2:{c[e>>2]=(((c[k>>2]|0)*65535|0)>>>0)/255|0;c[A>>2]=(((c[n>>2]|0)*65535|0)>>>0)/255|0;c[z>>2]=(((c[o>>2]|0)*65535|0)>>>0)/255|0;c[y>>2]=(((c[p>>2]|0)*65535|0)>>>0)/255|0;b=0;break a}case 4:{h[e>>3]=+((c[k>>2]|0)>>>0)/255.0;h[z>>3]=+((c[n>>2]|0)>>>0)/255.0;h[C>>3]=+((c[o>>2]|0)>>>0)/255.0;h[B>>3]=+((c[p>>2]|0)>>>0)/255.0;b=0;break a}default:{b=0;break a}}}else r=12;while(0);b:do if((r|0)==12){if(!(g<<24>>24!=46?((g&255)+-48|0)>>>0>=10:0)){g=TK(b)|0;if(g>>>0>=(c[42444]|0)>>>0){g=g+11|0;c[42444]=g;g=vw(c[42445]|0,g)|0;c[42445]=g;if(!g){b=-1;break}}else g=c[42445]|0;n=g;k=b;c:while(1){o=k+1|0;k=a[k>>0]|0;switch(k<<24>>24){case 0:break c;case 44:{k=32;break}default:{}}a[n>>0]=k;n=n+1|0;k=o}a[n>>0]=0;c[s>>2]=t;c[s+4>>2]=w;c[s+8>>2]=x;if((FL(g,96577,s)|0)==3){m=+h[t>>3];m=m<1.0?m:1.0;m=m>0.0?m:0.0;h[t>>3]=m;j=+h[w>>3];j=j<1.0?j:1.0;j=j>0.0?j:0.0;h[w>>3]=j;i=+h[x>>3];i=i<1.0?i:1.0;i=i>0.0?i:0.0;h[x>>3]=i;switch(f|0){case 0:{h[e>>3]=m;h[z>>3]=j;h[C>>3]=i;h[B>>3]=1.0;b=0;break b}case 1:{UE(m,j,i,K,L,M);a[e>>0]=~~(+h[K>>3]*255.0);a[D>>0]=~~(+h[L>>3]*255.0);a[E>>0]=~~(+h[M>>3]*255.0);a[F>>0]=-1;b=0;break b}case 3:{UE(m,j,i,K,L,M);TE(+h[K>>3],+h[L>>3],+h[M>>3],G,H,I,J);a[e>>0]=~~+h[G>>3]*255;a[D>>0]=~~+h[H>>3]*255;a[E>>0]=~~+h[I>>3]*255;a[F>>0]=~~+h[J>>3]*255;b=0;break b}case 2:{UE(m,j,i,K,L,M);c[e>>2]=~~(+h[K>>3]*65535.0);c[A>>2]=~~(+h[L>>3]*65535.0);c[z>>2]=~~(+h[M>>3]*65535.0);c[y>>2]=65535;b=0;break b}case 4:{UE(m,j,i,K,L,M);h[e>>3]=+h[K>>3];h[z>>3]=+h[L>>3];h[C>>3]=+h[M>>3];h[B>>3]=1.0;b=0;break b}default:{b=0;break b}}}}b=VE(b)|0;c[v>>2]=b;if(!b)b=-1;else{g=c[42446]|0;if(((g|0)!=0?(u=c[g>>2]|0,(a[u>>0]|0)==(a[b>>0]|0)):0)?(vJ(u,b)|0)==0:0)k=g;else{b=qN(v,24940,2491,12,38)|0;c[42446]=b;if(!b)switch(f|0){case 0:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[B>>3]=1.0;b=1;break b}case 1:{a[E>>0]=0;a[D>>0]=0;a[e>>0]=0;a[F>>0]=-1;b=1;break b}case 3:{c[e>>2]=0;b=1;break b}case 2:{c[z>>2]=0;c[A>>2]=0;c[e>>2]=0;c[y>>2]=65535;b=1;break b}case 4:{c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;h[B>>3]=1.0;b=1;break b}default:{b=1;break b}}else{k=b;g=b}}b=k+7|0;switch(f|0){case 0:{h[e>>3]=+(d[k+4>>0]|0)/255.0;h[z>>3]=+(d[k+5>>0]|0)/255.0;h[C>>3]=+(d[k+6>>0]|0)/255.0;h[B>>3]=+(d[k+10>>0]|0)/255.0;b=0;break b}case 1:{a[e>>0]=a[b>>0]|0;a[D>>0]=a[g+8>>0]|0;a[E>>0]=a[g+9>>0]|0;a[F>>0]=a[g+10>>0]|0;b=0;break b}case 3:{j=+(d[b>>0]|0)/255.0;h[K>>3]=j;m=+(d[g+8>>0]|0)/255.0;h[L>>3]=m;O=+(d[g+9>>0]|0)/255.0;h[M>>3]=O;TE(j,m,O,G,H,I,J);a[e>>0]=~~+h[G>>3]*255;a[D>>0]=~~+h[H>>3]*255;a[E>>0]=~~+h[I>>3]*255;a[F>>0]=~~+h[J>>3]*255;b=0;break b}case 2:{c[e>>2]=(d[b>>0]|0)*257;c[A>>2]=(d[g+8>>0]|0)*257;c[z>>2]=(d[g+9>>0]|0)*257;c[y>>2]=(d[g+10>>0]|0)*257;b=0;break b}case 4:{h[e>>3]=+(d[b>>0]|0)/255.0;h[z>>3]=+(d[g+8>>0]|0)/255.0;h[C>>3]=+(d[g+9>>0]|0)/255.0;h[B>>3]=+(d[g+10>>0]|0)/255.0;b=0;break b}default:{b=0;break b}}}}while(0);l=N;return b|0}function SE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0.0,l=0.0;g=b<c?b:c;l=b>c?b:c;l=l<a?a:l;g=l-(g>a?a:g);k=l>0.0?g/l:0.0;if(k>0.0){i=(l-a)/g;j=(l-b)/g;g=(l-c)/g;do if(!(l==a)){if(l==b){g=i+2.0-g;break}if(l==c)g=j+4.0-i;else g=0.0}else g=g-j;while(0);g=g*60.0;if(g<0.0)g=g+360.0}else g=0.0;h[d>>3]=g/360.0;h[f>>3]=l;h[e>>3]=k;return}function TE(a,b,c,d,e,f,g){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;g=g|0;h[d>>3]=1.0-a;h[e>>3]=1.0-b;h[f>>3]=1.0-c;b=+h[d>>3];c=+h[e>>3];c=b<c?b:c;h[g>>3]=c;b=+h[f>>3];c=b<c?b:c;h[g>>3]=c;h[d>>3]=+h[d>>3]-c;h[e>>3]=+h[e>>3]-+h[g>>3];h[f>>3]=+h[f>>3]-+h[g>>3];return}function UE(a,b,c,d,e,f){a=+a;b=+b;c=+c;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0.0,k=0,l=0;a:do if(!(b<=0.0)){i=!(a>=1.0)?a*6.0:0.0;l=~~i;i=i-+(l|0);a=(1.0-b)*c;j=(1.0-i*b)*c;b=(1.0-(1.0-i)*b)*c;switch(l|0){case 0:{g=a;i=b;a=c;k=8;break a}case 1:{g=a;i=c;a=j;k=8;break a}case 2:{g=b;i=c;k=8;break a}case 3:{g=c;i=j;k=8;break a}case 4:{g=c;i=a;a=b;k=8;break a}case 5:{g=j;i=a;a=c;k=8;break a}default:break a}}else{g=c;i=c;a=c;k=8}while(0);if((k|0)==8){h[d>>3]=a;h[e>>3]=i;h[f>>3]=g}return}function VE(b){b=b|0;var d=0,e=0;d=a[b>>0]|0;if(((d<<24>>24!=98?(e=b+1|0,!(d<<24>>24==119|(xJ(e,122074,4)|0)==0)):0)?!(d<<24>>24==108|(xJ(e,122079,4)|0)==0):0)?(xJ(e,122084,8)|0)!=0:0){do if(d<<24>>24==47){d=VK(e,47)|0;if(d){if((a[e>>0]|0)!=47){e=(bL(122093,e,4)|0)==0;b=e?d+1|0:b;break}d=c[42447]|0;b=b+2|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(bL(122093,d,3)|0)!=0:0)b=XE(d,b)|0}else b=e}else{d=c[42447]|0;if(((d|0)!=0?(a[d>>0]|0)!=0:0)?(bL(122093,d,3)|0)!=0:0)b=XE(d,b)|0}while(0);b=QE(b)|0}return b|0}function WE(a,b){a=a|0;b=b|0;return SK(c[a>>2]|0,c[b>>2]|0)|0}function XE(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;g=TK(a)|0;g=(TK(b)|0)+g|0;d=g+13|0;if((g+3|0)>>>0<(c[42448]|0)>>>0)d=c[42449]|0;else{c[42448]=d;d=vw(c[42449]|0,d)|0;c[42449]=d}c[e>>2]=a;c[e+4>>2]=b;yJ(d,122098,e)|0;l=f;return c[42449]|0}function YE(a){a=a|0;c[42447]=a;return}function ZE(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;var f=0,g=0;f=l;l=l+208|0;g=f;_E(g,+h[a>>3],+h[a+8>>3],b,c,d,e);a=$E(g)|0;l=f;return a|0}function _E(a,b,c,d,e,f,g){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;g=+g;var i=0,j=0;h[a>>3]=b;h[a+8>>3]=c;j=a+16|0;h[j>>3]=d;i=a+24|0;h[i>>3]=e;h[a+32>>3]=0.0;c=+O(+(+J(+f)/e),+(+I(+f)/d));h[a+56>>3]=c;e=+O(+(+J(+g)/e),+(+I(+g)/d));h[a+40>>3]=1.0;h[a+48>>3]=0.0;e=e-+E(+((e-c)/6.283185307179586))*6.283185307179586;h[a+64>>3]=g-f>3.141592653589793&e-c<3.141592653589793?e+6.283185307179586:e;fF(a);gF(a);hF(a);g=+h[j>>3];g=(g-+h[i>>3])/g;h[a+168>>3]=g;h[a+176>>3]=g*(2.0-g);g=1.0-g;h[a+184>>3]=g;h[a+192>>3]=g*g;return}function $E(a){a=a|0;var b=0,c=0.0,d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;q=sw(8)|0;f=+h[a+56>>3];e=+h[a+64>>3]-f;p=1;b=0;while(1){o=e/+(p|0);if(!(b<<24>>24==0&(p|0)<1024))break;a:do if(!(o<=1.5707963267948966))b=0;else{c=f;d=0;b=1;while(1){if(!(b<<24>>24!=0&(d|0)<(p|0)))break a;n=o+c;b=+aF(a,c,n)<=1.0e-05&1;c=n;d=d+1|0}}while(0);p=p<<1}c=+I(+f);u=+J(+f);d=a+16|0;s=+h[d>>3];g=c*s;j=a+24|0;r=+h[j>>3];v=u*r;r=c*r;c=+h[a>>3];k=a+40|0;t=+h[k>>3];l=a+48|0;i=+h[l>>3];e=c+g*t-v*i;m=a+8|0;n=+h[m>>3];g=v*t+(n+g*i);s=-(u*s);bF(q,c,n);cF(q,e,g);n=+K(+(o*.5));n=+J(+o)*(+G(+(n*(n*3.0)+4.0))+-1.0)/3.0;c=f;f=g;g=r*t+i*s;i=t*s-r*i;b=0;while(1){if((b|0)>=(p|0))break;r=o+c;x=+I(+r);v=+J(+r);u=+h[d>>3];t=x*u;y=+h[j>>3];z=v*y;y=x*y;x=+h[k>>3];w=+h[l>>3];s=+h[a>>3]+t*x-z*w;t=z*x+(+h[m>>3]+t*w);u=-(v*u);v=x*u-y*w;u=y*x+w*u;dF(q,n*i+e,f+n*g,s-n*v,t-n*u,s,t);c=r;e=s;f=t;g=u;i=v;b=b+1|0}eF(q);return q|0}function aF(a,b,c){a=a|0;b=+b;c=+c;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;e=(b+c)*.5;i=+h[a+16>>3];d=+h[a+24>>3]/i;g=+I(+(e*2.0));f=+I(+(e*4.0));e=+I(+(e*6.0));a=d<.25?10328:10584;return +(i*((d*(d*.001+4.98)+.207)/(d+.0067))*+P(+((+h[a+16>>3]+d*(d*+h[a>>3]+ +h[a+8>>3]))/(d+ +h[a+24>>3])+g*((+h[a+48>>3]+d*(d*+h[a+32>>3]+ +h[a+40>>3]))/(d+ +h[a+56>>3]))+f*((+h[a+80>>3]+d*(d*+h[a+64>>3]+ +h[a+72>>3]))/(d+ +h[a+88>>3]))+e*((+h[a+112>>3]+d*(d*+h[a+96>>3]+ +h[a+104>>3]))/(d+ +h[a+120>>3]))+(c-b)*((+h[a+144>>3]+d*(d*+h[a+128>>3]+ +h[a+136>>3]))/(d+ +h[a+152>>3])+g*((+h[a+176>>3]+d*(d*+h[a+160>>3]+ +h[a+168>>3]))/(d+ +h[a+184>>3]))+f*((+h[a+208>>3]+d*(d*+h[a+192>>3]+ +h[a+200>>3]))/(d+ +h[a+216>>3]))+e*((+h[a+240>>3]+d*(d*+h[a+224>>3]+ +h[a+232>>3]))/(d+ +h[a+248>>3]))))))}function bF(a,b,d){a=a|0;b=+b;d=+d;var e=0;c[42450]=100;e=sw(1600)|0;c[a>>2]=e;h[e>>3]=b;h[e+8>>3]=d;c[a+4>>2]=1;return}function cF(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;f=c[a>>2]|0;e=(c[a+4>>2]|0)+-1|0;dF(a,+h[f+(e<<4)>>3],+h[f+(e<<4)+8>>3],b,d,b,d);return}function dF(a,b,d,e,f,g,i){a=a|0;b=+b;d=+d;e=+e;f=+f;g=+g;i=+i;var j=0,k=0,l=0,m=0;l=a+4|0;j=c[l>>2]|0;k=c[42450]|0;if((j+3|0)<(k|0))a=c[a>>2]|0;else{c[42450]=k<<1;j=zN(c[a>>2]|0,k<<5)|0;c[a>>2]=j;a=j;j=c[l>>2]|0}h[a+(j<<4)>>3]=b;m=j+1|0;h[a+(j<<4)+8>>3]=d;h[a+(m<<4)>>3]=e;k=j+2|0;h[a+(m<<4)+8>>3]=f;h[a+(k<<4)>>3]=g;c[l>>2]=j+3;h[a+(k<<4)+8>>3]=i;return}function eF(a){a=a|0;var b=0;b=c[a>>2]|0;cF(a,+h[b>>3],+h[b+8>>3]);c[a>>2]=zN(c[a>>2]|0,c[a+4>>2]<<4)|0;c[42450]=0;return}function fF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0;e=+h[a+16>>3];c=+h[a+24>>3];c=+G(+(e*e-c*c));e=c*+h[a+40>>3];c=c*+h[a+48>>3];d=+h[a>>3];h[a+104>>3]=d-e;b=+h[a+8>>3];h[a+112>>3]=b-c;h[a+120>>3]=e+d;h[a+128>>3]=c+b;return}function gF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0;d=+h[a+16>>3];j=+h[a+56>>3];i=d*+I(+j);g=+h[a+24>>3];j=g*+J(+j);f=+h[a+64>>3];d=d*+I(+f);f=g*+J(+f);g=+h[a>>3];e=+h[a+40>>3];c=+h[a+48>>3];h[a+72>>3]=g+i*e-j*c;b=+h[a+8>>3];h[a+80>>3]=j*e+(i*c+b);h[a+88>>3]=g+d*e-f*c;h[a+96>>3]=f*e+(d*c+b);return}function hF(a){a=a|0;var b=0.0,c=0.0,d=0.0,e=0.0,f=0,g=0,i=0,j=0,k=0,l=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0;p=+h[a+24>>3];q=+h[a+16>>3];c=p/q;r=+h[a+48>>3];k=+F(+r)<.1;o=+h[a+40>>3];do if(k){n=r/o;d=+N(+(c*n));b=-d;c=1.5707963267948966-+N(+(n/c));if(o<0.0){e=b;b=3.141592653589793-d;d=c+3.141592653589793;break}else{e=-3.141592653589793-d;d=c;c=c+-3.141592653589793;break}}else{n=o/r;b=+N(+(n/c))+1.5707963267948966;c=+N(+(c*n));if(r<0.0){e=b+-3.141592653589793;d=c+3.141592653589793;break}else{e=b;b=b+3.141592653589793;d=c;c=c+-3.141592653589793;break}}while(0);m=+h[a+56>>3];e=e-+E(+((e-m)/6.283185307179586))*6.283185307179586;l=c-+E(+((c-m)/6.283185307179586))*6.283185307179586;b=b-+E(+((b-m)/6.283185307179586))*6.283185307179586;m=d-+E(+((d-m)/6.283185307179586))*6.283185307179586;n=+h[a+64>>3];f=a+88|0;g=a+72|0;if(!(e<=n)){e=+h[g>>3];c=+h[f>>3];c=e<c?e:c}else c=+h[a>>3]+q*+I(+e)*o-r*(p*+J(+e));h[a+136>>3]=c;i=a+96|0;j=a+80|0;k=a+8|0;if(!(l<=n)){l=+h[j>>3];d=+h[i>>3];d=l<d?l:d}else d=+h[k>>3]+r*(q*+I(+l))+p*+J(+l)*o;h[a+144>>3]=d;if(!(b<=n)){l=+h[g>>3];b=+h[f>>3];b=l>b?l:b}else b=+h[a>>3]+q*+I(+b)*o-r*(p*+J(+b));h[a+152>>3]=b-c;if(!(m<=n)){r=+h[j>>3];b=+h[i>>3];b=r>b?r:b}else b=+h[k>>3]+r*(q*+I(+m))+p*+J(+m)*o;h[a+160>>3]=b-d;return}function iF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+80|0;m=n;jF(b);k=+h[e+56>>3];g=+h[e+64>>3];f=e+48|0;switch(a[e+80>>0]|0){case 116:{g=g+(+h[f>>3]-+kF(d))*.5;i=4;break}case 98:{g=g-(+h[f>>3]-+kF(d))*.5;i=4;break}default:{}}if((i|0)==4)g=g+-1.0;h[m>>3]=k;h[m+8>>3]=g;c[m+20>>2]=c[e+8>>2];c[m+16>>2]=c[e+4>>2];h[m+32>>3]=+h[e+16>>3];j=b+16|0;e=Im(c[(c[j>>2]|0)+8>>2]|0,122105)|0;f=m+56|0;c[f>>2]=e;i=m+60|0;c[i>>2]=c[(c[j>>2]|0)+212>>2];j=m+64|0;a[j>>0]=0;if(!((e|0)!=0?(a[e>>0]|0)!=0:0))c[f>>2]=122116;if((a[d+4>>0]|0)==1){f=c[d>>2]|0;CD(b,c[(c[b>>2]|0)+336>>2]|0);e=c[f+24>>2]|0;if(!e)yD(b,122122);else yD(b,e);mF(b,f,m);if(a[j>>0]|0)xN(c[i>>2]|0)}else lF(b,c[d>>2]|0,m);nF(b);l=n;return}function jF(a){a=a|0;var d=0,e=0;a=St(a)|0;d=c[a>>2]|0;e=c[d+4>>2]|0;c[a+4>>2]=e;c[a+12>>2]=c[d+12>>2];if(e>>>0<4)c[a+8>>2]=c[d+8>>2];c[a+208>>2]=c[d+208>>2];c[a+228>>2]=c[d+228>>2];c[a+244>>2]=c[d+244>>2];e=a+260|0;b[e>>1]=b[e>>1]&-2|b[d+260>>1]&1;return}function kF(b){b=b|0;var d=0.0,e=0,f=0;switch(a[b+4>>0]|0){case 1:{e=c[b>>2]|0;b=e+72|0;e=e+56|0;f=5;break}case 3:{e=c[b>>2]|0;b=e+24|0;e=e+8|0;f=5;break}case 2:{e=c[b>>2]|0;b=e+32|0;e=e+16|0;f=5;break}default:d=0.0}if((f|0)==5)d=+h[b>>3]-+h[e>>3];return +d}function lF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0,r=0,s=0;n=l;l=l+96|0;j=n+64|0;i=n+32|0;g=n+16|0;k=n;m=b[e+4>>1]|0;if(m<<16>>16>=1){r=e+8|0;p=+h[e+24>>3];o=+h[r>>3];h[k>>3]=+h[f>>3]+(p+o)*.5;h[k+8>>3]=+h[f+8>>3]+(+h[e+32>>3]+ +h[e+16>>3])*.5;q=c[e>>2]|0;s=f+16|0;f=a[e+6>>0]|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];c[i+16>>2]=c[s+16>>2];c[i+20>>2]=c[s+20>>2];c[i+24>>2]=c[s+24>>2];c[i+28>>2]=c[s+28>>2];c[j>>2]=c[r>>2];c[j+4>>2]=c[r+4>>2];c[j+8>>2]=c[r+8>>2];c[j+12>>2]=c[r+12>>2];c[j+16>>2]=c[r+16>>2];c[j+20>>2]=c[r+20>>2];c[j+24>>2]=c[r+24>>2];c[j+28>>2]=c[r+28>>2];zF(d,m<<16>>16,q,g,(p-o)*.5,i,j,f)}l=n;return}function mF(f,g,i){f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+176|0;w=B+96|0;y=B+64|0;z=B+136|0;q=B;r=B+128|0;s=g+48|0;c[y>>2]=c[s>>2];c[y+4>>2]=c[s+4>>2];c[y+8>>2]=c[s+8>>2];c[y+12>>2]=c[s+12>>2];c[y+16>>2]=c[s+16>>2];c[y+20>>2]=c[s+20>>2];c[y+24>>2]=c[s+24>>2];c[y+28>>2]=c[s+28>>2];m=+h[i>>3];n=+h[i+8>>3];s=g+84|0;j=c[s>>2]|0;if(!(c[g>>2]|0))A=(c[g+8>>2]|0)!=0;else A=1;x=g+108|0;k=c[x>>2]|0;if(k|0)oF(i,k,167320);h[y>>3]=m+ +h[y>>3];u=y+16|0;h[u>>3]=m+ +h[u>>3];u=y+8|0;h[u>>3]=n+ +h[u>>3];u=y+24|0;h[u>>3]=n+ +h[u>>3];u=f+152|0;if(A?(c[u>>2]&4|0)==0:0){c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2];c[w+20>>2]=c[y+20>>2];c[w+24>>2]=c[y+24>>2];c[w+28>>2]=c[y+28>>2];t=pF(f,i,g,w,z)|0}else t=0;p=g+42|0;k=e[p>>1]|0;if(!(k&32)){o=c[g+20>>2]|0;v=g+33|0;if(o){k=qF(f,o,c[g+28>>2]|0,k,r)|0;if(!(b[p>>1]&4)){c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2];c[w+20>>2]=c[y+20>>2];c[w+24>>2]=c[y+24>>2];c[w+28>>2]=c[y+28>>2];FD(f,w,k)}else{p=d[v>>0]|0;c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2];c[w+20>>2]=c[y+20>>2];c[w+24>>2]=c[y+24>>2];c[w+28>>2]=c[y+28>>2];vy(f,rF(q,w,p)|0,4,4,k)}xN(c[r>>2]|0)}while(1){k=c[j>>2]|0;if(!k)break;sF(f,k,i);j=j+4|0}j=c[s>>2]|0;LD(f,1.0);k=g+24|0;while(1){o=j+4|0;j=c[j>>2]|0;if(!j)break;if(!(a[j+100>>0]|0)){j=o;continue}tF(f,j,i,c[k>>2]|0,c[o>>2]|0);j=o}if(a[v>>0]|0){c[w>>2]=c[y>>2];c[w+4>>2]=c[y+4>>2];c[w+8>>2]=c[y+8>>2];c[w+12>>2]=c[y+12>>2];c[w+16>>2]=c[y+16>>2];c[w+20>>2]=c[y+20>>2];c[w+24>>2]=c[y+24>>2];c[w+28>>2]=c[y+28>>2];uF(f,g,w)}}if(t|0)vF(f,z);if((A?c[u>>2]&4|0:0)?(c[w>>2]=c[y>>2],c[w+4>>2]=c[y+4>>2],c[w+8>>2]=c[y+8>>2],c[w+12>>2]=c[y+12>>2],c[w+16>>2]=c[y+16>>2],c[w+20>>2]=c[y+20>>2],c[w+24>>2]=c[y+24>>2],c[w+28>>2]=c[y+28>>2],pF(f,i,g,w,z)|0):0)vF(f,z);if(c[x>>2]|0)wF(i,167320);l=B;return}function nF(a){a=a|0;var b=0;b=c[a+16>>2]|0;c[b+208>>2]=0;c[b+228>>2]=0;c[b+244>>2]=0;c[b+212>>2]=0;Tt(a);return}function oF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0;i=a+16|0;f=c[i>>2]|0;if(f|0){if(!(c[b>>2]|0)){f=0;g=d}else{c[d>>2]=f;f=c[b>>2]|0;g=i}c[g>>2]=f}f=c[a+20>>2]|0;if(f|0){g=b+4|0;if(!(c[g>>2]|0)){f=0;g=d}else{c[d+4>>2]=f;f=c[g>>2]|0;g=i}c[g+4>>2]=f}e=+h[a+32>>3];if(e>=0.0){f=b+16|0;if(!(+h[f>>3]>=0.0))e=-1.0;else{h[d+16>>3]=e;e=+h[f>>3];d=i}h[d+16>>3]=e}return}function pF(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+224|0;n=u+8|0;k=u;t=u+40|0;j=u+184|0;i=u+56|0;m=c[d+16>>2]|0;o=m+208|0;c[h>>2]=c[o>>2];p=m+228|0;c[h+4>>2]=c[p>>2];q=m+244|0;c[h+8>>2]=c[q>>2];r=m+212|0;c[h+12>>2]=c[r>>2];s=m+260|0;a[h+16>>0]=(b[s>>1]<<15&65535)<<16>>16>>15;h=c[f+16>>2]|0;m=m+8|0;if((h|0)!=0?(a[h>>0]|0)!=0:0)i=0;else{cm(t,128,i);i=e+60|0;h=c[i>>2]|0;if(!h){h=mL(Vt(d,c[m>>2]|0,t)|0)|0;c[i>>2]=h;a[e+64>>0]=1}fm(t,h)|0;i=c[42451]|0;c[42451]=i+1;c[k>>2]=i;yJ(j,122199,k)|0;fm(t,j)|0;i=t+4|0;h=c[i>>2]|0;if(h>>>0>=(c[t+8>>2]|0)>>>0){dm(t,1)|0;h=c[i>>2]|0}a[h>>0]=0;h=c[t>>2]|0;c[i>>2]=h;i=1}h=Ut(d,0,c[f>>2]|0,c[f+12>>2]|0,c[f+8>>2]|0,h,c[m>>2]|0)|0;if(i)gm(t);do if(h|0){if((c[o>>2]|0)==0?(b[s>>1]&1)==0:0)break;c[n>>2]=c[g>>2];c[n+4>>2]=c[g+4>>2];c[n+8>>2]=c[g+8>>2];c[n+12>>2]=c[g+12>>2];c[n+16>>2]=c[g+16>>2];c[n+20>>2]=c[g+20>>2];c[n+24>>2]=c[g+24>>2];c[n+28>>2]=c[g+28>>2];au(d,n);tD(d,c[o>>2]|0,c[p>>2]|0,c[q>>2]|0,c[r>>2]|0)}while(0);l=u;return h|0}function qF(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var h=0.0,i=0,j=0;j=l;l=l+16|0;i=j;if(!((uv(b,f,i)|0)<<24>>24)){AD(a,b);b=1}else{AD(a,c[f>>2]|0);b=c[f+4>>2]|0;h=+g[i>>2];if(!b)BD(a,122122,d,h);else BD(a,b,d,h);b=e>>>1&1|2}yD(a,122187);l=j;return b|0}function rF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0,j=0.0,k=0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];i=a+32|0;k=b+16|0;c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];k=a+40|0;b=a+8|0;if((d|0)>1){e=+(d|0)*.5;g=e+ +h[a>>3];h[a>>3]=g;f=e+ +h[b>>3];h[b>>3]=f;j=+h[i>>3]-e;h[i>>3]=j;e=+h[k>>3]-e;h[k>>3]=e}else{j=+h[i>>3];f=+h[b>>3];g=+h[a>>3];e=+h[k>>3]}h[a+16>>3]=j;h[a+24>>3]=f;h[a+48>>3]=g;h[a+56>>3]=e;return a|0}function sF(f,g,i){f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+176|0;u=y+96|0;v=y+136|0;w=y+64|0;s=y;t=y+128|0;x=g+48|0;c[w>>2]=c[x>>2];c[w+4>>2]=c[x+4>>2];c[w+8>>2]=c[x+8>>2];c[w+12>>2]=c[x+12>>2];c[w+16>>2]=c[x+16>>2];c[w+20>>2]=c[x+20>>2];c[w+24>>2]=c[x+24>>2];c[w+28>>2]=c[x+28>>2];k=+h[i>>3];m=+h[i+8>>3];if(!(c[g>>2]|0))x=(c[g+8>>2]|0)!=0;else x=1;h[w>>3]=k+ +h[w>>3];r=w+16|0;h[r>>3]=k+ +h[r>>3];r=w+8|0;h[r>>3]=m+ +h[r>>3];r=w+24|0;h[r>>3]=m+ +h[r>>3];r=f+152|0;if(x?(c[r>>2]&4|0)==0:0){c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[u+16>>2]=c[w+16>>2];c[u+20>>2]=c[w+20>>2];c[u+24>>2]=c[w+24>>2];c[u+28>>2]=c[w+28>>2];q=pF(f,i,g,u,v)|0}else q=0;o=g+42|0;j=e[o>>1]|0;a:do if(!(j&32)){n=c[g+20>>2]|0;p=g+33|0;if(n|0){j=qF(f,n,c[g+28>>2]|0,j,t)|0;if(!(b[o>>1]&4)){c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[u+16>>2]=c[w+16>>2];c[u+20>>2]=c[w+20>>2];c[u+24>>2]=c[w+24>>2];c[u+28>>2]=c[w+28>>2];FD(f,u,j)}else{o=d[p>>0]|0;c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[u+16>>2]=c[w+16>>2];c[u+20>>2]=c[w+20>>2];c[u+24>>2]=c[w+24>>2];c[u+28>>2]=c[w+28>>2];vy(f,rF(s,u,o)|0,4,4,j)}xN(c[t>>2]|0)}if(a[p>>0]|0){c[u>>2]=c[w>>2];c[u+4>>2]=c[w+4>>2];c[u+8>>2]=c[w+8>>2];c[u+12>>2]=c[w+12>>2];c[u+16>>2]=c[w+16>>2];c[u+20>>2]=c[w+20>>2];c[u+24>>2]=c[w+24>>2];c[u+28>>2]=c[w+28>>2];uF(f,g,u)}j=g+88|0;switch(a[g+92>>0]|0){case 1:{mF(f,c[j>>2]|0,i);break a}case 3:{yF(f,c[j>>2]|0,i);break a}default:{lF(f,c[j>>2]|0,i);break a}}}while(0);if(q|0)vF(f,v);if((x?c[r>>2]&4|0:0)?(c[u>>2]=c[w>>2],c[u+4>>2]=c[w+4>>2],c[u+8>>2]=c[w+8>>2],c[u+12>>2]=c[w+12>>2],c[u+16>>2]=c[w+16>>2],c[u+20>>2]=c[w+20>>2],c[u+24>>2]=c[w+24>>2],c[u+28>>2]=c[w+28>>2],pF(f,i,g,u,v)|0):0)vF(f,v);l=y;return}function tF(f,g,i,j,k){f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0,F=0,G=0,H=0;G=l;l=l+32|0;E=G+16|0;F=G;y=+h[i>>3];s=+h[i+8>>3];p=(j|0)==0?122122:j;AD(f,p);yD(f,p);B=y+ +h[g+48>>3];C=y+ +h[g+64>>3];D=s+ +h[g+56>>3];s=s+ +h[g+72>>3];p=g+100|0;i=a[p>>0]|0;q=g+86|0;z=F+8|0;t=g+84|0;u=g+82|0;v=g+96|0;w=g+80|0;if((i&1)!=0?(o=c[v>>2]|0,((e[w>>1]|0)+(e[t>>1]|0)|0)<(c[o+104>>2]|0)):0){j=b[q>>1]|0;g=o+33|0;n=a[o+32>>0]|0;H=(n<<24>>24)/2|0;i=H<<24>>24;r=+(H<<24>>24);if(j<<16>>16)if(((e[u>>1]|0)+(j&65535)|0)==(c[o+100>>2]|0)){i=(d[g>>0]|0)+i|0;j=i;i=i&255;m=D-r}else{j=0;m=D}else{j=(d[g>>0]|0)+i|0;m=D}h[z>>3]=m-+(i|0);h[F>>3]=C+r;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];xF(f,E,0.0,+(n<<24>>24)+(s+ +(j&255|0)-D));i=a[p>>0]|0}if(i&2?(A=b[q>>1]|0,x=c[v>>2]|0,((e[u>>1]|0)+(A&65535)|0)<(c[x+100>>2]|0)):0){H=b[t>>1]|0;q=(k|0)!=0;o=k+86|0;g=x+33|0;i=x+32|0;p=x+64|0;n=((e[w>>1]|0)+(H&65535)|0)==(c[x+104>>2]|0);do if(!(H<<16>>16)){i=a[i>>0]|0;H=(i<<24>>24)/2|0;g=(H<<24>>24)+(d[g>>0]|0)|0;j=g&255;g=g&255;m=+(H<<24>>24);h[F>>3]=B-+(g|0)-m;if(n){j=g<<1&255;break}if(q?(b[o>>1]|0)!=A<<16>>16:0)j=~~(+(j&255)+(y+ +h[p>>3]-(C+m)))&255}else{i=a[i>>0]|0;j=(i<<24>>24)/2|0;m=+(j<<24>>24);h[F>>3]=B-m;if(n){j=(d[g>>0]|0)+(j&255)&255;break}if(q?(b[o>>1]|0)!=A<<16>>16:0)j=~~(y+ +h[p>>3]-(C+m)+0.0)&255;else j=0}while(0);h[z>>3]=D-+(((i<<24>>24)/2|0)<<24>>24);c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];xF(f,E,+(i<<24>>24)+(C+ +(j&255)-B),0.0)}l=G;return}function uF(e,f,g){e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+160|0;o=q+112|0;p=q;j=q+144|0;m=c[f+24>>2]|0;yD(e,(m|0)==0?122122:m);m=f+42|0;i=b[m>>1]|0;if(!(i&384))CD(e,c[(c[e>>2]|0)+336>>2]|0);else{c[j+4>>2]=0;c[j>>2]=0;i=i&65535;if(!(i&256)){if(i&128|0){i=122128;k=4}}else{i=122135;k=4}if((k|0)==4)c[j>>2]=i;CD(e,j)}i=f+33|0;LD(e,+(d[i>>0]|0));i=a[i>>0]|0;j=i&255;a:do if(!(b[m>>1]&4)){n=b[f+36>>1]&15360;if(!(n<<16>>16)){if((i&255)>1){r=+(i&255)*.5;h[g>>3]=r+ +h[g>>3];p=g+8|0;h[p>>3]=r+ +h[p>>3];p=g+16|0;h[p>>3]=+h[p>>3]-r;p=g+24|0;h[p>>3]=+h[p>>3]-r};c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];FD(e,o,0);break}m=p+16|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];rF(m,o,j)|0;i=p+32|0;j=p+64|0;k=p+48|0;f=p+80|0;do switch(((n&65535)+-1024|0)>>>10&4194303|0){case 7:{HD(e,m,2);break a}case 3:{HD(e,i,2);break a}case 1:{HD(e,k,2);break a}case 0:{c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];HD(e,p,2);break a}case 11:{HD(e,m,3);break a}case 5:{HD(e,i,3);break a}case 2:{c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];HD(e,k,3);break a}case 8:{c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];HD(e,p,3);break a}case 13:{HD(e,m,4);break a}case 6:{c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];HD(e,i,4);break a}case 10:{c[f>>2]=c[m>>2];c[f+4>>2]=c[m+4>>2];c[f+8>>2]=c[m+8>>2];c[f+12>>2]=c[m+12>>2];p=p+96|0;c[p>>2]=c[i>>2];c[p+4>>2]=c[i+4>>2];c[p+8>>2]=c[i+8>>2];c[p+12>>2]=c[i+12>>2];HD(e,k,4);break a}case 12:{c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];HD(e,p,4);break a}case 9:{HD(e,m,2);HD(e,k,2);break a}case 4:{c[p>>2]=c[j>>2];c[p+4>>2]=c[j+4>>2];c[p+8>>2]=c[j+8>>2];c[p+12>>2]=c[j+12>>2];HD(e,p,2);HD(e,i,2);break a}default:break a}while(0)}else{c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[o+16>>2]=c[g+16>>2];c[o+20>>2]=c[g+20>>2];c[o+24>>2]=c[g+24>>2];c[o+28>>2]=c[g+28>>2];vy(e,rF(p,o,j)|0,4,4,0)}while(0);l=q;return}function vF(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=c[d+16>>2]|0;f=h+208|0;i=h+260|0;if((c[f>>2]|0)==0?(b[i>>1]&1)==0:0)d=0;else{uD(d);d=c[f>>2]|0}if((d|0)!=(c[e>>2]|0)){xN(d);c[f>>2]=c[e>>2]}d=h+228|0;f=c[d>>2]|0;g=e+4|0;if((f|0)!=(c[g>>2]|0)){xN(f);c[d>>2]=c[g>>2]}d=h+244|0;f=c[d>>2]|0;g=e+8|0;if((f|0)!=(c[g>>2]|0)){xN(f);c[d>>2]=c[g>>2]}d=h+212|0;f=c[d>>2]|0;g=e+12|0;if((f|0)!=(c[g>>2]|0)){xN(f);c[d>>2]=c[g>>2]}b[i>>1]=b[i>>1]&-2|a[e+16>>0]&1;return}function wF(a,b){a=a|0;b=b|0;var d=0.0,e=0;e=c[b>>2]|0;if(e|0)c[a+16>>2]=e;e=c[b+4>>2]|0;if(e|0)c[a+20>>2]=e;d=+h[b+16>>3];if(d>=0.0)h[a+32>>3]=d;return}function xF(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0;f=l;l=l+64|0;g=f+32|0;i=f;c[i>>2]=c[b>>2];c[i+4>>2]=c[b+4>>2];c[i+8>>2]=c[b+8>>2];c[i+12>>2]=c[b+12>>2];h[i+16>>3]=+h[b>>3]+d;h[i+24>>3]=+h[b+8>>3]+e;c[g>>2]=c[i>>2];c[g+4>>2]=c[i+4>>2];c[g+8>>2]=c[i+8>>2];c[g+12>>2]=c[i+12>>2];c[g+16>>2]=c[i+16>>2];c[g+20>>2]=c[i+20>>2];c[g+24>>2]=c[i+24>>2];c[g+28>>2]=c[i+28>>2];FD(a,g,1);l=f;return}function yF(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0,k=0.0,m=0.0,n=0.0;i=l;l=l+64|0;g=i;k=+h[e>>3];n=+h[d>>3]+k;m=+h[e+8>>3];j=+h[d+8>>3]+m;k=+h[d+16>>3]+k;m=+h[d+24>>3]+m;h[g>>3]=k;h[g+8>>3]=m;h[g+32>>3]=n;h[g+40>>3]=j;h[g+16>>3]=n;h[g+24>>3]=m;h[g+48>>3]=k;h[g+56>>3]=j;f=c[d+36>>2]|0;if(!f)f=c[e+56>>2]|0;e=c[d+32>>2]|0;if(!e)va(122142,122150,623,122162);if(!(a[e>>0]|0))va(122176,122150,624,122162);else{JD(b,e,g,4,1,f);l=i;return}}function zF(d,e,f,g,i,j,k,m){d=d|0;e=e|0;f=f|0;g=g|0;i=+i;j=j|0;k=k|0;m=m|0;var n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0,K=0,L=0,M=0.0,N=0.0,O=0,P=0,Q=0;Q=l;l=l+128|0;K=Q+104|0;O=Q+48|0;P=Q+16|0;L=Q;J=L;c[J>>2]=0;c[J+4>>2]=0;M=+h[g>>3];N=M-i;I=M+i;J=L+8|0;h[J>>3]=+h[g+8>>3]+(+h[k+24>>3]-+h[k+8>>3])*.5;vD(d,1);D=P+16|0;E=P+4|0;F=P+24|0;G=O+4|0;H=O+16|0;u=(m|0)==0;v=O+24|0;w=O+8|0;x=O+32|0;y=O+40|0;z=O+48|0;A=j+16|0;B=P+8|0;C=j+4|0;t=0;while(1){if((t|0)>=(e|0))break;k=f+(t*24|0)+8|0;switch(a[f+(t*24|0)+6>>0]|0){case 108:{i=N;break}case 114:{i=I-+h[k>>3];break}default:i=M-+h[k>>3]*.5}h[g>>3]=i;r=f+(t*24|0)+16|0;h[J>>3]=+h[J>>3]-+h[r>>3];s=f+(t*24|0)+4|0;p=c[f+(t*24|0)>>2]|0;q=0;while(1){if((q|0)>=(b[s>>1]|0))break;o=p+4|0;k=c[o>>2]|0;if(!k){h[D>>3]=+h[A>>3];c[P>>2]=c[j>>2];m=c[C>>2]|0;c[E>>2]=m;k=c[F>>2]&-128}else{h[D>>3]=+h[(+h[k+16>>3]>0.0?k:j)+16>>3];c[P>>2]=c[((c[k>>2]|0)==0?j:k)>>2];m=c[((c[k+4>>2]|0)==0?j:k)+4>>2]|0;c[E>>2]=m;k=c[k+24>>2]&127|c[F>>2]&-128}c[F>>2]=k;yD(d,m);c[O>>2]=c[p>>2];c[G>>2]=P;h[H>>3]=+h[p+16>>3];if(u)n=1.0;else n=+h[p+24>>3];h[v>>3]=n;c[B>>2]=c[(c[o>>2]|0)+8>>2];c[w>>2]=c[p+8>>2];o=p+32|0;h[x>>3]=+h[o>>3];h[y>>3]=+h[r>>3];a[z>>0]=108;h[L>>3]=i;c[K>>2]=c[L>>2];c[K+4>>2]=c[L+4>>2];c[K+8>>2]=c[L+8>>2];c[K+12>>2]=c[L+12>>2];xD(d,K,O);n=i+ +h[o>>3];h[g>>3]=n;p=p+56|0;q=q+1|0;i=n}t=t+1|0}wD(d);l=Q;return}function AF(a){a=a|0;xN(c[a>>2]|0);xN(c[a+4>>2]|0);xN(c[a+8>>2]|0);xN(c[a+16>>2]|0);xN(c[a+12>>2]|0);xN(c[a+20>>2]|0);xN(c[a+24>>2]|0);return}function BF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(a|0){j=a+4|0;e=0;g=c[a>>2]|0;while(1){if((e|0)>=(b[j>>1]|0))break;k=g+4|0;d=0;f=c[g>>2]|0;while(1){if((d|0)>=(b[k>>1]|0))break;xN(c[f>>2]|0);h=c[f+8>>2]|0;if(h|0?(i=c[f+12>>2]|0,i|0):0)bb[i&127](h);d=d+1|0;f=f+56|0}e=e+1|0;g=g+24|0}d=c[a>>2]|0;if(d|0)xN(d);xN(a)}return}function CF(a){a=a|0;xN(c[a+32>>2]|0);xN(a);return}function DF(b,d){b=b|0;d=d|0;switch(a[b+4>>0]|0){case 1:{EF(c[b>>2]|0);break}case 3:{CF(c[b>>2]|0);break}default:BF(c[b>>2]|0)}if(d|0)xN(b);return}function EF(a){a=a|0;var b=0,d=0,e=0;e=a+84|0;if((c[a+100>>2]|0)==-1)Kl(c[e>>2]|0)|0;else{b=c[e>>2]|0;xN(c[a+92>>2]|0);xN(c[a+96>>2]|0);while(1){d=c[b>>2]|0;if(!d)break;FF(d);b=b+4|0}xN(c[e>>2]|0)}AF(a);xN(a);return}function FF(a){a=a|0;DF(a+88|0,0);AF(a);xN(a);return}function GF(b,e,f){b=b|0;e=e|0;f=f|0;var g=0;b=c[(c[(c[b+16>>2]|0)+104>>2]|0)+72>>2]|0;if((a[b+4>>0]|0)!=2?(g=HF(c[b>>2]|0,e)|0,(g|0)!=0):0){c[f>>2]=d[g+35>>0];b=g+48|0}else b=0;return b|0}function HF(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[a+4>>2]|0;if(!((d|0)!=0?(SK(d,b)|0)==0:0))e=3;a:do if((e|0)==3){d=c[a+84>>2]|0;while(1){a=c[d>>2]|0;if(!a){a=0;break a}a=IF(a,b)|0;if(!a)d=d+4|0;else break}}while(0);return a|0}function IF(b,d){b=b|0;d=d|0;var e=0;e=c[b+4>>2]|0;if(!((e|0)!=0?(SK(e,d)|0)==0:0))if((a[b+92>>0]|0)==1)b=HF(c[b+88>>2]|0,d)|0;else b=0;return b|0}function JF(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return 0}function KF(d){d=d|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=d+92|0;c[p>>2]=sw((c[d+100>>2]<<2)+4|0)|0;n=sw((c[d+104>>2]<<2)+4|0)|0;c[d+96>>2]=n;o=d+32|0;m=c[d+84>>2]|0;while(1){l=c[m>>2]|0;if(!l)break;d=b[l+82>>1]|0;f=d&65535;g=+h[l+72>>3];if(d<<16>>16==1)j=~~g;else{j=~~((g-+(S((a[o>>0]|0)+-1|0,f+-1|0)|0))/+(d&65535));j=(j|0)>1?j:1}d=b[l+80>>1]|0;k=d&65535;g=+h[l+64>>3];if(d<<16>>16==1)i=~~g;else{i=~~((g-+(S((a[o>>0]|0)+-1|0,k+-1|0)|0))/+(d&65535));i=(i|0)>1?i:1}d=e[l+86>>1]|0;f=d+f|0;while(1){if((d|0)>=(f|0))break;q=(c[p>>2]|0)+(d<<2)|0;r=c[q>>2]|0;c[q>>2]=(r|0)>(j|0)?r:j;d=d+1|0}d=e[l+84>>1]|0;f=d+k|0;while(1){if((d|0)>=(f|0))break;r=n+(d<<2)|0;q=c[r>>2]|0;c[r>>2]=(q|0)>(i|0)?q:i;d=d+1|0}m=m+4|0}return}function LF(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;if(a>>>0<21)a=c[54832+(a<<2)>>2]|0;else{c[b>>2]=a;yJ(174218,122203,b)|0;a=174218}l=d;return a|0}function MF(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=a+104|0;l=a+100|0;j=d+16|0;f=0;g=0;while(1){if((f|0)>(c[k>>2]|0))break;i=no(d,LF(f)|0,1)|0;Oo(i,122257,304,1)|0;m=i+16|0;c[(c[m>>2]|0)+176>>2]=0;o=sw((c[l>>2]<<2)+4|0)|0;n=c[m>>2]|0;c[n+172>>2]=o;c[n+184>>2]=0;n=sw((c[l>>2]<<2)+4|0)|0;c[(c[m>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}j=b+16|0;f=0;g=0;while(1){if((f|0)>(c[l>>2]|0))break;i=no(b,LF(f)|0,1)|0;Oo(i,122257,304,1)|0;o=i+16|0;c[(c[o>>2]|0)+176>>2]=0;m=sw((c[k>>2]<<2)+4|0)|0;n=c[o>>2]|0;c[n+172>>2]=m;c[n+184>>2]=0;n=sw((c[k>>2]<<2)+4|0)|0;c[(c[o>>2]|0)+180>>2]=n;if(!g)c[(c[j>>2]|0)+192>>2]=i;else c[(c[g+16>>2]|0)+164>>2]=i;f=f+1|0;g=i}f=c[a+84>>2]|0;while(1){g=c[f>>2]|0;if(!g)break;o=g+84|0;n=no(d,LF(e[o>>1]|0)|0,0)|0;o=no(d,LF((e[g+80>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;NF(d,n,o,~~+h[g+64>>3]);o=g+86|0;n=no(b,LF(e[o>>1]|0)|0,0)|0;o=no(b,LF((e[g+82>>1]|0)+(e[o>>1]|0)|0)|0,0)|0;NF(b,n,o,~~+h[g+72>>3]);f=f+4|0}OF(d);OF(b);return}function NF(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0;h=an(a,d,f,0,0)|0;if(!h){i=an(a,d,f,0,1)|0;Oo(i,122270,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=g;d=d+16|0;h=c[d>>2]|0;a=c[h+180>>2]|0;h=(c[h+184>>2]<<2)+8|0;if(!a)a=tw(h)|0;else a=vw(a,h)|0;g=c[d>>2]|0;c[g+180>>2]=a;g=g+184|0;h=c[g>>2]|0;c[g>>2]=h+1;c[a+(h<<2)>>2]=i;d=c[d>>2]|0;c[(c[d+180>>2]|0)+(c[d+184>>2]<<2)>>2]=0;d=f+16|0;h=c[d>>2]|0;a=c[h+172>>2]|0;h=(c[h+176>>2]<<2)+8|0;if(!a)a=tw(h)|0;else a=vw(a,h)|0;g=c[d>>2]|0;c[g+172>>2]=a;g=g+176|0;f=c[g>>2]|0;c[g>>2]=f+1;c[a+(f<<2)>>2]=i;i=c[d>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0}else{i=(c[h+16>>2]|0)+170|0;f=e[i>>1]|0;b[i>>1]=(f|0)>(g|0)?f:g}return}function OF(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[(c[a+16>>2]|0)+192>>2]|0;e=d;d=d+16|0;while(1){h=c[(c[d>>2]|0)+164>>2]|0;if(!h)break;d=h+16|0;if(an(a,e,h,0,0)|0){e=h;continue}i=an(a,e,h,0,1)|0;Oo(i,122270,176,1)|0;b[(c[i+16>>2]|0)+170>>1]=0;g=e+16|0;f=c[g>>2]|0;e=c[f+180>>2]|0;f=(c[f+184>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;j=c[g>>2]|0;c[j+180>>2]=e;j=j+184|0;f=c[j>>2]|0;c[j>>2]=f+1;c[e+(f<<2)>>2]=i;f=c[g>>2]|0;c[(c[f+180>>2]|0)+(c[f+184>>2]<<2)>>2]=0;f=c[d>>2]|0;e=c[f+172>>2]|0;f=(c[f+176>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;g=c[d>>2]|0;c[g+172>>2]=e;g=g+176|0;j=c[g>>2]|0;c[g>>2]=j+1;c[e+(j<<2)>>2]=i;e=c[d>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;e=h}return}function PF(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=a+92|0;e=0;f=0;b=c[(c[(c[b+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[g>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}a=a+96|0;e=0;f=0;b=c[(c[(c[d+16>>2]|0)+192>>2]|0)+16>>2]|0;while(1){b=c[b+164>>2]|0;if(!b)break;b=c[b+16>>2]|0;h=b+232|0;c[(c[a>>2]|0)+(f<<2)>>2]=(c[h>>2]|0)-e;e=c[h>>2]|0;f=f+1|0}return}function QF(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+16|0;f=g+4|0;b=g;c[b>>2]=c[4412];d=c[a+100>>2]|0;if((d|0)!=1?(e=a+104|0,(c[e>>2]|0)!=1):0){c[a+92>>2]=sw((d<<2)+4|0)|0;c[a+96>>2]=sw((c[e>>2]<<2)+4|0)|0;c[f>>2]=c[b>>2];e=gn(122283,f,0)|0;c[f>>2]=c[b>>2];f=gn(122288,f,0)|0;Oo(e,122293,280,1)|0;Oo(f,122293,280,1)|0;MF(a,e,f);dx(e,2,2147483647)|0;dx(f,2,2147483647)|0;PF(a,e,f);RF(e,f)}else KF(a);l=g;return}function RF(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;f=d+16|0;d=c[f>>2]|0;e=c[d+172>>2]|0;if(e){xN(e);d=c[f>>2]|0}e=c[d+180>>2]|0;if(e){xN(e);d=c[f>>2]|0}d=d+164|0}ln(a)|0;ln(b)|0;return}function SF(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0;r=l;l=l+272|0;p=r+104|0;q=r+136|0;n=r+72|0;o=r;g=r+144|0;c[o+48>>2]=b;i=o+52|0;switch(Co(b)|0){case 0:{e=c[b+60>>2]|0;f=5;break}case 1:{e=ro(b)|0;f=5;break}case 2:{e=ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;f=5;break}default:e=0}if((f|0)==5)c[i>>2]=e;m=c[e+60>>2]|0;h[o+32>>3]=+h[d+16>>3];c[o+16>>2]=c[d+4>>2];c[o+20>>2]=c[d+8>>2];c[o+40>>2]=0;k=aI(c[d>>2]|0,q,o)|0;if(!k){cm(p,128,g);a[d+82>>0]=0;e=mL(TF(b,p)|0)|0;c[d>>2]=e;if((c[d+12>>2]|0)==1)e=vB(e)|0;else e=sB(e,c[i>>2]|0)|0;xN(c[d>>2]|0);c[d>>2]=e;gw(c[(c[m+16>>2]|0)+144>>2]|0,d);gm(p);e=c[q>>2]|0}else{e=k+4|0;f=d+24|0;g=n+8|0;i=n+24|0;j=n+16|0;if((a[e>>0]|0)==1){if((c[(c[k>>2]|0)+24>>2]|0)==0?UF(b)|0:0){b=mL(UF(b)|0)|0;c[(c[k>>2]|0)+24>>2]=b}o=VF(m,c[k>>2]|0,0,o)|0;c[q>>2]=c[q>>2]|o;o=c[k>>2]|0;t=+h[o+64>>3]*.5;s=+h[o+72>>3]*.5;WF(n,-t,-s,t,s);o=c[k>>2]|0;c[p>>2]=c[n>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];c[p+16>>2]=c[n+16>>2];c[p+20>>2]=c[n+20>>2];c[p+24>>2]=c[n+24>>2];c[p+28>>2]=c[n+28>>2];XF(o,p,15)}else{YF(c[(c[m+16>>2]|0)+144>>2]|0,c[k>>2]|0,o);p=c[k>>2]|0;s=+h[p+24>>3]*.5;t=+h[p+32>>3]*.5;WF(n,-s,-t,s,t);p=(c[k>>2]|0)+8|0;c[p>>2]=c[n>>2];c[p+4>>2]=c[n+4>>2];c[p+8>>2]=c[n+8>>2];c[p+12>>2]=c[n+12>>2];c[p+16>>2]=c[n+16>>2];c[p+20>>2]=c[n+20>>2];c[p+24>>2]=c[n+24>>2];c[p+28>>2]=c[n+28>>2]}h[f>>3]=+h[j>>3]-+h[n>>3];h[d+32>>3]=+h[i>>3]-+h[g>>3];c[d+72>>2]=k;if((a[e>>0]|0)==1){xN(c[d>>2]|0);c[d>>2]=mL(122306)|0}e=c[q>>2]|0}l=r;return e|0}function TF(b,d){b=b|0;d=d|0;var e=0;a:do switch(Co(b)|0){case 0:{fm(d,Dn(b)|0)|0;break}case 1:{fm(d,Dn(b)|0)|0;break}case 2:{fm(d,Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)|0;e=b+-48|0;fm(d,Dn(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0;if(!(qn(ro(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)|0)|0)){fm(d,122565)|0;break a}else{fm(d,122562)|0;break a}}default:{}}while(0);e=d+4|0;b=c[e>>2]|0;if(b>>>0>=(c[d+8>>2]|0)>>>0){dm(d,1)|0;b=c[e>>2]|0}a[b>>0]=0;d=c[d>>2]|0;c[e>>2]=d;return d|0}function UF(b){b=b|0;var c=0,d=0;c=Im(b,122547)|0;if(!((c|0)!=0?(a[c>>0]|0)!=0:0))d=3;do if((d|0)==3){c=Im(b,122556)|0;if(c|0?a[c>>0]|0:0)break;c=0}while(0);return c|0}function VF(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=l;l=l+16|0;u=w+8|0;t=w;v=g+108|0;k=c[v>>2]|0;if(k|0)oF(j,k,167352);c[g+80>>2]=i;k=aG(f,g,j)|0;r=g+36|0;f=e[r>>1]|0;i=g+32|0;if(!(f&128))a[i>>0]=2;m=g+33|0;if(!(f&32))a[m>>0]=1;QF(g);n=c[g+104>>2]|0;p=a[i>>0]|0;f=S(p,n+1|0)|0;o=d[m>>0]<<1;q=c[g+100>>2]|0;p=S(q+1|0,p)|0;m=g+96|0;f=o+f|0;i=0;while(1){if((i|0)>=(n|0))break;f=(c[(c[m>>2]|0)+(i<<2)>>2]|0)+f|0;i=i+1|0}n=g+92|0;i=p+o|0;m=0;while(1){if((m|0)>=(q|0))break;i=(c[(c[n>>2]|0)+(m<<2)>>2]|0)+i|0;m=m+1|0}n=g+38|0;o=g+40|0;do if(b[r>>1]&1){r=b[n>>1]|0;m=r&65535;if(r<<16>>16?(s=b[o>>1]|0,s<<16>>16):0){if(!((m|0)<(f|0)|(s&65535|0)<(i|0))){i=0;f=0;break}_l(0,122347,t)|0;k=1;i=0;f=0;break}_l(0,122381,u)|0;k=1}while(0);u=e[n>>1]|0;h[g+64>>3]=+(((f|0)>(u|0)?f:u)|0);u=e[o>>1]|0;h[g+72>>3]=+(((i|0)>(u|0)?i:u)|0);if(c[v>>2]|0)wF(j,167352);l=w;return k|0}function WF(a,b,c,d,e){a=a|0;b=+b;c=+c;d=+d;e=+e;h[a>>3]=b;h[a+8>>3]=c;h[a+16>>3]=d;h[a+24>>3]=e;return}function XF(f,g,i){f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0.0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+64|0;H=J+32|0;I=J;w=c[f+84>>2]|0;m=c[f+80>>2]|0;if((m|0?(j=c[m+24>>2]|0,j|0):0)?(k=f+24|0,(c[k>>2]|0)==0):0)c[k>>2]=mL(j)|0;G=f+48|0;j=g+16|0;o=+h[j>>3];n=+h[g>>3];k=~~(o-n-+(~~+h[f+64>>3]|0));if((k|0)<=-1)va(122314,122150,1761,122324);m=g+24|0;u=+h[m>>3];p=g+8|0;q=+h[p>>3];r=+(~~+h[f+72>>3]|0);s=~~(u-q-r);if((s|0)<=-1)va(122337,122150,1764,122324);t=e[f+36>>1]|0;a:do if(t&1){b:do if((k|0)>0)switch(t&6){case 4:{h[j>>3]=n+r;break b}case 2:{K=+(k|0);h[j>>3]=o+K;n=K+n;h[g>>3]=n;break b}default:{K=+(k>>>1|0);n=n+K;h[g>>3]=n;h[j>>3]=o-K;break b}}while(0);if((s|0)>0)switch(t&24){case 16:{u=q+r;h[m>>3]=u;s=0;j=0;break a}case 8:{K=+(s|0);u=K+u;h[m>>3]=u;h[p>>3]=q+K;s=0;j=0;break a}default:{K=+(s>>>1|0);h[p>>3]=q+K;u=u-K;h[m>>3]=u;s=0;j=0;break a}}else{s=0;j=0}}else j=k;while(0);o=+(d[f+33>>0]|0);E=f+32|0;F=a[E>>0]|0;v=F<<24>>24;q=+(F<<24>>24);F=f+104|0;m=c[F>>2]|0;t=(j|0)/(m|0)|0;p=j-(S(t,m)|0)|0;p=~~(+(p|0)+((p|0)>-1?.5:-.5));D=f+96|0;t=t+v|0;j=~~(n+o+q);k=0;while(1){if((k|0)>(m|0))break;C=(c[D>>2]|0)+(k<<2)|0;m=c[C>>2]|0;c[C>>2]=j;j=t+j+((k|0)<(p|0)&1)+m|0;k=k+1|0;m=c[F>>2]|0}C=f+100|0;m=c[C>>2]|0;p=(s|0)/(m|0)|0;s=s-(S(p,m)|0)|0;s=~~(+(s|0)+((s|0)>-1?.5:-.5));B=f+92|0;p=p+v|0;j=~~(u-o-q);k=0;while(1){if((k|0)>(m|0))break;A=(c[B>>2]|0)+(k<<2)|0;m=c[A>>2]|0;c[A>>2]=j;j=j-p+(((k|0)<(s|0))<<31>>31)-m|0;k=k+1|0;m=c[C>>2]|0}x=(i|0)==0;y=I+16|0;z=I+24|0;A=I+8|0;m=w;while(1){p=c[m>>2]|0;if(!p)break;j=b[p+84>>1]|0;k=b[p+86>>1]|0;s=k&65535;t=j&65535;v=(e[p+80>>1]|0)+t|0;w=(e[p+82>>1]|0)+s|0;if(x)j=0;else{j=j<<16>>16==0?8:0;j=k<<16>>16==0?j|4:j;j=(w|0)==(c[C>>2]|0)|((v|0)==(c[F>>2]|0)?j|2:j)}k=c[D>>2]|0;h[I>>3]=+(c[k+(t<<2)>>2]|0);t=a[E>>0]|0;h[y>>3]=+((c[k+(v<<2)>>2]|0)-t|0);v=c[B>>2]|0;h[z>>3]=+(c[v+(s<<2)>>2]|0);h[A>>3]=+((c[v+(w<<2)>>2]|0)+t|0);c[H>>2]=c[I>>2];c[H+4>>2]=c[I+4>>2];c[H+8>>2]=c[I+8>>2];c[H+12>>2]=c[I+12>>2];c[H+16>>2]=c[I+16>>2];c[H+20>>2]=c[I+20>>2];c[H+24>>2]=c[I+24>>2];c[H+28>>2]=c[I+28>>2];ZF(p,H,j&i);m=m+4|0}a[f+35>>0]=i;c[G>>2]=c[g>>2];c[G+4>>2]=c[g+4>>2];c[G+8>>2]=c[g+8>>2];c[G+12>>2]=c[g+12>>2];c[G+16>>2]=c[g+16>>2];c[G+20>>2]=c[g+20>>2];c[G+24>>2]=c[g+24>>2];c[G+28>>2]=c[g+28>>2];l=J;return}function YF(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0.0,S=0.0;P=l;l=l+112|0;I=P+48|0;J=P+16|0;K=P;c[J>>2]=0;c[J+4>>2]=0;c[J+8>>2]=0;c[J+12>>2]=0;c[J+16>>2]=0;c[J+20>>2]=0;c[J+24>>2]=0;c[J+28>>2]=0;L=e+4|0;M=J+16|0;N=f+16|0;O=f+32|0;r=b[L>>1]|0;n=r<<16>>16;g=0;j=-1.0;m=0;while(1){if((m|0)>=(n|0)){g=1;break}i=c[e>>2]|0;if((b[i+(m*24|0)+4>>1]|0)>1){g=0;break}i=c[(c[i+(m*24|0)>>2]|0)+4>>2]|0;if(!i){k=+h[O>>3];h[M>>3]=k;i=N}else{if(c[i+24>>2]&127|0){g=0;break}k=+h[(+h[i+16>>3]>0.0?i:N)+16>>3];h[M>>3]=k;i=(c[i>>2]|0)==0?N:i}i=c[i>>2]|0;c[J>>2]=i;if(!(j==-1.0)){if(k!=j){g=0;break}}else j=k;if(g){if(vJ(i,g)|0){g=0;break}}else g=i;m=m+1|0}a[e+6>>0]=g;E=f+48|0;F=J+4|0;G=J+24|0;H=f+40|0;x=f+20|0;y=d+144|0;z=I+4|0;w=K+8|0;A=I+16|0;B=I+24|0;C=I+8|0;D=I+12|0;v=(g|0)==0;j=0.0;s=0.0;t=0.0;u=0.0;f=0;g=r;while(1){if((f|0)>=(g<<16>>16|0))break;k=0.0;q=0.0;n=0;p=0.0;j=0.0;i=c[e>>2]|0;while(1){if((n|0)>=(b[i+(f*24|0)+4>>1]|0))break;c[I>>2]=nw(c[(c[i+(f*24|0)>>2]|0)+(n*56|0)>>2]|0,c[E>>2]|0)|0;i=(c[e>>2]|0)+(f*24|0)|0;g=c[(c[i>>2]|0)+(n*56|0)+4>>2]|0;m=c[G>>2]&-128;if(!g){h[M>>3]=+h[O>>3];c[J>>2]=c[N>>2];c[F>>2]=c[x>>2];c[G>>2]=c[H>>2]&127|m}else{g=c[g+24>>2]&127;if(!g)g=c[H>>2]&127;c[G>>2]=g|m;r=c[(c[i>>2]|0)+(n*56|0)+4>>2]|0;h[M>>3]=+h[(+h[r+16>>3]>0.0?r:N)+16>>3];c[J>>2]=c[((c[r>>2]|0)==0?N:r)>>2];c[F>>2]=c[((c[r+4>>2]|0)==0?N:r)+4>>2]}i=c[y>>2]|0;c[z>>2]=Za[c[i>>2]&31](i,J,1)|0;mA(K,d,I);R=+h[K>>3];o=+h[w>>3];xN(c[(c[(c[e>>2]|0)+(f*24|0)>>2]|0)+(n*56|0)>>2]|0);i=c[e>>2]|0;r=c[i+(f*24|0)>>2]|0;c[r+(n*56|0)>>2]=c[I>>2];h[r+(n*56|0)+32>>3]=R;h[r+(n*56|0)+16>>3]=+h[A>>3];h[r+(n*56|0)+24>>3]=+h[B>>3];c[r+(n*56|0)+4>>2]=c[z>>2];c[r+(n*56|0)+8>>2]=c[C>>2];c[r+(n*56|0)+12>>2]=c[D>>2];Q=+h[M>>3];S=+h[B>>3];k=S>k?S:k;q=q+R;n=n+1|0;p=Q>p?Q:p;j=o>j?o:j}h[i+(f*24|0)+8>>3]=q;g=(f|0)==0;do if(v)if(g){o=p;k=p-k;break}else{o=p;k=t+p-u-k;break}else{o=j;k=g?p:j}while(0);h[i+(f*24|0)+16>>3]=k;s=q>s?q:s;t=t+o;u=u+k;f=f+1|0;g=b[L>>1]|0}h[e+24>>3]=s;h[e+32>>3]=g<<16>>16==1?j:t;l=P;return}\nfunction ZF(f,g,i){f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0;z=l;l=l+64|0;v=z+32|0;y=z;k=f+24|0;if((c[k>>2]|0)==0?(j=c[(c[f+96>>2]|0)+24>>2]|0,j|0):0)c[k>>2]=mL(j)|0;u=f+36|0;t=e[u>>1]|0;k=g+8|0;j=g+16|0;w=t&6;s=g+24|0;x=t&24;a:do if(t&1){m=+h[f+64>>3];r=+h[f+72>>3];n=+h[j>>3];p=+h[g>>3];o=n-p-m;b:do if(o>0.0)switch(w&7){case 4:{n=m+p;h[j>>3]=n;m=p;break b}case 2:{n=n+o;h[j>>3]=n;m=o+p;h[g>>3]=m;break b}default:{q=o*.5;m=p+q;h[g>>3]=m;n=n-q;h[j>>3]=n;break b}}else m=p;while(0);q=+h[s>>3];p=+h[k>>3];o=q-p-r;if(o>0.0)switch(x&31){case 16:{o=r+p;h[s>>3]=o;break a}case 8:{r=q+o;h[s>>3]=r;p=o+p;h[k>>3]=p;o=r;break a}default:{o=o*.5;p=p+o;h[k>>3]=p;o=q-o;h[s>>3]=o;break a}}else o=q}else{m=+h[g>>3];p=+h[k>>3];n=+h[j>>3];o=+h[s>>3]}while(0);t=f+48|0;c[t>>2]=c[g>>2];c[t+4>>2]=c[g+4>>2];c[t+8>>2]=c[g+8>>2];c[t+12>>2]=c[g+12>>2];c[t+16>>2]=c[g+16>>2];c[t+20>>2]=c[g+20>>2];c[t+24>>2]=c[g+24>>2];c[t+28>>2]=c[g+28>>2];a[f+35>>0]=i;B=+(d[f+33>>0]|0);A=+(d[f+34>>0]|0);q=m+B+A;h[y>>3]=q;r=A+(B+p);t=y+8|0;h[t>>3]=r;p=n-B-A;s=y+16|0;h[s>>3]=p;o=o-B-A;g=y+24|0;h[g>>3]=o;j=a[f+92>>0]|0;k=f+88|0;do if(j<<24>>24==1){x=c[k>>2]|0;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[v+16>>2]=c[y+16>>2];c[v+20>>2]=c[y+20>>2];c[v+24>>2]=c[y+24>>2];c[v+28>>2]=c[y+28>>2];XF(x,v,i)}else{m=p-q;if(j<<24>>24==3){j=c[k>>2]|0;n=+h[j+24>>3];m=m-+h[j+16>>3];c:do if(m>0.0)switch(w&7){case 4:{h[s>>3]=p-m;break c}case 2:{h[y>>3]=q+m;break c}default:break c}while(0);m=o-r-n;d:do if(m>0.0)switch(x&31){case 16:{h[g>>3]=o-m;break d}case 8:{h[t>>3]=r+m;break d}default:break d}while(0);c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[v+16>>2]=c[y+16>>2];c[v+20>>2]=c[y+20>>2];c[v+24>>2]=c[y+24>>2];c[v+28>>2]=c[y+28>>2];_F(j,v);break}j=c[k>>2]|0;n=+h[j+32>>3];m=m-+h[j+24>>3];e:do if(!((w|0)==6|!(m>0.0)))switch(w&7){case 4:{h[s>>3]=p-m;break e}case 2:{h[y>>3]=q+m;break e}default:{B=m*.5;h[y>>3]=q+B;h[s>>3]=p-B;break e}}while(0);m=o-r-n;f:do if(m>0.0)switch(x&31){case 16:{h[g>>3]=o-m;break f}case 8:{h[t>>3]=r+m;break f}default:{B=m*.5;h[t>>3]=r+B;h[g>>3]=o-B;break f}}while(0);x=j+8|0;c[x>>2]=c[y>>2];c[x+4>>2]=c[y+4>>2];c[x+8>>2]=c[y+8>>2];c[x+12>>2]=c[y+12>>2];c[x+16>>2]=c[y+16>>2];c[x+20>>2]=c[y+20>>2];c[x+24>>2]=c[y+24>>2];c[x+28>>2]=c[y+28>>2];y=b[u>>1]&768;$F(c[k>>2]|0,(y&1023)==512?108:(y&1023)==256?114:110)}while(0);l=z;return}function _F(a,b){a=a|0;b=b|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2];return}function $F(d,e){d=d|0;e=e|0;var f=0,g=0,h=0;g=b[d+4>>1]|0;f=0;while(1){if((f|0)>=(g|0))break;h=(c[d>>2]|0)+(f*24|0)+6|0;if(!(a[h>>0]|0))a[h>>0]=e;f=f+1|0}return}function aG(d,f,g){d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;l=f+84|0;t=c[l>>2]|0;u=tx()|0;v=eG()|0;i=0;h=0;k=Ol(t)|0;while(1){if(!k)break;j=Ol(c[k+8>>2]|0)|0;while(1){if(!j)break;j=c[j>>2]|0;i=i+1|0}h=h+1|0;if(a[k+12>>0]|0)iG(v,h);k=c[k>>2]|0}h=sw((i<<2)+4|0)|0;c[l>>2]=h;i=0;j=0;k=0;q=0;r=Ol(t)|0;while(1){if(!r)break;s=q&65535;p=0;o=Ol(c[r+8>>2]|0)|0;while(1){if(!o)break;n=c[o+8>>2]|0;c[h>>2]=n;k=bG(d,n,f,g)|0|k;l=cG(u,q,p,n)|0;b[n+86>>1]=s;b[n+84>>1]=l;l=(e[n+80>>1]|0)+l|0;m=(e[n+82>>1]|0)+q|0;if(jG(v,m)|0){p=n+100|0;a[p>>0]=a[p>>0]|2}p=l;h=h+4|0;o=c[o>>2]|0;i=(l|0)>(i|0)?l:i;j=(m|0)>(j|0)?m:j}q=q+1|0;r=c[r>>2]|0}c[f+100>>2]=j;c[f+104>>2]=i;Kl(t)|0;Kl(v)|0;wx(u);return k|0}function bG(f,g,i,j){f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+16|0;w=x+8|0;v=x;c[g+96>>2]=i;t=g+36|0;o=e[t>>1]|0;s=g+34|0;p=i+36|0;if(!(o&64)){if(!(b[p>>1]&64))n=2;else n=a[i+34>>0]|0;a[s>>0]=n}q=g+33|0;if(!(o&32)){n=a[i+88>>0]|0;if(n<<24>>24<=-1)if(!(b[p>>1]&32))n=1;else n=a[i+33>>0]|0;a[q>>0]=n}r=g+92|0;n=g+88|0;switch(a[r>>0]|0){case 1:{o=VF(f,c[n>>2]|0,g,j)|0;p=c[n>>2]|0;n=o;o=p+64|0;p=p+72|0;break}case 3:{o=dG(c[n>>2]|0,j)|0;p=c[n>>2]|0;n=o;o=p+16|0;p=p+24|0;break}default:{YF(c[(c[f+16>>2]|0)+144>>2]|0,c[n>>2]|0,j);p=c[n>>2]|0;n=0;o=p+24|0;p=p+32|0}}k=+((d[q>>0]|0)+(d[s>>0]|0)<<1|0);m=+h[o>>3]+k;k=+h[p>>3]+k;p=g+38|0;i=g+40|0;do if(b[t>>1]&1){o=b[p>>1]|0;if(o<<16>>16?(u=b[i>>1]|0,u<<16>>16):0){if(!(+(o&65535)<m|+(u&65535)<k)){m=0.0;k=0.0;break}if((a[r>>0]|0)==3){m=0.0;k=0.0;break}_l(0,122432,v)|0;n=1;m=0.0;k=0.0;break}_l(0,122465,w)|0;n=1}while(0);y=+(e[p>>1]|0);h[g+64>>3]=m>y?m:y;m=+(e[i>>1]|0);h[g+72>>3]=k>m?k:m;l=x;return n|0}function cG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var f=0,g=0,h=0,i=0,j=0;j=d+80|0;i=(e[j>>1]|0)+-1|0;h=0;a:while(1){f=c;while(1){if(h)break a;g=i+f|0;while(1){if((g|0)<(f|0)){c=f;h=1;continue a}if(Bx(a,g,b)|0)break;g=g+-1|0}f=g+1|0}}h=d+82|0;f=c;while(1){if((f|0)<((e[j>>1]|0)+c|0))g=b;else break;while(1){if((g|0)>=((e[h>>1]|0)+b|0))break;zx(a,f,g);g=g+1|0}f=f+1|0}return c|0}function dG(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;i=m+8|0;d=d+52|0;g=b+32|0;Mr(i,c[d>>2]|0,c[g>>2]|0);k=c[i>>2]|0;i=c[i+4>>2]|0;if((i&k|0)==-1){c[j>>2]=c[g>>2];_l(1,122515,j)|0;d=1;f=0.0;e=0.0}else{a[(c[(c[d>>2]|0)+16>>2]|0)+114>>0]=1;d=0;f=+(i|0);e=+(k|0)}c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;h[b+16>>3]=e;h[b+24>>3]=f;l=m;return d|0}function eG(){return Ql(54916,c[4345]|0)|0}function fG(a,b,d){a=a|0;b=b|0;d=d|0;d=sw(12)|0;c[d>>2]=c[b>>2];return d|0}function gG(a,b,c){a=a|0;b=b|0;c=c|0;xN(b);return}function hG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b>>2]|0;e=c[d>>2]|0;return ((b|0)>(e|0)?1:((b|0)<(e|0))<<31>>31)|0}function iG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;Za[c[a>>2]&31](a,e,1)|0;l=d;return}function jG(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;b=(Za[c[a>>2]&31](a,e,512)|0)!=0&1;l=d;return b|0}function kG(a){a=a|0;var b=0;if(!(c[42452]|0)){b=sw((a<<2)+4|0)|0;c[42452]=b;c[b>>2]=169812;c[42463]=a}c[42464]=0;return}function lG(){xN(c[42452]|0);c[42452]=0;c[42464]=0;return}function mG(){c[42464]=0;return}function nG(){var a=0,b=0,d=0;b=c[42464]|0;d=c[42452]|0;a=1;while(1){if((a|0)>(b|0)){a=5;break}if((c[(c[d+(a<<2)>>2]|0)+4>>2]|0)==(a|0))a=a+1|0;else{a=4;break}}if((a|0)==4)va(123221,122568,59,122574);else if((a|0)==5)return}function oG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;f=c[42452]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;while(1){b=(a|0)/2|0;d=c[f+(b<<2)>>2]|0;e=f+(a<<2)|0;if((c[d>>2]|0)>=(h|0))break;c[e>>2]=d;c[d+4>>2]=a;a=b}c[e>>2]=g;c[g+4>>2]=a;return}function pG(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=c[42464]|0;if((b|0)==(c[42463]|0)){_l(1,122582,d)|0;a=1}else{b=b+1|0;c[42464]=b;c[(c[42452]|0)+(b<<2)>>2]=a;oG(b);nG();a=0}l=d;return a|0}function qG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[42452]|0;g=c[f+(a<<2)>>2]|0;h=c[g>>2]|0;i=c[42464]|0;j=(i|0)/2|0;while(1){e=f+(a<<2)|0;if((a|0)>(j|0))break;d=a<<1;b=c[f+(d<<2)>>2]|0;if((d|0)<(i|0)){m=d|1;k=c[f+(m<<2)>>2]|0;l=(c[b>>2]|0)<(c[k>>2]|0);d=l?m:d;b=l?k:b}if((h|0)>=(c[b>>2]|0))break;c[e>>2]=b;c[b+4>>2]=a;a=d}c[e>>2]=g;c[g+4>>2]=a;return}function rG(){var a=0,b=0,d=0,e=0;b=c[42464]|0;if(!b)a=0;else{e=c[42452]|0;d=e+4|0;a=c[d>>2]|0;c[d>>2]=c[e+(b<<2)>>2];b=b+-1|0;c[42464]=b;if(b|0)qG(1);nG()}return a|0}function sG(a,b){a=a|0;b=b|0;c[a>>2]=b;oG(c[a+4>>2]|0);nG();return}function tG(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=b+16|0;j=c[m>>2]|0;j=(a[j+((c[e+12>>2]|0)*40|0)+36>>0]|0)!=(a[j+((c[e+16>>2]|0)*40|0)+36>>0]|0);k=~~((+h[d+64>>3]-+h[d+48>>3]+-3.0)*.5);l=~~((+h[d+56>>3]-+h[d+40>>3]+-3.0)*.5);g=(k|0)<(l|0)?k:l;n=d+4|0;f=0;while(1){b=c[n>>2]|0;if((f|0)>=(b|0)){g=f;break}i=c[d+8+(f<<2)>>2]|0;o=c[m>>2]|0;if((a[o+((c[i+12>>2]|0)*40|0)+36>>0]|0)==(a[o+((c[i+16>>2]|0)*40|0)+36>>0]|0)){g=f;break}uG(i,g);f=f+1|0}while(1){if((g|0)>=(b|0))break;f=c[d+8+(g<<2)>>2]|0;if(j|(f|0)==(e|0)){uG(f,a[(c[m>>2]|0)+((c[f+12>>2]|0)*40|0)+36>>0]|0?k:l);b=c[n>>2]|0}g=g+1|0}return}function uG(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+8|0;e=c[d>>2]|0;c[d>>2]=e+1;if((e|0)>=(b|0)){c[d>>2]=0;h[a>>3]=+h[a>>3]+16384.0}return}function vG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0.0,C=0,D=0,E=0.0;x=l;l=l+112|0;u=x+64|0;t=x+96|0;m=x+32|0;v=x;w=sw(28)|0;b=mn(a)|0;s=w+4|0;c[s>>2]=b;b=sw(b*72|0)|0;r=w+12|0;c[r>>2]=b;e=v+8|0;h[e>>3]=1797693134862315708145274.0e284;h[v>>3]=1797693134862315708145274.0e284;f=v+24|0;h[f>>3]=-1797693134862315708145274.0e284;g=v+16|0;h[g>>3]=-1797693134862315708145274.0e284;i=m+16|0;j=m+8|0;k=m+24|0;d=co(a)|0;n=1797693134862315708145274.0e284;o=1797693134862315708145274.0e284;p=-1797693134862315708145274.0e284;q=-1797693134862315708145274.0e284;while(1){if(!d)break;C=d+16|0;D=c[C>>2]|0;z=(+h[D+88>>3]+ +h[D+96>>3])*.5;z=z<1.0?1.0:z;E=+h[D+80>>3]*.5;E=E<1.0?1.0:E;y=+h[D+16>>3];B=y-z;h[m>>3]=B;z=y+z;h[i>>3]=z;y=+h[D+24>>3];A=y-E;h[j>>3]=A;y=E+y;h[k>>3]=y;B=+h[(n<B?v:m)>>3];h[v>>3]=B;A=+h[(o<A?v:m)+8>>3];h[e>>3]=A;z=+h[(p>z?v:m)+16>>3];h[g>>3]=z;y=+h[(q>y?v:m)+24>>3];h[f>>3]=y;D=b+40|0;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[D+16>>2]=c[m+16>>2];c[D+20>>2]=c[m+20>>2];c[D+24>>2]=c[m+24>>2];c[D+28>>2]=c[m+28>>2];c[b>>2]=c[b>>2]|1;c[(c[C>>2]|0)+112>>2]=b;b=b+72|0;d=eo(a,d)|0;n=B;o=A;p=z;q=y}h[v>>3]=n+-36.0;h[e>>3]=o+-36.0;h[g>>3]=p+36.0;h[f>>3]=q+36.0;D=c[r>>2]|0;f=c[s>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];f=FG(D,f,t,u)|0;if(c[42400]&1|0){r=c[r>>2]|0;C=c[s>>2]|0;D=c[t>>2]|0;c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];wG(r,C,u,f,D)}e=w+8|0;c[e>>2]=sw((c[t>>2]|0)*72|0)|0;c[w>>2]=c[t>>2];d=c[t>>2]|0;b=0;while(1){if((b|0)>=(d|0))break;D=(c[e>>2]|0)+(b*72|0)+40|0;C=f+(b<<5)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];c[D+16>>2]=c[C+16>>2];c[D+20>>2]=c[C+20>>2];c[D+24>>2]=c[C+24>>2];c[D+28>>2]=c[C+28>>2];b=b+1|0}xN(f);c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];c[u+16>>2]=c[v+16>>2];c[u+20>>2]=c[v+20>>2];c[u+24>>2]=c[v+24>>2];c[u+28>>2]=c[v+28>>2];c[w+16>>2]=xG(w,u)|0;l=x;return w|0}function wG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0.0;q=l;l=l+128|0;p=q+96|0;o=q+64|0;j=q+32|0;r=q+16|0;s=q;m=+h[d+16>>3];n=+h[d>>3];k=+h[d+24>>3];g=+h[d+8>>3];i=c[13857]|0;nL(c[13738]|0,i)|0;c[s>>2]=10;c[s+4>>2]=10;c[s+8>>2]=~~(m+10.0-n);c[s+12>>2]=~~(k+10.0-g);OL(i,123027,s)|0;h[r>>3]=10.0-n;h[r+8>>3]=10.0-g;OL(i,123075,r)|0;nL(123092,i)|0;d=0;while(1){if((d|0)>=(b|0))break;v=+h[a+(d*72|0)+48>>3];u=+h[a+(d*72|0)+56>>3];t=+h[a+(d*72|0)+64>>3];h[j>>3]=+h[a+(d*72|0)+40>>3];h[j+8>>3]=v;h[j+16>>3]=u;h[j+24>>3]=t;OL(i,123111,j)|0;d=d+1|0}nL(123129,i)|0;d=0;while(1){if((d|0)>=(f|0))break;t=+h[e+(d<<5)+8>>3];u=+h[e+(d<<5)+16>>3];v=+h[e+(d<<5)+24>>3];h[o>>3]=+h[e+(d<<5)>>3];h[o+8>>3]=t;h[o+16>>3]=u;h[o+24>>3]=v;OL(i,123148,o)|0;d=d+1|0}nL(123166,i)|0;h[p>>3]=n;h[p+8>>3]=g;h[p+16>>3]=m;h[p+24>>3]=k;OL(i,123148,p)|0;nL(c[13739]|0,i)|0;l=q;return}function xG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;z=l;l=l+32|0;t=z+16|0;m=z;v=c[a>>2]|0;x=TC(v<<2|2)|0;y=Ql(54960,c[4345]|0)|0;u=Ql(54996,c[4345]|0)|0;v=sw(v<<7)|0;g=sw(c[a>>2]<<4)|0;w=a+8|0;i=b+16|0;j=m+8|0;k=b+24|0;n=b+8|0;e=0;while(1){if((e|0)>=(c[a>>2]|0))break;d=c[w>>2]|0;o=d+(e*72|0)|0;c[d+(e*72|0)+32>>2]=4;p=d+(e*72|0)+36|0;c[p>>2]=g+(e<<2<<2);f=+h[d+(e*72|0)+56>>3];q=d+(e*72|0)+40|0;r=d+(e*72|0)+48|0;if(f<+h[i>>3]){h[m>>3]=f;h[j>>3]=+h[r>>3];c[t>>2]=c[m>>2];c[t+4>>2]=c[m+4>>2];c[t+8>>2]=c[m+8>>2];c[t+12>>2]=c[m+12>>2];s=yG(x,y,t,v,1)|0;c[s+20>>2]=o;c[c[p>>2]>>2]=s}f=+h[d+(e*72|0)+64>>3];if(f<+h[k>>3]){h[m>>3]=+h[q>>3];h[j>>3]=f;c[t>>2]=c[m>>2];c[t+4>>2]=c[m+4>>2];c[t+8>>2]=c[m+8>>2];c[t+12>>2]=c[m+12>>2];s=yG(x,u,t,v,0)|0;c[s+20>>2]=o;c[(c[p>>2]|0)+4>>2]=s}if(+h[q>>3]>+h[b>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=yG(x,y,t,v,1)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+8>>2]=s}if(+h[r>>3]>+h[n>>3]){c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];s=yG(x,u,t,v,0)|0;c[s+24>>2]=o;c[(c[p>>2]|0)+12>>2]=s}e=e+1|0}o=sw(c[x>>2]<<2)|0;r=a+4|0;s=a+12|0;p=t+8|0;m=0;q=0;n=0;while(1){d=c[r>>2]|0;if((n|0)>=(d|0)){e=0;break}e=c[s>>2]|0;i=e+(n*72|0)|0;j=e+(n*72|0)+36|0;c[j>>2]=o+(m<<2);b=e+(n*72|0)+40|0;c[t>>2]=c[b>>2];c[t+4>>2]=c[b+4>>2];c[t+8>>2]=c[b+8>>2];c[t+12>>2]=c[b+12>>2];b=e+(n*72|0)+56|0;k=e+(n*72|0)+32|0;d=Za[c[u>>2]&31](u,t,512)|0;while(1){if(!d)break;if(!(+h[d+8>>3]<+h[b>>3]))break;B=c[d>>2]|0;A=c[j>>2]|0;g=c[k>>2]|0;c[k>>2]=g+1;c[A+(g<<2)>>2]=B;c[(c[d>>2]|0)+24>>2]=i;d=Za[c[u>>2]&31](u,d,8)|0}g=e+(n*72|0)+64|0;d=Za[c[y>>2]&31](y,t,512)|0;while(1){f=+h[g>>3];if(!d)break;if(!(+h[d+16>>3]<f))break;C=c[d>>2]|0;A=c[j>>2]|0;B=c[k>>2]|0;c[k>>2]=B+1;c[A+(B<<2)>>2]=C;c[(c[d>>2]|0)+24>>2]=i;d=Za[c[y>>2]&31](y,d,8)|0}h[p>>3]=f;d=Za[c[u>>2]&31](u,t,512)|0;while(1){f=+h[b>>3];if(!d)break;if(!(+h[d+8>>3]<f))break;A=c[d>>2]|0;B=c[j>>2]|0;C=c[k>>2]|0;c[k>>2]=C+1;c[B+(C<<2)>>2]=A;c[(c[d>>2]|0)+20>>2]=i;d=Za[c[u>>2]&31](u,d,8)|0}h[t>>3]=f;h[p>>3]=+h[e+(n*72|0)+48>>3];d=Za[c[y>>2]&31](y,t,512)|0;while(1){e=c[k>>2]|0;if(!d)break;if(!(+h[d+16>>3]<+h[g>>3]))break;B=c[d>>2]|0;C=c[j>>2]|0;c[k>>2]=e+1;c[C+(e<<2)>>2]=B;c[(c[d>>2]|0)+20>>2]=i;d=Za[c[y>>2]&31](y,d,8)|0}m=e+m|0;q=(e|0)>(q|0)?e:q;n=n+1|0}while(1){if((e|0)>=(d|0))break;zG((c[s>>2]|0)+(e*72|0)|0);e=e+1|0;d=c[r>>2]|0}d=c[x>>2]|0;C=c[x+16>>2]|0;c[C+(d*40|0)+32>>2]=d;d=d+1|0;c[C+(d*40|0)+32>>2]=d;SC(x,q);d=0;while(1){if((d|0)>=(c[a>>2]|0))break;AG((c[w>>2]|0)+(d*72|0)|0,x);d=d+1|0}Kl(y)|0;Kl(u)|0;xN(v);BG(x);QC(x);l=z;return x|0}function yG(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;h=Za[c[d>>2]&31](d,e,512)|0;do if(!h){b=UC(b)|0;if(!f)va(123010,122958,291,123017);else{h=c[b+32>>2]|0;i=f+(h<<5)|0;f=f+(h<<5)+8|0;c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[i>>2]=b;a[b+36>>0]=g;Za[c[d>>2]&31](d,i,1)|0;break}}else i=h;while(0);return c[i>>2]|0}function zG(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;j=b+32|0;k=b+36|0;a:do if((+h[b+64>>3]-+h[b+48>>3]+-3.0)*.5<2.0){i=c[j>>2]|0;g=0;while(1){if((g|0)>=(i|0))break a;d=c[(c[k>>2]|0)+(g<<2)>>2]|0;b:do if(a[d+36>>0]|0){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|8;d=c[c[d+36>>2]>>2]|0;if(!d)break b;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|8;d=c[(c[e+36>>2]|0)+8>>2]|0;if(!d)break b;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);c:do if((+h[b+56>>3]-+h[b+40>>3]+-3.0)*.5<2.0){i=c[j>>2]|0;g=0;while(1){if((g|0)>=(i|0))break c;d=c[(c[k>>2]|0)+(g<<2)>>2]|0;d:do if(!(a[d+36>>0]|0)){f=c[d+20>>2]|0;if((f|0)==(b|0)){e=c[d+24>>2]|0;d=e;e=c[e>>2]|0;do{c[d>>2]=e|16;d=c[(c[d+36>>2]|0)+4>>2]|0;if(!d)break d;d=c[d+24>>2]|0;e=c[d>>2]|0}while(!(e&1|0))}else{e=f;d=c[f>>2]|0;do{c[e>>2]=d|16;d=c[(c[e+36>>2]|0)+12>>2]|0;if(!d)break d;e=c[d+20>>2]|0;d=c[e>>2]|0}while(!(d&1|0))}}while(0);g=g+1|0}}while(0);return}function AG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0;g=+h[a+56>>3]-+h[a+40>>3];i=+h[a+64>>3]-+h[a+48>>3];f=(g+i)*.5+500.0;if((i+-3.0)*.5<2.0){l=(c[a>>2]&8|0)==0;f=l?16384.0:f;p=l?16384.0:g}else p=g;if((g+-3.0)*.5<2.0){l=(c[a>>2]&16|0)==0;i=l?16384.0:i;f=l?16384.0:f}l=a+36|0;d=c[l>>2]|0;e=c[d+8>>2]|0;if((e|0)!=0?(j=c[d+4>>2]|0,(j|0)!=0):0){j=VC(b,e,j,f)|0;e=a+4|0;d=c[e>>2]|0;c[e>>2]=d+1;c[a+8+(d<<2)>>2]=j;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(k=c[d>>2]|0,(k|0)!=0):0){k=VC(b,e,k,f)|0;j=a+4|0;d=c[j>>2]|0;c[j>>2]=d+1;c[a+8+(d<<2)>>2]=k;d=c[l>>2]|0}e=c[d+8>>2]|0;if((e|0)!=0?(m=c[d+12>>2]|0,(m|0)!=0):0){m=VC(b,e,m,f)|0;k=a+4|0;d=c[k>>2]|0;c[k>>2]=d+1;c[a+8+(d<<2)>>2]=m;d=c[l>>2]|0}e=c[d+12>>2]|0;if((e|0)!=0?(n=c[d>>2]|0,(n|0)!=0):0){n=VC(b,e,n,f)|0;m=a+4|0;d=c[m>>2]|0;c[m>>2]=d+1;c[a+8+(d<<2)>>2]=n;d=c[l>>2]|0}e=c[d+4>>2]|0;if((e|0)!=0?(o=c[d+12>>2]|0,(o|0)!=0):0){o=VC(b,e,o,i)|0;n=a+4|0;d=c[n>>2]|0;c[n>>2]=d+1;c[a+8+(d<<2)>>2]=o;d=c[l>>2]|0}e=c[d+8>>2]|0;if(e|0?(q=c[d>>2]|0,q|0):0){b=VC(b,e,q,p)|0;o=a+4|0;q=c[o>>2]|0;c[o>>2]=q+1;c[a+8+(q<<2)>>2]=b}return}function BG(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+8|0;h=j;f=a+16|0;g=c[13857]|0;e=0;while(1){if((e|0)>=(c[a>>2]|0)){b=10;break}b=c[f>>2]|0;d=b+(e*40|0)+20|0;if((c[d>>2]|0)==0?(c[h>>2]=e,OL(g,122923,h)|0,(c[d>>2]|0)==0):0){b=5;break}b=b+(e*40|0)+24|0;if((c[b>>2]|0)==0?(c[i>>2]=e,OL(g,122975,i)|0,(c[b>>2]|0)==0):0){b=8;break}e=e+1|0}if((b|0)==5)va(122945,122958,311,122965);else if((b|0)==8)va(122997,122958,313,122965);else if((b|0)==10){l=j;return}}function CG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[c+8>>3];if(!(e>f))if(!(e<f)){f=+h[b>>3];e=+h[c>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function DG(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0;e=+h[b>>3];f=+h[c>>3];if(!(e>f))if(!(e<f)){f=+h[b+8>>3];e=+h[c+8>>3];if(f>e)a=1;else a=(f<e)<<31>>31}else a=-1;else a=1;return a|0}function EG(a){a=a|0;var b=0,d=0;d=a+8|0;xN(c[(c[d>>2]|0)+36>>2]|0);b=a+12|0;xN(c[(c[b>>2]|0)+36>>2]|0);xN(c[d>>2]|0);xN(c[b>>2]|0);XC(c[a+16>>2]|0);Kl(c[a+20>>2]|0)|0;Kl(c[a+24>>2]|0)|0;xN(a);return}function FG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+32|0;h=p;i=b<<2;f=i+4|0;i=i+5|0;o=tw(i*56|0)|0;i=sw(i<<2)|0;g=f*5|1;j=tw(g*72|0)|0;m=g<<5;k=sw(m)|0;m=sw(m)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];GG(a,b,h,o,0);hM(173);HG(f,i);RG(f,o,i,g,j)|0;n=IG(f,o,j,0,k)|0;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];c[h+8>>2]=c[e+8>>2];c[h+12>>2]=c[e+12>>2];c[h+16>>2]=c[e+16>>2];c[h+20>>2]=c[e+20>>2];c[h+24>>2]=c[e+24>>2];c[h+28>>2]=c[e+28>>2];GG(a,b,h,o,1);HG(f,i);RG(f,o,i,g,j)|0;f=IG(f,o,j,1,m)|0;g=sw(S(n<<5,f)|0)|0;b=0;a=0;while(1){if((b|0)>=(f|0))break;h=m+(b<<5)|0;e=0;while(1){if((e|0)>=(n|0))break;q=((JG(g+(a<<5)|0,h,k+(e<<5)|0)|0)!=0&1)+a|0;e=e+1|0;a=q}b=b+1|0}q=vw(g,a<<5)|0;xN(o);xN(i);xN(j);xN(k);xN(m);c[d>>2]=a;l=p;return q|0}function GG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;j=l;l=l+96|0;h=j+64|0;i=j;c[h>>2]=c[d>>2];c[h+4>>2]=c[d+4>>2];c[h+8>>2]=c[d+8>>2];c[h+12>>2]=c[d+12>>2];c[h+16>>2]=c[d+16>>2];c[h+20>>2]=c[d+20>>2];c[h+24>>2]=c[d+24>>2];c[h+28>>2]=c[d+28>>2];PG(h,f,1,i);d=QG(e,1,i)|0;g=0;while(1){if((g|0)>=(b|0))break;k=a+(g*72|0)+40|0;c[h>>2]=c[k>>2];c[h+4>>2]=c[k+4>>2];c[h+8>>2]=c[k+8>>2];c[h+12>>2]=c[k+12>>2];c[h+16>>2]=c[k+16>>2];c[h+20>>2]=c[k+20>>2];c[h+24>>2]=c[k+24>>2];c[h+28>>2]=c[k+28>>2];PG(h,f,0,i);d=QG(e,d,i)|0;g=g+1|0}l=j;return}function HG(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=0;while(1){if((d|0)>(a|0))break;c[b+(d<<2)>>2]=d;d=d+1|0}g=a+1|0;d=1;while(1){if((d|0)>(a|0))break;h=~~(+(d|0)+ +(g-d|0)*+fM());e=b+(d<<2)|0;f=b+(h<<2)|0;if((h|0)!=(d|0)){h=c[e>>2]|0;c[e>>2]=c[f>>2];c[f>>2]=h}d=d+1|0}return}function IG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=a*5|0;j=g+1|0;l=sw(j<<2)|0;c[42465]=sw(j<<4)|0;c[42466]=sw((a*56|0)+56|0)|0;j=sw(a<<2)|0;c[42467]=j;k=0;while(1){if((k|0)>(g|0))break;if(KG(d+(k*72|0)|0,b)|0)break;k=k+1|0}h=c[42465]|0;i=c[42466]|0;g=1;while(1){if((g|0)>(a|0))break;c[h+(g<<4)+8>>2]=c[b+(g*56|0)+48>>2];m=b+(g*56|0)+44|0;c[h+(g<<4)+4>>2]=c[m>>2];c[h+(g<<4)>>2]=g;n=i+(g*56|0)|0;o=b+(g*56|0)|0;c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];c[i+(g*56|0)+16>>2]=c[m>>2];c[i+(g*56|0)+32>>2]=g;c[i+(g*56|0)+48>>2]=1;g=g+1|0}c[42468]=a;c[42469]=0;c[j>>2]=1;g=c[d+(k*72|0)+40>>2]|0;if((g|0)<=0){g=c[d+(k*72|0)+48>>2]|0;if((g|0)>0)g=LG(l,f,0,b,d,0,k,g,e,2)|0;else g=0}else g=LG(l,f,0,b,d,0,k,g,e,1)|0;xN(l);xN(c[42465]|0);xN(c[42466]|0);xN(c[42467]|0);return g|0}function JG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[(+h[b>>3]>+h[c>>3]?b:c)>>3];f=+h[(+h[b+16>>3]<+h[c+16>>3]?b:c)+16>>3];h[a+16>>3]=f;h[a>>3]=g;e=+h[(+h[b+8>>3]>+h[c+8>>3]?b:c)+8>>3];d=+h[(+h[b+24>>3]<+h[c+24>>3]?b:c)+24>>3];h[a+24>>3]=d;h[a+8>>3]=e;return !(g>=f)&!(e>=d)&1|0}function KG(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[a+4>>2]|0;do if((c[a+68>>2]|0)!=2?!((f|0)<1|(c[a>>2]|0)<1):0){if(!((c[a+40>>2]|0)<1?(c[a+44>>2]|0)<1:0)){if((c[a+48>>2]|0)>=1){a=0;break}if((c[a+52>>2]|0)>=1){a=0;break}}d=+h[b+(f*56|0)+24>>3];e=+h[b+(f*56|0)+8>>3];if(!(d>e+1.0e-07))if(d<e+-1.0e-07)a=0;else a=+h[b+(f*56|0)+16>>3]>+h[b+(f*56|0)>>3]&1;else a=1}else a=0;while(0);return a|0}function LG(a,b,d,e,f,g,i,j,k,l){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;E=(k|0)==0;D=g;a:while(1){if((i|0)<1)break;g=a+(i<<2)|0;if(c[g>>2]|0)break;c[g>>2]=1;r=f+(i*72|0)+16|0;n=+h[r>>3];x=f+(i*72|0)+32|0;o=+h[x>>3];v=f+(i*72|0)|0;y=f+(i*72|0)+4|0;if((n>o?(C=c[v>>2]|0,H=+h[e+(C*56|0)>>3],H==+h[e+(C*56|0)+16>>3]):0)?(C=c[y>>2]|0,I=+h[e+(C*56|0)>>3],I==+h[e+(C*56|0)+16>>3]):0){g=b+(d<<5)+16|0;m=b+(d<<5)+8|0;p=b+(d<<5)|0;if(E){h[p>>3]=H;h[m>>3]=o;h[g>>3]=I}else{h[p>>3]=o;h[m>>3]=-I;h[g>>3]=n;n=-H}h[b+(d<<5)+24>>3]=n;d=d+1|0}g=f+(i*72|0)+40|0;w=c[g>>2]|0;A=f+(i*72|0)+48|0;B=f+(i*72|0)+52|0;C=f+(i*72|0)+44|0;do if((w|0)<1?(c[C>>2]|0)<1:0){if((c[A>>2]|0)>0?(J=c[B>>2]|0,(J|0)>0):0){l=c[f+(J*72|0)>>2]|0;g=c[v>>2]|0;if((J|0)==(j|0)){j=MG(D,g,l)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;g=A;l=1;break}else{j=MG(D,l,g)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;g=B;l=1;break}}d=LG(a,b,d,e,f,D,w,i,k,2)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;j=D;g=B;l=1}else M=19;while(0);do if((M|0)==19){M=0;s=c[A>>2]|0;if((s|0)<1?(c[B>>2]|0)<1:0){if((w|0)>0?(K=c[C>>2]|0,(K|0)>0):0){m=c[y>>2]|0;l=c[f+(w*72|0)+4>>2]|0;if((K|0)==(j|0)){j=MG(D,l,m)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;l=2;break}else{j=MG(D,m,l)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;g=C;l=2;break}}d=LG(a,b,d,e,f,D,w,i,k,2)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;j=D;g=B;l=1;break}z=(l|0)==1;u=(l|0)==2;t=f+(i*72|0)+24|0;p=c[C>>2]|0;l=(p|0)>0;if((w|0)>0){if(l){if((s|0)>0?(L=c[B>>2]|0,(L|0)>0):0){m=c[f+(L*72|0)>>2]|0;l=c[f+(w*72|0)+4>>2]|0;if(z&(p|0)==(j|0)|u&(L|0)==(j|0)){j=MG(D,l,m)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[g>>2]|0,i,k,2)|0;g=A;l=1;break}else{j=MG(D,m,l)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[C>>2]|0,i,k,2)|0;g=B;l=1;break}}l=c[v>>2]|0;if(+F(+(+h[x>>3]-+h[e+(l*56|0)+24>>3]))<=1.0e-07?+F(+(+h[t>>3]-+h[e+(l*56|0)+16>>3]))<=1.0e-07:0){m=c[f+(w*72|0)+4>>2]|0;l=c[e+(l*56|0)+44>>2]|0;if(z&(w|0)==(j|0)){j=MG(D,l,m)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[C>>2]|0,i,k,2)|0;g=B;l=1;break}else{j=MG(D,m,l)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;l=2;break}}m=c[y>>2]|0;l=c[f+(w*72|0)+4>>2]|0;if(z&(p|0)==(j|0)){j=MG(D,l,m)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[A>>2]|0,i,k,1)|0;l=2;break}else{j=MG(D,m,l)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;g=C;l=2;break}}}else if(!l)break a;q=f+(i*72|0)+8|0;n=+h[r>>3];r=c[v>>2]|0;m=e+(r*56|0)|0;p=+F(+(n-+h[e+(r*56|0)+8>>3]))<=1.0e-07;if((s|0)>0?(G=c[B>>2]|0,(G|0)>0):0){if(p?+F(+(+h[q>>3]-+h[m>>3]))<=1.0e-07:0){l=c[f+(G*72|0)>>2]|0;if(u&(s|0)==(j|0)){j=MG(D,l,r)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[C>>2]|0,i,k,2)|0;g=B;l=1;break}else{j=MG(D,r,l)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;g=A;l=1;break}}m=c[f+(G*72|0)>>2]|0;l=c[e+((c[y>>2]|0)*56|0)+44>>2]|0;if(u&(G|0)==(j|0)){j=MG(D,l,m)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[g>>2]|0,i,k,2)|0;g=A;l=1;break}else{j=MG(D,m,l)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;g=B;l=1;break}}l=c[y>>2]|0;if(((p?+F(+(+h[q>>3]-+h[m>>3]))<=1.0e-07:0)?+F(+(+h[x>>3]-+h[e+(l*56|0)+8>>3]))<=1.0e-07:0)?+F(+(+h[t>>3]-+h[e+(l*56|0)>>3]))<=1.0e-07:0)if(z){j=MG(D,r,l)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[B>>2]|0,i,k,1)|0;g=A;l=1;break}else{j=MG(D,l,r)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[g>>2]|0,i,k,2)|0;g=C;l=2;break}if(((+F(+(n-+h[e+(l*56|0)+24>>3]))<=1.0e-07?+F(+(+h[q>>3]-+h[e+(l*56|0)+16>>3]))<=1.0e-07:0)?+F(+(+h[x>>3]-+h[e+(r*56|0)+24>>3]))<=1.0e-07:0)?+F(+(+h[t>>3]-+h[e+(r*56|0)+16>>3]))<=1.0e-07:0){j=c[e+(l*56|0)+44>>2]|0;l=c[e+(r*56|0)+44>>2]|0;if(z){j=MG(D,l,j)|0;d=LG(a,b,d,e,f,D,c[g>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;d=LG(a,b,d,e,f,j,c[B>>2]|0,i,k,1)|0;g=A;l=1;break}else{j=MG(D,j,l)|0;d=LG(a,b,d,e,f,D,c[B>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,j,c[g>>2]|0,i,k,2)|0;g=C;l=2;break}}d=LG(a,b,d,e,f,D,w,i,k,2)|0;d=LG(a,b,d,e,f,D,c[A>>2]|0,i,k,1)|0;d=LG(a,b,d,e,f,D,c[C>>2]|0,i,k,2)|0;j=D;g=B;l=1}while(0);C=i;D=j;i=c[g>>2]|0;j=C}return d|0}function MG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;f=l;l=l+16|0;r=f+4|0;i=f;e=(c[42469]|0)+1|0;c[42469]=e;m=c[42466]|0;NG(b,d,r,i);r=c[r>>2]|0;h=c[m+(b*56|0)+32+(r<<2)>>2]|0;i=c[m+(d*56|0)+32+(c[i>>2]<<2)>>2]|0;n=c[42468]|0;g=n+1|0;n=n+2|0;c[42468]=n;q=c[42465]|0;c[q+(g<<4)>>2]=b;c[q+(n<<4)>>2]=d;o=q+(h<<4)+4|0;p=q+(g<<4)+4|0;c[p>>2]=c[o>>2];c[q+(c[o>>2]<<4)+8>>2]=g;c[q+(g<<4)+8>>2]=n;c[q+(n<<4)+4>>2]=g;j=q+(i<<4)+8|0;c[q+(n<<4)+8>>2]=c[j>>2];c[q+(c[j>>2]<<4)+4>>2]=n;c[o>>2]=i;c[j>>2]=h;j=m+(b*56|0)+48|0;o=c[j>>2]|0;i=m+(d*56|0)+48|0;k=c[i>>2]|0;c[m+(b*56|0)+16+(r<<2)>>2]=d;c[m+(b*56|0)+32+(o<<2)>>2]=g;c[m+(b*56|0)+16+(o<<2)>>2]=c[q+(c[p>>2]<<4)>>2];c[m+(d*56|0)+32+(k<<2)>>2]=n;c[m+(d*56|0)+16+(k<<2)>>2]=b;c[j>>2]=(c[j>>2]|0)+1;c[i>>2]=(c[i>>2]|0)+1;d=c[42467]|0;c[d+(a<<2)>>2]=h;c[d+(e<<2)>>2]=g;l=f;return e|0}function NG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,h=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0;l=c[42466]|0;m=l+(b*56|0)|0;n=l+(a*56|0)|0;f=0;g=-4.0;i=0;while(1){if((i|0)==4)break;h=c[l+(a*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(j=+OG(n,l+(h*56|0)|0,m),j>g):0){f=i;g=j}i=i+1|0}c[d>>2]=f;f=0;i=0;g=-4.0;while(1){if((i|0)==4)break;h=c[l+(b*56|0)+16+(i<<2)>>2]|0;if((h|0)>=1?(k=+OG(m,l+(h*56|0)|0,n),k>g):0){f=i;g=k}i=i+1|0}c[e>>2]=f;return}function OG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0;g=+h[a>>3];k=+h[b>>3]-g;j=+h[a+8>>3];i=+h[b+8>>3]-j;g=+h[c>>3]-g;j=+h[c+8>>3]-j;d=k*g+i*j;e=+G(+(k*k+i*i));f=+G(+(g*g+j*j));if(!(k*j-i*g>=0.0))d=-d/e/f+-2.0;else d=d/e/f;return +d}function PG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,l=0;c[e>>2]=c[a>>2];c[e+4>>2]=c[a+4>>2];c[e+8>>2]=c[a+8>>2];c[e+12>>2]=c[a+12>>2];l=e+32|0;k=a+16|0;c[l>>2]=c[k>>2];c[l+4>>2]=c[k+4>>2];c[l+8>>2]=c[k+8>>2];c[l+12>>2]=c[k+12>>2];d=(d|0)==0;g=+h[a+8>>3];j=+h[k>>3];i=+h[a>>3];f=+h[a+24>>3];h[e+16>>3]=d?i:j;h[e+24>>3]=d?f:g;h[e+48>>3]=d?j:i;h[e+56>>3]=d?g:f;a:do if(b|0){a=0;while(1){if((a|0)==4)break a;k=e+(a<<4)+8|0;j=+h[k>>3];l=e+(a<<4)|0;h[k>>3]=+h[l>>3];h[l>>3]=-j;a=a+1|0}}while(0);return}function QG(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=b+3|0;i=b+1|0;j=b+2|0;f=0;g=b;while(1){if((g|0)>(h|0))break;k=g+1|0;e=a+(g*56|0)+44|0;do if((g|0)!=(b|0))if((g|0)==(h|0)){c[e>>2]=b;e=j;break}else{c[e>>2]=k;e=g+-1|0;break}else{c[e>>2]=i;e=h}while(0);c[a+(g*56|0)+48>>2]=e;c[a+(g*56|0)+32>>2]=0;m=a+(g*56|0)|0;l=d+(f<<4)|0;c[m>>2]=c[l>>2];c[m+4>>2]=c[l+4>>2];c[m+8>>2]=c[l+8>>2];c[m+12>>2]=c[l+12>>2];TN(a+(e*56|0)+16|0,l|0,16)|0;f=f+1|0;g=k}return b+4|0}function RG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0;c[42470]=e<<1;c[42471]=e;k=sw(e*80|0)|0;c[42472]=1;c[42473]=1;GN(f|0,0,e*72|0)|0;g=SG(c[d+4>>2]|0,b,f,k)|0;e=1;while(1){if((e|0)>(a|0))break;c[b+(e*56|0)+40>>2]=g;c[b+(e*56|0)+36>>2]=g;e=e+1|0}j=TG(a)|0;g=2;i=1;while(1){if((i|0)>(j|0))break;e=UG(a,i+-1|0)|0;h=UG(a,i)|0;while(1){if((e|0)>=(h|0)){e=1;break}VG(c[d+(g<<2)>>2]|0,b,f,k);e=e+1|0;g=g+1|0}while(1){if((e|0)>(a|0))break;WG(e,b,f,k);e=e+1|0}i=i+1|0}e=UG(a,j)|0;while(1){if((e|0)>=(a|0))break;VG(c[d+(g<<2)>>2]|0,b,f,k);g=g+1|0;e=e+1|0}xN(k);return c[42472]|0}function SG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=$G()|0;c[e+(f*40|0)>>2]=2;s=e+(f*40|0)+8|0;k=b+(a*56|0)|0;l=b+(a*56|0)+16|0;dH(s,k,l);n=$G()|0;c[e+(f*40|0)+36>>2]=n;c[e+(n*40|0)>>2]=3;c[e+(n*40|0)+28>>2]=f;j=$G()|0;c[e+(f*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=2;r=e+(j*40|0)+8|0;eH(r,k,l);c[e+(j*40|0)+28>>2]=f;l=$G()|0;c[e+(j*40|0)+32>>2]=l;c[e+(l*40|0)>>2]=3;c[e+(l*40|0)+28>>2]=j;k=$G()|0;c[e+(j*40|0)+36>>2]=k;c[e+(k*40|0)>>2]=1;c[e+(k*40|0)+4>>2]=a;c[e+(k*40|0)+28>>2]=j;j=$G()|0;c[e+(k*40|0)+32>>2]=j;c[e+(j*40|0)>>2]=3;c[e+(j*40|0)+28>>2]=k;g=$G()|0;c[e+(k*40|0)+36>>2]=g;c[e+(g*40|0)>>2]=3;c[e+(g*40|0)+28>>2]=k;k=_G(d)|0;i=_G(d)|0;m=_G(d)|0;o=_G(d)|0;p=d+(k*72|0)+8|0;q=d+(i*72|0)+8|0;t=d+(o*72|0)+24|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];c[t+8>>2]=c[s+8>>2];c[t+12>>2]=c[s+12>>2];TN(q|0,s|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];p=d+(k*72|0)+24|0;q=d+(i*72|0)+24|0;s=d+(m*72|0)+8|0;c[s>>2]=c[r>>2];c[s+4>>2]=c[r+4>>2];c[s+8>>2]=c[r+8>>2];c[s+12>>2]=c[r+12>>2];TN(q|0,r|0,16)|0;c[p>>2]=c[q>>2];c[p+4>>2]=c[q+4>>2];c[p+8>>2]=c[q+8>>2];c[p+12>>2]=c[q+12>>2];h[d+(o*72|0)+16>>3]=1073741824.0;h[d+(o*72|0)+8>>3]=1073741824.0;h[d+(m*72|0)+32>>3]=-1073741824.0;h[d+(m*72|0)+24>>3]=-1073741824.0;c[d+(i*72|0)>>2]=a;c[d+(k*72|0)+4>>2]=a;c[d+(i*72|0)+40>>2]=o;c[d+(k*72|0)+40>>2]=o;c[d+(i*72|0)+48>>2]=m;c[d+(k*72|0)+48>>2]=m;c[d+(m*72|0)+40>>2]=k;c[d+(o*72|0)+48>>2]=k;c[d+(m*72|0)+44>>2]=i;c[d+(o*72|0)+52>>2]=i;c[d+(k*72|0)+56>>2]=j;c[d+(i*72|0)+56>>2]=g;c[d+(m*72|0)+56>>2]=l;c[d+(o*72|0)+56>>2]=n;c[d+(i*72|0)+68>>2]=1;c[d+(k*72|0)+68>>2]=1;c[d+(o*72|0)+68>>2]=1;c[d+(m*72|0)+68>>2]=1;c[e+(n*40|0)+24>>2]=o;c[e+(l*40|0)+24>>2]=m;c[e+(j*40|0)+24>>2]=k;c[e+(g*40|0)+24>>2]=i;c[b+(a*56|0)+32>>2]=1;return f|0}function TG(a){a=a|0;var b=0.0;b=+(a|0);a=0;while(1){if(!(b>=1.0))break;b=+kL(b);a=a+1|0}return a+-1|0}function UG(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+(a|0);c=d;a=0;while(1){if((a|0)>=(b|0))break;c=+kL(c);a=a+1|0}return ~~+R(+(d/c))|0}function VG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=l;l=l+96|0;X=$+32|0;f=$+16|0;Y=$;r=X;k=b+(a*56|0)|0;q=r+56|0;do{c[r>>2]=c[k>>2];r=r+4|0;k=k+4|0}while((r|0)<(q|0));Z=X+16|0;_=X+24|0;i=+h[_>>3];P=X+8|0;j=+h[P>>3];g=X+36|0;p=X+40|0;do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[Z>>3]>+h[X>>3]:0){O=4;break}O=(ZG(a,b,1)|0)==0;f=c[g>>2]|0;if(O){n=0;O=7}else{f=XG(X,Z,f,b,e)|0;O=20}}else O=4;while(0);if((O|0)==4){c[f>>2]=c[X>>2];c[f+4>>2]=c[X+4>>2];c[f+8>>2]=c[X+8>>2];c[f+12>>2]=c[X+12>>2];c[X>>2]=c[Z>>2];c[X+4>>2]=c[Z+4>>2];c[X+8>>2]=c[Z+8>>2];c[X+12>>2]=c[Z+12>>2];c[Z>>2]=c[f>>2];c[Z+4>>2]=c[f+4>>2];c[Z+8>>2]=c[f+8>>2];c[Z+12>>2]=c[f+12>>2];O=c[g>>2]|0;f=c[p>>2]|0;c[g>>2]=f;c[p>>2]=O;if(!(ZG(a,b,2)|0)){n=1;O=7}else{f=XG(X,Z,f,b,e)|0;O=19}}if((O|0)==7){m=XG(X,Z,f,b,e)|0;f=_G(d)|0;c[d+(f*72|0)+68>>2]=1;r=d+(f*72|0)|0;k=d+(m*72|0)|0;q=r+72|0;do{c[r>>2]=c[k>>2];r=r+4|0;k=k+4|0}while((r|0)<(q|0));t=+h[P>>3];h[d+(f*72|0)+16>>3]=t;h[d+(m*72|0)+32>>3]=t;t=+h[X>>3];h[d+(f*72|0)+8>>3]=t;h[d+(m*72|0)+24>>3]=t;c[d+(m*72|0)+48>>2]=f;c[d+(m*72|0)+52>>2]=0;c[d+(f*72|0)+40>>2]=m;c[d+(f*72|0)+44>>2]=0;g=c[d+(f*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}g=c[d+(f*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(m|0))c[k>>2]=f;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(m|0))c[g>>2]=f}M=$G()|0;O=$G()|0;N=d+(m*72|0)+56|0;L=c[N>>2]|0;c[e+(L*40|0)>>2]=2;K=e+(L*40|0)+8|0;c[K>>2]=c[X>>2];c[K+4>>2]=c[X+4>>2];c[K+8>>2]=c[X+8>>2];c[K+12>>2]=c[X+12>>2];c[e+(L*40|0)+4>>2]=a;c[e+(L*40|0)+32>>2]=O;c[e+(L*40|0)+36>>2]=M;c[e+(M*40|0)>>2]=3;c[e+(M*40|0)+24>>2]=m;c[e+(M*40|0)+28>>2]=L;c[e+(O*40|0)>>2]=3;c[e+(O*40|0)+24>>2]=f;c[e+(O*40|0)+28>>2]=L;c[N>>2]=M;c[d+(f*72|0)+56>>2]=O;if(n)O=19;else O=20}if((O|0)==19)if(!(ZG(a,b,1)|0)){o=1;O=21}else{g=1;O=32}else if((O|0)==20)if(!(ZG(a,b,2)|0)){o=0;O=21}else{g=0;O=32}if((O|0)==21){n=XG(Z,X,c[p>>2]|0,b,e)|0;m=_G(d)|0;c[d+(m*72|0)+68>>2]=1;r=d+(m*72|0)|0;k=d+(n*72|0)|0;q=r+72|0;do{c[r>>2]=c[k>>2];r=r+4|0;k=k+4|0}while((r|0)<(q|0));t=+h[_>>3];h[d+(m*72|0)+16>>3]=t;h[d+(n*72|0)+32>>3]=t;t=+h[Z>>3];h[d+(m*72|0)+8>>3]=t;h[d+(n*72|0)+24>>3]=t;c[d+(n*72|0)+48>>2]=m;c[d+(n*72|0)+52>>2]=0;c[d+(m*72|0)+40>>2]=n;c[d+(m*72|0)+44>>2]=0;g=c[d+(m*72|0)+48>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(n|0))c[k>>2]=m;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(n|0))c[g>>2]=m}g=c[d+(m*72|0)+52>>2]|0;if((g|0)>0){k=d+(g*72|0)+40|0;if((c[k>>2]|0)==(n|0))c[k>>2]=m;g=d+(g*72|0)+44|0;if((c[g>>2]|0)==(n|0))c[g>>2]=m}M=$G()|0;N=$G()|0;g=d+(n*72|0)+56|0;L=c[g>>2]|0;c[e+(L*40|0)>>2]=2;K=e+(L*40|0)+8|0;c[K>>2]=c[Z>>2];c[K+4>>2]=c[Z+4>>2];c[K+8>>2]=c[Z+8>>2];c[K+12>>2]=c[Z+12>>2];c[e+(L*40|0)+4>>2]=a;c[e+(L*40|0)+32>>2]=N;c[e+(L*40|0)+36>>2]=M;c[e+(M*40|0)>>2]=3;c[e+(M*40|0)+24>>2]=n;c[e+(M*40|0)+28>>2]=L;c[e+(N*40|0)>>2]=3;c[e+(N*40|0)+24>>2]=m;c[e+(N*40|0)+28>>2]=L;c[g>>2]=M;c[d+(m*72|0)+56>>2]=N;N=f;f=0;g=o}else if((O|0)==32){N=f;n=XG(Z,X,c[p>>2]|0,b,e)|0;f=1}a:do if((N|0)>0){L=d+(n*72|0)+24|0;M=d+(n*72|0)+32|0;K=(f|0)!=0;G=g?b+(a*56|0)+48|0:b+(a*56|0)+44|0;I=Y+8|0;g=0;f=0;H=N;while(1){k=d+(H*72|0)|0;D=d+(H*72|0)+24|0;if(!(aH(D,L)|0))break a;m=d+(H*72|0)+56|0;C=c[m>>2]|0;o=$G()|0;p=$G()|0;c[e+(C*40|0)>>2]=1;c[e+(C*40|0)+4>>2]=a;c[e+(C*40|0)+32>>2]=o;c[e+(C*40|0)+36>>2]=p;c[e+(o*40|0)>>2]=3;c[e+(o*40|0)+24>>2]=H;c[e+(o*40|0)+28>>2]=C;c[e+(p*40|0)>>2]=3;E=_G(d)|0;c[e+(p*40|0)+24>>2]=E;J=d+(E*72|0)|0;c[d+(E*72|0)+68>>2]=1;c[e+(p*40|0)+28>>2]=C;g=(H|0)==(N|0)?E:g;C=d+(H*72|0)+32|0;if(+F(+(+h[C>>3]-+h[M>>3]))<=1.0e-07?+F(+(+h[D>>3]-+h[L>>3]))<=1.0e-07:0)f=E;r=J;q=r+72|0;do{c[r>>2]=c[k>>2];r=r+4|0;k=k+4|0}while((r|0)<(q|0));c[m>>2]=o;c[d+(E*72|0)+56>>2]=p;z=d+(H*72|0)+48|0;k=c[z>>2]|0;q=(k|0)<1;m=d+(H*72|0)+52|0;if(q?(c[m>>2]|0)<1:0)break;A=d+(E*72|0)+48|0;r=d+(H*72|0)+64|0;p=d+(E*72|0)+44|0;o=d+(E*72|0)+52|0;v=d+(H*72|0)+60|0;w=d+(E*72|0)+60|0;y=d+(E*72|0)+40|0;x=d+(H*72|0)+44|0;B=d+(H*72|0)+40|0;do if((k|0)>0?(c[m>>2]|0)<1:0){k=c[B>>2]|0;do if((k|0)>0?(Q=c[x>>2]|0,(Q|0)>0):0){k=c[v>>2]|0;if((k|0)<=0){c[y>>2]=Q;c[p>>2]=-1;c[x>>2]=-1;c[d+(Q*72|0)+48>>2]=E;break}if((c[r>>2]|0)==1){c[y>>2]=Q;c[x>>2]=-1;c[p>>2]=k;r=E;q=Q;k=c[B>>2]|0}else{c[p>>2]=-1;c[y>>2]=c[x>>2];q=c[B>>2]|0;c[x>>2]=q;c[B>>2]=k;r=H;p=y}c[d+(k*72|0)+48>>2]=H;c[d+(q*72|0)+48>>2]=r;c[d+((c[p>>2]|0)*72|0)+48>>2]=E;c[w>>2]=0;c[v>>2]=0}else O=52;while(0);do if((O|0)==52){O=0;q=d+(k*72|0)+48|0;r=c[q>>2]|0;k=d+(k*72|0)+52|0;if((r|0)>0?(c[k>>2]|0)>0:0){k=c[d+(r*72|0)+4>>2]|0;if((k|0)>0?(YG(k,b,Z)|0)==0:0){c[p>>2]=-1;c[x>>2]=-1;c[B>>2]=-1;c[d+((c[y>>2]|0)*72|0)+52>>2]=E;break}c[x>>2]=-1;c[p>>2]=-1;c[y>>2]=-1;c[d+((c[B>>2]|0)*72|0)+48>>2]=H;break}c[q>>2]=H;c[k>>2]=E}while(0);if(+F(+(+h[C>>3]-+h[M>>3]))<=1.0e-07?K&+F(+(+h[D>>3]-+h[L>>3]))<=1.0e-07:0){k=c[G>>2]|0;if((k|0)>0?(YG(k,b,X)|0)!=0:0){c[d+((c[z>>2]|0)*72|0)+40>>2]=H;m=o;k=E}else{c[d+((c[A>>2]|0)*72|0)+44>>2]=E;k=H}c[m>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[z>>2]|0;break}k=c[z>>2]|0;m=d+(k*72|0)+40|0;o=c[m>>2]|0;p=d+(k*72|0)+44|0;if((o|0)>0?(R=c[p>>2]|0,S=(o|0)==(H|0),(R|0)>0):0){c[d+(k*72|0)+60>>2]=S?R:o;c[d+(k*72|0)+64>>2]=S?1:2}c[m>>2]=H;c[p>>2]=E}else O=70;while(0);do if((O|0)==70){O=0;if(q?(c[m>>2]|0)>0:0){k=c[B>>2]|0;do if((k|0)>0?(T=c[x>>2]|0,(T|0)>0):0){k=c[v>>2]|0;if((k|0)<=0){c[y>>2]=T;c[p>>2]=-1;c[x>>2]=-1;c[d+(T*72|0)+48>>2]=E;break}if((c[r>>2]|0)==1){c[y>>2]=T;c[x>>2]=-1;c[p>>2]=k;r=E;q=T;k=c[B>>2]|0}else{c[p>>2]=-1;c[y>>2]=c[x>>2];q=c[B>>2]|0;c[x>>2]=q;c[B>>2]=k;r=H;p=y}c[d+(k*72|0)+48>>2]=H;c[d+(q*72|0)+48>>2]=r;c[d+((c[p>>2]|0)*72|0)+48>>2]=E;c[w>>2]=0;c[v>>2]=0}else O=80;while(0);do if((O|0)==80){O=0;q=d+(k*72|0)+48|0;r=c[q>>2]|0;k=d+(k*72|0)+52|0;if((r|0)>0?(c[k>>2]|0)>0:0){k=c[d+(r*72|0)+4>>2]|0;if((k|0)>0?(YG(k,b,Z)|0)==0:0){c[p>>2]=-1;c[x>>2]=-1;c[B>>2]=-1;c[d+((c[y>>2]|0)*72|0)+52>>2]=E;break}c[x>>2]=-1;c[p>>2]=-1;c[y>>2]=-1;c[d+((c[B>>2]|0)*72|0)+48>>2]=H;break}c[q>>2]=H;c[k>>2]=E}while(0);if(+F(+(+h[C>>3]-+h[M>>3]))<=1.0e-07?K&+F(+(+h[D>>3]-+h[L>>3]))<=1.0e-07:0){k=c[G>>2]|0;if((k|0)>0?(YG(k,b,X)|0)!=0:0){c[d+((c[m>>2]|0)*72|0)+40>>2]=H;k=E}else{c[d+((c[o>>2]|0)*72|0)+44>>2]=E;o=m;k=H}c[o>>2]=-1;c[d+(k*72|0)+48>>2]=-1;k=c[m>>2]|0;break}k=c[m>>2]|0;m=d+(k*72|0)+40|0;o=c[m>>2]|0;p=d+(k*72|0)+44|0;if((o|0)>0?(U=c[p>>2]|0,V=(o|0)==(H|0),(U|0)>0):0){c[d+(k*72|0)+60>>2]=V?U:o;c[d+(k*72|0)+64>>2]=V?1:2}c[m>>2]=H;c[p>>2]=E;break}i=+h[C>>3];j=+h[P>>3];s=i-j;u=!(+F(+s)<=1.0e-07);t=+h[X>>3];if(u){h[I>>3]=i;h[Y>>3]=t+s/(+h[_>>3]-j)*(+h[Z>>3]-t);u=(bH(Y,D)|0)!=0}else u=+h[D>>3]>t;k=c[B>>2]|0;do if((k|0)>0?(W=c[x>>2]|0,(W|0)>0):0){k=c[v>>2]|0;if((k|0)<=0){c[y>>2]=W;c[p>>2]=-1;c[x>>2]=-1;c[d+(W*72|0)+48>>2]=E;break}if((c[r>>2]|0)==1){c[y>>2]=W;c[x>>2]=-1;c[p>>2]=k;r=E;q=W;k=c[B>>2]|0}else{c[p>>2]=-1;c[y>>2]=c[x>>2];q=c[B>>2]|0;c[x>>2]=q;c[B>>2]=k;r=H;p=y}c[d+(k*72|0)+48>>2]=H;c[d+(q*72|0)+48>>2]=r;c[d+((c[p>>2]|0)*72|0)+48>>2]=E;c[w>>2]=0;c[v>>2]=0}else O=109;while(0);do if((O|0)==109){O=0;q=d+(k*72|0)+48|0;r=c[q>>2]|0;k=d+(k*72|0)+52|0;if((r|0)>0?(c[k>>2]|0)>0:0){k=c[d+(r*72|0)+4>>2]|0;if((k|0)>0?(YG(k,b,Z)|0)==0:0){c[p>>2]=-1;c[x>>2]=-1;c[B>>2]=-1;c[d+((c[y>>2]|0)*72|0)+52>>2]=E;break}c[x>>2]=-1;c[p>>2]=-1;c[y>>2]=-1;c[d+((c[B>>2]|0)*72|0)+48>>2]=H;break}c[q>>2]=H;c[k>>2]=E}while(0);if(+F(+(+h[C>>3]-+h[M>>3]))<=1.0e-07?K&+F(+(+h[D>>3]-+h[L>>3]))<=1.0e-07:0){k=c[z>>2]|0;c[d+(k*72|0)+40>>2]=H;c[d+(k*72|0)+44>>2]=-1;k=c[m>>2]|0;c[d+(k*72|0)+40>>2]=E;c[d+(k*72|0)+44>>2]=-1;c[A>>2]=k;c[o>>2]=-1;c[m>>2]=-1;k=-1}else O=119;do if((O|0)==119){O=0;k=c[z>>2]|0;c[d+(k*72|0)+40>>2]=H;p=d+(k*72|0)+44|0;if(u){c[p>>2]=E;D=c[m>>2]|0;c[d+(D*72|0)+40>>2]=E;c[d+(D*72|0)+44>>2]=-1;c[m>>2]=-1;break}else{c[p>>2]=-1;k=c[m>>2]|0;c[d+(k*72|0)+40>>2]=H;c[d+(k*72|0)+44>>2]=E;c[A>>2]=k;c[o>>2]=-1;k=c[m>>2]|0;break}}while(0)}while(0);c[J>>2]=a;c[d+(H*72|0)+4>>2]=a;if((k|0)>0)H=k;else break a}oL(123251,19,1,c[13857]|0)|0}else{g=0;f=0}while(0);cH(a,N,n,1,d,e);cH(a,g,f,2,d,e);c[b+(a*56|0)+32>>2]=1;l=$;return}function WG(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!(c[b+(a*56|0)+32>>2]|0)){f=b+(a*56|0)|0;g=b+(a*56|0)+16|0;h=b+(a*56|0)+36|0;c[h>>2]=c[d+((XG(f,g,c[h>>2]|0,b,e)|0)*72|0)+56>>2];a=b+(a*56|0)+40|0;c[a>>2]=c[d+((XG(g,f,c[a>>2]|0,b,e)|0)*72|0)+56>>2]}return}function XG(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0.0,k=0.0,l=0.0,m=0,n=0.0,o=0.0,p=0,q=0.0,r=0,s=0;p=b+8|0;r=a+8|0;i=d;a:while(1){m=f+(i*40|0)+36|0;d=f+(i*40|0)+32|0;b:do switch(c[f+(i*40|0)>>2]|0){case 3:{s=3;break a}case 2:{g=+h[r>>3];j=+h[f+(i*40|0)+16>>3];k=j+1.0e-07;if(!(g>k)){l=j+-1.0e-07;i=f+(i*40|0)+8|0;if(!(g<l)?+h[a>>3]>+h[i>>3]:0){d=m;break b}if(+F(+(g-j))<=1.0e-07?(n=+h[i>>3],+F(+(+h[a>>3]-n))<=1.0e-07):0){g=+h[p>>3];if(g>k)d=m;else if(!(g<l)?+h[b>>3]>n:0){d=m;break b}}}else d=m;break}case 1:{j=+h[r>>3];i=c[f+(i*40|0)+4>>2]|0;if(+F(+(j-+h[e+(i*56|0)+8>>3]))<=1.0e-07?(o=+h[a>>3],+F(+(o-+h[e+(i*56|0)>>3]))<=1.0e-07):0)g=o;else s=16;do if((s|0)==16){s=0;if(+F(+(j-+h[e+(i*56|0)+24>>3]))<=1.0e-07?(q=+h[a>>3],+F(+(q-+h[e+(i*56|0)+16>>3]))<=1.0e-07):0){g=q;break}i=(YG(i,e,a)|0)==0;d=i?m:d;break b}while(0);if(!(+F(+(j-+h[p>>3]))<=1.0e-07)){i=(YG(i,e,b)|0)==0;d=i?m:d;break b}if(!(+h[b>>3]<g))d=m;break}default:{s=23;break a}}while(0);i=c[d>>2]|0}if((s|0)==3)return c[f+(i*40|0)+24>>2]|0;else if((s|0)==23){oL(123185,35,1,c[13857]|0)|0;va(123221,123223,349,123235)}return 0}function YG(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0,l=0.0;i=+h[b+(a*56|0)+24>>3];j=+h[b+(a*56|0)+8>>3];k=b+(a*56|0)+16|0;b=b+(a*56|0)|0;a=c+8|0;do if(!(i>j+1.0e-07)){if(!(i<j+-1.0e-07)?+h[k>>3]>+h[b>>3]:0){g=4;break}f=+h[a>>3];a=!(+F(+(i-f))<=1.0e-07);e=+h[c>>3];if(!a){d=e<+h[k>>3]?1.0:-1.0;break}c=!(+F(+(j-f))<=1.0e-07);d=+h[b>>3];if(c){l=+h[k>>3];d=(f-i)*(d-l)-(j-i)*(e-l);break}else{d=e<d?1.0:-1.0;break}}else g=4;while(0);do if((g|0)==4){f=+h[a>>3];g=!(+F(+(i-f))<=1.0e-07);e=+h[c>>3];if(!g){d=e<+h[k>>3]?1.0:-1.0;break}g=!(+F(+(j-f))<=1.0e-07);d=+h[b>>3];if(g){d=(f-j)*(+h[k>>3]-d)-(i-j)*(e-d);break}else{d=e<d?1.0:-1.0;break}}while(0);return d>0.0|0}function ZG(a,b,d){a=a|0;b=b|0;d=d|0;return c[b+((c[((d|0)==1?b+(a*56|0)+48|0:b+(a*56|0)+44|0)>>2]|0)*56|0)+32>>2]|0}function _G(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42472]|0;if((b|0)<(c[42471]|0)){c[a+(b*72|0)>>2]=-1;c[a+(b*72|0)+4>>2]=-1;c[a+(b*72|0)+68>>2]=1;c[42472]=b+1;l=e;return b|0}else{e=c[13857]|0;c[d>>2]=b;OL(e,123310,d)|0;va(123221,123223,88,123348)}return 0}function $G(){var a=0;a=c[42473]|0;if((a|0)<(c[42470]|0)){c[42473]=a+1;return a|0}else{oL(123271,30,1,c[13857]|0)|0;va(123221,123223,72,123302)}return 0}function aH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c>d+1.0e-07))if(c<d+-1.0e-07)a=0;else a=+h[a>>3]>=+h[b>>3]&1;else a=1;return a|0}function bH(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+8>>3];d=+h[b+8>>3];if(!(c<d+-1.0e-07))if(c>d+1.0e-07)a=0;else a=+h[a>>3]<+h[b>>3]&1;else a=1;return a|0}function cH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=f+(d*72|0)+24|0;p=(e|0)==1;a:while(1){o=f+(b*72|0)+24|0;j=f+(b*72|0)+48|0;k=f+(b*72|0)+52|0;l=f+(b*72|0)|0;m=f+(b*72|0)+4|0;n=f+(b*72|0)+56|0;if((b|0)<=0)break;while(1){if(!(aH(o,q)|0))break a;d=c[j>>2]|0;e=(d|0)>0;do if(p){if(e?(c[f+(d*72|0)+4>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}e=d;d=f+(d*72|0)+4|0;r=13}else{if(e?(c[f+(d*72|0)>>2]|0)==(a|0):0)break;d=c[k>>2]|0;if((d|0)<=0){b=d;continue a}e=d;d=f+(d*72|0)|0;r=13}while(0);if((r|0)==13){r=0;if((c[d>>2]|0)==(a|0))d=e;else{b=e;continue a}}if((c[l>>2]|0)!=(c[f+(d*72|0)>>2]|0)){b=d;continue a}if((c[m>>2]|0)!=(c[f+(d*72|0)+4>>2]|0)){b=d;continue a}s=c[f+(d*72|0)+56>>2]|0;e=c[g+(s*40|0)+28>>2]|0;h=g+(e*40|0)+32|0;i=c[n>>2]|0;if((c[h>>2]|0)==(s|0))c[h>>2]=i;else c[g+(e*40|0)+36>>2]=i;e=c[f+(d*72|0)+48>>2]|0;c[j>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);e=c[f+(d*72|0)+52>>2]|0;c[k>>2]=e;do if((e|0)>0){h=f+(e*72|0)+40|0;if((c[h>>2]|0)==(d|0)){c[h>>2]=b;break}e=f+(e*72|0)+44|0;if((c[e>>2]|0)==(d|0))c[e>>2]=b}while(0);s=f+(d*72|0)+24|0;c[o>>2]=c[s>>2];c[o+4>>2]=c[s+4>>2];c[o+8>>2]=c[s+8>>2];c[o+12>>2]=c[s+12>>2];c[f+(d*72|0)+68>>2]=2}}return}function dH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e>f+1.0e-07)){if(!(+F(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]>+h[d>>3]+1.0e-07){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function eH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0;e=+h[b+8>>3];f=+h[d+8>>3];do if(!(e<f+-1.0e-07)){if(!(+F(+(e-f))<=1.0e-07)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}if(+h[b>>3]<+h[d>>3]){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}while(0);return}function fH(a){a=a|0;var b=0;b=sw(8)|0;if(b|0){c[b+4>>2]=a;c[b>>2]=0}return b|0}function gH(a,b){a=a|0;b=b|0;if(b){b=fH(b)|0;c[b>>2]=a;a=b}return a|0}function hH(a){a=a|0;var b=0;do{b=a;a=c[a>>2]|0;xN(b)}while((a|0)!=0);return}function iH(){var a=0;a=sw(1992)|0;if(a|0)c[a>>2]=jH(a)|0;return a|0}function jH(a){a=a|0;var b=0;b=pH(a)|0;c[b+4>>2]=0;a=a+1972|0;c[a>>2]=(c[a>>2]|0)+1;return b|0}function kH(a){a=a|0;lH(a,c[a>>2]|0);xN(c[a>>2]|0);xN(a);return 0}function lH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=a+1936|0;h=a+1980|0;i=a+1912|0;a:do if((c[b+4>>2]|0)>0){d=0;while(1){if((d|0)==64)break a;e=b+8+(d*20|0)+16|0;f=c[e>>2]|0;if(f|0?(lH(a,f),xN(c[e>>2]|0),vH(b,d),c[h>>2]=(c[h>>2]|0)+-1,c[i>>2]|0):0)c[g>>2]=(c[g>>2]|0)+1;d=d+1|0}}else{d=0;while(1){if((d|0)==64)break a;if(c[b+8+(d*20|0)+16>>2]|0?(vH(b,d),c[h>>2]=(c[h>>2]|0)+-1,c[i>>2]|0):0)c[g>>2]=(c[g>>2]|0)+1;d=d+1|0}}while(0);return}function mH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;if(!b)va(123706,123356,194,123364);e=c[b+4>>2]|0;if((e|0)<=-1)va(123376,123356,195,123364);if(!d)va(123648,123356,196,123364);i=a+1952|0;c[i>>2]=(c[i>>2]|0)+1;a:do if((e|0)>0){i=0;e=0;while(1){if((i|0)==64)break a;f=b+8+(i*20|0)+16|0;if((c[f>>2]|0)!=0?(AH(d,b+8+(i*20|0)|0)|0)!=0:0){g=mH(a,c[f>>2]|0,d)|0;if(!e)e=g;else{f=e;while(1){h=c[f>>2]|0;if(!h)break;else f=h}c[f>>2]=g}}i=i+1|0}}else{g=0;e=0;while(1){if((g|0)==64)break a;f=b+8+(g*20|0)|0;if((c[b+8+(g*20|0)+16>>2]|0)!=0?(AH(d,f)|0)!=0:0)e=gH(e,f)|0;g=g+1|0}}while(0);return e|0}function nH(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+64|0;j=o+52|0;k=o+32|0;m=o+16|0;n=o;c[j>>2]=0;if(!((b|0)!=0&(e|0)!=0))va(123562,123356,247,123390);if((f|0)>-1?(i=c[e>>2]|0,(c[i+4>>2]|0)>=(f|0)):0){g=0;while(1){if((g|0)>=2)break;if((c[b+(g<<2)>>2]|0)>(c[b+(g+2<<2)>>2]|0)){h=8;break}else g=g+1|0}if((h|0)==8)va(123437,123356,250,123390);g=a+1912|0;h=a+1908|0;if(c[g>>2]|0){p=c[h>>2]|0?a+1924|0:a+1916|0;c[p>>2]=(c[p>>2]|0)+1}if(!(c[h>>2]|0)){p=a+1964|0;c[p>>2]=(c[p>>2]|0)+1}if(!(oH(a,b,d,i,j,f)|0))g=0;else{if(c[g>>2]|0){p=c[h>>2]|0?a+1948|0:a+1944|0;c[p>>2]=(c[p>>2]|0)+1}g=pH(a)|0;p=a+1976|0;c[p>>2]=(c[p>>2]|0)+1;p=c[e>>2]|0;c[g+4>>2]=(c[p+4>>2]|0)+1;sH(m,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];p=k+16|0;c[p>>2]=c[e>>2];uH(a,k,g,0)|0;sH(n,c[j>>2]|0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[p>>2]=c[j>>2];uH(a,k,g,0)|0;c[e>>2]=g;g=a+1980|0;c[g>>2]=(c[g>>2]|0)+2;g=1}l=o;return g|0}va(123402,123356,248,123390);return 0}function oH(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+80|0;m=q+52|0;n=q+48|0;o=q+32|0;p=q+16|0;k=q;c[n>>2]=0;if(!((b|0)!=0&(e|0)!=0&(f|0)!=0))va(123480,123356,311,123494);if((g|0)>-1?(i=e+4|0,h=c[i>>2]|0,(h|0)>=(g|0)):0){if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1;h=c[i>>2]|0}do if((h|0)>(g|0)){i=tH(b,e)|0;h=e+8+(i*20|0)+16|0;i=e+8+(i*20|0)|0;if(!(oH(a,b,d,c[h>>2]|0,n,g)|0)){zH(o,b,i);c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];j=0;break}else{sH(p,c[h>>2]|0);c[i>>2]=c[p>>2];c[i+4>>2]=c[p+4>>2];c[i+8>>2]=c[p+8>>2];c[i+12>>2]=c[p+12>>2];j=c[n>>2]|0;c[m+16>>2]=j;sH(k,j);c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=uH(a,m,e,f)|0;break}}else if((h|0)==(g|0)){c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];c[m+16>>2]=d;j=a+1980|0;c[j>>2]=(c[j>>2]|0)+1;j=uH(a,m,e,f)|0;break}else va(123539,123356,341,123494);while(0);l=q;return j|0}va(123507,123356,312,123494);return 0}function pH(a){a=a|0;a=a+1968|0;c[a>>2]=(c[a>>2]|0)+1;a=wN(1288)|0;qH(a);return a|0}function qH(a){a=a|0;var b=0;c[a>>2]=0;c[a+4>>2]=-1;b=0;while(1){if((b|0)==64)break;rH(a+8+(b*20|0)|0);b=b+1|0}return}function rH(a){a=a|0;wH(a);c[a+16>>2]=0;return}function sH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+32|0;g=i+16|0;h=i;if(!b)va(123706,123545,99,123552);wH(g);d=1;f=0;while(1){if((f|0)==64)break;do if(c[b+8+(f*20|0)+16>>2]|0){e=b+8+(f*20|0)|0;if(!d){zH(h,g,e);c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];d=0;break}else{c[g>>2]=c[e>>2];c[g+4>>2]=c[e+4>>2];c[g+8>>2]=c[e+8>>2];c[g+12>>2]=c[e+12>>2];d=0;break}}while(0);f=f+1|0}c[a>>2]=c[g>>2];c[a+4>>2]=c[g+4>>2];c[a+8>>2]=c[g+8>>2];c[a+12>>2]=c[g+12>>2];l=i;return}function tH(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;k=l;l=l+32|0;i=k+16|0;j=k;if(!((a|0)!=0&(b|0)!=0))va(123562,123545,125,123569);d=0;e=0;f=0;g=1;h=0;while(1){if((h|0)==64)break;if(c[b+8+(h*20|0)+16>>2]|0){n=b+8+(h*20|0)|0;p=yH(n)|0;zH(j,a,n);c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];n=(yH(i)|0)-p|0;m=(g|0)!=0|(n|0)<(f|0);o=m|(p|0)<(e|0)&(n|0)==(f|0);d=o?h:d;e=o?p:e;f=o?n:f;g=m?0:g}h=h+1|0}l=k;return d|0}function uH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if(!b)va(123728,123545,167,123580);if(!d)va(123706,123545,168,123580);do if((c[d>>2]|0)<64){a=0;while(1){if((a|0)>=64){e=10;break}if(!(c[d+8+(a*20|0)+16>>2]|0)){e=8;break}a=a+1|0}if((e|0)==8){f=d+8+(a*20|0)|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[f+16>>2]=c[b+16>>2];f=0;g=d;break}else if((e|0)==10)va(123590,123545,178,123580)}else{if(c[a+1912>>2]|0){h=c[a+1908>>2]|0?a+1948|0:a+1944|0;c[h>>2]=(c[h>>2]|0)+1}if(!e)va(123603,123545,187,123580);else{BH(a,d,b,e);f=1;g=(c[d+4>>2]|0)==0?a+1972|0:a+1976|0;break}}while(0);c[g>>2]=(c[g>>2]|0)+1;return f|0}function vH(a,b){a=a|0;b=b|0;if(!((a|0)!=0&b>>>0<64))va(123607,123545,201,123635);if(!(c[a+8+(b*20|0)+16>>2]|0))va(124129,123545,202,123635);else{rH(a+8+(b*20|0)|0);c[a>>2]=(c[a>>2]|0)+-1;return}}function wH(a){a=a|0;var b=0;b=0;while(1){if((b|0)==4)break;c[a+(b<<2)>>2]=0;b=b+1|0}return}function xH(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;c[d>>2]=1;c[d+8>>2]=-1;b=1;while(1){if((b|0)==2)break;c[d+(b+2<<2)>>2]=0;c[d+(b<<2)>>2]=0;b=b+1|0}c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];l=e;return}function yH(a){a=a|0;var b=0,d=0,e=0;if(!a)va(123648,123650,128,123662);a:do if((c[a>>2]|0)>(c[a+8>>2]|0))b=0;else{b=1;d=0;while(1){if((d|0)==2)break a;e=S(c[a+(d+2<<2)>>2]|0,b)|0;b=e-(c[a+(d<<2)>>2]|0)|0;d=d+1|0}}while(0);return b|0}function zH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=l;l=l+16|0;f=g;if(!((b|0)!=0&(d|0)!=0))va(123671,123650,195,123679);do if((c[b>>2]|0)>(c[b+8>>2]|0)){c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2]}else{if((c[d>>2]|0)>(c[d+8>>2]|0)){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else e=0;while(1){if((e|0)==2)break;j=c[b+(e<<2)>>2]|0;h=c[d+(e<<2)>>2]|0;c[f+(e<<2)>>2]=(j|0)<(h|0)?j:h;h=e+2|0;j=c[b+(h<<2)>>2]|0;i=c[d+(h<<2)>>2]|0;c[f+(h<<2)>>2]=(j|0)>(i|0)?j:i;e=e+1|0}c[a>>2]=c[f>>2];c[a+4>>2]=c[f+4>>2];c[a+8>>2]=c[f+8>>2];c[a+12>>2]=c[f+12>>2]}while(0);l=g;return}function AH(a,b){a=a|0;b=b|0;var d=0,e=0;if((a|0)!=0&(b|0)!=0)d=0;else va(123691,123650,216,123698);while(1){if((d|0)>=2){d=1;break}e=d+2|0;if((c[a+(d<<2)>>2]|0)>(c[b+(e<<2)>>2]|0)){d=0;break}if((c[b+(d<<2)>>2]|0)>(c[a+(e<<2)>>2]|0)){d=0;break}else d=d+1|0}return d|0}function BH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,h=0,i=0,j=0,k=0;if(!b)va(123706,123708,40,123718);if(!d)va(123728,123708,41,123718);j=a+1912|0;k=a+1908|0;if(c[j>>2]|0){i=c[k>>2]|0?a+1932|0:a+1928|0;c[i>>2]=(c[i>>2]|0)+1}h=b+4|0;i=c[h>>2]|0;CH(a,b,d);d=a+1324|0;DH(a);f=yH(a+1852|0)|0;f=(yH(a+1868|0)|0)+f|0;if(c[j>>2]|0?(f|0)!=0&(c[k>>2]|0)==0:0){k=a+1960|0;g[k>>2]=+g[k>>2]+ +((c[a+1320>>2]|0)>>>0)/+(f|0)}k=pH(a)|0;c[e>>2]=k;c[h>>2]=i;c[k+4>>2]=i;EH(a,b,k,d);if(((c[c[e>>2]>>2]|0)+(c[b>>2]|0)|0)==65)return;else va(123730,123708,86,123718)}function CH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;h=l;l=l+16|0;g=h;if(!b)va(123706,123708,106,124117);if(!d)va(123728,123708,107,124117);else e=0;while(1){if((e|0)>=64)break;if(!(c[b+8+(e*20|0)+16>>2]|0)){f=7;break}j=b+8+(e*20|0)|0;i=a+4+(e*20|0)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];c[i+16>>2]=c[j+16>>2];e=e+1|0}if((f|0)==7)va(124129,123708,111,124117);e=a+4|0;j=a+1284|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];c[j+16>>2]=c[d+16>>2];d=a+1304|0;c[d>>2]=c[e>>2];c[d+4>>2]=c[e+4>>2];c[d+8>>2]=c[e+8>>2];c[d+12>>2]=c[e+12>>2];e=1;while(1){if((e|0)==65)break;zH(g,d,a+4+(e*20|0)|0);c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2];e=e+1|0}c[a+1320>>2]=yH(d)|0;qH(b);l=h;return}function DH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;u=l;l=l+48|0;i=u+32|0;k=u+16|0;m=u;FH(a);GH(a);s=a+1844|0;q=a+1848|0;t=a+1892|0;n=a+1852|0;o=a+1884|0;p=a+1868|0;j=a+1888|0;f=0;e=0;while(1){b=c[s>>2]|0;d=c[q>>2]|0;if((d+b|0)>=65)break;h=65-(c[t>>2]|0)|0;b=(b|0)<(h|0);if(b&(d|0)<(h|0)){g=-1;h=0}else{r=12;break}while(1){if((h|0)==65)break;if(!(c[a+1584+(h<<2)>>2]|0)){v=a+4+(h*20|0)|0;zH(k,v,n);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];b=yH(i)|0;d=c[o>>2]|0;zH(m,v,p);c[i>>2]=c[m>>2];c[i+4>>2]=c[m+4>>2];c[i+8>>2]=c[m+8>>2];c[i+12>>2]=c[m+12>>2];v=yH(i)|0;b=v-(c[j>>2]|0)+(d-b)|0;d=(b|0)>-1;b=d?b:0-b|0;d=(d^1)&1;if((b|0)<=(g|0))if((b|0)==(g|0)){v=(c[a+1844+(d<<2)>>2]|0)<(c[a+1844+(f<<2)>>2]|0);b=g;d=v?d:f;e=v?h:e}else{b=g;d=f}else e=h}else{b=g;d=f}g=b;h=h+1|0;f=d}HH(a,e,f)}if((r|0)==12){b=(b^1)&1;d=0;while(1){if((d|0)==65)break;if(!(c[a+1584+(d<<2)>>2]|0))HH(a,d,b);d=d+1|0}d=c[q>>2]|0;b=c[s>>2]|0}if((d+b|0)!=65)va(123873,123708,210,123959);v=c[t>>2]|0;if((b|0)<(v|0)|(d|0)<(v|0))va(123970,123708,212,123959);else{l=u;return}}function EH(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;if(!b)va(123706,123708,297,123770);if(!d)va(123780,123708,298,123770);if(!e)va(123782,123708,299,123770);else g=0;while(1){if((g|0)>=65){e=14;break}f=c[a+1324+(g<<2)>>2]|0;if(f>>>0>=2){e=9;break}e=a+4+(g*20|0)|0;switch(f|0){case 0:{uH(a,e,b,0)|0;break}case 1:{uH(a,e,d,0)|0;break}default:{}}g=g+1|0}if((e|0)==9)va(123784,123708,303,123770);else if((e|0)==14)return}function FH(a){a=a|0;var b=0,d=0,e=0,f=0;d=l;l=l+16|0;e=d;c[a+1848>>2]=0;c[a+1844>>2]=0;b=a+1852|0;f=a+1868|0;xH(e);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2];c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];c[a+1888>>2]=0;c[a+1884>>2]=0;b=0;while(1){if((b|0)==65)break;c[a+1584+(b<<2)>>2]=0;c[a+1324+(b<<2)>>2]=-1;b=b+1|0}l=d;return}function GH(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;o=l;l=l+304|0;k=o+32|0;m=o+16|0;n=o;b=0;while(1){if((b|0)==65)break;c[k+(b<<2)>>2]=yH(a+4+(b*20|0)|0)|0;b=b+1|0}b=0;d=0;e=0;g=0;a:while(1){if((g|0)==64)break;i=g+1|0;j=a+4+(g*20|0)|0;h=k+(g<<2)|0;f=i;while(1){if((f|0)==65){g=i;continue a}zH(n,j,a+4+(f*20|0)|0);c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];p=yH(m)|0;p=p-(c[h>>2]|0)-(c[k+(f<<2)>>2]|0)|0;q=p>>>0>e>>>0;r=q?f:b;f=f+1|0;b=r;d=q?g:d;e=q?p:e}}HH(a,d,0);HH(a,b,1);l=o;return}function HH(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;e=a+1584+(b<<2)|0;if(c[e>>2]|0)va(124073,123708,257,124108);c[a+1324+(b<<2)>>2]=d;c[e>>2]=1;g=a+1844+(d<<2)|0;f=a+1852+(d<<4)|0;e=a+4+(b*20|0)|0;if(!(c[g>>2]|0)){c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];c[f+8>>2]=c[e+8>>2];c[f+12>>2]=c[e+12>>2]}else{zH(h,e,f);c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2]}c[a+1884+(d<<2)>>2]=yH(f)|0;c[g>>2]=(c[g>>2]|0)+1;l=i;return}function IH(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1200|0;t=v+800|0;h=v;c[42474]=0;c[42475]=-2;f=t;j=200;n=h;o=0;q=0;g=t;a:while(1){b[g>>1]=o;if((f+(j<<1)+-2|0)>>>0>g>>>0){r=j;s=f;p=h;i=n}else{m=(g-f>>1)+1|0;if(j>>>0>9999){u=96;break}j=j<<1;j=j>>>0<1e4?j:1e4;e=wN(j*6|3)|0;if(e){MN(e|0,f|0,m<<1|0)|0;i=e+(j>>>1<<2)|0;MN(i|0,n|0,m<<2|0)|0;if((f|0)==(t|0)){k=0;f=e}else{xN(f);k=0;f=e}}else{k=4;i=n}e=(k|0)==0;switch((e?((j|0)>(m|0)?0:9):k)&15){case 9:{e=1;u=97;break a}case 4:{u=96;break a}case 0:{r=j;s=f;p=e?i+(m<<2)+-4|0:h;g=e?f+(m<<1)+-2|0:g;break}default:{e=0;break a}}}if((o|0)==31){e=0;f=s;u=97;break}e=b[58374+(o<<1)>>1]|0;j=e<<16>>16;k=(q|0)!=0;do if(e<<16>>16!=-82){f=c[42475]|0;if((f|0)==-2){f=fI()|0;c[42475]=f}if((f|0)>=1)if(f>>>0<296)h=d[124148+f>>0]|0;else h=2;else{c[42475]=0;h=0}f=h+j|0;if(f>>>0<=271?(a[124444+f>>0]|0)==(h|0):0){o=a[124716+f>>0]|0;e=o<<24>>24;if(o<<24>>24<1){f=0-e|0;u=23;break}else{c[42475]=-2;h=p+4|0;c[h>>2]=c[42476];k=k?q+-1|0:0;break}}else u=22}else u=22;while(0);if((u|0)==22){u=0;o=a[124988+o>>0]|0;f=o&255;if(!(o<<24>>24)){do if(k)if((q|0)==3){f=c[42475]|0;if((f|0)<1)if(!f){e=1;f=s;u=97;break a}else{f=p;break}else{c[42475]=-2;f=p;break}}else f=p;else{c[42474]=(c[42474]|0)+1;bI(125385);f=p}while(0);while(1){if(e<<16>>16==8)break;if((g|0)==(s|0)){e=1;f=s;u=97;break a}e=g+-2|0;f=f+-4|0;g=e;e=b[58374+(b[e>>1]<<1)>>1]|0}h=f+4|0;c[h>>2]=c[42476];e=1;k=3}else u=23}do if((u|0)==23){u=0;m=d[125104+f>>0]|0;e=c[p+(1-m<<2)>>2]|0;h=p+-12|0;j=p+-4|0;k=p+-8|0;do switch(f|0){case 4:{u=26;break a}case 2:{c[42477]=JH(c[j>>2]|0,2)|0;break}case 3:{c[42477]=JH(c[j>>2]|0,1)|0;break}case 5:{e=LH()|0;break}case 8:{MH(c[42478]|0);break}case 9:{NH(c[p>>2]|0);break}case 18:{OH(c[p>>2]|0);break}case 19:{PH();break}case 20:{OH(c[p>>2]|0);break}case 21:{PH();break}case 22:{OH(c[p>>2]|0);break}case 23:{PH();break}case 24:{OH(c[p>>2]|0);break}case 25:{PH();break}case 26:{OH(c[p>>2]|0);break}case 27:{PH();break}case 28:{OH(c[p>>2]|0);break}case 29:{PH();break}case 30:{OH(c[p>>2]|0);break}case 31:{PH();break}case 32:{OH(c[p>>2]|0);break}case 33:{PH();break}case 34:{e=c[j>>2]|0;break}case 35:{e=c[p>>2]|0;break}case 38:{e=c[42478]|0;h=c[e+4>>2]|0;if(h>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;h=c[42478]|0;e=h;h=c[h+4>>2]|0}a[h>>0]=0;o=c[e>>2]|0;c[e+4>>2]=o;if(QH(o)|0){u=51;break a}c[(c[p>>2]|0)+80>>2]=c[42479];e=Ql(55032,c[4344]|0)|0;c[(c[p>>2]|0)+84>>2]=e;c[42479]=c[p>>2];c[(c[p>>2]|0)+108>>2]=c[c[42480]>>2];e=c[p>>2]|0;break}case 39:{e=c[42478]|0;h=c[e+4>>2]|0;if(h>>>0>=(c[e+8>>2]|0)>>>0){dm(e,1)|0;h=c[42478]|0;e=h;h=c[h+4>>2]|0}a[h>>0]=0;o=c[e>>2]|0;c[e+4>>2]=o;if(QH(o)|0){u=56;break a}e=c[42479]|0;c[42479]=c[e+80>>2];break}case 40:{e=c[p>>2]|0;break}case 41:{e=c[j>>2]|0;break}case 42:{e=c[j>>2]|0;break}case 43:{e=c[j>>2]|0;break}case 44:{e=c[j>>2]|0;break}case 45:{e=c[j>>2]|0;break}case 48:{e=c[p>>2]|0;break}case 49:{e=c[p>>2]|0;break}case 50:{a[(c[k>>2]|0)+12>>0]=1;e=c[p>>2]|0;break}case 51:{RH();break}case 52:{e=SH()|0;break}case 53:{e=c[p>>2]|0;break}case 54:{e=c[p>>2]|0;break}case 55:{e=(c[k>>2]|0)+100|0;a[e>>0]=a[e>>0]|1;e=c[p>>2]|0;break}case 56:{TH(c[j>>2]|0,c[p>>2]|0,1);break}case 57:{e=c[h>>2]|0;break}case 58:{TH(c[j>>2]|0,c[p>>2]|0,2);break}case 59:{e=c[h>>2]|0;break}case 60:{TH(c[j>>2]|0,c[p>>2]|0,3);break}case 61:{e=c[h>>2]|0;break}case 62:{TH(c[p>>2]|0,LH()|0,2);break}case 63:{e=c[k>>2]|0;break}case 64:{e=c[j>>2]|0;break}case 65:{e=c[p>>2]|0;break}default:{}}while(0);h=0-m|0;p=p+(h<<2)|0;g=g+(h<<1)|0;h=p+4|0;c[p+4>>2]=e;e=(d[125276+f>>0]|0)+-41|0;p=b[g>>1]|0;f=p+(b[58606+(e<<1)>>1]|0)|0;if(f>>>0<272?(a[124444+f>>0]|0)==(p|0):0){e=a[124716+f>>0]|0;k=q;break}e=a[125346+e>>0]|0;k=q}while(0);f=s;j=r;n=i;o=e;q=k;g=g+2|0}if((u|0)==26){KH();e=1;f=s;u=97}else if((u|0)==51){bI(125174);KH();e=1;f=s;u=97}else if((u|0)==56){bI(125225);KH();e=1;f=s;u=97}else if((u|0)==96){bI(125398);e=2;u=97}if((u|0)==97)if((f|0)!=(t|0))xN(f);l=v;return e|0}function JH(b,d){b=b|0;d=d|0;var e=0;e=sw(8)|0;a[e+4>>0]=d;c[e>>2]=b;return e|0}function KH(){var a=0,b=0;a=c[42479]|0;b=c[42477]|0;if(b|0){DF(b,1);c[42477]=0}c[13771]=62;while(1){if(!a)break;b=c[a+80>>2]|0;XH(a);a=b}c[13771]=51;c[13780]=63;b=c[42482]|0;Za[c[b>>2]&31](b,0,64)|0;c[13780]=51;c[13789]=64;b=c[42483]|0;Za[c[b>>2]&31](b,0,64)|0;c[13789]=51;_H();return}function LH(){var a=0,d=0,e=0,f=0,g=0,h=0;e=c[42483]|0;f=sw(40)|0;if(Sl(c[42482]|0)|0)NH(0);a=Sl(e)|0;b[f+4>>1]=a;a:do if(!a)a=e;else{c[f>>2]=sw(a*24|0)|0;a=0;d=Za[c[e>>2]&31](e,0,128)|0;while(1){if(!d){a=e;break a}g=(c[f>>2]|0)+(a*24|0)|0;h=d+8|0;c[g>>2]=c[h>>2];c[g+4>>2]=c[h+4>>2];c[g+8>>2]=c[h+8>>2];c[g+12>>2]=c[h+12>>2];c[g+16>>2]=c[h+16>>2];c[g+20>>2]=c[h+20>>2];a=a+1|0;d=Za[c[e>>2]&31](e,d,8)|0}}while(0);Za[c[a>>2]&31](e,0,64)|0;return f|0}function MH(b){b=b|0;var d=0,e=0,f=0;e=sw(64)|0;f=b+4|0;d=c[f>>2]|0;if(d>>>0>=(c[b+8>>2]|0)>>>0){dm(b,1)|0;d=c[f>>2]|0}a[d>>0]=0;b=c[b>>2]|0;c[f>>2]=b;c[e+8>>2]=mL(b)|0;c[e+12>>2]=c[c[42480]>>2];f=c[42482]|0;Za[c[f>>2]&31](f,e,1)|0;return}function NH(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=sw(32)|0;j=c[42482]|0;e=Sl(j)|0;k=i+8|0;a[i+14>>0]=d;a:do if(!e){c[k>>2]=sw(56)|0;b[i+12>>1]=1;h=mL(174318)|0;k=c[k>>2]|0;c[k>>2]=h;c[k+4>>2]=c[c[42480]>>2]}else{b[i+12>>1]=e;c[k>>2]=sw(e*56|0)|0;d=0;e=Ol(j)|0;while(1){if(!e)break a;f=(c[k>>2]|0)+(d*56|0)|0;g=e+8|0;h=f+56|0;do{c[f>>2]=c[g>>2];f=f+4|0;g=g+4|0}while((f|0)<(h|0));d=d+1|0;e=c[e>>2]|0}}while(0);Za[c[j>>2]&31](j,0,64)|0;k=c[42483]|0;Za[c[k>>2]&31](k,i,1)|0;return}function OH(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0,i=0,j=0;j=l;l=l+32|0;g=j;i=sw(8)|0;f=c[c[42480]>>2]|0;c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[g+16>>2]=c[a+16>>2];c[g+20>>2]=c[a+20>>2];c[g+24>>2]=c[a+24>>2];c[g+28>>2]=c[a+28>>2];if(f|0){a=g+4|0;if((c[a>>2]|0)==0?(b=c[f+4>>2]|0,b|0):0)c[a>>2]=b;a=g+16|0;if(+h[a>>3]<0.0?(d=+h[f+16>>3],d>=0.0):0)h[a>>3]=d;if((c[g>>2]|0)==0?(e=c[f>>2]|0,e|0):0)c[g>>2]=e;a=c[f+24>>2]&127;if(a|0){f=g+24|0;e=c[f>>2]|0;c[f>>2]=e&127|a|e&-128}}f=c[(c[42481]|0)+144>>2]|0;c[i>>2]=Za[c[f>>2]&31](f,g,1)|0;c[i+4>>2]=c[42480];c[42480]=i;l=j;return}function PH(){var a=0,b=0;b=c[42480]|0;a=c[b+4>>2]|0;xN(b);c[42480]=a;return}function QH(b){b=b|0;var c=0;while(1){c=a[b>>0]|0;if(!(c<<24>>24)){b=0;break}if(c<<24>>24==32)b=b+1|0;else{b=1;break}}return b|0}function RH(){var b=0,d=0,e=0;e=Ql(55068,c[4344]|0)|0;b=c[42479]|0;d=sw(16)|0;c[d+8>>2]=e;if(a[b+112>>0]&2)a[d+12>>0]=1;e=c[b+84>>2]|0;Za[c[e>>2]&31](e,d,1)|0;return}function SH(){var a=0;a=c[(c[42479]|0)+84>>2]|0;return Za[c[a>>2]&31](a,0,256)|0}function TH(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=sw(16)|0;f=c[42479]|0;h=c[f+84>>2]|0;h=c[(Za[c[h>>2]&31](h,0,256)|0)+8>>2]|0;c[g+8>>2]=b;Za[c[h>>2]&31](h,g,1)|0;a[b+92>>0]=e;if(a[f+112>>0]&1)a[b+100>>0]=1;c[b+88>>2]=d;return}function UH(a,b,c){a=a|0;b=b|0;c=c|0;xN(b);return}function VH(a,b,d){a=a|0;b=b|0;d=d|0;Kl(c[b+8>>2]|0)|0;xN(b);return}function WH(a,b,d){a=a|0;b=b|0;d=d|0;$H(c[b+8>>2]|0);xN(b);return}function XH(a){a=a|0;Kl(c[a+84>>2]|0)|0;AF(a);xN(a);return}function YH(a,b,d){a=a|0;b=b|0;d=d|0;xN(c[b+8>>2]|0);xN(b);return}function ZH(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d+12|0;a=b[g>>1]|0;if(a<<16>>16){h=d+8|0;e=0;f=c[h>>2]|0;while(1){if((e|0)>=(a<<16>>16|0))break;xN(c[f>>2]|0);e=e+1|0;f=f+56|0;a=b[g>>1]|0}xN(c[h>>2]|0)}xN(d);return}function _H(){var a=0,b=0;a=c[42480]|0;while(1){b=c[a+4>>2]|0;if(!b)break;xN(a);a=b}return}function $H(b){b=b|0;var d=0;d=b+88|0;switch(a[b+92>>0]|0){case 1:{XH(c[d>>2]|0);break}case 2:{BF(c[d>>2]|0);break}default:{}}AF(b);xN(b);return}function aI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+160|0;e=f+8|0;g=f;c[g>>2]=0;c[g+4>>2]=0;c[42480]=g;c[42479]=0;c[42477]=0;c[42481]=c[(c[(c[d+52>>2]|0)+16>>2]|0)+144>>2];c[42482]=Ql(55104,c[4344]|0)|0;c[42483]=Ql(55140,c[4344]|0)|0;cm(e,128,f+24|0);c[42478]=e;if(!(dI(a,e,d)|0)){IH()|0;c[b>>2]=eI()|0;a=c[42477]|0}else{c[b>>2]=2;a=0}Kl(c[42482]|0)|0;Kl(c[42483]|0)|0;c[42482]=0;c[42483]=0;c[42480]=0;gm(e);l=f;return a|0}function bI(b){b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;if(!(a[169936]|0)){a[169936]=1;c[d>>2]=b;c[d+4>>2]=0;_l(1,125415,d)|0;cI()}else{l=e;return}}function cI(){Ua()}function dI(a,b,d){a=a|0;b=b|0;d=d|0;a=l;l=l+16|0;if(!(c[42485]|0)){_l(0,125431,a)|0;c[42485]=(c[42485]|0)+1}l=a;return 1}function eI(){return 1}function fI(){return -1}function gI(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+64|0;m=u+48|0;k=u+32|0;s=4;j=wN(40)|0;c[j>>2]=0;n=u+16|0;q=u;r=c[d>>2]|0;i=c[d+4>>2]|0;s=JN(169944,1,j|0,s|0)|0;j=D;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){g=LN(c[d>>2]|0,s|0,j|0)|0;if(!g)xa(d|0,p|0);D=p}else g=-1;if((g|0)==1)d=D;else d=0;while(1){if(d|0){d=-1;break}o=0;c[m>>2]=c[e>>2];c[m+4>>2]=c[e+4>>2];c[m+8>>2]=c[e+8>>2];c[m+12>>2]=c[e+12>>2];ea(26,n|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=LN(c[d>>2]|0,s|0,j|0)|0;if(!g)xa(d|0,p|0);D=p}else g=-1;if((g|0)==1){d=D;continue};c[e>>2]=c[n>>2];c[e+4>>2]=c[n+4>>2];c[e+8>>2]=c[n+8>>2];c[e+12>>2]=c[n+12>>2];h=e+16|0;o=0;c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];ea(26,q|0,m|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=LN(c[d>>2]|0,s|0,j|0)|0;if(!g)xa(d|0,p|0);D=p}else g=-1;if((g|0)==1){d=D;continue};c[h>>2]=c[q>>2];c[h+4>>2]=c[q+4>>2];c[h+8>>2]=c[q+8>>2];c[h+12>>2]=c[q+12>>2];c[42525]=0;o=0;da(93,4);d=o;o=0;if((d|0)!=0&(p|0)!=0){g=LN(c[d>>2]|0,s|0,j|0)|0;if(!g)xa(d|0,p|0);D=p}else g=-1;if((g|0)==1){d=D;continue}g=c[42526]|0;d=c[42525]|0;c[42525]=d+1;d=g+(d<<4)|0;c[d>>2]=c[r>>2];c[d+4>>2]=c[r+4>>2];c[d+8>>2]=c[r+8>>2];c[d+12>>2]=c[r+12>>2];o=0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[m>>2]=c[h>>2];c[m+4>>2]=c[h+4>>2];c[m+8>>2]=c[h+8>>2];c[m+12>>2]=c[h+12>>2];d=fa(1,a|0,b|0,r|0,i|0,k|0,m|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){h=LN(c[g>>2]|0,s|0,j|0)|0;if(!h)xa(g|0,p|0);D=p}else h=-1;if((h|0)==1)d=D;else{t=8;break}}if((t|0)==8)if((d|0)==-1)d=-1;else{c[f+4>>2]=c[42525];c[f>>2]=c[42526];d=0}xN(s|0);l=u;return d|0}function hI(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0;d=+h[b>>3];e=b+8|0;f=+h[e>>3];g=d*d+f*f;if(g>1.0e-06){g=+G(+g);h[b>>3]=d/g;h[e>>3]=f/g};c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function iI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g;if((c[42529]|0)<(a|0)){b=c[42526]|0;d=a<<4;if(!b){f=wN(d)|0;c[42526]=f;if(!f){f=c[13857]|0;c[e>>2]=125492;c[e+4>>2]=531;c[e+8>>2]=125627;OL(f,125500,e)|0;xa(169944,1)}}else{e=zN(b,d)|0;c[42526]=e;if(!e){e=c[13857]|0;c[f>>2]=125492;c[f+4>>2]=537;c[f+8>>2]=125645;OL(e,125500,f)|0;xa(169944,1)}}c[42529]=a}l=g;return}function jI(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0,m=0.0,n=0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0.0,U=0.0,V=0.0,W=0.0;R=l;l=l+336|0;J=R+320|0;I=R+304|0;w=R+144|0;q=R+128|0;G=R+112|0;H=R+96|0;Q=R+80|0;A=R+64|0;C=R+48|0;K=R+32|0;L=R+16|0;M=R;x=R+288|0;y=R+272|0;z=R+256|0;B=R+240|0;D=R+224|0;E=R+208|0;N=R+192|0;O=R+176|0;P=R+160|0;i=c[42528]|0;do if((c[42527]|0)<(e|0)){k=e*40|0;if(!i){i=wN(k)|0;c[42528]=i;if(!i){i=-1;break}}else{i=zN(i,k)|0;c[42528]=i;if(!i){i=-1;break}}c[42527]=e;n=6}else n=6;while(0);if((n|0)==6){h[i>>3]=0.0;k=1;j=0.0;while(1){if((k|0)>=(e|0))break;n=d+(k<<4)|0;F=d+(k+-1<<4)|0;c[I>>2]=c[n>>2];c[I+4>>2]=c[n+4>>2];c[I+8>>2]=c[n+8>>2];c[I+12>>2]=c[n+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];v=j+ +kI(I,J);h[i+(k*40|0)>>3]=v;k=k+1|0;j=v}F=e+-1|0;n=i+(F*40|0)|0;k=1;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)|0;h[S>>3]=+h[S>>3]/+h[n>>3];k=k+1|0}k=0;while(1){if((k|0)>=(e|0))break;S=i+(k*40|0)+8|0;n=i+(k*40|0)|0;v=+lI(+h[n>>3]);c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];c[J+8>>2]=c[f+8>>2];c[J+12>>2]=c[f+12>>2];mI(x,J,v);c[S>>2]=c[x>>2];c[S+4>>2]=c[x+4>>2];c[S+8>>2]=c[x+8>>2];c[S+12>>2]=c[x+12>>2];S=i+(k*40|0)+24|0;v=+nI(+h[n>>3]);c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];mI(y,J,v);c[S>>2]=c[y>>2];c[S+4>>2]=c[y+4>>2];c[S+8>>2]=c[y+8>>2];c[S+12>>2]=c[y+12>>2];k=k+1|0}c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];oI(d,e,i,I,J,G,A,H,C);c[q>>2]=c[G>>2];c[q+4>>2]=c[G+4>>2];c[q+8>>2]=c[G+8>>2];c[q+12>>2]=c[G+12>>2];c[w>>2]=c[A>>2];c[w+4>>2]=c[A+4>>2];c[w+8>>2]=c[A+8>>2];c[w+12>>2]=c[A+12>>2];c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];if(!(pI(a,b,q,w,I,J,d,e)|0)){c[J>>2]=c[A>>2];c[J+4>>2]=c[A+4>>2];c[J+8>>2]=c[A+8>>2];c[J+12>>2]=c[A+12>>2];mI(z,J,.3333333333333333);c[I>>2]=c[G>>2];c[I+4>>2]=c[G+4>>2];c[I+8>>2]=c[G+8>>2];c[I+12>>2]=c[G+12>>2];c[J>>2]=c[z>>2];c[J+4>>2]=c[z+4>>2];c[J+8>>2]=c[z+8>>2];c[J+12>>2]=c[z+12>>2];qI(B,I,J);v=+h[B>>3];u=+h[B+8>>3];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];mI(D,J,.3333333333333333);c[I>>2]=c[H>>2];c[I+4>>2]=c[H+4>>2];c[I+8>>2]=c[H+8>>2];c[I+12>>2]=c[H+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];rI(E,I,J);t=+h[E>>3];p=+h[E+8>>3];q=c[42528]|0;r=+h[G>>3];s=+h[H>>3];o=+h[G+8>>3];m=+h[H+8>>3];n=Q+8|0;i=-1;j=-1.0;k=1;while(1){if((k|0)>=(F|0))break;W=+h[q+(k*40|0)>>3];T=+sI(W);U=+lI(W);V=+nI(W);W=+tI(W);h[Q>>3]=T*r+v*U+t*V+W*s;h[n>>3]=W*m+(p*V+(u*U+T*o));S=d+(k<<4)|0;c[I>>2]=c[Q>>2];c[I+4>>2]=c[Q+4>>2];c[I+8>>2]=c[Q+8>>2];c[I+12>>2]=c[Q+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];T=+kI(I,J);S=T>j;i=S?k:i;j=S?T:j;k=k+1|0}S=d+(i<<4)|0;Q=d+(i+-1<<4)|0;c[I>>2]=c[S>>2];c[I+4>>2]=c[S+4>>2];c[I+8>>2]=c[S+8>>2];c[I+12>>2]=c[S+12>>2];c[J>>2]=c[Q>>2];c[J+4>>2]=c[Q+4>>2];c[J+8>>2]=c[Q+8>>2];c[J+12>>2]=c[Q+12>>2];rI(N,I,J);c[J>>2]=c[N>>2];c[J+4>>2]=c[N+4>>2];c[J+8>>2]=c[N+8>>2];c[J+12>>2]=c[N+12>>2];hI(L,J);Q=i+1|0;N=d+(Q<<4)|0;c[I>>2]=c[N>>2];c[I+4>>2]=c[N+4>>2];c[I+8>>2]=c[N+8>>2];c[I+12>>2]=c[N+12>>2];c[J>>2]=c[S>>2];c[J+4>>2]=c[S+4>>2];c[J+8>>2]=c[S+8>>2];c[J+12>>2]=c[S+12>>2];rI(O,I,J);c[J>>2]=c[O>>2];c[J+4>>2]=c[O+4>>2];c[J+8>>2]=c[O+8>>2];c[J+12>>2]=c[O+12>>2];hI(M,J);c[I>>2]=c[L>>2];c[I+4>>2]=c[L+4>>2];c[I+8>>2]=c[L+8>>2];c[I+12>>2]=c[L+12>>2];c[J>>2]=c[M>>2];c[J+4>>2]=c[M+4>>2];c[J+8>>2]=c[M+8>>2];c[J+12>>2]=c[M+12>>2];qI(P,I,J);c[J>>2]=c[P>>2];c[J+4>>2]=c[P+4>>2];c[J+8>>2]=c[P+8>>2];c[J+12>>2]=c[P+12>>2];hI(K,J);c[I>>2]=c[f>>2];c[I+4>>2]=c[f+4>>2];c[I+8>>2]=c[f+8>>2];c[I+12>>2]=c[f+12>>2];c[J>>2]=c[K>>2];c[J+4>>2]=c[K+4>>2];c[J+8>>2]=c[K+8>>2];c[J+12>>2]=c[K+12>>2];jI(a,b,d,Q,I,J)|0;c[I>>2]=c[K>>2];c[I+4>>2]=c[K+4>>2];c[I+8>>2]=c[K+8>>2];c[I+12>>2]=c[K+12>>2];c[J>>2]=c[g>>2];c[J+4>>2]=c[g+4>>2];c[J+8>>2]=c[g+8>>2];c[J+12>>2]=c[g+12>>2];jI(a,b,S,e-i|0,I,J)|0;i=0}else i=0}l=R;return i|0}function kI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]-+h[a>>3];c=+h[b+8>>3]-+h[a+8>>3];return +(+G(+(d*d+c*c)))}function lI(a){a=+a;var b=0.0;b=1.0-a;return +(b*(a*3.0*b))}function mI(a,b,d){a=a|0;b=b|0;d=+d;var e=0;h[b>>3]=+h[b>>3]*d;e=b+8|0;h[e>>3]=+h[e>>3]*d;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function nI(a){a=+a;return +((1.0-a)*(a*3.0*a))}function oI(a,b,d,e,f,g,i,j,k){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0.0,I=0.0,J=0,K=0,L=0,M=0;G=l;l=l+128|0;B=G+112|0;v=G+96|0;u=G;r=G+80|0;s=G+64|0;t=G+48|0;C=G+32|0;D=G+16|0;E=a+(b+-1<<4)|0;q=0;w=0.0;x=0.0;y=0.0;z=0.0;A=0.0;while(1){if((q|0)>=(b|0))break;K=d+(q*40|0)+8|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];H=x+ +zI(v,B);J=d+(q*40|0)+24|0;c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];p=A+ +zI(v,B);c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[J>>2];c[B+4>>2]=c[J+4>>2];c[B+8>>2]=c[J+8>>2];c[B+12>>2]=c[J+12>>2];o=y+ +zI(v,B);L=a+(q<<4)|0;M=d+(q*40|0)|0;I=+AI(+h[M>>3]);c[B>>2]=c[a>>2];c[B+4>>2]=c[a+4>>2];c[B+8>>2]=c[a+8>>2];c[B+12>>2]=c[a+12>>2];mI(s,B,I);I=+BI(+h[M>>3]);c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];mI(t,B,I);c[v>>2]=c[s>>2];c[v+4>>2]=c[s+4>>2];c[v+8>>2]=c[s+8>>2];c[v+12>>2]=c[s+12>>2];c[B>>2]=c[t>>2];c[B+4>>2]=c[t+4>>2];c[B+8>>2]=c[t+8>>2];c[B+12>>2]=c[t+12>>2];qI(r,v,B);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];c[B>>2]=c[r>>2];c[B+4>>2]=c[r+4>>2];c[B+8>>2]=c[r+8>>2];c[B+12>>2]=c[r+12>>2];rI(u,v,B);c[v>>2]=c[K>>2];c[v+4>>2]=c[K+4>>2];c[v+8>>2]=c[K+8>>2];c[v+12>>2]=c[K+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];I=w+ +zI(v,B);c[v>>2]=c[J>>2];c[v+4>>2]=c[J+4>>2];c[v+8>>2]=c[J+8>>2];c[v+12>>2]=c[J+12>>2];c[B>>2]=c[u>>2];c[B+4>>2]=c[u+4>>2];c[B+8>>2]=c[u+8>>2];c[B+12>>2]=c[u+12>>2];q=q+1|0;w=I;x=H;y=o;z=z+ +zI(v,B);A=p}o=x*y-A*A;p=o>=0.0?o:-o;if(!(p>=1.0e-06?(m=(w*y-z*A)/o,n=(z*x-w*A)/o,!(n<=0.0|(m<=0.0|p<1.0e-06))):0))F=6;if((F|0)==6){c[v>>2]=c[a>>2];c[v+4>>2]=c[a+4>>2];c[v+8>>2]=c[a+8>>2];c[v+12>>2]=c[a+12>>2];c[B>>2]=c[E>>2];c[B+4>>2]=c[E+4>>2];c[B+8>>2]=c[E+8>>2];c[B+12>>2]=c[E+12>>2];m=+kI(v,B)/3.0;n=m};c[g>>2]=c[a>>2];c[g+4>>2]=c[a+4>>2];c[g+8>>2]=c[a+8>>2];c[g+12>>2]=c[a+12>>2];c[B>>2]=c[e>>2];c[B+4>>2]=c[e+4>>2];c[B+8>>2]=c[e+8>>2];c[B+12>>2]=c[e+12>>2];mI(C,B,m);c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[j>>2]=c[E>>2];c[j+4>>2]=c[E+4>>2];c[j+8>>2]=c[E+8>>2];c[j+12>>2]=c[E+12>>2];c[B>>2]=c[f>>2];c[B+4>>2]=c[f+4>>2];c[B+8>>2]=c[f+8>>2];c[B+12>>2]=c[f+12>>2];mI(D,B,n);c[k>>2]=c[D>>2];c[k+4>>2]=c[D+4>>2];c[k+8>>2]=c[D+8>>2];c[k+12>>2]=c[D+12>>2];l=G;return}function pI(a,b,d,e,f,g,i,j){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0,r=0.0,s=0.0,t=0,u=0.0,v=0,w=0.0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0;C=l;l=l+64|0;B=C;z=(j|0)==2;y=+h[d>>3];u=+h[d+8>>3];v=B+8|0;w=+h[e>>3];x=B+16|0;p=+h[e+8>>3];q=B+24|0;r=+h[f>>3];s=+h[g>>3];t=B+32|0;o=+h[f+8>>3];n=+h[g+8>>3];e=B+40|0;f=B+48|0;g=B+56|0;d=1;k=4.0;m=4.0;while(1){h[B>>3]=y;h[v>>3]=u;h[x>>3]=y+m*w/3.0;h[q>>3]=u+m*p/3.0;h[t>>3]=r-k*s/3.0;h[e>>3]=o-k*n/3.0;h[f>>3]=r;h[g>>3]=o;if(d?(D=+uI(B,4),D<+uI(i,j)+-.001):0){d=0;break}if(vI(a,b,B)|0){A=5;break}if(m==0.0&k==0.0){A=9;break}E=m>.01;d=0;k=E?k*.5:0.0;m=E?m*.5:0.0}a:do if((A|0)==5){iI((c[42525]|0)+4|0);e=c[42526]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42525]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42525]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else if((A|0)==9)if(z){iI((c[42525]|0)+4|0);e=c[42526]|0;d=1;while(1){if((d|0)==4){d=1;break a}E=c[42525]|0;h[e+(E<<4)>>3]=+h[B+(d<<4)>>3];D=+h[B+(d<<4)+8>>3];c[42525]=E+1;h[e+(E<<4)+8>>3]=D;d=d+1|0}}else d=0;while(0);l=C;return d|0}function qI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[d>>3]+ +h[b>>3];e=b+8|0;h[e>>3]=+h[d+8>>3]+ +h[e>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function rI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;h[b>>3]=+h[b>>3]-+h[d>>3];e=b+8|0;h[e>>3]=+h[e>>3]-+h[d+8>>3];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function sI(a){a=+a;a=1.0-a;return +(a*(a*a))}function tI(a){a=+a;return +(a*a*a)}function uI(a,b){a=a|0;b=b|0;var c=0.0,d=0,e=0.0,f=0.0,g=0;c=0.0;d=1;while(1){if((d|0)>=(b|0))break;g=d+-1|0;f=+h[a+(d<<4)>>3]-+h[a+(g<<4)>>3];e=+h[a+(d<<4)+8>>3]-+h[a+(g<<4)+8>>3];c=c+ +G(+(f*f+e*e));d=d+1|0}return +c}function vI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0.0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0,D=0.0,E=0.0;C=l;l=l+64|0;t=C+32|0;u=C;w=u+16|0;x=d+16|0;z=d+32|0;A=d+48|0;B=d+8|0;g=d+24|0;i=d+40|0;j=d+56|0;k=u+8|0;m=u+24|0;f=0;a:while(1){if((f|0)>=(b|0)){e=1;break}n=a+(f<<5)|0;c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];n=a+(f<<5)+16|0;c[w>>2]=c[n>>2];c[w+4>>2]=c[n+4>>2];c[w+8>>2]=c[n+8>>2];c[w+12>>2]=c[n+12>>2];n=wI(d,u,t)|0;b:do if((n|0)!=4){o=+h[u>>3];p=+h[k>>3];q=+h[w>>3];r=+h[m>>3];e=0;while(1){if((e|0)>=(n|0))break b;s=+h[t+(e<<3)>>3];if((!(s<1.0e-06|s>.999999)?(y=s*(s*s),v=s*3.0,E=1.0-s,D=E*(s*v),s=E*(v*E),E=E*(E*E),v=E*+h[d>>3]+s*+h[x>>3]+D*+h[z>>3]+y*+h[A>>3],y=E*+h[B>>3]+s*+h[g>>3]+D*+h[i>>3]+y*+h[j>>3],D=v-o,s=y-p,!(D*D+s*s<.001)):0)?(D=v-q,E=y-r,!(D*D+E*E<.001)):0){e=0;break a}e=e+1|0}}while(0);f=f+1|0}l=C;return e|0}function wI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0,r=0,s=0.0,t=0.0,u=0.0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+96|0;y=C+48|0;A=C+24|0;z=C;B=C+80|0;u=+h[b>>3];s=+h[b+16>>3]-u;t=+h[b+8>>3];o=+h[b+24>>3]-t;c[B>>2]=0;v=y+8|0;f=a+48|0;e=a+56|0;w=y+16|0;i=a+32|0;p=a+40|0;q=a+8|0;x=y+24|0;g=+h[a>>3];j=+h[f>>3];k=+h[i>>3];r=a+24|0;n=a+16|0;m=+h[n>>3];a:do if(!(s==0.0)){o=o/s;xI(+h[q>>3]-o*g,+h[r>>3]-o*m,+h[p>>3]-o*k,+h[e>>3]-o*j,y);h[y>>3]=u*o-t+ +h[y>>3];e=TI(y,A)|0;if((e|0)==4)b=4;else{b=0;while(1){if((b|0)>=(e|0))break;g=+h[A+(b<<3)>>3];if(g>=0.0&g<=1.0?(xI(+h[a>>3],+h[n>>3],+h[i>>3],+h[f>>3],y),t=(+h[y>>3]+g*(+h[v>>3]+g*(+h[w>>3]+g*+h[x>>3]))-u)/s,t>=0.0&t<=1.0):0)yI(g,d,B);b=b+1|0}b=c[B>>2]|0}}else{xI(g,m,k,j,y);h[y>>3]=+h[y>>3]-u;n=TI(y,A)|0;if(!(o==0.0)){if((n|0)==4){b=4;break}else b=0;while(1){if((b|0)>=(n|0))break;g=+h[A+(b<<3)>>3];if(g>=0.0&g<=1.0?(xI(+h[q>>3],+h[r>>3],+h[p>>3],+h[e>>3],y),u=(+h[y>>3]+g*(+h[v>>3]+g*(+h[w>>3]+g*+h[x>>3]))-t)/o,u>=0.0&u<=1.0):0)yI(g,d,B);b=b+1|0}b=c[B>>2]|0;break}xI(+h[q>>3],+h[r>>3],+h[p>>3],+h[e>>3],y);h[y>>3]=+h[y>>3]-t;i=TI(y,z)|0;b=(i|0)==4;b:do if((n|0)==4){if(b){b=4;break a}else b=0;while(1){if((b|0)>=(i|0))break b;yI(+h[z+(b<<3)>>3],d,B);b=b+1|0}}else{if(b){b=0;while(1){if((b|0)>=(n|0))break b;yI(+h[A+(b<<3)>>3],d,B);b=b+1|0}}else e=0;while(1){if((e|0)>=(n|0))break b;f=A+(e<<3)|0;b=0;while(1){if((b|0)>=(i|0))break;g=+h[f>>3];if(g==+h[z+(b<<3)>>3])yI(g,d,B);b=b+1|0}e=e+1|0}}while(0);b=c[B>>2]|0}while(0);l=C;return b|0}function xI(a,b,c,d,e){a=+a;b=+b;c=+c;d=+d;e=e|0;c=c*3.0;h[e+24>>3]=b*3.0+d-(c+a);h[e+16>>3]=a*3.0+c-b*6.0;h[e+8>>3]=(b-a)*3.0;h[e>>3]=a;return}function yI(a,b,d){a=+a;b=b|0;d=d|0;var e=0;if(a>=0.0&a<=1.0){e=c[d>>2]|0;h[b+(e<<3)>>3]=a;c[d>>2]=e+1}return}function zI(a,b){a=a|0;b=b|0;return +(+h[a>>3]*+h[b>>3]+ +h[a+8>>3]*+h[b+8>>3])}function AI(a){a=+a;var b=0.0;b=1.0-a;return +(b*b*(b+a*3.0))}function BI(a){a=+a;return +(a*a*((1.0-a)*3.0+a))}function CI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+112|0;G=J+80|0;F=J+64|0;E=J+48|0;I=4;H=wN(40)|0;c[H>>2]=0;x=J+32|0;y=J+16|0;z=J;A=J+96|0;I=JN(170120,1,H|0,I|0)|0;H=D;o=0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1)e=D;else e=0;a:while(1){if(e|0){e=-2;break}g=a+4|0;o=0;da(94,c[g>>2]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}c[42569]=0;c[42570]=0;o=0;da(95,c[g>>2]<<1|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}n=(c[42572]|0)/2|0;c[42573]=n;c[42574]=n+-1;n=c[g>>2]|0;g=c[a>>2]|0;e=0;f=-1;i=t;while(1){if((e|0)>=(n|0))break;K=+h[g+(e<<4)>>3];w=i>K;v=w?e:f;e=e+1|0;f=v;i=w?K:i}m=g+(f<<4)|0;c[y>>2]=c[m>>2];c[y+4>>2]=c[m+4>>2];c[y+8>>2]=c[m+8>>2];c[y+12>>2]=c[m+12>>2];m=g+(((f|0)==0?n:f)+-1<<4)|0;c[x>>2]=c[m>>2];c[x+4>>2]=c[m+4>>2];c[x+8>>2]=c[m+8>>2];c[x+12>>2]=c[m+12>>2];m=n+-1|0;w=g+(((f|0)==(m|0)?0:f+1|0)<<4)|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];K=+h[y>>3];if((+h[x>>3]==K?K==+h[z>>3]:0)?+h[z+8>>3]>+h[y+8>>3]:0)w=15;else w=12;b:do if((w|0)==12){w=0;o=0;e=$(17,x|0,y|0,z|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,I|0,H|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}if((e|0)==1){g=c[42576]|0;e=c[42577]|0;f=0;while(1){if((f|0)>=(n|0))break b;j=c[a>>2]|0;k=j+(f<<4)|0;if(!(((f|0)>0?(C=f+-1|0,+h[k>>3]==+h[j+(C<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(C<<4)+8>>3]:0)){v=c[42569]|0;c[g+(v<<3)>>2]=k;c[g+(v<<3)+4>>2]=g+(((v|0)%(n|0)|0)<<3);c[e+(v<<2)>>2]=g+(v<<3);c[42569]=v+1}f=f+1|0}}else w=15}while(0);c:do if((w|0)==15){w=0;g=c[42576]|0;e=c[42577]|0;f=m;while(1){if((f|0)<=-1)break c;j=c[a>>2]|0;k=j+(f<<4)|0;if(!(((f|0)<(m|0)?(B=f+1|0,+h[k>>3]==+h[j+(B<<4)>>3]):0)?+h[j+(f<<4)+8>>3]==+h[j+(B<<4)+8>>3]:0)){v=c[42569]|0;c[g+(v<<3)>>2]=k;c[g+(v<<3)+4>>2]=g+(((v|0)%(n|0)|0)<<3);c[e+(v<<2)>>2]=g+(v<<3);c[42569]=v+1}f=f+-1|0}}while(0);o=0;ea(27,e|0,c[42569]|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}j=0;e=c[42570]|0;d:while(1){if((j|0)>=(e|0)){u=0;break}k=j+1|0;g=k;while(1){if((g|0)>=(e|0)){j=k;continue d}o=0;ea(28,j|0,g|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue a}g=g+1|0;e=c[42570]|0}}while(1){if((u|0)>=(e|0))break;o=0;f=na(39,u|0,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=LN(c[g>>2]|0,I|0,H|0)|0;if(!j)xa(g|0,p|0);D=p}else j=-1;if((j|0)==1){e=D;continue a}if(f|0)break;u=u+1|0}if((u|0)==(e|0)){e=c[13857]|0;o=0;c[E>>2]=125519;c[E+4>>2]=192;c[E+8>>2]=125530;$(13,e|0,125500,E|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}else{w=42;break}}v=b+16|0;k=0;while(1){if((k|0)>=(e|0))break;o=0;f=na(39,k|0,v|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=LN(c[g>>2]|0,I|0,H|0)|0;if(!j)xa(g|0,p|0);D=p}else j=-1;if((j|0)==1){e=D;continue a}if(f|0)break;k=k+1|0}if((k|0)==(e|0)){e=c[13857]|0;o=0;c[F>>2]=125519;c[F+4>>2]=200;c[F+8>>2]=125563;$(13,e|0,125500,F|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}else{w=49;break}}o=0;e=na(40,u|0,k|0)|0;f=o;o=0;if((f|0)!=0&(p|0)!=0){g=LN(c[f>>2]|0,I|0,H|0)|0;if(!g)xa(f|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue}if(!e){e=c[13857]|0;o=0;c[G>>2]=125519;c[G+4>>2]=207;c[G+8>>2]=125601;$(13,e|0,125500,G|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}o=0;da(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}else{w=54;break}}s=d+4|0;if((u|0)==(k|0)){o=0;da(96,2);e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,I|0,H|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){e=D;continue}else{w=57;break}}c[A>>2]=b;c[A+4>>2]=0;f=A+8|0;c[f>>2]=v;c[A+12>>2]=0;o=0;ea(29,1,A|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue}c[42575]=c[42573];q=u;e:while(1){if((q|0)==-1){g=f;e=0;break}r=c[42579]|0;c[r+(q*52|0)>>2]=2;g=0;while(1){j=g+1|0;if((g|0)>=3){w=65;break}e=c[r+(q*52|0)+4+(g<<4)+12>>2]|0;if(!e){g=j;continue}if((c[e>>2]|0)==1){w=68;break}else g=j}if((w|0)==65){w=0;if((g|0)==3){e=c[42571]|0;k=c[e+(c[42574]<<2)>>2]|0;o=0;e=$(17,v|0,c[c[e+(c[42573]<<2)>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=LN(c[g>>2]|0,I|0,H|0)|0;if(!j)xa(g|0,p|0);D=p}else j=-1;if((j|0)==1){e=D;continue a}j=(e|0)==1;n=j?f:k;j=j?k:f}else w=68}if((w|0)==68){w=0;m=c[r+(q*52|0)+4+(g<<4)>>2]|0;k=c[r+(q*52|0)+4+(g<<4)+4>>2]|0;o=0;e=$(17,c[m>>2]|0,c[c[r+(q*52|0)+4+(((j|0)%3|0)<<4)+4>>2]>>2]|0,c[k>>2]|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){j=LN(c[g>>2]|0,I|0,H|0)|0;if(!j)xa(g|0,p|0);D=p}else j=-1;if((j|0)==1){e=D;continue a}j=(e|0)==1;n=j?m:k;j=j?k:m}do if((q|0)==(u|0)){o=0;ea(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}o=0;ea(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}e=0}else{m=c[42571]|0;if((c[m+(c[42573]<<2)>>2]|0)!=(n|0)?(c[m+(c[42574]<<2)>>2]|0)!=(n|0):0){o=0;j=ha(29,n|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}o=0;ea(30,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}o=0;ea(29,1,n|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}if((j|0)<=(c[42575]|0)){e=0;break}c[42575]=j;e=0;break}o=0;k=ha(29,j|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}o=0;ea(30,1,k|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}o=0;ea(29,2,j|0);e=o;o=0;if((e|0)!=0&(p|0)!=0){g=LN(c[e>>2]|0,I|0,H|0)|0;if(!g)xa(e|0,p|0);D=p}else g=-1;if((g|0)==1){e=D;continue a}if((k|0)>=(c[42575]|0)){e=0;break}c[42575]=k;e=0}while(0);while(1){if((e|0)>=3){q=-1;continue e}g=c[r+(q*52|0)+4+(e<<4)+12>>2]|0;if(g|0?(c[g>>2]|0)==1:0)break;e=e+1|0}q=(g-(c[42579]|0)|0)/52|0}while(1){if(!g)break;g=c[g+4>>2]|0;e=e+1|0}o=0;da(96,e|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){j=LN(c[g>>2]|0,I|0,H|0)|0;if(!j)xa(g|0,p|0);D=p}else j=-1;if((j|0)==1)e=D;else{w=94;break}}if((w|0)==42)e=-1;else if((w|0)==49)e=-1;else if((w|0)==54){c[d+4>>2]=2;e=c[42578]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];H=e+16|0;c[H>>2]=c[v>>2];c[H+4>>2]=c[v+4>>2];c[H+8>>2]=c[v+8>>2];c[H+12>>2]=c[v+12>>2];c[d>>2]=e;e=0}else if((w|0)==57){c[s>>2]=2;e=c[42578]|0;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];H=e+16|0;c[H>>2]=c[v>>2];c[H+4>>2]=c[v+4>>2];c[H+8>>2]=c[v+8>>2];c[H+12>>2]=c[v+12>>2];c[d>>2]=e;e=0}else if((w|0)==94){c[s>>2]=e;g=c[42578]|0;while(1){e=e+-1|0;if(!f)break;H=g+(e<<4)|0;G=c[f>>2]|0;c[H>>2]=c[G>>2];c[H+4>>2]=c[G+4>>2];c[H+8>>2]=c[G+8>>2];c[H+12>>2]=c[G+12>>2];f=c[f+4>>2]|0}c[d>>2]=g;e=0}xN(I|0);l=J;return e|0}function DI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+64|0;g=j+48|0;i=j+32|0;h=j+16|0;f=j;if((c[42582]|0)<(a|0)){b=c[42576]|0;d=a<<3;e=a<<2;if(!b){i=wN(d)|0;c[42576]=i;if(!i){i=c[13857]|0;c[f>>2]=125519;c[f+4>>2]=523;c[f+8>>2]=125769;OL(i,125500,f)|0;xa(170120,1)}i=wN(e)|0;c[42577]=i;if(!i){i=c[13857]|0;c[h>>2]=125519;c[h+4>>2]=527;c[h+8>>2]=125788;OL(i,125500,h)|0;xa(170120,1)}}else{h=zN(b,d)|0;c[42576]=h;if(!h){h=c[13857]|0;c[i>>2]=125519;c[i+4>>2]=533;c[i+8>>2]=125808;OL(h,125500,i)|0;xa(170120,1)}i=zN(c[42577]|0,e)|0;c[42577]=i;if(!i){i=c[13857]|0;c[g>>2]=125519;c[g+4>>2]=539;c[g+8>>2]=125828;OL(i,125500,g)|0;xa(170120,1)}}c[42582]=a}l=j;return}function EI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g;if((c[42572]|0)<(a|0)){b=c[42571]|0;d=a<<2;if(!b){f=wN(d)|0;c[42571]=f;if(!f){f=c[13857]|0;c[e>>2]=125519;c[e+4>>2]=573;c[e+8>>2]=125724;OL(f,125500,e)|0;xa(170120,1)}}else{e=zN(b,d)|0;c[42571]=e;if(!e){e=c[13857]|0;c[f>>2]=125519;c[f+4>>2]=580;c[f+8>>2]=125746;OL(e,125500,f)|0;xa(170120,1)}}c[42572]=a}l=g;return}function FI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0;e=+h[b+8>>3];d=+h[b>>3];d=(+h[a+8>>3]-e)*(+h[c>>3]-d)-(+h[c+8>>3]-e)*(+h[a>>3]-d);return (d>0.0?1:d<0.0?2:3)|0}function GI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+16|0;h=i;a:while(1){if((b|0)>3)e=0;else{b=9;break}while(1){if((e|0)>=(b|0)){b=8;break a}f=e+1|0;d=(f|0)%(b|0)|0;g=(e+2|0)%(b|0)|0;if(!(OI(e,g,a,b)|0))e=f;else break}PI(c[a+(e<<2)>>2]|0,c[a+(d<<2)>>2]|0,c[a+(g<<2)>>2]|0);b=b+-1|0;while(1){if((d|0)>=(b|0))continue a;g=d+1|0;c[a+(d<<2)>>2]=c[a+(g<<2)>>2];d=g}}if((b|0)==8){a=c[13857]|0;c[h>>2]=125519;c[h+4>>2]=324;c[h+8>>2]=125664;OL(a,125500,h)|0}else if((b|0)==9)PI(c[a>>2]|0,c[a+4>>2]|0,c[a+8>>2]|0);l=i;return}function HI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;h=c[42579]|0;i=h+(a*52|0)|0;j=h+(b*52|0)|0;e=0;while(1){if((e|0)==3)break;k=h+(a*52|0)+4+(e<<4)|0;l=h+(a*52|0)+4+(e<<4)+4|0;m=h+(a*52|0)+4+(e<<4)+12|0;d=0;while(1){if((d|0)==3)break;n=c[c[k>>2]>>2]|0;f=c[c[h+(b*52|0)+4+(d<<4)>>2]>>2]|0;g=c[c[h+(b*52|0)+4+(d<<4)+4>>2]>>2]|0;if((n|0)==(f|0)?(c[c[l>>2]>>2]|0)==(g|0):0)o=9;else o=7;if(((o|0)==7?(o=0,(n|0)==(g|0)):0)?(c[c[l>>2]>>2]|0)==(f|0):0)o=9;if((o|0)==9){c[m>>2]=j;c[h+(b*52|0)+4+(d<<4)+12>>2]=i}d=d+1|0}e=e+1|0}return}function II(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=c[42579]|0;d=0;e=0;while(1){if((e|0)==3)break;d=((FI(c[c[f+(a*52|0)+4+(e<<4)>>2]>>2]|0,c[c[f+(a*52|0)+4+(e<<4)+4>>2]>>2]|0,b)|0)!=2&1)+d|0;e=e+1|0}return ((d|0)==3|(d|0)==0)&1|0}function JI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[42579]|0;e=d+(a*52|0)|0;a:do if(!(c[e>>2]|0)){c[e>>2]=1;if((a|0)==(b|0))d=1;else{f=0;while(1){if((f|0)>=3)break;e=c[d+(a*52|0)+4+(f<<4)+12>>2]|0;if(e){if(JI((e-d|0)/52|0,b)|0){d=1;break a}d=c[42579]|0}f=f+1|0}c[d+(a*52|0)>>2]=0;d=0}}else d=0;while(0);return d|0}function KI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g;if((c[42580]|0)<(a|0)){b=c[42578]|0;d=a<<4;if(!b){f=wN(d)|0;c[42578]=f;if(!f){f=c[13857]|0;c[e>>2]=125519;c[e+4>>2]=593;c[e+8>>2]=125627;OL(f,125500,e)|0;xa(170120,1)}}else{e=zN(b,d)|0;c[42578]=e;if(!e){e=c[13857]|0;c[f>>2]=125519;c[f+4>>2]=599;c[f+8>>2]=125645;OL(e,125500,f)|0;xa(170120,1)}}c[42580]=a}l=g;return}function LI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=c[42574]|0;e=c[42573]|0;f=(d|0)>=(e|0);g=b+4|0;if((a|0)==1){if(f)c[g>>2]=c[(c[42571]|0)+(e<<2)>>2];a=e+-1|0;d=170292}else{if(f)c[g>>2]=c[(c[42571]|0)+(d<<2)>>2];a=d+1|0;d=170296}c[d>>2]=a;c[(c[42571]|0)+(a<<2)>>2]=b;return}function MI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=c[42575]|0;g=c[42571]|0;b=c[42573]|0;while(1){if((b|0)>=(f|0)){e=4;break}d=b+1|0;if((FI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==1)break;else b=d}a:do if((e|0)==4){b=c[42574]|0;while(1){if((b|0)<=(f|0)){b=f;break a}d=b+-1|0;if((FI(c[c[g+(d<<2)>>2]>>2]|0,c[c[g+(b<<2)>>2]>>2]|0,c[a>>2]|0)|0)==2)break;else b=d}}while(0);return b|0}function NI(a,b){a=a|0;b=b|0;c[((a|0)==1?170296:170292)>>2]=b;return}function OI(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;f=c[c[d+(((a+-1+e|0)%(e|0)|0)<<2)>>2]>>2]|0;i=c[c[d+(a<<2)>>2]>>2]|0;g=c[c[d+(((a+1|0)%(e|0)|0)<<2)>>2]>>2]|0;k=(FI(f,i,g)|0)==1;j=c[c[d+(b<<2)>>2]>>2]|0;if(k)if((FI(i,j,f)|0)==1){f=FI(j,i,g)|0;g=1;h=5}else f=0;else{f=FI(i,j,g)|0;g=2;h=5}a:do if((h|0)==5)if((f|0)==(g|0)){f=0;while(1){if((f|0)>=(e|0)){f=1;break a}g=f;f=f+1|0;h=(f|0)%(e|0)|0;if((h|0)==(b|0)|((g|0)==(b|0)|((g|0)==(a|0)|(h|0)==(a|0))))continue;if(RI(i,j,c[c[d+(g<<2)>>2]>>2]|0,c[c[d+(h<<2)>>2]>>2]|0)|0){f=0;break}}}else f=0;while(0);return f|0}function PI(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=c[42570]|0;f=c[42581]|0;if((e|0)<(f|0))h=e;else{QI(f+20|0);h=c[42570]|0}g=c[42579]|0;c[42570]=h+1;f=g+(h*52|0)|0;c[f>>2]=0;c[g+(h*52|0)+4>>2]=a;c[g+(h*52|0)+8>>2]=b;c[g+(h*52|0)+16>>2]=0;c[g+(h*52|0)+20>>2]=b;c[g+(h*52|0)+24>>2]=d;c[g+(h*52|0)+32>>2]=0;c[g+(h*52|0)+36>>2]=d;c[g+(h*52|0)+40>>2]=a;c[g+(h*52|0)+48>>2]=0;e=0;while(1){if((e|0)==3)break;c[g+(h*52|0)+4+(e<<4)+8>>2]=f;e=e+1|0}return}function QI(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g;if((c[42581]|0)<(a|0)){b=c[42579]|0;d=a*52|0;if(!b){f=wN(d)|0;c[42579]=f;if(!f){f=c[13857]|0;c[e>>2]=125519;c[e+4>>2]=552;c[e+8>>2]=125685;OL(f,125500,e)|0;xa(170120,1)}}else{e=zN(b,d)|0;c[42579]=e;if(!e){e=c[13857]|0;c[f>>2]=125519;c[f+4>>2]=558;c[f+8>>2]=125704;OL(e,125500,f)|0;xa(170120,1)}}c[42581]=a}l=g;return}function RI(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=FI(a,b,c)|0;if((((f|0)!=3?(g=FI(a,b,d)|0,(g|0)!=3):0)?(h=FI(c,d,a)|0,(h|0)!=3):0)?(e=FI(c,d,b)|0,(e|0)!=3):0)a=((f|0)==1^(g|0)==1)&((h|0)==1^(e|0)==1)&1;else if(((SI(a,b,c)|0)==0?(SI(a,b,d)|0)==0:0)?(SI(c,d,a)|0)==0:0)return (SI(c,d,b)|0)!=0|0;else a=1;return a|0}function SI(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;e=+h[a>>3];g=+h[b>>3]-e;f=+h[a+8>>3];d=+h[b+8>>3]-f;e=+h[c>>3]-e;f=+h[c+8>>3]-f;if((FI(a,b,c)|0)==3)a=(g*e+d*f>=0.0?e*e+f*f<=g*g+d*d:0)&1;else a=0;return a|0}function TI(a,b){a=a|0;b=b|0;var c=0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0;d=+h[a+24>>3];a:do if(d<1.0e-07&d>-1.0e-07)a=UI(a,b)|0;else{i=+h[a+16>>3]/(d*3.0);e=+h[a+8>>3]/d;g=i*i;d=+h[a>>3]/d+(i*2.0*g-e*i);g=e/3.0-g;e=d*d;g=e+g*(g*(g*4.0));a=b+16|0;f=-d;c=b+8|0;if(!(g<0.0)){d=(+G(+g)-d)*.5;e=+iL(d);d=e+ +iL(f-d);h[b>>3]=d;d=d*-.5;if(g>0.0)a=1;else{h[a>>3]=d;h[c>>3]=d;a=3}}else{f=+O(+(+G(+-g)),+f);g=+iL(+G(+(e-g))*.5)*2.0;h[b>>3]=g*+I(+(f/3.0));h[c>>3]=g*+I(+((f+3.141592653589793+3.141592653589793)/3.0));h[a>>3]=g*+I(+((f+-3.141592653589793+-3.141592653589793)/3.0));a=3}c=0;while(1){if((c|0)>=(a|0))break a;j=b+(c<<3)|0;h[j>>3]=+h[j>>3]-i;c=c+1|0}}while(0);return a|0}function UI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;c=+h[a+16>>3];do if(!(c<1.0e-07&c>-1.0e-07)){d=+h[a+8>>3]/(c*2.0);c=d*d-+h[a>>3]/c;if(!(c<0.0))if(c==0.0){h[b>>3]=-d;a=1;break}else{c=+G(+c)-d;h[b>>3]=c;h[b+8>>3]=d*-2.0-c;a=2;break}else a=0}else a=VI(a,b)|0;while(0);return a|0}function VI(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a+8>>3];c=+h[a>>3];if(d<1.0e-07&d>-1.0e-07)a=c<1.0e-07&c>-1.0e-07?4:0;else{h[b>>3]=-c/d;a=1}return a|0}function WI(a){a=a|0;xN(c[a>>2]|0);xN(a);return}function XI(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[a+4>>2]|0;l=(f*3|0)+-2|0;e=c[42584]|0;if((l|0)>(c[42583]|0)){d=l<<4;if(!e)d=wN(d)|0;else d=zN(e,d)|0;c[42584]=d;c[42583]=l;k=d;j=d}else{k=e;j=e}i=c[a>>2]|0;c[j>>2]=c[i>>2];c[j+4>>2]=c[i+4>>2];c[j+8>>2]=c[i+8>>2];c[j+12>>2]=c[i+12>>2];TN(k+16|0,i|0,16)|0;a=f+-1|0;d=1;e=2;while(1){f=k+(e<<4)|0;g=k+(e+1<<4)|0;h=i+(d<<4)|0;if((d|0)>=(a|0))break;m=k+(e+2<<4)|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];TN(g|0,h|0,16)|0;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];d=d+1|0;e=e+3|0}c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[f+8>>2]=c[h+8>>2];c[f+12>>2]=c[h+12>>2];TN(g|0,h|0,16)|0;c[b+4>>2]=l;c[b>>2]=j;return}function YI(){return 170340}function ZI(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=b;c[d>>2]=eJ(c[a+60>>2]|0)|0;a=aJ(ta(6,d|0)|0)|0;l=b;return a|0}function _I(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+48|0;k=n+16|0;g=n;f=n+32|0;i=a+28|0;e=c[i>>2]|0;c[f>>2]=e;j=a+20|0;e=(c[j>>2]|0)-e|0;c[f+4>>2]=e;c[f+8>>2]=b;c[f+12>>2]=d;e=e+d|0;h=a+60|0;c[g>>2]=c[h>>2];c[g+4>>2]=f;c[g+8>>2]=2;g=aJ(Xa(146,g|0)|0)|0;a:do if((e|0)!=(g|0)){b=2;while(1){if((g|0)<0)break;e=e-g|0;p=c[f+4>>2]|0;o=g>>>0>p>>>0;f=o?f+8|0:f;b=(o<<31>>31)+b|0;p=g-(o?p:0)|0;c[f>>2]=(c[f>>2]|0)+p;o=f+4|0;c[o>>2]=(c[o>>2]|0)-p;c[k>>2]=c[h>>2];c[k+4>>2]=f;c[k+8>>2]=b;g=aJ(Xa(146,k|0)|0)|0;if((e|0)==(g|0)){m=3;break a}}c[a+16>>2]=0;c[i>>2]=0;c[j>>2]=0;c[a>>2]=c[a>>2]|32;if((b|0)==2)d=0;else d=d-(c[f+4>>2]|0)|0}else m=3;while(0);if((m|0)==3){p=c[a+44>>2]|0;c[a+16>>2]=p+(c[a+48>>2]|0);c[i>>2]=p;c[j>>2]=p}l=n;return d|0}function $I(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=l;l=l+32|0;g=f;e=f+20|0;c[g>>2]=c[a+60>>2];c[g+4>>2]=0;c[g+8>>2]=b;c[g+12>>2]=e;c[g+16>>2]=d;if((aJ(Ta(140,g|0)|0)|0)<0){c[e>>2]=-1;a=-1}else a=c[e>>2]|0;l=f;return a|0}function aJ(a){a=a|0;if(a>>>0>4294963200){c[(bJ()|0)>>2]=0-a;a=-1}return a|0}function bJ(){return (cJ()|0)+64|0}function cJ(){return dJ()|0}function dJ(){return 55556}function eJ(a){a=a|0;return a|0}function fJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+32|0;f=k;i=k+16|0;c[i>>2]=d;g=i+4|0;j=b+48|0;m=c[j>>2]|0;c[g>>2]=e-((m|0)!=0&1);h=b+44|0;c[i+8>>2]=c[h>>2];c[i+12>>2]=m;c[f>>2]=c[b+60>>2];c[f+4>>2]=i;c[f+8>>2]=2;f=aJ(Wa(145,f|0)|0)|0;if((f|0)>=1){i=c[g>>2]|0;if(f>>>0>i>>>0){g=c[h>>2]|0;h=b+4|0;c[h>>2]=g;c[b+8>>2]=g+(f-i);if(!(c[j>>2]|0))f=e;else{c[h>>2]=g+1;a[d+(e+-1)>>0]=a[g>>0]|0;f=e}}}else c[b>>2]=c[b>>2]|f&48^16;l=k;return f|0}function gJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;c[b+36>>2]=6;if((c[b>>2]&64|0)==0?(c[f>>2]=c[b+60>>2],c[f+4>>2]=21523,c[f+8>>2]=g+16,La(54,f|0)|0):0)a[b+75>>0]=-1;f=_I(b,d,e)|0;l=g;return f|0}function hJ(a){a=a|0;var b=0;b=(iJ(a)|0)==0;return (b?a:a|32)|0}function iJ(a){a=a|0;return (a+-65|0)>>>0<26|0}function jJ(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+128|0;h=j;c[h>>2]=0;i=h+4|0;c[i>>2]=a;c[h+44>>2]=a;g=h+8|0;c[g>>2]=(a|0)<0?-1:a+2147483647|0;c[h+76>>2]=-1;kJ(h,0);d=lJ(h,d,1,e,f)|0;if(b|0)c[b>>2]=a+((c[i>>2]|0)+(c[h+108>>2]|0)-(c[g>>2]|0));l=j;return d|0}function kJ(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;c[a+104>>2]=b;d=c[a+8>>2]|0;e=c[a+4>>2]|0;f=d-e|0;c[a+108>>2]=f;c[a+100>>2]=(b|0)!=0&(f|0)>(b|0)?e+b|0:d;return}function lJ(b,e,f,g,h){b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;a:do if(e>>>0>36){c[(bJ()|0)>>2]=22;h=0;g=0}else{r=b+4|0;q=b+100|0;do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0}while((nJ(i)|0)!=0);b:do switch(i|0){case 43:case 45:{i=((i|0)==45)<<31>>31;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;p=i;i=d[j>>0]|0;break b}else{p=i;i=mJ(b)|0;break b}}default:p=0}while(0);j=(e|0)==0;do if((e|16|0)==16&(i|0)==48){i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0;if((i|32|0)!=120)if(j){e=8;n=46;break}else{n=32;break}i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0;if((d[125850+i>>0]|0)>15){g=(c[q>>2]|0)!=0;if(g)c[r>>2]=(c[r>>2]|0)+-1;if(!f){kJ(b,0);h=0;g=0;break a}if(!g){h=0;g=0;break a}c[r>>2]=(c[r>>2]|0)+-1;h=0;g=0;break a}else{e=16;n=46}}else{e=j?10:e;if((d[125850+i>>0]|0)>>>0<e>>>0)n=32;else{if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;kJ(b,0);c[(bJ()|0)>>2]=22;h=0;g=0;break a}}while(0);c:do if((n|0)==32)if((e|0)==10){e=i+-48|0;if(e>>>0<10){i=0;j=e;do{i=(i*10|0)+j|0;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;e=d[e>>0]|0}else e=mJ(b)|0;j=e+-48|0}while(j>>>0<10&i>>>0<429496729);f=0}else{e=i;i=0;f=0}k=e+-48|0;if(k>>>0<10){j=e;do{e=RN(i|0,f|0,10,0)|0;l=D;m=((k|0)<0)<<31>>31;o=~m;if(l>>>0>o>>>0|(l|0)==(o|0)&e>>>0>~k>>>0){e=10;n=72;break c}i=IN(e|0,l|0,k|0,m|0)|0;f=D;e=c[r>>2]|0;if(e>>>0<(c[q>>2]|0)>>>0){c[r>>2]=e+1;j=d[e>>0]|0}else j=mJ(b)|0;k=j+-48|0}while(k>>>0<10&(f>>>0<429496729|(f|0)==429496729&i>>>0<2576980378));if(k>>>0>9){j=p;e=f}else{e=10;n=72}}else{j=p;e=f}}else n=46;while(0);d:do if((n|0)==46){if(!(e+-1&e)){n=a[126106+((e*23|0)>>>5&7)>>0]|0;f=a[125850+i>>0]|0;j=f&255;if(j>>>0<e>>>0){i=0;k=j;do{i=k|i<<n;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;f=a[125850+j>>0]|0;k=f&255}while(i>>>0<134217728&k>>>0<e>>>0);k=0}else{j=i;k=0;i=0}l=KN(-1,-1,n|0)|0;m=D;if((f&255)>>>0>=e>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break}else j=k;while(1){i=HN(i|0,j|0,n|0)|0;k=D;i=f&255|i;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;f=a[125850+j>>0]|0;if((f&255)>>>0>=e>>>0|(k>>>0>m>>>0|(k|0)==(m|0)&i>>>0>l>>>0)){f=k;n=72;break d}else j=k}}f=a[125850+i>>0]|0;j=f&255;if(j>>>0<e>>>0){i=0;k=j;do{i=k+(S(i,e)|0)|0;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;f=a[125850+j>>0]|0;k=f&255}while(i>>>0<119304647&k>>>0<e>>>0);k=0}else{j=i;i=0;k=0}if((f&255)>>>0<e>>>0){n=PN(-1,-1,e|0,0)|0;o=D;m=k;while(1){if(m>>>0>o>>>0|(m|0)==(o|0)&i>>>0>n>>>0){f=m;n=72;break d}k=RN(i|0,m|0,e|0,0)|0;l=D;f=f&255;if(l>>>0>4294967295|(l|0)==-1&k>>>0>~f>>>0){f=m;n=72;break d}i=IN(f|0,0,k|0,l|0)|0;k=D;j=c[r>>2]|0;if(j>>>0<(c[q>>2]|0)>>>0){c[r>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;f=a[125850+j>>0]|0;if((f&255)>>>0>=e>>>0){f=k;n=72;break}else m=k}}else{f=k;n=72}}while(0);if((n|0)==72)if((d[125850+j>>0]|0)>>>0<e>>>0){do{i=c[r>>2]|0;if(i>>>0<(c[q>>2]|0)>>>0){c[r>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0}while((d[125850+i>>0]|0)>>>0<e>>>0);c[(bJ()|0)>>2]=34;j=(g&1|0)==0&0==0?p:0;e=h;i=g}else{j=p;e=f}if(c[q>>2]|0)c[r>>2]=(c[r>>2]|0)+-1;if(!(e>>>0<h>>>0|(e|0)==(h|0)&i>>>0<g>>>0)){if(!((g&1|0)!=0|0!=0|(j|0)!=0)){c[(bJ()|0)>>2]=34;g=IN(g|0,h|0,-1,-1)|0;h=D;break}if(e>>>0>h>>>0|(e|0)==(h|0)&i>>>0>g>>>0){c[(bJ()|0)>>2]=34;break}}g=((j|0)<0)<<31>>31;g=FN(i^j|0,e^g|0,j|0,g|0)|0;h=D}while(0);D=h;return g|0}function mJ(b){b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=b+104|0;j=c[f>>2]|0;if((j|0)!=0?(c[b+108>>2]|0)>=(j|0):0)k=4;else{e=oJ(b)|0;if((e|0)>=0){g=c[f>>2]|0;f=b+8|0;if(g){i=c[f>>2]|0;f=c[b+4>>2]|0;h=b+108|0;g=g-(c[h>>2]|0)|0;j=i;if((i-f|0)<(g|0)){i=j;g=j}else{i=f+(g+-1)|0;g=j}}else{g=c[f>>2]|0;h=b+108|0;i=g;f=c[b+4>>2]|0}c[b+100>>2]=i;if(g|0)c[h>>2]=g+1-f+(c[h>>2]|0);f=f+-1|0;if((d[f>>0]|0|0)!=(e|0))a[f>>0]=e}else k=4}if((k|0)==4){c[b+100>>2]=0;e=-1}return e|0}function nJ(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function oJ(a){a=a|0;var b=0,e=0;e=l;l=l+16|0;b=e;if((pJ(a)|0)==0?(Za[c[a+32>>2]&31](a,b,1)|0)==1:0)a=d[b>>0]|0;else a=-1;l=e;return a|0}function pJ(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=b+20|0;e=b+28|0;if((c[d>>2]|0)>>>0>(c[e>>2]|0)>>>0)Za[c[b+36>>2]&31](b,0,0)|0;c[b+16>>2]=0;c[e>>2]=0;c[d>>2]=0;d=c[b>>2]|0;if(!(d&4)){e=(c[b+44>>2]|0)+(c[b+48>>2]|0)|0;c[b+8>>2]=e;c[b+4>>2]=e;d=d<<27>>31}else{c[b>>2]=d|32;d=-1}return d|0}function qJ(a,b,c){a=a|0;b=b|0;c=c|0;c=jJ(a,b,c,-1,0)|0;return c|0}function rJ(a,b,c){a=a|0;b=b|0;c=c|0;c=jJ(a,b,c,-2147483648,0)|0;return c|0}function sJ(a,b){a=+a;b=+b;var d=0.0,e=0,f=0,g=0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;q=l;l=l+32|0;m=q+24|0;n=q+16|0;o=q+8|0;p=q;h[j>>3]=a;t=c[j>>2]|0;g=c[j+4>>2]|0;h[j>>3]=b;e=c[j>>2]|0;g=g&2147483647;f=c[j+4>>2]&2147483647;i=g>>>0<f>>>0|(g|0)==(f|0)&t>>>0<e>>>0;s=i?e:t;r=i?f:g;e=i?t:e;f=i?g:f;g=KN(s|0,r|0,52)|0;i=KN(e|0,f|0,52)|0;c[j>>2]=s;c[j+4>>2]=r;a=+h[j>>3];c[j>>2]=e;c[j+4>>2]=f;k=+h[j>>3];do if((i|0)!=2047){if(!((e|0)==0&(f|0)==0|(g|0)==2047)){if((g-i|0)>64){a=a+k;break}if(g>>>0>1533){d=5260135901548373507240989.0e186;b=a*1.90109156629516e-211;a=k*1.90109156629516e-211}else{t=i>>>0<573;d=t?1.90109156629516e-211:1.0;b=t?a*5260135901548373507240989.0e186:a;a=t?k*5260135901548373507240989.0e186:k}tJ(m,n,b);tJ(o,p,a);a=d*+G(+(+h[p>>3]+ +h[n>>3]+ +h[o>>3]+ +h[m>>3]))}}else a=k;while(0);l=q;return +a}function tJ(a,b,c){a=a|0;b=b|0;c=+c;var d=0.0,e=0.0;e=c*134217729.0;e=e+(c-e);d=c-e;c=c*c;h[a>>3]=c;h[b>>3]=d*d+(e*e-c+e*2.0*d);return}function uJ(a,b){a=+a;b=+b;var d=0,e=0;h[j>>3]=a;e=c[j>>2]|0;d=c[j+4>>2]|0;h[j>>3]=b;d=c[j+4>>2]&-2147483648|d&2147483647;c[j>>2]=e;c[j+4>>2]=d;return +(+h[j>>3])}function vJ(b,c){b=b|0;c=c|0;var d=0,e=0;d=a[b>>0]|0;e=a[c>>0]|0;if(d<<24>>24==0?1:d<<24>>24!=e<<24>>24)b=e;else{do{b=b+1|0;c=c+1|0;d=a[b>>0]|0;e=a[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));b=e}return (d&255)-(b&255)|0}function wJ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)b=0;else{while(1){e=a[b>>0]|0;f=a[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){b=0;break a}else{b=b+1|0;c=c+1|0}}b=(e&255)-(f&255)|0}while(0);return b|0}function xJ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;if(!d)e=0;else{h=a[b>>0]|0;e=h&255;g=a[c>>0]|0;f=g&255;a:do if(h<<24>>24)do{d=d+-1|0;if(!(h<<24>>24==g<<24>>24&((d|0)!=0&g<<24>>24!=0)))break a;b=b+1|0;c=c+1|0;h=a[b>>0]|0;e=h&255;g=a[c>>0]|0;f=g&255}while(h<<24>>24!=0);while(0);e=e-f|0}return e|0}function yJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=zJ(a,b,f)|0;l=e;return d|0}function zJ(a,b,c){a=a|0;b=b|0;c=c|0;return AJ(a,2147483647,b,c)|0}function AJ(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+128|0;g=n+124|0;m=n;h=m;i=56060;j=h+124|0;do{c[h>>2]=c[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((d+-1|0)>>>0>2147483646)if(!d){b=g;d=1;k=4}else{c[(bJ()|0)>>2]=75;d=-1}else k=4;if((k|0)==4){k=-2-b|0;k=d>>>0>k>>>0?k:d;c[m+48>>2]=k;g=m+20|0;c[g>>2]=b;c[m+44>>2]=b;d=b+k|0;b=m+16|0;c[b>>2]=d;c[m+28>>2]=d;d=BJ(m,e,f)|0;if(k){m=c[g>>2]|0;a[m+(((m|0)==(c[b>>2]|0))<<31>>31)>>0]=0}}l=n;return d|0}function BJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+224|0;n=s+120|0;o=s+80|0;q=s;r=s+136|0;f=o;g=f+40|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));c[n>>2]=c[e>>2];if((CJ(0,d,n,q,o)|0)<0)e=-1;else{if((c[b+76>>2]|0)>-1)p=DJ(b)|0;else p=0;e=c[b>>2]|0;m=e&32;if((a[b+74>>0]|0)<1)c[b>>2]=e&-33;f=b+48|0;if(!(c[f>>2]|0)){g=b+44|0;h=c[g>>2]|0;c[g>>2]=r;i=b+28|0;c[i>>2]=r;j=b+20|0;c[j>>2]=r;c[f>>2]=80;k=b+16|0;c[k>>2]=r+80;e=CJ(b,d,n,q,o)|0;if(h){Za[c[b+36>>2]&31](b,0,0)|0;e=(c[j>>2]|0)==0?-1:e;c[g>>2]=h;c[f>>2]=0;c[k>>2]=0;c[i>>2]=0;c[j>>2]=0}}else e=CJ(b,d,n,q,o)|0;f=c[b>>2]|0;c[b>>2]=f|m;if(p|0)EJ(b);e=(f&32|0)==0?e:-1}l=s;return e|0}function CJ(d,e,f,g,i){d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0;H=l;l=l+64|0;C=H+16|0;E=H;A=H+24|0;F=H+8|0;G=H+20|0;c[C>>2]=e;x=(d|0)!=0;y=A+40|0;z=y;A=A+39|0;B=F+4|0;k=0;j=0;p=0;a:while(1){do if((j|0)>-1)if((k|0)>(2147483647-j|0)){c[(bJ()|0)>>2]=75;j=-1;break}else{j=k+j|0;break}while(0);k=a[e>>0]|0;if(!(k<<24>>24)){w=87;break}else m=e;b:while(1){switch(k<<24>>24){case 37:{k=m;w=9;break b}case 0:{k=m;break b}default:{}}v=m+1|0;c[C>>2]=v;k=a[v>>0]|0;m=v}c:do if((w|0)==9)while(1){w=0;if((a[m+1>>0]|0)!=37)break c;k=k+1|0;m=m+2|0;c[C>>2]=m;if((a[m>>0]|0)==37)w=9;else break}while(0);k=k-e|0;if(x)FJ(d,e,k);if(k|0){e=m;continue}n=m+1|0;k=(a[n>>0]|0)+-48|0;if(k>>>0<10){v=(a[m+2>>0]|0)==36;u=v?k:-1;p=v?1:p;n=v?m+3|0:n}else u=-1;c[C>>2]=n;k=a[n>>0]|0;m=(k<<24>>24)+-32|0;d:do if(m>>>0<32){o=0;q=k;while(1){k=1<<m;if(!(k&75913)){k=q;break d}o=k|o;n=n+1|0;c[C>>2]=n;k=a[n>>0]|0;m=(k<<24>>24)+-32|0;if(m>>>0>=32)break;else q=k}}else o=0;while(0);if(k<<24>>24==42){m=n+1|0;k=(a[m>>0]|0)+-48|0;if(k>>>0<10?(a[n+2>>0]|0)==36:0){c[i+(k<<2)>>2]=10;k=c[g+((a[m>>0]|0)+-48<<3)>>2]|0;p=1;n=n+3|0}else{if(p|0){j=-1;break}if(x){p=(c[f>>2]|0)+(4-1)&~(4-1);k=c[p>>2]|0;c[f>>2]=p+4;p=0;n=m}else{k=0;p=0;n=m}}c[C>>2]=n;v=(k|0)<0;k=v?0-k|0:k;o=v?o|8192:o}else{k=GJ(C)|0;if((k|0)<0){j=-1;break}n=c[C>>2]|0}do if((a[n>>0]|0)==46){if((a[n+1>>0]|0)!=42){c[C>>2]=n+1;m=GJ(C)|0;n=c[C>>2]|0;break}q=n+2|0;m=(a[q>>0]|0)+-48|0;if(m>>>0<10?(a[n+3>>0]|0)==36:0){c[i+(m<<2)>>2]=10;m=c[g+((a[q>>0]|0)+-48<<3)>>2]|0;n=n+4|0;c[C>>2]=n;break}if(p|0){j=-1;break a}if(x){v=(c[f>>2]|0)+(4-1)&~(4-1);m=c[v>>2]|0;c[f>>2]=v+4}else m=0;c[C>>2]=q;n=q}else m=-1;while(0);t=0;while(1){if(((a[n>>0]|0)+-65|0)>>>0>57){j=-1;break a}v=n+1|0;c[C>>2]=v;q=a[(a[n>>0]|0)+-65+(126115+(t*58|0))>>0]|0;r=q&255;if((r+-1|0)>>>0<8){t=r;n=v}else break}if(!(q<<24>>24)){j=-1;break}s=(u|0)>-1;do if(q<<24>>24==19)if(s){j=-1;break a}else w=49;else{if(s){c[i+(u<<2)>>2]=r;s=g+(u<<3)|0;u=c[s+4>>2]|0;w=E;c[w>>2]=c[s>>2];c[w+4>>2]=u;w=49;break}if(!x){j=0;break a}HJ(E,r,f)}while(0);if((w|0)==49?(w=0,!x):0){k=0;e=v;continue}n=a[n>>0]|0;n=(t|0)!=0&(n&15|0)==3?n&-33:n;s=o&-65537;u=(o&8192|0)==0?o:s;e:do switch(n|0){case 110:switch((t&255)<<24>>24){case 0:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 1:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 2:{k=c[E>>2]|0;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;k=0;e=v;continue a}case 3:{b[c[E>>2]>>1]=j;k=0;e=v;continue a}case 4:{a[c[E>>2]>>0]=j;k=0;e=v;continue a}case 6:{c[c[E>>2]>>2]=j;k=0;e=v;continue a}case 7:{k=c[E>>2]|0;c[k>>2]=j;c[k+4>>2]=((j|0)<0)<<31>>31;k=0;e=v;continue a}default:{k=0;e=v;continue a}}case 112:{n=120;m=m>>>0>8?m:8;e=u|8;w=61;break}case 88:case 120:{e=u;w=61;break}case 111:{n=E;e=c[n>>2]|0;n=c[n+4>>2]|0;r=JJ(e,n,y)|0;s=z-r|0;o=0;q=126579;m=(u&8|0)==0|(m|0)>(s|0)?m:s+1|0;s=u;w=67;break}case 105:case 100:{n=E;e=c[n>>2]|0;n=c[n+4>>2]|0;if((n|0)<0){e=FN(0,0,e|0,n|0)|0;n=D;o=E;c[o>>2]=e;c[o+4>>2]=n;o=1;q=126579;w=66;break e}else{o=(u&2049|0)!=0&1;q=(u&2048|0)==0?((u&1|0)==0?126579:126581):126580;w=66;break e}}case 117:{n=E;o=0;q=126579;e=c[n>>2]|0;n=c[n+4>>2]|0;w=66;break}case 99:{a[A>>0]=c[E>>2];e=A;o=0;q=126579;r=y;n=1;m=s;break}case 109:{n=LJ(c[(bJ()|0)>>2]|0)|0;w=71;break}case 115:{n=c[E>>2]|0;n=n|0?n:126589;w=71;break}case 67:{c[F>>2]=c[E>>2];c[B>>2]=0;c[E>>2]=F;r=-1;n=F;w=75;break}case 83:{e=c[E>>2]|0;if(!m){NJ(d,32,k,0,u);e=0;w=84}else{r=m;n=e;w=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{k=PJ(d,+h[E>>3],k,m,u,n)|0;e=v;continue a}default:{o=0;q=126579;r=y;n=m;m=u}}while(0);f:do if((w|0)==61){u=E;t=c[u>>2]|0;u=c[u+4>>2]|0;r=IJ(t,u,y,n&32)|0;q=(e&8|0)==0|(t|0)==0&(u|0)==0;o=q?0:2;q=q?126579:126579+(n>>4)|0;s=e;e=t;n=u;w=67}else if((w|0)==66){r=KJ(e,n,y)|0;s=u;w=67}else if((w|0)==71){w=0;u=MJ(n,0,m)|0;t=(u|0)==0;e=n;o=0;q=126579;r=t?n+m|0:u;n=t?m:u-n|0;m=s}else if((w|0)==75){w=0;q=n;e=0;m=0;while(1){o=c[q>>2]|0;if(!o)break;m=OJ(G,o)|0;if((m|0)<0|m>>>0>(r-e|0)>>>0)break;e=m+e|0;if(r>>>0>e>>>0)q=q+4|0;else break}if((m|0)<0){j=-1;break a}NJ(d,32,k,e,u);if(!e){e=0;w=84}else{o=0;while(1){m=c[n>>2]|0;if(!m){w=84;break f}m=OJ(G,m)|0;o=m+o|0;if((o|0)>(e|0)){w=84;break f}FJ(d,G,m);if(o>>>0>=e>>>0){w=84;break}else n=n+4|0}}}while(0);if((w|0)==67){w=0;n=(e|0)!=0|(n|0)!=0;u=(m|0)!=0|n;n=((n^1)&1)+(z-r)|0;e=u?r:y;r=y;n=u?((m|0)>(n|0)?m:n):m;m=(m|0)>-1?s&-65537:s}else if((w|0)==84){w=0;NJ(d,32,k,e,u^8192);k=(k|0)>(e|0)?k:e;e=v;continue}t=r-e|0;s=(n|0)<(t|0)?t:n;u=s+o|0;k=(k|0)<(u|0)?u:k;NJ(d,32,k,u,m);FJ(d,q,o);NJ(d,48,k,u,m^65536);NJ(d,48,s,t,0);FJ(d,e,t);NJ(d,32,k,u,m^8192);e=v}g:do if((w|0)==87)if(!d)if(!p)j=0;else{j=1;while(1){e=c[i+(j<<2)>>2]|0;if(!e)break;HJ(g+(j<<3)|0,e,f);j=j+1|0;if((j|0)>=10){j=1;break g}}while(1){if(c[i+(j<<2)>>2]|0){j=-1;break g}j=j+1|0;if((j|0)>=10){j=1;break}}}while(0);l=H;return j|0}function DJ(a){a=a|0;return 0}function EJ(a){a=a|0;return}function FJ(a,b,d){a=a|0;b=b|0;d=d|0;if(!(c[a>>2]&32))$J(b,d,a)|0;return}function GJ(b){b=b|0;var d=0,e=0,f=0;e=c[b>>2]|0;f=(a[e>>0]|0)+-48|0;if(f>>>0<10){d=0;do{d=f+(d*10|0)|0;e=e+1|0;c[b>>2]=e;f=(a[e>>0]|0)+-48|0}while(f>>>0<10)}else d=0;return d|0}function HJ(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;c[a>>2]=b;break a}case 10:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{e=(c[d>>2]|0)+(4-1)&~(4-1);b=c[e>>2]|0;c[d>>2]=e+4;e=a;c[e>>2]=b;c[e+4>>2]=0;break a}case 12:{e=(c[d>>2]|0)+(8-1)&~(8-1);b=e;f=c[b>>2]|0;b=c[b+4>>2]|0;c[d>>2]=e+8;e=a;c[e>>2]=f;c[e+4>>2]=b;break a}case 13:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&65535)<<16>>16;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 14:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&65535;c[f+4>>2]=0;break a}case 15:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;e=(e&255)<<24>>24;f=a;c[f>>2]=e;c[f+4>>2]=((e|0)<0)<<31>>31;break a}case 16:{f=(c[d>>2]|0)+(4-1)&~(4-1);e=c[f>>2]|0;c[d>>2]=f+4;f=a;c[f>>2]=e&255;c[f+4>>2]=0;break a}case 17:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}case 18:{f=(c[d>>2]|0)+(8-1)&~(8-1);g=+h[f>>3];c[d>>2]=f+8;h[a>>3]=g;break a}default:break a}while(0);while(0);return}function IJ(b,c,e,f){b=b|0;c=c|0;e=e|0;f=f|0;if(!((b|0)==0&(c|0)==0))do{e=e+-1|0;a[e>>0]=d[126627+(b&15)>>0]|0|f;b=KN(b|0,c|0,4)|0;c=D}while(!((b|0)==0&(c|0)==0));return e|0}function JJ(b,c,d){b=b|0;c=c|0;d=d|0;if(!((b|0)==0&(c|0)==0))do{d=d+-1|0;a[d>>0]=b&7|48;b=KN(b|0,c|0,3)|0;c=D}while(!((b|0)==0&(c|0)==0));return d|0}function KJ(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&b>>>0>4294967295){while(1){e=UN(b|0,c|0,10,0)|0;d=d+-1|0;a[d>>0]=e&255|48;e=b;b=PN(b|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=D}c=b}else c=b;if(c)while(1){d=d+-1|0;a[d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}return d|0}function LJ(a){a=a|0;return WJ(a,c[(VJ()|0)+188>>2]|0)|0}function MJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=d&255;f=(e|0)!=0;a:do if(f&(b&3|0)!=0){g=d&255;while(1){if((a[b>>0]|0)==g<<24>>24){i=6;break a}b=b+1|0;e=e+-1|0;f=(e|0)!=0;if(!(f&(b&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(f)i=6;else e=0;b:do if((i|0)==6){g=d&255;if((a[b>>0]|0)!=g<<24>>24){f=S(h,16843009)|0;c:do if(e>>>0>3)while(1){h=c[b>>2]^f;if((h&-2139062144^-2139062144)&h+-16843009|0)break;b=b+4|0;e=e+-4|0;if(e>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!e){e=0;break}while(1){if((a[b>>0]|0)==g<<24>>24)break b;b=b+1|0;e=e+-1|0;if(!e){e=0;break}}}}while(0);return (e|0?b:0)|0}function NJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;GN(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{FJ(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}FJ(a,f,e)}l=g;return}function OJ(a,b){a=a|0;b=b|0;if(!a)a=0;else a=TJ(a,b,0)|0;return a|0}function PJ(b,e,f,g,h,i){b=b|0;e=+e;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0;H=l;l=l+560|0;m=H+8|0;u=H;G=H+524|0;F=G;n=H+512|0;c[u>>2]=0;E=n+12|0;QJ(e)|0;if((D|0)<0){e=-e;B=1;A=126596}else{B=(h&2049|0)!=0&1;A=(h&2048|0)==0?((h&1|0)==0?126597:126602):126599}QJ(e)|0;C=D&2146435072;do if(C>>>0<2146435072|(C|0)==2146435072&0<0){r=+RJ(e,u)*2.0;j=r!=0.0;if(j)c[u>>2]=(c[u>>2]|0)+-1;w=i|32;if((w|0)==97){s=i&32;q=(s|0)==0?A:A+9|0;p=B|2;j=12-g|0;do if(!(g>>>0>11|(j|0)==0)){e=8.0;do{j=j+-1|0;e=e*16.0}while((j|0)!=0);if((a[q>>0]|0)==45){e=-(e+(-r-e));break}else{e=r+e-e;break}}else e=r;while(0);k=c[u>>2]|0;j=(k|0)<0?0-k|0:k;j=KJ(j,((j|0)<0)<<31>>31,E)|0;if((j|0)==(E|0)){j=n+11|0;a[j>>0]=48}a[j+-1>>0]=(k>>31&2)+43;o=j+-2|0;a[o>>0]=i+15;n=(g|0)<1;m=(h&8|0)==0;j=G;do{C=~~e;k=j+1|0;a[j>>0]=d[126627+C>>0]|s;e=(e-+(C|0))*16.0;if((k-F|0)==1?!(m&(n&e==0.0)):0){a[k>>0]=46;j=j+2|0}else j=k}while(e!=0.0);C=j-F|0;F=E-o|0;E=(g|0)!=0&(C+-2|0)<(g|0)?g+2|0:C;j=F+p+E|0;NJ(b,32,f,j,h);FJ(b,q,p);NJ(b,48,f,j,h^65536);FJ(b,G,C);NJ(b,48,E-C|0,0,0);FJ(b,o,F);NJ(b,32,f,j,h^8192);break}k=(g|0)<0?6:g;if(j){j=(c[u>>2]|0)+-28|0;c[u>>2]=j;e=r*268435456.0}else{e=r;j=c[u>>2]|0}C=(j|0)<0?m:m+288|0;m=C;do{y=~~e>>>0;c[m>>2]=y;m=m+4|0;e=(e-+(y>>>0))*1.0e9}while(e!=0.0);if((j|0)>0){n=C;p=m;while(1){o=(j|0)<29?j:29;j=p+-4|0;if(j>>>0>=n>>>0){m=0;do{x=HN(c[j>>2]|0,0,o|0)|0;x=IN(x|0,D|0,m|0,0)|0;y=D;v=UN(x|0,y|0,1e9,0)|0;c[j>>2]=v;m=PN(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=n>>>0);if(m){n=n+-4|0;c[n>>2]=m}}m=p;while(1){if(m>>>0<=n>>>0)break;j=m+-4|0;if(!(c[j>>2]|0))m=j;else break}j=(c[u>>2]|0)-o|0;c[u>>2]=j;if((j|0)>0)p=m;else break}}else n=C;if((j|0)<0){g=((k+25|0)/9|0)+1|0;t=(w|0)==102;do{s=0-j|0;s=(s|0)<9?s:9;if(n>>>0<m>>>0){o=(1<<s)+-1|0;p=1e9>>>s;q=0;j=n;do{y=c[j>>2]|0;c[j>>2]=(y>>>s)+q;q=S(y&o,p)|0;j=j+4|0}while(j>>>0<m>>>0);j=(c[n>>2]|0)==0?n+4|0:n;if(!q){n=j;j=m}else{c[m>>2]=q;n=j;j=m+4|0}}else{n=(c[n>>2]|0)==0?n+4|0:n;j=m}m=t?C:n;m=(j-m>>2|0)>(g|0)?m+(g<<2)|0:j;j=(c[u>>2]|0)+s|0;c[u>>2]=j}while((j|0)<0);j=n;g=m}else{j=n;g=m}y=C;if(j>>>0<g>>>0){m=(y-j>>2)*9|0;o=c[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;m=m+1|0}while(o>>>0>=n>>>0)}}else m=0;t=(w|0)==103;v=(k|0)!=0;n=k-((w|0)!=102?m:0)+((v&t)<<31>>31)|0;if((n|0)<(((g-y>>2)*9|0)+-9|0)){n=n+9216|0;s=C+4+(((n|0)/9|0)+-1024<<2)|0;n=((n|0)%9|0)+1|0;if((n|0)<9){o=10;do{o=o*10|0;n=n+1|0}while((n|0)!=9)}else o=10;p=c[s>>2]|0;q=(p>>>0)%(o>>>0)|0;n=(s+4|0)==(g|0);if(!(n&(q|0)==0)){r=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;e=q>>>0<x>>>0?.5:n&(q|0)==(x|0)?1.0:1.5;if(B){x=(a[A>>0]|0)==45;e=x?-e:e;r=x?-r:r}n=p-q|0;c[s>>2]=n;if(r+e!=r){x=n+o|0;c[s>>2]=x;if(x>>>0>999999999){m=s;while(1){n=m+-4|0;c[m>>2]=0;if(n>>>0<j>>>0){j=j+-4|0;c[j>>2]=0}x=(c[n>>2]|0)+1|0;c[n>>2]=x;if(x>>>0>999999999)m=n;else break}}else n=s;m=(y-j>>2)*9|0;p=c[j>>2]|0;if(p>>>0>=10){o=10;do{o=o*10|0;m=m+1|0}while(p>>>0>=o>>>0)}}else n=s}else n=s;n=n+4|0;n=g>>>0>n>>>0?n:g;x=j}else{n=g;x=j}w=n;while(1){if(w>>>0<=x>>>0){u=0;break}j=w+-4|0;if(!(c[j>>2]|0))w=j;else{u=1;break}}g=0-m|0;do if(t){j=((v^1)&1)+k|0;if((j|0)>(m|0)&(m|0)>-5){o=i+-1|0;k=j+-1-m|0}else{o=i+-2|0;k=j+-1|0}j=h&8;if(!j){if(u?(z=c[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){n=0;j=10;do{j=j*10|0;n=n+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else n=0;else n=9;j=((w-y>>2)*9|0)+-9|0;if((o|32|0)==102){s=j-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}else{s=j+m-n|0;s=(s|0)>0?s:0;k=(k|0)<(s|0)?k:s;s=0;break}}else s=j}else{o=i;s=h&8}while(0);t=k|s;p=(t|0)!=0&1;q=(o|32|0)==102;if(q){v=0;j=(m|0)>0?m:0}else{j=(m|0)<0?g:m;j=KJ(j,((j|0)<0)<<31>>31,E)|0;n=E;if((n-j|0)<2)do{j=j+-1|0;a[j>>0]=48}while((n-j|0)<2);a[j+-1>>0]=(m>>31&2)+43;j=j+-2|0;a[j>>0]=o;v=j;j=n-j|0}j=B+1+k+p+j|0;NJ(b,32,f,j,h);FJ(b,A,B);NJ(b,48,f,j,h^65536);if(q){o=x>>>0>C>>>0?C:x;s=G+9|0;p=s;q=G+8|0;n=o;do{m=KJ(c[n>>2]|0,0,s)|0;if((n|0)==(o|0)){if((m|0)==(s|0)){a[q>>0]=48;m=q}}else if(m>>>0>G>>>0){GN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}FJ(b,m,p-m|0);n=n+4|0}while(n>>>0<=C>>>0);if(t|0)FJ(b,126643,1);if(n>>>0<w>>>0&(k|0)>0)while(1){m=KJ(c[n>>2]|0,0,s)|0;if(m>>>0>G>>>0){GN(G|0,48,m-F|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}FJ(b,m,(k|0)<9?k:9);n=n+4|0;m=k+-9|0;if(!(n>>>0<w>>>0&(k|0)>9)){k=m;break}else k=m}NJ(b,48,k+9|0,9,0)}else{t=u?w:x+4|0;if((k|0)>-1){u=G+9|0;s=(s|0)==0;g=u;p=0-F|0;q=G+8|0;o=x;do{m=KJ(c[o>>2]|0,0,u)|0;if((m|0)==(u|0)){a[q>>0]=48;m=q}do if((o|0)==(x|0)){n=m+1|0;FJ(b,m,1);if(s&(k|0)<1){m=n;break}FJ(b,126643,1);m=n}else{if(m>>>0<=G>>>0)break;GN(G|0,48,m+p|0)|0;do m=m+-1|0;while(m>>>0>G>>>0)}while(0);F=g-m|0;FJ(b,m,(k|0)>(F|0)?F:k);k=k-F|0;o=o+4|0}while(o>>>0<t>>>0&(k|0)>-1)}NJ(b,48,k+18|0,18,0);FJ(b,v,E-v|0)}NJ(b,32,f,j,h^8192)}else{G=(i&32|0)!=0;j=B+3|0;NJ(b,32,f,j,h&-65537);FJ(b,A,B);FJ(b,e!=e|0.0!=0.0?(G?134778:126623):G?126615:126619,3);NJ(b,32,f,j,h^8192)}while(0);l=H;return ((j|0)<(f|0)?f:j)|0}function QJ(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;D=c[j+4>>2]|0;return b|0}function RJ(a,b){a=+a;b=b|0;return +(+SJ(a,b))}function SJ(a,b){a=+a;b=b|0;var d=0,e=0,f=0;h[j>>3]=a;d=c[j>>2]|0;e=c[j+4>>2]|0;f=KN(d|0,e|0,52)|0;switch(f&2047){case 0:{if(a!=0.0){a=+SJ(a*18446744073709551616.0,b);d=(c[b>>2]|0)+-64|0}else d=0;c[b>>2]=d;break}case 2047:break;default:{c[b>>2]=(f&2047)+-1022;c[j>>2]=d;c[j+4>>2]=e&-2146435073|1071644672;a=+h[j>>3]}}return +a}function TJ(b,d,e){b=b|0;d=d|0;e=e|0;do if(b){if(d>>>0<128){a[b>>0]=d;b=1;break}if(!(c[c[(UJ()|0)+188>>2]>>2]|0))if((d&-128|0)==57216){a[b>>0]=d;b=1;break}else{c[(bJ()|0)>>2]=84;b=-1;break}if(d>>>0<2048){a[b>>0]=d>>>6|192;a[b+1>>0]=d&63|128;b=2;break}if(d>>>0<55296|(d&-8192|0)==57344){a[b>>0]=d>>>12|224;a[b+1>>0]=d>>>6&63|128;a[b+2>>0]=d&63|128;b=3;break}if((d+-65536|0)>>>0<1048576){a[b>>0]=d>>>18|240;a[b+1>>0]=d>>>12&63|128;a[b+2>>0]=d>>>6&63|128;a[b+3>>0]=d&63|128;b=4;break}else{c[(bJ()|0)>>2]=84;b=-1;break}}else b=1;while(0);return b|0}function UJ(){return dJ()|0}function VJ(){return dJ()|0}function WJ(b,e){b=b|0;e=e|0;var f=0,g=0;g=0;while(1){if((d[126645+g>>0]|0)==(b|0)){b=2;break}f=g+1|0;if((f|0)==87){f=126733;g=87;b=5;break}else g=f}if((b|0)==2)if(!g)f=126733;else{f=126733;b=5}if((b|0)==5)while(1){do{b=f;f=f+1|0}while((a[b>>0]|0)!=0);g=g+-1|0;if(!g)break;else b=5}return XJ(f,c[e+20>>2]|0)|0}function XJ(a,b){a=a|0;b=b|0;return YJ(a,b)|0}function YJ(a,b){a=a|0;b=b|0;if(!b)b=0;else b=ZJ(c[b>>2]|0,c[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function ZJ(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(c[b>>2]|0)+1794895138|0;h=_J(c[b+8>>2]|0,o)|0;f=_J(c[b+12>>2]|0,o)|0;g=_J(c[b+16>>2]|0,o)|0;a:do if((h>>>0<d>>>2>>>0?(n=d-(h<<2)|0,f>>>0<n>>>0&g>>>0<n>>>0):0)?((g|f)&3|0)==0:0){n=f>>>2;m=g>>>2;l=0;while(1){j=h>>>1;k=l+j|0;i=k<<1;g=i+n|0;f=_J(c[b+(g<<2)>>2]|0,o)|0;g=_J(c[b+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0<d>>>0&f>>>0<(d-g|0)>>>0)){f=0;break a}if(a[b+(g+f)>>0]|0){f=0;break a}f=vJ(e,b+g|0)|0;if(!f)break;f=(f|0)<0;if((h|0)==1){f=0;break a}else{l=f?l:k;h=f?j:h-j|0}}f=i+m|0;g=_J(c[b+(f<<2)>>2]|0,o)|0;f=_J(c[b+(f+1<<2)>>2]|0,o)|0;if(f>>>0<d>>>0&g>>>0<(d-f|0)>>>0)f=(a[b+(f+g)>>0]|0)==0?b+f|0:0;else f=0}else f=0;while(0);return f|0}function _J(a,b){a=a|0;b=b|0;var c=0;c=VN(a|0)|0;return ((b|0)==0?a:c)|0}function $J(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;f=e+16|0;g=c[f>>2]|0;if(!g)if(!(aK(e)|0)){g=c[f>>2]|0;h=5}else f=0;else h=5;a:do if((h|0)==5){j=e+20|0;i=c[j>>2]|0;f=i;if((g-i|0)>>>0<d>>>0){f=Za[c[e+36>>2]&31](e,b,d)|0;break}b:do if((a[e+75>>0]|0)>-1){i=d;while(1){if(!i){h=0;g=b;break b}g=i+-1|0;if((a[b+g>>0]|0)==10)break;else i=g}f=Za[c[e+36>>2]&31](e,b,i)|0;if(f>>>0<i>>>0)break a;h=i;g=b+i|0;d=d-i|0;f=c[j>>2]|0}else{h=0;g=b}while(0);MN(f|0,g|0,d|0)|0;c[j>>2]=(c[j>>2]|0)+d;f=h+d|0}while(0);return f|0}function aK(b){b=b|0;var d=0,e=0;d=b+74|0;e=a[d>>0]|0;a[d>>0]=e+255|e;d=c[b>>2]|0;if(!(d&8)){c[b+8>>2]=0;c[b+4>>2]=0;e=c[b+44>>2]|0;c[b+28>>2]=e;c[b+20>>2]=e;c[b+16>>2]=e+(c[b+48>>2]|0);b=0}else{c[b>>2]=d|32;b=-1}return b|0}function bK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=a+20|0;f=c[e>>2]|0;a=(c[a+16>>2]|0)-f|0;a=a>>>0>d>>>0?d:a;MN(f|0,b|0,a|0)|0;c[e>>2]=(c[e>>2]|0)+a;return d|0}function cK(a){a=a|0;return ((a+-48|0)>>>0<10|(dK(a)|0)!=0)&1|0}function dK(a){a=a|0;return ((a|32)+-97|0)>>>0<26|0}function eK(a){a=a|0;return ((a|0)==32|(a|0)==9)&1|0}function fK(a){a=a|0;if(!(gK(a)|0))a=(hK(a)|0)!=0;else a=1;return a&1|0}function gK(a){a=a|0;return (a+-48|0)>>>0<10|0}function hK(a){a=a|0;if(a>>>0<131072)a=(d[128537+((d[128537+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=a>>>0<196606&1;return a|0}function iK(a){a=a|0;return eK(a)|0}function jK(a){a=a|0;return ((a+-65529|0)>>>0<3|((a&-2|0)==8232|(a>>>0<32|(a+-127|0)>>>0<33)))&1|0}function kK(a,b){a=a|0;b=b|0;do switch(b|0){case 1:{a=fK(a)|0;break}case 2:{a=hK(a)|0;break}case 3:{a=iK(a)|0;break}case 4:{a=jK(a)|0;break}case 5:{a=gK(a)|0;break}case 6:{a=lK(a)|0;break}case 7:{a=mK(a)|0;break}case 8:{a=nK(a)|0;break}case 9:{a=oK(a)|0;break}case 10:{a=pK(a)|0;break}case 11:{a=qK(a)|0;break}case 12:{a=rK(a)|0;break}default:a=0}while(0);return a|0}function lK(a){a=a|0;if(!(pK(a)|0))a=(nK(a)|0)!=0;else a=0;return a&1|0}function mK(a){a=a|0;return (wK(a)|0)!=(a|0)|0}function nK(a){a=a|0;if(a>>>0>=255)if((a+-57344|0)>>>0<8185|(a>>>0<8232|(a+-8234|0)>>>0<47062))a=1;else return (a&65534|0)!=65534&(a+-65532|0)>>>0<1048580&1|0;else a=(a+1&127)>>>0>32&1;return a|0}function oK(a){a=a|0;if(a>>>0<131072)a=(d[131513+((d[131513+(a>>>8)>>0]|0)<<5|a>>>3&31)>>0]|0)>>>(a&7)&1;else a=0;return a|0}function pK(a){a=a|0;if(!a)a=0;else a=(uK(56184,a)|0)!=0;return a&1|0}function qK(a){a=a|0;return (sK(a)|0)!=(a|0)|0}function rK(a){a=a|0;return ((a+-48|0)>>>0<10|((a|32)+-97|0)>>>0<6)&1|0}function sK(a){a=a|0;return tK(a,1)|0}function tK(c,f){c=c|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=(f<<1)+-1|0;l=f+-1|0;a:do if(!((c+-43008|0)>>>0<22272|((c+-11776|0)>>>0<30784|((c+-1536|0)>>>0<2560|(hK(c)|0)==0)))){g=(f|0)!=0;if(g&(c+-4256|0)>>>0<46){if((c|0)>4293)switch(c|0){case 4295:case 4301:break;default:break a}c=c+7264|0;break}if((c+-11520|0)>>>0<38&(g^1)){c=c+-7264|0;break}else g=0;do{i=a[59186+(g<<2)+2>>0]|0;j=i<<24>>24;h=c-(e[59186+(g<<2)>>1]|0)|0;if((h-(j&l)|0)>>>0<(d[59186+(g<<2)+3>>0]|0)>>>0){m=11;break}g=g+1|0}while((g|0)!=61);if((m|0)==11)if(i<<24>>24==1){c=f+c-(h&1)|0;break}else{c=(S(j,k)|0)+c|0;break}i=1-f|0;g=b[58698+(i<<1)>>1]|0;b:do if(g<<16>>16){h=0;while(1){if((g&65535|0)==(c|0))break;h=h+1|0;g=b[58698+(h<<2)+(i<<1)>>1]|0;if(!(g<<16>>16))break b}c=e[58698+(h<<2)+(f<<1)>>1]|0;break a}while(0);return ((c+-66600+(f*40|0)|0)>>>0<40?c+-40+(f*80|0)|0:c)|0}while(0);return c|0}function uK(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)a=a+((vK(a)|0)<<2)|0;else{while(1){e=c[a>>2]|0;d=(e|0)!=0;if((e|0)==(b|0)|d^1)break;else a=a+4|0}a=d?a:0}return a|0}function vK(a){a=a|0;var b=0;b=a;while(1)if(!(c[b>>2]|0))break;else b=b+4|0;return b-a>>2|0}function wK(a){a=a|0;return tK(a,0)|0}function xK(b){b=b|0;var c=0,d=0,e=0,f=0;e=a[b>>0]|0;c=1;d=134681;f=97;while(1){if(e<<24>>24==f<<24>>24?(vJ(b,d)|0)==0:0)break;d=d+6|0;f=a[d>>0]|0;if(!(f<<24>>24)){c=0;break}else c=c+1|0}return c|0}function yK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+48|0;f=g+40|0;e=g+8|0;d=g;c[d>>2]=a;c[d+4>>2]=b;d=Ca(197,d|0)|0;if((d|0)==-9?(c[e>>2]=a,c[e+4>>2]=1,(qa(221,e|0)|0)>=0):0){zK(e,a);c[f>>2]=e;c[f+4>>2]=b;b=aJ(Ea(195,f|0)|0)|0}else b=aJ(d)|0;l=g;return b|0}function zK(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;d=b;e=134754;f=d+15|0;do{a[d>>0]=a[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));if(!c){a[b+14>>0]=48;a[b+15>>0]=0}else{e=c;d=14;while(1){d=d+1|0;if(e>>>0<10)break;else e=(e>>>0)/10|0}a[b+d>>0]=0;while(1){d=d+-1|0;a[b+d>>0]=(c>>>0)%10|0|48;if(c>>>0<10)break;else c=(c>>>0)/10|0}}return}function AK(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+208|0;j=m+8|0;k=m;h=S(d,b)|0;i=k;c[i>>2]=1;c[i+4>>2]=0;a:do if(h|0){i=0-d|0;c[j+4>>2]=d;c[j>>2]=d;f=2;b=d;g=d;while(1){b=b+d+g|0;c[j+(f<<2)>>2]=b;if(b>>>0<h>>>0){n=g;f=f+1|0;g=b;b=n}else break}g=a+h+i|0;if(g>>>0>a>>>0){h=g;f=1;b=1;do{do if((b&3|0)!=3){b=f+-1|0;if((c[j+(b<<2)>>2]|0)>>>0<(h-a|0)>>>0)BK(a,d,e,f,j);else DK(a,d,e,k,f,0,j);if((f|0)==1){EK(k,1);f=0;break}else{EK(k,b);f=1;break}}else{BK(a,d,e,f,j);CK(k,2);f=f+2|0}while(0);b=c[k>>2]|1;c[k>>2]=b;a=a+d|0}while(a>>>0<g>>>0)}else{f=1;b=1}DK(a,d,e,k,f,0,j);g=k+4|0;while(1){if((f|0)==1&(b|0)==1){if(!(c[g>>2]|0))break a}else if((f|0)>=2){EK(k,2);n=f+-2|0;c[k>>2]=c[k>>2]^7;CK(k,1);DK(a+(0-(c[j+(n<<2)>>2]|0))+i|0,d,e,k,f+-1|0,1,j);EK(k,1);b=c[k>>2]|1;c[k>>2]=b;h=a+i|0;DK(h,d,e,k,n,1,j);a=h;f=n;continue}b=FK(k)|0;CK(k,b);a=a+i|0;f=b+f|0;b=c[k>>2]|0}}while(0);l=m;return}function BK(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+240|0;m=n;c[m>>2]=a;a:do if((e|0)>1){k=0-b|0;g=a;j=e;e=1;while(1){h=g+k|0;i=j+-2|0;g=h+(0-(c[f+(i<<2)>>2]|0))|0;if((lb[d&63](a,g)|0)>-1?(lb[d&63](a,h)|0)>-1:0)break a;a=e+1|0;e=m+(e<<2)|0;if((lb[d&63](g,h)|0)>-1){c[e>>2]=g;e=j+-1|0}else{c[e>>2]=h;g=h;e=i}if((e|0)<=1){e=a;break a}j=e;e=a;a=c[m>>2]|0}}else e=1;while(0);HK(b,m,e);l=n;return}function CK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[f>>2]|0;c[a>>2]=e;c[f>>2]=0;b=b+-32|0;d=0}else{d=c[f>>2]|0;e=c[a>>2]|0}c[a>>2]=d<<32-b|e>>>b;c[f>>2]=d>>>b;return}function DK(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+240|0;n=p+232|0;o=p;q=c[e>>2]|0;c[n>>2]=q;j=c[e+4>>2]|0;k=n+4|0;c[k>>2]=j;c[o>>2]=a;a:do if((q|0)!=1|(j|0)!=0?(m=0-b|0,i=a+(0-(c[h+(f<<2)>>2]|0))|0,(lb[d&63](i,a)|0)>=1):0){e=1;g=(g|0)==0;j=i;while(1){if(g&(f|0)>1){g=a+m|0;i=c[h+(f+-2<<2)>>2]|0;if((lb[d&63](g,j)|0)>-1){i=10;break a}if((lb[d&63](g+(0-i)|0,j)|0)>-1){i=10;break a}}g=e+1|0;c[o+(e<<2)>>2]=j;q=FK(n)|0;CK(n,q);f=q+f|0;if(!((c[n>>2]|0)!=1|(c[k>>2]|0)!=0)){e=g;a=j;i=10;break a}a=j+(0-(c[h+(f<<2)>>2]|0))|0;if((lb[d&63](a,c[o>>2]|0)|0)<1){a=j;e=g;g=0;i=9;break}else{q=j;e=g;g=1;j=a;a=q}}}else{e=1;i=9}while(0);if((i|0)==9?(g|0)==0:0)i=10;if((i|0)==10){HK(b,o,e);BK(a,b,d,f,h)}l=p;return}function EK(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+4|0;if(b>>>0>31){e=c[a>>2]|0;c[f>>2]=e;c[a>>2]=0;b=b+-32|0;d=0}else{d=c[a>>2]|0;e=c[f>>2]|0}c[f>>2]=d>>>(32-b|0)|e<<b;c[a>>2]=d<<b;return}function FK(a){a=a|0;var b=0;b=GK((c[a>>2]|0)+-1|0)|0;if(!b){b=GK(c[a+4>>2]|0)|0;return ((b|0)==0?0:b+32|0)|0}else return b|0;return 0}function GK(a){a=a|0;var b=0;if(a)if(!(a&1)){b=a;a=0;do{a=a+1|0;b=b>>>1}while(!(b&1|0))}else a=0;else a=32;return a|0}function HK(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+256|0;e=h;a:do if((d|0)>=2?(g=b+(d<<2)|0,c[g>>2]=e,a|0):0)while(1){f=a>>>0<256?a:256;MN(e|0,c[b>>2]|0,f|0)|0;e=0;do{i=b+(e<<2)|0;e=e+1|0;MN(c[i>>2]|0,c[b+(e<<2)>>2]|0,f|0)|0;c[i>>2]=(c[i>>2]|0)+f}while((e|0)!=(d|0));a=a-f|0;if(!a)break a;e=c[g>>2]|0}while(0);l=h;return}function IK(b,e,f){b=b|0;e=e|0;f=f|0;var g=0.0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(e|0){case 0:{l=-149;m=24;j=4;break}case 1:{l=-1074;m=53;j=4;break}case 2:{l=-1074;m=53;j=4;break}default:g=0.0}a:do if((j|0)==4){o=b+4|0;n=b+100|0;do{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=mJ(b)|0}while((nJ(e)|0)!=0);b:do switch(e|0){case 43:case 45:{i=1-(((e|0)==45&1)<<1)|0;e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;h=d[e>>0]|0;break b}else{h=mJ(b)|0;break b}}default:{h=e;i=1}}while(0);e=0;do{if((h|32|0)!=(a[134769+e>>0]|0))break;do if(e>>>0<7){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=mJ(b)|0;break}}while(0);e=e+1|0}while(e>>>0<8);c:do switch(e|0){case 8:break;case 3:{j=23;break}default:{k=(f|0)!=0;if(k&e>>>0>3)if((e|0)==8)break c;else{j=23;break c}d:do if(!e){e=0;do{if((h|32|0)!=(a[134778+e>>0]|0))break d;do if(e>>>0<2){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0;break}else{h=mJ(b)|0;break}}while(0);e=e+1|0}while(e>>>0<3)}while(0);switch(e|0){case 3:{e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=mJ(b)|0;if((e|0)==40)e=1;else{if(!(c[n>>2]|0)){g=s;break a}c[o>>2]=(c[o>>2]|0)+-1;g=s;break a}while(1){h=c[o>>2]|0;if(h>>>0<(c[n>>2]|0)>>>0){c[o>>2]=h+1;h=d[h>>0]|0}else h=mJ(b)|0;if(!((h+-48|0)>>>0<10|(h+-65|0)>>>0<26)?!((h|0)==95|(h+-97|0)>>>0<26):0)break;e=e+1|0}if((h|0)==41){g=s;break a}h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!k){c[(bJ()|0)>>2]=22;kJ(b,0);g=0.0;break a}if(!e){g=s;break a}while(1){e=e+-1|0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if(!e){g=s;break a}}}case 0:{if((h|0)==48){e=c[o>>2]|0;if(e>>>0<(c[n>>2]|0)>>>0){c[o>>2]=e+1;e=d[e>>0]|0}else e=mJ(b)|0;if((e|32|0)==120){g=+JK(b,m,l,i,f);break a}if(!(c[n>>2]|0))e=48;else{c[o>>2]=(c[o>>2]|0)+-1;e=48}}else e=h;g=+KK(b,e,m,l,i,f);break a}default:{if(c[n>>2]|0)c[o>>2]=(c[o>>2]|0)+-1;c[(bJ()|0)>>2]=22;kJ(b,0);g=0.0;break a}}}}while(0);if((j|0)==23){h=(c[n>>2]|0)==0;if(!h)c[o>>2]=(c[o>>2]|0)+-1;if((f|0)!=0&e>>>0>3)do{if(!h)c[o>>2]=(c[o>>2]|0)+-1;e=e+-1|0}while(e>>>0>3)}g=+(i|0)*t}while(0);return +g}function JK(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var h=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;w=a+4|0;i=c[w>>2]|0;v=a+100|0;if(i>>>0<(c[v>>2]|0)>>>0){c[w>>2]=i+1;i=d[i>>0]|0;j=0}else{i=mJ(a)|0;j=0}a:while(1){switch(i|0){case 46:{n=8;break a}case 48:break;default:{s=0;t=0;p=1.0;h=0.0;u=0;r=j;j=0;q=0;m=0;l=0;break a}}i=c[w>>2]|0;if(i>>>0<(c[v>>2]|0)>>>0){c[w>>2]=i+1;i=d[i>>0]|0;j=1;continue}else{i=mJ(a)|0;j=1;continue}}if((n|0)==8){i=c[w>>2]|0;if(i>>>0<(c[v>>2]|0)>>>0){c[w>>2]=i+1;i=d[i>>0]|0}else i=mJ(a)|0;if((i|0)==48){l=0;j=0;do{i=c[w>>2]|0;if(i>>>0<(c[v>>2]|0)>>>0){c[w>>2]=i+1;i=d[i>>0]|0}else i=mJ(a)|0;l=IN(l|0,j|0,-1,-1)|0;j=D}while((i|0)==48);s=1;t=0;p=1.0;h=0.0;u=0;r=1;q=0;m=0}else{s=1;t=0;p=1.0;h=0.0;u=0;r=j;j=0;q=0;m=0;l=0}}while(1){n=i+-48|0;o=(i|0)==46;if(n>>>0>=10?!(o|((i|32)+-97|0)>>>0<6):0)break;if(o)if(!s){s=1;n=t;k=p;i=u;l=m;j=q}else{i=46;break}else{i=(i|0)>57?(i|32)+-87|0:n;do if(!((q|0)<0|(q|0)==0&m>>>0<8))if((q|0)<0|(q|0)==0&m>>>0<14){p=p*.0625;n=t;k=p;h=h+p*+(i|0);i=u;break}else{i=(t|0)!=0|(i|0)==0;n=i?t:1;k=p;h=i?h:h+p*.5;i=u;break}else{n=t;k=p;i=i+(u<<4)|0}while(0);m=IN(m|0,q|0,1,0)|0;r=1;q=D}o=c[w>>2]|0;if(o>>>0<(c[v>>2]|0)>>>0){c[w>>2]=o+1;t=n;p=k;u=i;i=d[o>>0]|0;continue}else{t=n;p=k;u=i;i=mJ(a)|0;continue}}do if(!r){i=c[v>>2]|0;j=(i|0)!=0;if(j)c[w>>2]=(c[w>>2]|0)+-1;if(g){if(j)c[w>>2]=(c[w>>2]|0)+-1;if(!((s|0)==0|(i|0)==0))c[w>>2]=(c[w>>2]|0)+-1}else kJ(a,0);h=+(f|0)*0.0}else{n=(s|0)==0;o=n?m:l;n=n?q:j;if((q|0)<0|(q|0)==0&m>>>0<8){j=u;l=q;do{j=j<<4;m=IN(m|0,l|0,1,0)|0;l=D}while((l|0)<0|(l|0)==0&m>>>0<8);m=j}else m=u;if((i|32|0)==112){j=LK(a,g)|0;i=D;if((j|0)==0&(i|0)==-2147483648){if(!g){kJ(a,0);h=0.0;break}if(!(c[v>>2]|0)){j=0;i=0}else{c[w>>2]=(c[w>>2]|0)+-1;j=0;i=0}}}else if(!(c[v>>2]|0)){j=0;i=0}else{c[w>>2]=(c[w>>2]|0)+-1;j=0;i=0}l=HN(o|0,n|0,2)|0;l=IN(l|0,D|0,-32,-1)|0;l=IN(l|0,D|0,j|0,i|0)|0;i=D;if(!m){h=+(f|0)*0.0;break}w=0-e|0;g=((w|0)<0)<<31>>31;if((i|0)>(g|0)|(i|0)==(g|0)&l>>>0>w>>>0){c[(bJ()|0)>>2]=34;h=+(f|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}w=e+-106|0;g=((w|0)<0)<<31>>31;if((i|0)<(g|0)|(i|0)==(g|0)&l>>>0<w>>>0){c[(bJ()|0)>>2]=34;h=+(f|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if((m|0)>-1){j=m;do{w=!(h>=.5);j=j<<1|(w^1)&1;h=h+(w?h:h+-1.0);l=IN(l|0,i|0,-1,-1)|0;i=D}while((j|0)>-1);p=h;m=j}else p=h;w=((b|0)<0)<<31>>31;e=FN(32,0,e|0,((e|0)<0)<<31>>31|0)|0;i=IN(e|0,D|0,l|0,i|0)|0;e=D;if((w|0)>(e|0)|(w|0)==(e|0)&b>>>0>i>>>0)if((i|0)>0)n=59;else{j=0;i=84;n=61}else{i=b;n=59}if((n|0)==59)if((i|0)<53){j=i;i=84-i|0;n=61}else{k=0.0;h=+(f|0)}if((n|0)==61){h=+(f|0);k=+NK(+MK(1.0,i),h);i=j}f=(m&1|0)==0&(p!=0.0&(i|0)<32);h=h*(f?0.0:p)+(k+h*+(((f&1)+m|0)>>>0))-k;if(!(h!=0.0))c[(bJ()|0)>>2]=34;h=+PK(h,l)}while(0);return +h}\nfunction Fk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=b+16|0;d=c[t>>2]|0;c[d+192>>2]=0;c[d+232>>2]=0;Vk(b);d=1;while(1){e=c[t>>2]|0;if((d|0)>(c[e+180>>2]|0))break;Wk(b,c[(c[e+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}h=co(b)|0;while(1){if(!h)break;g=Pm(b,h)|0;while(1){if(!g)break;d=c[g>>2]|0;e=(c[(c[((d&3|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+160|0;f=a[e>>0]|0;if(f<<24>>24<3){a[e>>0]=f+1<<24>>24;d=c[g>>2]|0}d=(c[(c[((d&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+160|0;e=a[d>>0]|0;if(e<<24>>24<3)a[d>>0]=e+1<<24>>24;g=Rm(b,g)|0}h=eo(b,h)|0}m=co(b)|0;while(1){if(!m)break;if((c[(c[m+16>>2]|0)+212>>2]|0)==0?(m|0)==(HA(m)|0):0){bh(b,m);l=(c[t>>2]|0)+232|0;c[l>>2]=(c[l>>2]|0)+1}d=0;l=Pm(b,m)|0;while(1){if(!l)break;i=l+16|0;e=c[i>>2]|0;a:do if(!(c[e+172>>2]|0)){j=l+48|0;k=l+-48|0;f=d+16|0;if(Gk(l)|0){if(!(Ek(d,l)|0)){Hk(b,l);d=l;break}e=c[(c[f>>2]|0)+172>>2]|0;if(e|0){Ck(b,l,e,0);Yg(l);break}i=c[l>>2]&3;if((c[(c[(c[((i|0)==3?l:j)+40>>2]|0)+16>>2]|0)+232>>2]|0)!=(c[(c[(c[((i|0)==2?l:k)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;ih(l,d);Yg(l);break}if((d|0?(s=c[l>>2]&3,n=c[((s|0)==3?l:j)+40>>2]|0,o=c[d>>2]&3,(n|0)==(c[((o|0)==3?d:d+48|0)+40>>2]|0)):0)?(p=c[((s|0)==2?l:k)+40>>2]|0,(p|0)==(c[((o|0)==2?d:d+-48|0)+40>>2]|0)):0){if((c[(c[n+16>>2]|0)+232>>2]|0)==(c[(c[p+16>>2]|0)+232>>2]|0)){ih(l,d);Yg(l);break}if(((c[e+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0)?hj(l,d)|0:0)if(!(a[174213]|0)){Ck(b,l,c[(c[f>>2]|0)+172>>2]|0,1);Yg(l);break}else{a[(c[i>>2]|0)+112>>0]=6;break}}h=c[l>>2]&3;e=c[((h|0)==3?l:j)+40>>2]|0;if((e|0)==(c[((h|0)==2?l:k)+40>>2]|0)){Yg(l);d=l;break}e=HA(e)|0;f=HA(c[((c[l>>2]&3|0)==2?l:k)+40>>2]|0)|0;h=c[l>>2]&3;if((c[((h|0)==3?l:j)+40>>2]|0)==(e|0)?(c[((h|0)==2?l:k)+40>>2]|0)==(f|0):0){g=c[(c[e+16>>2]|0)+232>>2]|0;h=c[(c[f+16>>2]|0)+232>>2]|0;if((g|0)==(h|0)){gh(b,l);d=l;break}if((h|0)>(g|0)){Ik(b,e,f,l);d=l;break}e=an(b,f,e,0,0)|0;do if(e|0?(q=c[e>>2]&3,r=c[((q|0)==2?e:e+-48|0)+40>>2]|0,(r|0)!=(c[((c[l>>2]&3|0)==2?l:k)+40>>2]|0)):0){f=e+16|0;if(!(c[(c[f>>2]|0)+172>>2]|0))Ik(b,c[((q|0)==3?e:e+48|0)+40>>2]|0,r,e);if((c[(c[i>>2]|0)+96>>2]|0)==0?(c[(c[f>>2]|0)+96>>2]|0)==0:0){if(!(hj(l,e)|0))break;if(!(a[174213]|0)){Yg(l);Ck(b,l,c[(c[f>>2]|0)+172>>2]|0,1);break a}else{a[(c[i>>2]|0)+112>>0]=6;a[(c[f>>2]|0)+153>>0]=1;break a}}}while(0);d=c[l>>2]&3;Ik(b,c[((d|0)==2?l:k)+40>>2]|0,c[((d|0)==3?l:j)+40>>2]|0,l);d=l}}else d=l;while(0);l=Rm(b,l)|0}m=eo(b,m)|0}if((Vf(b)|0)!=(b|0)){d=c[(c[t>>2]|0)+216>>2]|0;if(!d)d=tw(4)|0;else d=vw(d,4)|0;t=c[t>>2]|0;c[t+216>>2]=d;c[d>>2]=c[t+192>>2]}return}function Gk(b){b=b|0;var d=0;d=c[b>>2]&3;if((a[(c[(c[((d|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7)b=1;else b=(a[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+159>>0]|0)==7;return b&1|0}function Hk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=Lk(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0;g=Lk(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;i=(c[(c[f+16>>2]|0)+232>>2]|0)>(c[(c[g+16>>2]|0)+232>>2]|0);e=i?f:g;f=i?g:f;g=f+16|0;i=e+16|0;a:do if((c[(c[g>>2]|0)+212>>2]|0)!=(c[(c[i>>2]|0)+212>>2]|0)){h=Sg(f,e)|0;if(h|0){Ck(b,d,h,1);break}if((c[(c[g>>2]|0)+232>>2]|0)!=(c[(c[i>>2]|0)+232>>2]|0)){Ik(b,f,e,d);e=(c[d+16>>2]|0)+172|0;while(1){e=c[e>>2]|0;if(!e)break a;f=e+-48|0;if((c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[i>>2]|0)+232>>2]|0))break a;a[(c[e+16>>2]|0)+112>>0]=5;e=c[(c[(c[((c[e>>2]&3|0)==2?e:f)+40>>2]|0)+16>>2]|0)+180>>2]|0}}}while(0);return}function Ik(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;f=c[k>>2]|0;g=b+16|0;j=d+16|0;if(!(c[f+96>>2]|0))i=-1;else i=((c[(c[j>>2]|0)+232>>2]|0)+(c[(c[g>>2]|0)+232>>2]|0)|0)/2|0;if(c[f+172>>2]|0)va(80499,80478,89,80524);h=c[(c[g>>2]|0)+232>>2]|0;while(1){g=h+1|0;f=c[(c[j>>2]|0)+232>>2]|0;if((h|0)>=(f|0))break;if((g|0)<(f|0)){if((g|0)==(i|0))f=Jk(a,e)|0;else f=Kk(a)|0;c[(c[f+16>>2]|0)+232>>2]=g}else f=d;vi(ah(b,f,e)|0);h=g;b=f}if(!(c[(c[k>>2]|0)+172>>2]|0))va(80535,80478,103,80524);else return}function Jk(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0;i=d+16|0;g=c[(c[i>>2]|0)+96>>2]|0;e=+h[g+24>>3];f=+h[g+32>>3];g=fh(b)|0;d=g+16|0;c[(c[d>>2]|0)+104>>2]=c[(c[i>>2]|0)+96>>2];j=+(c[(c[(so(g)|0)+16>>2]|0)+248>>2]|0);h[(c[d>>2]|0)+88>>3]=j;if(!(a[(c[i>>2]|0)+114>>0]|0)){b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;i=c[d>>2]|0;h[i+80>>3]=b?f:e;h[i+96>>3]=b?e:f}return g|0}function Kk(a){a=a|0;var b=0;b=fh(a)|0;Dk(a,b);return b|0}function Lk(b){b=b|0;var d=0;d=c[b+16>>2]|0;if((a[d+159>>0]|0)==7)b=c[(c[(c[(c[d+212>>2]|0)+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;else b=HA(b)|0;return b|0}function Mk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=Vf(a)|0;h=co(a)|0;while(1){if(!h)break;b=Um(j,h)|0;i=0;while(1){if(!b)break;l=Vm(j,b,h)|0;if(Bo(a,b)|0){k=i;b=l;i=k;continue}k=(c[b>>2]&3|0)==2?b:b+-48|0;m=(Ek(i,k)|0)==0;e=c[k>>2]&3;b=c[((e|0)==3?k:k+48|0)+40>>2]|0;d=c[(c[b+16>>2]|0)+232>>2]|0;e=c[((e|0)==2?k:k+-48|0)+40>>2]|0;f=c[(c[e+16>>2]|0)+232>>2]|0;g=(d|0)==(f|0);if(!m){c[(c[k+16>>2]|0)+172>>2]=g?i:0;b=c[(c[i+16>>2]|0)+172>>2]|0;if(!b){m=i;b=l;i=m;continue}Ck(a,k,b,0);Zg(k);m=i;b=l;i=m;continue}if(!g)if((f|0)>(d|0)){Nk(b,e,k);b=l;i=k;continue}else{Nk(e,b,k);b=l;i=k;continue}b=Ug(b,e)|0;if(!b){gh(j,k);b=l;i=k;continue}if((k|0)==(b|0)){m=i;b=l;i=m;continue}Zg(k);if(c[(c[k+16>>2]|0)+172>>2]|0){m=i;b=l;i=m;continue}ih(k,b);m=i;b=l;i=m}h=eo(a,h)|0}return}function Nk(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=Ok(a)|0;e=Ok(b)|0;Pk(f,e,d,c[(c[d+16>>2]|0)+172>>2]|0,(f|0)==(a|0)&(e|0)==(b|0)?1:5);return}function Ok(b){b=b|0;var d=0,e=0,f=0;d=c[b+16>>2]|0;e=c[d+212>>2]|0;if((e|0)!=0?(f=c[e+16>>2]|0,(a[f+272>>0]|0)==0):0)b=c[(c[f+268>>2]|0)+(c[d+232>>2]<<2)>>2]|0;return b|0}function Pk(d,e,f,g,h){d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;l=c[(c[n>>2]|0)+232>>2]|0;o=e+16|0;j=c[(c[o>>2]|0)+232>>2]|0;if((j|0)<=(l|0))va(80560,80588,81,80598);m=c[g>>2]&3;if(!((c[((m|0)==3?g:g+48|0)+40>>2]|0)==(d|0)?(c[((m|0)==2?g:g+-48|0)+40>>2]|0)==(e|0):0))i=5;a:do if((i|0)==5){i=f+16|0;if((b[(c[g+16>>2]|0)+168>>1]|0)>1){c[(c[i>>2]|0)+172>>2]=0;if(((j-l|0)==1?(k=Sg(d,e)|0,k|0):0)?hj(f,k)|0:0){ih(f,k);if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}m=h&255;h=d;l=c[(c[n>>2]|0)+232>>2]|0;while(1){i=c[(c[o>>2]|0)+232>>2]|0;if((l|0)>=(i|0))break a;if((l|0)<(i+-1|0)){i=Vf(d)|0;j=g+-48|0;i=Qk(i,c[((c[g>>2]&3|0)==2?g:j)+40>>2]|0)|0;k=g}else{i=e;j=g+-48|0;k=g}a[(c[(ah(h,i,f)|0)+16>>2]|0)+112>>0]=m;n=(c[g+16>>2]|0)+168|0;b[n>>1]=(b[n>>1]|0)+-1<<16>>16;h=i;l=l+1|0;g=c[c[(c[(c[((c[k>>2]&3|0)==2?g:j)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}}do if((j-l|0)==1){g=Sg(d,e)|0;if(g|0?hj(f,g)|0:0){c[(c[i>>2]|0)+172>>2]=g;m=c[g+16>>2]|0;a[m+112>>0]=h;m=m+168|0;b[m>>1]=(b[m>>1]|0)+1<<16>>16;if(a[(c[n>>2]|0)+156>>0]|0)break;if(a[(c[o>>2]|0)+156>>0]|0)break;Yg(f);break}c[(c[i>>2]|0)+172>>2]=0;g=ah(d,e,f)|0;a[(c[g+16>>2]|0)+112>>0]=h}while(0);l=c[(c[o>>2]|0)+232>>2]|0;if((l-(c[(c[n>>2]|0)+232>>2]|0)|0)>1){if((c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)!=(d|0)){c[(c[i>>2]|0)+172>>2]=0;l=ah(d,c[((c[g>>2]&3|0)==2?g:g+-48|0)+40>>2]|0,f)|0;c[(c[i>>2]|0)+172>>2]=l;Xg(g);g=l;l=c[(c[o>>2]|0)+232>>2]|0}while(1){i=c[g>>2]&3;j=c[((i|0)==2?g:g+-48|0)+40>>2]|0;k=c[j+16>>2]|0;if((c[k+232>>2]|0)==(l|0))break;g=c[c[k+180>>2]>>2]|0}if((j|0)!=(e|0)){a[(c[(ah(c[((i|0)==3?g:g+48|0)+40>>2]|0,e,f)|0)+16>>2]|0)+112>>0]=h;Xg(g)}}}while(0);return}function Qk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=b+16|0;b=c[d>>2]|0;e=c[b+232>>2]|0;Rk(a,e,c[b+236>>2]|0,2);b=fh(a)|0;d=c[d>>2]|0;f=c[b+16>>2]|0;h[f+88>>3]=+h[d+88>>3];h[f+96>>3]=+h[d+96>>3];c[f+232>>2]=c[d+232>>2];d=(c[d+236>>2]|0)+1|0;c[f+236>>2]=d;c[(c[(c[(c[a+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return b|0}function Rk(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=a+16|0;f=c[(c[h>>2]|0)+196>>2]|0;i=c[f+(b<<6)+4>>2]|0;a:do if((e|0)<1){d=d-e|0;while(1){g=d+1|0;a=c[f+(b<<6)>>2]|0;if((g|0)>=(a|0))break;a=c[i+(g<<2)>>2]|0;f=d+e|0;c[(c[a+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=a;d=g;f=c[(c[h>>2]|0)+196>>2]|0}g=e+-1|0;d=g+a|0;while(1){if((d|0)>=(a|0))break a;c[i+(d<<2)>>2]=0;f=c[(c[h>>2]|0)+196>>2]|0;d=d+1|0;a=c[f+(b<<6)>>2]|0}}else{g=e+-1|0;a=c[f+(b<<6)>>2]|0;while(1){a=a+-1|0;if((a|0)<=(d|0))break;j=c[i+(a<<2)>>2]|0;f=g+a|0;c[(c[j+16>>2]|0)+236>>2]=f;c[i+(f<<2)>>2]=j}f=e+d|0;a=d;while(1){a=a+1|0;if((a|0)>=(f|0))break;c[i+(a<<2)>>2]=0}a=c[(c[h>>2]|0)+196>>2]|0;f=a;a=c[a+(b<<6)>>2]|0}while(0);c[f+(b<<6)>>2]=g+a;return}function Sk(a){a=a|0;var b=0;Fk(a);b=c[a+16>>2]|0;c[b+220>>2]=1;c[c[b+216>>2]>>2]=c[b+192>>2];si(a);Zh(a,0);Tk(a);Mk(a);Uk(a);return}function Tk(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;m=Vf(d)|0;n=d+16|0;f=c[n>>2]|0;l=b[f+236>>1]|0;o=m+16|0;e=l<<16>>16;if(l<<16>>16>0)a[(c[(c[o>>2]|0)+196>>2]|0)+(e+-1<<6)+49>>0]=0;l=e;while(1){if((l|0)>(b[f+238>>1]|0))break;k=c[(c[(c[(c[f+268>>2]|0)+(l<<2)>>2]|0)+16>>2]|0)+236>>2]|0;Rk(m,l,k,c[(c[f+196>>2]|0)+(l<<6)>>2]|0);i=0;j=k;e=c[o>>2]|0;while(1){f=c[n>>2]|0;p=c[f+196>>2]|0;g=p+(l<<6)+4|0;e=c[e+196>>2]|0;h=c[e+(l<<6)+4>>2]|0;if((i|0)>=(c[p+(l<<6)>>2]|0))break;e=c[(c[g>>2]|0)+(i<<2)>>2]|0;c[h+(j<<2)>>2]=e;p=c[e+16>>2]|0;c[p+236>>2]=j;if((a[p+156>>0]|0)==1)c[e+24>>2]=so(m)|0;dh(d,e);bh(m,e);e=c[o>>2]|0;p=e+232|0;c[p>>2]=(c[p>>2]|0)+1;i=i+1|0;j=j+1|0}c[g>>2]=h+(k<<2);a[e+(l<<6)+49>>0]=0;l=l+1|0}e=c[o>>2]|0;if((l|0)<(b[e+238>>1]|0))a[(c[e+196>>2]|0)+(l<<6)+49>>0]=0;a[f+272>>0]=1;return}function Uk(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=a+16|0;d=c[i>>2]|0;h=b[d+236>>1]|0;while(1){if((h|0)>(b[d+238>>1]|0))break;f=c[(c[d+268>>2]|0)+(h<<2)>>2]|0;g=f+16|0;while(1){d=c[g>>2]|0;e=c[c[d+180>>2]>>2]|0;if(!e)break;Xg(e)}while(1){d=c[c[d+172>>2]>>2]|0;if(!d)break;Xg(d);d=c[g>>2]|0}dh(Vf(a)|0,f);c[(c[(c[i>>2]|0)+268>>2]|0)+(h<<2)>>2]=0;h=h+1|0;d=c[i>>2]|0}return}function Vk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o;f=co(b)|0;while(1){if(!f)break;e=f+16|0;d=c[e>>2]|0;if((a[d+159>>0]|0)==7){JA(f);d=c[e>>2]|0}c[d+212>>2]=0;f=eo(b,f)|0}m=b+16|0;k=1;while(1){d=c[m>>2]|0;if((k|0)>(c[d+180>>2]|0))break;h=c[(c[d+184>>2]|0)+(k<<2)>>2]|0;i=h+16|0;d=co(h)|0;a:while(1){if(!d)break;j=eo(h,d)|0;e=d+16|0;if(a[(c[e>>2]|0)+159>>0]|0){f=Dn(d)|0;g=Dn(b)|0;c[n>>2]=f;c[n+4>>2]=g;_l(0,80607,n)|0;qo(h,d)|0;d=j;continue}KA(d,c[(c[i>>2]|0)+264>>2]|0);g=c[e>>2]|0;c[g+212>>2]=h;a[g+159>>0]=7;g=Pm(h,d)|0;while(1){if(!g){d=j;continue a}d=c[(c[g+16>>2]|0)+172>>2]|0;b:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break b;c[f+212>>2]=h;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(h,g)|0}}k=k+1|0}l=o;return}function Wk(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=e+16|0;g=sw((b[(c[k>>2]|0)+238>>1]<<2)+8|0)|0;f=c[k>>2]|0;c[f+268>>2]=g;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>(b[f+238>>1]|0))break;f=fh(d)|0;c[(c[(c[k>>2]|0)+268>>2]|0)+(h<<2)>>2]=f;j=c[f+16>>2]|0;c[j+232>>2]=h;a[j+159>>0]=7;c[j+212>>2]=e;if(g|0){j=(c[(ah(g,f,0)|0)+16>>2]|0)+154|0;b[j>>1]=(b[j>>1]|0)*1e3}g=f;h=h+1|0;f=c[k>>2]|0}j=co(e)|0;while(1){f=c[k>>2]|0;i=f+268|0;if(!j)break;h=(c[(c[i>>2]|0)+(c[(c[j+16>>2]|0)+232>>2]<<2)>>2]|0)+16|0;f=(c[h>>2]|0)+216|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(e,j)|0;while(1){if(!f)break;i=c[f>>2]|0;d=f+-48|0;g=c[(c[(c[((i&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){if((g|0)>=(c[(c[(c[((i&3|0)==2?f:d)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=(c[(c[c[(c[h>>2]|0)+180>>2]>>2]|0)+16>>2]|0)+168|0;b[i>>1]=(b[i>>1]|0)+1<<16>>16;g=g+1|0;i=c[f>>2]|0}f=Rm(e,f)|0}j=eo(e,j)|0}d=b[f+238>>1]|0;f=b[f+236>>1]|0;while(1){if((f|0)>(d|0))break;g=(c[(c[(c[i>>2]|0)+(f<<2)>>2]|0)+16>>2]|0)+216|0;h=c[g>>2]|0;if((h|0)>1)c[g>>2]=h+-1;f=f+1|0}return}function Xk(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=(c[(c[e+16>>2]|0)+212>>2]|0)+16|0;e=c[k>>2]|0;j=f+1|0;if((a[e+273>>0]|0)!=(j|0)){i=b[e+236>>1]|0;while(1){h=b[e+238>>1]|0;if((i|0)>(h<<16>>16|0))break;mi(d,c[(c[e+268>>2]|0)+(i<<2)>>2]|0);i=i+1|0;e=c[k>>2]|0}i=b[e+236>>1]|0;while(1){if((i|0)>(h<<16>>16|0))break;ni(g,c[(c[e+268>>2]|0)+(i<<2)>>2]|0,f);d=c[k>>2]|0;i=i+1|0;h=b[d+238>>1]|0;e=d}a[e+273>>0]=j}return}function Yk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=co(b)|0;while(1){if(!h)break;c[(c[h+16>>2]|0)+212>>2]=0;g=Pm(b,h)|0;while(1){if(!g)break;d=c[(c[g+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;c[f+212>>2]=0;d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);g=Rm(b,g)|0}h=eo(b,h)|0}Zk(b);return}function Zk(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=b+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Zk(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}i=co(b)|0;while(1){if(!i)break;d=(c[i+16>>2]|0)+212|0;if(!(c[d>>2]|0))c[d>>2]=b;h=Pm(b,i)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+172>>2]|0;a:do if(d|0)do{e=c[d>>2]|0;g=d+-48|0;f=c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;if((a[f+156>>0]|0)!=1)break a;f=f+212|0;if(!(c[f>>2]|0)){c[f>>2]=b;e=c[d>>2]|0}d=c[c[(c[(c[((e&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}while((d|0)!=0);while(0);h=Rm(b,h)|0}i=eo(b,i)|0}return}function _k(a){a=a|0;var b=0,c=0,d=0;d=fB(a)|0;c=co(a)|0;while(1){if(!c)break;b=Pm(a,c)|0;while(1){if(!b)break;$k(b,d);b=Rm(a,b)|0}c=eo(a,c)|0}Kl(d)|0;return}function $k(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=l;l=l+320|0;L=R+296|0;K=R+280|0;G=R+136|0;z=R+120|0;q=R+104|0;m=R+88|0;f=R+80|0;I=R+16|0;C=R;n=R+264|0;o=R+248|0;p=R+232|0;s=R+216|0;E=R+200|0;F=R+184|0;B=R+168|0;M=R+152|0;i=al(Im(a,80661)|0,b)|0;u=al(Im(a,80667)|0,b)|0;v=(u|0)!=0;h=(i|0)!=0;do if(h|v?(Q=a+16|0,e=c[(c[Q>>2]|0)+8>>2]|0,e|0):0){A=a+48|0;b=c[a>>2]&3;g=c[((b|0)==3?a:A)+40>>2]|0;if((c[e+4>>2]|0)>1){P=Dn(g)|0;Q=Dn(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)|0;c[f>>2]=P;c[f+4>>2]=Q;_l(0,80673,f)|0;break}P=c[e>>2]|0;k=c[P+4>>2]|0;y=a+-48|0;t=c[((b|0)==2?a:y)+40>>2]|0;N=tw(48)|0;w=P+12|0;c[N+12>>2]=c[w>>2];D=P+8|0;c[N+8>>2]=c[D>>2];H=P+16|0;j=P+32|0;k=k+-1|0;x=N+32|0;r=g+16|0;t=t+16|0;do if(h){g=(c[i+16>>2]|0)+16|0;i=(c[t>>2]|0)+16|0;c[L>>2]=c[i>>2];c[L+4>>2]=c[i+4>>2];c[L+8>>2]=c[i+8>>2];c[L+12>>2]=c[i+12>>2];if(!(bl(L,g)|0)){s=Dn(c[((c[a>>2]&3|0)==3?a:A)+40>>2]|0)|0;J=Dn(c[((c[a>>2]&3|0)==2?a:y)+40>>2]|0)|0;O=Im(a,80661)|0;c[m>>2]=s;c[m+4>>2]=J;c[m+8>>2]=O;_l(0,80714,m)|0;O=25;break}b=c[P>>2]|0;c[L>>2]=c[b>>2];c[L+4>>2]=c[b+4>>2];c[L+8>>2]=c[b+8>>2];c[L+12>>2]=c[b+12>>2];if(!(bl(L,g)|0))b=0;else{J=(c[r>>2]|0)+16|0;c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];if(bl(L,g)|0){s=Dn(c[((c[a>>2]&3|0)==3?a:A)+40>>2]|0)|0;J=Dn(c[((c[a>>2]&3|0)==2?a:y)+40>>2]|0)|0;O=Im(a,80661)|0;c[q>>2]=s;c[q+4>>2]=J;c[q+8>>2]=O;_l(0,80757,q)|0;O=25;break}if(!(c[D>>2]|0))va(80799,80810,369,80821);c[K>>2]=c[b>>2];c[K+4>>2]=c[b+4>>2];c[K+8>>2]=c[b+8>>2];c[K+12>>2]=c[b+12>>2];c[L>>2]=c[H>>2];c[L+4>>2]=c[H+4>>2];c[L+8>>2]=c[H+8>>2];c[L+12>>2]=c[H+12>>2];cl(C,K,L,g);J=(c[P>>2]|0)+48|0;c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];J=(c[P>>2]|0)+16|0;c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[H>>2];c[L+4>>2]=c[H+4>>2];c[L+8>>2]=c[H+8>>2];c[L+12>>2]=c[H+12>>2];dl(n,K,L);c[J>>2]=c[n>>2];c[J+4>>2]=c[n+4>>2];c[J+8>>2]=c[n+8>>2];c[J+12>>2]=c[n+12>>2];J=c[P>>2]|0;b=J+16|0;c[K>>2]=c[b>>2];c[K+4>>2]=c[b+4>>2];c[K+8>>2]=c[b+8>>2];c[K+12>>2]=c[b+12>>2];c[L>>2]=c[H>>2];c[L+4>>2]=c[H+4>>2];c[L+8>>2]=c[H+8>>2];c[L+12>>2]=c[H+12>>2];dl(o,K,L);c[J>>2]=c[o>>2];c[J+4>>2]=c[o+4>>2];c[J+8>>2]=c[o+8>>2];c[J+12>>2]=c[o+12>>2];J=c[P>>2]|0;b=J+32|0;J=J+16|0;c[K>>2]=c[J>>2];c[K+4>>2]=c[J+4>>2];c[K+8>>2]=c[J+8>>2];c[K+12>>2]=c[J+12>>2];c[L>>2]=c[C>>2];c[L+4>>2]=c[C+4>>2];c[L+8>>2]=c[C+8>>2];c[L+12>>2]=c[C+12>>2];dl(p,K,L);c[b>>2]=c[p>>2];c[b+4>>2]=c[p+4>>2];c[b+8>>2]=c[p+8>>2];c[b+12>>2]=c[p+12>>2];b=c[w>>2]|0;if(!b){J=3;break}J=(Kt(a,c[P>>2]|0,0,0,N,b)|0)+3|0;break}while(1){if((b|0)>=(k|0))break;if(el((c[P>>2]|0)+(b<<4)|0,g)|0)break;b=b+3|0}e=c[w>>2]|0;f=(e|0)!=0;if((b|0)==(k|0))if(f){J=(c[P>>2]|0)+(k<<4)|0;c[K>>2]=c[j>>2];c[K+4>>2]=c[j+4>>2];c[K+8>>2]=c[j+8>>2];c[K+12>>2]=c[j+12>>2];c[L>>2]=c[J>>2];c[L+4>>2]=c[J+4>>2];c[L+8>>2]=c[J+8>>2];c[L+12>>2]=c[J+12>>2];cl(s,K,L,g);c[x>>2]=c[s>>2];c[x+4>>2]=c[s+4>>2];c[x+8>>2]=c[s+8>>2];c[x+12>>2]=c[s+12>>2];J=k;break}else va(80838,80810,387,80821);else{if(f)b=Kt(a,c[P>>2]|0,0,b,N,e)|0;J=b+3|0;break}}else O=25;while(0);if((O|0)==25)if(!(c[w>>2]|0))J=k;else{c[x>>2]=c[j>>2];c[x+4>>2]=c[j+4>>2];c[x+8>>2]=c[j+8>>2];c[x+12>>2]=c[j+12>>2];J=k}j=N+16|0;do if(v){i=(c[u+16>>2]|0)+16|0;v=(c[r>>2]|0)+16|0;c[L>>2]=c[v>>2];c[L+4>>2]=c[v+4>>2];c[L+8>>2]=c[v+8>>2];c[L+12>>2]=c[v+12>>2];if(!(bl(L,i)|0)){L=Dn(c[((c[a>>2]&3|0)==3?a:A)+40>>2]|0)|0;M=Dn(c[((c[a>>2]&3|0)==2?a:y)+40>>2]|0)|0;O=Im(a,80667)|0;c[z>>2]=L;c[z+4>>2]=M;c[z+8>>2]=O;_l(0,80849,z)|0;O=50;break}b=(c[P>>2]|0)+(J<<4)|0;c[L>>2]=c[b>>2];c[L+4>>2]=c[b+4>>2];c[L+8>>2]=c[b+8>>2];c[L+12>>2]=c[b+12>>2];h=J+-3|0;if(bl(L,i)|0){M=(c[t>>2]|0)+16|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];if(bl(L,i)|0){L=Dn(c[((c[a>>2]&3|0)==3?a:A)+40>>2]|0)|0;M=Dn(c[((c[a>>2]&3|0)==2?a:y)+40>>2]|0)|0;O=Im(a,80667)|0;c[G>>2]=L;c[G+4>>2]=M;c[G+8>>2]=O;_l(0,80892,G)|0;O=50;break}if(!(c[w>>2]|0))va(80838,80810,429,80821);c[K>>2]=c[b>>2];c[K+4>>2]=c[b+4>>2];c[K+8>>2]=c[b+8>>2];c[K+12>>2]=c[b+12>>2];c[L>>2]=c[x>>2];c[L+4>>2]=c[x+4>>2];c[L+8>>2]=c[x+8>>2];c[L+12>>2]=c[x+12>>2];cl(C,K,L,i);M=(c[P>>2]|0)+(h<<4)|0;c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];M=J+-1|0;d=(c[P>>2]|0)+(M<<4)|0;c[K>>2]=c[C>>2];c[K+4>>2]=c[C+4>>2];c[K+8>>2]=c[C+8>>2];c[K+12>>2]=c[C+12>>2];c[L>>2]=c[x>>2];c[L+4>>2]=c[x+4>>2];c[L+8>>2]=c[x+8>>2];c[L+12>>2]=c[x+12>>2];dl(E,K,L);c[d>>2]=c[E>>2];c[d+4>>2]=c[E+4>>2];c[d+8>>2]=c[E+8>>2];c[d+12>>2]=c[E+12>>2];d=c[P>>2]|0;I=d+(J<<4)|0;d=d+(M<<4)|0;c[K>>2]=c[d>>2];c[K+4>>2]=c[d+4>>2];c[K+8>>2]=c[d+8>>2];c[K+12>>2]=c[d+12>>2];c[L>>2]=c[x>>2];c[L+4>>2]=c[x+4>>2];c[L+8>>2]=c[x+8>>2];c[L+12>>2]=c[x+12>>2];dl(F,K,L);c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];I=c[P>>2]|0;d=I+(J+-2<<4)|0;M=I+(M<<4)|0;c[K>>2]=c[M>>2];c[K+4>>2]=c[M+4>>2];c[K+8>>2]=c[M+8>>2];c[K+12>>2]=c[M+12>>2];c[L>>2]=c[C>>2];c[L+4>>2]=c[C+4>>2];c[L+8>>2]=c[C+8>>2];c[L+12>>2]=c[C+12>>2];dl(B,K,L);c[d>>2]=c[B>>2];c[d+4>>2]=c[B+4>>2];c[d+8>>2]=c[B+8>>2];c[d+12>>2]=c[B+12>>2];d=c[D>>2]|0;if(!d){d=h;break}d=Mt(a,c[P>>2]|0,h,h,N,d)|0;break}f=J;while(1){g=f+-3|0;if((f|0)>0)b=0;else break;while(1){if((b|0)==4)break;G=I+(b<<4)|0;F=(c[P>>2]|0)+(f-b<<4)|0;c[G>>2]=c[F>>2];c[G+4>>2]=c[F+4>>2];c[G+8>>2]=c[F+8>>2];c[G+12>>2]=c[F+12>>2];b=b+1|0}if(!(el(I,i)|0))f=g;else{b=0;O=42;break}}a:do if((O|0)==42)while(1){O=0;if((b|0)==4)break a;O=(c[P>>2]|0)+(f-b<<4)|0;G=I+(b<<4)|0;c[O>>2]=c[G>>2];c[O+4>>2]=c[G+4>>2];c[O+8>>2]=c[G+8>>2];c[O+12>>2]=c[G+12>>2];b=b+1|0;O=42}while(0);b=c[D>>2]|0;e=(b|0)!=0;if(f|0){if(!e){d=g;break}d=Mt(a,c[P>>2]|0,g,h,N,b)|0;break}if(e){d=c[P>>2]|0;c[K>>2]=c[H>>2];c[K+4>>2]=c[H+4>>2];c[K+8>>2]=c[H+8>>2];c[K+12>>2]=c[H+12>>2];c[L>>2]=c[d>>2];c[L+4>>2]=c[d+4>>2];c[L+8>>2]=c[d+8>>2];c[L+12>>2]=c[d+12>>2];cl(M,K,L,i);c[j>>2]=c[M>>2];c[j+4>>2]=c[M+4>>2];c[j+8>>2]=c[M+8>>2];c[j+12>>2]=c[M+12>>2];d=0;break}else va(80799,80810,452,80821)}else O=50;while(0);if((O|0)==50)if(!(c[D>>2]|0))d=0;else{c[j>>2]=c[H>>2];c[j+4>>2]=c[H+4>>2];c[j+8>>2]=c[H+8>>2];c[j+12>>2]=c[H+12>>2];d=0}b=J-d+1|0;f=N+4|0;c[f>>2]=b;c[N>>2]=tw(b<<4)|0;b=0;while(1){e=c[P>>2]|0;if((b|0)>=(c[f>>2]|0))break;O=(c[N>>2]|0)+(b<<4)|0;a=e+(d<<4)|0;c[O>>2]=c[a>>2];c[O+4>>2]=c[a+4>>2];c[O+8>>2]=c[a+8>>2];c[O+12>>2]=c[a+12>>2];d=d+1|0;b=b+1|0}xN(e);xN(P);c[c[(c[Q>>2]|0)+8>>2]>>2]=N}while(0);l=R;return}function al(b,d){b=b|0;d=d|0;var e=0,f=0;f=l;l=l+16|0;e=f;if((b|0)!=0?(a[b>>0]|0)!=0:0){d=gB(d,b)|0;if(!d){c[e>>2]=b;_l(0,81012,e)|0;d=0}}else d=0;l=f;return d|0}function bl(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3];if((+h[b>>3]<=d?d<=+h[b+16>>3]:0)?(c=+h[a+8>>3],+h[b+8>>3]<=c):0)a=c<=+h[b+24>>3];else a=0;return a&1|0}function cl(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0,z=0,A=0.0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+464|0;r=F+48|0;E=F+32|0;x=F+16|0;y=F;z=F+364|0;B=F+264|0;C=F+164|0;D=F+64|0;u=+h[b>>3];v=+h[b+8>>3];k=+h[d>>3];w=+h[d+8>>3];c[x>>2]=c[e>>2];c[x+4>>2]=c[e+4>>2];c[x+8>>2]=c[e+8>>2];c[x+12>>2]=c[e+12>>2];j=e+16|0;c[y>>2]=c[j>>2];c[y+4>>2]=c[j+4>>2];c[y+8>>2]=c[j+8>>2];c[y+12>>2]=c[j+12>>2];m=+h[x>>3];n=v-w;o=u-k;j=a+8|0;e=y+8|0;f=+h[x+8>>3];if(k<m?(g=v+ +(~~(n*(m-u)/o)|0),!(g>=f?!(g<=+h[e>>3]):1)):0){s=g;t=m}else i=3;do if((i|0)==3){g=+h[y>>3];if(k>g?(p=v+ +(~~(n*(g-u)/o)|0),!(p>=f?!(p<=+h[e>>3]):1)):0){s=p;t=g;break}if(w<f?(q=u+ +(~~(o*(f-v)/n)|0),!(!(q>=m)|!(q<=g))):0){s=f;t=q;break}f=+h[e>>3];if(w>f?(A=u+ +(~~(o*(f-v)/n)|0),!(!(A>=m)|!(A<=g))):0){s=f;t=A;break};c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];z=jl(r,z)|0;c[r>>2]=c[d>>2];c[r+4>>2]=c[d+4>>2];c[r+8>>2]=c[d+8>>2];c[r+12>>2]=c[d+12>>2];B=jl(r,B)|0;c[r>>2]=c[x>>2];c[r+4>>2]=c[x+4>>2];c[r+8>>2]=c[x+8>>2];c[r+12>>2]=c[x+12>>2];C=jl(r,C)|0;c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];D=jl(r,D)|0;c[E>>2]=z;c[E+4>>2]=B;c[E+8>>2]=C;c[E+12>>2]=D;_l(1,80934,E)|0;va(123221,80810,78,80986)}while(0);h[a>>3]=t;h[j>>3]=s;l=F;return}function dl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[b+8>>3]+ +h[c+8>>3])*.5;h[a>>3]=(+h[b>>3]+ +h[c>>3])*.5;h[a+8>>3]=d;return}function el(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0;m=l;l=l+80|0;j=m+16|0;k=m;e=0;while(1){if((e|0)==4)break;i=j+(e<<4)|0;g=a+(e<<4)|0;c[i>>2]=c[g>>2];c[i+4>>2]=c[g+4>>2];c[i+8>>2]=c[g+8>>2];c[i+12>>2]=c[g+12>>2];e=e+1|0}e=b+8|0;i=b+24|0;d=+fl(a,0.0,1.0,+h[b>>3],+h[e>>3],+h[i>>3]);if(d>=0.0&d<2.0)MA(k,j,3,d,a,0);else d=2.0;g=b+16|0;f=+fl(a,0.0,d>1.0?1.0:d,+h[g>>3],+h[e>>3],+h[i>>3]);if(f>=0.0&f<d){MA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[e>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){MA(k,j,3,f,a,0);d=f}f=+gl(a,0.0,d>1.0?1.0:d,+h[i>>3],+h[b>>3],+h[g>>3]);if(f>=0.0&f<d){MA(k,j,3,f,a,0);d=f}l=m;return d<2.0|0}function fl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(il(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+F(+(+h[a+48>>3]-d))<=.005){b=+h[a+56>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}MA(i,a,3,.5,j,k);g=(b+c)*.5;b=+fl(j,b,g,d,e,f);if(!(b>=0.0))b=+fl(k,g,c,d,e,f)}while(0);l=m;return +b}function gl(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0.0,i=0,j=0,k=0,m=0;m=l;l=l+144|0;j=m+80|0;k=m+16|0;i=m;a:do if(!(b==c)){switch(hl(a,d)|0){case 0:{b=-1.0;break a}case 1:{if(+F(+(+h[a+56>>3]-d))<=.005){b=+h[a+48>>3];b=!(b>=e)|!(b<=f)?-1.0:c;break a}break}default:{}}MA(i,a,3,.5,j,k);g=(b+c)*.5;b=+gl(j,b,g,d,e,f);if(!(b>=0.0))b=+gl(k,g,c,d,e,f)}while(0);l=m;return +b}function hl(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a+8>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)+8>>3];i=f<b?-1:f>b&1;g=((d|0)!=0&(i|0)!=(d|0)&1)+e|0;c=c+1|0;d=i;e=g}return e|0}function il(a,b){a=a|0;b=+b;var c=0,d=0,e=0,f=0.0,g=0,i=0;f=+h[a>>3];e=f<b?-1:f>b&1;c=1;d=e;e=(e|0)==0&1;while(1){if((c|0)==4)break;f=+h[a+(c<<4)>>3];i=f<b?-1:f>b&1;g=((d|0)!=0&(i|0)!=(d|0)&1)+e|0;c=c+1|0;d=i;e=g}return e|0}function jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0.0;c=l;l=l+16|0;d=c;e=+h[a+8>>3];h[d>>3]=+h[a>>3];h[d+8>>3]=e;yJ(b,81e3,d)|0;l=c;return b|0}function kl(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;s=v;u=4;t=wN(40)|0;c[t>>2]=0;r=a+16|0;e=c[r>>2]|0;a:do if(((b[e+238>>1]|0)-(b[e+236>>1]|0)|0)>=2){m=1;d=e;e=c[e+196>>2]|0;b:while(1){n=m+1|0;if(!(c[e+(n<<6)>>2]|0)){q=15;break}else k=0;while(1){h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0)){m=n;continue b}i=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;g=ha(18,i|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=LN(c[d>>2]|0,t|0,u|0)|0;if(!f)xa(d|0,p|0);D=p}else f=-1;if((f|0)==1){d=D;break b}j=k+1|0;if(g<<24>>24){g=j;d=h;while(1){if((g|0)>=(d|0))break;o=0;d=na(17,i|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,t|0,u|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){d=D;break b}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;g=g+1|0;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ba(6,a|0,m|0,k|0,g+-1|0,1);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=LN(c[d>>2]|0,t|0,u|0)|0;if(!e)xa(d|0,p|0);D=p}else e=-1;if((e|0)==1){d=D;break b}}}e=c[r>>2]|0;k=j;d=e;e=c[e+196>>2]|0}}c:do if((q|0)==15){while(1){if((m|0)>0)k=0;else break;while(1){e=c[d+196>>2]|0;h=c[e+(m<<6)>>2]|0;if((k|0)>=(h|0))break;i=c[(c[e+(m<<6)+4>>2]|0)+(k<<2)>>2]|0;o=0;g=ha(19,i|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){f=LN(c[d>>2]|0,t|0,u|0)|0;if(!f)xa(d|0,p|0);D=p}else f=-1;if((f|0)==1){d=D;break c}j=k+1|0;if(g<<24>>24){g=j;d=h;while(1){if((g|0)>=(d|0))break;o=0;d=na(18,i|0,c[(c[e+(m<<6)+4>>2]|0)+(g<<2)>>2]|0)|0;e=o;o=0;if((e|0)!=0&(p|0)!=0){f=LN(c[e>>2]|0,t|0,u|0)|0;if(!f)xa(e|0,p|0);D=p}else f=-1;if((f|0)==1){d=D;break c}if(!(d<<24>>24))break;d=c[(c[r>>2]|0)+196>>2]|0;g=g+1|0;e=d;d=c[d+(m<<6)>>2]|0}if((g-k|0)>1){o=0;ba(6,a|0,m|0,k|0,g+-1|0,0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=LN(c[d>>2]|0,t|0,u|0)|0;if(!e)xa(d|0,p|0);D=p}else e=-1;if((e|0)==1){d=D;break c}}}k=j;d=c[r>>2]|0}m=m+-1|0;q=15}t=JN(167784,1,t|0,u|0)|0;u=D;o=0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=LN(c[d>>2]|0,t|0,u|0)|0;if(!e)xa(d|0,p|0);D=p}else e=-1;if((e|0)==1)d=D;else d=0}while(0);d:while(1){if(d){o=0;$(11,3,81040,s|0)|0;d=o;o=0;if((d|0)!=0&(p|0)!=0){e=LN(c[d>>2]|0,t|0,u|0)|0;if(!e)xa(d|0,p|0);D=p}else e=-1;if((e|0)==1){d=D;continue}else break}else f=1;while(1){d=c[r>>2]|0;if((f|0)>(c[d+180>>2]|0))break a;o=0;da(85,c[(c[d+184>>2]|0)+(f<<2)>>2]|0);d=o;o=0;if((d|0)!=0&(p|0)!=0){e=LN(c[d>>2]|0,t|0,u|0)|0;if(!e)xa(d|0,p|0);D=p}else e=-1;if((e|0)==1){d=D;continue d}f=f+1|0}}}while(0);xN(t|0);l=v;return}function ll(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+176>>2]|0)==1:0)?(c[b+184>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function ml(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+172>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+172>>2]>>2]|0;if(((ll(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+16|0;f=g;a=(c[e+16>>2]|0)+16|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function nl(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+16|0;q=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(d<<2)>>2]|0;p=d+1|0;m=(f|0)==1;n=q+16|0;l=p;while(1){if((l|0)>(e|0)){g=e;s=p;break}o=c[(c[(c[(c[t>>2]|0)+196>>2]|0)+(b<<6)+4>>2]|0)+(l<<2)>>2]|0;k=o+16|0;a:do if(m)while(1){d=c[k>>2]|0;j=c[c[d+180>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+180>>2]|0;i=j+-48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=8;break}if((c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==8){r=0;d=ah(q,c[((c[j>>2]&3|0)==2?j:i)+40>>2]|0,j)|0}while(1){f=c[c[(c[k>>2]|0)+172>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}else while(1){d=c[k>>2]|0;j=c[c[d+172>>2]>>2]|0;if(!j)break a;h=c[(c[n>>2]|0)+172>>2]|0;i=j+48|0;f=0;while(1){d=c[h+(f<<2)>>2]|0;if(!d){r=17;break}if((c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)==(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0))break;else f=f+1|0}if((r|0)==17){r=0;d=ah(c[((c[j>>2]&3|0)==3?j:i)+40>>2]|0,q,j)|0}while(1){f=c[c[(c[k>>2]|0)+180>>2]>>2]|0;if(!f)break;ih(f,d);Xg(f)}Xg(j)}while(0);if((c[d+176>>2]|0)!=(0-(c[d+184>>2]|0)|0)){r=23;break}dh(a,o);l=l+1|0}if((r|0)==23)va(81176,81220,115,81227);while(1){g=g+1|0;f=c[(c[t>>2]|0)+196>>2]|0;d=f+(b<<6)|0;f=c[f+(b<<6)+4>>2]|0;h=f+(s<<2)|0;if((g|0)>=(c[d>>2]|0))break;r=c[f+(g<<2)>>2]|0;c[h>>2]=r;c[(c[r+16>>2]|0)+236>>2]=s;s=s+1|0}c[d>>2]=s;c[h>>2]=0;return}function ol(b){b=b|0;b=c[b+16>>2]|0;if(((a[b+156>>0]|0)==1?(c[b+184>>2]|0)==1:0)?(c[b+176>>2]|0)==1:0)b=(c[b+104>>2]|0)==0&1;else b=0;return b|0}function pl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=l;l=l+80|0;h=i+40|0;g=i;e=c[c[(c[a+16>>2]|0)+180>>2]>>2]|0;a=c[c[(c[b+16>>2]|0)+180>>2]>>2]|0;if(((ol(b)|0)<<24>>24!=0?(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)==(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0):0)?(sl(e,a)|0)<<24>>24!=0:0){d=(c[a+16>>2]|0)+56|0;f=g;a=(c[e+16>>2]|0)+56|0;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));f=h;a=d;b=f+40|0;do{c[f>>2]=c[a>>2];f=f+4|0;a=a+4|0}while((f|0)<(b|0));a=(Wf(g,h)|0)==0&1}else a=0;l=i;return a|0}function ql(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+32|0;p=r+16|0;o=r;m=d+16|0;f=c[m>>2]|0;e=b[f+236>>1]|0;while(1){if((e|0)>(b[f+238>>1]|0))break;c[(c[f+268>>2]|0)+(e<<2)>>2]=0;e=e+1|0;f=c[m>>2]|0}ij(d);j=co(d)|0;while(1){if(!j)break;rl(d,j);i=Pm(d,j)|0;while(1){if(!i)break;else f=i;while(1){e=c[(c[f+16>>2]|0)+172>>2]|0;if(!e)break;else f=e}h=i+-48|0;while(1){e=f+-48|0;g=c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0;if((c[(c[g+16>>2]|0)+232>>2]|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:h)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;rl(d,g);f=c[c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0}i=Rm(d,i)|0}j=eo(d,j)|0}e=c[m>>2]|0;i=b[e+236>>1]|0;while(1){if((i|0)>(b[e+238>>1]|0)){k=1;n=e;break}e=c[(c[e+268>>2]|0)+(i<<2)>>2]|0;j=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;f=e+16|0;if((c[j+(c[(c[f>>2]|0)+236>>2]<<2)>>2]|0)!=(e|0)){q=17;break}h=c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(i<<6)+4>>2]|0;e=c[m>>2]|0;f=c[e+196>>2]|0;c[f+(i<<6)+4>>2]=h+(c[(c[(c[(c[e+268>>2]|0)+(i<<2)>>2]|0)+16>>2]|0)+236>>2]<<2);e=-1;h=0;a:while(1){if((h|0)>=(c[f+(i<<6)>>2]|0))break;f=c[(c[f+(i<<6)+4>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;b:do if(!(a[g+156>>0]|0))if(!(Bo(d,f)|0))break a;else e=h;else{f=c[c[g+172>>2]>>2]|0;while(1){if(!f)break b;g=c[(c[f+16>>2]|0)+116>>2]|0;if(!g)break;else f=g}if(Bo(d,c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)|0){j=(Bo(d,c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)|0)==0;e=j?e:h}}while(0);h=h+1|0;f=c[(c[m>>2]|0)+196>>2]|0}if((e|0)==-1){c[p>>2]=Dn(d)|0;c[p+4>>2]=i;_l(0,81140,p)|0}j=c[m>>2]|0;c[(c[j+196>>2]|0)+(i<<6)>>2]=e+1;i=i+1|0;e=j}if((q|0)==17){p=Dn(e)|0;q=c[(c[f>>2]|0)+236>>2]|0;c[o>>2]=p;c[o+4>>2]=q;c[o+8>>2]=i;_l(1,81082,o)|0;xa(167784,1)}while(1){if((k|0)>(c[n+180>>2]|0))break;ql(c[(c[n+184>>2]|0)+(k<<2)>>2]|0);k=k+1|0;n=c[m>>2]|0}l=r;return}function rl(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[b+16>>2]|0;a=(c[(c[a+16>>2]|0)+268>>2]|0)+(c[d+232>>2]<<2)|0;e=c[a>>2]|0;if(!((e|0)!=0?(c[(c[e+16>>2]|0)+236>>2]|0)<=(c[d+236>>2]|0):0))c[a>>2]=b;return}function sl(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=c[b+16>>2]|0;if(!(a[f+112>>0]|0))break;b=c[f+116>>2]|0}while(1){e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;d=c[e+116>>2]|0}if((a[f+153>>0]|0)==0?(a[e+153>>0]|0)==0:0){f=c[d>>2]&3;e=c[b>>2]&3;b=(S((c[(c[(c[((e|0)==3?b:b+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((e|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0,(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)|0)>0&1}else b=0;return b|0}function tl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+544|0;j=k+528|0;ul(j,k+512|0,k);e=(a[174030]|0)+1<<24>>24;a[174030]=e<<24>>24==0?1:e;e=c[b+16>>2]|0;c[e+220>>2]=0;c[e+232>>2]=0;e=(d|0)>0;d=co(b)|0;while(1){if(!d)break;if(e?(h=c[d+16>>2]|0,i=c[h+212>>2]|0,(i|0)!=0):0){g=c[(c[(c[i+16>>2]|0)+268>>2]|0)+(c[h+232>>2]<<2)>>2]|0;f=7}else f=6;if((f|0)==6?(f=0,(d|0)==(HA(d)|0)):0){g=d;f=7}if((f|0)==7?(0,(a[(c[g+16>>2]|0)+157>>0]|0)!=(a[174030]|0)):0){vl(b);wl(j,b,g);xl(b)}d=eo(b,d)|0}yl(j);l=k;return}function ul(a,b,d){a=a|0;b=b|0;d=d|0;c[b>>2]=d;c[b+4>>2]=d+512;c[b+12>>2]=0;c[b+8>>2]=0;c[a>>2]=b;c[a+4>>2]=b;c[a+8>>2]=d;return}function vl(a){a=a|0;c[(c[a+16>>2]|0)+192>>2]=0;c[41985]=0;return}function wl(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;zl(b,e);k=p+8|0;m=p+16|0;n=p+24|0;a:while(1){o=Al(b)|0;if(!o)break;e=o+16|0;if((a[(c[e>>2]|0)+157>>0]|0)==(a[174030]|0))continue;Bl(d,o);h=c[e>>2]|0;g=h+180|0;j=c[g+4>>2]|0;i=p;c[i>>2]=c[g>>2];c[i+4>>2]=j;i=h+172|0;j=c[i+4>>2]|0;g=k;c[g>>2]=c[i>>2];c[g+4>>2]=j;g=h+188|0;j=c[g+4>>2]|0;i=m;c[i>>2]=c[g>>2];c[i+4>>2]=j;h=h+196|0;i=c[h+4>>2]|0;j=n;c[j>>2]=c[h>>2];c[j+4>>2]=i;j=3;while(1){if((j|0)<=-1)continue a;e=c[p+(j<<3)>>2]|0;b:do if(e|0){i=(c[p+(j<<3)+4>>2]|0)+-1|0;h=e+(i<<2)|0;while(1){if((i|0)<=-1)break b;f=c[h>>2]|0;g=c[f>>2]&3;e=c[((g|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(o|0))e=c[((g|0)==3?f:f+48|0)+40>>2]|0;if((a[(c[e+16>>2]|0)+157>>0]|0)!=(a[174030]|0)?(e|0)==(HA(e)|0):0)zl(b,e);h=h+-4|0;i=i+-1|0}}while(0);j=j+-1|0}}l=q;return}function xl(a){a=a|0;var b=0,d=0,e=0,f=0;d=a+16|0;a=c[d>>2]|0;f=a+220|0;e=c[f>>2]|0;b=e+1|0;c[f>>2]=b;a=c[a+216>>2]|0;b=b<<2;if(!a)a=tw(b)|0;else a=vw(a,b)|0;f=c[d>>2]|0;c[f+216>>2]=a;c[a+(e<<2)>>2]=c[f+192>>2];return}function yl(a){a=a|0;var b=0;a=c[(c[a>>2]|0)+12>>2]|0;while(1){if(!a)break;b=c[a+12>>2]|0;xN(c[a>>2]|0);xN(a);a=b}return}function zl(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k+8|0;g=k;j=b+8|0;f=c[j>>2]|0;i=b+4|0;b=c[i>>2]|0;if((f|0)==(c[b+4>>2]|0)){f=c[b+12>>2]|0;if(!f){f=sw(16)|0;if(!f)_l(1,83948,g)|0;c[f+8>>2]=c[i>>2];c[f+12>>2]=0;b=sw(4e6)|0;c[f>>2]=b;if(!b){_l(1,81240,h)|0;b=c[f>>2]|0}c[f+4>>2]=b+4e6;c[(c[i>>2]|0)+12>>2]=f}c[i>>2]=f;f=c[f>>2]|0;c[j>>2]=f}a[(c[e+16>>2]|0)+157>>0]=(d[174030]|0)+1;c[j>>2]=f+4;c[f>>2]=e;l=k;return}function Al(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+8|0;b=c[f>>2]|0;d=a+4|0;e=c[d>>2]|0;if((b|0)==(c[e>>2]|0))if((e|0)==(c[a>>2]|0))b=0;else{b=c[e+8>>2]|0;c[d>>2]=b;b=c[b+4>>2]|0;c[f>>2]=b;g=4}else g=4;if((g|0)==4){b=b+-4|0;c[f>>2]=b;b=c[b>>2]|0}return b|0}function Bl(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=c[b+16>>2]|0;g=f+232|0;c[g>>2]=(c[g>>2]|0)+1;g=c[d+16>>2]|0;a[g+157>>0]=a[174030]|0;b=c[41985]|0;e=g+168|0;if(!b){c[e>>2]=0;c[f+192>>2]=d}else{c[e>>2]=b;c[(c[b+16>>2]|0)+164>>2]=d}c[41985]=d;c[g+164>>2]=0;return}function Cl(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0;m=b+16|0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+188>>2]|0;a:do if(!e)f=0;else{f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e){f=0;break a}Dl(e);d=c[g>>2]|0;f=f+1|0;e=c[d+188>>2]|0}}while(0);while(1){if((f|0)>=(c[d+208>>2]|0))break;e=c[(c[d+204>>2]|0)+(f<<2)>>2]|0;l=c[e>>2]&3;if((c[(c[(c[((l|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)==(c[(c[(c[((l|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)){Dl(e);d=c[g>>2]|0}f=f+1|0}d=d+164|0}l=c[m>>2]|0;d=c[l+196>>2]|0;if(!((c[d+56>>2]|0)==0?(c[l+180>>2]|0)<=0:0))i=13;b:do if((i|0)==13){i=c[d+4>>2]|0;g=0;c:while(1){d=c[i+(g<<2)>>2]|0;if(!d)break b;e=c[(c[d+16>>2]|0)+196>>2]|0;d=0;while(1){f=c[e+(d<<2)>>2]|0;if(!f)break;l=c[f+16>>2]|0;if(c[l+96>>2]|0?(a[l+113>>0]|0)==0:0)break c;d=d+1|0}g=g+1|0}El(b)}while(0);ui(b);e=0;d=(c[m>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;l=d+16|0;d=c[l>>2]|0;f=c[d+188>>2]|0;d:do if(f){k=0;while(1){g=c[f+(k<<2)>>2]|0;if(!g){k=0;break}i=c[g+16>>2]|0;j=c[i+96>>2]|0;do if(j)if(!(a[i+113>>0]|0)){Fl(g);f=c[l>>2]|0;e=1;d=f;f=c[f+188>>2]|0;break}else{h[i+136>>3]=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?j+24|0:j+32|0)>>3];break}while(0);k=k+1|0}while(1){if((k|0)>=(c[d+208>>2]|0))break d;i=c[(c[d+204>>2]|0)+(k<<2)>>2]|0;j=c[i>>2]&3;g=c[((j|0)==3?i:i+48|0)+40>>2]|0;j=c[((j|0)==2?i:i+-48|0)+40>>2]|0;do if(!((g|0)==(j|0)?1:(c[(c[g+16>>2]|0)+232>>2]|0)!=(c[(c[j+16>>2]|0)+232>>2]|0))){f=i;do{j=c[f+16>>2]|0;f=c[j+172>>2]|0}while((f|0)!=0);f=a[j+113>>0]|0;g=c[i+16>>2]|0;a[g+113>>0]=f;g=c[g+96>>2]|0;if(g)if(!(f<<24>>24)){Fl(i);e=1;d=c[l>>2]|0;break}else{o=+h[((c[(c[m>>2]|0)+116>>2]&1|0)==0?g+24|0:g+32|0)>>3];j=j+136|0;n=+h[j>>3];h[j>>3]=o>n?o:n;break}}while(0);k=k+1|0}}while(0);d=d+164|0}if(e|0){nh(b);Bh(b)}return e|0}function Dl(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;d=c[b>>2]&3;i=c[((d|0)==3?b:b+48|0)+40>>2]|0;f=i+16|0;g=c[(c[f>>2]|0)+236>>2]|0;d=c[(c[(c[((d|0)==2?b:b+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;h=(g|0)<(d|0);e=h?d:g;i=c[(c[(Vf(i)|0)+16>>2]|0)+196>>2]|0;f=i+(c[(c[f>>2]|0)+232>>2]<<6)+4|0;d=h?g:d;a:while(1){d=d+1|0;if((d|0)>=(e|0))break;g=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;switch(a[g+156>>0]|0){case 0:break a;case 1:break;default:continue a}if(c[g+104>>2]|0)break}if((d|0)==(e|0))do{i=c[b+16>>2]|0;a[i+113>>0]=1;b=c[i+172>>2]|0}while((b|0)!=0);return}function El(a){a=a|0;var d=0,e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;if(b[a+236>>1]|0)va(81297,81280,190,81316);d=c[a+196>>2]|0;a=(b[a+238>>1]<<6)+192|0;if(!d)a=tw(a)|0;else a=vw(d,a)|0;e=a+64|0;a=c[g>>2]|0;c[a+196>>2]=e;a=b[a+238>>1]|0;while(1){d=e+(a<<6)|0;if((a|0)<=-1)break;a=a+-1|0;e=e+(a<<6)|0;f=d+64|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));e=c[(c[g>>2]|0)+196>>2]|0}c[e+(a<<6)+8>>2]=0;c[d>>2]=0;e=sw(8)|0;g=c[g>>2]|0;f=c[g+196>>2]|0;c[f+(a<<6)+12>>2]=e;c[f+(a<<6)+4>>2]=e;c[f+(a<<6)+56>>2]=0;h[f+(a<<6)+24>>3]=1.0;h[f+(a<<6)+16>>3]=1.0;h[f+(a<<6)+40>>3]=1.0;h[f+(a<<6)+32>>3]=1.0;g=g+236|0;b[g>>1]=(b[g>>1]|0)+-1<<16>>16;return}function Fl(b){b=b|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0;j=b+16|0;if(c[(c[j>>2]|0)+96>>2]|0){m=b+48|0;k=Vf(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)|0;d=c[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+232>>2]|0;l=Gl(k,b)|0;n=k+16|0;e=c[n>>2]|0;g=c[e+196>>2]|0;o=d+-1|0;i=c[c[g+(o<<6)+4>>2]>>2]|0;if(!i)f=+h[(c[(c[c[g+(d<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[g+(d<<6)+24>>3]+ +(c[e+252>>2]|0);else f=+h[(c[i+16>>2]|0)+24>>3]-+h[g+(o<<6)+16>>3];d=Hl(k,o,l)|0;k=c[(c[j>>2]|0)+96>>2]|0;q=+h[k+24>>3];p=+h[k+32>>3];j=(c[(c[n>>2]|0)+116>>2]&1|0)==0;r=j?p:q;g=d+16|0;e=c[g>>2]|0;h[e+80>>3]=r;l=~~(r*.5);p=(j?q:p)*.5;h[e+96>>3]=p;h[e+88>>3]=p;c[e+104>>2]=k;h[e+24>>3]=+(l+~~f|0);e=ah(d,c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0,b)|0;e=c[e+16>>2]|0;h[e+16>>3]=-+h[(c[g>>2]|0)+88>>3];h[e+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==3?b:m)+40>>2]|0)+16>>2]|0)+96>>3];a[e+112>>0]=4;e=b+-48|0;d=ah(d,c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0,b)|0;g=c[g>>2]|0;d=c[d+16>>2]|0;h[d+16>>3]=+h[g+96>>3];h[d+56>>3]=+h[(c[(c[((c[b>>2]&3|0)==2?b:e)+40>>2]|0)+16>>2]|0)+88>>3];a[d+112>>0]=4;d=c[(c[n>>2]|0)+196>>2]|0;e=d+(o<<6)+16|0;f=+(l|0);if(+h[e>>3]<f)h[e>>3]=f;d=d+(o<<6)+24|0;if(+h[d>>3]<f)h[d>>3]=f;c[g+112>>2]=b}return}function Gl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+32|0;j=n+8|0;f=n+4|0;g=n;d=c[b>>2]&3;e=c[((d|0)==3?b:b+48|0)+40>>2]|0;k=(c[(c[e+16>>2]|0)+232>>2]|0)+-1|0;a=c[(c[a+16>>2]|0)+196>>2]|0;h=c[a+(k<<6)+4>>2]|0;a=c[a+(k<<6)>>2]|0;k=j+8|0;c[k>>2]=-1;c[j>>2]=-1;m=j+12|0;c[m>>2]=a;i=j+4|0;c[i>>2]=a;Il(e,c[((d|0)==2?b:b+-48|0)+40>>2]|0,f,g);f=c[f>>2]|0;g=c[g>>2]|0;d=0;e=a;b=-1;while(1){if((d|0)>=(e|0))break;e=e+-1|0;Jl(c[h+(d<<2)>>2]|0,j,f,g);if((d|0)!=(e|0))Jl(c[h+(e<<2)>>2]|0,j,f,g);a=c[i>>2]|0;b=c[j>>2]|0;if((a-b|0)<2)break;else d=d+1|0}if((b|0)>(a|0))a=(c[m>>2]|0)+(c[k>>2]|0)|0;else a=a+b|0;l=n;return (a+1|0)/2|0|0}function Hl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=a+16|0;e=c[(c[g>>2]|0)+196>>2]|0;f=c[e+(b<<6)+4>>2]|0;e=(c[e+(b<<6)>>2]<<2)+8|0;if(!f)f=tw(e)|0;else f=vw(f,e)|0;e=c[(c[g>>2]|0)+196>>2]|0;c[e+(b<<6)+4>>2]=f;e=c[e+(b<<6)>>2]|0;while(1){if((e|0)<=(d|0))break;h=e+-1|0;i=c[f+(h<<2)>>2]|0;c[f+(e<<2)>>2]=i;i=(c[i+16>>2]|0)+236|0;c[i>>2]=(c[i>>2]|0)+1;e=h}h=fh(a)|0;i=f+(d<<2)|0;c[i>>2]=h;h=c[h+16>>2]|0;c[h+236>>2]=d;c[h+232>>2]=b;g=(c[(c[g>>2]|0)+196>>2]|0)+(b<<6)|0;h=(c[g>>2]|0)+1|0;c[g>>2]=h;c[f+(h<<2)>>2]=0;return c[i>>2]|0}function Il(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a=c[(c[a+16>>2]|0)+236>>2]|0;b=c[(c[b+16>>2]|0)+236>>2]|0;f=(a|0)>(b|0);c[d>>2]=f?b:a;c[e>>2]=f?a:b;return}function Jl(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;h=o+4|0;g=o;b=c[b+16>>2]|0;do if((a[b+156>>0]|0)==1){n=c[b+236>>2]|0;m=d+4|0;j=c[b+180>>2]|0;if(c[b+176>>2]|0){b=0;g=0;h=0;while(1){i=c[j+(h<<2)>>2]|0;if(!i)break;i=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;k=(i|0)>(e|0);b=k?((i|0)<(f|0)?b:1):b;g=k?g:1;h=h+1|0}if(g<<24>>24!=0&b<<24>>24==0){c[d>>2]=n+1;break}if(!(g<<24>>24==0&b<<24>>24!=0))break;c[m>>2]=n+-1;break}if((c[b+184>>2]|0)!=2)va(81260,81280,63,81287);k=c[j>>2]|0;j=c[j+4>>2]|0;Il(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0,h,g);j=c[g>>2]|0;k=d+8|0;if((j|0)<=(e|0)){c[d>>2]=n;c[k>>2]=n;break}i=c[h>>2]|0;h=d+12|0;if((i|0)>=(f|0)){c[m>>2]=n;c[h>>2]=n;break}b=(i|0)<(e|0);g=(j|0)>(f|0);if(!(g&b)){if(!(!b?!((j|0)<(f|0)&(i|0)==(e|0)):0))c[k>>2]=n;if(!g?!((j|0)==(f|0)&(i|0)>(e|0)):0)break;c[h>>2]=n}}while(0);l=o;return}function Kl(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;do if((a|0)!=0?(c[a+24>>2]|0)<=0:0){h=c[a+4>>2]|0;g=h+32|0;b=c[g>>2]|0;if(b){b=jb[b&31](a,2,0,h)|0;if((b|0)<0){b=-1;break}}else b=0;if(c[a+28>>2]|0)Wl(a,0)|0;e=(b|0)==0;f=a+12|0;if(e){Za[c[c[a+16>>2]>>2]&31](a,0,64)|0;if((Sl(a)|0)>0){b=-1;break}d=a+8|0;b=c[d>>2]|0;if((c[b+12>>2]|0)>0){jb[c[f>>2]&31](a,c[b+8>>2]|0,0,h)|0;b=c[d>>2]|0}jb[c[f>>2]&31](a,b,0,h)|0}b=c[a+20>>2]|0;if(b){if(e&(b|0)==1)jb[c[f>>2]&31](a,a,0,h)|0}else xN(a);b=c[g>>2]|0;if(!b)b=0;else{jb[b&31](a,6,0,h)|0;b=0}}else b=-1;while(0);return b|0}function Ll(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=a+4|0;n=c[f>>2]|0;g=b+28|0;h=a+12|0;a:do if(n)if(b){m=c[c[a+16>>2]>>2]|0;i=a+8|0;if(c[c[i>>2]>>2]&4096|0)Rl(a,0)|0;e=c[n+32>>2]|0;if(e|0?(jb[e&31](a,3,b,n)|0)<0:0){b=0;break}c[f>>2]=b;e=c[g>>2]|0;c[h>>2]=(e|0)==0?19:e;e=c[c[i>>2]>>2]|0;if(!(e&112)){l=(d&2|0)!=0;do if(!(e&2))if(!(e&3))if(!(d&1))break;else{b=n;break a}else if((d&3|0)==3){b=n;break a}else break;else if(l){b=n;break a}while(0);g=Ol(a)|0;e=c[i>>2]|0;k=c[e>>2]|0;c[e>>2]=k&-4097;c[e+4>>2]=0;c[e+16>>2]=0;b:do if(k&3|0){k=c[e+8>>2]|0;f=k+(c[e+12>>2]<<2)|0;e=k;while(1){if(e>>>0>=f>>>0)break b;c[e>>2]=0;e=e+4|0}}while(0);i=b+8|0;j=b+4|0;k=b+24|0;while(1){if(!g){b=n;break a}d=c[g>>2]|0;if(!l){e=c[i>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;h=c[j>>2]|0;e=e+(c[b>>2]|0)|0;if((h|0)<0)e=c[e>>2]|0;f=c[k>>2]|0;if(!f)e=Ul(0,e,h)|0;else e=Za[f&31](a,e,b)|0;c[g+4>>2]=e}Za[m&31](a,g,32)|0;g=d}}else b=n}else b=n;else{c[f>>2]=b;n=c[g>>2]|0;c[h>>2]=(n|0)==0?19:n}while(0);return b|0}function Ml(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=(c|0)==0;do if(!b)if(a)a=0;else a=wN(c)|0;else if(a){xN(b);a=0;break}else{a=zN(b,c)|0;break}while(0);return a|0}function Nl(a){a=a|0;var b=0,d=0,e=0;e=a+8|0;b=c[e>>2]|0;d=c[b>>2]|0;a:do if(!(d&12)){if(!(d&3)){d=b+8|0;a=c[d>>2]|0;c[d>>2]=0;break}a=Ol(a)|0;d=c[e>>2]|0;b=c[d+8>>2]|0;d=b+(c[d+12>>2]<<2)|0;while(1){if(b>>>0>=d>>>0)break a;c[b>>2]=0;b=b+4|0}}else a=c[b+4>>2]|0;while(0);e=c[e>>2]|0;c[e>>2]=c[e>>2]&-4097;c[e+16>>2]=0;c[e+4>>2]=0;return a|0}function Ol(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;g=a+8|0;b=c[g>>2]|0;d=c[b>>2]|0;e=b+4|0;if(!(d&4096)){a=b+8|0;a:do if(!(d&3)){if(d&112|0){a=c[a>>2]|0;break}a=c[e>>2]|0;if(!a)a=0;else{while(1){b=a+4|0;d=c[b>>2]|0;if(!d){e=a;break}c[b>>2]=c[d>>2];c[d>>2]=a;a=d}while(1){b=c[e>>2]|0;if(!b)break a;d=c[b+4>>2]|0;if(!d){e=b;continue}while(1){c[b+4>>2]=c[d>>2];c[d>>2]=b;b=c[d+4>>2]|0;if(!b)break;else{f=d;d=b;b=f}}c[e>>2]=d;e=d}}}else{e=c[a>>2]|0;f=e+(c[b+12>>2]<<2)|0;b=0;a=0;while(1){if(e>>>0>=f>>>0)break a;d=c[e>>2]|0;if(d){if(!b){b=d;a=d}else c[b>>2]=d;while(1){d=c[b>>2]|0;if(!d)break;else b=d}c[e>>2]=b}e=e+4|0}}while(0);g=c[g>>2]|0;c[g+4>>2]=a;c[g>>2]=c[g>>2]|4096}else a=c[e>>2]|0;return a|0}function Pl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;t=a+8|0;if(c[c[t>>2]>>2]&4096|0)Rl(a,0)|0;s=c[a+4>>2]|0;k=c[s>>2]|0;l=c[s+4>>2]|0;p=s+8|0;i=c[p>>2]|0;m=c[s+20>>2]|0;n=a+20|0;f=c[n>>2]&-32769;c[n>>2]=f;q=s+16|0;v=0-i|0;r=a+12|0;w=(i|0)<0;o=(d&4098|0)!=0;a:do if(!b){if(d&384|0){f=c[t>>2]|0;e=c[f+8>>2]|0;if(!e){e=0;break}if(d&256){e=c[e+4>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}else c[f+4>>2]=e;if(w){e=c[e+8>>2]|0;break}else{e=e+v|0;break}}if(o){e=c[t>>2]|0;if(c[e>>2]&144|0){e=0;break}e=c[e+8>>2]|0;if(!e){e=0;break}else{i=e;u=86;break}}if(!(d&64))e=0;else{b:do if((c[q>>2]|0)!=0|w){e=c[(c[t>>2]|0)+8>>2]|0;while(1){if(!e)break b;f=c[e>>2]|0;g=c[q>>2]|0;if(g|0){if(w)h=c[e+8>>2]|0;else h=e+v|0;hb[g&127](a,h,s)}if((c[p>>2]|0)>=0){e=f;continue}jb[c[r>>2]&31](a,e,0,s)|0;e=f}}while(0);e=c[t>>2]|0;c[e+4>>2]=0;c[e+8>>2]=0;c[(c[t>>2]|0)+16>>2]=0;e=0}}else{if(d&2049|0){g=s+12|0;e=c[g>>2]|0;h=(d&1|0)==0;if(!(h|(e|0)==0)){e=Za[e&31](a,b,s)|0;if(!e){e=0;break}else f=e}else f=b;do if((i|0)>-1)b=f+i|0;else{e=jb[c[r>>2]&31](a,0,12,s)|0;if(e|0){c[e+8>>2]=f;b=e;break}if(!(c[g>>2]|0)){e=0;break a}e=c[q>>2]|0;if(h|(e|0)==0){e=0;break a}hb[e&127](a,f,s);e=0;break a}while(0);e=c[t>>2]|0;f=c[e>>2]|0;g=(d&8192|0)!=0;i=b+4|0;h=e+8|0;do if(!(f&128)){if(!(f&16))if(!(f&32)){u=52;break}else{u=48;break}f=c[e+4>>2]|0;e=(f|0)!=0;if(g){if(!e){u=52;break}e=c[f>>2]|0;if(!e){u=52;break}c[b>>2]=e;c[e+4>>2]=b;c[i>>2]=f;c[f>>2]=b;break}else{if(!e){u=48;break}e=c[h>>2]|0;if((f|0)==(e|0)){u=49;break}d=f+4|0;s=c[d>>2]|0;c[i>>2]=s;c[s>>2]=b;c[b>>2]=f;c[d>>2]=b;break}}else if(g)u=52;else u=48;while(0);if((u|0)==48){e=c[h>>2]|0;u=49}else if((u|0)==52){e=c[h>>2]|0;if(!e){c[h>>2]=b;e=b}else{d=e+4|0;c[c[d>>2]>>2]=b;c[i>>2]=c[d>>2]}c[e+4>>2]=b;c[b>>2]=0}if((u|0)==49){c[b>>2]=e;if(!e)e=b;else c[i>>2]=c[e+4>>2];c[e+4>>2]=b;c[(c[t>>2]|0)+8>>2]=b}e=c[t>>2]|0;f=e+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1;c[e+4>>2]=b;if(w){e=c[b+8>>2]|0;break}else{e=b+v|0;break}}do if(!(d&512)){h=c[t>>2]|0;e=c[h+4>>2]|0;if(e|0){if(w)g=c[e+8>>2]|0;else g=e+v|0;if((g|0)==(b|0))break}e=b+k|0;if((l|0)<0){b=c[e>>2]|0;j=1;u=70}else{b=e;j=0;u=70}}else{h=c[t>>2]|0;j=(l|0)<0;u=70}while(0);if((u|0)==70){g=(m|0)==0;i=(l|0)<1;e=h+8|0;do{e=c[e>>2]|0;if(!e){e=0;break a}if(w)f=c[e+8>>2]|0;else f=e+v|0;f=f+k|0;if(j)f=c[f>>2]|0;do if(g)if(i){f=vJ(b,f)|0;break}else{f=wJ(b,f,l)|0;break}else f=jb[m&31](a,b,f,s)|0;while(0)}while((f|0)!=0);f=c[n>>2]|0}c[n>>2]=f|32768;if(!o){f=c[t>>2]|0;do if(!(d&8)){if(!(d&16)){c[f+4>>2]=e;break}if((e|0)==(c[f+8>>2]|0)){c[f+4>>2]=0;e=0;break a}else{e=e+4|0;u=110;break}}else u=110;while(0);if((u|0)==110){e=c[e>>2]|0;c[f+4>>2]=e;if(!e){e=0;break}}if(w){e=c[e+8>>2]|0;break}else{e=e+v|0;break}}else{i=e;u=86}}while(0);if((u|0)==86){e=c[i>>2]|0;g=i+4|0;if(e){c[e+4>>2]=c[g>>2];e=c[i>>2]|0}f=(c[t>>2]|0)+8|0;u=c[f>>2]|0;h=u+4|0;if((i|0)==(u|0)){c[f>>2]=e;e=c[(c[t>>2]|0)+8>>2]|0;if(e|0)c[e+4>>2]=c[h>>2]}else{c[c[g>>2]>>2]=e;if((i|0)==(c[h>>2]|0))c[h>>2]=c[g>>2]}e=c[t>>2]|0;f=e+4|0;if((i|0)==(c[f>>2]|0))g=c[i>>2]|0;else g=0;c[f>>2]=g;u=e+16|0;c[u>>2]=(c[u>>2]|0)+-1;if(w)e=c[i+8>>2]|0;else e=i+v|0;f=c[q>>2]|0;if(!((d&2|0)==0|(f|0)==0))hb[f&127](a,e,s);if((c[p>>2]|0)<0)jb[c[r>>2]&31](a,i,0,s)|0}return e|0}function Ql(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;h=k;a:do if((a|0)!=0&(b|0)!=0?(f=wN(40)|0,(f|0)!=0):0){c[f>>2]=0;c[f+16>>2]=0;c[f+4>>2]=0;Ll(f,a,0)|0;d=f+20|0;j=a+32|0;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[d+16>>2]=0;d=c[j>>2]|0;g=b+4|0;do if(d){c[h>>2]=0;d=jb[d&31](f,1,h,a)|0;if((d|0)>=0)if(d){e=c[h>>2]|0;if(e|0)if(!(c[g>>2]&c[e>>2])){d=f;i=12;break}else{d=f;break}d=a+28|0;if(!(c[d>>2]|0)){d=f;i=12}else{xN(f);e=jb[c[d>>2]&31](0,0,40,a)|0;if(!e){d=0;break a}c[e>>2]=0;c[e+16>>2]=0;c[e+4>>2]=0;Ll(e,a,0)|0;c[e+20>>2]=1;c[e+24>>2]=0;c[e+32>>2]=0;c[e+28>>2]=0;d=e;f=e;i=11}}else{d=f;i=11}else{d=f;i=12}}else{d=f;i=11}while(0);if((i|0)==11){e=jb[c[d+12>>2]&31](d,0,28,a)|0;c[h>>2]=e;if(!e){d=f;i=12}else{c[e>>2]=c[g>>2];h=e+4|0;c[h>>2]=0;c[h+4>>2]=0;c[h+8>>2]=0;c[h+12>>2]=0;c[h+16>>2]=0;c[h+20>>2]=0}}if((i|0)==12){xN(d);d=0;break}c[d+8>>2]=e;c[d>>2]=c[b>>2];c[d+16>>2]=b;e=c[j>>2]|0;if(e)jb[e&31](d,5,f,a)|0}else d=0;while(0);l=k;return d|0}function Rl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[c[a+16>>2]>>2]|0;j=a+8|0;f=c[j>>2]|0;g=c[f>>2]|0;d=f+4|0;e=f+16|0;if(!b)if(!(g&4096))b=-1;else{h=1;b=c[d>>2]|0;k=5}else if(!(c[e>>2]|0)){h=0;k=5}else b=-1;a:do if((k|0)==5){c[f>>2]=g&-4097;if(!(g&3)){if(!(g&12)){c[d>>2]=0;d=f+8|0}c[d>>2]=b;if(h){b=0;break}c[(c[j>>2]|0)+16>>2]=-1;b=0;break}c[d>>2]=0;if(!h){c[e>>2]=0;while(1){if(!b){b=0;break a}k=c[b>>2]|0;Za[i&31](a,b,32)|0;b=k}}e=c[f+8>>2]|0;f=e+(c[f+12>>2]<<2)|0;while(1){if(e>>>0>=f>>>0){b=0;break a}d=c[e>>2]|0;if(d){c[e>>2]=b;b=c[d>>2]|0;c[d>>2]=0}e=e+4|0}}while(0);return b|0}function Sl(a){a=a|0;var b=0,d=0,e=0;b=a+8|0;d=c[b>>2]|0;if(c[d>>2]&4096){Rl(a,0)|0;d=c[b>>2]|0}e=d+16|0;a=c[e>>2]|0;do if((a|0)<0){b=c[d>>2]|0;if(b&12|0){a=Tl(c[d+4>>2]|0)|0;c[e>>2]=a;break}if(b&112){a=0;b=d+8|0;while(1){b=c[b>>2]|0;if(!b)break;a=a+1|0}c[e>>2]=a}}while(0);return a|0}function Tl(a){a=a|0;var b=0;if(!a)return 0;else{b=Tl(c[a+4>>2]|0)|0;return b+1+(Tl(c[a>>2]|0)|0)|0}return 0}function Ul(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;g=c;if((e|0)>=1){h=c+e+-1|0;g=(h>>>0<c>>>0?c:h)+(1-g)&-2;f=c;while(1){if(f>>>0>=h>>>0)break;b=S(((d[f>>0]|0)<<8)+b+(d[f+1>>0]|0)|0,17109811)|0;f=f+2|0}f=c+g|0;if(f>>>0>h>>>0)c=e;else{c=e;b=S(((d[f>>0]|0)<<8)+b|0,17109811)|0}}else{while(1){f=a[c>>0]|0;if(!(f<<24>>24))break;h=a[c+1>>0]|0;e=S(((f&255)<<8)+b+(h&255)|0,17109811)|0;b=e;c=c+(h<<24>>24?2:1)|0}c=c-g|0}return S(b+c|0,17109811)|0}function Vl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+128|0;F=Q+120|0;p=Q;P=a+8|0;e=c[P>>2]|0;if(c[e>>2]&4096){Rl(a,0)|0;e=c[P>>2]|0}M=c[a+4>>2]|0;J=c[M>>2]|0;K=c[M+4>>2]|0;y=M+8|0;v=c[y>>2]|0;L=c[M+20>>2]|0;t=a+20|0;c[t>>2]=c[t>>2]&-32769;h=c[e+4>>2]|0;B=a+12|0;A=M+16|0;N=0-v|0;O=(v|0)<0;j=(h|0)!=0;a:do if(!b)if((d&448|0)==0|j^1)e=0;else{if(!(d&64)){b:do if(!(d&256)){e=h;while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break b;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}}else{e=h;while(1){f=c[e>>2]|0;if(!f)break b;a=f+4|0;c[e>>2]=c[a>>2];c[a>>2]=e;e=f}}while(0);c[(c[P>>2]|0)+4>>2]=e;if(O){e=c[e+8>>2]|0;break}else{e=e+N|0;break}}if((c[A>>2]|0)!=0|O){e=h;do{h=e;while(1){e=h+4|0;f=c[e>>2]|0;if(!f)break;c[e>>2]=c[f>>2];c[f>>2]=h;h=f}e=c[h>>2]|0;f=c[A>>2]|0;if(f|0){if(O)g=c[h+8>>2]|0;else g=h+N|0;hb[f&127](a,g,M)}if((c[y>>2]|0)<0)jb[c[B>>2]&31](a,h,0,M)|0}while((e|0)!=0);e=c[P>>2]|0}c[e+16>>2]=0;c[e+4>>2]=0;e=0}else{D=a+16|0;G=(K|0)<0;E=F+4|0;u=(d&4098|0)!=0;H=(L|0)!=0;C=(d&2|0)!=0;I=(K|0)<1;i=b+J|0;c:do if((c[(c[D>>2]|0)+4>>2]|0)!=8|u^1)x=44;else{if(G)g=c[i>>2]|0;else g=i;f=Za[c[a>>2]&31](a,b,4)|0;while(1){if(!f){x=44;break c}e=f+J|0;if(G)e=c[e>>2]|0;do if(!H)if(I){e=vJ(g,e)|0;break}else{e=wJ(g,e,K)|0;break}else e=jb[L&31](a,g,e,M)|0;while(0);if(e|0){x=44;break c}if((f|0)==(b|0))break;f=Za[c[a>>2]&31](a,f,8)|0}h=c[(c[P>>2]|0)+4>>2]|0;c[F>>2]=c[h+4>>2];c[E>>2]=c[h>>2];e=F;x=174}while(0);d:do if((x|0)==44){z=(d&516|0)!=0;s=(d&32|0)!=0;do if(!(d&2565)){if(s){if(O)g=c[b+8>>2]|0;else g=b+N|0;e=g+J|0;if(G)e=c[e>>2]|0;if(j){r=b;q=e;m=b;x=62;break}else{e=b;o=F;n=F;h=0;m=b;break}}if(j){if(O)e=c[h+8>>2]|0;else e=h+N|0;if((e|0)!=(b|0))if(G){g=b;r=0;q=c[i>>2]|0;m=0;x=62}else{g=b;r=0;q=i;m=0;x=62}else{g=b;e=0;o=F;n=F;m=0}}else{g=b;e=0;o=F;n=F;h=0;m=0}}else{e=(d&512|0)!=0;if(e|G^1)e=e?b:i;else e=c[i>>2]|0;if(j){g=b;r=0;q=e;m=0;x=62}else{g=b;e=0;o=F;n=F;h=0;m=0}}while(0);e:do if((x|0)==62){f:do if((c[(c[D>>2]|0)+4>>2]|0)==4?(o=c[(c[P>>2]|0)+24>>2]|0,!((o|0)==0|z^1)):0){i=0;j=h;while(1){if((i|0)>=(o|0)){f=F;n=F;k=0;break}b=j+8|0;e=j+N|0;if(O)f=c[b>>2]|0;else f=e;f=f+J|0;if(G)f=c[f>>2]|0;do if(!H)if(I){f=vJ(q,f)|0;break}else{f=wJ(q,f,K)|0;break}else f=jb[L&31](a,q,f,M)|0;while(0);if(!f){x=75;break}c[p+(i<<2)>>2]=f;j=c[((f|0)<0?j+4|0:j)>>2]|0;if(!j){e=0;break a}else i=i+1|0}if((x|0)==75){if(!O)break a;e=c[b>>2]|0;break a}while(1){if((k|0)>=(o|0)){e=h;break f}j=f+4|0;b=c[p+((k|1)<<2)>>2]|0;do if((c[p+(k<<2)>>2]|0)<0){e=h+4|0;i=c[e>>2]|0;if((b|0)<0){c[e>>2]=c[i>>2];c[i>>2]=h;c[j>>2]=i;f=i;h=n;e=i+4|0;break}else{c[n>>2]=i;c[j>>2]=h;f=h;h=i;e=i;break}}else{i=c[h>>2]|0;e=i+4|0;if((b|0)>0){c[h>>2]=c[e>>2];c[e>>2]=h;c[n>>2]=i;h=i;e=i;break}else{c[j>>2]=i;c[n>>2]=h;f=i;break}}while(0);n=h;k=k+2|0;h=c[e>>2]|0}}else{f=F;n=F;e=h}while(0);g:while(1){i=f;h=e;while(1){if(O)e=c[h+8>>2]|0;else e=h+N|0;e=e+J|0;if(G)e=c[e>>2]|0;do if(!H)if(I){e=vJ(q,e)|0;break}else{e=wJ(q,e,K)|0;break}else e=jb[L&31](a,q,e,M)|0;while(0);if(!e){e=r;o=i;break e}j=i+4|0;if((e|0)>=0)break;f=h+4|0;i=c[f>>2]|0;if(!i){x=115;break g}if(O)e=c[i+8>>2]|0;else e=i+N|0;e=e+J|0;if(G)e=c[e>>2]|0;do if(!H)if(I){e=vJ(q,e)|0;break}else{e=wJ(q,e,K)|0;break}else e=jb[L&31](a,q,e,M)|0;while(0);if((e|0)>=0){x=112;break}c[f>>2]=c[i>>2];c[i>>2]=h;c[j>>2]=i;h=c[i+4>>2]|0;if(!h){e=r;o=i;h=0;break e}}if((x|0)==112){x=0;if(!e){x=113;break}c[n>>2]=i;c[j>>2]=h;e=c[i>>2]|0;if(!e){e=r;o=h;n=i;h=0;break e}else{f=h;n=i;continue}}b=c[h>>2]|0;if(!b){x=133;break}if(O)e=c[b+8>>2]|0;else e=b+N|0;e=e+J|0;if(G)e=c[e>>2]|0;do if(!H)if(I){e=vJ(q,e)|0;break}else{e=wJ(q,e,K)|0;break}else e=jb[L&31](a,q,e,M)|0;while(0);f=b+4|0;if((e|0)>0){c[h>>2]=c[f>>2];c[f>>2]=h;c[n>>2]=b;e=c[b>>2]|0;if(!e){e=r;o=i;n=b;h=0;break e}else{f=i;n=b;continue}}if(!e){x=131;break}c[j>>2]=b;c[n>>2]=h;e=c[f>>2]|0;if(!e){e=r;o=b;n=h;h=0;break e}else{f=b;n=h}}if((x|0)==113){c[j>>2]=h;e=r;o=h;h=i;break}else if((x|0)==115){c[j>>2]=h;e=r;o=h;h=0;break}else if((x|0)==131){c[n>>2]=h;e=r;o=i;n=h;h=b;break}else if((x|0)==133){c[n>>2]=h;e=r;o=i;n=h;h=0;break}}while(0);i=o+4|0;j=(d&8|0)!=0;b=(d&2049|0)!=0;k=(d&16|0)!=0;do if(!h){c[i>>2]=0;c[n>>2]=0;if(!j)if(!k){if(z){e=o;break d}if(b)x=199;else{if(!s){g=0;e=o;break d}C=(c[P>>2]|0)+16|0;c[C>>2]=(c[C>>2]|0)+1}}else x=169;else x=163}else{c[t>>2]=c[t>>2]|32768;f=h+4|0;c[n>>2]=c[f>>2];c[i>>2]=c[h>>2];if(!z){if(j){c[f>>2]=c[F>>2];c[h>>2]=0;c[F>>2]=h;x=163;break}if(k){c[h>>2]=c[E>>2];c[f>>2]=0;c[E>>2]=h;x=169;break}if(u){e=o;x=174;break d}if(b){if(c[(c[D>>2]|0)+4>>2]&4|0){e=h;break}c[f>>2]=0;c[h>>2]=c[E>>2];c[E>>2]=h;x=199;break}if(!s){e=0;break a}if(!(c[(c[D>>2]|0)+4>>2]&4)){c[e+4>>2]=0;c[e>>2]=c[E>>2];c[E>>2]=m;e=(c[P>>2]|0)+16|0;c[e>>2]=(c[e>>2]|0)+1;e=h;break}e=c[A>>2]|0;if(e|0)hb[e&127](a,g,M);if((c[y>>2]|0)<0){jb[c[B>>2]&31](a,m,0,M)|0;e=h}else e=h}else e=h}while(0);if((x|0)==163){e=c[E>>2]|0;if(!e){e=o;break}while(1){f=e+4|0;g=c[f>>2]|0;if(!g)break;c[f>>2]=c[g>>2];c[g>>2]=e;e=g}c[E>>2]=c[e>>2]}else if((x|0)==169){e=c[F>>2]|0;if(!e){e=o;break}while(1){f=c[e>>2]|0;if(!f)break;C=f+4|0;c[e>>2]=c[C>>2];c[C>>2]=e;e=f}c[F>>2]=c[e+4>>2]}else if((x|0)==199){i=M+12|0;e=c[i>>2]|0;f=(d&1|0)==0;if(!(f|(e|0)==0))g=Za[e&31](a,g,M)|0;do if(g){if((v|0)>-1){e=g+v|0;x=209;break}e=jb[c[B>>2]&31](a,0,12,M)|0;if(e|0){c[e+8>>2]=g;break}if((c[i>>2]|0)!=0?(w=c[A>>2]|0,!(f|(w|0)==0)):0){hb[w&127](a,g,M);x=209}else x=209}else{e=h;x=209}while(0);if((x|0)==209)if(!e){e=o;break}f=(c[P>>2]|0)+16|0;g=c[f>>2]|0;if((g|0)>-1)c[f>>2]=g+1}c[e+4>>2]=c[F>>2];c[e>>2]=c[E>>2];h:do if(!((c[(c[D>>2]|0)+4>>2]&8|0)==0|z^1)){if(O)f=c[e+8>>2]|0;else f=e+N|0;f=f+J|0;if(G)f=c[f>>2]|0;while(1){i=e+4|0;g=c[i>>2]|0;if(!g)break h;while(1){h=c[g>>2]|0;if(!h)break;F=h+4|0;c[g>>2]=c[F>>2];c[F>>2]=g;g=h}c[i>>2]=g;if(O)h=c[g+8>>2]|0;else h=g+N|0;h=h+J|0;if(G)h=c[h>>2]|0;do if(!H)if(I){h=vJ(f,h)|0;break}else{h=wJ(f,h,K)|0;break}else h=jb[L&31](a,f,h,M)|0;while(0);if(h|0)break h;c[i>>2]=c[g>>2];c[g>>2]=e;e=g}}while(0);c[(c[P>>2]|0)+4>>2]=e;if(O){e=c[e+8>>2]|0;break a}else{e=e+N|0;break a}}while(0);if((x|0)==174){if(O)g=c[h+8>>2]|0;else g=h+N|0;f=c[A>>2]|0;if(!((f|0)==0|C^1))hb[f&127](a,g,M);if((c[y>>2]|0)<0)jb[c[B>>2]&31](a,h,0,M)|0;O=(c[P>>2]|0)+16|0;N=c[O>>2]|0;c[O>>2]=(N|0)<1?-1:N+-1|0}do{f=e+4|0;e=c[f>>2]|0}while((e|0)!=0);c[f>>2]=c[F>>2];c[(c[P>>2]|0)+4>>2]=c[E>>2];e=C?g:0}while(0);l=Q;return e|0}function Wl(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if(c[c[a+8>>2]>>2]&4096|0)Rl(a,0)|0;f=(b|0)!=0;g=a+16|0;if(f){if(c[c[b+8>>2]>>2]&4096|0)Rl(b,0)|0;if((c[b+16>>2]|0)==(c[g>>2]|0)){d=b;e=7}else b=0}else{d=0;e=7}a:do if((e|0)==7){while(1){if(!d)break;if((d|0)==(a|0)){b=0;break a}d=c[d+28>>2]|0;e=7}d=a+28|0;e=c[d>>2]|0;if(e|0){h=e+24|0;c[h>>2]=(c[h>>2]|0)+-1}c[a+32>>2]=0;c[d>>2]=0;if(f){c[d>>2]=b;c[a>>2]=12;h=b+24|0;c[h>>2]=(c[h>>2]|0)+1;break}else{c[a>>2]=c[c[g>>2]>>2];b=e;break}}while(0);return b|0}function Xl(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;f=a+16|0;a:do if(!(d&99)){p=a+32|0;if((d&516|0)==0?(e=(c[(c[f>>2]|0)+4>>2]&12|0)!=0,(d&384|0)==0|e):0){if(e){if(!(d&408)){e=0;break}n=(d&136|0)!=0;o=(d&272|0)!=0;m=0;f=0;e=0;while(1){if(!a)break;l=Za[c[c[a+16>>2]>>2]&31](a,b,d)|0;do if(!l)g=m;else{h=c[a+4>>2]|0;i=c[h+4>>2]|0;j=c[h+20>>2]|0;g=l+(c[h>>2]|0)|0;if((i|0)<0)k=c[g>>2]|0;else k=g;if(e|0){do if(!j)if((i|0)<1){g=vJ(k,f)|0;break}else{g=wJ(k,f,i)|0;break}else g=jb[j&31](a,k,f,h)|0;while(0);if(!(n&(g|0)<0|o&(g|0)>0)){g=m;break}}g=a;f=k;e=l}while(0);m=g;a=c[a+28>>2]|0}c[p>>2]=m;break}if(!(d&24)){e=0;break}f=c[p>>2]|0;if(f){e=c[(c[f+4>>2]|0)+8>>2]|0;g=c[(c[f+8>>2]|0)+4>>2]|0;if((e|0)<0)e=c[g+8>>2]|0;else e=g+(0-e)|0;if((e|0)==(b|0))e=b;else{f=a;h=32}}else{f=a;h=32}do if((h|0)==32){while(1){if(!f){h=33;break}e=Za[c[c[f+16>>2]>>2]&31](f,b,4)|0;if(e|0){h=36;break}f=c[f+28>>2]|0;h=32}if((h|0)==33){c[p>>2]=0;e=0;break a}else if((h|0)==36){c[p>>2]=f;break}}while(0);i=(d<<4&128^128)+128|0;e=Za[c[c[f+16>>2]>>2]&31](f,e,d)|0;while(1){h=f+16|0;while(1){if(!e)break;else g=a;while(1){if((g|0)==(f|0))break a;if(Za[c[c[g+16>>2]>>2]&31](g,e,4)|0)break;g=c[g+28>>2]|0}e=Za[c[c[h>>2]>>2]&31](f,e,d)|0}f=c[f+28>>2]|0;c[p>>2]=f;if(!f){e=0;break a}e=Za[c[c[f+16>>2]>>2]&31](f,0,i)|0}}while(1){if(!a){a=0;e=0;break}e=Za[c[c[a+16>>2]>>2]&31](a,b,d)|0;if(e|0)break;a=c[a+28>>2]|0}c[p>>2]=a}else e=Za[c[c[f>>2]>>2]&31](a,b,d)|0;while(0);return e|0}function Yl(a){a=a|0;var b=0;b=c[41986]|0;c[41986]=a;return b|0}function Zl(a){a=a|0;var b=0;b=c[41987]|0;c[41987]=a;return b|0}function _l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=$l(a,b,f)|0;l=e;return d|0}function $l(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=(a|0)==3?c[41990]|0:(a|0)==2?1:a;c[41990]=e;g=c[41991]|0;c[41991]=g>>>0>e>>>0?g:e;g=(a|0)!=3;do if(e>>>0<(c[41987]|0)>>>0){a=c[41988]|0;if(!a){a=lN()|0;c[41988]=a;if(!a){a=1;break}}if(g){c[41989]=jN(a)|0;a=c[41988]|0}BJ(a,b,d)|0;a=0}else{if(c[41986]|0){am(a,b,d);a=0;break}e=c[13857]|0;if(g){c[f>>2]=(a|0)==1?81328:81334;OL(e,81342,f)|0}BJ(e,b,d)|0;a=0}while(0);l=h;return a|0}function am(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[41992]|0)==0?(f=wN(c[4354]|0)|0,c[41992]=f,(f|0)==0):0)nL(81347,c[13857]|0)|0;else e=4;do if((e|0)==4){if((a|0)!=3){fb[c[41986]&31]((a|0)==1?81328:81334)|0;fb[c[41986]&31](82006)|0}while(1){a=AJ(c[41992]|0,c[4354]|0,b,d)|0;f=c[41992]|0;e=c[4354]|0;if((a|0)>-1&(a|0)<(e|0)){e=7;break}g=e<<1;e=a+1|0;e=(g|0)>(e|0)?g:e;c[4354]=e;if(!(zN(f,e)|0)){e=9;break}}if((e|0)==7){fb[c[41986]&31](f)|0;break}else if((e|0)==9){nL(81347,c[13857]|0)|0;break}}while(0);return}function bm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=b;$l(1,a,e)|0;l=d;return}function cm(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=b+12|0;if(!e){d=(d|0)==0?1024:d;c[f>>2]=1;e=wN(d)|0;c[b>>2]=e}else{c[b>>2]=e;c[f>>2]=0}c[b+8>>2]=e+d;c[b+4>>2]=e;a[e>>0]=0;return}function dm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;g=c[a>>2]|0;f=g;e=(c[h>>2]|0)-f|0;d=e<<1;e=e+b|0;d=e>>>0>d>>>0?e:d;e=a+4|0;f=(c[e>>2]|0)-f|0;b=a+12|0;if(!(c[b>>2]|0)){i=wN(d)|0;MN(i|0,g|0,f|0)|0;c[b>>2]=1;b=i}else b=zN(g,d)|0;c[a>>2]=b;c[e>>2]=b+f;c[h>>2]=b+d;return 0}function em(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;f=a+4|0;e=c[f>>2]|0;if((e+d|0)>>>0>(c[a+8>>2]|0)>>>0){dm(a,d)|0;e=c[f>>2]|0}MN(e|0,b|0,d|0)|0;c[f>>2]=(c[f>>2]|0)+d;return d|0}function fm(a,b){a=a|0;b=b|0;return em(a,b,TK(b)|0)|0}function gm(a){a=a|0;if(c[a+12>>2]|0)xN(c[a>>2]|0);return}function hm(a){a=a|0;var b=0,e=0;b=a+4|0;e=c[b>>2]|0;if(e>>>0>(c[a>>2]|0)>>>0){c[b>>2]=e+-1;a=d[e>>0]|0}else a=-1;return a|0}function im(a,b,d){a=a|0;b=b|0;d=d|0;cp(c[41994]|0,c[b+8>>2]|0)|0;cp(c[41994]|0,c[b+12>>2]|0)|0;Zn(c[41994]|0,b);return}function jm(a,b){a=a|0;b=b|0;var c=0;c=Mo(a,81395,0)|0;if((b|0)!=0&(c|0)==0){km(a);c=Mo(a,81395,0)|0}return c|0}function km(a){a=a|0;var b=0,c=0,d=0;d=so(a)|0;wq(d,d,86,0,1)|0;c=co(d)|0;while(1){if(!c)break;mm(a,c);b=Pm(d,c)|0;while(1){if(!b)break;nm(a,b);b=Rm(d,b)|0}c=eo(d,c)|0}return}function lm(b){b=b|0;var c=0;c=b+24|0;a[c>>0]=a[c>>0]|64;sm(b);c=Lp(b)|0;pm((c|0)==0?b:c,b);return}function mm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function nm(a,b){a=a|0;b=b|0;var d=0;d=om(b)|0;if(!((d|0)!=0?(c[d+8>>2]|0)!=0:0))pm(a,b);return}function om(a){a=a|0;return Mo(a,c[4364]|0,0)|0}function pm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=Oo(b,c[4364]|0,16,0)|0;f=qm(a,c[b>>2]&3)|0;e=d+8|0;a:do if(!(c[e>>2]|0)){a=so(a)|0;c[e>>2]=qm(a,c[b>>2]&3)|0;a=rm(b)|0;d=d+12|0;c[d>>2]=Yn(ro(b)|0,((a|0)>4?a:4)<<2)|0;a=Za[c[f>>2]&31](f,0,128)|0;while(1){if(!a)break a;e=ro(b)|0;e=ap(e,c[a+12>>2]|0)|0;c[(c[d>>2]|0)+(c[a+16>>2]<<2)>>2]=e;a=Za[c[f>>2]&31](f,a,8)|0}}while(0);return}function qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+16|0;d=e;a=jm(a,0)|0;a:do if(!a)a=0;else switch(b|0){case 0:{a=c[a+16>>2]|0;break a}case 1:{a=c[a+8>>2]|0;break a}case 2:case 3:{a=c[a+12>>2]|0;break a}default:{c[d>>2]=b;_l(1,81408,d)|0;a=0;break a}}while(0);l=e;return a|0}function rm(a){a=a|0;var b=0;b=so(ro(a)|0)|0;a=qm(b,c[a>>2]&3)|0;if(!a)a=0;else a=Sl(a)|0;return a|0}function sm(a){a=a|0;var b=0,d=0,e=0,f=0;d=Oo(a,81395,20,0)|0;e=d+8|0;c[e>>2]=Pp(a,17420,c[4353]|0)|0;f=d+12|0;c[f>>2]=Pp(a,17420,c[4353]|0)|0;d=d+16|0;c[d>>2]=Pp(a,17420,c[4353]|0)|0;b=Lp(a)|0;if(!b){b=c[41993]|0;if(!((b|0)==0|(b|0)==(a|0))){b=jm(b,0)|0;tm(c[b+8>>2]|0,c[e>>2]|0,a,1);tm(c[b+12>>2]|0,c[f>>2]|0,a,2);tm(c[b+16>>2]|0,c[d>>2]|0,a,0)}}else{a=jm(b,0)|0;Wl(c[e>>2]|0,c[a+8>>2]|0)|0;Wl(c[f>>2]|0,c[a+12>>2]|0)|0;Wl(c[d>>2]|0,c[a+16>>2]|0)|0}return}function tm(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;g=Za[c[b>>2]&31](b,0,128)|0;while(1){if(!g)break;h=um(e,c[g+8>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,f)|0;a[h+22>>0]=a[g+22>>0]|0;a[h+21>>0]=a[g+21>>0]|0;Za[c[d>>2]&31](d,h,1)|0;g=Za[c[b>>2]&31](b,g,8)|0}return}function um(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=Yn(b,24)|0;a[h+20>>0]=g;c[h+8>>2]=ap(b,d)|0;c[h+12>>2]=ap(b,e)|0;c[h+16>>2]=f;return h|0}function vm(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+8>>2]=b;b=Za[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function wm(a,b){a=a|0;b=b|0;var c=0;c=Wl(a,0)|0;b=vm(a,b)|0;Wl(a,c)|0;return b|0}function xm(a,b){a=a|0;b=b|0;a=om(a)|0;if(!a)a=0;else a=vm(c[a+8>>2]|0,b)|0;return a|0}function ym(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g;if(!a){a=c[41993]|0;if(!a){c[f>>2]=c[4365];a=gn(0,f,0)|0;c[41993]=a}}if(!e)a=Am(a,b,d)|0;else a=zm(a,b,d,e)|0;l=g;return a|0}function zm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=so(a)|0;jm(a,1)|0;g=qm(a,b)|0;f=wm(g,d)|0;a:do if(!f){f=vm(g,d)|0;if(f|0){f=um(a,d,e,c[f+16>>2]|0,b)|0;Za[c[g>>2]&31](g,f,1)|0;h=16;break}g=qm(i,b)|0;f=um(a,d,e,Sl(g)|0,b)|0;Za[c[g>>2]&31](g,f,1)|0;switch(b|0){case 0:{wq(i,i,52,f,1)|0;h=16;break a}case 1:{d=co(i)|0;while(1){if(!d){h=16;break a}Bm(a,d,f);d=eo(i,d)|0}}case 2:case 3:{g=co(i)|0;while(1){if(!g){h=16;break a}d=Pm(i,g)|0;while(1){if(!d)break;Bm(a,d,f);d=Rm(i,d)|0}g=eo(i,g)|0}}default:break a}}else{h=f+12|0;cp(a,c[h>>2]|0)|0;c[h>>2]=ap(a,e)|0;h=16}while(0);if((h|0)==16)if((b|0)==0&(f|0)!=0)Cm(a,f,e)|0;vo(a,a,f);return f|0}function Am(a,b,c){a=a|0;b=b|0;c=c|0;a=qm(a,b)|0;if(!a)a=0;else a=vm(a,c)|0;return a|0}function Bm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;b=om(b)|0;f=d+16|0;e=c[f>>2]|0;if((e|0)>3){g=c[a+64>>2]|0;b=b+12|0;e=e<<2;c[b>>2]=jb[c[(c[g>>2]|0)+8>>2]&31](c[g+12>>2]|0,c[b>>2]|0,e,e+4|0)|0}else b=b+12|0;g=ap(a,c[d+12>>2]|0)|0;c[(c[b>>2]|0)+(c[f>>2]<<2)>>2]=g;return}function Cm(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=ro(a)|0;g=(om(a)|0)+12|0;i=b+16|0;cp(h,c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]|0)|0;f=ap(h,d)|0;c[(c[g>>2]|0)+(c[i>>2]<<2)>>2]=f;do if(!(c[a>>2]&3)){e=c[(jm(h,0)|0)+16>>2]|0;f=b+8|0;g=wm(e,c[f>>2]|0)|0;if(!g){i=um(h,c[f>>2]|0,d,c[i>>2]|0,c[a>>2]&3)|0;Za[c[e>>2]&31](e,i,1)|0;break}else{i=g+12|0;cp(h,c[i>>2]|0)|0;c[i>>2]=ap(h,d)|0;break}}while(0);vo(h,a,b);return 0}function Dm(a,b,d){a=a|0;b=b|0;d=d|0;a=qm(a,b)|0;do if(a){b=c[a>>2]|0;if(!d){a=Za[b&31](a,0,128)|0;break}else{a=Za[b&31](a,d,8)|0;break}}else a=0;while(0);return a|0}function Em(a){a=a|0;var b=0;c[41994]=a;b=om(a)|0;if(b|0){Fm(a,b);Qo(a,c[b>>2]|0)|0}b=jm(a,0)|0;if(b)if(((Rp(a,c[b+8>>2]|0)|0)==0?(Rp(a,c[b+12>>2]|0)|0)==0:0)?(Rp(a,c[b+16>>2]|0)|0)==0:0){Qo(a,c[b>>2]|0)|0;b=0}else b=1;else b=0;return b|0}function Fm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=ro(a)|0;e=rm(a)|0;b=b+12|0;a=0;while(1){d=c[b>>2]|0;if((a|0)>=(e|0))break;cp(f,c[d+(a<<2)>>2]|0)|0;a=a+1|0}Zn(f,d);return}function Gm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Qo(a,c[4364]|0)|0}return}function Hm(a){a=a|0;var b=0;b=om(a)|0;if(b|0){Fm(a,b);Qo(a,c[4364]|0)|0}return}function Im(a,b){a=a|0;b=b|0;b=xm(a,b)|0;if(!b)b=0;else{a=c[(om(a)|0)+12>>2]|0;b=c[a+(c[b+16>>2]<<2)>>2]|0}return b|0}function Jm(a,b){a=a|0;b=b|0;a=c[(om(a)|0)+12>>2]|0;return c[a+(c[b+16>>2]<<2)>>2]|0}function Km(a,b,c){a=a|0;b=b|0;c=c|0;b=xm(a,b)|0;if(!b)b=-1;else{Cm(a,b,c)|0;b=0}return b|0}function Lm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=ro(a)|0;f=ym(f,c[a>>2]&3,b,0)|0;if(!f){f=ro(a)|0;f=ym(f,c[a>>2]&3,b,e)|0}Cm(a,f,d)|0;return 0}function Mm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=ro(a)|0;f=c[a>>2]|0;a:do if(!((c[b>>2]^f)&3)){d=1;e=0;while(1){e=Dm(g,f&3,e)|0;if(!e)break a;d=xm(b,c[e+8>>2]|0)|0;if(!d){d=1;break a}f=Jm(a,e)|0;Cm(b,d,f)|0;if(dp(f)|0)ep(Jm(b,d)|0);d=0;f=c[a>>2]|0}}else d=1;while(0);return d|0}function Nm(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;a=c[b+40>>2]|0;f=c[d+40>>2]|0;if((a|0)==(f|0)){e=(c[b>>2]|0)>>>4;a=(c[d>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}else{e=(c[a>>2]|0)>>>4;a=(c[f>>2]|0)>>>4;if(e>>>0>=a>>>0)if(e>>>0>a>>>0)a=1;else g=6;else a=-1}if((g|0)==6)a=0;return a|0}function Om(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;a=(c[b+40>>2]|0)+8|0;g=c[a>>2]|0;a=c[a+4>>2]|0;f=(c[d+40>>2]|0)+8|0;e=c[f>>2]|0;f=c[f+4>>2]|0;do if(!(a>>>0<f>>>0|(a|0)==(f|0)&g>>>0<e>>>0))if(a>>>0>f>>>0|(a|0)==(f|0)&g>>>0>e>>>0)a=1;else{e=b+8|0;a=c[e>>2]|0;e=c[e+4>>2]|0;if(!((a|0)==0&(e|0)==0)?(i=d+8|0,h=c[i>>2]|0,i=c[i+4>>2]|0,!((h|0)==0&(i|0)==0)):0){if(e>>>0<i>>>0|(e|0)==(i|0)&a>>>0<h>>>0){a=-1;break}if(e>>>0>i>>>0|(e|0)==(i|0)&a>>>0>h>>>0){a=1;break}}a=0}else a=-1;while(0);return a|0}function Pm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+32|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=Za[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Qm(a,b){a=a|0;b=b|0;var d=0,e=0;e=l;l=l+48|0;d=e;if((c[b+24>>2]|0)==(a|0))a=b+28|0;else{c[d+16>>2]=b;a=c[a+40>>2]|0;a=Za[c[a>>2]&31](a,d,4)|0}l=e;return a|0}function Rm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+32|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=Za[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Sm(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if(!b)b=0;else{d=a+44|0;a=b+28|0;Rl(c[d>>2]|0,c[a>>2]|0)|0;b=c[d>>2]|0;b=Za[c[b>>2]&31](b,0,128)|0;c[a>>2]=Nl(c[d>>2]|0)|0}return b|0}function Tm(a,b){a=a|0;b=b|0;var d=0,e=0;d=Qm(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;if(!d)a=0;else{e=a+44|0;d=d+28|0;Rl(c[e>>2]|0,c[d>>2]|0)|0;a=c[e>>2]|0;a=Za[c[a>>2]&31](a,b,8)|0;c[d>>2]=Nl(c[e>>2]|0)|0}return a|0}function Um(a,b){a=a|0;b=b|0;var c=0;c=Pm(a,b)|0;if(!c)c=Sm(a,b)|0;return c|0}function Vm(a,b,d){a=a|0;b=b|0;d=d|0;a:do if((c[b>>2]&3|0)==2){b=Rm(a,b)|0;if(!b){b=0;do{if(!b)b=Sm(a,d)|0;else b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0))}}else do{b=Tm(a,b)|0;if(!b){b=0;break a}}while((c[b+40>>2]|0)==(d|0));while(0);return b|0}function Wm(a,b,e){a=a|0;b=b|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+32|0;f=h+16|0;g=h;if((sn(a)|0)!=0?(c[g>>2]=0,c[g+4>>2]=0,c[g+8>>2]=0,c[g+12>>2]=0,c[f>>2]=c[g>>2],c[f+4>>2]=c[g+4>>2],c[f+8>>2]=c[g+8>>2],c[f+12>>2]=c[g+12>>2],(_m(a,b,e,f)|0)!=0):0)f=0;else f=((d[a+24>>0]|0)>>>2&1^1)&255|(b|0)!=(e|0);l=h;return f|0}function Xm(a,b){a=a|0;b=b|0;Zm(a,b);return}function Ym(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0;io(b,d,1)|0;io(b,e,1)|0;h=Yn(b,96)|0;i=h+48|0;l=kn(b,2)|0;j=c[i>>2]|0;k=c[h>>2]|0;m=h+8|0;c[m>>2]=f;c[m+4>>2]=g;m=h+56|0;c[m>>2]=f;c[m+4>>2]=g;g=l<<4;c[h>>2]=k&12|g|2;c[i>>2]=j&12|g|3;c[h+88>>2]=d;c[h+40>>2]=e;Zm(b,h);if(a[b+24>>0]&64){Oo(h,c[4364]|0,16,0)|0;nm(b,h)}to(b,h);return h|0}function Zm(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;i=l;l=l+16|0;d=i;h=c[b>>2]&3;g=(h|0)==2?b:b+-48|0;h=(h|0)==3?b:b+48|0;e=c[h+40>>2]|0;f=c[g+40>>2]|0;while(1){if(!a)break;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];if(_m(a,e,f,d)|0)break;j=Qm(a,e)|0;m=a+44|0;$m(c[m>>2]|0,j+32|0,g);k=a+48|0;$m(c[k>>2]|0,j+24|0,g);j=Qm(a,f)|0;$m(c[m>>2]|0,j+28|0,h);$m(c[k>>2]|0,j+20|0,h);a=Lp(a)|0}l=i;return}function _m(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+48|0;f=h;if(!((b|0)==0|(d|0)==0)?(c[f>>2]=c[e>>2],c[f+4>>2]=c[e+4>>2],c[f+8>>2]=c[e+8>>2],c[f+12>>2]=c[e+12>>2],c[f+40>>2]=b,g=Qm(a,d)|0,(g|0)!=0):0){e=a+48|0;g=g+20|0;Rl(c[e>>2]|0,c[g>>2]|0)|0;a=c[e>>2]|0;a=Za[c[a>>2]&31](a,f,4)|0;c[g>>2]=Nl(c[e>>2]|0)|0}else a=0;l=h;return a|0}function $m(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;Za[c[a>>2]&31](a,d,1)|0;c[b>>2]=Nl(a)|0;return}function an(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;i=o+24|0;m=o+16|0;j=o;h=(f|0)!=0;do if(!(An(a,2,e,m,0)|0)){if(e|0)if(h){n=18;break}else{f=0;break}if(h?(sn(a)|0)==0:0){n=18;break}n=j;c[n>>2]=0;c[n+4>>2]=0;c[j>>2]=0;n=j+8|0;c[n>>2]=0;c[n+4>>2]=0;n=7}else{g=j;c[g>>2]=0;c[g+4>>2]=0;g=m;k=c[g+4>>2]|0;n=j+8|0;c[n>>2]=c[g>>2];c[n+4>>2]=k;c[j>>2]=2;n=7}while(0);a:do if((n|0)==7){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];f=_m(a,b,d,i)|0;if(f|0)break;if(!(rn(a)|0))k=0;else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];k=_m(a,d,b,i)|0}g=(k|0)!=0;f=h^1;do if(g|f)g=g^1;else{f=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];f=_m(f,b,d,i)|0;if(!f){if(!(rn(a)|0)){g=1;f=0;break}f=so(a)|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];f=_m(f,d,b,i)|0;if(!f){g=1;f=0;break}}Xm(a,f);break a}while(0);if(f|g^1)f=g?0:k;else n=18}while(0);if((n|0)==18)if((Wm(a,b,d)|0)!=0?(An(a,2,e,m,1)|0)!=0:0){f=m;f=Ym(a,b,d,c[f>>2]|0,c[f+4>>2]|0)|0;En(a,2,f)}else f=0;l=o;return f|0}function bn(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;d=(c[b>>2]&3|0)==3;g=d?b+-48|0:b;d=d?b:b+48|0;b=c[g+40>>2]|0;h=Qm(a,c[d+40>>2]|0)|0;f=a+44|0;cn(c[f>>2]|0,h+32|0,g);e=a+48|0;cn(c[e>>2]|0,h+24|0,g);b=Qm(a,b)|0;cn(c[f>>2]|0,b+28|0,d);cn(c[e>>2]|0,b+20|0,d);return}function cn(a,b,d){a=a|0;b=b|0;d=d|0;Rl(a,c[b>>2]|0)|0;Za[c[a>>2]&31](a,d,2)|0;c[b>>2]=Nl(a)|0;return}function dn(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=l;l=l+16|0;f=e;d=(c[d>>2]&3|0)==2?d:d+-48|0;g=c[d>>2]&3;h=c[((g|0)==3?d:d+48|0)+40>>2]|0;g=c[((g|0)==2?d:d+-48|0)+40>>2]|0;c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];if(_m(b,h,g,f)|0){if((so(b)|0)==(b|0)){if(a[b+24>>0]&64)Hm(d);xo(b,d);Wo(d);h=d+8|0;Cn(b,2,c[h>>2]|0,c[h+4>>2]|0)}if(!(wq(b,d,53,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);d=0}else d=0;else d=-1}else d=-1;l=e;return d|0}function en(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;f=io(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0,d)|0;g=io(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0,d)|0;do if((f|0)!=0&(g|0)!=0){c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];c[e+8>>2]=c[b+8>>2];c[e+12>>2]=c[b+12>>2];e=_m(a,f,g,e)|0;f=(e|0)==0;if(!((d|0)!=0&f)){if(f)break}else{Zm(a,b);e=b}d=c[e>>2]&3;l=h;return ((d|0)==(c[b>>2]&3|0)?e:e+(((d|0)==3?-1:1)*48|0)|0)|0}while(0);l=h;return 0}function fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=b+8|0;e=d+8|0;e=FN(c[b>>2]|0,c[b+4>>2]|0,c[e>>2]|0,c[e+4>>2]|0)|0;return ((e|0)==0?0:e>>31|1)|0}function gn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+16|0;g=h;j=hn(e)|0;f=lb[c[(c[j>>2]|0)+4>>2]&63](c[j+12>>2]|0,72)|0;c[f>>2]=c[f>>2]&-4;i=f+64|0;c[i>>2]=j;k=f+24|0;d=c[d>>2]|0;c[k>>2]=d;a[k>>0]=d&255|8;c[f+60>>2]=f;e=lb[c[c[j+4>>2]>>2]&63](f,e)|0;c[(c[i>>2]|0)+16>>2]=e;if(An(f,0,b,g,1)|0){i=g;j=c[i+4>>2]|0;k=f+8|0;c[k>>2]=c[i>>2];c[k+4>>2]=j}k=jn(f)|0;En(k,0,f);l=h;return k|0}function hn(b){b=b|0;var d=0,e=0,f=0,g=0;d=(b|0)!=0;if(d){e=c[b>>2]|0;e=(e|0)==0?17796:e}else e=17796;g=fb[c[e>>2]&31](b)|0;f=lb[c[e+4>>2]&63](g,80)|0;c[f>>2]=e;c[f+12>>2]=g;if(d){g=c[b+4>>2]|0;c[f+4>>2]=(g|0)==0?17672:g;b=c[b+8>>2]|0;b=(b|0)==0?17772:b}else{c[f+4>>2]=17672;b=17772}c[f+8>>2]=b;a[f+52>>0]=1;return f|0}function jn(b){b=b|0;var d=0,e=0;c[b+36>>2]=Pp(b,17852,c[4353]|0)|0;c[b+40>>2]=Pp(b,17816,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+44>>2]=Pp(b,d?17464:17500,c[4353]|0)|0;d=(so(b)|0)==(b|0);c[b+48>>2]=Pp(b,d?17536:17572,c[4353]|0)|0;c[b+52>>2]=Pp(b,17608,c[4353]|0)|0;d=Lp(b)|0;if(!((d|0)!=0?(e=kn(d,0)|0,c[b>>2]=c[b>>2]&15|e<<4,e=c[d+52>>2]|0,Za[c[e>>2]&31](e,b,1)|0,!(a[d+24>>0]&64)):0))lm(b);to(b,b);return b|0}function kn(a,b){a=a|0;b=b|0;var d=0;d=(c[a+64>>2]|0)+24+(b<<3)|0;b=d;b=IN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;a=D;c[d>>2]=b;c[d+4>>2]=a;D=a;return b|0}function ln(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=Lp(b)|0;g=(f|0)==0;h=b+64|0;if(g?(c[(c[c[h>>2]>>2]|0)+16>>2]|0)!=0:0){xo(b,b);d=b+8|0;Cn(b,0,c[d>>2]|0,c[d+4>>2]|0);d=c[h>>2]|0;bb[c[(c[d>>2]|0)+16>>2]&127](c[d+12>>2]|0);d=0}else e=4;do if((e|0)==4){d=Jp(b)|0;while(1){if(!d)break;e=Kp(d)|0;ln(d)|0;d=e}d=co(b)|0;while(1){if(!d)break;e=eo(b,d)|0;po(b,d)|0;d=e}Nn(b);xo(b,b);if(((((Rp(b,c[b+40>>2]|0)|0)==0?(Rp(b,c[b+36>>2]|0)|0)==0:0)?(Rp(b,c[b+48>>2]|0)|0)==0:0)?(Rp(b,c[b+44>>2]|0)|0)==0:0)?(Rp(b,c[b+52>>2]|0)|0)==0:0){if(a[b+24>>0]&64?Em(b)|0:0){d=-1;break}Wo(b);e=b+8|0;Cn(b,0,c[e>>2]|0,c[e+4>>2]|0);if(!g){Mp(f,b)|0;Zn(f,b);d=0;break}while(1){d=c[h>>2]|0;e=c[d+48>>2]|0;if(!e)break;Ao(b,c[e>>2]|0)|0}bb[c[(c[d+4>>2]|0)+20>>2]&127](c[d+16>>2]|0);if(!(Xo(b)|0)){d=c[h>>2]|0;h=c[d+12>>2]|0;g=(c[d>>2]|0)+12|0;cb[c[g>>2]&31](h,b);cb[c[g>>2]&31](h,d);d=0}else d=-1}else d=-1}while(0);return d|0}function mn(a){a=a|0;return Sl(c[a+40>>2]|0)|0}function nn(a){a=a|0;var b=0,c=0,d=0;b=0;c=co(a)|0;while(1){if(!c)break;d=(on(a,c,0,1)|0)+b|0;b=d;c=eo(a,c)|0}return b|0}function on(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=Qm(a,b)|0;if(f){a=a+44|0;if(!e)b=0;else b=pn(c[a>>2]|0,f+32|0)|0;if(d)b=(pn(c[a>>2]|0,f+28|0)|0)+b|0}else b=0;return b|0}function pn(a,b){a=a|0;b=b|0;var d=0;Rl(a,c[b>>2]|0)|0;d=Sl(a)|0;c[b>>2]=Nl(a)|0;return d|0}function qn(b){b=b|0;return a[b+24>>0]&1|0}function rn(a){a=a|0;return (qn(a)|0)==0|0}function sn(a){a=a|0;return (d[a+24>>0]|0)>>>1&1|0}function tn(a,b){a=a|0;b=b|0;return a|0}function un(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;if(!d){f=1328;d=c[f>>2]|0;f=c[f+4>>2]|0;c[e>>2]=d;c[e+4>>2]=f;f=IN(d|0,f|0,2,0)|0;e=1328;c[e>>2]=f;c[e+4>>2]=D}else{if(!f)a=Zo(a,d)|0;else a=ap(a,d)|0;c[e>>2]=a;c[e+4>>2]=0}return 1}function vn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 0}function wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((c&1|0)==0&0==0)cp(a,c)|0;return}function xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ((c&1|0)==0&0==0?c:0)|0}function yn(a){a=a|0;return}function zn(a,b,c){a=a|0;b=b|0;c=c|0;return}function An(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=(e|0)!=0;i=b+64|0;do if(j){if((a[e>>0]|0)!=37?(h=c[i>>2]|0,h=mb[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,e,f,g)|0,h|0):0)break;h=Fn(b,d,e,f)|0;if(!h)k=5}else k=5;while(0);if((k|0)==5)if(g){h=c[i>>2]|0;h=mb[c[(c[h+4>>2]|0)+4>>2]&3](c[h+16>>2]|0,d,0,f,g)|0;if(j&(h|0)!=0){k=f;Gn(b,d,e,c[k>>2]|0,c[k+4>>2]|0)}}else h=0;return h|0}function Bn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[a+64>>2]|0;return jb[c[(c[a+4>>2]|0)+8>>2]&31](c[a+16>>2]|0,b,d,e)|0}function Cn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;Ln(a,b,d,e)|0;a=c[a+64>>2]|0;nb[c[(c[a+4>>2]|0)+12>>2]&31](c[a+16>>2]|0,b,d,e);return}function Dn(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=ro(a)|0;f=a+8|0;b=f;b=Jn(d,c[a>>2]&3,c[b>>2]|0,c[b+4>>2]|0)|0;do if(!b){b=c[d+64>>2]|0;d=c[(c[b+4>>2]|0)+16>>2]|0;if(d|0?(e=f,e=jb[d&31](c[b+16>>2]|0,c[a>>2]&3,c[e>>2]|0,c[e+4>>2]|0)|0,e|0):0){b=e;break}if((c[a>>2]&3|0)==2)b=0;else{e=c[f>>2]|0;f=c[f+4>>2]|0;c[g>>2]=37;b=g+8|0;c[b>>2]=e;c[b+4>>2]=f;yJ(174031,81435,g)|0;b=174031}}while(0);l=h;return b|0}function En(a,b,d){a=a|0;b=b|0;d=d|0;a=c[a+64>>2]|0;hb[c[(c[a+4>>2]|0)+24>>2]&127](c[a+16>>2]|0,b,d);return}function Fn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;i=l;l=l+32|0;h=i;b=c[(c[a+64>>2]|0)+56+(((b|0)==3?2:b)<<2)>>2]|0;if(((b|0)!=0?(f=Zo(a,d)|0,(f|0)!=0):0)?(c[h+24>>2]=f,g=Za[c[b>>2]&31](b,h,4)|0,(g|0)!=0):0){d=g+16|0;h=c[d+4>>2]|0;b=e;c[b>>2]=c[d>>2];c[b+4>>2]=h;b=1}else b=0;l=i;return b|0}function Gn(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0;h=Yn(a,32)|0;g=h+16|0;c[g>>2]=e;c[g+4>>2]=f;c[h+24>>2]=ap(a,d)|0;e=(b|0)==3?2:b;g=a+64|0;d=c[g>>2]|0;b=c[d+56+(e<<2)>>2]|0;if(!b){f=Pp(a,17700,c[4353]|0)|0;c[(c[g>>2]|0)+56+(e<<2)>>2]=f;b=c[g>>2]|0}else{f=b;b=d}b=c[b+68+(e<<2)>>2]|0;if(!b){b=Pp(a,17736,c[4353]|0)|0;c[(c[g>>2]|0)+68+(e<<2)>>2]=b}Za[c[f>>2]&31](f,h,1)|0;Za[c[b>>2]&31](b,h,1)|0;return}function Hn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=b+16|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=d+16|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0?1:(a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0)<<31>>31)|0}function In(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=c[b+24>>2]|0;e=c[d+24>>2]|0;return (b>>>0>e>>>0?1:(b>>>0<e>>>0)<<31>>31)|0}function Jn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=Kn(a,b,d,e)|0;if(!a)a=0;else a=c[a+24>>2]|0;return a|0}function Kn(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+32|0;f=g;a=c[(c[a+64>>2]|0)+68+(((b|0)==3?2:b)<<2)>>2]|0;if(!a)a=0;else{b=f+16|0;c[b>>2]=d;c[b+4>>2]=e;a=Za[c[a>>2]&31](a,f,4)|0}l=g;return a|0}function Ln(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=(b|0)==3?2:b;b=Kn(a,f,d,e)|0;if(!b)b=0;else{e=a+64|0;d=c[(c[e>>2]|0)+56+(f<<2)>>2]|0;Za[c[d>>2]&31](d,b,2)|0;e=c[(c[e>>2]|0)+68+(f<<2)>>2]|0;Za[c[e>>2]&31](e,b,2)|0;cp(a,c[b+24>>2]|0)|0;Zn(a,b);b=1}return b|0}function Mn(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;c[41994]=b;g=c[b+64>>2]|0;f=0;while(1){if((f|0)==3)break;h=g+56+(f<<2)|0;d=c[h>>2]|0;a:do if(d|0){d=Za[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;e=c[h>>2]|0;e=Za[c[e>>2]&31](e,d,8)|0;if((a[c[d+24>>2]>>0]|0)!=37){d=e;continue}i=d+16|0;Ln(b,f,c[i>>2]|0,c[i+4>>2]|0)|0;d=e}}while(0);f=f+1|0}return}function Nn(a){a=a|0;c[41994]=a;a=a+64|0;On((c[a>>2]|0)+56|0);On((c[a>>2]|0)+68|0);return}function On(a){a=a|0;var b=0,d=0,e=0;b=0;while(1){if((b|0)==3)break;d=a+(b<<2)|0;e=c[d>>2]|0;if(e|0){Kl(e)|0;c[d>>2]=0}b=b+1|0}return}function Pn(a,b,c){a=a|0;b=b|0;c=c|0;if(!(DL(b,c,a)|0))a=0;else a=TK(b)|0;return a|0}function Qn(a,b){a=a|0;b=b|0;return nL(b,a)|0}function Rn(a){a=a|0;return BL(a)|0}function Sn(a){a=a|0;var b=0,d=0,e=0;b=l;l=l+32|0;e=b+12|0;d=b;c[4447]=c[4444];c[4448]=c[4445];c[e>>2]=a;c[e+4>>2]=TK(a)|0;c[e+8>>2]=0;c[d>>2]=17796;c[d+4>>2]=17672;c[d+8>>2]=17784;a=er(e,d)|0;fp(0);l=b;return a|0}function Tn(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((e|0)!=0?(h=b+8|0,f=c[h>>2]|0,(f|0)<(c[b+4>>2]|0)):0){i=(c[b>>2]|0)+f|0;b=0;g=a[i>>0]|0;f=d;d=i;while(1){d=d+1|0;a[f>>0]=g;b=b+1|0;if(!(g<<24>>24!=10&(b|0)<(e|0)))break;g=a[d>>0]|0;if(!(g<<24>>24))break;else f=f+1|0}c[h>>2]=(c[h>>2]|0)+b}else b=0;return b|0}function Un(a){a=a|0;return 0}function Vn(a,b){a=a|0;b=b|0;a=wN(b)|0;GN(a|0,0,b|0)|0;return a|0}function Wn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;a=zN(b,d)|0;if(d>>>0>c>>>0)GN(a+c|0,0,d-c|0)|0;return a|0}function Xn(a,b){a=a|0;b=b|0;xN(b);return}function Yn(a,b){a=a|0;b=b|0;var d=0;d=l;l=l+16|0;a=c[a+64>>2]|0;a=lb[c[(c[a>>2]|0)+4>>2]&63](c[a+12>>2]|0,b)|0;if(!a)_l(1,81441,d)|0;l=d;return a|0}function Zn(a,b){a=a|0;b=b|0;if(b|0){a=c[a+64>>2]|0;cb[c[(c[a>>2]|0)+12>>2]&31](c[a+12>>2]|0,b)}return}function _n(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=(c[b+16>>2]|0)+8|0;b=c[a>>2]|0;a=c[a+4>>2]|0;d=(c[d+16>>2]|0)+8|0;e=c[d>>2]|0;d=c[d+4>>2]|0;return (a>>>0<d>>>0|(a|0)==(d|0)&b>>>0<e>>>0?-1:(a>>>0>d>>>0|(a|0)==(d|0)&b>>>0>e>>>0)&1)|0}function $n(a,b,d){a=a|0;b=b|0;d=d|0;a=c[b+16>>2]|0;if((a+28|0)!=(b|0))Zn(c[a+24>>2]|0,b);return}function ao(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;b=(c[c[b+16>>2]>>2]|0)>>>4;e=(c[c[d+16>>2]>>2]|0)>>>4;return (b>>>0<e>>>0?-1:b>>>0>e>>>0&1)|0}function bo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=167056;c[e>>2]=b;c[e+4>>2]=d;c[41999]=167048;a=c[a+40>>2]|0;a=Za[c[a>>2]&31](a,167980,4)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function co(a){a=a|0;a=c[a+36>>2]|0;a=Za[c[a>>2]&31](a,0,128)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function eo(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=Za[c[d>>2]&31](d,b,8)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function fo(a){a=a|0;a=c[a+36>>2]|0;a=Za[c[a>>2]&31](a,0,256)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function go(a,b){a=a|0;b=b|0;var d=0;b=Qm(a,b)|0;if((b|0)!=0?(d=c[a+36>>2]|0,d=Za[c[d>>2]&31](d,b,16)|0,(d|0)!=0):0)b=c[d+16>>2]|0;else b=0;return b|0}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=bo(a,b,c)|0;do if((d|0)!=0&(e|0)==0){e=so(a)|0;if((e|0)!=(a|0)?(f=bo(e,b,c)|0,f|0):0){io(a,f,1)|0;e=f;break}if(!(Bn(a,1,b,c)|0))e=0;else{e=kn(a,1)|0;e=jo(a,b,c,e,D)|0;ko(a,e);lo(a,e)}}while(0);return e|0}function io(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=so(a)|0;if((e|0)==(c[b+24>>2]|0)){e=b+8|0;e=bo(a,c[e>>2]|0,c[e+4>>2]|0)|0;if((d|0)!=0&(e|0)==0){e=Lp(a)|0;if(!e)e=0;else{d=io(e,b,d)|0;mo(a,d);return d|0}}}else e=0;return e|0}function jo(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0;g=Yn(b,64)|0;h=c[g>>2]|0;i=g+8|0;c[i>>2]=d;c[i+4>>2]=e;c[g>>2]=h&12|f<<4|1;c[g+24>>2]=so(b)|0;if(a[(so(b)|0)+24>>0]&64)Oo(g,c[4364]|0,16,0)|0;return g|0}function ko(a,b){a=a|0;b=b|0;do{mo(a,b);a=Lp(a)|0}while((a|0)!=0);return}function lo(b,c){b=b|0;c=c|0;if(a[(so(b)|0)+24>>0]&64)mm(b,c);to(b,c);return}function mo(a,b){a=a|0;b=b|0;var d=0,e=0;e=a+40|0;Sl(c[e>>2]|0)|0;if((so(a)|0)==(a|0))d=b+28|0;else d=Yn(a,36)|0;c[d+16>>2]=b;e=c[e>>2]|0;Za[c[e>>2]&31](e,d,1)|0;e=c[a+36>>2]|0;Za[c[e>>2]&31](e,d,1)|0;return}function no(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;h=so(a)|0;e=(d|0)!=0;if(An(a,1,b,g,0)|0){d=g;d=bo(a,c[d>>2]|0,c[d+4>>2]|0)|0;if(!d)if(!((h|0)==(a|0)|e^1)?(f=g,f=bo(h,c[f>>2]|0,c[f+4>>2]|0)|0,(f|0)!=0):0)d=io(a,f,1)|0;else i=6}else i=6;if((i|0)==6)if(e?(An(a,1,b,g,1)|0)!=0:0){i=g;h=c[i>>2]|0;i=c[i+4>>2]|0;d=kn(a,1)|0;d=jo(a,h,i,d,D)|0;ko(a,d);lo(a,d);En(a,1,d)}else d=0;l=j;return d|0}function oo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[42008]=b;d=Um(a,b)|0;while(1){if(!d)break;e=Vm(a,d,b)|0;bn(a,d,0);d=e}e=c[a+40>>2]|0;Za[c[e>>2]&31](e,168016,2)|0;e=c[a+36>>2]|0;Za[c[e>>2]&31](e,168016,2)|0;return}function po(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d+8|0;e=f;if(bo(b,c[e>>2]|0,c[e+4>>2]|0)|0){if((so(b)|0)==(b|0)){e=Um(b,d)|0;while(1){if(!e)break;g=Vm(b,e,d)|0;dn(b,e)|0;e=g}if(a[b+24>>0]&64)Gm(d);xo(b,d);Wo(d);g=f;Cn(b,1,c[g>>2]|0,c[g+4>>2]|0)}if(!(wq(b,d,54,0,0)|0))if((so(b)|0)==(b|0)){Zn(b,d);e=0}else e=0;else e=-1}else e=-1;return e|0}function qo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;e=h;d=c[b>>2]|0;do if(!(d&3))if((Lp(b)|0)==(a|0)){d=c[b>>2]|0;g=5;break}else{_l(1,81467,e)|0;f=-1;break}else g=5;while(0);a:do if((g|0)==5)switch(d&3){case 1:{f=po(a,b)|0;break a}case 2:case 3:{f=dn(a,b)|0;break a}case 0:{f=ln(b)|0;break a}default:{}}while(0);l=h;return f|0}function ro(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=c[(c[a+40>>2]|0)+24>>2]|0;break}case 1:{b=c[a+24>>2]|0;break}case 0:{b=a;break}default:{}}return b|0}function so(a){a=a|0;var b=0;switch(c[a>>2]&3){case 2:case 3:{b=(c[a+40>>2]|0)+24|0;break}case 1:{b=a+24|0;break}case 0:{b=a+60|0;break}default:{}}return c[b>>2]|0}function to(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,100,0);else uo(b,d,c[e+48>>2]|0);return}function uo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){uo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=c[d>>2]|0;break}case 1:{e=(c[d>>2]|0)+12|0;break}case 2:{e=(c[d>>2]|0)+24|0;break}default:break a}e=c[e>>2]|0;if(e|0)hb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function vo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;f=c[b+64>>2]|0;if(!(a[f+52>>0]|0))Do(b,d,101,e);else wo(b,d,e,c[f+48>>2]|0);return}function wo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;a:do if(e|0){wo(a,b,d,c[e+8>>2]|0);switch(c[b>>2]&3){case 0:{f=(c[e>>2]|0)+4|0;break}case 1:{f=(c[e>>2]|0)+16|0;break}case 2:{f=(c[e>>2]|0)+28|0;break}default:break a}f=c[f>>2]|0;if(f|0)nb[f&31](a,b,c[e+4>>2]|0,d)}while(0);return}function xo(b,d){b=b|0;d=d|0;var e=0;e=c[b+64>>2]|0;if(!(a[e+52>>0]|0))Do(b,d,102,0);else yo(b,d,c[e+48>>2]|0);return}function yo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;a:do if(d|0){yo(a,b,c[d+8>>2]|0);switch(c[b>>2]&3){case 0:{e=(c[d>>2]|0)+8|0;break}case 1:{e=(c[d>>2]|0)+20|0;break}case 2:{e=(c[d>>2]|0)+32|0;break}default:break a}e=c[e>>2]|0;if(e|0)hb[e&127](a,b,c[d+4>>2]|0)}while(0);return}function zo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(a,12)|0;c[e>>2]=b;c[e+4>>2]=d;d=(c[a+64>>2]|0)+48|0;c[e+8>>2]=c[d>>2];c[d>>2]=e;return}function Ao(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=(c[a+64>>2]|0)+48|0;d=c[e>>2]|0;a:do if(!d)d=-1;else{if((c[d>>2]|0)!=(b|0)){while(1){e=d+8|0;if(!d){d=-1;break a}f=c[e>>2]|0;if((c[f>>2]|0)==(b|0))break;else d=f}if(f)c[e>>2]=c[f+8>>2]}else c[e>>2]=c[d+8>>2];Zn(a,d);d=0}while(0);return d|0}function Bo(a,b){a=a|0;b=b|0;var d=0;d=so(a)|0;a:do if((d|0)==(so(b)|0))switch(c[b>>2]&3){case 0:{while(1){if((b|0)==(a|0)){b=1;break a}b=Lp(b)|0;if(!b){b=0;break}}break}case 1:{b=b+8|0;b=(ho(a,c[b>>2]|0,c[b+4>>2]|0,0)|0)!=0;break a}default:{b=(en(a,b,0)|0)!=0;break a}}else b=0;while(0);return b&1|0}function Co(a){a=a|0;return c[a>>2]&3|0}function Do(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;e=Oo(a,81491,44,0)|0;switch(c|0){case 100:{c=Eo(e,b,100)|0;if(!(Fo(c,b)|0))Go(c,a,b,d)|0;break}case 101:{if((Fo(Eo(e,b,100)|0,b)|0)==0?(Fo(Eo(e,b,102)|0,b)|0)==0:0){e=Eo(e,b,101)|0;c=Fo(e,b)|0;if(!c)c=Go(e,a,b,d)|0;Ho(b,c,d)}break}case 102:{Io(Eo(e,b,100)|0,b);Io(Eo(e,b,101)|0,b);c=Eo(e,b,102)|0;if(!(Fo(c,b)|0))Go(c,a,b,d)|0;break}default:_l(1,81503,f)|0}l=g;return}function Eo(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;e=g;a:do switch(c[b>>2]&3){case 0:switch(d|0){case 100:{d=a+8|0;break a}case 101:{d=a+20|0;break a}case 102:{d=a+32|0;break a}default:{f=14;break a}}case 1:switch(d|0){case 100:{d=a+12|0;break a}case 101:{d=a+24|0;break a}case 102:{d=a+36|0;break a}default:{f=14;break a}}case 2:switch(d|0){case 100:{d=a+16|0;break a}case 101:{d=a+28|0;break a}case 102:{d=a+40|0;break a}default:{f=14;break a}}default:f=14}while(0);if((f|0)==14){_l(1,81537,e)|0;d=0}a=c[d>>2]|0;if(!a){a=ro(b)|0;a=Pp(a,17888,c[4353]|0)|0;c[d>>2]=a}l=g;return a|0}function Fo(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+32|0;e=d;f=Jo(b)|0;b=e+8|0;c[b>>2]=f;c[b+4>>2]=D;b=Za[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function Go(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=Yn(ro(d)|0,32)|0;c[f+20>>2]=d;g=Jo(d)|0;d=f+8|0;c[d>>2]=g;c[d+4>>2]=D;c[f+16>>2]=b;if(e|0){g=Yn(b,8)|0;c[f+24>>2]=g;c[g>>2]=e}Za[c[a>>2]&31](a,f,1)|0;return f|0}function Ho(a,b,d){a=a|0;b=b|0;d=d|0;a=b+24|0;while(1){a=c[a>>2]|0;if(!a)break;if((c[a>>2]|0)==(d|0))break;else a=a+4|0}return}function Io(a,b){a=a|0;b=b|0;b=Fo(a,b)|0;if(b|0)Za[c[a>>2]&31](a,b,2)|0;return}function Jo(a){a=a|0;a=a+8|0;D=c[a+4>>2]|0;return c[a>>2]|0}function Ko(a,b,d){a=a|0;b=b|0;d=d|0;Lo(b);Zn(c[b+16>>2]|0,b);return}function Lo(a){a=a|0;var b=0,d=0;b=a+16|0;a=c[a+24>>2]|0;while(1){if(!a)break;d=c[a+4>>2]|0;Zn(c[b>>2]|0,a);a=d}return}function Mo(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;i=k;h=c[b+16>>2]|0;f=h;while(1){if(!f){f=0;break}g=c[f>>2]|0;if((g|0)==(d|0)){j=7;break}if((a[d>>0]|0)==(a[g>>0]|0)?(vJ(d,g)|0)==0:0){j=7;break}f=c[f+4>>2]|0;if((f|0)==(h|0)){f=0;break}}do if((j|0)==7){if(!(c[b>>2]&4)){if((f|0)==(h|0)&(e|0)==0){f=h;break}No(b,f,e);break}if(e)if((h|0)==(f|0))f=h;else _l(1,81562,i)|0}while(0);l=k;return f|0}function No(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;c[a+16>>2]=b;e=c[a>>2]|0;d=d<<2&4;c[a>>2]=e&-5|d;if(e&2|0){e=(e&3|0)==3?-1:1;c[a+(e*48|0)+16>>2]=b;e=a+(e*48|0)|0;c[e>>2]=c[e>>2]&-5|d}return}function Oo(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=ro(a)|0;f=Mo(a,b,0)|0;a:do if((d|0)!=0&(f|0)==0){d=Yn(h,d)|0;c[d>>2]=ap(h,b)|0;switch(c[a>>2]&3){case 0:{Po(a,d);g=d;break a}case 1:{Po(a,d);g=d;break a}case 2:case 3:{Po(a,d);g=d;break a}default:{}}}else g=f;while(0);if(e|0)Mo(a,b,1)|0;return g|0}function Po(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=c[a+16>>2]|0;do if(d){e=d+4|0;f=c[e>>2]|0;if((f|0)==(d|0)){c[e>>2]=b;e=d;d=b;break}else{c[b+4>>2]=f;e=b;break}}else{e=b;d=b}while(0);c[d+4>>2]=e;if(!(c[a>>2]&4))No(a,b,0);return}function Qo(a,b){a=a|0;b=b|0;var d=0,e=0;e=ro(a)|0;d=Mo(a,b,0)|0;if(!d)b=-1;else{Ro(a,d);if(!(c[a>>2]&3)){So(e,a,d);b=d}else{wq(so(e)|0,a,55,d,0)|0;b=d}cp(e,c[d>>2]|0)|0;Zn(e,b);b=0}return b|0}function Ro(a,b){a=a|0;b=b|0;var d=0;a=c[a+16>>2]|0;do{d=a+4|0;a=c[d>>2]|0}while((a|0)!=(b|0));c[d>>2]=c[b+4>>2];return}function So(a,b,d){a=a|0;b=b|0;d=d|0;if((c[b+16>>2]|0)==(d|0)){a=c[d+4>>2]|0;No(b,(a|0)==(d|0)?0:a,0)}return}function To(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;f=(d|0)>-1;g=f?d:0-d|0;a:do switch(b|0){case 0:{Oo(a,c,g,e)|0;if(!f){b=Jp(a)|0;while(1){if(!b)break a;To(b,0,c,d,e);b=Kp(b)|0}}break}case 3:case 2:case 1:{d=(b|0)==1;b=co(a)|0;while(1){if(!b)break a;b:do if(d)Oo(b,c,g,e)|0;else{f=Pm(a,b)|0;while(1){if(!f)break b;Oo(f,c,g,e)|0;f=Rm(a,f)|0}}while(0);b=eo(a,b)|0}}default:{}}while(0);return}function Uo(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do switch(b|0){case 0:{wq(a,a,56,c,1)|0;break}case 3:case 2:case 1:{e=(b|0)==1;d=co(a)|0;while(1){if(!d)break a;b:do if(e)Qo(d,c)|0;else{b=Pm(a,d)|0;while(1){if(!b)break b;Qo(b,c)|0;b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}}default:{}}while(0);return}function Vo(a,b,c){a=a|0;b=b|0;c=c|0;Qo(b,c)|0;return}function Wo(a){a=a|0;var b=0,d=0,e=0;d=ro(a)|0;b=a+16|0;a=c[b>>2]|0;if(a|0)do{e=a;a=c[a+4>>2]|0;cp(d,c[e>>2]|0)|0;Zn(d,e)}while((a|0)!=(c[b>>2]|0));c[b>>2]=0;return}function Xo(a){a=a|0;return Rp(a,Yo(a)|0)|0}function Yo(a){a=a|0;var b=0,d=0;if(!a)d=168052;else d=(c[a+64>>2]|0)+20|0;b=c[d>>2]|0;if(!b){b=Pp(a,17924,c[4353]|0)|0;c[d>>2]=b;a=167112;c[a>>2]=-2147483648;c[a+4>>2]=0;a=167120;c[a>>2]=2147483647;c[a+4>>2]=-1}return b|0}function Zo(a,b){a=a|0;b=b|0;return _o(Yo(a)|0,b)|0}function _o(a,b){a=a|0;b=b|0;a=$o(a,b)|0;if(!a)a=0;else a=c[a+16>>2]|0;return a|0}function $o(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+32|0;e=d;c[e+16>>2]=b;b=Za[c[a>>2]&31](a,e,4)|0;l=d;return b|0}function ap(a,b){a=a|0;b=b|0;var d=0,e=0;if(!b)d=0;else{e=Yo(a)|0;d=$o(e,b)|0;if(!d){d=(TK(b)|0)+24|0;if(!a)d=wN(d)|0;else d=Yn(a,d)|0;a=d+8|0;c[a>>2]=1;c[a+4>>2]=0;a=d+20|0;cL(a,b)|0;c[d+16>>2]=a;Za[c[e>>2]&31](e,d,1)|0}else{e=d+8|0;b=e;b=IN(c[b>>2]|0,c[b+4>>2]|0,1,0)|0;c[e>>2]=b;c[e+4>>2]=D}d=c[d+16>>2]|0}return d|0}function bp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!b)d=0;else{e=Yo(a)|0;d=$o(e,b)|0;if(!d){d=(TK(b)|0)+24|0;if(!a)d=wN(d)|0;else d=Yn(a,d)|0;g=167112;f=c[g+4>>2]|0;a=d+8|0;c[a>>2]=c[g>>2]|1;c[a+4>>2]=f;a=d+20|0;cL(a,b)|0;c[d+16>>2]=a;Za[c[e>>2]&31](e,d,1)|0}else{g=d+8|0;f=g;f=IN(c[f>>2]|0,c[f+4>>2]|0,1,0)|0;c[g>>2]=f;c[g+4>>2]=D}d=c[d+16>>2]|0}return d|0}function cp(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if((b|0)!=0?(d=Yo(a)|0,e=$o(d,b)|0,(e|0)!=0):0)if((c[e+16>>2]|0)==(b|0)?(b=e+8|0,g=b,g=IN(c[g>>2]|0,c[g+4>>2]|0,-1,-1)|0,f=D,b,c[b>>2]=g,c[b+4>>2]=f,b=167120,!(((g|0)!=0|(f|0)!=0)&((c[b>>2]|0)!=0|(c[b+4>>2]|0)!=0))):0){Qp(a,d,e)|0;a=0}else a=0;else a=-1;return a|0}function dp(a){a=a|0;var b=0;if(!a)a=0;else{a=a+-12|0;b=167112;a=c[b>>2]&c[a>>2]}return a|0}function ep(a){a=a|0;var b=0,d=0,e=0;if(a|0){d=167112;a=a+-12|0;e=a;b=c[e+4>>2]|c[d+4>>2];c[a>>2]=c[e>>2]|c[d>>2];c[a+4>>2]=b}return}function fp(a){a=a|0;c[42018]=a;c[4490]=1;return}function gp(a,b){a=a|0;b=b|0;c[42019]=a;c[42020]=b;c[42021]=0;return}function hp(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;if(!(c[42022]|0)){c[42022]=1;if(!(c[42023]|0))c[42023]=1;if(!(c[42014]|0))c[42014]=c[13950];if(!(c[42015]|0))c[42015]=c[13982];k=c[42024]|0;if(!((k|0)!=0?(c[k+(c[42025]<<2)>>2]|0)!=0:0)){ip();k=jp(c[42014]|0,16384)|0;c[(c[42024]|0)+(c[42025]<<2)>>2]=k}kp()}a:while(1){h=c[42026]|0;a[h>>0]=a[174063]|0;e=(c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]|0)+(c[42023]|0)|0;f=h;b:while(1){i=f;while(1){f=c[17964+(d[i>>0]<<2)>>2]|0;if(b[56696+(e<<1)>>1]|0){c[42027]=e;c[42028]=i}c:while(1){g=f&255;do{f=(b[56882+(e<<1)>>1]|0)+g|0;if((b[57092+(f<<1)>>1]|0)==(e|0))break c;k=b[57628+(e<<1)>>1]|0;e=k<<16>>16}while(k<<16>>16<=92);f=c[18988+(g<<2)>>2]|0}e=b[57838+(f<<1)>>1]|0;f=i+1|0;if((b[56882+(e<<1)>>1]|0)==219)break;else i=f}d:while(1){k=h;e:while(1){e=b[56696+(e<<1)>>1]|0;if(!(e<<16>>16)){e=b[56696+(c[42027]<<1)>>1]|0;f=c[42028]|0}else e=e<<16>>16;c[42016]=h;j=f;c[42017]=j-k;a[174063]=a[f>>0]|0;a[f>>0]=0;c[42026]=f;f:while(1){switch(e|0){case 1:{m=27;break a}case 12:{m=53;break a}case 13:{m=55;break a}case 14:{m=57;break a}case 15:{m=61;break a}case 16:{m=65;break a}case 17:{m=67;break a}case 18:{m=69;break a}case 19:{m=72;break a}case 20:{m=75;break a}case 21:{m=78;break a}case 23:{m=86;break a}case 33:{m=118;break a}case 39:case 38:case 37:case 36:{l=0;break a}case 2:{m=29;break b}case 3:{m=32;break b}case 4:{m=35;break b}case 5:{m=37;break b}case 6:{m=39;break b}case 7:{m=42;break b}case 8:{m=44;break b}case 9:{m=47;break b}case 10:{m=49;break b}case 11:{m=51;break b}case 22:{m=83;break b}case 24:{m=89;break b}case 25:{m=92;break b}case 26:{m=95;break b}case 27:{m=98;break b}case 28:{m=101;break b}case 29:{m=104;break b}case 30:{m=109;break b}case 31:{m=112;break b}case 32:{m=115;break b}case 34:{m=121;break b}case 0:break f;case 35:break;default:{m=134;break a}}i=c[42016]|0;a[f>>0]=a[174063]|0;e=(c[42024]|0)+(c[42025]<<2)|0;g=c[e>>2]|0;if(!(c[g+44>>2]|0)){n=c[g+16>>2]|0;c[42030]=n;c[g>>2]=c[42014];g=c[e>>2]|0;c[g+44>>2]=1;e=n}else e=c[42030]|0;if((c[42026]|0)>>>0<=((c[g+4>>2]|0)+e|0)>>>0){m=128;break e}switch(tp()|0){case 0:{m=132;break d}case 2:{m=133;break e}case 1:break;default:continue a}c[42026]=c[42016];e=(((c[42023]|0)+-1|0)/2|0)+36|0}a[f>>0]=a[174063]|0;f=c[42028]|0;e=c[42027]|0}if((m|0)==128){m=0;g=(c[42016]|0)+(j-i+-1)|0;c[42026]=g;e=rp()|0;f=sp(e)|0;h=c[42016]|0;if(!f){f=g;continue}else{m=129;break}}else if((m|0)==133){m=0;f=(c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+4>>2]|0)+(c[42030]|0)|0;c[42026]=f;e=rp()|0;h=c[42016]|0;continue}}if((m|0)==129){m=0;n=g+1|0;c[42026]=n;e=f;f=n;continue}else if((m|0)==132){m=0;f=(c[42016]|0)+(j-i+-1)|0;c[42026]=f;e=rp()|0;h=c[42016]|0;continue}}switch(m|0){case 29:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[4490]=(c[4490]|0)+1;continue a}case 32:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[42023]=3;continue a}case 35:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 37:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 39:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[42023]=1;continue a}case 42:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 44:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;lp();continue a}case 47:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 49:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 51:{m=0;e=c[42017]|0;if(!e)continue a;c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;continue a}case 83:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[42023]=5;np();continue a}case 89:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;pp(83723);continue a}case 92:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;pp(81595);continue a}case 95:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[4490]=(c[4490]|0)+1;continue a}case 98:{m=0;e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;pp(f);continue a}case 101:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[42023]=7;c[42029]=1;np();continue a}case 104:{m=0;e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;n=(c[42029]|0)+-1|0;c[42029]=n;if(!n){m=108;break a}pp(c[42016]|0);continue a}case 109:{m=0;e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;c[42029]=(c[42029]|0)+1;pp(f);continue a}case 112:{m=0;e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;pp(f);c[4490]=(c[4490]|0)+1;continue a}case 115:{m=0;e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;pp(f);continue a}case 121:{m=0;e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;oL(f,e,1,c[42015]|0)|0;continue a}}}switch(m|0){case 27:{e=c[42017]|0;if(!e)l=-1;else{c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=-1}break}case 53:{e=c[42017]|0;if(!e)l=259;else{c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=259}break}case 55:{e=c[42017]|0;if(!e)l=260;else{c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=260}break}case 57:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42021]|0)){c[42021]=258;l=258}else l=258;break}case 61:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;if(!(c[42021]|0)){c[42021]=261;l=261}else l=261;break}case 65:{e=c[42017]|0;if(!e)l=263;else{c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=263}break}case 67:{e=c[42017]|0;if(!e)l=262;else{c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=262}break}case 69:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=(c[42021]|0)==261?264:45;break}case 72:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;l=(c[42021]|0)==258?264:45;break}case 75:{e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;c[42045]=ap(c[41994]|0,f)|0;l=267;break}case 78:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;if(mp()|0){m=(c[42017]|0)+-1|0;a[f>>0]=a[174063]|0;n=h+m|0;c[42026]=n;c[42016]=h;c[42017]=m;a[174063]=a[n>>0]|0;a[n>>0]=0;c[42026]=n}c[42045]=ap(c[41994]|0,c[42016]|0)|0;l=267;break}case 86:{e=c[42017]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[(c[42016]|0)+(e+-1)>>0]|0)==10&1;c[42023]=1;op();l=268;break}case 108:{c[42023]=1;qp();l=268;break}case 118:{e=c[42017]|0;f=c[42016]|0;if(e|0)c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]=(a[f+(e+-1)>>0]|0)==10&1;l=a[f>>0]|0;break}case 134:{up(81598);break}}return l|0}function ip(){var a=0,b=0,d=0;b=c[42024]|0;do if(!b){a=Bp(4)|0;c[42024]=a;if(!a)up(81956);else{c[a>>2]=0;c[42036]=1;c[42025]=0;break}}else{a=c[42036]|0;if((c[42025]|0)>>>0>=(a+-1|0)>>>0){d=a+8|0;a=vp(b,d<<2)|0;c[42024]=a;if(!a)up(81956);else{b=a+(c[42036]<<2)|0;c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0;c[b+24>>2]=0;c[b+28>>2]=0;c[42036]=d;break}}}while(0);return}function jp(a,b){a=a|0;b=b|0;var d=0;d=Bp(48)|0;if(!d)up(81911);c[d+12>>2]=b;b=Bp(b+2|0)|0;c[d+4>>2]=b;if(!b)up(81911);else{c[d+20>>2]=1;xp(d,a);return d|0}return 0}function kp(){var b=0,d=0;d=(c[42024]|0)+(c[42025]<<2)|0;b=c[d>>2]|0;c[42030]=c[b+16>>2];b=c[b+8>>2]|0;c[42026]=b;c[42016]=b;c[42014]=c[c[d>>2]>>2];a[174063]=a[b>>0]|0;return}function lp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g;d=g+16|0;e=g+12|0;h=c[42016]|0;b=h+1|0;i=(xJ(b,81895,4)|0)==0;b=i?h+5|0:b;c[f>>2]=e;c[f+4>>2]=g+20;c[f+8>>2]=d;f=FL(b,81900,f)|0;if((f|0)>0?(c[4490]=(c[e>>2]|0)+-1,(f|0)!=1):0){d=b+(c[d>>2]|0)|0;b=d;a:while(1){e=a[b>>0]|0;switch(e<<24>>24){case 0:case 34:break a;default:{}}b=b+1|0}if((b|0)!=(d|0)&e<<24>>24==34){a[b>>0]=0;Ap(d,b-d|0)}}l=g;return}function mp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=l;l=l+2080|0;i=j+8|0;f=j;b=j+1056|0;d=j+32|0;h=j+16|0;k=a[(c[42016]|0)+((c[42017]|0)+-1)>>0]|0;e=k<<24>>24==46;if(e|((k&255)+-48|0)>>>0<10)if(e?(zp()|0)!=0:0)g=4;else b=0;else g=4;if((g|0)==4){k=c[42018]|0;cm(h,1024,b);fm(h,81806)|0;fm(h,c[42016]|0)|0;c[f>>2]=c[4490];yJ(d,81850,f)|0;fm(h,d)|0;fm(h,(k|0)==0?81800:k)|0;fm(h,81867)|0;d=h+4|0;b=c[d>>2]|0;if(b>>>0>=(c[h+8>>2]|0)>>>0){dm(h,1)|0;b=c[d>>2]|0}a[b>>0]=0;b=c[h>>2]|0;c[d>>2]=b;c[i>>2]=b;_l(0,81892,i)|0;gm(h);b=1}l=j;return b|0}function np(){var b=0;b=c[42031]|0;if(!b){b=wN(1024)|0;c[42031]=b;c[42033]=b+1024}c[42032]=b;a[b>>0]=0;return}function op(){c[42045]=ap(c[41994]|0,c[42031]|0)|0;a[c[42031]>>0]=0;return}function pp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=c[42032]|0;d=c[42031]|0;if(e>>>0>d>>>0){e=e+-1|0;f=3}a:while(1){if((f|0)==3)c[42032]=e;f=c[42033]|0;g=f;do{h=b;b=b+1|0;h=a[h>>0]|0;i=e;e=e+1|0;a[i>>0]=h;if(!(h<<24>>24))break a}while(e>>>0<f>>>0);c[42032]=e;f=d;i=g-f<<1;d=zN(d,i)|0;c[42031]=d;c[42033]=d+i;e=d+(e-f)|0;f=3}c[42032]=e;return}function qp(){c[42045]=bp(c[41994]|0,c[42031]|0)|0;a[c[42031]>>0]=0;return}function rp(){var d=0,e=0,f=0,g=0,h=0;h=c[42026]|0;g=c[42016]|0;e=(c[(c[(c[42024]|0)+(c[42025]<<2)>>2]|0)+28>>2]|0)+(c[42023]|0)|0;while(1){if(g>>>0>=h>>>0)break;d=a[g>>0]|0;if(!(d<<24>>24))d=1;else d=c[17964+((d&255)<<2)>>2]|0;if(b[56696+(e<<1)>>1]|0){c[42027]=e;c[42028]=g}a:while(1){f=d&255;do{d=(b[56882+(e<<1)>>1]|0)+f|0;if((b[57092+(d<<1)>>1]|0)==(e|0))break a;d=b[57628+(e<<1)>>1]|0;e=d<<16>>16}while(d<<16>>16<=92);d=c[18988+(f<<2)>>2]|0}g=g+1|0;e=b[57838+(d<<1)>>1]|0}return e|0}function sp(a){a=a|0;var d=0;if(b[56696+(a<<1)>>1]|0){d=c[42026]|0;c[42027]=a;c[42028]=d}while(1){d=(b[56882+(a<<1)>>1]|0)+1|0;if((b[57092+(d<<1)>>1]|0)==(a|0))break;a=b[57628+(a<<1)>>1]|0}d=b[57838+(d<<1)>>1]|0;return (d<<16>>16==92?0:d<<16>>16)|0}function tp(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=(c[42024]|0)+(c[42025]<<2)|0;g=c[i>>2]|0;h=c[g+4>>2]|0;e=c[42016]|0;l=c[42026]|0;j=l;if(l>>>0>(h+((c[42030]|0)+1)|0)>>>0)up(81653);f=j-e|0;if(!(c[g+40>>2]|0))b=(f|0)==1?1:2;else{l=f+-1|0;g=h;f=0;while(1){if((f|0)>=(l|0))break;a[g>>0]=a[e>>0]|0;g=g+1|0;e=e+1|0;f=f+1|0}e=c[i>>2]|0;do if((c[e+44>>2]|0)==2){c[42030]=0;c[e+16>>2]=0;m=17}else{while(1){h=e+12|0;g=c[h>>2]|0;f=g-l+-1|0;if(f|0){m=16;break}f=e+4|0;i=c[f>>2]|0;if(!(c[e+20>>2]|0)){m=12;break}e=g<<1;e=(e|0)==0?(g>>>3)+g|0:e;c[h>>2]=e;e=vp(i,e+2|0)|0;c[f>>2]=e;if(!e)break;i=e+(j-i)|0;c[42026]=i;e=c[(c[42024]|0)+(c[42025]<<2)>>2]|0;j=i}if((m|0)==12)c[f>>2]=0;else if((m|0)==16){d=Za[c[c[(c[42019]|0)+8>>2]>>2]&31](c[42020]|0,(c[e+4>>2]|0)+l|0,f>>>0<8192?f:8192)|0;c[42030]=d;e=c[(c[42024]|0)+(c[42025]<<2)>>2]|0;c[e+16>>2]=d;if(!d){m=17;break}else{b=0;k=e;break}}up(81709)}while(0);do if((m|0)==17)if(!l){wp(c[42014]|0);b=1;d=c[42030]|0;k=c[(c[42024]|0)+(c[42025]<<2)>>2]|0;break}else{c[e+44>>2]=2;b=2;d=0;k=e;break}while(0);e=d+l|0;do if(e>>>0>(c[k+12>>2]|0)>>>0){m=vp(c[k+4>>2]|0,e+(d>>>1)|0)|0;d=(c[42024]|0)+(c[42025]<<2)|0;c[(c[d>>2]|0)+4>>2]=m;d=c[(c[d>>2]|0)+4>>2]|0;if(!d)up(81753);else{n=c[42030]|0;o=d;break}}else{n=d;o=c[k+4>>2]|0}while(0);n=n+l|0;c[42030]=n;a[o+n>>0]=0;o=(c[42024]|0)+(c[42025]<<2)|0;a[(c[(c[o>>2]|0)+4>>2]|0)+((c[42030]|0)+1)>>0]=0;c[42016]=c[(c[o>>2]|0)+4>>2]}return b|0}function up(a){a=a|0;var b=0,d=0;b=l;l=l+16|0;d=c[13857]|0;c[b>>2]=a;OL(d,81649,b)|0;Va(2)}function vp(a,b){a=a|0;b=b|0;return zN(a,b)|0}function wp(a){a=a|0;var b=0,d=0,e=0;d=c[42024]|0;if((d|0)!=0?(b=c[d+(c[42025]<<2)>>2]|0,(b|0)!=0):0)e=4;else{ip();b=jp(c[42014]|0,16384)|0;d=c[42024]|0;c[d+(c[42025]<<2)>>2]=b;if(!d)b=0;else e=4}xp(b,a);kp();return}function xp(a,b){a=a|0;b=b|0;var d=0;d=c[(bJ()|0)>>2]|0;yp(a);c[a>>2]=b;c[a+40>>2]=1;b=c[42024]|0;if(!b)b=0;else b=c[b+(c[42025]<<2)>>2]|0;if((b|0)!=(a|0)){c[a+32>>2]=1;c[a+36>>2]=0}c[a+24>>2]=0;c[(bJ()|0)>>2]=d;return}function yp(b){b=b|0;var d=0;if(b|0){c[b+16>>2]=0;d=b+4|0;a[c[d>>2]>>0]=0;a[(c[d>>2]|0)+1>>0]=0;c[b+8>>2]=c[d>>2];c[b+28>>2]=1;c[b+44>>2]=0;d=c[42024]|0;if(!d)d=0;else d=c[d+(c[42025]<<2)>>2]|0;if((d|0)==(b|0))kp()}return}function zp(){var b=0,d=0;d=c[42016]|0;b=(c[42017]|0)+-2|0;while(1){if((b|0)<=-1){b=0;break}if((a[d+b>>0]|0)==46){b=1;break}else b=b+-1|0}return b|0}function Ap(a,b){a=a|0;b=b|0;var d=0,e=0;d=c[42034]|0;if((d|0)<(b|0)){e=b+1|0;if(!d)d=wN(e)|0;else d=zN(c[42035]|0,e)|0;c[42035]=d;c[42034]=b}else d=c[42035]|0;cL(d,a)|0;c[42018]=c[42035];return}function Bp(a){a=a|0;return wN(a)|0}function Cp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+2112|0;k=m+32|0;i=m+24|0;h=m+16|0;g=m+8|0;f=m;d=m+56|0;j=m+40|0;cm(j,1024,m+1080|0);e=c[42018]|0;if(e|0){fm(j,e)|0;fm(j,82006)|0}fm(j,b)|0;c[f>>2]=c[4490];yJ(d,82009,f)|0;fm(j,d)|0;a:do if(!(a[c[42016]>>0]|0))switch(((c[42023]|0)+-1|0)/2|0|0){case 2:{c[g>>2]=16384;yJ(d,82029,g)|0;fm(j,d)|0;b=c[42031]|0;if(!(a[b>>0]|0))break a;i=TK(b)|0;fm(j,82091)|0;b=c[42031]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 3:{c[h>>2]=16384;yJ(d,82110,h)|0;fm(j,d)|0;b=c[42031]|0;if(!(a[b>>0]|0))break a;i=TK(b)|0;fm(j,82178)|0;b=c[42031]|0;if((i|0)>80)a[b+80>>0]=0;fm(j,b)|0;break a}case 1:{c[i>>2]=16384;yJ(d,82197,i)|0;fm(j,d)|0;break a}default:break a}else{fm(j,82021)|0;fm(j,c[42016]|0)|0;d=j+4|0;b=c[d>>2]|0;if(b>>>0>=(c[j+8>>2]|0)>>>0){dm(j,1)|0;b=c[d>>2]|0}c[d>>2]=b+1;a[b>>0]=39}while(0);e=j+4|0;b=c[e>>2]|0;d=j+8|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}c[e>>2]=b+1;a[b>>0]=10;b=c[e>>2]|0;if(b>>>0>=(c[d>>2]|0)>>>0){dm(j,1)|0;b=c[e>>2]|0}a[b>>0]=0;i=c[j>>2]|0;c[e>>2]=i;c[k>>2]=i;_l(1,81892,k)|0;gm(j);l=m;return}function Dp(){Ep(c[42016]|0);return}function Ep(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=c[42026]|0;a[j>>0]=a[174063]|0;i=(c[42024]|0)+(c[42025]<<2)|0;e=c[i>>2]|0;d=c[e+4>>2]|0;if(j>>>0<(d+2|0)>>>0){f=d+((c[42030]|0)+2)|0;g=d+((c[e+12>>2]|0)+2)|0;k=d;h=e;while(1){if(f>>>0<=k>>>0)break;e=f+-1|0;k=g+-1|0;a[k>>0]=a[e>>0]|0;h=c[i>>2]|0;f=e;g=k;k=c[h+4>>2]|0}e=g-f|0;d=j+e|0;j=c[h+12>>2]|0;c[42030]=j;c[h+16>>2]=j;if(d>>>0<(k+2|0)>>>0)up(82256);else{l=b+e|0;m=d}}else{l=b;m=j}b=m+-1|0;a[b>>0]=64;c[42016]=l;a[174063]=a[b>>0]|0;c[42026]=b;return}function Fp(){var a=0;a=c[42024]|0;if(!a)a=0;else a=c[a+(c[42025]<<2)>>2]|0;yp(a);return}function Gp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+80|0;f=e;g=a+52|0;Sp(a,c[g>>2]|0,17608);a=f+8|0;c[a>>2]=b;c[a+4>>2]=d;d=c[g>>2]|0;d=Za[c[d>>2]&31](d,f,4)|0;l=e;return d|0}function Hp(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;f=Gp(b,d,e)|0;if(!f){f=Yn(b,72)|0;c[f+64>>2]=c[b+64>>2];g=f+24|0;h=c[b+24>>2]|0;c[g>>2]=h;a[g>>0]=h&255&-9;c[f+56>>2]=b;c[f+60>>2]=c[b+60>>2];b=f+8|0;c[b>>2]=d;c[b+4>>2]=e;jn(f)|0}return f|0}function Ip(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=l;l=l+16|0;f=g;if(!(((b|0)!=0?(An(a,0,b,f,0)|0)!=0:0)?(e=f,e=Gp(a,c[e>>2]|0,c[e+4>>2]|0)|0,(e|0)!=0):0))if((d|0)!=0?(An(a,0,b,f,1)|0)!=0:0){e=f;e=Hp(a,c[e>>2]|0,c[e+4>>2]|0)|0;En(a,0,e)}else e=0;l=g;return e|0}function Jp(a){a=a|0;a=c[a+52>>2]|0;return Za[c[a>>2]&31](a,0,128)|0}function Kp(a){a=a|0;var b=0;b=Lp(a)|0;if(!b)a=0;else{b=c[b+52>>2]|0;a=Za[c[b>>2]&31](b,a,8)|0}return a|0}function Lp(a){a=a|0;return c[a+56>>2]|0}function Mp(a,b){a=a|0;b=b|0;a=c[a+52>>2]|0;return Za[c[a>>2]&31](a,b,2)|0}function Np(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[42037]|0;e=(b|0)!=0;do if(!a)if(e){xN(b);a=0;break}else{a=wN(d)|0;break}else if(e){Zn(a,b);a=0;break}else{a=Yn(a,d)|0;break}while(0);return a|0}function Op(a,b,d){a=a|0;b=b|0;d=d|0;a=c[42037]|0;if(!a)xN(b);else Zn(a,b);return}function Pp(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=b+28|0;f=c[e>>2]|0;c[e>>2]=2;c[42037]=a;d=Ql(b,d)|0;c[e>>2]=f;c[42037]=0;return d|0}function Qp(a,b,d){a=a|0;b=b|0;d=d|0;c[42037]=a;return Za[c[b>>2]&31](b,d,2)|0}function Rp(a,b){a=a|0;b=b|0;var d=0,e=0;d=(Ll(b,0,0)|0)+28|0;e=c[d>>2]|0;c[d>>2]=2;c[42037]=a;if(!(Kl(b)|0)){c[d>>2]=e;c[42037]=0;a=0}else a=1;return a|0}function Sp(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0?(Ll(b,0,0)|0)!=(c|0):0)Ll(b,c,0)|0;return}function Tp(a,b){a=a|0;b=b|0;if(!(dp(a)|0))b=Vp(a,b)|0;else Up(a,b)|0;return b|0}function Up(b,c){b=b|0;c=c|0;var d=0,e=0,f=0;a[c>>0]=60;f=c+1|0;while(1){d=a[b>>0]|0;e=f+1|0;if(!(d<<24>>24))break;a[f>>0]=d;f=e;b=b+1|0}a[f>>0]=62;a[e>>0]=0;return c|0}function Vp(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:do if((b|0)!=0?(a[b>>0]|0)!=0:0){a[d>>0]=34;k=a[b>>0]|0;t=0;g=((k+-45&255)<2|((k&255)+-48|0)>>>0<10)&1;h=0;i=0;j=0;e=d+1|0;f=b+1|0;b:while(1){o=g;l=e;p=k;while(1){g=l+1|0;if(!(p<<24>>24))break b;e=p&255;c:do if(p<<24>>24==34){a[l>>0]=92;h=1}else{if(!o){g=p<<24>>24>-1&(p<<24>>24!=95&(cK(e)|0)==0);o=0;h=g?1:h;g=l;break}switch(p<<24>>24){case 45:{g=(j|0)==0;o=g?o:0;h=g?h:1;g=l;break c}case 46:{g=(i|0)==0;o=g?o:0;h=g?h:1;i=i+1|0;g=l;break c}default:{g=(e+-48|0)>>>0<10;o=g?o:0;h=g?h:1;g=l;break c}}}while(0);e=g+1|0;a[g>>0]=p;s=f+1|0;r=a[f>>0]|0;j=j+1|0;f=c[4796]|0;if(!f){l=e;f=s;p=r;continue}k=r&255;l=r<<24>>24!=0;m=g+2|0;n=r<<24>>24>-1;q=g+3|0;if((t&l?!(p<<24>>24==92|p<<24>>24>-1&((p+-45&255)>1&(cK(p<<24>>24)|0)==0)^1):0)?(r+-45&255)<2|(cK(k)|0)!=0|n^1:0)break;if((j|0)<(f|0)|l^1){l=e;f=s;p=r;continue}if(p<<24>>24==92|p<<24>>24>-1&((cK(p<<24>>24)|0)==0&(p+-45&255)>1)^1){t=1;g=o;k=r;f=s;continue b}if(!((r+-45&255)<2|(cK(k)|0)!=0|n^1)){t=1;g=o;k=r;f=s;continue b}a[e>>0]=92;a[m>>0]=10;h=1;j=0;l=q;f=s;p=r}a[e>>0]=92;a[m>>0]=10;t=0;g=o;h=1;j=0;k=r;e=q;f=s}a[l>>0]=34;a[g>>0]=0;if(!h){if((j|0)==1?((a[b>>0]|0)+-45&255)<2:0){b=d;break}else e=19188;while(1){f=c[e>>2]|0;if(!f)break a;if(!(SK(f,b)|0)){b=d;break}else e=e+4|0}}else b=d}else b=82288;while(0);return b|0}function Wp(a){a=a|0;return Tp(a,Xp(a)|0)|0}function Xp(a){a=a|0;var b=0;b=((TK(a)|0)<<1)+2|0;b=b>>>0>1024?b:1024;a=c[42039]|0;if(b>>>0>(c[42038]|0)>>>0){if(!a)a=wN(b)|0;else a=zN(a,b)|0;c[42039]=a;c[42038]=b}return a|0}function Yp(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if((Zp(a)|0)==0?io(a,b,0)|0:0){a=1;break}a=Kp(a)|0}return a|0}function Zp(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=Dn(b)|0;if((h|0)!=0?(a[h>>0]|0)!=37:0)d=0;else e=3;a:do if((e|0)==3){d=om(b)|0;b:do if(d|0?(f=om(Lp(b)|0)|0,f|0):0){h=Sl(c[(om(so(b)|0)|0)+8>>2]|0)|0;g=d+12|0;e=f+12|0;d=0;while(1){if((d|0)>=(h|0))break b;f=c[(c[g>>2]|0)+(d<<2)>>2]|0;if((f|0?(i=c[(c[e>>2]|0)+(d<<2)>>2]|0,i|0):0)?vJ(f,i)|0:0){d=0;break a}d=d+1|0}}while(0);d=jm(b,0)|0;if(d)if((Sl(c[d+8>>2]|0)|0)>0)d=0;else return (Sl(c[d+12>>2]|0)|0)<1|0;else d=1}while(0);return d|0}function _p(b,d){b=b|0;d=d|0;var e=0,f=0;c[42040]=0;e=Im(b,82298)|0;if((e|0?((a[e>>0]|0)+-48|0)>>>0<10:0)?(f=rJ(e,0,10)|0,(f|0)==0|(f|0)>59):0)c[4796]=f;$p(b,1);if(((aq(b,d,1)|0)!=-1?(bq(b,d)|0)!=-1:0)?(cq(b,d)|0)!=-1:0){c[4796]=128;b=fb[c[(c[(c[b+64>>2]|0)+8>>2]|0)+8>>2]&31](d)|0}else b=-1;return b|0}function $p(a,b){a=a|0;b=b|0;var d=0;c[a>>2]=c[a>>2]&-9;d=Jp(a)|0;while(1){if(!d)break;$p(d,0);d=Kp(d)|0}a:do if(b|0){b=co(a)|0;while(1){if(!b)break a;c[b>>2]=c[b>>2]&-9;d=Pm(a,b)|0;while(1){if(!d)break;c[d>>2]=c[d>>2]&-9;d=Rm(a,d)|0}b=eo(a,b)|0}}while(0);return}function aq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;if((e|0)==0?(Lp(b)|0)!=0:0){i=0;g=174318;k=94296}else{k=(a[b+24>>0]&1)==0?174318:82342;g=(sn(b)|0)==0;c[42041]=ym(b,2,96258,0)|0;c[42042]=ym(b,2,96267,0)|0;i=1;g=g?174318:82345}f=Dn(b)|0;if((f|0)!=0?(a[f>>0]|0)!=37:0){h=1;j=87598}else{h=0;j=174318;f=174318}do if((dq(b,d)|0)!=-1?(eq(b,d,g)|0)!=-1:0){g=(h|0)==0;if(h|i|0){if((eq(b,d,k)|0)==-1){f=-1;break}if((eq(b,d,87591)|0)==-1){f=-1;break}}if(!g?(pq(b,d,f)|0)==-1:0){f=-1;break}if(((eq(b,d,j)|0)!=-1?(eq(b,d,82353)|0)!=-1:0)?(c[42040]=(c[42040]|0)+1,(uq(b,d,e)|0)!=-1):0){c[b>>2]=c[b>>2]|8;f=0}else f=-1}else f=-1;while(0);return f|0}function bq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if((fq(a,b)|0)==-1)d=-1;else{k=jm(so(a)|0,0)|0;i=(k|0)!=0;j=k+8|0;k=k+12|0;h=co(a)|0;while(1){if(!h){d=0;break a}if(gq(a,h,(c[h>>2]|0)>>>4,0)|0){if(i)d=c[j>>2]|0;else d=0;if((hq(h,b,d)|0)==-1){d=-1;break a}}g=Pm(a,h)|0;d=h;while(1){if(!g)break;f=g+-48|0;e=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0;if((d|0)!=(e|0)?(gq(a,e,(c[h>>2]|0)>>>4,0)|0)!=0:0){if(i)d=c[j>>2]|0;else d=0;if((hq(c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0,b,d)|0)==-1){d=-1;break a}d=c[((c[g>>2]&3|0)==2?g:f)+40>>2]|0}if(iq(a,g)|0){if(i)e=c[k>>2]|0;else e=0;if((jq(g,b,e)|0)==-1){d=-1;break a}}g=Rm(a,g)|0}h=eo(a,h)|0}}while(0);return d|0}function cq(a,b){a=a|0;b=b|0;c[42040]=(c[42040]|0)+-1;if((dq(a,b)|0)==-1)a=-1;else a=((eq(a,b,95790)|0)==-1)<<31>>31;return a|0}function dq(a,b){a=a|0;b=b|0;var d=0;d=c[42040]|0;while(1){if((d|0)<=0){d=0;break}if((eq(a,b,134915)|0)==-1){d=-1;break}else d=d+-1|0}return d|0}function eq(a,b,d){a=a|0;b=b|0;d=d|0;return lb[c[(c[(c[a+64>>2]|0)+8>>2]|0)+4>>2]&63](b,d)|0}function fq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=0;break}if(!(Zp(a)|0)){if((aq(a,b,0)|0)==-1){a=-1;break}if((bq(a,b)|0)==-1){a=-1;break}if((cq(a,b)|0)==-1){a=-1;break}}else fq(a,b)|0;a=Kp(a)|0}return a|0}function gq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((Yp(a,b)|0)==0?(rq(a,b,c,d)|0)!=0:0)if((sq(a,b)|0)==0?(tq(b)|0)==0:0)e=5;else a=1;else e=5;if((e|0)==5)a=0;return a|0}function hq(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=ro(a)|0;do if((dq(d,b)|0)!=-1?(kq(a,b)|0)!=-1:0){if((mq(a)|0)==0?(nq(a,b,c)|0)==-1:0){a=-1;break}a=eq(d,b,82309)|0}else a=-1;while(0);return a|0}function iq(a,b){a=a|0;b=b|0;a=Jp(a)|0;while(1){if(!a){a=1;break}if((Zp(a)|0)==0?en(a,b,0)|0:0){a=0;break}a=Kp(a)|0}return a|0}function jq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=c[a>>2]&3;g=c[((e|0)==3?a:a+48|0)+40>>2]|0;e=c[((e|0)==2?a:a+-48|0)+40>>2]|0;f=ro(g)|0;do if((((((dq(f,b)|0)!=-1?(kq(g,b)|0)!=-1:0)?(lq(a,b,c[42041]|0)|0)!=-1:0)?(g=(qn(ro(g)|0)|0)!=0,(eq(f,b,g?85055:85060)|0)!=-1):0)?(kq(e,b)|0)!=-1:0)?(lq(a,b,c[42042]|0)|0)!=-1:0){if(!(mq(a)|0)){if((nq(a,b,d)|0)==-1){a=-1;break}}else if((oq(a,b,1)|0)==-1){a=-1;break}a=eq(f,b,82309)|0}else a=-1;while(0);return a|0}function kq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=l;l=l+32|0;g=i;d=i+8|0;e=Dn(a)|0;f=ro(a)|0;if(!e){j=a+8|0;a=c[j+4>>2]|0;e=g;c[e>>2]=c[j>>2];c[e+4>>2]=a;yJ(d,82329,g)|0;if((eq(f,b,d)|0)==-1)a=-1;else h=4}else if((pq(f,b,e)|0)==-1)a=-1;else h=4;if((h|0)==4)a=0;l=i;return a|0}function lq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;a:do if((d|0)!=0?(e=ro(b)|0,f=Jm(b,d)|0,(a[f>>0]|0)!=0):0)if((eq(e,c,92977)|0)==-1)b=-1;else{do if(dp(f)|0){if((pq(e,c,f)|0)==-1){b=-1;break a}}else{b=VK(f,58)|0;if(!b)if((qq(e,c,f,0)|0)==-1){b=-1;break a}else break;a[b>>0]=0;if((qq(e,c,f,0)|0)==-1){b=-1;break a}if((eq(e,c,92977)|0)==-1){b=-1;break a}if((qq(e,c,b+1|0,0)|0)==-1){b=-1;break a}a[b>>0]=58}while(0);b=0}else b=0;while(0);return b|0}function mq(a){a=a|0;return (c[a>>2]|0)>>>3&1|0}function nq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:do if(!(c[a>>2]&2)){e=0;k=4}else{switch(oq(a,b,0)|0){case -1:{e=-1;break a}case 0:{e=0;k=4;break a}default:{}}e=1;k=4}while(0);b:do if((k|0)==4){f=om(a)|0;j=ro(a)|0;c:do if(f){i=f+12|0;h=Za[c[d>>2]&31](d,0,128)|0;while(1){if(!h)break c;f=h+16|0;do if(c[a>>2]&2){g=c[42041]|0;if(g|0?(c[f>>2]|0)==(c[g+16>>2]|0):0)break;g=c[42042]|0;if(!((g|0)!=0?(c[f>>2]|0)==(c[g+16>>2]|0):0))k=12}else k=12;while(0);if((k|0)==12){k=0;if((c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)!=(c[h+12>>2]|0)){g=e+1|0;if(e){if((eq(j,b,82324)|0)==-1){e=-1;break b}if((dq(j,b)|0)==-1){e=-1;break b}}else{if((dq(j,b)|0)==-1){e=-1;break b}if((eq(j,b,82321)|0)==-1){e=-1;break b}c[42040]=(c[42040]|0)+1}if((pq(j,b,c[h+8>>2]|0)|0)==-1){e=-1;break b}if((eq(j,b,82327)|0)==-1){e=-1;break b}if((pq(j,b,c[(c[i>>2]|0)+(c[f>>2]<<2)>>2]|0)|0)==-1){e=-1;break b}else e=g}}h=Za[c[d>>2]&31](d,h,8)|0}}while(0);if((e|0)>0){if((eq(j,b,82319)|0)==-1){e=-1;break}c[42040]=(c[42040]|0)+-1}c[a>>2]=c[a>>2]|8;e=0}while(0);return e|0}function oq(b,c,d){b=b|0;c=c|0;d=d|0;var e=0,f=0;e=Dn(b)|0;b=ro(b)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)if((eq(b,c,82312)|0)!=-1?(pq(b,c,e)|0)!=-1:0)if((d|0)!=0?(eq(b,c,82319)|0)==-1:0)b=-1;else{b=1;f=7}else b=-1;else{b=0;f=7}return b|0}function pq(a,b,c){a=a|0;b=b|0;c=c|0;return qq(a,b,c,1)|0}function qq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!d)c=Vp(c,Xp(c)|0)|0;else c=Wp(c)|0;return eq(a,b,c)|0}function rq(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a:do if(0<e>>>0|(0==(e|0)?(c[b>>2]|0)>>>4>>>0<d>>>0:0))b=0;else{b=Sm(a,b)|0;while(1){if(!b){b=1;break a}if(0<e>>>0|(0==(e|0)?(c[c[b+40>>2]>>2]|0)>>>4>>>0<d>>>0:0)){b=0;break a}b=Tm(a,b)|0}}while(0);return b|0}function sq(a,b){a=a|0;b=b|0;if(!(Sm(a,b)|0))a=(Pm(a,b)|0)==0;else a=0;return a&1|0}function tq(a){a=a|0;var b=0,d=0,e=0;a=om(a)|0;a:do if(!a)a=0;else{d=a+8|0;e=c[d>>2]|0;b=a+12|0;a=Za[c[e>>2]&31](e,0,128)|0;while(1){if(!a){a=0;break a}if((c[(c[b>>2]|0)+(c[a+16>>2]<<2)>>2]|0)!=(c[a+12>>2]|0)){a=1;break a}e=c[d>>2]|0;a=Za[c[e>>2]&31](e,a,8)|0}}while(0);return a|0}function uq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=jm(a,0)|0;if(e)if(((vq(a,b,96302,c[e+16>>2]|0,d)|0)!=-1?(vq(a,b,96289,c[e+8>>2]|0,d)|0)!=-1:0)?(vq(a,b,96253,c[e+12>>2]|0,d)|0)!=-1:0)f=5;else a=-1;else f=5;if((f|0)==5)a=0;return a|0}function vq(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=(g|0)!=0;if(m)l=0;else l=Wl(f,0)|0;k=(l|0)==0;j=Za[c[f>>2]&31](f,0,128)|0;g=0;while(1){if(!j){n=23;break}i=j+12|0;n=c[i>>2]|0;if((n|0)!=0?(a[n>>0]|0)!=0:0)n=12;else n=7;do if((n|0)==7){n=0;if(!(a[j+22>>0]|0)){if(!k){h=Za[c[l>>2]&31](l,j,4)|0;o=c[h+12>>2]|0;if(o|0?a[o>>0]|0:0){n=12;break}if(!(a[h+22>>0]|0))n=12}}else n=12}while(0);if((n|0)==12){n=0;h=g+1|0;if(g){if((eq(b,d,82324)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}else{if((dq(b,d)|0)==-1){g=-1;break}if((eq(b,d,e)|0)==-1){g=-1;break}if((eq(b,d,82321)|0)==-1){g=-1;break}c[42040]=(c[42040]|0)+1}if((pq(b,d,c[j+8>>2]|0)|0)==-1){g=-1;break}if((eq(b,d,82327)|0)==-1){g=-1;break}if((pq(b,d,c[i>>2]|0)|0)==-1){g=-1;break}else g=h}j=Za[c[f>>2]&31](f,j,8)|0}do if((n|0)==23){if((g|0)>0){c[42040]=(c[42040]|0)+-1;if((g|0)!=1){if((eq(b,d,134917)|0)==-1){g=-1;break}if((dq(b,d)|0)==-1){g=-1;break}}g=(eq(b,d,82356)|0)==-1;if(m|g){g=g<<31>>31;break}}else if(m){g=0;break}Wl(f,l)|0;g=0}while(0);return g|0}function wq(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;switch(c[b>>2]&3){case 0:{g=19;break}case 1:{g=20;break}case 3:case 2:{g=21;break}default:{}}b=lb[g&63](a,b)|0;if(!b)b=-1;else{Aq(a,b,d,e,g,f);b=0}return b|0}function xq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=en(a,b,0)|0;return b|0}function yq(a,b){a=a|0;b=b|0;if((ro(b)|0)!=(a|0))b=io(a,b,0)|0;return b|0}function zq(a,b){a=a|0;b=b|0;return a|0}function Aq(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;h=(f|0)!=0;if(h)hb[c&127](a,b,d);g=Jp(a)|0;while(1){if(!g)break;i=lb[e&63](g,b)|0;if(i|0)Aq(g,i,c,d,e,f);g=Kp(g)|0}if(!h)hb[c&127](a,b,d);return}function Bq(){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+1200|0;s=u+800|0;h=u;c[42043]=0;c[42044]=-2;f=s;i=200;n=h;o=0;p=0;g=s;a:while(1){b[g>>1]=o;if((f+(i<<1)+-2|0)>>>0>g>>>0){q=i;r=f;k=h}else{m=(g-f>>1)+1|0;if(i>>>0>9999){t=76;break}j=i<<1;j=j>>>0<1e4?j:1e4;e=wN(j*6|3)|0;if(e){MN(e|0,f|0,m<<1|0)|0;i=e+(j>>>1<<2)|0;MN(i|0,n|0,m<<2|0)|0;if((f|0)==(s|0)){k=0;f=e}else{xN(f);k=0;f=e}}else{k=4;i=n}e=(k|0)==0;switch((e?((j|0)>(m|0)?0:9):k)&15){case 9:{e=1;t=77;break a}case 4:{t=76;break a}case 0:{q=j;r=f;k=e?i+(m<<2)+-4|0:h;n=i;g=e?f+(m<<1)+-2|0:g;break}default:{e=0;break a}}}if((o|0)==6){e=0;f=r;t=77;break}e=a[82360+o>>0]|0;i=e<<24>>24;j=(p|0)!=0;do if(e<<24>>24!=-18){f=c[42044]|0;if((f|0)==-2){f=hp()|0;c[42044]=f}if((f|0)>=1)if(f>>>0<269)h=d[82440+f>>0]|0;else h=2;else{c[42044]=0;h=0}f=h+i|0;if(f>>>0<=59?(d[82709+f>>0]|0)==(h|0):0){o=a[82769+f>>0]|0;e=o<<24>>24;if(o<<24>>24<1){f=0-e|0;t=23;break}else{c[42044]=-2;h=k+4|0;c[h>>2]=c[42045];j=j?p+-1|0:0;break}}else t=22}else t=22;while(0);if((t|0)==22){t=0;o=a[82829+o>>0]|0;f=o&255;if(!(o<<24>>24)){do if(j)if((p|0)==3){f=c[42044]|0;if((f|0)<1)if(!f){e=1;f=r;t=77;break a}else{f=k;break}else{c[42044]=-2;f=k;break}}else f=k;else{c[42043]=(c[42043]|0)+1;Cp(125385);f=k}while(0);while(1){if(e<<24>>24==18)break;if((g|0)==(r|0)){e=1;f=r;t=77;break a}e=g+-2|0;f=f+-4|0;g=e;e=a[82360+(b[e>>1]|0)>>0]|0}h=f+4|0;c[h>>2]=c[42045];e=1;j=3}else t=23}do if((t|0)==23){t=0;j=d[82909+f>>0]|0;e=c[k+(1-j<<2)>>2]|0;h=k+-4|0;i=k+-8|0;b:do switch(f|0){case 2:{Cq();Dq();break}case 3:{if(c[42046]|0){Cq();Dq();ln(c[42046]|0)|0;c[41994]=0;c[42046]=0}break}case 6:{Eq(c[k>>2]|0,c[h>>2]|0,c[i>>2]|0);break}case 7:{e=c[k>>2]|0;break}case 8:{e=0;break}case 9:{e=1;break}case 10:{e=0;break}case 11:{e=0;break}case 12:{e=1;break}case 21:if(!(c[h>>2]|0)){Gq();break b}else{Fq();break b}case 24:{Hq();break}case 25:{Hq();break}case 26:{e=1;break}case 27:{e=0;break}case 30:{Iq(c[k>>2]|0,0,0);break}case 31:{Iq(c[i>>2]|0,c[k>>2]|0,0);break}case 32:{Iq(c[k+-16>>2]|0,c[i>>2]|0,c[k>>2]|0);break}case 33:{Jq(c[i>>2]|0,c[h>>2]|0);break}case 34:{Jq(258,0);break}case 35:{e=258;break}case 36:{e=259;break}case 37:{e=260;break}case 38:{e=c[h>>2]|0;break}case 39:{e=0;break}case 48:{Kq(c[i>>2]|0,c[k>>2]|0);break}case 49:{Kq(c[k>>2]|0,0);break}case 51:{Lq(c[k>>2]|0);break}case 52:{Mq();break}case 53:{e=c[k>>2]|0;break}case 54:{e=0;break}case 55:{e=0;break}case 59:{e=c[k>>2]|0;break}case 60:{e=c[k>>2]|0;break}case 61:{e=c[k>>2]|0;break}case 62:{e=Nq(c[i>>2]|0,c[k>>2]|0)|0;break}default:{}}while(0);h=0-j|0;o=k+(h<<2)|0;g=g+(h<<1)|0;h=o+4|0;c[o+4>>2]=e;e=(d[82972+f>>0]|0)+-24|0;o=b[g>>1]|0;f=o+(a[83035+e>>0]|0)|0;if(f>>>0<60?(d[82709+f>>0]|0)==(o|0):0){e=a[82769+f>>0]|0;j=p;break}e=a[83070+e>>0]|0;j=p}while(0);f=r;i=q;o=e;p=j;g=g+2|0}if((t|0)==76){Cp(125398);e=2;t=77}if((t|0)==77)if((f|0)!=(s|0))xN(f);l=u;return e|0}function Cq(){var a=0,b=0;a=c[42047]|0;while(1){if(!a)break;Vq(a+8|0);Vq((c[42047]|0)+24|0);Vq((c[42047]|0)+16|0);b=Oq(c[42047]|0)|0;c[42047]=b;a=b}return}function Dq(){Dp();Mn(c[42046]|0);return}function Eq(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=l;l=l+16|0;g=h;f=c[42046]|0;if(!f){a[168192]=d&1|(e&255)<<1&2|a[168192]&-12|8;f=c[42049]|0;c[g>>2]=c[42048];f=gn(b,g,f)|0;c[42046]=f}c[41994]=f;c[42047]=Pq(c[42047]|0,f)|0;cp(0,b)|0;l=h;return}function Fq(){var b=0,d=0,e=0,f=0,g=0,h=0;Uq(2);e=c[42047]|0;f=a[83105]|0;h=0;b=e+24|0;while(1){d=c[b>>2]|0;if(!d)break;if(((c[d>>2]|0)==267?(g=c[d+4>>2]|0,(a[g>>0]|0)==f<<24>>24):0)?(vJ(g,83105)|0)==0:0)b=c[d+8>>2]|0;else b=h;h=b;b=d+12|0}b=e+16|0;a:while(1){e=c[b>>2]|0;b=e+12|0;if(!(c[b>>2]|0))break;d=e+4|0;if((c[e>>2]|0)==262){e=c[d>>2]|0;d=co(e)|0;while(1){if(!d)continue a;g=io(c[c[42047]>>2]|0,d,0)|0;ar(g,0,c[b>>2]|0,h);d=eo(e,d)|0}}else while(1){d=c[d>>2]|0;if(!d)continue a;ar(c[d+4>>2]|0,c[d+8>>2]|0,c[b>>2]|0,h);d=d+12|0}}Vq((c[42047]|0)+8|0);Vq((c[42047]|0)+16|0);Vq((c[42047]|0)+24|0);c[(c[42047]|0)+4>>2]=0;return}function Gq(){var a=0;Uq(1);a=(c[42047]|0)+8|0;while(1){a=c[a>>2]|0;if(!a)break;$q(c[a+4>>2]|0);a=a+12|0}Vq((c[42047]|0)+8|0);Vq((c[42047]|0)+24|0);Vq((c[42047]|0)+16|0);c[(c[42047]|0)+4>>2]=0;return}function Hq(){var a=0,b=0;a=c[42047]|0;b=c[a+8>>2]|0;if(!b){b=c[a+4>>2]|0;if(!b)b=0;else{b=_q(b)|0;a=c[42047]|0}c[a+4>>2]=0}else{b=Zq(b)|0;a=c[42047]|0;c[a+12>>2]=0;c[a+8>>2]=0}if(b|0)Rq(a+16|0,b);return}function Iq(a,b,d){a=a|0;b=b|0;d=d|0;if(d)b=Xq(b,d)|0;d=Yq(no(c[c[42047]>>2]|0,a,1)|0,b)|0;Rq((c[42047]|0)+8|0,d);cp(c[42046]|0,a)|0;return}function Jq(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;if(d|0)Tq();d=(c[42047]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;if(!(c[d+8>>2]|0))Tq();d=d+12|0}g=(b|0)==260?2:(b|0)==259&1;Uq(g);b=c[42047]|0;d=b+24|0;while(1){f=c[d>>2]|0;if(!f)break;do if((c[f>>2]|0)!=267){d=c[f+4>>2]|0;e=c[b>>2]|0;if(!((a[d+21>>0]|0)!=0&(e|0)==(c[42046]|0))){d=ym(e,g,c[d+8>>2]|0,c[f+8>>2]|0)|0;b=c[42047]|0;if((c[b>>2]|0)!=(c[42046]|0))break}a[d+22>>0]=1}while(0);d=f+12|0}Vq(b+24|0);return}function Kq(a,b){a=a|0;b=b|0;b=Qq(a,b)|0;Rq((c[42047]|0)+24|0,b);return}function Lq(a){a=a|0;var b=0;b=c[42047]|0;c[42047]=Pq(b,Ip(c[b>>2]|0,a,1)|0)|0;cp(c[42046]|0,a)|0;return}function Mq(){var a=0,b=0;a=c[42047]|0;b=c[a>>2]|0;a=Oq(a)|0;c[42047]=a;c[a+4>>2]=b;return}function Nq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+1024|0;f=g;d=TK(a)|0;d=d+1+(TK(b)|0)|0;if(d>>>0<1025)d=f;else d=wN(d)|0;cL(d,a)|0;sN(d,b)|0;e=ap(c[42046]|0,d)|0;cp(c[42046]|0,a)|0;cp(c[42046]|0,b)|0;if((d|0)!=(f|0))xN(d);l=g;return e|0}function Oq(a){a=a|0;var b=0;b=c[(c[42047]|0)+32>>2]|0;Zn(c[42046]|0,a);return b|0}function Pq(a,b){a=a|0;b=b|0;var d=0;d=Yn(c[42046]|0,36)|0;c[d+32>>2]=a;c[d>>2]=b;return d|0}function Qq(a,b){a=a|0;b=b|0;return Sq(267,a,b)|0}function Rq(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+4|0;e=c[d>>2]|0;if(e|0)c[e+12>>2]=b;c[d>>2]=b;if(!(c[a>>2]|0))c[a>>2]=b;return}function Sq(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=Yn(c[42046]|0,16)|0;c[e>>2]=a;c[e+4>>2]=b;c[e+8>>2]=d;return e|0}function Tq(){var a=0;a=l;l=l+16|0;_l(0,83109,a)|0;l=a;return}function Uq(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=(b|0)==2;d=(c[42047]|0)+24|0;while(1){d=c[d>>2]|0;if(!d)break;e=d+4|0;f=c[e>>2]|0;if(!((g?(a[f>>0]|0)==(a[83105]|0):0)?!(vJ(f,83105)|0):0)){h=ym(c[c[42047]>>2]|0,b,f,0)|0;c[e>>2]=h;if(!h)c[e>>2]=ym(c[c[42047]>>2]|0,b,f,174318)|0;c[d>>2]=266;cp(c[42046]|0,f)|0}d=d+12|0}return}function Vq(a){a=a|0;Wq(c[a>>2]|0);c[a+4>>2]=0;c[a>>2]=0;return}function Wq(a){a=a|0;var b=0;while(1){if(!a)break;b=c[a+12>>2]|0;switch(c[a>>2]|0){case 265:{Wq(c[a+4>>2]|0);break}case 266:case 267:{cp(c[42046]|0,c[a+8>>2]|0)|0;break}default:{}}Zn(c[42046]|0,a);a=b}return}function Xq(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+1040|0;f=h;g=h+8|0;d=TK(a)|0;d=d+2+(TK(b)|0)|0;if(d>>>0<1025)e=g;else e=wN(d)|0;c[f>>2]=a;c[f+4>>2]=b;yJ(e,83142,f)|0;d=ap(c[42046]|0,e)|0;cp(c[42046]|0,a)|0;cp(c[42046]|0,b)|0;if((e|0)!=(g|0))xN(e);l=h;return d|0}function Yq(a,b){a=a|0;b=b|0;return Sq(259,a,b)|0}function Zq(a){a=a|0;return Sq(265,a,0)|0}function _q(a){a=a|0;return Sq(262,a,0)|0}function $q(a){a=a|0;var b=0,d=0;b=(c[42047]|0)+24|0;while(1){b=c[b>>2]|0;if(!b)break;if((c[b>>2]|0)==266?(d=c[b+4>>2]|0,d|0):0)Cm(a,d,c[b+8>>2]|0)|0;b=b+12|0}return}function ar(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=d+4|0;a:do if((c[d>>2]|0)==262){d=c[f>>2]|0;f=co(d)|0;while(1){if(!f)break a;br(a,b,io(c[c[42047]>>2]|0,f,0)|0,0,e);f=eo(d,f)|0}}else while(1){f=c[f>>2]|0;if(!f)break a;d=io(c[c[42047]>>2]|0,c[f+4>>2]|0,0)|0;br(a,b,d,c[f+8>>2]|0,e);f=f+12|0}while(0);return}function br(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0;d=an(c[c[42047]>>2]|0,a,d,f,1)|0;if(d|0){g=c[d>>2]&3;f=c[((g|0)==2?d:d+-48|0)+40>>2]|0;a=(f|0)==(a|0)?(c[((g|0)==3?d:d+48|0)+40>>2]|0)!=(f|0):0;cr(d,96258,a?e:b);cr(d,96267,a?b:e);$q(d)}return}\nfunction Cg(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0;S=l;l=l+256|0;E=S+232|0;D=S+216|0;Q=S+88|0;P=S+80|0;L=S+64|0;M=S+200|0;N=S+184|0;O=S;F=S+168|0;G=S+152|0;H=S+136|0;I=S+120|0;J=S+104|0;C=c[g>>2]&3;K=c[((C|0)==3?g:g+48|0)+40>>2]|0;C=c[((C|0)==2?g:g+-48|0)+40>>2]|0;do if((yy(K)|0)!=2?(yy(C)|0)!=2:0){g=0;j=0;m=0;while(1){if((m|0)>=(f|0))break;B=c[(c[d+(m+e<<2)>>2]|0)+16>>2]|0;g=((c[B+96>>2]|0)!=0&1)+g|0;if(!((a[B+44>>0]|0)==0?(a[B+84>>0]|0)==0:0))j=1;m=m+1|0}if(!j)if(!g){Eg(K,C,d,e,f,i);break}else{Jg(K,C,d,e,f,i,g);break}z=sw(156)|0;A=Kg(b,z)|0;w=Ip(A,78336,1)|0;Oo(w,122293,280,1)|0;Km(w,80034,80048)|0;k=+h[(c[C+16>>2]|0)+16>>3];n=+h[(c[K+16>>2]|0)+16>>3];B=b+16|0;u=(c[(c[B>>2]|0)+116>>2]&1|0)==0;v=u?C:K;u=u?K:C;w=Lg(w,u)|0;x=Lg(A,v)|0;g=0;t=0;while(1){s=(g|0)!=0;if((t|0)>=(f|0))break;j=d+(t+e<<2)|0;while(1){r=c[j>>2]|0;q=r+16|0;j=c[q>>2]|0;if(!(a[j+112>>0]|0))break;else j=j+116|0}if((c[((c[r>>2]&3|0)==3?r:r+48|0)+40>>2]|0)==(u|0))m=Mg(A,w,x,r)|0;else m=Mg(A,x,w,r)|0;j=c[q>>2]|0;c[j+120>>2]=m;if(!s)if((a[j+44>>0]|0)==0?(a[j+84>>0]|0)==0:0){c[(c[m+16>>2]|0)+120>>2]=r;g=m}else g=0;t=t+1|0}if(s)y=g;else y=an(A,w,x,0,1)|0;Cm(y,c[42244]|0,78340)|0;g=A+16|0;r=c[g>>2]|0;c[r+144>>2]=c[(c[B>>2]|0)+144>>2];c[r+188>>2]=A;FB(A,i);Bf(A);kj(A,0);uh(A,0);xi(A,0);r=u+16|0;u=c[r>>2]|0;i=c[v+16>>2]|0;s=w+16|0;p=+(~~((+h[(c[s>>2]|0)+16>>3]+ +h[(c[x+16>>2]|0)+16>>3])*.5)|0);o=+(~~k|0);k=+(~~n|0);n=+(~~((+h[u+16>>3]-+h[u+96>>3]+ +h[i+16>>3]+ +h[i+88>>3])*.5)|0);g=(c[g>>2]|0)+192|0;while(1){g=c[g>>2]|0;if(!g)break;j=c[g+16>>2]|0;m=j+16|0;q=j+24|0;do if((g|0)!=(w|0))if((g|0)==(x|0)){h[q>>3]=k;h[m>>3]=p;break}else{h[q>>3]=n;break}else{h[q>>3]=o;h[m>>3]=p}while(0);g=j+164|0}ek(A);Yf(A,0);Yx(A);w=c[r>>2]|0;p=+h[w+16>>3];x=c[s>>2]|0;k=+h[w+24>>3];n=+h[x+16>>3];o=+h[x+24>>3];if(!(c[(c[B>>2]|0)+116>>2]&1)){h[L>>3]=p-n;k=k-o}else{h[L>>3]=p-o;k=k+n}h[L+8>>3]=k;v=O+16|0;i=O+32|0;w=O+48|0;u=0;while(1){if((u|0)>=(f|0))break;g=d+(u+e<<2)|0;while(1){j=c[g>>2]|0;t=j+16|0;g=c[t>>2]|0;if(!(a[g+112>>0]|0))break;else g=g+116|0}x=c[g+120>>2]|0;s=x+16|0;g=c[s>>2]|0;if(!((x|0)==(y|0)&(c[g+120>>2]|0)==0)){q=c[c[g+8>>2]>>2]|0;r=q+4|0;j=Fz(j,c[r>>2]|0)|0;c[j+8>>2]=c[q+8>>2];g=j+16|0;x=q+16|0;m=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[x>>2];c[D+4>>2]=c[x+4>>2];c[D+8>>2]=c[x+8>>2];c[D+12>>2]=c[x+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(M,D,E,m);c[g>>2]=c[M>>2];c[g+4>>2]=c[M+4>>2];c[g+8>>2]=c[M+8>>2];c[g+12>>2]=c[M+12>>2];c[j+12>>2]=c[q+12>>2];g=j+32|0;m=q+32|0;x=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(N,D,E,x);c[g>>2]=c[N>>2];c[g+4>>2]=c[N+4>>2];c[g+8>>2]=c[N+8>>2];c[g+12>>2]=c[N+12>>2];g=0;while(1){if((g|0)>=(c[r>>2]|0))break;m=(c[j>>2]|0)+(g<<4)|0;T=(c[q>>2]|0)+(g<<4)|0;x=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[T>>2];c[D+4>>2]=c[T+4>>2];c[D+8>>2]=c[T+8>>2];c[D+12>>2]=c[T+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(F,D,E,x);c[m>>2]=c[F>>2];c[m+4>>2]=c[F+4>>2];c[m+8>>2]=c[F+8>>2];c[m+12>>2]=c[F+12>>2];c[O>>2]=c[F>>2];c[O+4>>2]=c[F+4>>2];c[O+8>>2]=c[F+8>>2];c[O+12>>2]=c[F+12>>2];m=g+1|0;if((m|0)>=(c[r>>2]|0)){R=48;break}x=(c[j>>2]|0)+(m<<4)|0;m=(c[q>>2]|0)+(m<<4)|0;T=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(G,D,E,T);c[x>>2]=c[G>>2];c[x+4>>2]=c[G+4>>2];c[x+8>>2]=c[G+8>>2];c[x+12>>2]=c[G+12>>2];c[v>>2]=c[G>>2];c[v+4>>2]=c[G+4>>2];c[v+8>>2]=c[G+8>>2];c[v+12>>2]=c[G+12>>2];x=g+2|0;T=(c[j>>2]|0)+(x<<4)|0;x=(c[q>>2]|0)+(x<<4)|0;m=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[x>>2];c[D+4>>2]=c[x+4>>2];c[D+8>>2]=c[x+8>>2];c[D+12>>2]=c[x+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(H,D,E,m);c[T>>2]=c[H>>2];c[T+4>>2]=c[H+4>>2];c[T+8>>2]=c[H+8>>2];c[T+12>>2]=c[H+12>>2];c[i>>2]=c[H>>2];c[i+4>>2]=c[H+4>>2];c[i+8>>2]=c[H+8>>2];c[i+12>>2]=c[H+12>>2];T=g+3|0;m=(c[q>>2]|0)+(T<<4)|0;x=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[m>>2];c[D+4>>2]=c[m+4>>2];c[D+8>>2]=c[m+8>>2];c[D+12>>2]=c[m+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(I,D,E,x);c[w>>2]=c[I>>2];c[w+4>>2]=c[I+4>>2];c[w+8>>2]=c[I+8>>2];c[w+12>>2]=c[I+12>>2];bu((c[B>>2]|0)+16|0,O);g=T}if((R|0)==48)R=0;g=c[(c[t>>2]|0)+96>>2]|0;if(g|0){T=g+56|0;s=(c[(c[s>>2]|0)+96>>2]|0)+56|0;x=c[(c[B>>2]|0)+116>>2]&1;c[D>>2]=c[s>>2];c[D+4>>2]=c[s+4>>2];c[D+8>>2]=c[s+8>>2];c[D+12>>2]=c[s+12>>2];c[E>>2]=c[L>>2];c[E+4>>2]=c[L+4>>2];c[E+8>>2]=c[L+8>>2];c[E+12>>2]=c[L+12>>2];Ng(J,D,E,x);c[T>>2]=c[J>>2];c[T+4>>2]=c[J+4>>2];c[T+8>>2]=c[J+8>>2];c[T+12>>2]=c[J+12>>2];T=c[(c[t>>2]|0)+96>>2]|0;a[T+81>>0]=1;_A(b,T)}}u=u+1|0}Og(A,z)}else R=3;while(0);if((R|0)==3?(c[41930]|0)==0:0){c[41930]=1;_l(0,78213,P)|0;P=Dn(K)|0;R=(qn(b)|0)!=0;T=Dn(C)|0;c[Q>>2]=P;c[Q+4>>2]=R?122562:122565;c[Q+8>>2]=T;_l(3,78319,Q)|0}l=S;return}function Dg(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0.0,D=0.0,E=0.0;z=l;l=l+1600|0;u=z+1552|0;n=z+1536|0;t=z+840|0;v=z+144|0;w=z+1584|0;j=z+32|0;s=z+16|0;o=z;q=c[f>>2]&3;p=c[((q|0)==3?f:f+48|0)+40>>2]|0;x=f+-48|0;q=c[((q|0)==2?f:x)+40>>2]|0;r=f+16|0;k=c[r>>2]|0;i=c[k+172>>2]|0;while(1){m=c[(c[i+16>>2]|0)+172>>2]|0;if(!m)break;else i=m}k=(c[k+96>>2]|0)+56|0;i=(c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)+16|0;m=(c[i>>2]|0)+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[r>>2]|0;a[(c[k+96>>2]|0)+81>>0]=1;m=c[p+16>>2]|0;if((g|0)!=2){k=c[i>>2]|0;C=+h[k+16>>3];E=C-+h[k+88>>3];C=C+ +h[k+96>>3];B=+h[k+24>>3];D=B+ +h[k+80>>3]*.5;k=c[(c[b+16>>2]|0)+196>>2]|0;j=c[m+232>>2]|0;B=+(~~(+(~~(B-+h[k+(j<<6)+16>>3]-+h[m+24>>3]+ +h[k+(j<<6)+24>>3])|0)/6.0)|0);B=D-(B<5.0?5.0:B);Gg(b,d,e,p,f,t,1);Gg(b,d,e,q,f,v,0);j=t+52|0;k=c[j>>2]|0;m=k+-1|0;A=+h[t+56+(m<<5)>>3];h[16880]=A;h[16881]=+h[t+56+(m<<5)+24>>3];h[16882]=E;h[16883]=B;h[16884]=A;h[16885]=B;m=v+52|0;i=(c[m>>2]|0)+-1|0;A=+h[v+56+(i<<5)+16>>3];h[16886]=A;h[16887]=D;h[16888]=C;h[16891]=B;h[16889]=+h[v+56+(i<<5)+24>>3];h[16890]=A;i=0;while(1){if((i|0)>=(k|0)){i=0;break}k=t+56+(i<<5)|0;c[u>>2]=c[k>>2];c[u+4>>2]=c[k+4>>2];c[u+8>>2]=c[k+8>>2];c[u+12>>2]=c[k+12>>2];c[u+16>>2]=c[k+16>>2];c[u+20>>2]=c[k+20>>2];c[u+24>>2]=c[k+24>>2];c[u+28>>2]=c[k+28>>2];Iz(e,u);i=i+1|0;k=c[j>>2]|0}while(1){if((i|0)==3)break;t=135040+(i<<5)|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[u+16>>2]=c[t+16>>2];c[u+20>>2]=c[t+20>>2];c[u+24>>2]=c[t+24>>2];c[u+28>>2]=c[t+28>>2];Iz(e,u);i=i+1|0}j=c[m>>2]|0;while(1){i=j+-1|0;if((j|0)<=0)break;j=v+56+(i<<5)|0;c[u>>2]=c[j>>2];c[u+4>>2]=c[j+4>>2];c[u+8>>2]=c[j+8>>2];c[u+12>>2]=c[j+12>>2];c[u+16>>2]=c[j+16>>2];c[u+20>>2]=c[j+20>>2];c[u+24>>2]=c[j+24>>2];c[u+28>>2]=c[j+28>>2];Iz(e,u);j=i}if((g|0)==10)j=ky(e,w)|0;else j=qy(e,w)|0;i=c[w>>2]|0;if(i|0)y=17}else{i=m+16|0;v=k+16|0;c[n>>2]=c[i>>2];c[n+4>>2]=c[i+4>>2];c[n+8>>2]=c[i+8>>2];c[n+12>>2]=c[i+12>>2];c[u>>2]=c[v>>2];c[u+4>>2]=c[v+4>>2];c[u+8>>2]=c[v+8>>2];c[u+12>>2]=c[v+12>>2];Ag(s,n,u);v=(c[q+16>>2]|0)+16|0;i=(c[r>>2]|0)+56|0;c[n>>2]=c[v>>2];c[n+4>>2]=c[v+4>>2];c[n+8>>2]=c[v+8>>2];c[n+12>>2]=c[v+12>>2];c[u>>2]=c[i>>2];c[u+4>>2]=c[i+4>>2];c[u+8>>2]=c[i+8>>2];c[u+12>>2]=c[i+12>>2];Ag(o,n,u);i=c[(c[r>>2]|0)+96>>2]|0;D=+h[i+56>>3];E=+h[i+64>>3]-+h[i+32>>3]*.5;i=j+16|0;c[j>>2]=c[s>>2];c[j+4>>2]=c[s+4>>2];c[j+8>>2]=c[s+8>>2];c[j+12>>2]=c[s+12>>2];c[i>>2]=c[s>>2];c[i+4>>2]=c[s+4>>2];c[i+8>>2]=c[s+8>>2];c[i+12>>2]=c[s+12>>2];i=j+32|0;v=j+48|0;y=j+64|0;h[j+64>>3]=D;h[j+72>>3]=E;c[v>>2]=c[y>>2];c[v+4>>2]=c[y+4>>2];c[v+8>>2]=c[y+8>>2];c[v+12>>2]=c[y+12>>2];c[i>>2]=c[y>>2];c[i+4>>2]=c[y+4>>2];c[i+8>>2]=c[y+8>>2];c[i+12>>2]=c[y+12>>2];i=j+80|0;y=j+96|0;c[y>>2]=c[o>>2];c[y+4>>2]=c[o+4>>2];c[y+8>>2]=c[o+8>>2];c[y+12>>2]=c[o+12>>2];c[i>>2]=c[o>>2];c[i+4>>2]=c[o+4>>2];c[i+8>>2]=c[o+8>>2];c[i+12>>2]=c[o+12>>2];c[w>>2]=7;i=7;y=17}if((y|0)==17)Gz(f,c[((c[f>>2]&3|0)==2?f:x)+40>>2]|0,j,i,17224);l=z;return}function Eg(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0.0,w=0.0,x=0,y=0,z=0,A=0,B=0.0,C=0.0,D=0.0,E=0.0,F=0.0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=l;l=l+352|0;z=P+336|0;y=P+320|0;N=P+144|0;u=P+304|0;A=P+128|0;O=P+112|0;G=P+96|0;H=P+80|0;I=P+64|0;J=P+48|0;K=P+32|0;L=P+16|0;M=P;a=a+16|0;s=(c[a>>2]|0)+16|0;x=(c[d+(e<<2)>>2]|0)+16|0;t=(c[x>>2]|0)+16|0;c[y>>2]=c[s>>2];c[y+4>>2]=c[s+4>>2];c[y+8>>2]=c[s+8>>2];c[y+12>>2]=c[s+12>>2];c[z>>2]=c[t>>2];c[z+4>>2]=c[t+4>>2];c[z+8>>2]=c[t+8>>2];c[z+12>>2]=c[t+12>>2];Ag(u,y,z);E=+h[u>>3];F=+h[u+8>>3];u=(c[b+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[y>>2]=c[u>>2];c[y+4>>2]=c[u+4>>2];c[y+8>>2]=c[u+8>>2];c[y+12>>2]=c[u+12>>2];c[z>>2]=c[x>>2];c[z+4>>2]=c[x+4>>2];c[z+8>>2]=c[x+8>>2];c[z+12>>2]=c[x+12>>2];Ag(A,y,z);C=+h[A>>3];D=+h[A+8>>3];if((f|0)>1){B=+h[(c[a>>2]|0)+80>>3];i=B*.5;B=B/+(f+-1|0)}else{i=0.0;B=0.0}r=(g|8|0)==10;o=N+8|0;s=N+16|0;t=N+48|0;u=N+32|0;v=(E*2.0+C)/3.0;w=(E+C*2.0)/3.0;p=N+24|0;x=N+64|0;y=N+80|0;z=N+96|0;A=N+112|0;m=N+128|0;q=N+136|0;n=N+144|0;i=F-i;b=0;while(1){if((b|0)>=(f|0))break;k=c[d+(b+e<<2)>>2]|0;h[N>>3]=E;h[o>>3]=F;if(r){Ig(O,v,i);c[s>>2]=c[O>>2];c[s+4>>2]=c[O+4>>2];c[s+8>>2]=c[O+8>>2];c[s+12>>2]=c[O+12>>2];Ig(G,w,i);c[u>>2]=c[G>>2];c[u+4>>2]=c[G+4>>2];c[u+8>>2]=c[G+8>>2];c[u+12>>2]=c[G+12>>2];a=4;g=3;j=t}else{h[s>>3]=E;h[p>>3]=F;Ig(H,v,i);c[u>>2]=c[H>>2];c[u+4>>2]=c[H+4>>2];c[u+8>>2]=c[H+8>>2];c[u+12>>2]=c[H+12>>2];Ig(I,v,i);c[t>>2]=c[I>>2];c[t+4>>2]=c[I+4>>2];c[t+8>>2]=c[I+8>>2];c[t+12>>2]=c[I+12>>2];Ig(J,v,i);c[x>>2]=c[J>>2];c[x+4>>2]=c[J+4>>2];c[x+8>>2]=c[J+8>>2];c[x+12>>2]=c[J+12>>2];Ig(K,w,i);c[y>>2]=c[K>>2];c[y+4>>2]=c[K+4>>2];c[y+8>>2]=c[K+8>>2];c[y+12>>2]=c[K+12>>2];Ig(L,w,i);c[z>>2]=c[L>>2];c[z+4>>2]=c[L+4>>2];c[z+8>>2]=c[L+8>>2];c[z+12>>2]=c[L+12>>2];Ig(M,w,i);c[A>>2]=c[M>>2];c[A+4>>2]=c[M+4>>2];c[A+8>>2]=c[M+8>>2];c[A+12>>2]=c[M+12>>2];h[m>>3]=C;h[q>>3]=D;a=10;g=9;j=n}h[j>>3]=C;h[N+(g<<4)+8>>3]=D;Gz(k,c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0,N,a,17224);i=B+i;b=b+1|0}l=P;return}function Fg(a,d,e,f,g,i,j,k){a=a|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;k=k|0;var m=0,n=0.0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0.0,A=0.0,B=0.0,C=0.0,D=0.0;x=l;l=l+1440|0;t=x+1392|0;v=x+1424|0;w=x+696|0;u=x;r=c[j>>2]&3;q=c[((r|0)==3?j:j+48|0)+40>>2]|0;r=c[((r|0)==2?j:j+-48|0)+40>>2]|0;m=c[q+16>>2]|0;o=c[m+232>>2]|0;p=c[a+16>>2]|0;if((o|0)<(b[p+238>>1]|0)){y=c[p+196>>2]|0;p=o+1|0;n=+h[m+24>>3]-+h[y+(o<<6)+32>>3]-(+h[(c[(c[c[y+(p<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[y+(p<<6)+40>>3])}else n=+(c[p+252>>2]|0);z=+(i+1|0);s=+(c[d+12>>2]|0)/z;n=n/z;Hg(a,d,e,q,j,w,1);Hg(a,d,e,r,j,u,0);r=w+52|0;j=u+52|0;a=(k|0)==0;d=e+80|0;m=0;while(1){if((m|0)>=(i|0))break;q=c[f+(m+g<<2)>>2]|0;p=c[r>>2]|0;o=p+-1|0;D=+h[w+56+(o<<5)>>3];B=+h[w+56+(o<<5)+8>>3];C=+h[w+56+(o<<5)+16>>3];h[16880]=D;h[16883]=B;m=m+1|0;z=+(m|0);A=s*z;h[16882]=A+C;z=B-n*z;h[16881]=z;h[16884]=D;h[16887]=z;o=(c[j>>2]|0)+-1|0;D=+h[u+56+(o<<5)+16>>3];h[16886]=D;h[16885]=z-n;B=+h[u+56+(o<<5)>>3];C=+h[u+56+(o<<5)+8>>3];h[16890]=D;h[16891]=C;h[16888]=B-A;h[16889]=z;o=0;while(1){if((o|0)>=(p|0)){o=0;break}p=w+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Iz(e,t);o=o+1|0;p=c[r>>2]|0}while(1){if((o|0)==3)break;y=135040+(o<<5)|0;c[t>>2]=c[y>>2];c[t+4>>2]=c[y+4>>2];c[t+8>>2]=c[y+8>>2];c[t+12>>2]=c[y+12>>2];c[t+16>>2]=c[y+16>>2];c[t+20>>2]=c[y+20>>2];c[t+24>>2]=c[y+24>>2];c[t+28>>2]=c[y+28>>2];Iz(e,t);o=o+1|0}p=c[j>>2]|0;while(1){o=p+-1|0;if((p|0)<=0)break;p=u+56+(o<<5)|0;c[t>>2]=c[p>>2];c[t+4>>2]=c[p+4>>2];c[t+8>>2]=c[p+8>>2];c[t+12>>2]=c[p+12>>2];c[t+16>>2]=c[p+16>>2];c[t+20>>2]=c[p+20>>2];c[t+24>>2]=c[p+24>>2];c[t+28>>2]=c[p+28>>2];Iz(e,t);p=o}if(a)o=qy(e,v)|0;else o=ky(e,v)|0;p=c[v>>2]|0;if(!p)break;Gz(q,c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0,o,p,17224);c[d>>2]=0}l=x;return}function Gg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=4;if(!(i<<24>>24))Mz(d,f,2,g,0);else Jz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]+ +h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,4,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Hg(a,b,d,e,f,g,i){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0.0;n=l;l=l+128|0;j=n+96|0;k=n+64|0;o=n+32|0;m=n;jg(o,a,b,e,0,f);c[g>>2]=c[o>>2];c[g+4>>2]=c[o+4>>2];c[g+8>>2]=c[o+8>>2];c[g+12>>2]=c[o+12>>2];c[g+16>>2]=c[o+16>>2];c[g+20>>2]=c[o+20>>2];c[g+24>>2]=c[o+24>>2];c[g+28>>2]=c[o+28>>2];c[k>>2]=c[o>>2];c[k+4>>2]=c[o+4>>2];c[k+8>>2]=c[o+8>>2];c[k+12>>2]=c[o+12>>2];c[k+16>>2]=c[o+16>>2];c[k+20>>2]=c[o+20>>2];c[k+24>>2]=c[o+24>>2];c[k+28>>2]=c[o+28>>2];c[g+48>>2]=1;if(!(i<<24>>24))Mz(d,f,2,g,0);else Jz(d,f,2,g,0);b=g+52|0;f=(c[b>>2]|0)+-1|0;o=k+24|0;h[o>>3]=+h[g+56+(f<<5)+24>>3];i=k+8|0;h[i>>3]=+h[g+56+(f<<5)+8>>3];e=c[e+16>>2]|0;p=+h[e+24>>3]-+h[(c[(c[a+16>>2]|0)+196>>2]|0)+(c[e+232>>2]<<6)+24>>3];c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];c[j+16>>2]=c[k+16>>2];c[j+20>>2]=c[k+20>>2];c[j+24>>2]=c[k+24>>2];c[j+28>>2]=c[k+28>>2];lg(m,j,1,p);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[k+16>>2]=c[m+16>>2];c[k+20>>2]=c[m+20>>2];c[k+24>>2]=c[m+24>>2];c[k+28>>2]=c[m+28>>2];if(+h[k>>3]<+h[k+16>>3]?+h[i>>3]<+h[o>>3]:0){o=c[b>>2]|0;c[b>>2]=o+1;o=g+56+(o<<5)|0;c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[o+16>>2]=c[k+16>>2];c[o+20>>2]=c[k+20>>2];c[o+24>>2]=c[k+24>>2];c[o+28>>2]=c[k+28>>2]}l=n;return}function Ig(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Jg(b,d,e,f,g,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0.0,J=0.0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0;$=l;l=l+288|0;U=$+256|0;T=$+240|0;S=$+224|0;Y=$+280|0;Z=$+272|0;_=$+32|0;V=$+16|0;W=$;m=$+208|0;n=$+192|0;o=c[e+(f<<2)>>2]|0;X=sw(g<<2)|0;k=0;while(1){if((k|0)>=(g|0))break;c[X+(k<<2)>>2]=c[e+(k+f<<2)>>2];k=k+1|0}AK(X,g,4,11);E=b+16|0;G=(c[E>>2]|0)+16|0;F=o+16|0;K=(c[F>>2]|0)+16|0;c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[U>>2]=c[K>>2];c[U+4>>2]=c[K+4>>2];c[U+8>>2]=c[K+8>>2];c[U+12>>2]=c[K+12>>2];Ag(m,T,U);c[V>>2]=c[m>>2];c[V+4>>2]=c[m+4>>2];c[V+8>>2]=c[m+8>>2];c[V+12>>2]=c[m+12>>2];K=d+16|0;G=(c[K>>2]|0)+16|0;F=(c[F>>2]|0)+56|0;c[T>>2]=c[G>>2];c[T+4>>2]=c[G+4>>2];c[T+8>>2]=c[G+8>>2];c[T+12>>2]=c[G+12>>2];c[U>>2]=c[F>>2];c[U+4>>2]=c[F+4>>2];c[U+8>>2]=c[F+8>>2];c[U+12>>2]=c[F+12>>2];Ag(n,T,U);c[W>>2]=c[n>>2];c[W+4>>2]=c[n+4>>2];c[W+8>>2]=c[n+8>>2];c[W+12>>2]=c[n+12>>2];y=+h[V>>3]+ +h[(c[E>>2]|0)+96>>3];z=+h[W>>3]-+h[(c[K>>2]|0)+88>>3];x=(y+z)*.5;K=c[X>>2]|0;c[_>>2]=c[V>>2];c[_+4>>2]=c[V+4>>2];c[_+8>>2]=c[V+8>>2];c[_+12>>2]=c[V+12>>2];E=_+16|0;c[E>>2]=c[V>>2];c[E+4>>2]=c[V+4>>2];c[E+8>>2]=c[V+8>>2];c[E+12>>2]=c[V+12>>2];F=_+32|0;c[F>>2]=c[W>>2];c[F+4>>2]=c[W+4>>2];c[F+8>>2]=c[W+8>>2];c[F+12>>2]=c[W+12>>2];G=_+48|0;c[G>>2]=c[W>>2];c[G+4>>2]=c[W+4>>2];c[G+8>>2]=c[W+8>>2];c[G+12>>2]=c[W+12>>2];Gz(K,c[((c[K>>2]&3|0)==2?K:K+-48|0)+40>>2]|0,_,4,17224);K=c[(c[K+16>>2]|0)+96>>2]|0;h[K+56>>3]=x;H=V+8|0;v=+h[H>>3];w=+h[K+32>>3];h[K+64>>3]=v+(w+6.0)*.5;a[K+81>>0]=1;v=v+3.0;J=+h[K+24>>3]*.5;I=x-J;J=x+J;K=W+8|0;L=_+72|0;M=_+40|0;N=_+120|0;O=_+64|0;P=Y+4|0;Q=_+56|0;R=_+24|0;o=(i|0)==6&1;e=_+104|0;f=_+96|0;i=_+80|0;C=_+88|0;D=_+112|0;t=0.0;s=0.0;w=v+w;m=1;while(1){if((m|0)>=(j|0)){B=6;break}d=c[X+(m<<2)>>2]|0;p=+h[V>>3];q=+h[K>>3];r=+h[W>>3];u=+h[H>>3];n=d+16|0;if(!(m&1)){c[_>>2]=c[V>>2];c[_+4>>2]=c[V+4>>2];c[_+8>>2]=c[V+8>>2];c[_+12>>2]=c[V+12>>2];h[E>>3]=I;h[R>>3]=u;h[F>>3]=I;h[M>>3]=w;h[G>>3]=J;h[Q>>3]=w;h[O>>3]=J;h[L>>3]=q;h[i>>3]=r;h[C>>3]=q;h[f>>3]=r;A=w+6.0;h[e>>3]=A;h[D>>3]=p;h[N>>3]=A;A=+h[(c[(c[n>>2]|0)+96>>2]|0)+32>>3];p=w+A*.5+6.0;w=w+(A+6.0)}else{k=c[(c[n>>2]|0)+96>>2]|0;if((m|0)==1){s=+h[k+24>>3]*.5;t=x+s;s=x-s}v=v-(+h[k+32>>3]+6.0);c[_>>2]=c[V>>2];c[_+4>>2]=c[V+4>>2];c[_+8>>2]=c[V+8>>2];c[_+12>>2]=c[V+12>>2];h[E>>3]=p;p=v+-6.0;h[R>>3]=p;h[F>>3]=r;h[M>>3]=p;c[G>>2]=c[W>>2];c[G+4>>2]=c[W+4>>2];c[G+8>>2]=c[W+8>>2];c[G+12>>2]=c[W+12>>2];h[O>>3]=t;h[L>>3]=q;h[i>>3]=t;h[C>>3]=v;h[f>>3]=s;h[e>>3]=v;h[D>>3]=s;h[N>>3]=u;p=v+ +h[(c[(c[n>>2]|0)+96>>2]|0)+32>>3]*.5}c[P>>2]=8;c[Y>>2]=_;c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[T>>2]=c[W>>2];c[T+4>>2]=c[W+4>>2];c[T+8>>2]=c[W+8>>2];c[T+12>>2]=c[W+12>>2];c[U>>2]=c[Y>>2];c[U+4>>2]=c[Y+4>>2];k=gy(S,T,U,Z,o)|0;b=c[Z>>2]|0;if(!b)break;n=c[(c[n>>2]|0)+96>>2]|0;h[n+56>>3]=x;h[n+64>>3]=p;a[n+81>>0]=1;Gz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0}a:do if((B|0)==6){A=(y*2.0+z)/3.0;x=(y+z*2.0)/3.0;while(1){if((m|0)>=(g|0))break;d=c[X+(m<<2)>>2]|0;p=+h[V>>3];q=+h[K>>3];r=+h[W>>3];u=+h[H>>3];if(!(m&1)){c[_>>2]=c[V>>2];c[_+4>>2]=c[V+4>>2];c[_+8>>2]=c[V+8>>2];c[_+12>>2]=c[V+12>>2];h[E>>3]=I;h[R>>3]=u;h[F>>3]=I;h[M>>3]=w;h[G>>3]=J;h[Q>>3]=w;h[O>>3]=J;h[L>>3]=q;h[i>>3]=r;h[C>>3]=q;h[f>>3]=r;q=w+6.0;w=q;r=q}else{B=(m|0)==1;y=B?A:s;t=B?x:t;z=v+-6.0;c[_>>2]=c[V>>2];c[_+4>>2]=c[V+4>>2];c[_+8>>2]=c[V+8>>2];c[_+12>>2]=c[V+12>>2];h[E>>3]=p;v=z+-6.0;h[R>>3]=v;h[F>>3]=r;h[M>>3]=v;c[G>>2]=c[W>>2];c[G+4>>2]=c[W+4>>2];c[G+8>>2]=c[W+8>>2];c[G+12>>2]=c[W+12>>2];h[O>>3]=t;h[L>>3]=q;h[i>>3]=t;h[C>>3]=z;h[f>>3]=y;v=z;s=y;r=u;p=y;q=z}h[e>>3]=q;h[D>>3]=p;h[N>>3]=r;c[P>>2]=8;c[Y>>2]=_;c[S>>2]=c[V>>2];c[S+4>>2]=c[V+4>>2];c[S+8>>2]=c[V+8>>2];c[S+12>>2]=c[V+12>>2];c[T>>2]=c[W>>2];c[T+4>>2]=c[W+4>>2];c[T+8>>2]=c[W+8>>2];c[T+12>>2]=c[W+12>>2];c[U>>2]=c[Y>>2];c[U+4>>2]=c[Y+4>>2];k=gy(S,T,U,Z,o)|0;b=c[Z>>2]|0;if(!b)break a;Gz(d,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,k,b,17224);m=m+1|0}xN(X)}while(0);l=$;return}function Kg(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0;g=l;l=l+16|0;f=g;j=(qn(b)|0)==0;c[f>>2]=c[(j?17652:17644)>>2];f=gn(78351,f,0)|0;Oo(f,122293,280,1)|0;ym(f,0,80034,174318)|0;j=sw(96)|0;e=c[f+16>>2]|0;c[e+8>>2]=j;i=c[b+16>>2]|0;k=c[i+8>>2]|0;h[j>>3]=+h[k>>3];h[j+24>>3]=+h[k+24>>3];a[e+115>>0]=a[i+115>>0]|0;c[e+116>>2]=c[i+116>>2]&1^1;c[e+248>>2]=c[i+248>>2];c[e+252>>2]=c[i+252>>2];e=Dm(so(b)|0,1,0)|0;while(1){if(!e)break;ym(f,1,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,1,e)|0}e=Dm(so(b)|0,2,0)|0;while(1){if(!e)break;ym(f,2,c[e+8>>2]|0,c[e+12>>2]|0)|0;e=Dm(so(b)|0,2,e)|0}if(!(ym(f,2,96267,0)|0))ym(f,2,96267,174318)|0;if(!(ym(f,2,96258,0)|0))ym(f,2,96258,174318)|0;Pg(f,d);l=g;return f|0}function Lg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;a=no(a,Dn(b)|0,1)|0;Oo(a,122257,304,1)|0;Mm(b,a)|0;if((yy(b)|0)==2){f=b+16|0;b=tw((TK(c[c[(c[f>>2]|0)+104>>2]>>2]|0)|0)+3|0)|0;c[d>>2]=c[c[(c[f>>2]|0)+104>>2]>>2];yJ(b,78346,d)|0;Km(a,86200,b)|0}l=e;return a|0}function Mg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=an(a,b,c,0,1)|0;Oo(c,122270,176,1)|0;Mm(d,c)|0;return c|0}function Ng(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0.0;i=l;l=l+32|0;g=i+16|0;f=i;if(e|0){j=+h[b>>3];e=b+8|0;h[b>>3]=+h[e>>3];h[e>>3]=-j};c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];c[g>>2]=c[d>>2];c[g+4>>2]=c[d+4>>2];c[g+8>>2]=c[d+8>>2];c[g+12>>2]=c[d+12>>2];Ag(a,f,g);l=i;return}function Og(a,b){a=a|0;b=b|0;c[42266]=c[b>>2];c[42270]=c[b+4>>2];c[42271]=c[b+8>>2];c[42244]=c[b+12>>2];c[42245]=c[b+16>>2];c[42258]=c[b+20>>2];c[42257]=c[b+24>>2];c[42256]=c[b+28>>2];c[42282]=c[b+32>>2];c[42274]=c[b+36>>2];c[42259]=c[b+40>>2];c[42269]=c[b+44>>2];c[42278]=c[b+48>>2];c[42277]=c[b+52>>2];c[42276]=c[b+56>>2];c[42281]=c[b+60>>2];c[42275]=c[b+64>>2];c[42260]=c[b+68>>2];c[42207]=c[b+72>>2];c[42208]=c[b+76>>2];c[42209]=c[b+80>>2];c[42227]=c[b+84>>2];c[42220]=c[b+88>>2];c[42221]=c[b+92>>2];c[42222]=c[b+96>>2];c[42224]=c[b+100>>2];c[42225]=c[b+104>>2];c[42228]=c[b+108>>2];c[42231]=c[b+112>>2];c[42229]=c[b+116>>2];c[42230]=c[b+120>>2];c[42233]=c[b+124>>2];c[42232]=c[b+128>>2];c[42234]=c[b+132>>2];c[42235]=c[b+136>>2];c[42226]=c[b+140>>2];c[42238]=c[b+144>>2];c[42202]=c[b+148>>2];c[42193]=c[b+152>>2];xN(b);Ef(a);ln(a)|0;return}function Pg(a,b){a=a|0;b=b|0;c[b>>2]=c[42266];c[b+4>>2]=c[42270];c[b+8>>2]=c[42271];c[b+12>>2]=c[42244];c[b+16>>2]=c[42245];c[b+20>>2]=c[42258];c[b+24>>2]=c[42257];c[b+28>>2]=c[42256];c[b+32>>2]=c[42282];c[b+36>>2]=c[42274];c[b+40>>2]=c[42259];c[b+44>>2]=c[42269];c[b+48>>2]=c[42278];c[b+52>>2]=c[42277];c[b+56>>2]=c[42276];c[b+60>>2]=c[42281];c[b+64>>2]=c[42275];c[b+68>>2]=c[42260];c[b+72>>2]=c[42207];c[b+76>>2]=c[42208];c[b+80>>2]=c[42209];c[b+84>>2]=c[42227];c[b+88>>2]=c[42220];c[b+92>>2]=c[42221];c[b+96>>2]=c[42222];c[b+100>>2]=c[42224];c[b+104>>2]=c[42225];c[b+108>>2]=c[42228];c[b+112>>2]=c[42231];c[b+116>>2]=c[42229];c[b+120>>2]=c[42230];c[b+124>>2]=c[42233];c[b+128>>2]=c[42232];c[b+132>>2]=c[42234];c[b+136>>2]=c[42235];c[b+140>>2]=c[42226];c[b+144>>2]=c[42238];c[b+152>>2]=c[42193];c[b+148>>2]=c[42202];c[42266]=0;c[42270]=ym(a,2,80275,0)|0;c[42271]=ym(a,2,80284,0)|0;b=ym(a,2,86574,0)|0;c[42244]=b;if(!b)c[42244]=ym(a,2,86574,174318)|0;c[42245]=0;c[42258]=0;c[42257]=ym(a,2,86454,0)|0;c[42256]=ym(a,2,86445,0)|0;c[42282]=ym(a,2,86750,0)|0;c[42274]=0;c[42259]=ym(a,2,86200,0)|0;c[42269]=ym(a,2,78356,0)|0;c[42278]=0;c[42277]=ym(a,2,86650,0)|0;c[42276]=ym(a,2,86636,0)|0;c[42281]=ym(a,2,86741,0)|0;c[42275]=0;c[42260]=0;c[42207]=ym(a,1,96009,0)|0;c[42208]=ym(a,1,96003,0)|0;c[42209]=ym(a,1,90631,0)|0;c[42227]=0;c[42220]=ym(a,1,86445,0)|0;c[42221]=ym(a,1,86454,0)|0;c[42222]=0;c[42224]=ym(a,1,86200,0)|0;c[42225]=0;c[42228]=0;c[42231]=ym(a,1,86406,0)|0;c[42229]=ym(a,1,86489,0)|0;c[42230]=ym(a,1,86495,0)|0;c[42233]=ym(a,1,86507,0)|0;c[42232]=ym(a,1,86345,0)|0;c[42234]=ym(a,1,86512,0)|0;c[42235]=ym(a,1,78368,0)|0;c[42226]=0;c[42238]=0;c[42202]=ym(a,0,86406,0)|0;return}function Qg(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0;d=c[(c[(c[a>>2]|0)+16>>2]|0)+96>>2]|0;a=c[(c[(c[b>>2]|0)+16>>2]|0)+96>>2]|0;b=(a|0)!=0;if(d)if(b?(f=+h[d+24>>3],i=+h[d+32>>3],e=+h[a+24>>3],g=+h[a+32>>3],!(f>e)):0)if(!(f<e))if(i>g)a=-1;else a=i<g&1;else a=1;else a=-1;else a=b&1;return a|0}function Rg(a){a=a|0;var b=0,d=0,e=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;d=c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0;e=c[d+232>>2]|0;a=c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0;b=c[a+232>>2]|0;if((e|0)<=(b|0))if((e|0)<(b|0))a=1;else a=(c[d+236>>2]|0)<(c[a+236>>2]|0)&1;else a=0;return a|0}function Sg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+180|0;g=(c[b+16>>2]|0)+172|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Tg(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=c[b+4>>2]|0;a:do if((f|0)>0?(g=c[e+4>>2]|0,(g|0)>0):0)if((f|0)<(g|0)){f=c[b>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)==(d|0))break;else e=e+1|0}}else{f=c[e>>2]|0;e=0;while(1){b=c[f+(e<<2)>>2]|0;if(!b){b=0;break a}if((c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)==(a|0))break;else e=e+1|0}}else b=0;while(0);return b|0}function Ug(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;d=l;l=l+16|0;e=d+8|0;f=d;h=(c[a+16>>2]|0)+188|0;g=(c[b+16>>2]|0)+196|0;c[f>>2]=c[h>>2];c[f+4>>2]=c[h+4>>2];c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];b=Tg(a,f,b,e)|0;l=d;return b|0}function Vg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+180>>2]|0;d=(c[d+184>>2]<<2)+8|0;if(!b)b=tw(d)|0;else b=vw(b,d)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+180>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+180>>2]|0;f=f+184|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=a+-48|0;d=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;b=c[d+172>>2]|0;d=(c[d+176>>2]<<2)+8|0;if(!b)b=tw(d)|0;else b=vw(b,d)|0;c[(c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;b=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;d=c[b+172>>2]|0;b=b+176|0;f=c[b>>2]|0;c[b>>2]=f+1;c[d+(f<<2)>>2]=a;f=c[(c[((c[a>>2]&3|0)==2?a:e)+40>>2]|0)+16>>2]|0;c[(c[f+172>>2]|0)+(c[f+176>>2]<<2)>>2]=0;return a|0}function Wg(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+4|0;f=c[e>>2]|0;d=0;while(1){if((d|0)>=(f|0))break;g=c[a>>2]|0;h=g+(d<<2)|0;if((c[h>>2]|0)==(b|0)){i=4;break}else d=d+1|0}if((i|0)==4){i=f+-1|0;c[e>>2]=i;c[h>>2]=c[g+(i<<2)>>2];c[(c[a>>2]|0)+(i<<2)>>2]=0}return}function Xg(a){a=a|0;if(!a)va(78409,78419,117,78428);else{Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+180|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+172|0,a);return}}function Yg(a){a=a|0;var b=0,d=0,e=0,f=0;e=a+48|0;d=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[d+204>>2]|0;d=(c[d+208>>2]<<2)+8|0;if(!b)b=tw(d)|0;else b=vw(b,d)|0;c[(c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0)+204>>2]=b;f=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;b=c[f+204>>2]|0;f=f+208|0;d=c[f>>2]|0;c[f>>2]=d+1;c[b+(d<<2)>>2]=a;e=c[(c[((c[a>>2]&3|0)==3?a:e)+40>>2]|0)+16>>2]|0;c[(c[e+204>>2]|0)+(c[e+208>>2]<<2)>>2]=0;return}function Zg(a){a=a|0;_g(a,(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+204|0);return}function _g(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+4|0;e=c[h>>2]|0;g=c[b>>2]|0;d=0;while(1){if((d|0)>=(e|0)){f=4;break}if((c[g+(d<<2)>>2]|0)==(a|0))break;else d=d+1|0}if((f|0)==4){d=(e<<2)+8|0;if(!g)d=tw(d)|0;else d=vw(g,d)|0;c[b>>2]=d;f=c[h>>2]|0;g=f+1|0;c[h>>2]=g;c[d+(f<<2)>>2]=a;c[(c[b>>2]|0)+(g<<2)>>2]=0}return}function $g(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=sw(96)|0;g=o+48|0;c[g>>2]=c[g>>2]|3;c[o>>2]=c[o>>2]&-4|2;i=sw(176)|0;n=o+16|0;c[n>>2]=i;c[((c[o>>2]&3|0)==3?o:g)+40>>2]=d;j=o+-48|0;c[((c[o>>2]&3|0)==2?o:j)+40>>2]=e;a[i+112>>0]=1;if(!f){c[i+156>>2]=1;b[i+154>>1]=1;b[i+168>>1]=1;b[i+170>>1]=1}else{c[o>>2]=c[o>>2]&15|c[f>>2]&-16;c[g>>2]=c[g>>2]&15|c[f>>2]&-16;m=f+16|0;h=c[m>>2]|0;b[i+168>>1]=b[h+168>>1]|0;b[i+154>>1]=b[h+154>>1]|0;c[i+156>>2]=c[h+156>>2];b[i+170>>1]=b[h+170>>1]|0;d=c[((c[o>>2]&3|0)==3?o:g)+40>>2]|0;e=c[f>>2]&3;k=f+48|0;l=f+-48|0;if((d|0)!=(c[((e|0)==3?f:k)+40>>2]|0)){if((d|0)==(c[((e|0)==2?f:l)+40>>2]|0)){g=i+16|0;d=h+56|0;e=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}}else{g=i+16|0;d=h+16|0;e=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}d=c[((c[o>>2]&3|0)==2?o:j)+40>>2]|0;e=c[f>>2]&3;if((d|0)!=(c[((e|0)==2?f:l)+40>>2]|0)){if((d|0)==(c[((e|0)==3?f:k)+40>>2]|0)){g=(c[n>>2]|0)+56|0;d=(c[m>>2]|0)+16|0;e=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}}else{g=(c[n>>2]|0)+56|0;d=(c[m>>2]|0)+56|0;e=g+40|0;do{c[g>>2]=c[d>>2];g=g+4|0;d=d+4|0}while((g|0)<(e|0))}d=(c[m>>2]|0)+172|0;if(!(c[d>>2]|0))c[d>>2]=o;c[(c[n>>2]|0)+116>>2]=f}return o|0}function ah(a,b,c){a=a|0;b=b|0;c=c|0;return Vg($g(a,b,c)|0)|0}function bh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=(c[a+16>>2]|0)+192|0;f=c[d>>2]|0;e=c[b+16>>2]|0;c[e+164>>2]=f;a=f;if(f|0)c[(c[a+16>>2]|0)+168>>2]=b;c[d>>2]=b;c[e+168>>2]=0;if((a|0)==(b|0))va(78445,78419,215,78461);else return}function ch(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;if((a|0)==(b|0))va(78471,78419,220,78478);f=c[b+16>>2]|0;d=f+164|0;if(c[d>>2]|0)va(78491,78419,221,78478);e=(c[a+16>>2]|0)+164|0;c[d>>2]=c[e>>2];d=c[e>>2]|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=b;c[f+168>>2]=a;c[e>>2]=b;return}function dh(a,b){a=a|0;b=b|0;var d=0;if(!(eh(a,b)|0))va(78510,78419,231,78531);b=c[b+16>>2]|0;d=c[b+164>>2]|0;b=b+168|0;if(d|0)c[(c[d+16>>2]|0)+168>>2]=c[b>>2];b=c[b>>2]|0;if(!b)c[(c[a+16>>2]|0)+192>>2]=d;else c[(c[b+16>>2]|0)+164>>2]=d;return}function eh(a,b){a=a|0;b=b|0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if((a|0)==0|(a|0)==(b|0))break;a=(c[a+16>>2]|0)+164|0}return a|0}function fh(b){b=b|0;var d=0,e=0,f=0,g=0;d=sw(64)|0;c[d>>2]=c[d>>2]&-4|1;e=d+16|0;c[e>>2]=sw(304)|0;c[d+24>>2]=so(b)|0;g=c[e>>2]|0;a[g+156>>0]=1;h[g+96>>3]=1.0;h[g+88>>3]=1.0;h[g+80>>3]=1.0;c[g+216>>2]=1;c[g+176>>2]=0;g=sw(20)|0;f=c[e>>2]|0;c[f+172>>2]=g;c[f+184>>2]=0;f=sw(20)|0;c[(c[e>>2]|0)+180>>2]=f;bh(b,d);b=(c[b+16>>2]|0)+232|0;c[b>>2]=(c[b>>2]|0)+1;return d|0}function gh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=d+48|0;f=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;e=c[f+188>>2]|0;f=(c[f+192>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0)+188>>2]=e;h=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;e=c[h+188>>2]|0;h=h+192|0;f=c[h>>2]|0;c[h>>2]=f+1;c[e+(f<<2)>>2]=d;g=c[(c[((c[d>>2]&3|0)==3?d:g)+40>>2]|0)+16>>2]|0;c[(c[g+188>>2]|0)+(c[g+192>>2]<<2)>>2]=0;g=d+-48|0;f=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;e=c[f+196>>2]|0;f=(c[f+200>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+196>>2]=e;e=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;f=c[e+196>>2]|0;e=e+200|0;h=c[e>>2]|0;c[e>>2]=h+1;c[f+(h<<2)>>2]=d;h=c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0;c[(c[h+196>>2]|0)+(c[h+200>>2]<<2)>>2]=0;a[(c[b+16>>2]|0)+240>>0]=1;a[(c[(Vf(b)|0)+16>>2]|0)+240>>0]=1;return}function hh(a){a=a|0;var b=0,d=0;if(!a)va(78409,78419,269,78548);b=c[(c[a+16>>2]|0)+116>>2]|0;if(b|0?(d=(c[b+16>>2]|0)+172|0,(c[d>>2]|0)==(a|0)):0)c[d>>2]=0;Wg((c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+188|0,a);Wg((c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+196|0,a);return}function ih(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;d=(c[a+16>>2]|0)+172|0;e=c[d>>2]|0;do if((e|0)!=(b|0))if(!e){c[d>>2]=b;jh(a,b);break}else va(80456,78419,340,78586);else _l(0,78565,f)|0;while(0);l=f;return}function jh(a,d){a=a|0;d=d|0;var f=0,g=0,h=0,i=0;f=(c[d+16>>2]|0)+170|0;i=c[a+16>>2]|0;a=b[i+170>>1]|0;if((e[f>>1]|0)<(a&65535))b[f>>1]=a;g=i+168|0;h=i+154|0;f=i+156|0;a=d;while(1){if(!a)break;d=c[a+16>>2]|0;i=d+168|0;b[i>>1]=(e[i>>1]|0)+(e[g>>1]|0);i=d+154|0;b[i>>1]=(e[i>>1]|0)+(e[h>>1]|0);i=d+156|0;c[i>>2]=(c[i>>2]|0)+(c[f>>2]|0);a=c[d+172>>2]|0}return}function kh(d){d=d|0;var e=0,f=0,g=0,h=0;f=d+16|0;e=c[(c[f>>2]|0)+172>>2]|0;a:while(1){if(!e)break;lh(e,d);h=c[e+16>>2]|0;g=c[h+172>>2]|0;if(!(b[h+168>>1]|0))mh(e);while(1){if((a[(c[e+16>>2]|0)+112>>0]|0)!=1){e=g;continue a}e=c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){e=g;continue a}if((c[e+184>>2]|0)!=1){e=g;continue a}e=c[c[e+180>>2]>>2]|0;lh(e,d)}}c[(c[f>>2]|0)+172>>2]=0;return}function lh(a,d){a=a|0;d=d|0;var f=0;f=c[d+16>>2]|0;d=c[a+16>>2]|0;a=d+168|0;b[a>>1]=(e[a>>1]|0)-(e[f+168>>1]|0);a=d+154|0;b[a>>1]=(e[a>>1]|0)-(e[f+154>>1]|0);d=d+156|0;c[d>>2]=(c[d>>2]|0)-(c[f+156>>2]|0);return}function mh(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if(!a)va(78409,78419,128,78599);g=a+48|0;d=0;while(1){b=c[a>>2]|0;e=(c[(c[((b&3|0)==3?a:g)+40>>2]|0)+16>>2]|0)+180|0;f=c[(c[e>>2]|0)+(d<<2)>>2]|0;if(!f)break;if((f|0)==(a|0))Wg(e,a);d=d+1|0}g=a+-48|0;f=0;while(1){d=(c[(c[((b&3|0)==2?a:g)+40>>2]|0)+16>>2]|0)+172|0;e=c[(c[d>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)==(a|0)){Wg(d,a);b=c[a>>2]|0}f=f+1|0}return}function nh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=l;l=l+1040|0;n=p+4|0;o=p;m=p+8|0;k=a+16|0;a=c[k>>2]|0;j=b[a+236>>1]|0;while(1){if((j|0)>(b[a+238>>1]|0))break;i=c[a+196>>2]|0;h=i+(j<<6)|0;i=i+(j<<6)+4|0;g=0;a=0;while(1){d=(a|0)!=0;if((g|0)>=(c[h>>2]|0))break;e=c[(c[i>>2]|0)+(g<<2)>>2]|0;f=e+16|0;if(c[(c[f>>2]|0)+112>>2]|0){if(!d){c[n>>2]=c[4412];a=gn(78621,n,0)|0}c[o>>2]=g;yJ(m,122203,o)|0;s=no(a,m,1)|0;Oo(s,78624,24,1)|0;d=c[(c[f>>2]|0)+180>>2]|0;q=c[d>>2]|0;q=c[(c[(c[((c[q>>2]&3|0)==2?q:q+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;d=c[d+4>>2]|0;d=c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;r=(q|0)>(d|0);f=c[s+16>>2]|0;c[f+12>>2]=r?d:q;c[f+16>>2]=r?q:d;c[f+20>>2]=e}g=g+1|0}if(d){if((mn(a)|0)>1)oh(a,h);ln(a)|0}j=j+1|0;a=c[k>>2]|0}l=p;return}function oh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=0;h=co(a)|0;a:while(1){if(!h)break;i=eo(a,h)|0;j=h+16|0;g=i;while(1){if(!g){h=i;continue a}f=c[g+16>>2]|0;e=c[j>>2]|0;if((c[f+16>>2]|0)>(c[e+12>>2]|0)){if((c[e+16>>2]|0)<=(c[f+12>>2]|0))an(a,h,g,0,1)|0}else{an(a,g,h,0,1)|0;d=1}g=eo(a,g)|0}}do if(d|0){h=Ip(a,78629,1)|0;j=sw((mn(a)|0)<<2)|0;i=sw((mn(a)|0)<<2)|0;f=b+4|0;e=co(a)|0;b:while(1){if(!e){d=23;break}if((c[(c[e+16>>2]|0)+8>>2]|0)==0?on(a,e,1,1)|0:0){c:do if(ph(a,e,h,i)|0){g=mn(h)|0;if((qh(a,h,j)|0)!=(g|0)){d=17;break b}AK(i,g,4,12);d=0;while(1){if((d|0)>=(g|0))break c;b=i+(d<<2)|0;k=c[j+(d<<2)>>2]|0;c[(c[k+16>>2]|0)+236>>2]=c[b>>2];c[(c[f>>2]|0)+(c[b>>2]<<2)>>2]=k;d=d+1|0}}while(0);sh(h)}e=eo(a,e)|0}if((d|0)==17)va(78634,78644,265,78655);else if((d|0)==23){xN(j);break}}while(0);return}function ph(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;h=c[b+16>>2]|0;c[h+8>>2]=1;h=c[(c[(c[h+20>>2]|0)+16>>2]|0)+236>>2]|0;c[e+((mn(d)|0)<<2)>>2]=h;io(d,b,1)|0;h=Pm(a,b)|0;f=0;while(1){if(!h)break;j=c[h>>2]&3;g=c[((j|0)==2?h:h+-48|0)+40>>2]|0;i=c[g+16>>2]|0;f=((c[(c[(c[i+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)+f|0;if(!(c[i+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Rm(a,h)|0}h=Sm(a,b)|0;while(1){if(!h)break;i=c[h>>2]&3;g=c[((i|0)==3?h:h+48|0)+40>>2]|0;j=c[g+16>>2]|0;f=((c[(c[(c[(c[(c[((i|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+20>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[j+20>>2]|0)+16>>2]|0)+236>>2]|0)&1)+f|0;if(!(c[j+8>>2]|0))f=(ph(a,g,d,e)|0)+f|0;h=Tm(a,h)|0}return f|0}function qh(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=0;while(1){e=th(a,b)|0;if(!e)break;c[d+(f<<2)>>2]=c[(c[e+16>>2]|0)+20>>2];po(b,e)|0;e=Pm(a,e)|0;while(1){if(!e)break;g=Rm(a,e)|0;dn(a,e)|0;e=g}f=f+1|0}return f|0}function rh(a,b){a=a|0;b=b|0;return (c[a>>2]|0)-(c[b>>2]|0)|0}function sh(a){a=a|0;var b=0,c=0;b=co(a)|0;while(1){if(!b)break;c=eo(a,b)|0;po(a,b)|0;b=c}return}function th(a,b){a=a|0;b=b|0;var c=0;c=co(b)|0;while(1){if(!c){c=0;break}if(!(on(a,c,1,0)|0))break;c=eo(b,c)|0}return c|0}function uh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;vh(b);i=b+16|0;f=0;e=0;while(1){if((f|0)>=(c[(c[i>>2]|0)+220>>2]|0))break;wh(b,f);f=f+1|0;e=(xh(b,0,d)|0)+e|0}yh(b);h=1;while(1){f=c[i>>2]|0;g=c[f+180>>2]|0;if((h|0)>(g|0))break;g=(zh(c[(c[f+184>>2]|0)+(h<<2)>>2]|0,d)|0)+e|0;h=h+1|0;e=g}do if((g|0)>0){f=Im(b,78669)|0;if(f|0?(FA(f)|0)<<24>>24==0:0)break;Yk(b);a[174029]=1;e=xh(b,2,d)|0}while(0);Ah(b,e);return}function vh(d){d=d|0;var e=0;if(a[174212]|0)uA();a[174029]=0;c[41933]=d;e=((nn(Vf(d)|0)|0)<<2)+4|0;c[41932]=sw(e)|0;c[41931]=sw(e)|0;qi(d);e=d+16|0;if(b[(c[e>>2]|0)+136>>1]&16)ri(d);Fk(d);tl(d,1);si(d);Hh(d);e=c[e>>2]|0;c[41934]=b[e+236>>1];c[41935]=b[e+238>>1];return}function wh(a,d){a=a|0;d=d|0;var e=0,f=0,g=0;a=c[a+16>>2]|0;c[a+192>>2]=c[(c[a+216>>2]|0)+(d<<2)>>2];a:do if((d|0)>0){d=b[a+238>>1]|0;e=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(d|0))break a;f=c[e>>2]|0;g=f+(a<<6)+4|0;f=f+(a<<6)|0;c[g>>2]=(c[g>>2]|0)+(c[f>>2]<<2);c[f>>2]=0;a=a+1|0}}while(0);return}function xh(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+32|0;p=q;if((d|0)>1){f=Xh(0)|0;Yh(b)}else f=2147483647;o=c[13857]|0;n=d;g=0;d=f;while(1){if((n|0)>=3)break;g=c[42192]|0;if((n|0)==2)if((f|0)>(d|0)){_h(b);f=d}else f=d;else{f=(g|0)<4?g:4;if((Vf(b)|0)==(b|0))Zh(b,n);if(!n)Ih(b);Jh(b);i=Xh(0)|0;if((i|0)>(d|0)){g=f;f=i}else{Yh(b);g=f;f=i;d=i}}i=0;m=0;while(1){j=(f|0)==0;if((m|0)>=(g|0))break;if(a[174212]|0){c[p>>2]=n;c[p+4>>2]=m;c[p+8>>2]=i;c[p+12>>2]=f;c[p+16>>2]=d;OL(o,79062,p)|0}k=i+1|0;if(j|(i|0)>=(c[41936]|0))break;$h(b,m);f=Xh(0)|0;if((f|0)>(d|0))i=k;else{Yh(b);i=+(f|0)<+(d|0)*+h[20880]?0:k;d=f}m=m+1|0}if(j){f=0;break}else n=n+1|0}if((f|0)>(d|0))_h(b);if((d|0)>0){ai(b,0);f=Xh(0)|0}else f=d;a:do if(e|0){d=0;while(1){if((d|0)>=(g|0))break a;bi(b);d=d+1|0}}while(0);l=q;return f|0}function yh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+16|0;o=q;Wh(d);m=d+16|0;e=c[m>>2]|0;n=c[13857]|0;k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0))break;f=c[e+196>>2]|0;g=c[f+(k<<6)+8>>2]|0;c[f+(k<<6)>>2]=g;h=c[f+(k<<6)+12>>2]|0;c[f+(k<<6)+4>>2]=h;j=0;while(1){if((j|0)>=(g|0))break;i=c[h+(j<<2)>>2]|0;if(!i){p=6;break}c[(c[i+16>>2]|0)+236>>2]=j;j=j+1|0}if((p|0)==6){p=0;if(a[174212]|0){f=Dn(d)|0;e=c[(c[(c[m>>2]|0)+196>>2]|0)+(k<<6)>>2]|0;c[o>>2]=f;c[o+4>>2]=k;c[o+8>>2]=j;c[o+12>>2]=e;OL(n,79012,o)|0;e=c[m>>2]|0;f=c[e+196>>2]|0}c[f+(k<<6)>>2]=j}k=k+1|0}l=q;return}function zh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;Sk(a);Hh(a);Ih(a);Jh(a);f=a+16|0;d=xh(a,2,b)|0;e=1;while(1){g=c[f>>2]|0;if((e|0)>(c[g+180>>2]|0))break;d=(zh(c[(c[g+184>>2]|0)+(e<<2)>>2]|0,b)|0)+d|0;e=e+1|0}Kh(a);return d|0}function Ah(d,e){d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0;q=l;l=l+16|0;p=q;f=c[41931]|0;if(f|0){xN(f);c[41931]=0}f=c[41932]|0;if(f|0){xN(f);c[41932]=0}o=d+16|0;f=1;while(1){g=c[o>>2]|0;if((f|0)>(c[g+180>>2]|0))break;Bh(c[(c[g+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0}n=b[g+236>>1]|0;f=g;while(1){if((n|0)>(b[f+238>>1]|0))break;else m=0;while(1){f=c[f+196>>2]|0;if((m|0)>=(c[f+(n<<6)>>2]|0))break;k=(c[(c[f+(n<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;f=c[k>>2]|0;c[f+236>>2]=m;f=c[f+188>>2]|0;a:do if(f|0){g=0;while(1){i=c[f+(g<<2)>>2]|0;if(!i)break a;j=i+16|0;if((a[(c[j>>2]|0)+112>>0]|0)==4){hh(i);xN(c[j>>2]|0);xN(i);g=g+-1|0;f=c[(c[k>>2]|0)+188>>2]|0}g=g+1|0}}while(0);m=m+1|0;f=c[o>>2]|0}Ch(c[f+(n<<6)+56>>2]|0);n=n+1|0;f=c[o>>2]|0}if(a[174212]|0){o=c[13857]|0;d=Dn(d)|0;r=+vA();c[p>>2]=d;c[p+4>>2]=e;h[p+8>>3]=r;OL(o,78680,p)|0}l=q;return}function Bh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=a+16|0;d=1;while(1){f=c[g>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Bh(c[(c[f+184>>2]|0)+(d<<2)>>2]|0);d=d+1|0}a:do if(c[f+268>>2]|0){e=b[f+236>>1]|0;d=f;while(1){if((e|0)>(b[d+238>>1]|0))break a;j=c[(c[d+268>>2]|0)+(e<<2)>>2]|0;i=Dh(a,j,-1)|0;j=Dh(a,j,1)|0;c[(c[(c[g>>2]|0)+268>>2]|0)+(e<<2)>>2]=i;k=c[(c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0;i=c[(c[i+16>>2]|0)+236>>2]|0;f=c[g>>2]|0;h=c[f+196>>2]|0;c[h+(e<<6)+4>>2]=k+(i<<2);c[h+(e<<6)>>2]=(c[(c[j+16>>2]|0)+236>>2]|0)+1-i;e=e+1|0;d=f}}while(0);return}function Ch(a){a=a|0;if(a|0){xN(c[a+8>>2]|0);xN(a)}return}function Dh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=b;while(1){b=Eh(b,c)|0;if(!b)break;if(Fh(a,b)|0){d=b;continue}e=(Gh(a,b)|0)==0;d=e?d:b}return d|0}function Eh(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(!a)va(78719,78644,1023,78721);a=a+16|0;if((b|0)<0){a=c[a>>2]|0;e=c[a+236>>2]|0;if((e|0)>0){a=(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+-1|0;f=7}else g=0}else{a=c[a>>2]|0;e=c[a+236>>2]|0;a=(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(c[a+232>>2]<<6)+4|0;d=e+1|0;f=7}if((f|0)==7){a=c[(c[a>>2]|0)+(d<<2)>>2]|0;if(a)if((S((c[(c[a+16>>2]|0)+236>>2]|0)-e|0,b)|0)>0)g=a;else va(78730,78644,1029,78721);else g=0}return g|0}function Fh(b,d){b=b|0;d=d|0;if(!(a[(c[d+16>>2]|0)+156>>0]|0))b=(Bo(b,d)|0)!=0;else b=0;return b&1|0}function Gh(b,d){b=b|0;d=d|0;var e=0,f=0;d=c[d+16>>2]|0;if(((a[d+156>>0]|0)==1?(c[d+176>>2]|0)==1:0)?(c[d+184>>2]|0)==1:0){d=c[d+180>>2]|0;while(1){d=c[d>>2]|0;e=c[d+16>>2]|0;if(!(a[e+112>>0]|0))break;else d=e+116|0}if(Bo(b,d)|0)d=1;else f=7}else f=7;if((f|0)==7)d=0;return d|0}function Hh(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;d=c[42202]|0;a:do if((d|0)!=0|(c[42231]|0)!=0){d=CA(b,d,0)|0;if(d|0){switch(a[d>>0]|0){case 0:break a;case 111:{if(!(vJ(d,78932)|0)){Rh(b,1);break a}break}case 105:{if(!(vJ(d,83714)|0)){Rh(b,0);break a}break}default:{}}c[e>>2]=d;_l(1,78936,e)|0;break}d=Jp(b)|0;while(1){if(!d)break;if(!(Cj(d)|0))Hh(d);d=Kp(d)|0}if(c[42231]|0)Sh(b)}while(0);l=f;return}function Ih(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;e=c[k>>2]|0;j=b[e+236>>1]|0;while(1){if((j|0)>(b[e+238>>1]|0))break;else{f=0;i=0}while(1){g=c[e+196>>2]|0;h=c[g+(j<<6)>>2]|0;if((i|0)>=(h|0))break;g=c[(c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;a[g+158>>0]=0;a[g+157>>0]=0;c[g+284>>2]=i;if((f|0)==0&(c[g+192>>2]|0)>0){f=Ph(h,h)|0;e=c[k>>2]|0;c[(c[e+196>>2]|0)+(j<<6)+56>>2]=f;f=1}i=i+1|0}a:do if(f){i=0;f=h;while(1){if((i|0)>=(f|0))break a;h=c[(c[g+(j<<6)+4>>2]|0)+(i<<2)>>2]|0;if(!(a[(c[h+16>>2]|0)+157>>0]|0)){Qh(d,h);e=c[k>>2]|0;f=c[e+196>>2]|0;g=f;f=c[f+(j<<6)>>2]|0}i=i+1|0}}while(0);j=j+1|0}return}function Jh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=d+16|0;e=c[t>>2]|0;if(a[e+240>>0]|0){h=0;s=b[e+236>>1]|0;f=0;a:while(1){r=(h|0)!=0;if((s|0)>(b[e+238>>1]|0))break;g=c[e+196>>2]|0;i=c[g+(s<<6)>>2]|0;if(!i)g=h;else{g=c[g+(s<<6)+4>>2]|0;p=c[(c[(c[g>>2]|0)+16>>2]|0)+236>>2]|0;e=0;while(1){h=e+1|0;if((e|0)>=(i|0))break;a[(c[(c[g+(e<<2)>>2]|0)+16>>2]|0)+157>>0]=0;e=h}e=h<<2;if(r)q=vw(f,e)|0;else q=tw(e)|0;m=0;n=0;while(1){e=c[t>>2]|0;g=c[e+196>>2]|0;h=c[g+(s<<6)>>2]|0;i=e+116|0;o=q+(m<<2)|0;if((h|0)<=(n|0))break;j=c[(c[g+(s<<6)+4>>2]|0)+(((c[i>>2]&1|0)==0?h+~n|0:n)<<2)>>2]|0;l=j+16|0;e=0;k=0;while(1){i=c[l>>2]|0;if((e|0)>=(c[i+200>>2]|0)){g=0;h=0;e=i;break}i=((Lh(d,c[(c[i+196>>2]|0)+(e<<2)>>2]|0)|0)!=0&1)+k|0;e=e+1|0;k=i}while(1){if((h|0)>=(c[e+192>>2]|0))break;i=((Lh(d,c[(c[e+188>>2]|0)+(h<<2)>>2]|0)|0)!=0&1)+g|0;g=i;h=h+1|0;e=c[l>>2]|0}if(g|k)if((k|0)==0&(a[e+157>>0]|0)==0)e=(Mh(d,j,o,s)|0)+m|0;else e=m;else{c[o>>2]=j;e=m+1|0}m=e;n=n+1|0}b:do if(m){c:do if(!(c[i>>2]&1)){g=q;e=o;while(1){e=e+-4|0;if(g>>>0>=e>>>0){h=0;break c}o=c[g>>2]|0;c[g>>2]=c[e>>2];c[e>>2]=o;g=g+4|0}}else h=0;while(0);while(1){e=c[t>>2]|0;i=c[e+196>>2]|0;g=c[i+(s<<6)>>2]|0;if((h|0)>=(g|0)){m=0;h=i;break}o=c[q+(h<<2)>>2]|0;c[(c[i+(s<<6)+4>>2]|0)+(h<<2)>>2]=o;c[(c[o+16>>2]|0)+236>>2]=h+p;h=h+1|0}while(1){if((m|0)>=(g|0))break b;l=(c[(c[h+(s<<6)+4>>2]|0)+(m<<2)>>2]|0)+16|0;i=c[(c[l>>2]|0)+188>>2]|0;if(i){k=0;g=i;while(1){h=c[g+(k<<2)>>2]|0;e=c[t>>2]|0;if(!h)break;j=c[h>>2]&3;i=c[(c[(c[((j|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;j=c[(c[(c[((j|0)==3?h:h+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;if(!(c[e+116>>2]&1))if((i|0)<(j|0))u=35;else e=k;else if((i|0)>(j|0))u=35;else e=k;if((u|0)==35){u=0;if(Lh(d,h)|0){u=36;break a}hh(h);Nh(d,h);e=k+-1|0;g=c[(c[l>>2]|0)+188>>2]|0}k=e+1|0}g=c[e+196>>2]|0;h=g;g=c[g+(s<<6)>>2]|0}m=m+1|0}}while(0);a[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(s<<6)+49>>0]=0;g=q;f=q}h=g;s=s+1|0}if((u|0)==36)va(78778,78644,1561,78817);if(r)xN(f)}return}function Kh(a){a=a|0;var d=0,e=0;e=a+16|0;a=c[e>>2]|0;a:do if(c[a+268>>2]|0){d=b[a+236>>1]|0;while(1){if((d|0)>(b[a+238>>1]|0))break a;c[(c[a+268>>2]|0)+(d<<2)>>2]=c[c[(c[a+196>>2]|0)+(d<<6)+4>>2]>>2];d=d+1|0;a=c[e>>2]|0}}while(0);return}function Lh(a,b){a=a|0;b=b|0;if((c[(c[b+16>>2]|0)+156>>2]|0)!=0?(Oh(a,c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)!=0:0)a=(Oh(a,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)!=0&1;else a=0;return a|0}function Mh(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;g=c[l>>2]|0;a[g+157>>0]=1;a:do if((c[g+192>>2]|0)>0){h=0;j=0;while(1){i=c[(c[g+188>>2]|0)+(j<<2)>>2]|0;if(!i)break a;if((Lh(b,i)|0)!=0?(k=c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0,(a[(c[k+16>>2]|0)+157>>0]|0)==0):0)h=(Mh(b,k,e+(h<<2)|0,f)|0)+h|0;j=j+1|0;g=c[l>>2]|0}}else h=0;while(0);if((c[g+232>>2]|0)==(f|0)){c[e+(h<<2)>>2]=d;return h+1|0}else va(78830,78644,1490,78846);return 0}function Nh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=c[d>>2]&3;i=c[((h|0)==2?d:d+-48|0)+40>>2]|0;f=c[(c[i+16>>2]|0)+188>>2]|0;l=d+48|0;a:do if(!f)m=14;else{g=((h|0)==3?d:l)+40|0;e=0;while(1){j=c[f+(e<<2)>>2]|0;if(!j){m=14;break a}if((c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)==(c[g>>2]|0))break;else e=e+1|0}ih(d,j);e=(c[d+16>>2]|0)+172|0;if(!(c[e>>2]|0))c[e>>2]=j;e=c[j+16>>2]|0;if((a[e+112>>0]|0)==4?(k=e+116|0,(c[k>>2]|0)==0):0)c[k>>2]=d;b=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;e=c[b+204>>2]|0;b=(c[b+208>>2]<<2)+8|0;if(!e)e=tw(b)|0;else e=vw(e,b)|0;c[(c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0)+204>>2]=e;i=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;j=c[i+204>>2]|0;i=i+208|0;k=c[i>>2]|0;c[i>>2]=k+1;c[j+(k<<2)>>2]=d;l=c[(c[((c[d>>2]&3|0)==3?d:l)+40>>2]|0)+16>>2]|0;c[(c[l+204>>2]|0)+(c[l+208>>2]<<2)>>2]=0}while(0);if((m|0)==14){m=$g(i,c[((h|0)==3?d:l)+40>>2]|0,d)|0;d=c[d+16>>2]|0;l=c[m+16>>2]|0;a[l+112>>0]=(a[d+112>>0]|0)==4?4:3;c[l+96>>2]=c[d+96>>2];gh(b,m)}return}function Oh(a,b){a=a|0;b=b|0;var c=0;c=Fh(a,b)|0;return Gh(a,b)|0|c|0}function Ph(a,b){a=a|0;b=b|0;var d=0;d=sw(12)|0;c[d>>2]=a;c[d+4>>2]=b;c[d+8>>2]=sw(S(b,a)|0)|0;return d|0}function Qh(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;o=d+16|0;l=c[o>>2]|0;k=c[(c[(c[b+16>>2]|0)+196>>2]|0)+(c[l+232>>2]<<6)+56>>2]|0;a[l+157>>0]=1;a[l+158>>0]=1;l=(c[(c[(Vf(b)|0)+16>>2]|0)+180>>2]|0)>0;e=c[o>>2]|0;f=c[e+188>>2]|0;a:do if(f){m=k+4|0;n=k+8|0;d=0;b:while(1){j=c[f+(d<<2)>>2]|0;if(!j){p=e;break a}g=j+-48|0;e=j+48|0;if(l){if((Bo(b,c[((c[j>>2]&3|0)==3?j:e)+40>>2]|0)|0)!=0?(Bo(b,c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0)|0)!=0:0)q=7}else q=7;do if((q|0)==7){q=0;h=j+16|0;if(c[(c[h>>2]|0)+156>>2]|0){s=c[j>>2]&3;r=c[(c[((s|0)==2?j:g)+40>>2]|0)+16>>2]|0;i=c[r+284>>2]|0;f=(i|0)<(c[k>>2]|0);e=((s|0)==3?j:e)+40|0;if((a[r+158>>0]|0)==1){if(!f){q=10;break b}e=c[(c[(c[e>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=12;break b}a[(c[n>>2]|0)+((S(f,i)|0)+e)>>0]=1;hh(j);d=d+-1|0;if((a[(c[h>>2]|0)+112>>0]|0)==4)break;Nh(b,j);break}else{if(!f){q=16;break b}e=c[(c[(c[e>>2]|0)+16>>2]|0)+284>>2]|0;f=c[m>>2]|0;if((e|0)>=(f|0)){q=18;break b}a[(c[n>>2]|0)+((S(f,e)|0)+i)>>0]=1;e=c[((c[j>>2]&3|0)==2?j:g)+40>>2]|0;if(a[(c[e+16>>2]|0)+157>>0]|0)break;Qh(b,e);break}}}while(0);f=c[o>>2]|0;d=d+1|0;e=f;f=c[f+188>>2]|0}if((q|0)==10)va(78856,78644,1251,78888);else if((q|0)==12)va(78900,78644,1252,78888);else if((q|0)==16)va(78856,78644,1260,78888);else if((q|0)==18)va(78900,78644,1261,78888)}else p=e;while(0);a[p+158>>0]=0;return}function Rh(a,b){a=a|0;b=b|0;var c=0;c=co(a)|0;while(1){if(!c)break;Th(a,c,b);c=eo(a,c)|0}return}function Sh(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=l;l=l+16|0;f=g;d=co(b)|0;while(1){if(!d)break;e=CA(d,c[42231]|0,0)|0;a:do if(e|0){switch(a[e>>0]|0){case 0:break a;case 111:{if(!(vJ(e,78932)|0)){Th(b,d,1);break a}break}case 105:{if(!(vJ(e,83714)|0)){Th(b,d,0);break a}break}default:{}}h=Dn(d)|0;c[f>>2]=e;c[f+4>>2]=h;_l(1,78967,f)|0}while(0);d=eo(b,d)|0}l=g;return}function Th(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=c[41932]|0;h=d+16|0;f=c[h>>2]|0;a:do if(!(c[f+212>>2]|0)){i=(e|0)!=0;b:do if(i){g=0;d=0;e=f;while(1){f=c[(c[e+180>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}else{g=0;d=0;e=f;while(1){f=c[(c[e+172>>2]|0)+(g<<2)>>2]|0;if(!f)break b;if(!(Uh(f)|0)){c[j+(d<<2)>>2]=f;d=d+1|0;e=c[h>>2]|0}g=g+1|0}}while(0);if((d|0)>=2){c[j+(d<<2)>>2]=0;AK(j,d,4,13);h=i?2:3;g=i?-1:1;f=1;while(1){d=c[j+(f<<2)>>2]|0;if(!d)break a;e=c[j+(f+-1<<2)>>2]|0;e=c[((c[e>>2]&3|0)==(h|0)?e:e+(g*48|0)|0)+40>>2]|0;d=c[((c[d>>2]&3|0)==(h|0)?d:d+(g*48|0)|0)+40>>2]|0;if(Ug(e,d)|0)break a;i=$g(e,d,0)|0;a[(c[i+16>>2]|0)+112>>0]=4;gh(b,i);f=f+1|0}}}while(0);return}function Uh(a){a=a|0;var b=0;while(1){b=c[(c[a+16>>2]|0)+116>>2]|0;if(!b)break;else a=b}b=c[a>>2]&3;return (c[(c[(c[((b|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)!=(c[(c[(c[((b|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0)|0}function Vh(a,b){a=a|0;b=b|0;return ((c[c[a>>2]>>2]|0)>>>4)-((c[c[b>>2]>>2]|0)>>>4)|0}function Wh(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=c[a+16>>2]|0;h=g+220|0;i=c[h>>2]|0;if((i|0)>=2){f=c[g+216>>2]|0;a=0;e=0;while(1){if((e|0)==(i|0))break;d=c[f+(e<<2)>>2]|0;if(a|0)c[(c[a+16>>2]|0)+164>>2]=d;j=c[d+16>>2]|0;c[j+168>>2]=a;a=d;d=j;while(1){d=c[d+164>>2]|0;if(!d)break;a=d;d=c[d+16>>2]|0}e=e+1|0}c[h>>2]=1;c[g+192>>2]=c[f>>2];b[g+236>>1]=c[41934];b[g+238>>1]=c[41935]}return}function Xh(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;i=c[41933]|0;j=i+16|0;f=c[j>>2]|0;g=0;h=b[f+236>>1]|0;while(1){if((h|0)>=(b[f+238>>1]|0))break;d=c[f+196>>2]|0;if(!(a[d+(h<<6)+49>>0]|0)){e=oi(i,h)|0;d=c[j>>2]|0;f=c[d+196>>2]|0;c[f+(h<<6)+52>>2]=e;a[f+(h<<6)+49>>0]=1}else{e=c[d+(h<<6)+52>>2]|0;d=f}g=e+g|0;h=h+1|0;f=d}return g|0}function Yh(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0;a=c[a+16>>2]|0;g=b[a+238>>1]|0;i=a+196|0;a=b[a+236>>1]|0;while(1){if((a|0)>(g|0))break;f=c[i>>2]|0;e=c[f+(a<<6)>>2]|0;f=f+(a<<6)+4|0;d=0;while(1){if((d|0)>=(e|0))break;j=c[(c[(c[f>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;h[j+16>>3]=+(c[j+236>>2]|0);d=d+1|0}a=a+1|0}return}function Zh(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;m=r;n=d+16|0;o=wA(c[(c[n>>2]|0)+232>>2]|0)|0;j=c[n>>2]|0;f=j+192|0;g=f;while(1){g=c[g>>2]|0;if(!g)break;g=c[g+16>>2]|0;a[g+157>>0]=0;g=g+164|0}h=b[j+238>>1]|0;i=j+196|0;g=b[j+236>>1]|0;while(1){if((g|0)>(h|0))break;c[(c[i>>2]|0)+(g<<6)>>2]=0;g=g+1|0}i=(e|0)==0;while(1){g=c[f>>2]|0;if(!g)break;h=g+16|0;f=c[h>>2]|0;if((c[c[(i?f+172|0:f+180|0)>>2]>>2]|0)==0?(k=f+157|0,(a[k>>0]|0)==0):0){a[k>>0]=1;yA(o,g);while(1){f=zA(o)|0;if(!f)break;if((a[(c[f+16>>2]|0)+159>>0]|0)==7){Xk(d,f,e,o);continue}else{mi(d,f);ni(o,f,e);continue}}f=c[h>>2]|0}f=f+164|0}if(zA(o)|0)_l(1,79175,m)|0;f=c[n>>2]|0;j=b[f+236>>1]|0;while(1){if((j|0)>(b[f+238>>1]|0))break;a[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(j<<6)+49>>0]=0;if((c[f+116>>2]&1|0)!=0?(p=c[f+196>>2]|0,q=c[p+(j<<6)>>2]|0,(q|0)>0):0){g=c[p+(j<<6)+4>>2]|0;h=q+-1|0;i=(h|0)/2|0;f=0;while(1){if((f|0)>(i|0))break;gi(c[g+(f<<2)>>2]|0,c[g+(h-f<<2)>>2]|0);f=f+1|0}f=c[n>>2]|0}j=j+1|0}if((Vf(d)|0)==(d|0)?(Xh(0)|0)>0:0)ai(d,0);xA(o);l=r;return}function _h(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=d+16|0;d=c[n>>2]|0;f=b[d+236>>1]|0;e=b[d+238>>1]|0;l=e<<16>>16;m=d+196|0;g=f;while(1){if((g|0)>(l|0))break;k=c[m>>2]|0;j=c[k+(g<<6)>>2]|0;k=k+(g<<6)+4|0;i=0;while(1){if((i|0)>=(j|0))break;o=c[(c[(c[k>>2]|0)+(i<<2)>>2]|0)+16>>2]|0;c[o+236>>2]=~~+h[o+16>>3];i=i+1|0}g=g+1|0}while(1){if((f|0)>(e<<16>>16|0))break;a[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(f<<6)+49>>0]=0;o=c[d+196>>2]|0;AK(c[o+(f<<6)+4>>2]|0,c[o+(f<<6)>>2]|0,4,14);o=c[n>>2]|0;f=f+1|0;e=b[o+238>>1]|0;d=o}return}function $h(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=((d|0)%4|0|0)<2&1;f=c[a+16>>2]|0;i=b[f+238>>1]|0;j=i<<16>>16;f=b[f+236>>1]|0;g=f<<16>>16;h=c[(c[41933]|0)+16>>2]|0;if(!(d&1)){k=1;e=j;d=(f<<16>>16<=(b[h+236>>1]|0)&1)+g|0}else{k=-1;e=g;d=((i<<16>>16>=(b[h+238>>1]|0))<<31>>31)+j|0}e=k+e|0;while(1){if((d|0)==(e|0))break;ji(a,d,l,(ii(a,d,d-k|0)|0)&255);d=d+k|0}ai(a,l^1);return}function ai(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;k=d+16|0;g=c[k>>2]|0;i=b[g+236>>1]|0;j=b[g+238>>1]|0;h=g+196|0;f=i<<16>>16;while(1){if((f|0)>(j|0)){h=i;break}a[(c[h>>2]|0)+(f<<6)+48>>0]=1;f=f+1|0}while(1){f=0;h=h<<16>>16;while(1){if((h|0)>(b[g+238>>1]|0))break;if(a[(c[g+196>>2]|0)+(h<<6)+48>>0]|0){f=(hi(d,h,e)|0)+f|0;g=c[k>>2]|0}h=h+1|0}if((f|0)<=0)break;h=b[g+236>>1]|0}return}function bi(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=d+16|0;e=c[o>>2]|0;n=b[e+238>>1]|0;a:while(1){if((n|0)<(b[e+236>>1]|0)){e=16;break}f=c[e+196>>2]|0;a[f+(n<<6)+48>>0]=0;p=(n|0)>0;q=n+1|0;g=0;b:while(1){l=(c[f+(n<<6)>>2]|0)+-1|0;m=f+(n<<6)+4|0;k=f+(q<<6)|0;while(1){if((g|0)>=(l|0))break b;j=c[m>>2]|0;i=c[j+(g<<2)>>2]|0;g=g+1|0;j=c[j+(g<<2)>>2]|0;if((c[(c[i+16>>2]|0)+236>>2]|0)>=(c[(c[j+16>>2]|0)+236>>2]|0)){e=7;break a}if(ci(d,i,j)|0)continue;if(p){f=di(i,j)|0;h=di(j,i)|0}else{f=0;h=0}if((c[k>>2]|0)>0){f=(ei(i,j)|0)+f|0;h=(ei(j,i)|0)+h|0}if((h|0)<=(f|0))break}fi(d,n,i,j);e=c[o>>2]|0;f=c[e+196>>2]|0}n=n+-1|0}if((e|0)==7)va(79126,78644,721,79152);else if((e|0)==16)return}function ci(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0;j=c[d+16>>2]|0;i=c[j+212>>2]|0;f=c[e+16>>2]|0;g=c[f+212>>2]|0;h=(i|0)!=(g|0);do if(!(a[174029]|0))if((g|0)==0|((i|0)==0|h^1))k=9;else{if((a[j+159>>0]|0)==7?(a[j+156>>0]|0)==1:0){b=0;break}if((a[f+159>>0]|0)==7?(a[f+156>>0]|0)==1:0){b=0;break}b=1}else if(h)b=1;else k=9;while(0);if((k|0)==9){f=c[b+16>>2]|0;b=c[(c[f+196>>2]|0)+(c[j+232>>2]<<6)+56>>2]|0;if(!b)b=0;else{j=(c[f+116>>2]&1|0)==0;k=S(c[b+4>>2]|0,c[(c[(j?d:e)+16>>2]|0)+284>>2]|0)|0;b=a[(c[b+8>>2]|0)+((c[(c[(j?e:d)+16>>2]|0)+284>>2]|0)+k)>>0]|0}}return b|0}function di(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+172>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+16|0;f=c[(c[l>>2]|0)+172>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;d=d+16|0;if((e|0)<=0){if((e|0)==0?(m=c[d>>2]|0,+h[m+16>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d>>2]|0;n=9}if((n|0)==9){n=0;a=(S(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function ei(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+16|0;j=c[(c[d+16>>2]|0)+180>>2]|0;d=0;while(1){a=c[j>>2]|0;if(!a)break;i=c[a+16>>2]|0;k=b[i+154>>1]|0;g=c[(c[(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;i=i+56|0;f=c[(c[l>>2]|0)+180>>2]|0;a=d;while(1){d=c[f>>2]|0;if(!d)break;e=(c[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-g|0;d=d+16|0;if((e|0)<=0){if((e|0)==0?(m=c[d>>2]|0,+h[m+56>>3]>+h[i>>3]):0){d=m;n=9}}else{d=c[d>>2]|0;n=9}if((n|0)==9){n=0;a=(S(b[d+154>>1]|0,k)|0)+a|0}f=f+4|0}j=j+4|0;d=a}return d|0}function fi(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;i=a[(c[e+16>>2]|0)+156>>0]|0;if(i<<24>>24!=(a[(c[f+16>>2]|0)+156>>0]|0)){j=b+16|0;l=c[(c[j>>2]|0)+196>>2]|0;k=c[l+(d<<6)>>2]|0;l=l+(d<<6)+4|0;b=0;g=0;h=0;while(1){if((b|0)>=(k|0))break;o=(a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)==0;b=b+1|0;g=(o&1)+g|0;h=((o^1)&1)+h|0}i=i<<24>>24==0;h=(g|0)<(h|0)?(i?e:f):i?f:e;i=0;b=0;while(1){if((b|0)>=(k|0))break;i=(c[(c[l>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}o=(a[(c[h+16>>2]|0)+156>>0]|0)==0&1;n=0;g=i;while(1){b=g+-1|0;if((g|0)<=0){m=0;b=i;break}if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){m=0;b=i;break}n=n+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[l>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;m=m+1|0}gi(e,f);j=c[(c[j>>2]|0)+196>>2]|0;k=c[j+(d<<6)>>2]|0;j=j+(d<<6)+4|0;b=0;while(1){if((b|0)>=(k|0)){h=0;g=i;break}i=(c[(c[j>>2]|0)+(b<<2)>>2]|0)==(h|0)?b:i;b=b+1|0}while(1){b=g+-1|0;if((g|0)<=0){g=0;b=i;break}if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0)){g=0;b=i;break}h=h+1|0;g=b}while(1){b=b+1|0;if((b|0)>=(k|0))break;if((a[(c[(c[(c[j>>2]|0)+(b<<2)>>2]|0)+16>>2]|0)+156>>0]|0)!=(o|0))break;g=g+1|0}d=h-g|0;o=n-m|0;if((((d|0)>-1?d:0-d|0)|0)>(((o|0)>-1?o:0-o|0)|0))gi(e,f)}return}function gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[a+16>>2]|0;e=c[f+232>>2]|0;f=f+236|0;d=c[f>>2]|0;g=b+16|0;h=c[(c[g>>2]|0)+236>>2]|0;c[f>>2]=h;f=(c[41933]|0)+16|0;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(h<<2)>>2]=a;c[(c[g>>2]|0)+236>>2]=d;c[(c[(c[(c[f>>2]|0)+196>>2]|0)+(e<<6)+4>>2]|0)+(d<<2)>>2]=b;return}function hi(d,e,f){d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=d+16|0;n=c[(c[q>>2]|0)+196>>2]|0;a[n+(e<<6)+48>>0]=0;r=(e|0)>0;s=e+1|0;o=(f|0)!=0;p=e+-1|0;g=0;i=0;f=n;a:while(1){l=(c[f+(e<<6)>>2]|0)+-1|0;m=f+(e<<6)+4|0;h=f+(s<<6)|0;n=g;while(1){if((n|0)>=(l|0)){f=17;break a}k=c[m>>2]|0;j=c[k+(n<<2)>>2]|0;n=n+1|0;k=c[k+(n<<2)>>2]|0;if((c[(c[j+16>>2]|0)+236>>2]|0)>=(c[(c[k+16>>2]|0)+236>>2]|0)){f=5;break a}if(ci(d,j,k)|0)continue;if(r){f=di(j,k)|0;g=di(k,j)|0}else{f=0;g=0}if((c[h>>2]|0)>0){f=(ei(j,k)|0)+f|0;g=(ei(k,j)|0)+g|0}if((f|0)>(g|0))break;if((f|0)==(g|0)&(o&(f|0)>0)){f=g;break}}gi(j,k);i=f-g+i|0;g=c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0;a[g+(e<<6)+49>>0]=0;h=c[q>>2]|0;f=c[h+196>>2]|0;a[f+(e<<6)+48>>0]=1;if((b[h+236>>1]|0)<(e|0)){a[g+(p<<6)+49>>0]=0;a[f+(p<<6)+48>>0]=1}if((b[h+238>>1]|0)<=(e|0)){g=n;continue}a[g+(s<<6)+49>>0]=0;a[f+(s<<6)+48>>0]=1;g=n}if((f|0)==5)va(79126,78644,770,79160);else if((f|0)==17)return i|0;return 0}function ii(a,e,f){a=a|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=c[41931]|0;q=a+16|0;a=c[(c[q>>2]|0)+196>>2]|0;r=c[a+(e<<6)+4>>2]|0;n=(f|0)>(e|0);o=p+4|0;m=0;while(1){f=c[a+(e<<6)>>2]|0;if((m|0)>=(f|0)){a=0;i=0;break}l=(c[r+(m<<2)>>2]|0)+16|0;k=c[l>>2]|0;a:do if(n){j=c[k+180>>2]|0;a=0;i=0;while(1){f=c[j+(i<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=d[g+88>>0]|c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8;a=a+1|0}i=i+1|0}}else{j=c[k+172>>2]|0;i=0;a=0;while(1){f=c[j+(i<<2)>>2]|0;if(!f)break a;g=c[f+16>>2]|0;if((b[g+154>>1]|0)>0){c[p+(a<<2)>>2]=d[g+48>>0]|c[(c[(c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+236>>2]<<8;a=a+1|0}i=i+1|0}}while(0);b:do switch(a|0){case 0:{h[k+240>>3]=-1.0;break}case 1:{h[k+240>>3]=+(c[p>>2]|0);break}case 2:{h[k+240>>3]=+(((c[o>>2]|0)+(c[p>>2]|0)|0)/2|0|0);break}default:{AK(p,a,4,12);f=(a|0)/2|0;j=c[p+(f<<2)>>2]|0;i=(c[l>>2]|0)+240|0;if(a&1|0){h[i>>3]=+(j|0);break b}g=(c[p+(a+-1<<2)>>2]|0)-j|0;a=c[p+(f+-1<<2)>>2]|0;f=a-(c[p>>2]|0)|0;if((f|0)==(g|0)){h[i>>3]=+((a+j|0)/2|0|0);break b}else{h[i>>3]=+(((S(f,j)|0)+(S(a,g)|0)|0)/(f+g|0)|0|0);break b}}}while(0);m=m+1|0;a=c[(c[q>>2]|0)+196>>2]|0}while(1){if((i|0)>=(f|0))break;g=c[r+(i<<2)>>2]|0;p=c[g+16>>2]|0;if((c[p+184>>2]|0)==0?(c[p+176>>2]|0)==0:0){a=(ki(g)|0|a&255)&255;f=c[(c[(c[q>>2]|0)+196>>2]|0)+(e<<6)>>2]|0}i=i+1|0}return a|0}function ji(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;m=c[(c[b+16>>2]|0)+196>>2]|0;q=c[m+(d<<6)+4>>2]|0;m=c[m+(d<<6)>>2]|0;o=(e|0)!=0;n=(f|e|0)==0;f=0;e=m;m=q+(m<<2)|0;while(1){l=e+-1|0;if((e|0)>0)e=q;else break;a:while(1){b:while(1){if(e>>>0>=m>>>0)break a;do{if(e>>>0>=m>>>0)break a;k=c[e>>2]|0;e=e+4|0}while(+h[(c[k+16>>2]|0)+240>>3]<0.0);g=0;while(1){if(e>>>0>=m>>>0)break a;i=c[e>>2]|0;if(!(g<<24>>24!=0?(c[(c[i+16>>2]|0)+212>>2]|0)!=0:0)){if(ci(b,k,i)|0)continue b;j=c[i+16>>2]|0;if(+h[j+240>>3]>=0.0)break;g=(c[j+212>>2]|0)==0?g:1}e=e+4|0}g=~~+h[(c[k+16>>2]|0)+240>>3];j=~~+h[(c[i+16>>2]|0)+240>>3];if((g|0)>(j|0)|o&(g|0)==(j|0))break}gi(k,i);f=f+1|0}e=l;m=n?m+-4|0:m}if(f|0?(p=c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0,a[p+(d<<6)+49>>0]=0,(d|0)>0):0)a[p+(d+-1<<6)+49>>0]=0;return}function ki(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,i=0;a=c[a+16>>2]|0;i=a+240|0;if((c[a+200>>2]|0)>0){g=c[a+196>>2]|0;a=c[g>>2]|0;a=c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0;d=1;while(1){e=c[g+(d<<2)>>2]|0;f=c[a+16>>2]|0;if(!e)break;e=c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0;a=(c[(c[e+16>>2]|0)+236>>2]|0)>(c[f+236>>2]|0)?e:a;d=d+1|0}b=+h[f+240>>3];if(!(b>=0.0))a=1;else{h[i>>3]=b+1.0;a=0}}else if((c[a+192>>2]|0)>0){e=c[a+188>>2]|0;d=c[e>>2]|0;a=1;d=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;while(1){f=c[e+(a<<2)>>2]|0;g=c[d+16>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;a=a+1|0;d=(c[(c[f+16>>2]|0)+236>>2]|0)<(c[g+236>>2]|0)?f:d}b=+h[g+240>>3];if(b>0.0){h[i>>3]=b+-1.0;a=0}else a=1}else a=1;return a|0}function li(a,b){a=a|0;b=b|0;return (c[(c[(c[a>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[b>>2]|0)+16>>2]|0)+236>>2]|0)|0}function mi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+96|0;o=p+64|0;n=p+48|0;h=p+24|0;f=p;j=d+16|0;k=c[(c[j>>2]|0)+232>>2]|0;m=a+16|0;e=c[(c[m>>2]|0)+196>>2]|0;i=c[e+(k<<6)>>2]|0;do if((c[e+(k<<6)+8>>2]|0)>=1){c[(c[e+(k<<6)+4>>2]|0)+(i<<2)>>2]=d;c[(c[j>>2]|0)+236>>2]=i;a=c[m>>2]|0;f=c[a+196>>2]|0;e=f+(k<<6)|0;g=c[e>>2]|0;c[e>>2]=g+1;if((g|0)>=(c[f+(k<<6)+8>>2]|0))va(79240,78644,1346,79276);g=c[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;if((i|0)>(g|0)){m=Dn(d)|0;n=c[(c[j>>2]|0)+236>>2]|0;o=c[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]|0;c[h>>2]=1359;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=k;c[h+16>>2]=o;_l(1,79292,h)|0;break}e=b[a+236>>1]|0;a=b[a+238>>1]|0;if((k|0)<(e|0)|(k|0)>(a|0)){c[n>>2]=1364;c[n+4>>2]=k;c[n+8>>2]=e;c[n+12>>2]=a;_l(1,79365,n)|0;break}if(((c[f+(k<<6)+4>>2]|0)+(i<<2)|0)>>>0>((c[f+(k<<6)+12>>2]|0)+(g<<2)|0)>>>0){i=Dn(d)|0;n=c[(c[m>>2]|0)+196>>2]|0;m=(c[n+(k<<6)+4>>2]|0)+(c[(c[j>>2]|0)+236>>2]<<2)|0;n=(c[n+(k<<6)+12>>2]|0)+(c[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(k<<6)+8>>2]<<2)|0;c[o>>2]=1370;c[o+4>>2]=k;c[o+8>>2]=i;c[o+12>>2]=m;c[o+16>>2]=k;c[o+20>>2]=k;c[o+24>>2]=n;_l(1,79426,o)|0}}else{n=Dn(a)|0;o=Dn(d)|0;c[f>>2]=1339;c[f+4>>2]=n;c[f+8>>2]=o;c[f+12>>2]=k;c[f+16>>2]=i;_l(1,79185,f)|0}while(0);l=p;return}function ni(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=d+16|0;a:do if(!e){g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+184>>2]|0))break a;d=c[(c[d+180>>2]|0)+(g<<2)>>2]|0;e=d+-48|0;f=(c[(c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;yA(b,c[((c[d>>2]&3|0)==2?d:e)+40>>2]|0)}g=g+1|0}}else{g=0;while(1){d=c[h>>2]|0;if((g|0)>=(c[d+176>>2]|0))break a;d=c[(c[d+172>>2]|0)+(g<<2)>>2]|0;e=d+48|0;f=(c[(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)+16>>2]|0)+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;yA(b,c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)}g=g+1|0}}while(0);return}function oi(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+16|0;t=u;g=d+16|0;f=c[(c[g>>2]|0)+196>>2]|0;r=c[f+(e<<6)+4>>2]|0;s=e+1|0;d=c[(c[(c[(c[41933]|0)+16>>2]|0)+196>>2]|0)+(s<<6)>>2]|0;if((c[41937]|0)>(d|0))d=c[41938]|0;else{f=d+1|0;c[41937]=f;d=c[41938]|0;f=f<<2;if(!d)d=tw(f)|0;else d=vw(d,f)|0;c[41938]=d;f=c[(c[g>>2]|0)+196>>2]|0}q=f+(s<<6)|0;g=0;while(1){if((g|0)>=(c[q>>2]|0))break;c[d+(g<<2)>>2]=0;g=g+1|0}p=f+(e<<6)|0;o=0;g=0;d=0;while(1){j=c[p>>2]|0;if((o|0)>=(j|0))break;n=c[(c[(c[r+(o<<2)>>2]|0)+16>>2]|0)+180>>2]|0;a:do if((g|0)>0){m=c[41938]|0;k=0;while(1){h=c[n+(k<<2)>>2]|0;if(!h)break a;j=h+16|0;i=c[(c[(c[((c[h>>2]&3|0)==2?h:h+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;while(1){h=i+1|0;if((i|0)>=(g|0))break;i=h;d=(S(b[(c[j>>2]|0)+154>>1]|0,c[m+(h<<2)>>2]|0)|0)+d|0}k=k+1|0}}while(0);h=0;while(1){i=c[n+(h<<2)>>2]|0;if(!i)break;m=c[(c[(c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0;k=(c[41938]|0)+(m<<2)|0;c[k>>2]=(c[k>>2]|0)+(b[(c[i+16>>2]|0)+154>>1]|0);g=(m|0)>(g|0)?m:g;h=h+1|0}o=o+1|0}i=f+(e<<6)+4|0;h=0;while(1){if((h|0)>=(j|0))break;g=c[(c[(c[i>>2]|0)+(h<<2)>>2]|0)+16>>2]|0;if(a[g+145>>0]|0){e=g+180|0;c[t>>2]=c[e>>2];c[t+4>>2]=c[e+4>>2];d=(pi(t,1)|0)+d|0}h=h+1|0}i=c[q>>2]|0;h=f+(s<<6)+4|0;g=0;while(1){if((g|0)>=(i|0))break;f=c[(c[(c[h>>2]|0)+(g<<2)>>2]|0)+16>>2]|0;if(a[f+145>>0]|0){s=f+172|0;c[t>>2]=c[s>>2];c[t+4>>2]=c[s+4>>2];d=(pi(t,-1)|0)+d|0}g=g+1|0}l=u;return d|0}function pi(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=(d|0)>0;l=c[a>>2]|0;d=0;a=0;a:while(1){m=c[l+(d<<2)>>2]|0;if(!m)break;d=d+1|0;k=m+16|0;if(n){j=m+-48|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if(+((c[(c[(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==2?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)*(+h[f+16>>3]-+h[g+16>>3])<0.0)a=(S(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}else{j=m+48|0;i=d;while(1){e=c[l+(i<<2)>>2]|0;if(!e)continue a;f=c[e+16>>2]|0;g=c[k>>2]|0;if(+((c[(c[(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)-(c[(c[(c[((c[m>>2]&3|0)==3?m:j)+40>>2]|0)+16>>2]|0)+236>>2]|0)|0)*(+h[f+56>>3]-+h[g+56>>3])<0.0)a=(S(b[f+154>>1]|0,b[g+154>>1]|0)|0)+a|0;i=i+1|0}}}return a|0}function qi(a){a=a|0;var b=0.0,d=0.0;c[41936]=8;c[42192]=24;h[20880]=.995;a=Im(a,79548)|0;if(a|0?(b=+mN(a),b>0.0):0){d=b*+(c[41936]|0);c[41936]=~~(d<=1.0?1.0:d);b=b*+(c[42192]|0);c[42192]=~~(b<=1.0?1.0:b)}return}function ri(a){a=a|0;var d=0,e=0;e=(b[(c[a+16>>2]|0)+238>>1]|0)+2|0;d=sw(e<<2)|0;ti(a,d,e,0)|0;xN(d);return}function si(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=a+16|0;i=sw((b[(c[h>>2]|0)+238>>1]<<2)+8|0)|0;g=co(a)|0;while(1){if(!g)break;f=i+(c[(c[g+16>>2]|0)+232>>2]<<2)|0;c[f>>2]=(c[f>>2]|0)+1;f=Pm(a,g)|0;while(1){if(!f)break;j=c[f>>2]&3;d=c[(c[(c[((j|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=c[(c[(c[((j|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;k=(d|0)>(j|0);e=k?d:j;d=k?j:d;while(1){d=d+1|0;if((d|0)>=(e|0))break;k=i+(d<<2)|0;c[k>>2]=(c[k>>2]|0)+1}f=Rm(a,f)|0}g=eo(a,g)|0}f=sw((b[(c[h>>2]|0)+238>>1]<<6)+128|0)|0;e=c[h>>2]|0;c[e+196>>2]=f;d=b[e+236>>1]|0;while(1){if((d|0)>(b[e+238>>1]|0))break;j=i+(d<<2)|0;e=c[j>>2]|0;c[f+(d<<6)>>2]=e;c[f+(d<<6)+8>>2]=e;j=sw((c[j>>2]<<2)+4|0)|0;e=c[h>>2]|0;k=c[e+196>>2]|0;c[k+(d<<6)+4>>2]=j;c[k+(d<<6)+12>>2]=j;d=d+1|0;f=k}xN(i);return}function ti(a,d,e,f){a=a|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0;m=a+16|0;i=1;while(1){g=c[m>>2]|0;if((i|0)>(c[g+180>>2]|0))break;l=ti(c[(c[g+184>>2]|0)+(i<<2)>>2]|0,d,e,f)|0;i=i+1|0;f=l}a:do if((Vf(a)|0)!=(a|0)){GN(d|0,0,e<<2|0)|0;g=co(a)|0;while(1){if(!g)break;k=g+16|0;c[d+(c[(c[k>>2]|0)+232>>2]<<2)>>2]=1;i=Pm(a,g)|0;while(1){if(!i)break;l=i+-48|0;j=c[(c[k>>2]|0)+232>>2]|0;while(1){e=j+1|0;if((j|0)>=(c[(c[(c[((c[i>>2]&3|0)==2?i:l)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;c[d+(e<<2)>>2]=1;j=e}i=Rm(a,i)|0}g=eo(a,g)|0}g=c[m>>2]|0;i=b[g+236>>1]|0;while(1){if((i|0)>(b[g+238>>1]|0))break a;if(!(c[d+(i<<2)>>2]|0)){if(!f)f=Ip(Vf(a)|0,79538,1)|0;g=no(f,0,1)|0;Oo(g,122257,304,1)|0;l=g+16|0;j=c[l>>2]|0;c[j+232>>2]=i;h[j+96>>3]=.5;h[j+88>>3]=.5;h[j+80>>3]=1.0;c[j+216>>2]=1;c[j+176>>2]=0;j=sw(20)|0;k=c[l>>2]|0;c[k+172>>2]=j;c[k+184>>2]=0;k=sw(20)|0;c[(c[l>>2]|0)+180>>2]=k;io(a,g,1)|0;g=c[m>>2]|0}i=i+1|0}}while(0);return f|0}function ui(a){a=a|0;var b=0,d=0;Kh(a);b=a+16|0;a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;ui(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function vi(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=wi(c[((b|0)==3?a:a+48|0)+40>>2]|0)|0;b=c[17236+(d*12|0)+((wi(c[((b|0)==2?a:a+-48|0)+40>>2]|0)|0)<<2)>>2]|0;a=(c[a+16>>2]|0)+156|0;c[a>>2]=S(c[a>>2]|0,b)|0;return}function wi(b){b=b|0;b=c[b+16>>2]|0;if((a[b+156>>0]|0)==1)b=2;else b=(a[b+160>>0]|0)<2&1;return b|0}function xi(b,d){b=b|0;d=d|0;if(c[(c[b+16>>2]|0)+192>>2]|0){Yk(b);yi(b);if(a[174213]|0)kl(b);zi(b);if(Cl(b)|0)yi(b);Ai(b);if(dx(b,2,Bi(b)|0)|0?(Ci(b),dx(b,2,Bi(b)|0)|0):0)va(79556,79584,134,79595);Di(b);Ei(b,d);Fi(b)}return}function yi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0;v=d+16|0;e=c[v>>2]|0;w=c[e+196>>2]|0;t=b[e+236>>1]|0;while(1){if((t|0)>(b[e+238>>1]|0))break;n=w+(t<<6)|0;o=w+(t<<6)+4|0;p=w+(t<<6)+40|0;q=w+(t<<6)+24|0;r=w+(t<<6)+32|0;s=w+(t<<6)+16|0;m=0;while(1){if((m|0)>=(c[n>>2]|0))break;l=(c[(c[o>>2]|0)+(m<<2)>>2]|0)+16|0;e=c[l>>2]|0;j=+h[e+80>>3]*.5;i=c[e+204>>2]|0;a:do if(i){g=0;while(1){f=c[i+(g<<2)>>2]|0;if(!f)break a;x=c[f>>2]&3;if((c[((x|0)==3?f:f+48|0)+40>>2]|0)==(c[((x|0)==2?f:f+-48|0)+40>>2]|0)?(u=c[(c[f+16>>2]|0)+96>>2]|0,(u|0)!=0):0){k=+h[u+32>>3]*.5;j=j>k?j:k}g=g+1|0}}while(0);if(+h[p>>3]<j){h[q>>3]=j;h[p>>3]=j}if(+h[r>>3]<j){h[s>>3]=j;h[r>>3]=j}i=c[e+212>>2]|0;if(i|0){if((i|0)==(d|0))g=0;else{g=AA(i,c[42206]|0,8,0)|0;e=c[l>>2]|0}f=c[e+232>>2]|0;e=c[i+16>>2]|0;j=j+ +(g|0);if((f|0)==(b[e+236>>1]|0)){x=e+128|0;k=+h[x>>3];h[x>>3]=k>j?k:j}if((f|0)==(b[e+238>>1]|0)){x=e+120|0;k=+h[x>>3];h[x>>3]=k>j?k:j}}m=m+1|0}t=t+1|0;e=c[v>>2]|0}m=ej(d)|0;g=c[v>>2]|0;e=b[g+238>>1]|0;h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=+h[w+(e<<6)+16>>3];f=b[g+236>>1]|0;i=g+252|0;k=0.0;while(1){l=e+-1|0;if((e|0)<=(f|0))break;y=+h[w+(e<<6)+40>>3]+ +h[w+(l<<6)+32>>3]+ +(c[i>>2]|0);j=+h[w+(e<<6)+24>>3]+ +h[w+(l<<6)+16>>3]+8.0;j=y>j?y:j;if((c[w+(l<<6)>>2]|0)>0)h[(c[(c[c[w+(l<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=j+ +h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=k>j?k:j;e=l}b:do if((m|0)!=0?(c[g+116>>2]&1|0)!=0:0){fj(d,0);g=c[v>>2]|0;if(a[g+276>>0]|0){e=b[g+238>>1]|0;f=b[g+236>>1]|0;j=+h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];k=0.0;while(1){i=e+-1|0;if((e|0)<=(f|0))break b;z=+h[(c[(c[c[w+(i<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];y=z-j;j=z;k=k>y?k:y;e=i}}}while(0);c:do if(a[g+276>>0]|0){i=b[g+236>>1]|0;f=b[g+238>>1]|0;while(1){e=f+-1|0;if((f|0)<=(i|0))break c;if((c[w+(e<<6)>>2]|0)<=0){f=e;continue}h[(c[(c[c[w+(e<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]=k+ +h[(c[(c[c[w+(f<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];f=e}}while(0);e=g+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;h[e+24>>3]=+h[(c[(c[c[w+(c[e+232>>2]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3];e=e+164|0}return}function zi(a){a=a|0;var b=0,d=0,e=0;aj(a);b=(c[a+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+224>>2]|0;if(d){bj(a,d);b=c[e>>2]|0}d=c[b+228>>2]|0;if(!d)d=b;else{bj(a,d);d=c[e>>2]|0}e=c[d+204>>2]|0;if(e|0){b=0;while(1)if(!(c[e+(b<<2)>>2]|0))break;else b=b+1|0}b=d+164|0}return}function Ai(a){a=a|0;Oi(a);Pi(a);Qi(a);Ri(a);Si(a);return}function Bi(a){a=a|0;var b=0,c=0.0;b=Im(a,79784)|0;if(!b)a=2147483647;else{c=+mN(b);a=~~(c*+(mn(a)|0))}return a|0}function Ci(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=d+16|0;e=c[r>>2]|0;q=b[e+236>>1]|0;while(1){p=b[e+238>>1]|0;if((q|0)>(p|0)){s=19;break}n=c[e+196>>2]|0;o=n+(q<<6)|0;m=c[o>>2]|0;n=n+(q<<6)+4|0;l=0;f=0;a:while(1){if((l|0)>=(m|0)){s=14;break}f=c[(c[n>>2]|0)+(l<<2)>>2]|0;h=c[f+16>>2]|0;i=c[h+256>>2]|0;b:do if(i|0){g=0;while(1){j=c[i+(g<<2)>>2]|0;if(!j)break b;k=c[j>>2]&3;if((c[(c[(c[((k|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((k|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);h=c[h+248>>2]|0;c:do if(h|0){g=0;while(1){i=c[h+(g<<2)>>2]|0;if(!i)break c;j=c[i>>2]&3;if((c[(c[(c[((j|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;if((c[(c[(c[((j|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)>(q|0))break a;else g=g+1|0}}while(0);l=l+1|0}if((s|0)==14){s=0;if(f){f=c[c[n>>2]>>2]|0;e=c[c[o+(((q|0)<(p|0)?1:-1)<<6)+4>>2]>>2]|0;if(!e){s=16;break}o=fh(d)|0;p=o+16|0;a[(c[p>>2]|0)+156>>0]=2;Mi(o,f,0.0,0)|0;Mi(o,e,0.0,0)|0;c[(c[p>>2]|0)+232>>2]=c[(c[((c[(c[f+16>>2]|0)+232>>2]|0)<(c[(c[e+16>>2]|0)+232>>2]|0)?f:e)+16>>2]|0)+232>>2];e=c[r>>2]|0}}q=q+1|0}if((s|0)==16)va(79692,79584,111,79695);else if((s|0)==19)return}function Di(a){a=a|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0;a=c[a+16>>2]|0;i=c[a+196>>2]|0;e=b[a+238>>1]|0;a=b[a+236>>1]|0;while(1){if((a|0)>(e|0))break;f=c[i+(a<<6)>>2]|0;g=i+(a<<6)+4|0;d=0;while(1){if((d|0)>=(f|0))break;k=c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;j=k+232|0;h[k+16>>3]=+(c[j>>2]|0);c[j>>2]=a;d=d+1|0}a=a+1|0}return}function Ei(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0.0;Gi(a,a);i=a+16|0;l=c[i>>2]|0;a:do if((b[l+238>>1]|0)>0?(j=c[l+8>>2]|0,e=c[j+84>>2]|0,e|0):0){m=~~(+h[l+32>>3]-+h[l+16>>3]);n=~~(+h[l+40>>3]-+h[l+24>>3]);o=(c[l+116>>2]&1|0)==0;if((e|0)==4){p=Hi(a)|0;l=c[i>>2]|0;j=c[l+8>>2]|0}else p=(e|0)==2&1;q=+((o?m:n)|0);k=+((o?n:m)|0);i=j+72|0;e=j+64|0;b:do if(!(p<<24>>24)){switch(c[j+84>>2]|0){case 5:{f=+h[e>>3];if(f<=0.0)break a;k=f/+h[l+32>>3];q=+h[i>>3]/+h[l+40>>3];f=k<q?k:q;if(k>1.0&q>1.0){k=f;break b}else break a}case 1:break;default:break a}g=+h[j+16>>3];f=k/q;if(f<g){k=1.0;f=g/f;break}else{k=f/g;f=1.0;break}}else{f=+h[e>>3];if(f<=0.0)break a;g=f/q;f=+h[i>>3]/k;if(g<1.0|f<1.0)if(g<f){k=1.0;f=f/g;break}else{k=g/f;f=1.0;break}else k=g}while(0);e=(c[l+116>>2]&1|0)==0;g=e?f:k;f=e?k:f;e=l+192|0;while(1){e=c[e>>2]|0;if(!e)break;e=c[e+16>>2]|0;p=e+16|0;q=f*+h[p>>3];h[p>>3]=+(~~(q+(q>=0.0?.5:-.5))|0);p=e+24|0;q=g*+h[p>>3];h[p>>3]=+(~~(q+(q>=0.0?.5:-.5))|0);e=e+164|0}Ii(a,f,g)}while(0);if(d|0)Ji(a,d);return}function Fi(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=b+16|0;b=(c[h>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;g=b+16|0;d=0;while(1){b=c[g>>2]|0;f=c[b+180>>2]|0;e=c[f+(d<<2)>>2]|0;if(!e)break;xN(c[e+16>>2]|0);xN(e);d=d+1|0}if(f){xN(f);b=c[g>>2]|0}d=c[b+172>>2]|0;if(d){xN(d);b=c[g>>2]|0}f=b+256|0;e=c[f+4>>2]|0;b=b+180|0;c[b>>2]=c[f>>2];c[b+4>>2]=e;b=c[g>>2]|0;e=b+248|0;f=c[e+4>>2]|0;b=b+172|0;c[b>>2]=c[e>>2];c[b+4>>2]=f;b=(c[g>>2]|0)+164|0}b=0;d=c[(c[h>>2]|0)+192>>2]|0;a:while(1){g=(b|0)==0;f=b+16|0;b=d;while(1){if(!b)break a;e=c[b+16>>2]|0;d=c[e+164>>2]|0;if((a[e+156>>0]|0)!=2)continue a;if(g)c[(c[h>>2]|0)+192>>2]=d;else c[(c[f>>2]|0)+164>>2]=d;xN(e);xN(b);b=d}}c[(c[(c[(c[h>>2]|0)+192>>2]|0)+16>>2]|0)+168>>2]=0;return}function Gi(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=a+16|0;d=1;while(1){f=c[e>>2]|0;if((d|0)>(c[f+180>>2]|0))break;Gi(c[(c[f+184>>2]|0)+(d<<2)>>2]|0,b);d=d+1|0}Li(a,b);return}function Hi(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0;s=l;l=l+80|0;e=s+64|0;d=s+48|0;f=s+16|0;m=s;r=s+32|0;a=a+16|0;b=c[(c[a>>2]|0)+8>>2]|0;t=b+48|0;c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];if((!(+h[f>>3]<.001)?(g=f+8|0,!(+h[g>>3]<.001)):0)?(i=b+32|0,c[m>>2]=c[i>>2],c[m+4>>2]=c[i+4>>2],c[m+8>>2]=c[i+8>>2],c[m+12>>2]=c[i+12>>2],c[d>>2]=c[f>>2],c[d+4>>2]=c[f+4>>2],c[d+8>>2]=c[f+8>>2],c[d+12>>2]=c[f+12>>2],c[e>>2]=c[i>>2],c[e+4>>2]=c[i+4>>2],c[e+8>>2]=c[i+8>>2],c[e+12>>2]=c[i+12>>2],Ki(r,d,e),c[f>>2]=c[r>>2],c[f+4>>2]=c[r+4>>2],c[f+8>>2]=c[r+8>>2],c[f+12>>2]=c[r+12>>2],c[d>>2]=c[r>>2],c[d+4>>2]=c[r+4>>2],c[d+8>>2]=c[r+8>>2],c[d+12>>2]=c[r+12>>2],c[e>>2]=c[m>>2],c[e+4>>2]=c[m+4>>2],c[e+8>>2]=c[m+8>>2],c[e+12>>2]=c[m+12>>2],Ki(f,d,e),i=c[a>>2]|0,j=+h[i+32>>3],k=+h[i+40>>3],n=+h[f>>3],o=n/j,p=+h[g>>3],q=p/k,!(o>=1.0&q>=1.0)):0){o=o<q?o:q;o=o>.5?o:.5;q=p*+R(+(k*o/p))/k;p=j*(n*+R(+(j*o/n))/j);a=c[i+8>>2]|0;h[a+64>>3]=p;h[a+72>>3]=k*q;a=1}else a=0;l=s;return a|0}function Ii(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0;e=a+16|0;a=1;while(1){f=c[e>>2]|0;if((a|0)>(c[f+180>>2]|0))break;Ii(c[(c[f+184>>2]|0)+(a<<2)>>2]|0,b,d);a=a+1|0}e=f+16|0;h[e>>3]=+h[e>>3]*b;e=f+24|0;h[e>>3]=+h[e>>3]*d;e=f+32|0;h[e>>3]=+h[e>>3]*b;f=f+40|0;h[f>>3]=+h[f>>3]*d;return}function Ji(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0;n=l;l=l+32|0;k=n+24|0;i=n+16|0;g=n;o=c[b+16>>2]|0;f=+h[o+32>>3]-+h[o+16>>3];e=+h[o+40>>3]-+h[o+24>>3];j=f/e;if(a[174212]|0){o=c[13857]|0;h[g>>3]=j;h[g+8>>3]=f*e/1.0e4;OL(o,79608,g)|0;c[i>>2]=kk(b)|0;OL(o,79633,i)|0}e=+h[d>>3];b=d+24|0;do if(!(j>e*1.1)){if(!(j<=e*.8)){c[b>>2]=0;m=9;break}c[b>>2]=-1;if(a[174212]|0){oL(79643,34,1,c[13857]|0)|0;m=9}}else{c[b>>2]=~~(e*+((c[d+20>>2]|0)-(c[d+16>>2]|0)|0)/j);m=9}while(0);if((m|0)==9?a[174212]|0:0){o=c[13857]|0;c[k>>2]=c[b>>2];OL(o,79678,k)|0}l=n;return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]-+h[c+8>>3];h[a>>3]=+h[b>>3]-+h[c>>3];h[a+8>>3]=d;return}function Li(d,e){d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0;n=(Vf(d)|0)==(d|0);s=d+16|0;t=c[s>>2]|0;q=b[t+236>>1]|0;r=b[t+238>>1]|0;a:do if(n){n=t+196|0;m=q;g=-2147483647.0;f=2147483647.0;while(1){if((m|0)>(r|0))break;d=c[n>>2]|0;l=c[d+(m<<6)>>2]|0;if((l|0)!=0?(o=c[d+(m<<6)+4>>2]|0,p=c[o>>2]|0,(p|0)!=0):0){j=1;d=p;while(1){d=c[d+16>>2]|0;i=a[d+156>>0]|0;if(!((j|0)<(l|0)&i<<24>>24!=0))break;d=c[o+(j<<2)>>2]|0;j=j+1|0}if(!(i<<24>>24)){k=+h[d+16>>3]-+h[d+88>>3];j=f<k;i=l+-2|0;d=l+-1|0;while(1){d=c[(c[o+(d<<2)>>2]|0)+16>>2]|0;if(!(a[d+156>>0]|0))break;else{d=i;i=i+-1|0}}u=+h[d+16>>3]+ +h[d+96>>3];g=g>u?g:u;f=j?f:k}}m=m+1|0}i=c[t+180>>2]|0;j=t+184|0;d=1;while(1){if((d|0)>(i|0))break a;p=c[(c[(c[j>>2]|0)+(d<<2)>>2]|0)+16>>2]|0;u=+h[p+16>>3]+-8.0;k=+h[p+32>>3]+8.0;d=d+1|0;g=g>k?g:k;f=f<u?f:u}}else{g=+(c[(c[(c[t+260>>2]|0)+16>>2]|0)+232>>2]|0);f=+(c[(c[(c[t+256>>2]|0)+16>>2]|0)+232>>2]|0)}while(0);e=c[(c[e+16>>2]|0)+196>>2]|0;k=+h[(c[(c[c[e+(r<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[t+120>>3];u=+h[(c[(c[c[e+(q<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]+ +h[t+128>>3];h[t+16>>3]=f;h[t+24>>3]=k;e=c[s>>2]|0;h[e+32>>3]=g;h[e+40>>3]=u;return}function Mi(a,d,e,f){a=a|0;d=d|0;e=+e;f=f|0;var g=0,h=0,i=0,j=0;i=sw(96)|0;j=i+48|0;c[j>>2]=c[j>>2]|3;c[i>>2]=c[i>>2]&-4|2;g=sw(176)|0;h=i+16|0;c[h>>2]=g;c[((c[i>>2]&3|0)==3?i:j)+40>>2]=a;c[((c[i>>2]&3|0)==2?i:i+-48|0)+40>>2]=d;if(e>65535.0){Ni(e);e=65535.0;g=c[h>>2]|0}b[g+170>>1]=~~(e+(e>=0.0?.5:-.5));c[g+156>>2]=f;Vg(i)|0;return i|0}function Ni(a){a=+a;var b=0,d=0;b=l;l=l+16|0;d=b;h[d>>3]=a;c[d+8>>2]=65535;_l(1,79708,d)|0;l=b;return}function Oi(a){a=a|0;var b=0,d=0,e=0,f=0;a=(c[a+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;f=a+16|0;e=c[f>>2]|0;a=e+172|0;d=c[a+4>>2]|0;e=e+248|0;c[e>>2]=c[a>>2];c[e+4>>2]=d;e=c[f>>2]|0;d=e+180|0;a=c[d+4>>2]|0;e=e+256|0;c[e>>2]=c[d>>2];c[e+4>>2]=a;e=c[f>>2]|0;a=c[e+180>>2]|0;d=0;while(1)if(!(c[a+(d<<2)>>2]|0))break;else d=d+1|0;b=c[e+172>>2]|0;a=0;while(1)if(!(c[b+(a<<2)>>2]|0))break;else a=a+1|0;c[e+176>>2]=0;a=sw((a+d<<2)+16|0)|0;e=c[f>>2]|0;c[e+172>>2]=a;c[e+184>>2]=0;e=sw(16)|0;a=c[f>>2]|0;c[a+180>>2]=e;a=a+164|0}return}function Pi(d){d=d|0;var f=0,g=0,i=0.0,j=0,k=0,m=0.0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0;z=l;l=l+16|0;w=z;x=d+16|0;u=c[x>>2]|0;y=c[u+196>>2]|0;d=(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1)!=0;v=c[u+248>>2]|0;c[w>>2]=v;c[w+4>>2]=d?5:v;v=b[u+236>>1]|0;d=u;while(1){if((v|0)>(b[d+238>>1]|0))break;r=y+(v<<6)+4|0;c[(c[(c[c[r>>2]>>2]|0)+16>>2]|0)+232>>2]=0;s=y+(v<<6)|0;t=+(c[w+((v&1)<<2)>>2]|0);m=0.0;k=0;a:while(1){if((k|0)>=(c[s>>2]|0))break;f=c[r>>2]|0;n=c[f+(k<<2)>>2]|0;u=n+16|0;d=c[u>>2]|0;i=+h[d+96>>3];h[d+240>>3]=i;if((c[d+208>>2]|0)>0){j=0;f=0;while(1){g=c[(c[d+204>>2]|0)+(j<<2)>>2]|0;if(!g)break;q=c[g>>2]&3;if((c[((q|0)==3?g:g+48|0)+40>>2]|0)==(c[((q|0)==2?g:g+-48|0)+40>>2]|0)){f=(Nz(g)|0)+f|0;d=c[u>>2]|0}j=j+1|0}q=d+96|0;i=+(f|0)+ +h[q>>3];h[q>>3]=i;f=c[r>>2]|0}q=k+1|0;f=c[f+(q<<2)>>2]|0;if(!f)p=m;else{o=f+16|0;p=t+(i+ +h[(c[o>>2]|0)+88>>3]);Mi(n,f,p,0)|0;d=~~(m+p);c[(c[o>>2]|0)+232>>2]=d;p=+(d|0);d=c[u>>2]|0}f=c[d+112>>2]|0;if(f){j=c[d+256>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;d=(c[(c[(c[((c[k>>2]&3|0)==2?k:k+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0)>(c[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+236>>2]|0);g=d?j:k;j=d?k:j;k=f+16|0;d=c[k>>2]|0;i=+((S(c[(c[x>>2]|0)+248>>2]|0,e[d+170>>1]|0)|0)/2|0|0);o=c[g>>2]&3;f=c[((o|0)==2?g:g+-48|0)+40>>2]|0;g=c[((o|0)==3?g:g+48|0)+40>>2]|0;if(!(_i(g,f)|0))Mi(f,g,+(~~(i+ +h[(c[f+16>>2]|0)+96>>3]+ +h[(c[g+16>>2]|0)+88>>3])|0),c[d+156>>2]|0)|0;d=c[j>>2]&3;f=c[((d|0)==3?j:j+48|0)+40>>2]|0;d=c[((d|0)==2?j:j+-48|0)+40>>2]|0;if(!(_i(d,f)|0)){Mi(f,d,+(~~(i+ +h[(c[f+16>>2]|0)+96>>3]+ +h[(c[d+16>>2]|0)+88>>3])|0),c[(c[k>>2]|0)+156>>2]|0)|0;o=0}else o=0}else o=0;while(1){d=c[u>>2]|0;if((o|0)>=(c[d+192>>2]|0)){m=p;k=q;continue a}k=c[(c[d+188>>2]|0)+(o<<2)>>2]|0;j=c[k>>2]&3;g=c[((j|0)==3?k:k+48|0)+40>>2]|0;j=c[((j|0)==2?k:k+-48|0)+40>>2]|0;d=(c[(c[g+16>>2]|0)+236>>2]|0)<(c[(c[j+16>>2]|0)+236>>2]|0);f=d?g:j;g=d?j:g;i=+h[(c[f+16>>2]|0)+96>>3]+ +h[(c[g+16>>2]|0)+88>>3];j=k+16|0;d=~~(i+ +(S(c[(c[x>>2]|0)+248>>2]|0,e[(c[j>>2]|0)+170>>1]|0)|0));n=Sg(f,g)|0;m=+(d|0);if(!n){d=c[j>>2]|0;if(!(c[d+96>>2]|0))Mi(f,g,m,c[d+156>>2]|0)|0}else{d=c[j>>2]|0;A=+h[d+136>>3];i=i+ +(c[(c[x>>2]|0)+248>>2]|0)+ +(~~(A+(A>=0.0?.5:-.5))|0);f=~~(m>i?m:i);if((f|0)>65535){Ni(+(f|0));f=65535;d=c[j>>2]|0}j=c[n+16>>2]|0;g=j+170|0;B=e[g>>1]|0;b[g>>1]=(B|0)>(f|0)?B:f;j=j+156|0;c[j>>2]=c[(c[((c[j>>2]|0)>(c[d+156>>2]|0)?n:k)+16>>2]|0)+156>>2]}o=o+1|0}}v=v+1|0;d=c[x>>2]|0}l=z;return}function Qi(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=(c[b+16>>2]|0)+192|0;while(1){d=c[d>>2]|0;if(!d)break;g=d+16|0;d=c[g>>2]|0;e=c[d+256>>2]|0;a:do if(e){f=0;while(1){e=c[e+(f<<2)>>2]|0;if(!e)break a;n=fh(b)|0;d=n+16|0;a[(c[d>>2]|0)+156>>0]=2;l=e+16|0;k=c[l>>2]|0;i=~~(+h[k+56>>3]-+h[k+16>>3]);m=(i|0)>0;j=m?0:0-i|0;i=m?i:0;m=e+48|0;Mi(n,c[((c[e>>2]&3|0)==3?e:m)+40>>2]|0,+(i+1|0),c[k+156>>2]|0)|0;k=e+-48|0;Mi(n,c[((c[e>>2]&3|0)==2?e:k)+40>>2]|0,+(j+1|0),c[(c[l>>2]|0)+156>>2]|0)|0;l=c[e>>2]&3;i=(c[(c[(c[((l|0)==3?e:m)+40>>2]|0)+16>>2]|0)+232>>2]|0)-i|0;e=(c[(c[(c[((l|0)==2?e:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-j|0;c[(c[d>>2]|0)+232>>2]=((i|0)<(e|0)?i:e)+-1;d=c[g>>2]|0;f=f+1|0;e=c[d+256>>2]|0}}while(0);d=d+164|0}return}function Ri(a){a=a|0;if((c[(c[a+16>>2]|0)+180>>2]|0)>0){Vi(a);Wi(a);Xi(a);Yi(a)}return}function Si(a){a=a|0;var b=0.0,d=0.0,e=0,f=0;e=a+16|0;f=c[(c[e>>2]|0)+8>>2]|0;if((c[f+84>>2]|0)==3?(b=+h[f+64>>3],d=+h[f+72>>3],!(b*d<=1.0)):0){Ti(a);f=c[e>>2]|0;d=(c[f+116>>2]&1|0)==0?b:d;Mi(c[f+256>>2]|0,c[f+260>>2]|0,d<65535.0?d:65535.0,1e3)|0}return}function Ti(a){a=a|0;var d=0,e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n;e=AA(a,c[42206]|0,8,0)|0;Ui(a);i=a+16|0;g=c[i>>2]|0;j=c[g+256>>2]|0;k=c[g+260>>2]|0;f=+(e|0);e=b[g+236>>1]|0;while(1){if((e|0)>(b[g+238>>1]|0))break;d=c[g+196>>2]|0;do if(c[d+(e<<6)>>2]|0){d=c[c[d+(e<<6)+4>>2]>>2]|0;if(!d){c[m>>2]=Dn(a)|0;c[m+4>>2]=e;_l(1,79792,m)|0;break}else{Mi(j,d,f+ +h[(c[d+16>>2]|0)+88>>3]+ +h[g+96>>3],0)|0;g=c[i>>2]|0;d=c[g+196>>2]|0;d=c[(c[d+(e<<6)+4>>2]|0)+((c[d+(e<<6)>>2]|0)+-1<<2)>>2]|0;Mi(d,k,f+ +h[(c[d+16>>2]|0)+96>>3]+ +h[g+64>>3],0)|0;break}}while(0);e=e+1|0;g=c[i>>2]|0}l=n;return}function Ui(b){b=b|0;var d=0,e=0,f=0;d=b+16|0;if(!(c[(c[d>>2]|0)+256>>2]|0)){f=fh(Vf(b)|0)|0;a[(c[f+16>>2]|0)+156>>0]=2;e=fh(Vf(b)|0)|0;a[(c[e+16>>2]|0)+156>>0]=2;if((c[(c[d>>2]|0)+12>>2]|0?(Vf(b)|0)!=(b|0):0)?(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0:0){b=c[d>>2]|0;Mi(f,e,+(~~+h[b+48+((+h[b+48>>3]>+h[b+80>>3]?0:2)<<4)>>3]|0),0)|0}d=c[d>>2]|0;c[d+256>>2]=f;c[d+260>>2]=e}return}function Vi(a){a=a|0;var b=0,d=0;b=a+16|0;do if((Vf(a)|0)!=(a|0)){Ti(a);a=c[b>>2]|0;a=Sg(c[a+256>>2]|0,c[a+260>>2]|0)|0;if(!a){d=c[b>>2]|0;Mi(c[d+256>>2]|0,c[d+260>>2]|0,1.0,128)|0;break}else{d=(c[a+16>>2]|0)+156|0;c[d>>2]=(c[d>>2]|0)+128;break}}while(0);a=1;while(1){d=c[b>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Vi(c[(c[d+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}return}function Wi(d){d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;k=AA(d,c[42206]|0,8,0)|0;o=d+16|0;e=c[o>>2]|0;m=+(k|0);k=b[e+236>>1]|0;while(1){if((k|0)>(b[e+238>>1]|0)){f=1;break}e=c[e+196>>2]|0;a:do if(c[e+(k<<6)>>2]|0?(l=c[c[e+(k<<6)+4>>2]>>2]|0,l|0):0){i=l+16|0;f=c[(c[i>>2]|0)+236>>2]|0;while(1){if((f|0)<=0)break;f=f+-1|0;j=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=j+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0)){n=10;break}if(Zi(d,j)|0){n=9;break}}if((n|0)==9){e=c[g>>2]|0;n=10}if((n|0)==10){n=0;Mi(j,c[(c[o>>2]|0)+256>>2]|0,m+ +h[e+96>>3],0)|0}f=(c[(c[(c[o>>2]|0)+196>>2]|0)+(k<<6)>>2]|0)+(c[(c[i>>2]|0)+236>>2]|0)|0;while(1){if((f|0)>=(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)>>2]|0))break a;i=c[(c[(c[(c[(Vf(d)|0)+16>>2]|0)+196>>2]|0)+(k<<6)+4>>2]|0)+(f<<2)>>2]|0;g=i+16|0;e=c[g>>2]|0;if(!(a[e+156>>0]|0))break;if(!(Zi(d,i)|0))f=f+1|0;else{n=15;break}}if((n|0)==15){n=0;e=c[g>>2]|0}Mi(c[(c[o>>2]|0)+260>>2]|0,i,m+ +h[e+88>>3],0)|0}while(0);k=k+1|0;e=c[o>>2]|0}while(1){if((f|0)>(c[e+180>>2]|0))break;Wi(c[(c[e+184>>2]|0)+(f<<2)>>2]|0);f=f+1|0;e=c[o>>2]|0}return}function Xi(a){a=a|0;var b=0,d=0.0,e=0,f=0,g=0;e=AA(a,c[42206]|0,8,0)|0;Ui(a);b=a+16|0;d=+(e|0);a=1;while(1){e=c[b>>2]|0;if((a|0)>(c[e+180>>2]|0))break;e=c[(c[e+184>>2]|0)+(a<<2)>>2]|0;Ui(e);f=c[b>>2]|0;g=e+16|0;Mi(c[f+256>>2]|0,c[(c[g>>2]|0)+256>>2]|0,d+ +h[f+96>>3],0)|0;f=c[b>>2]|0;Mi(c[(c[g>>2]|0)+260>>2]|0,c[f+260>>2]|0,d+ +h[f+64>>3],0)|0;Xi(e);a=a+1|0}return}function Yi(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,n=0,o=0;d=AA(a,c[42206]|0,8,0)|0;n=a+16|0;a=1;while(1){f=c[n>>2]|0;e=c[f+180>>2]|0;if((a|0)>(e|0))break;Ui(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0}m=+(d|0);l=1;a=e;d=f;while(1){if((l|0)>(a|0))break;k=l+1|0;j=k;while(1){e=c[d+184>>2]|0;f=c[e+(l<<2)>>2]|0;if((j|0)>(a|0))break;e=c[e+(j<<2)>>2]|0;g=(b[(c[f+16>>2]|0)+236>>1]|0)>(b[(c[e+16>>2]|0)+236>>1]|0);i=g?e:f;e=g?f:e;f=c[i+16>>2]|0;g=c[e+16>>2]|0;o=b[g+236>>1]|0;h=o<<16>>16;if((b[f+238>>1]|0)>=o<<16>>16){a=(c[(c[(c[c[(c[f+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0)<(c[(c[(c[c[(c[g+196>>2]|0)+(h<<6)+4>>2]>>2]|0)+16>>2]|0)+236>>2]|0);Mi(c[(c[(a?i:e)+16>>2]|0)+260>>2]|0,c[(c[(a?e:i)+16>>2]|0)+256>>2]|0,m,0)|0;a=c[n>>2]|0;d=a;a=c[a+180>>2]|0}j=j+1|0}Yi(f);d=c[n>>2]|0;l=k;a=c[d+180>>2]|0}return}function Zi(b,d){b=b|0;d=d|0;var e=0;d=c[d+16>>2]|0;if((a[d+156>>0]|0)==1){d=c[c[d+256>>2]>>2]|0;while(1){e=c[(c[d+16>>2]|0)+116>>2]|0;if(!e)break;else d=e}if(!(Bo(b,c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)|0))d=(Bo(b,c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0)==0&1;else d=0}else d=0;return d|0}function _i(a,b){a=a|0;b=b|0;return $i(a,b)|0}function $i(a,b){a=a|0;b=b|0;var d=0,e=0;a:do if((a|0)==(b|0))a=1;else{d=c[(c[a+16>>2]|0)+180>>2]|0;a=0;while(1){e=c[d+(a<<2)>>2]|0;if(!e){a=0;break a}if(!($i(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,b)|0))a=a+1|0;else{a=1;break}}}while(0);return a|0}function aj(d){d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=d+16|0;d=c[l>>2]|0;k=b[d+236>>1]|0;while(1){if((k|0)>(b[d+238>>1]|0))break;h=c[d+196>>2]|0;g=c[h+(k<<6)>>2]|0;h=h+(k<<6)+4|0;j=0;f=0;while(1){i=j+1|0;if((f|0)>=(g|0))break;e=c[(c[(c[h>>2]|0)+(f<<2)>>2]|0)+16>>2]|0;c[e+236>>2]=j;if((a[e+159>>0]|0)==6)e=(c[e+216>>2]|0)+j|0;else e=i;j=e;f=f+1|0}if((j|0)>(g|0)){e=c[h>>2]|0;d=i<<2;if(!e)d=tw(d)|0;else d=vw(e,d)|0;f=c[(c[l>>2]|0)+196>>2]|0;c[f+(k<<6)+4>>2]=d;g=c[f+(k<<6)>>2]|0;while(1){e=g+-1|0;if((g|0)<=0)break;f=c[d+(e<<2)>>2]|0;c[d+(c[(c[f+16>>2]|0)+236>>2]<<2)>>2]=f;f=c[(c[l>>2]|0)+196>>2]|0;g=e;d=c[f+(k<<6)+4>>2]|0}c[f+(k<<6)>>2]=j;c[d+(j<<2)>>2]=0;d=c[l>>2]|0}k=k+1|0}return}function bj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;o=l;l=l+48|0;n=o+32|0;m=o+8|0;d=o+24|0;k=o+16|0;j=o;e=b+16|0;f=c[e>>2]|0;a:do if((c[f+216>>2]|0)>=2){c[m>>2]=~~(+h[f+16>>3]-+h[f+88>>3]);c[m+4>>2]=~~+h[f+24>>3];c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];cj(d,b,n);g=d;i=c[g+4>>2]|0;d=m;c[d>>2]=c[g>>2];c[d+4>>2]=i;e=c[e>>2]|0;d=(c[e+236>>2]|0)+1|0;if((c[e+184>>2]|0)>0){j=c[c[e+180>>2]>>2]|0;j=Sm(a,c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)|0;while(1){if(!j)break a;i=(c[j>>2]&3|0)==2?j:j+-48|0;e=i+48|0;f=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;if((f|0)!=(b|0)?(HA(f)|0)==(b|0):0){e=c[((c[i>>2]&3|0)==3?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(k,a,e,n,d);e=k;f=c[e+4>>2]|0;g=m;c[g>>2]=c[e>>2];c[g+4>>2]=f;kh(i);g=i+-48|0;f=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[f+172>>2]|0;f=(c[f+176>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;c[(c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0)+172>>2]=e;p=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;e=c[p+172>>2]|0;p=p+176|0;f=c[p>>2]|0;c[p>>2]=f+1;c[e+(f<<2)>>2]=i;i=c[(c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0)+16>>2]|0;c[(c[i+172>>2]|0)+(c[i+176>>2]<<2)>>2]=0;d=d+1|0}j=Tm(a,j)|0}}else{i=c[c[e+172>>2]>>2]|0;i=Pm(a,c[((c[i>>2]&3|0)==3?i:i+48|0)+40>>2]|0)|0;while(1){if(!i)break a;e=i+-48|0;f=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;if((f|0)!=(b|0)?(HA(f)|0)==(b|0):0){e=c[((c[i>>2]&3|0)==2?i:e)+40>>2]|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];dj(j,a,e,n,d);e=j;f=c[e+4>>2]|0;g=m;c[g>>2]=c[e>>2];c[g+4>>2]=f;kh(i);g=i+48|0;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;e=c[f+180>>2]|0;f=(c[f+184>>2]<<2)+8|0;if(!e)e=tw(f)|0;else e=vw(e,f)|0;c[(c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0)+180>>2]=e;f=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;k=c[f+180>>2]|0;f=f+184|0;p=c[f>>2]|0;c[f>>2]=p+1;c[k+(p<<2)>>2]=i;p=c[(c[((c[i>>2]&3|0)==3?i:g)+40>>2]|0)+16>>2]|0;c[(c[p+180>>2]|0)+(c[p+184>>2]<<2)>>2]=0;d=d+1|0}i=Rm(a,i)|0}}}while(0);l=o;return}function cj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0.0;HB(b,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1);e=c[b+16>>2]|0;h[e+24>>3]=+(c[d+4>>2]|0);f=+(c[d>>2]|0)+ +h[e+88>>3];h[e+16>>3]=f;f=f+ +h[e+96>>3];c[d>>2]=~~(f+ +(c[(c[(ro(b)|0)+16>>2]|0)+248>>2]|0));e=d;b=c[e+4>>2]|0;d=a;c[d>>2]=c[e>>2];c[d+4>>2]=b;return}function dj(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;i=l;l=l+16|0;h=i;b=Vf(b)|0;g=HA(d)|0;if((g|0)!=(d|0))ch(g,d);j=c[d+16>>2]|0;c[j+236>>2]=f;g=c[(c[g+16>>2]|0)+232>>2]|0;c[j+232>>2]=g;c[(c[(c[(c[b+16>>2]|0)+196>>2]|0)+(g<<6)+4>>2]|0)+(f<<2)>>2]=d;c[h>>2]=c[e>>2];c[h+4>>2]=c[e+4>>2];cj(a,d,h);l=i;return}function ej(a){a=a|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0,n=0.0;m=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))j=8.0;else j=+(AA(a,c[42206]|0,8,0)|0);l=a+16|0;g=c[l>>2]|0;f=0;k=1;e=+h[g+120>>3];d=+h[g+128>>3];while(1){if((k|0)>(c[g+180>>2]|0))break;i=c[(c[g+184>>2]|0)+(k<<2)>>2]|0;f=ej(i)|0|f;i=c[i+16>>2]|0;g=c[l>>2]|0;if((b[i+238>>1]|0)==(b[g+238>>1]|0)){n=j+ +h[i+120>>3];e=e>n?e:n}if((b[i+236>>1]|0)==(b[g+236>>1]|0)){n=j+ +h[i+128>>3];d=d>n?d:n}k=k+1|0}if((Vf(a)|0)!=(a|0)?(c[(c[l>>2]|0)+12>>2]|0)!=0:0)if(!(c[(c[(so(a)|0)+16>>2]|0)+116>>2]&1)){k=c[l>>2]|0;f=1;e=e+ +h[k+56>>3];d=d+ +h[k+88>>3]}else f=1;k=c[l>>2]|0;h[k+120>>3]=e;h[k+128>>3]=d;if((Vf(a)|0)!=(a|0)){l=c[l>>2]|0;a=m+(b[l+236>>1]<<6)+24|0;n=+h[a>>3];h[a>>3]=n>d?n:d;m=m+(b[l+238>>1]<<6)+16|0;n=+h[m>>3];h[m>>3]=n>e?n:e}return f|0}function fj(a,d){a=a|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0.0,l=0,m=0,n=0,o=0,p=0.0,q=0.0;o=c[(c[(Vf(a)|0)+16>>2]|0)+196>>2]|0;if((Vf(a)|0)==(a|0))e=0;else e=AA(a,c[42206]|0,8,0)|0;l=a+16|0;i=c[l>>2]|0;m=e+d|0;k=+(e|0);j=1;f=+h[i+128>>3];g=+h[i+120>>3];e=i;while(1){if((j|0)>(c[e+180>>2]|0))break;i=c[(c[e+184>>2]|0)+(j<<2)>>2]|0;fj(i,m);i=c[i+16>>2]|0;e=c[l>>2]|0;if((b[i+238>>1]|0)==(b[e+238>>1]|0)){q=k+ +h[i+120>>3];g=g>q?g:q}if((b[i+236>>1]|0)==(b[e+236>>1]|0)){q=k+ +h[i+128>>3];f=f>q?f:q}j=j+1|0}h[e+120>>3]=g;h[e+128>>3]=f;if(((Vf(a)|0)!=(a|0)?(n=c[l>>2]|0,c[n+12>>2]|0):0)?(p=+h[n+48+((+h[n+104>>3]>+h[n+72>>3]?3:1)<<4)+8>>3]-(f+(g+(+h[(c[(c[c[o+(b[n+236>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]-+h[(c[(c[c[o+(b[n+238>>1]<<6)+4>>2]>>2]|0)+16>>2]|0)+24>>3]))),p>0.0):0)gj(a,~~p,d);if((Vf(a)|0)!=(a|0)){n=c[l>>2]|0;m=o+(b[n+236>>1]<<6)+24|0;q=+h[m>>3];p=+h[n+128>>3];h[m>>3]=q>p?q:p;o=o+(b[n+238>>1]<<6)+16|0;p=+h[o>>3];q=+h[n+120>>3];h[o>>3]=p>q?p:q}return}function gj(a,d,e){a=a|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,l=0,m=0,n=0.0,o=0,p=0;j=c[(Vf(a)|0)+16>>2]|0;o=c[j+196>>2]|0;l=c[a+16>>2]|0;a=b[l+238>>1]|0;f=b[l+236>>1]|0;p=(d+1|0)/2|0;m=l+120|0;n=+(p|0)+ +h[m>>3];i=+(e|0);e=~~(n-(+h[o+(a<<6)+16>>3]-i));l=l+128|0;i=+h[o+(f<<6)+24>>3]-i;k=+(d-p|0)+ +h[l>>3];if((e|0)>0){g=+(e|0);while(1){if((a|0)<(f|0))break;if((c[o+(a<<6)>>2]|0)>0){p=(c[(c[c[o+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[p>>3]=g+ +h[p>>3]}a=a+-1|0}g=k+g}else g=k;a=~~(g-i);a:do if((a|0)>0){e=b[j+236>>1]|0;g=+(a|0);while(1){a=f+-1|0;if((f|0)<=(e|0))break a;if((c[o+(a<<6)>>2]|0)<=0){f=a;continue}f=(c[(c[c[o+(a<<6)+4>>2]>>2]|0)+16>>2]|0)+24|0;h[f>>3]=g+ +h[f>>3];f=a}}while(0);h[l>>3]=k;h[m>>3]=n;return}function hj(b,d){b=b|0;d=d|0;var e=0,f=0;e=c[b+16>>2]|0;f=a[e+84>>0]|0;b=c[d+16>>2]|0;do if(f<<24>>24==(a[b+84>>0]|0)){if(+h[e+56>>3]==+h[b+56>>3]){if(!(f<<24>>24==0?1:+h[e+64>>3]==+h[b+64>>3])){b=0;break}}else if(f<<24>>24){b=0;break}if(+h[e+16>>3]==+h[b+16>>3]?+h[e+24>>3]==+h[b+24>>3]:0){b=1;break}b=(a[e+44>>0]|0)==0}else b=0;while(0);return b&1|0}function ij(a){a=a|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=a+16|0;d=c[j>>2]|0;b[d+236>>1]=32767;b[d+238>>1]=-1;d=0;i=co(a)|0;while(1){e=c[j>>2]|0;if(!i)break;f=e+238|0;g=c[(c[i+16>>2]|0)+232>>2]|0;h=g&65535;if((b[f>>1]|0)<(g|0))b[f>>1]=h;e=e+236|0;if((b[e>>1]|0)>(g|0))b[e>>1]=h;if(!d)d=i;else d=(g|0)<(c[(c[d+16>>2]|0)+232>>2]|0)?i:d;i=eo(a,i)|0}c[e+264>>2]=d;return}function jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0;b=Im(a,79837)|0;if(!b)b=2147483647;else{g=+mN(b);b=~~(g*+(mn(a)|0))}e=a+16|0;d=0;while(1){f=c[e>>2]|0;if((d|0)>=(c[f+220>>2]|0))break;c[f+192>>2]=c[(c[f+216>>2]|0)+(d<<2)>>2];dx(a,(c[f+180>>2]|0)==0&1,b)|0;d=d+1|0}return}function kj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=l;l=l+16|0;g=h;f=d+16|0;if(!(Im(d,79846)|0))mj(d,e);else{i=(c[f>>2]|0)+136|0;b[i>>1]=b[i>>1]|16;lj(d,e)}if(a[174212]|0){i=c[13857]|0;e=c[f>>2]|0;f=b[e+236>>1]|0;c[g>>2]=b[e+238>>1];c[g+4>>2]=f;OL(i,79854,g)|0}l=h;return}function lj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0.0;h=l;l=l+16|0;g=h;c[41939]=0;c[g>>2]=c[4412];g=gn(80064,g,0)|0;Oo(g,80093,280,1)|0;zo(g,17332,17272);nj(a);d=Im(a,79837)|0;if(!d)e=2147483647;else{i=+mN(d);e=~~(i*+(mn(a)|0))}Dj(a,0);Ej(a,g);Fj(a,g);Gj(a,g,0,0);Hj(g);f=Ij(g)|0;Jj(g);if(b|0){xk(g);lk(g)}d=Im(a,87580)|0;if(!d)d=-1;else d=pN(d)|0;ww(g,1,e,d)|0;Kj(a,g,f);ln(g)|0;l=h;return}function mj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g;nj(a);do if(!b){oj(a,a);Ak(a);pj(d,a);h=d;d=c[h+4>>2]|0;b=e;c[b>>2]=c[h>>2];c[b+4>>2]=d;tl(a,0);b=0}else{xk(a);lk(a);oj(a,a);Ak(a);pj(d,a);i=d;d=c[i+4>>2]|0;h=e;c[h>>2]=c[i>>2];c[h+4>>2]=d;tl(a,0);h=c[a+16>>2]|0;if((c[h+220>>2]|0)<=1?(c[h+180>>2]|0)<=0:0)break;c[b+32>>2]=1;b=0}while(0);ik(a);c[f>>2]=c[e>>2];c[f+4>>2]=c[e+4>>2];if(qj(a,f)|0)tl(a,0);if(!b)jj(a);else mk(a,b);rj(a,b);sj(a);l=g;return}function nj(d){d=d|0;var f=0,g=0,h=0;if(a[(c[(c[d+60>>2]|0)+16>>2]|0)+113>>0]&1){g=co(d)|0;while(1){if(!g)break;f=Pm(d,g)|0;while(1){if(!f)break;h=(c[f+16>>2]|0)+170|0;b[h>>1]=(e[h>>1]|0)<<1;f=Rm(d,f)|0}g=eo(d,g)|0}h=(c[d+16>>2]|0)+252|0;c[h>>2]=((c[h>>2]|0)+1|0)/2|0}return}function oj(a,b){a=a|0;b=b|0;var d=0;b=Jp(b)|0;while(1){if(!b)break;d=Aj(b)|0;do if(d)if((d|0)==7&(c[42191]|0)==100){wj(a,b);break}else{Bj(a,b,d);break}else oj(a,b);while(0);b=Kp(b)|0}return}function pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=d+16|0;d=c[h>>2]|0;e=c[d+228>>2]|0;j=b+4|0;f=c[d+224>>2]|0;g=(f|0)==0;a:do if(!((e|0)==0&g)){if(!g){e=HA(f)|0;d=c[h>>2]|0;c[d+224>>2]=e;e=c[d+228>>2]|0}do if(e){d=HA(e)|0;e=c[h>>2]|0;c[e+228>>2]=d;if(d){e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==5&1;while(1){d=c[c[d+180>>2]>>2]|0;if(!d){d=11;break}g=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;if((g|0)!=(HA(g)|0)){d=9;break}hk(d);d=c[e>>2]|0}if((d|0)==9)va(79957,79897,346,79989);else if((d|0)==11){k=f;i=c[h>>2]|0;break}}else{k=0;i=e}}else{k=0;i=d}while(0);d=c[i+224>>2]|0;if(!d){l=k;m=0}else{e=d+16|0;d=c[e>>2]|0;f=(a[d+159>>0]|0)==3&1;while(1){d=c[c[d+172>>2]>>2]|0;if(!d){l=k;m=f;break a}i=c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0;if((i|0)!=(HA(i)|0))break;hk(d);d=c[e>>2]|0}va(80002,79897,353,79989)}}else{l=0;m=0}while(0);c[b>>2]=m;c[j>>2]=l;return}function qj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;j=a+16|0;i=c[j>>2]|0;if((c[i+228>>2]|0)==0?(c[i+224>>2]|0)==0:0)d=0;else e=3;a:do if((e|0)==3){g=co(a)|0;i=d+4|0;h=c[d>>2]&65535;d=0;while(1){if(!g)break a;if((g|0)==(HA(g)|0)){f=g+16|0;e=c[f>>2]|0;if((c[e+184>>2]|0)==0?(k=c[(c[j>>2]|0)+228>>2]|0,!((k|0)==0|(g|0)==(k|0))):0){d=ah(g,k,0)|0;e=c[d+16>>2]|0;b[e+170>>1]=c[i>>2];c[e+156>>2]=0;e=c[f>>2]|0}if((c[e+176>>2]|0)==0?(l=c[(c[j>>2]|0)+224>>2]|0,!((l|0)==0|(g|0)==(l|0))):0){d=ah(l,g,0)|0;f=c[d+16>>2]|0;b[f+170>>1]=h;c[f+156>>2]=0}}g=eo(a,g)|0}}while(0);return (d|0)!=0|0}function rj(d,e){d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0;g=co(d)|0;l=d+16|0;f=c[l>>2]|0;a:do if(g){b[f+236>>1]=32767;b[f+238>>1]=-1;k=(e|0)==0;while(1){if(!g)break;f=HA(g)|0;j=c[g+16>>2]|0;h=j+232|0;e=c[h>>2]|0;if((f|0)!=(g|0)&(k|(e|0)==0)){e=(c[(c[f+16>>2]|0)+232>>2]|0)+e|0;c[h>>2]=e}f=c[l>>2]|0;h=f+238|0;i=e&65535;if((b[h>>1]|0)<(e|0))b[h>>1]=i;f=f+236|0;if((b[f>>1]|0)>(e|0))b[f>>1]=i;switch(a[j+159>>0]|0){case 6:case 0:break;default:JA(g)}g=eo(d,g)|0}if((Vf(d)|0)==(d|0)){if((c[42191]|0)==100)e=1;else{vj(d);break}while(1){f=c[l>>2]|0;if((e|0)>(c[f+180>>2]|0))break a;uj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0);e=e+1|0}}}else{b[f+238>>1]=0;b[f+236>>1]=0}while(0);return}function sj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=b+16|0;e=0;while(1){d=c[j>>2]|0;if((e|0)>=(c[d+220>>2]|0))break;i=c[(c[d+216>>2]|0)+(e<<2)>>2]|0;c[d+192>>2]=i;d=i;while(1){if(!d)break;i=d+16|0;tj((c[i>>2]|0)+172|0);tj((c[i>>2]|0)+180|0);i=c[i>>2]|0;a[i+157>>0]=0;d=c[i+164>>2]|0}e=e+1|0}i=co(b)|0;while(1){if(!i)break;h=Pm(b,i)|0;while(1){if(!h)break;f=h+16|0;d=c[f>>2]|0;g=c[d+172>>2]|0;if((g|0)!=0?(k=g+16|0,(h|0)==(c[(c[k>>2]|0)+116>>2]|0)):0){d=co(b)|0;while(1){if(!d)break;e=Pm(b,d)|0;while(1){if(!e)break;if((h|0)!=(e|0)?(l=(c[e+16>>2]|0)+172|0,m=c[l>>2]|0,(m|0)!=0&(g|0)==(m|0)):0)c[l>>2]=0;e=Rm(b,e)|0}d=eo(b,d)|0}xN(c[k>>2]|0);xN(g);d=c[f>>2]|0}c[d+172>>2]=0;h=Rm(b,h)|0}i=eo(b,i)|0}xN(c[(c[j>>2]|0)+216>>2]|0);m=c[j>>2]|0;c[m+216>>2]=0;c[m+220>>2]=0;return}function tj(a){a=a|0;var b=0,d=0;d=a+4|0;b=c[d>>2]|0;while(1){if((b|0)<=-1)break;c[(c[a>>2]|0)+(b<<2)>>2]=0;b=b+-1|0}c[d>>2]=0;return}function uj(a){a=a|0;var d=0,f=0,g=0;d=a+16|0;f=c[d>>2]|0;g=c[(c[(c[f+264>>2]|0)+16>>2]|0)+232>>2]|0;a=f+236|0;b[a>>1]=(e[a>>1]|0)+g;a=f+238|0;b[a>>1]=(e[a>>1]|0)+g;a=1;while(1){if((a|0)>(c[f+180>>2]|0))break;uj(c[(c[f+184>>2]|0)+(a<<2)>>2]|0);a=a+1|0;f=c[d>>2]|0}return}function vj(b){b=b|0;var d=0;d=Jp(Vf(b)|0)|0;while(1){if(!d)break;if((a[(c[d+16>>2]|0)+274>>0]|0)==7)wj(b,d);d=Kp(d)|0}return}function wj(a,b){a=a|0;b=b|0;var d=0;d=(c[b+16>>2]|0)+200|0;do if((c[d>>2]|0)==0?(c[d>>2]=a,xj(a,b),co(b)|0):0){yj(a,b);if((c[42191]|0)==100){mj(b,0);zj(b);break}else{ij(b);break}}while(0);return}function xj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=b+16|0;g=co(d)|0;while(1){if(!g)break;i=eo(d,g)|0;j=g+16|0;if(!(a[(c[j>>2]|0)+159>>0]|0))f=1;else{qo(d,g)|0;g=i;continue}while(1){e=c[h>>2]|0;b=c[e+180>>2]|0;if((f|0)>=(b|0))break;if(Bo(c[(c[e+184>>2]|0)+(f<<2)>>2]|0,g)|0){k=7;break}f=f+1|0}if((k|0)==7){k=0;b=c[(c[h>>2]|0)+180>>2]|0}if((f|0)<(b|0))qo(d,g)|0;c[(c[j>>2]|0)+212>>2]=0;g=i}e=co(d)|0;while(1){if(!e)break;b=Pm(Vf(d)|0,e)|0;while(1){if(!b)break;if(Bo(d,c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)en(d,b,1)|0;b=Rm(Vf(d)|0,b)|0}e=eo(d,e)|0}return}function yj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;e=a+16|0;d=c[e>>2]|0;g=d+180|0;a=c[g>>2]|0;f=a+1|0;c[g>>2]=f;d=c[d+184>>2]|0;a=a+2|0;if(!d)a=sw(a<<2)|0;else a=uw(d,a,4,f)|0;c[(c[e>>2]|0)+184>>2]=a;c[a+(f<<2)>>2]=b;ew(b);return}function zj(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;g=c[b+16>>2]|0;d=g+192|0;h=0;while(1){d=c[d>>2]|0;if(!d)break;f=c[d+16>>2]|0;if(!(c[f+232>>2]|0))e=(a[f+156>>0]|0)==0?d:h;else e=h;d=f+164|0;h=e}if(!h)va(79882,79897,238,79904);c[g+264>>2]=h;d=co(b)|0;while(1){if(!d){d=13;break}e=d+16|0;if(!((d|0)==(h|0)?1:(c[(c[e>>2]|0)+216>>2]|0)<2)){d=11;break}IA(d,h)|0;a[(c[e>>2]|0)+159>>0]=7;d=eo(b,d)|0}if((d|0)==11)va(79919,79897,242,79904);else if((d|0)==13)return}function Aj(b){b=b|0;var d=0;if(!(Cj(b)|0)){d=RA(Im(b,80034)|0,17284,17308)|0;a[(c[b+16>>2]|0)+274>>0]=d;b=d}else b=7;return b|0}function Bj(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=co(d)|0;a:do if(g|0){j=e&255;i=g+16|0;f=g;h=j;while(1){a[(c[f+16>>2]|0)+159>>0]=h;f=eo(d,f)|0;if(!f)break;IA(g,f)|0;h=a[(c[i>>2]|0)+159>>0]|0}b=b+16|0;switch(e|0){case 3:case 2:{f=c[b>>2]|0;h=c[f+224>>2]|0;if(h){g=IA(h,g)|0;f=c[b>>2]|0}c[f+224>>2]=g;break}case 5:case 4:{f=c[b>>2]|0;h=c[f+228>>2]|0;if(h){g=IA(h,g)|0;f=c[b>>2]|0}c[f+228>>2]=g;break}default:break a}switch(e|0){case 3:{f=f+224|0;break}case 5:{f=f+228|0;break}default:break a}a[(c[(c[f>>2]|0)+16>>2]|0)+159>>0]=j}while(0);return}function Cj(a){a=a|0;return (xJ(Dn(a)|0,92999,7)|0)==0|0}function Dj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;if(!(Yj(b)|0)){j=b+16|0;do if(eB(b)|0)if(!d){c[(c[j>>2]|0)+204>>2]=0;d=b;break}else{c[(c[j>>2]|0)+204>>2]=(c[(c[d+16>>2]|0)+204>>2]|0)+1;Zj(b,d);d=b;break}while(0);e=Jp(b)|0;while(1){if(!e)break;Dj(e,d);e=Kp(e)|0}a:do if(eB(b)|0){e=co(b)|0;while(1){if(!e)break a;f=(c[e+16>>2]|0)+212|0;if(!(c[f>>2]|0))c[f>>2]=b;e=eo(b,e)|0}}while(0);d=d+16|0;switch(_j(b)|0){case 3:{a[(c[d>>2]|0)+241>>0]=1;k=19;break}case 2:{k=19;break}case 5:{a[(c[d>>2]|0)+242>>0]=1;k=21;break}case 4:{k=21;break}case 1:{$j(b)|0;break}case 6:break;default:{e=Dn(b)|0;f=Im(b,80034)|0;c[g>>2]=e;c[g+4>>2]=f;_l(0,80217,g)|0}}if((k|0)==19){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+208>>2]|0)|0;c[(c[d>>2]|0)+208>>2]=k}else if((k|0)==21){k=$j(b)|0;k=ak(k,c[(c[d>>2]|0)+212>>2]|0)|0;c[(c[d>>2]|0)+212>>2]=k}if((eB(b)|0?(h=c[j>>2]|0,i=c[h+208>>2]|0,i|0):0)?(i|0)==(c[h+212>>2]|0):0){i=$j(b)|0;k=c[j>>2]|0;c[k+208>>2]=i;c[k+212>>2]=i}}l=m;return}function Ej(a,b){a=a|0;b=b|0;var d=0,e=0;c[41939]=0;d=co(a)|0;while(1){if(!d)break;if((Lj(d)|0)==(d|0)){e=Oj(b,Dn(d)|0)|0;c[(c[d+16>>2]|0)+148>>2]=e}d=eo(a,d)|0}d=co(a)|0;while(1){if(!d)break;b=d+16|0;if(!(c[(c[b>>2]|0)+148>>2]|0)){e=c[(c[(Lj(d)|0)+16>>2]|0)+148>>2]|0;c[(c[b>>2]|0)+148>>2]=e}d=eo(a,d)|0}return}function Fj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=co(a)|0;while(1){if(!h)break;d=c[(c[h+16>>2]|0)+148>>2]|0;i=Pm(a,h)|0;while(1){if(!i)break;do if((Tj(i)|0)==0?(j=i+-48|0,k=c[(c[(Lj(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)|0)+16>>2]|0)+148>>2]|0,(d|0)!=(k|0)):0){f=c[i>>2]&3;g=i+48|0;e=((f|0)==3?i:g)+40|0;f=c[(c[(c[((f|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0;if(!(Uj(i)|0)){if((Sj(c[(c[(c[e>>2]|0)+16>>2]|0)+212>>2]|0)|0)==0?(Sj(f)|0)==0:0){Vj(b,d,k,i);break}Wj(b,d,k,i);break}else{f=Lj(c[e>>2]|0)|0;e=c[i>>2]&3;if((f|0)!=(c[(c[(c[(c[(c[((e|0)==3?i:g)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+212>>2]|0)?(g=Lj(c[((e|0)==2?i:j)+40>>2]|0)|0,(g|0)!=(c[(c[(c[(c[(c[((c[i>>2]&3|0)==2?i:j)+40>>2]|0)+16>>2]|0)+212>>2]|0)+16>>2]|0)+208>>2]|0)):0)e=k;else{e=d;d=k}Vj(b,d,e,i);break}}while(0);i=Rm(a,i)|0}h=eo(a,h)|0}return}function Gj(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;if((eB(a)|0)!=0?(Sj(a)|0)!=0:0){i=co(a)|0;while(1){f=(d|0)!=0;h=(e|0)!=0;if(!i)break;if(!(Sm(a,i)|0)){g=c[(c[(Lj(i)|0)+16>>2]|0)+148>>2]|0;if(!f)d=Oj(b,80115)|0;an(b,d,g,0,1)|0}if(!(Pm(a,i)|0)){f=c[(c[(Lj(i)|0)+16>>2]|0)+148>>2]|0;if(!h)e=Oj(b,80120)|0;an(b,f,e,0,1)|0}i=eo(a,i)|0}if(h&f){Rj(an(b,d,e,0,1)|0,0,1e3);f=d}else f=d}else f=d;d=Jp(a)|0;while(1){if(!d)break;Gj(d,b,f,e);d=Kp(d)|0}return}function Hj(b){b=b|0;var d=0,e=0;d=co(b)|0;while(1){if(!d)break;e=c[d+16>>2]|0;a[e+158>>0]=0;a[e+157>>0]=0;d=eo(b,d)|0}d=co(b)|0;while(1){if(!d)break;Pj(b,d);d=eo(b,d)|0}return}function Ij(a){a=a|0;var b=0,d=0,e=0,f=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+128>>2]=0;b=eo(a,b)|0}b=0;e=co(a)|0;while(1){if(!e)break;d=b+1|0;if(!(c[(c[e+16>>2]|0)+128>>2]|0)){Nj(a,e,d);b=d}e=eo(a,e)|0}a:do if((b|0)>1){f=Oj(a,80109)|0;d=1;e=co(a)|0;while(1){if(!e)break a;if((c[(c[e+16>>2]|0)+128>>2]|0)==(d|0)){an(a,f,e,0,1)|0;d=d+1|0}e=eo(a,e)|0}}while(0);return b|0}function Jj(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;g=co(a)|0;while(1){if(!g)break;h=g+16|0;f=Pm(a,g)|0;while(1){if(!f)break;b=c[h>>2]|0;d=c[b+180>>2]|0;b=(c[b+184>>2]<<2)+8|0;if(!d)b=tw(b)|0;else b=vw(d,b)|0;d=c[h>>2]|0;c[d+180>>2]=b;d=d+184|0;e=c[d>>2]|0;c[d>>2]=e+1;c[b+(e<<2)>>2]=f;e=c[h>>2]|0;c[(c[e+180>>2]|0)+(c[e+184>>2]<<2)>>2]=0;e=f+-48|0;d=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[d+172>>2]|0;d=(c[d+176>>2]<<2)+8|0;if(!b)b=tw(d)|0;else b=vw(b,d)|0;c[(c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0)+172>>2]=b;i=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;b=c[i+172>>2]|0;i=i+176|0;d=c[i>>2]|0;c[i>>2]=d+1;c[b+(d<<2)>>2]=f;e=c[(c[((c[f>>2]&3|0)==2?f:e)+40>>2]|0)+16>>2]|0;c[(c[e+172>>2]|0)+(c[e+176>>2]<<2)>>2]=0;f=Rm(a,f)|0}g=eo(a,g)|0}return}function Kj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=a+16|0;p=c[n>>2]|0;b[p+236>>1]=32767;b[p+238>>1]=-1;a:do if((f|0)>1){h=sw((f<<2)+4|0)|0;g=f+1|0;f=1;while(1){if((f|0)==(g|0)){m=h;o=h;break a}c[h+(f<<2)>>2]=32767;f=f+1|0}}else{m=0;o=0}while(0);p=(m|0)!=0;h=co(a)|0;while(1){if(!h)break;i=c[(c[(c[(Lj(h)|0)+16>>2]|0)+148>>2]|0)+16>>2]|0;j=c[i+232>>2]|0;k=c[h+16>>2]|0;c[k+232>>2]=j;f=c[n>>2]|0;g=f+238|0;l=j&65535;if((b[g>>1]|0)<(j|0))b[g>>1]=l;f=f+236|0;if((b[f>>1]|0)>(j|0))b[f>>1]=l;if(p){l=c[i+128>>2]|0;c[k+128>>2]=l;l=m+(l<<2)|0;k=c[l>>2]|0;c[l>>2]=(k|0)<(j|0)?k:j}h=eo(a,h)|0}b:do if(!p){m=b[(c[n>>2]|0)+236>>1]|0;g=m<<16>>16;if(m<<16>>16>0){f=co(a)|0;while(1){if(!f)break;m=(c[f+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-g;f=eo(a,f)|0}f=c[n>>2]|0;n=f+236|0;b[n>>1]=(e[n>>1]|0)-g;f=f+238|0;b[f>>1]=(e[f>>1]|0)-g;f=0}else f=0}else{f=co(a)|0;while(1){if(!f){f=1;break b}l=c[f+16>>2]|0;n=l+232|0;c[n>>2]=(c[n>>2]|0)-(c[m+(c[l+128>>2]<<2)>>2]|0);f=eo(a,f)|0}}while(0);Mj(a,f);i=co(d)|0;while(1){if(!i)break;g=i+16|0;f=c[g>>2]|0;h=c[f+172>>2]|0;if(h){xN(h);f=c[g>>2]|0}f=c[f+180>>2]|0;if(f|0)xN(f);i=eo(d,i)|0}xN(c[(c[(co(a)|0)+16>>2]|0)+112>>2]|0);f=co(a)|0;while(1){if(!f)break;c[(c[f+16>>2]|0)+112>>2]=0;f=eo(a,f)|0}if(p)xN(o);return}function Lj(a){a=a|0;var b=0,d=0,e=0;b=a+16|0;d=(c[b>>2]|0)+152|0;e=c[d>>2]|0;if(e){if((e|0)!=(a|0)){e=Lj(e)|0;c[(c[b>>2]|0)+152>>2]=e;return e|0}}else c[d>>2]=a;return a|0}function Mj(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=a+16|0;e=1;while(1){f=c[j>>2]|0;if((e|0)>(c[f+180>>2]|0))break;Mj(c[(c[f+184>>2]|0)+(e<<2)>>2]|0,0);e=e+1|0}if((d|0)!=0|(c[f+200>>2]|0)!=0){b[f+236>>1]=32767;b[f+238>>1]=-1;e=0;i=co(a)|0;while(1){d=c[j>>2]|0;if(!i)break;g=c[(c[i+16>>2]|0)+232>>2]|0;f=d+238|0;h=g&65535;if((b[f>>1]|0)<(g|0))b[f>>1]=h;d=d+236|0;if((b[d>>1]|0)>(g|0)){b[d>>1]=h;e=i}i=eo(a,i)|0}c[d+264>>2]=e}return}function Nj(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;e=(c[b+16>>2]|0)+128|0;a:do if(!(c[e>>2]|0)){c[e>>2]=d;e=Pm(a,b)|0;while(1){if(!e)break;Nj(a,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,d);e=Rm(a,e)|0}e=Sm(a,b)|0;while(1){if(!e)break a;Nj(a,c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,d);e=Tm(a,e)|0}}while(0);return}function Oj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=no(a,b,1)|0;b=f+16|0;c[(c[b>>2]|0)+176>>2]=0;e=sw(20)|0;d=c[b>>2]|0;c[d+172>>2]=e;c[d+184>>2]=0;d=sw(20)|0;b=c[b>>2]|0;c[b+180>>2]=d;d=c[41939]|0;e=b+168|0;if(!d){c[e>>2]=0;c[(c[a+16>>2]|0)+192>>2]=f}else{c[e>>2]=d;c[(c[d+16>>2]|0)+164>>2]=f}c[41939]=f;c[b+164>>2]=0;return f|0}function Pj(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=d+16|0;e=c[h>>2]|0;f=e+157|0;if(!(a[f>>0]|0)){a[f>>0]=1;a[e+158>>0]=1;d=Pm(b,d)|0;while(1){if(!d)break;e=Rm(b,d)|0;f=c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0;g=c[f+16>>2]|0;if(a[g+158>>0]|0){Qj(b,d);d=e;continue}if(a[g+157>>0]|0){d=e;continue}Pj(b,f);d=e}a[(c[h>>2]|0)+158>>0]=0}return}function Qj(a,b){a=a|0;b=b|0;var d=0,f=0,g=0;d=c[b>>2]&3;g=b+-48|0;f=b+48|0;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,0)|0;if(!d){d=c[b>>2]&3;d=an(a,c[((d|0)==2?b:g)+40>>2]|0,c[((d|0)==3?b:f)+40>>2]|0,0,1)|0}g=c[b+16>>2]|0;Rj(d,e[g+170>>1]|0,c[g+156>>2]|0);qo(a,b)|0;return}function Rj(a,d,f){a=a|0;d=d|0;f=f|0;var g=0,h=0;a=c[a+16>>2]|0;g=a+170|0;h=e[g>>1]|0;b[g>>1]=(h|0)>(d|0)?h:d;d=a+156|0;c[d>>2]=(c[d>>2]|0)+f;return}function Sj(a){a=a|0;return (GA(Im(a,80125)|0,0)|0)&255|0}function Tj(b){b=b|0;var d=0,e=0;d=c[42266]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(FA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Uj(a){a=a|0;var b=0,d=0;d=c[a>>2]&3;b=c[(c[(c[((d|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;a=c[(c[(c[((d|0)==2?a:a+-48|0)+40>>2]|0)+16>>2]|0)+212>>2]|0;if((b|0)==(a|0))return 1;else{d=Xj(b,a)|0;return ((d|0)==(b|0)|(d|0)==(a|0))&1|0}return 0}function Vj(a,b,d,f){a=a|0;b=b|0;d=d|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;h=j;g=an(a,b,d,0,0)|0;if(!g){g=an(a,d,b,0,0)|0;if(!g){g=an(a,b,d,0,1)|0;if(!g){b=Dn(b)|0;f=Dn(d)|0;c[h>>2]=b;c[h+4>>2]=f;_l(1,80142,h)|0}else i=4}else i=4}else i=4;if((i|0)==4){i=c[f+16>>2]|0;Rj(g,e[i+170>>1]|0,c[i+156>>2]|0)}l=j;return}function Wj(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+112|0;j=m;i=m+4|0;h=Sm(a,d)|0;while(1){if(!h){k=6;break}n=Pm(a,c[((c[h>>2]&3|0)==3?h:h+48|0)+40>>2]|0)|0;if(n|0?(c[((c[n>>2]&3|0)==2?n:n+-48|0)+40>>2]|0)==(f|0):0)break;h=Tm(a,h)|0}if((k|0)==6){n=c[41940]|0;c[41940]=n+1;c[j>>2]=n;yJ(i,80133,j)|0;i=Oj(a,i)|0;n=an(a,i,d,0,1)|0;i=an(a,i,f,0,1)|0;f=c[g+16>>2]|0;k=f+156|0;n=(c[n+16>>2]|0)+156|0;c[n>>2]=(c[n>>2]|0)+((c[k>>2]|0)*1e3|0);n=c[i+16>>2]|0;j=n+170|0;b[j>>1]=b[(c[((e[j>>1]|0)>(e[f+170>>1]|0)?i:g)+16>>2]|0)+170>>1]|0;n=n+156|0;c[n>>2]=(c[n>>2]|0)+(c[k>>2]|0)}l=m;return}function Xj(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;a:while(1){e=a+16|0;while(1){if((a|0)==(b|0))break a;f=c[e>>2]|0;d=c[b+16>>2]|0;if((c[f+204>>2]|0)>=(c[d+204>>2]|0))break;b=c[d+200>>2]|0}a=c[f+200>>2]|0}return a|0}function Yj(a){a=a|0;return (co(a)|0)==0|0}function Zj(a,b){a=a|0;b=b|0;c[(c[a+16>>2]|0)+200>>2]=b;yj(b,a);xj(b,a);return}function _j(b){b=b|0;var c=0;b=Im(b,80034)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)if(vJ(b,80044)|0)if(vJ(b,80048)|0)if(vJ(b,80055)|0)if(vJ(b,80059)|0)if(!(vJ(b,80039)|0))b=1;else c=8;else b=5;else b=4;else b=3;else b=2;else c=8;if((c|0)==8)b=6;return b|0}function $j(a){a=a|0;var b=0,c=0;c=co(a)|0;a:do if(!c)b=0;else{b=Lj(c)|0;while(1){c=eo(a,c)|0;if(!c)break a;ak(b,c)|0}}while(0);return b|0}function ak(a,b){a=a|0;b=b|0;if(b){a=Lj(a)|0;c[(c[(Lj(b)|0)+16>>2]|0)+152>>2]=a}return a|0}function bk(a,b,d){a=a|0;b=b|0;d=d|0;Oo(b,80093,c[d>>2]|0,1)|0;return}function ck(a,b,d){a=a|0;b=b|0;d=d|0;Oo(b,80260,c[d+4>>2]|0,1)|0;return}function dk(a,b,d){a=a|0;b=b|0;d=d|0;Oo(b,80245,c[d+8>>2]|0,1)|0;return}function ek(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+240|0;m=p+120|0;n=p;c[42270]=ym(b,2,80275,0)|0;k=ym(b,2,80284,0)|0;c[42271]=k;a:do if((k|0)!=0|(c[42270]|0)!=0){k=co(b)|0;while(1){if(!k)break a;j=0;d=0;i=Um(b,k)|0;while(1){if(!i){f=0;break}e=c[i>>2]|0;g=e&3;f=c[((g|0)==2?i:i+-48|0)+40>>2]|0;h=i+48|0;b:do if((f|0)!=(c[((g|0)==3?i:h)+40>>2]|0)){g=c[42270]|0;do if((f|0)==(k|0)&(g|0)!=0){f=Jm(i,g)|0;if(!(a[f>>0]|0)){e=c[i>>2]|0;break}else{e=j;d=fk(m,d,k,i,f)|0;break b}}while(0);f=c[42271]|0;if((f|0?(c[((e&3|0)==3?i:h)+40>>2]|0)==(k|0):0)?(o=Jm(i,f)|0,(a[o>>0]|0)!=0):0)e=fk(n,j,k,i,o)|0;else e=j}else e=j;while(0);j=e;i=Vm(b,i,k)|0}while(1){if((f|0)>=(d|0)){e=0;break}e=m+(f*24|0)+4|0;if((c[m+(f*24|0)+8>>2]|0)>1)gk(k,e);e=c[e>>2]|0;if(e|0)xN(e);f=f+1|0}while(1){if((e|0)>=(j|0))break;d=n+(e*24|0)+4|0;if((c[n+(e*24|0)+8>>2]|0)>1)gk(k,d);d=c[d>>2]|0;if(d|0)xN(d);e=e+1|0}k=eo(b,k)|0}}while(0);l=p;return}function fk(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+16|0;n=s;p=s+12|0;q=s+8|0;r=0;while(1){m=b+(r*24|0)|0;if((r|0)>=(d|0)){o=10;break}j=c[m>>2]|0;if((a[j>>0]|0)==(a[g>>0]|0)?(vJ(j,g)|0)==0:0){o=5;break}r=r+1|0}do if((o|0)==5){k=b+(r*24|0)+4|0;m=b+(r*24|0)+8|0;j=c[k>>2]|0;if(!j)j=tw((c[m>>2]<<2)+8|0)|0;else j=vw(j,(c[m>>2]<<2)+8|0)|0;c[k>>2]=j;n=c[m>>2]|0;o=n+1|0;c[m>>2]=o;c[j+(n<<2)>>2]=f;c[(c[k>>2]|0)+(o<<2)>>2]=0;o=13}else if((o|0)==10){j=b+(r*24|0)+4|0;k=b+(r*24|0)+8|0;if((d|0)>4){b=Dn(e)|0;c[n>>2]=5;c[n+4>>2]=b;_l(1,80293,n)|0;break}else{c[k>>2]=0;t=sw(8)|0;c[j>>2]=t;n=c[k>>2]|0;o=n+1|0;c[k>>2]=o;c[t+(n<<2)>>2]=f;c[(c[j>>2]|0)+(o<<2)>>2]=0;c[m>>2]=g;c[b+(r*24|0)+12>>2]=0;h[b+(r*24|0)+16>>3]=0.0;d=d+1|0;o=13;break}}while(0);if((o|0)==13){xt(f,p,q);j=(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)==(e|0)?c[q>>2]|0:c[p>>2]|0;if(j){q=b+(r*24|0)+12|0;t=c[q>>2]|0;c[q>>2]=t+1;if(!t)i=+Bt(f,j);else i=0.0;h[b+(r*24|0)+16>>3]=i}}l=s;return d|0}function gk(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0,k=0.0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0;x=l;l=l+80|0;t=x+68|0;u=x+64|0;s=x;v=d+4|0;m=c[v>>2]|0;w=b+16|0;n=c[w>>2]|0;q=+h[n+16>>3];r=+h[n+24>>3];j=0;o=0.0;p=0.0;while(1){if((j|0)>=(m|0))break;f=c[(c[d>>2]|0)+(j<<2)>>2]|0;i=c[f>>2]&3;e=c[((i|0)==2?f:f+-48|0)+40>>2]|0;if((e|0)==(b|0))e=c[((i|0)==3?f:f+48|0)+40>>2]|0;i=c[e+16>>2]|0;y=+h[i+16>>3]-q;g=+h[i+24>>3]-r;k=+sJ(y,g);j=j+1|0;o=o+y/k;p=p+g/k}k=+sJ(o,p);g=+h[n+88>>3]+ +h[n+96>>3];y=+h[n+80>>3];n=g>y+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0;if(n)g=+h[e+88>>3]+ +h[e+96>>3];else{g=+h[e+80>>3];g=g+ +(c[(c[(ro(b)|0)+16>>2]|0)+252>>2]|0);e=c[w>>2]|0}y=o/k*g+ +h[e+16>>3];g=p/k*g+ +h[e+24>>3];h[s>>3]=q;m=s+8|0;h[m>>3]=r;h[s+16>>3]=(q*2.0+y)/3.0;h[s+24>>3]=(r*2.0+g)/3.0;h[s+32>>3]=(q+y*2.0)/3.0;h[s+40>>3]=(r+g*2.0)/3.0;h[s+48>>3]=y;h[s+56>>3]=g;Dz(b,s);n=c[w>>2]|0;g=+h[s>>3]-+h[n+16>>3];k=+h[m>>3]-+h[n+24>>3];g=+(~~(g+(g>=0.0?.5:-.5))|0);k=+(~~(k+(k>=0.0?.5:-.5))|0);y=+h[n+88>>3];s=~~((y+g)*256.0/(y+ +h[n+96>>3]))&255;n=0;while(1){if((n|0)>=(c[v>>2]|0))break;m=c[(c[d>>2]|0)+(n<<2)>>2]|0;xt(m,t,u);while(1){if(!m)break;else f=m;while(1){if(!f){i=m;break}e=c[f>>2]|0;i=f+-48|0;j=f+16|0;if((c[((e&3|0)==2?f:i)+40>>2]|0)==(b|0)){e=c[j>>2]|0;h[e+56>>3]=g;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[f>>2]|0}if((c[((e&3|0)==3?f:f+48|0)+40>>2]|0)==(b|0)){e=c[j>>2]|0;h[e+16>>3]=g;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[j>>2]|0)+112>>0]|0)!=1){f=0;continue}e=c[(c[((c[f>>2]&3|0)==2?f:i)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){f=0;continue}if((c[e+184>>2]|0)!=1){f=0;continue}f=c[c[e+180>>2]>>2]|0}while(1){if(!i)break;e=c[i>>2]|0;j=i+16|0;if((c[((e&3|0)==2?i:i+-48|0)+40>>2]|0)==(b|0)){e=c[j>>2]|0;h[e+56>>3]=g;h[e+64>>3]=k;h[e+72>>3]=0.0;c[e+80>>2]=0;a[e+84>>0]=1;a[e+85>>0]=0;a[e+86>>0]=0;a[e+87>>0]=0;a[e+88>>0]=s;a[e+89>>0]=0;c[e+92>>2]=0;e=c[i>>2]|0}f=i+48|0;if((c[((e&3|0)==3?i:f)+40>>2]|0)==(b|0)){e=c[j>>2]|0;h[e+16>>3]=g;h[e+24>>3]=k;h[e+32>>3]=0.0;c[e+40>>2]=0;a[e+44>>0]=1;a[e+45>>0]=0;a[e+46>>0]=0;a[e+47>>0]=0;a[e+48>>0]=s;a[e+49>>0]=0;c[e+52>>2]=0}if((a[(c[j>>2]|0)+112>>0]|0)!=1){i=0;continue}e=c[(c[((c[i>>2]&3|0)==3?i:f)+40>>2]|0)+16>>2]|0;if((a[e+156>>0]|0)!=1){i=0;continue}if((c[e+176>>2]|0)!=1){i=0;continue}i=c[c[e+172>>2]>>2]|0}m=c[(c[m+16>>2]|0)+172>>2]|0}n=n+1|0}a[(c[w>>2]|0)+145>>0]=1;l=x;return}function hk(a){a=a|0;var b=0,d=0,e=0;Xg(a);b=c[a>>2]&3;d=a+-48|0;e=a+48|0;b=Sg(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0)|0;if(!b){b=c[a>>2]&3;ah(c[((b|0)==2?a:d)+40>>2]|0,c[((b|0)==3?a:e)+40>>2]|0,a)|0}else ih(a,b);return}function ik(b){b=b|0;var d=0,e=0,f=0,g=0;f=b+16|0;e=0;while(1){b=c[f>>2]|0;if((e|0)>=(c[b+220>>2]|0))break;d=c[(c[b+216>>2]|0)+(e<<2)>>2]|0;c[b+192>>2]=d;b=d;d=b;while(1){if(!d)break;g=c[d+16>>2]|0;a[g+157>>0]=0;d=c[g+164>>2]|0}while(1){if(!b)break;jk(b);b=c[(c[b+16>>2]|0)+164>>2]|0}e=e+1|0}return}function jk(b){b=b|0;var d=0,e=0,f=0,g=0;g=b+16|0;d=c[g>>2]|0;b=d+157|0;if(!(a[b>>0]|0)){a[b>>0]=1;a[d+158>>0]=1;b=0;while(1){f=c[(c[d+180>>2]|0)+(b<<2)>>2]|0;if(!f)break;d=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;e=c[d+16>>2]|0;if(!(a[e+158>>0]|0)){if(!(a[e+157>>0]|0))jk(d)}else{hk(f);b=b+-1|0}b=b+1|0;d=c[g>>2]|0}a[d+158>>0]=0}return}function kk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;e=co(a)|0;b=0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;g=c[d>>2]&3;h=c[(c[(c[((g|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;g=c[(c[(c[((g|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;f=h-g|0;d=Rm(a,d)|0;b=((h|0)==(g|0)?0:((f|0)>-1?f:0-f|0)+-1|0)+b|0}e=eo(a,e)|0}return b|0}function lk(b){b=b|0;var d=0,e=0,f=0,g=0;e=co(b)|0;while(1){if(!e)break;g=c[e+16>>2]|0;f=c[g+176>>2]|0;g=g+172|0;d=0;while(1){if((d|0)>=(f|0))break;a[(c[(c[(c[g>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+112>>0]=0;d=d+1|0}e=eo(b,e)|0}return}function mk(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0;r=l;l=l+16|0;p=r;k=c[d+24>>2]|0;nk(b);m=(k|0)==-1;n=d+8|0;j=m^1;o=c[13857]|0;g=1797693134862315708145274.0e284;i=0;while(1){if(!(m|(i|0)<(k|0)))break;e=co(b)|0;while(1){if(!e)break;c[(c[e+16>>2]|0)+232>>2]=0;e=eo(b,e)|0}jj(b);f=+ok(b);h[n>>3]=f;if(a[174212]|0){h[p>>3]=f;OL(o,80345,p)|0;f=+h[n>>3]}if(!(!(f<=+h[d>>3])&(!(g<=f)|j))){q=9;break}pk(b);g=f;i=i+1|0}if((q|0)==9){q=d+20|0;c[d+16>>2]=c[q>>2];c[q>>2]=i}jj(b);qk(b);rk();h[n>>3]=+ok(b);l=r;return}function nk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0;c[41944]=tw((mn(a)|0)*24|0)|0;c[41943]=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+120>>2]=-1;b=eo(a,b)|0}l=co(a)|0;while(1){if(!l)break;f=l+16|0;do if(!(c[(c[f>>2]|0)+216>>2]|0)){j=sw(4)|0;i=c[41944]|0;k=c[41943]|0;c[i+(k*24|0)>>2]=j;c[j>>2]=l;c[i+(k*24|0)+4>>2]=1;j=c[f>>2]|0;h[i+(k*24|0)+8>>3]=+h[j+32>>3];h[i+(k*24|0)+16>>3]=+h[j+40>>3];c[j+120>>2]=k;c[41943]=k+1}else{g=HA(l)|0;i=g+16|0;b=c[i>>2]|0;d=c[b+120>>2]|0;if((d|0)>-1){j=c[41944]|0;i=c[j+(d*24|0)>>2]|0;g=j+(d*24|0)+4|0;k=c[g>>2]|0;c[g>>2]=k+1;c[i+(k<<2)>>2]=l;k=c[f>>2]|0;i=j+(d*24|0)+8|0;h[i>>3]=+h[k+32>>3]+ +h[i>>3];j=j+(d*24|0)+16|0;m=+h[j>>3];n=+h[k+40>>3];h[j>>3]=m<n?n:m;c[k+120>>2]=d;break}d=sw(c[b+216>>2]<<2)|0;j=c[41944]|0;k=c[41943]|0;b=j+(k*24|0)|0;c[b>>2]=d;c[d>>2]=g;d=j+(k*24|0)+4|0;e=j+(k*24|0)+8|0;if((g|0)==(l|0)){c[d>>2]=1;d=c[i>>2]|0;h[e>>3]=+h[d+32>>3];e=c[f>>2]|0;b=e}else{c[(c[b>>2]|0)+4>>2]=l;c[d>>2]=2;d=c[i>>2]|0;i=c[f>>2]|0;h[e>>3]=+h[d+32>>3]+ +h[i+32>>3];b=c[(+h[d+40>>3]<+h[i+40>>3]?l:g)+16>>2]|0;e=i}h[j+(k*24|0)+16>>3]=+h[b+40>>3];c[d+120>>2]=k;c[e+120>>2]=k;c[41943]=k+1}while(0);l=eo(a,l)|0}return}function ok(a){a=a|0;var b=0.0,d=0.0,e=0,f=0,g=0,i=0.0,j=0.0;qk(a);g=c[41941]|0;e=c[a+16>>2]|0;b=+(S(c[e+252>>2]|0,g+-1|0)|0);f=c[41942]|0;e=e+248|0;a=0;d=0.0;while(1){if((a|0)>=(g|0))break;i=+h[f+(a*40|0)+24>>3]+ +(S(c[e>>2]|0,c[f+(a*40|0)+16>>2]|0)|0);j=b+ +h[f+(a*40|0)+32>>3];a=a+1|0;b=j;d=d<i?i:d}return +(d/b)}function pk(a){a=a|0;var b=0;c[41945]=sw((mn(a)|0)<<2)|0;b=0;while(1){if((b|0)>=(mn(a)|0))break;c[(c[41945]|0)+(b<<2)>>2]=b;b=b+1|0}qk(a);sk(a);tk(a);return}function qk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0.0,k=0,l=0,m=0;c[41941]=0;b=c[41942]|0;if(b|0){e=0;while(1){if((e|0)>=(c[41943]|0))break;d=c[b+(e*40|0)+4>>2]|0;if(d){xN(d);b=c[41942]|0}d=c[b+(e*40|0)+8>>2]|0;if(d){xN(d);b=c[41942]|0}e=e+1|0}xN(b)}c[41942]=sw((c[41943]|0)*40|0)|0;b=0;while(1){d=c[41943]|0;if((b|0)>=(d|0))break;l=sw(d<<2)|0;c[(c[41942]|0)+(b*40|0)+4>>2]=l;l=sw(c[41943]<<2)|0;m=c[41942]|0;c[m+(b*40|0)+8>>2]=l;c[m+(b*40|0)>>2]=b;c[m+(b*40|0)+12>>2]=0;c[m+(b*40|0)+16>>2]=0;m=m+(b*40|0)+24|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;b=b+1|0}e=co(a)|0;while(1){if(!e)break;d=Pm(a,e)|0;while(1){if(!d)break;i=c[d>>2]|0;f=d+-48|0;g=c[41942]|0;b=c[(c[(c[((i&3|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0;while(1){b=b+1|0;if((b|0)>=(c[(c[(c[((i&3|0)==2?d:f)+40>>2]|0)+16>>2]|0)+232>>2]|0))break;i=g+(b*40|0)+16|0;c[i>>2]=(c[i>>2]|0)+1;i=c[d>>2]|0}d=Rm(a,d)|0}e=eo(a,e)|0}k=c[41943]|0;l=c[41944]|0;m=c[41942]|0;d=a+16|0;b=0;while(1){if((b|0)>=(k|0))break;e=l+(b*24|0)|0;f=(c[c[e>>2]>>2]|0)+16|0;g=c[(c[f>>2]|0)+232>>2]|0;if((g|0)>=(c[41941]|0))c[41941]=g+1;i=m+(g*40|0)+24|0;j=+h[i>>3];h[i>>3]=j+(+h[l+(b*24|0)+8>>3]*72.0+(j>0.0?+(c[(c[d>>2]|0)+248>>2]|0):0.0));i=m+(g*40|0)+32|0;j=+h[l+(b*24|0)+16>>3]*72.0;if(+h[i>>3]<j)h[i>>3]=j;c[(c[m+(g*40|0)+4>>2]|0)+(c[m+(g*40|0)+12>>2]<<2)>>2]=e;a=m+((c[(c[f>>2]|0)+232>>2]|0)*40|0)+12|0;c[a>>2]=(c[a>>2]|0)+1;b=b+1|0}return}function rk(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c[41941]|0;l=c[41942]|0;j=0;b=0;a=0;while(1){if((j|0)>=(k|0))break;i=c[l+(j*40|0)+12>>2]|0;d=l+(j*40|0)|0;e=(b|0)==0;a:do if(i)if(!e){if((c[d>>2]|0)>(a|0)){f=l+(j*40|0)+4|0;d=0;while(1){if((d|0)>=(i|0))break a;g=c[(c[f>>2]|0)+(d<<2)>>2]|0;h=c[g+4>>2]|0;e=0;while(1){if((e|0)>=(h|0))break;m=(c[(c[(c[g>>2]|0)+(e<<2)>>2]|0)+16>>2]|0)+232|0;c[m>>2]=(c[m>>2]|0)-b;e=e+1|0}d=d+1|0}}}else b=0;else{if(e)a=c[d>>2]|0;b=b+1|0}while(0);j=j+1|0}return}function sk(a){a=a|0;var b=0;b=c[41945]|0;AK(b,mn(a)|0,4,15);return}function tk(b){b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0,l=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0;k=c[41941]|0;l=c[41942]|0;i=c[41945]|0;j=0;while(1){if((j|0)>=(k|0)){e=0;f=0.0;break}e=c[i+(j<<2)>>2]|0;g=j+1|0;if((c[l+(e*40|0)+12>>2]|0)<2)j=g;else{m=4;break}}if((m|0)==4)if((k|0)>(g|0))f=+h[l+((c[i+(g<<2)>>2]|0)*40|0)+24>>3];else f=0.0;a:do if((j|0)!=(k|0)){AK(c[l+(e*40|0)+4>>2]|0,c[l+(e*40|0)+12>>2]|0,4,16);g=c[41942]|0;d=+h[g+(e*40|0)+24>>3];if(!(!(f<=d*.25)?!(f>=d*3.0*.25):0))f=d*.5;t=c[g+(e*40|0)+12>>2]|0;s=b+16|0;p=0;q=0;d=0.0;i=0;r=0;while(1){if((r|0)>=(i+t|0))break a;do if(!(c[(c[g+(e*40|0)+8>>2]|0)+(r<<2)>>2]|0)){m=c[(c[g+(e*40|0)+4>>2]|0)+(r<<2)>>2]|0;b=m+8|0;n=+h[b>>3]*72.0;o=d>0.0?+(c[(c[s>>2]|0)+248>>2]|0):0.0;j=(q|0)!=0;if(!(j&!(d+n+o<=f))){k=j?p:m;j=j?q:1;d=d+(n+o);break}k=p+4|0;l=m+4|0;j=0;while(1){if((j|0)<(c[k>>2]|0))g=0;else break;while(1){if((g|0)>=(c[l>>2]|0))break;a[(c[(ah(c[(c[p>>2]|0)+(j<<2)>>2]|0,c[(c[m>>2]|0)+(g<<2)>>2]|0,0)|0)+16>>2]|0)+112>>0]=1;g=g+1|0}j=j+1|0}g=c[41942]|0;c[(c[g+(e*40|0)+8>>2]|0)+(r<<2)>>2]=1;k=g+(e*40|0)+12|0;c[k>>2]=(c[k>>2]|0)+-1;k=g+(e*40|0)+16|0;c[k>>2]=(c[k>>2]|0)+1;k=g+(e*40|0)+24|0;h[k>>3]=+h[k>>3]-(+h[b>>3]*72.0+ +(c[(c[s>>2]|0)+248>>2]|0));k=p;j=q}else{k=p;j=q;i=i+1|0}while(0);p=k;q=j;r=r+1|0}}while(0);return}function uk(a,b){a=a|0;b=b|0;a=vk(c[a>>2]|0)|0;b=vk(c[b>>2]|0)|0;return ((b|0)<(a|0)&1)-((b|0)>(a|0)&1)|0}function vk(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;f=a+4|0;d=0;b=0;while(1){if((d|0)>=(c[f>>2]|0))break;e=c[(c[a>>2]|0)+(d<<2)>>2]|0;g=ro(e)|0;e=Pm(g,e)|0;while(1){if(!e)break;e=Rm(g,e)|0;b=b+1|0}d=d+1|0}return b|0}function wk(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0;f=c[41942]|0;e=+h[f+((c[b>>2]|0)*40|0)+24>>3];d=+h[f+((c[a>>2]|0)*40|0)+24>>3];return (e>d&1)-(e<d&1)|0}function xk(a){a=a|0;var b=0;b=co(a)|0;while(1){if(!b)break;c[(c[b+16>>2]|0)+216>>2]=0;b=eo(a,b)|0}return}function yk(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;g=l;l=l+32|0;f=g+16|0;e=g+8|0;d=g+20|0;c[d>>2]=5;a=Im(a,84584)|0;if(a|0?(c[e>>2]=g,c[e+4>>2]=d,(FL(a,80360,e)|0)>=1):0)_l(0,80367,f)|0;c[b+24>>2]=0;c[b+32>>2]=0;l=g;return 0}function zk(b){b=b|0;var d=0,e=0;d=c[42266]|0;if((((d|0)!=0?(e=Jm(b,d)|0,(e|0)!=0):0)?(a[e>>0]|0)!=0:0)?(FA(e)|0)<<24>>24==0:0)b=1;else b=0;return b|0}function Ak(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;Vk(a);b=co(a)|0;while(1){if(!b)break;d=Pm(a,b)|0;while(1){if(!d)break;do if(((c[(c[d+16>>2]|0)+172>>2]|0)==0?(zk(d)|0)==0:0)?(e=d+48|0,f=HA(c[((c[d>>2]&3|0)==3?d:e)+40>>2]|0)|0,g=d+-48|0,h=HA(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)|0,(f|0)!=(h|0)):0){if((c[(c[f+16>>2]|0)+212>>2]|0)==0?(c[(c[h+16>>2]|0)+212>>2]|0)==0:0){i=Sg(f,h)|0;if(!i){ah(f,h,d)|0;break}else{ih(d,i);break}}i=c[d>>2]&3;Bk(a,c[((i|0)==3?d:e)+40>>2]|0,c[((i|0)==2?d:g)+40>>2]|0,d)}while(0);d=Rm(a,d)|0}b=eo(a,b)|0}return}function Bk(b,d,f,g){b=b|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;j=c[g>>2]&3;h=c[(c[((j|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)k=0;else k=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;h=c[(c[((j|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0;i=c[h+212>>2]|0;if(!i)h=0;else h=(c[h+232>>2]|0)-(c[(c[(c[(c[i+16>>2]|0)+264>>2]|0)+16>>2]|0)+232>>2]|0)|0;j=g+16|0;k=k-h+(e[(c[j>>2]|0)+170>>1]|0)|0;b=fh(b)|0;a[(c[b+16>>2]|0)+156>>0]=2;i=HA(d)|0;d=HA(f)|0;f=Mi(b,i,(k|0)>0?0.0:+(0-k|0),(c[(c[j>>2]|0)+156>>2]|0)*10|0)|0;c[(c[(Mi(b,d,+(((k|0)>0?k:0)|0),c[(c[j>>2]|0)+156>>2]|0)|0)+16>>2]|0)+116>>2]=g;c[(c[f+16>>2]|0)+116>>2]=g;return}function Ck(a,d,f,g){a=a|0;d=d|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0;k=c[d>>2]&3;j=(k|0)==3?d:d+48|0;k=(k|0)==2?d:d+-48|0;k=c[(c[(c[((c[(c[(c[j+40>>2]|0)+16>>2]|0)+232>>2]|0)>(c[(c[(c[k+40>>2]|0)+16>>2]|0)+232>>2]|0)?j:k)+40>>2]|0)+16>>2]|0)+232>>2]|0;j=d+16|0;h=c[j>>2]|0;d=h+172|0;if(c[d>>2]|0)va(80456,80478,148,80487);c[d>>2]=f;i=(g|0)==0;d=f;while(1){g=c[d+16>>2]|0;if(!i){f=g+168|0;b[f>>1]=(e[f>>1]|0)+(e[h+168>>1]|0)}f=g+154|0;b[f>>1]=(e[f>>1]|0)+(e[h+154>>1]|0);g=g+156|0;c[g>>2]=(c[g>>2]|0)+(c[h+156>>2]|0);g=d+-48|0;h=c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0;if((c[(c[h+16>>2]|0)+232>>2]|0)==(k|0))break;Dk(a,h);d=c[c[(c[(c[((c[d>>2]&3|0)==2?d:g)+40>>2]|0)+16>>2]|0)+180>>2]>>2]|0;if(!d)break;h=c[j>>2]|0}return}function Dk(a,b){a=a|0;b=b|0;var d=0.0;d=+((c[(c[a+16>>2]|0)+248>>2]|0)/2|0|0);b=c[b+16>>2]|0;a=b+88|0;h[a>>3]=+h[a>>3]+d;b=b+96|0;h[b>>3]=d+ +h[b>>3];return}function Ek(a,b){a=a|0;b=b|0;var d=0,e=0;if(((((a|0)!=0&(b|0)!=0?(e=c[a>>2]&3,d=c[b>>2]&3,(c[((e|0)==3?a:a+48|0)+40>>2]|0)==(c[((d|0)==3?b:b+48|0)+40>>2]|0)):0)?(c[((e|0)==2?a:a+-48|0)+40>>2]|0)==(c[((d|0)==2?b:b+-48|0)+40>>2]|0):0)?(c[(c[a+16>>2]|0)+96>>2]|0)==(c[(c[b+16>>2]|0)+96>>2]|0):0)?(hj(a,b)|0)!=0:0)a=1;else a=0;return a|0}\nfunction vy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0.0,K=0.0,L=0.0;I=l;l=l+208|0;t=I+192|0;s=I+176|0;F=I+48|0;w=I+16|0;x=I;B=I+160|0;C=I+144|0;u=I+128|0;v=I+32|0;i=e&2130706432;D=(e&8|0)==0?((i|0)==0?4:i):8;if((D|0)==436207616)wy(a,b,d,f);else{H=sw((d<<6)+64|0)|0;E=d+-1|0;q=w+8|0;r=x+8|0;A=12.0;e=0;while(1){if((e|0)>=(d|0))break;g=b+(e<<4)|0;c[w>>2]=c[g>>2];c[w+4>>2]=c[g+4>>2];c[w+8>>2]=c[g+8>>2];c[w+12>>2]=c[g+12>>2];g=e+1|0;if((e|0)<(E|0)){p=b+(g<<4)|0;c[x>>2]=c[p>>2];c[x+4>>2]=c[p+4>>2];c[x+8>>2]=c[p+8>>2];c[x+12>>2]=c[p+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}y=+h[x>>3]-+h[w>>3];z=+h[r>>3]-+h[q>>3];z=+G(+(y*y+z*z))/3.0;A=A<z?A:z;e=g}n=(i|16777216|0)==83886080;o=(D|0)==4;j=(i|0)==16777216;i=0;e=0;while(1){g=H+(i<<4)|0;k=H+(i+1<<4)|0;p=H+(i+2<<4)|0;if((e|0)>=(d|0))break;m=b+(e<<4)|0;c[w>>2]=c[m>>2];c[w+4>>2]=c[m+4>>2];c[w+8>>2]=c[m+8>>2];c[w+12>>2]=c[m+12>>2];m=e+1|0;if((e|0)<(E|0)){e=b+(m<<4)|0;c[x>>2]=c[e>>2];c[x+4>>2]=c[e+4>>2];c[x+8>>2]=c[e+8>>2];c[x+12>>2]=c[e+12>>2]}else{c[x>>2]=c[b>>2];c[x+4>>2]=c[b+4>>2];c[x+8>>2]=c[b+8>>2];c[x+12>>2]=c[b+12>>2]}z=+h[x>>3]-+h[w>>3];y=+h[r>>3]-+h[q>>3];y=A/+G(+(z*z+y*y));y=n?y/3.0:j?y*.5:y;z=y*.5;if(o){c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];xy(B,z,s,t);c[g>>2]=c[B>>2];c[g+4>>2]=c[B+4>>2];c[g+8>>2]=c[B+8>>2];c[g+12>>2]=c[B+12>>2]}else{c[g>>2]=c[w>>2];c[g+4>>2]=c[w+4>>2];c[g+8>>2]=c[w+8>>2];c[g+12>>2]=c[w+12>>2]};c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];xy(C,y,s,t);c[k>>2]=c[C>>2];c[k+4>>2]=c[C+4>>2];c[k+8>>2]=c[C+8>>2];c[k+12>>2]=c[C+12>>2];e=i+3|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];xy(u,1.0-y,s,t);c[p>>2]=c[u>>2];c[p+4>>2]=c[u+4>>2];c[p+8>>2]=c[u+8>>2];c[p+12>>2]=c[u+12>>2];if(!o){i=e;e=m;continue}e=H+(e<<4)|0;c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];c[t>>2]=c[x>>2];c[t+4>>2]=c[x+4>>2];c[t+8>>2]=c[x+8>>2];c[t+12>>2]=c[x+12>>2];xy(v,1.0-z,s,t);c[e>>2]=c[v>>2];c[e+4>>2]=c[v+4>>2];c[e+8>>2]=c[v+8>>2];c[e+12>>2]=c[v+12>>2];i=i+4|0;e=m}c[g>>2]=c[H>>2];c[g+4>>2]=c[H+4>>2];c[g+8>>2]=c[H+8>>2];c[g+12>>2]=c[H+12>>2];v=H+16|0;c[k>>2]=c[v>>2];c[k+4>>2]=c[v+4>>2];c[k+8>>2]=c[v+8>>2];c[k+12>>2]=c[v+12>>2];x=H+32|0;c[p>>2]=c[x>>2];c[p+4>>2]=c[x+4>>2];c[p+8>>2]=c[x+8>>2];c[p+12>>2]=c[x+12>>2];g=d+4|0;t=d+3|0;i=d<<4;u=d+1|0;j=g<<4;k=(d|0)==4;w=d+2|0;m=d+12|0;n=w<<4;o=d+5|0;p=u<<4;q=t<<4;r=m<<4;s=o<<4;e=D&2147483647;a:do if((e|0)<201326592){if((e|0)>=83886080){if((e|0)<134217728){if((e|0)<100663296){switch(e|0){case 83886080:break;default:break a}if(k){d=sw(192)|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];p=d+16|0;t=b+16|0;c[p>>2]=c[t>>2];c[p+4>>2]=c[t+4>>2];c[p+8>>2]=c[t+8>>2];c[p+12>>2]=c[t+12>>2];p=H+48|0;L=+h[p>>3];t=H+64|0;L=L+(+h[t>>3]-L);o=d+32|0;h[o>>3]=L;q=H+56|0;z=+h[q>>3];r=H+72|0;z=z+(+h[r>>3]-z);C=d+40|0;h[C>>3]=z;A=L+(+h[p>>3]-+h[x>>3]);u=d+48|0;h[u>>3]=A;K=z+(+h[q>>3]-+h[H+40>>3]);x=d+56|0;h[x>>3]=K;y=A+(+h[t>>3]-+h[p>>3]);p=d+64|0;h[p>>3]=y;J=K+(+h[r>>3]-+h[q>>3]);q=d+72|0;h[q>>3]=J;r=d+80|0;h[r>>3]=y+(L-A);h[d+88>>3]=J+(z-K);t=H+96|0;K=+h[t>>3];v=H+80|0;K=K+(+h[v>>3]-K);E=d+144|0;h[E>>3]=K;w=H+104|0;z=+h[w>>3];s=H+88|0;z=z+(+h[s>>3]-z);h[d+152>>3]=z;J=K+(+h[t>>3]-+h[H+112>>3]);B=d+128|0;h[B>>3]=J;A=z+(+h[w>>3]-+h[H+120>>3]);D=d+136|0;h[D>>3]=A;L=J+(+h[v>>3]-+h[t>>3]);t=d+112|0;h[t>>3]=L;y=A+(+h[s>>3]-+h[w>>3]);w=d+120|0;h[w>>3]=y;s=d+96|0;h[s>>3]=L+(K-J);v=d+104|0;h[v>>3]=y+(z-A);n=d+160|0;m=b+32|0;c[n>>2]=c[m>>2];c[n+4>>2]=c[m+4>>2];c[n+8>>2]=c[m+8>>2];c[n+12>>2]=c[m+12>>2];n=d+176|0;b=b+48|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];ED(a,d,12,f);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2];A=+h[o>>3];z=+h[u>>3];A=A-(z-A);u=F+16|0;h[u>>3]=A;y=+h[C>>3];J=+h[x>>3];y=y-(J-y);x=F+24|0;h[x>>3]=y;C=F+32|0;h[C>>3]=A+(+h[p>>3]-z);b=F+40|0;h[b>>3]=y+(+h[q>>3]-J);f=F+48|0;c[f>>2]=c[r>>2];c[f+4>>2]=c[r+4>>2];c[f+8>>2]=c[r+8>>2];c[f+12>>2]=c[r+12>>2];HD(a,F,4);c[F>>2]=c[s>>2];c[F+4>>2]=c[s+4>>2];c[F+8>>2]=c[s+8>>2];c[F+12>>2]=c[s+12>>2];J=+h[s>>3];y=+h[t>>3];J=J-(y-J);h[u>>3]=J;z=+h[v>>3];A=+h[w>>3];z=z-(A-z);h[x>>3]=z;h[C>>3]=J+(+h[B>>3]-y);h[b>>3]=z+(+h[D>>3]-A);c[f>>2]=c[E>>2];c[f+4>>2]=c[E+4>>2];c[f+8>>2]=c[E+8>>2];c[f+12>>2]=c[E+12>>2];HD(a,F,4);xN(d);break}else va(90432,90443,737,90452)}if((e|0)<117440512){switch(e|0){case 100663296:break;default:break a}d=sw(s)|0;C=b+16|0;L=+h[C>>3];J=+h[b>>3]-L;J=J*.125+(L+J*.5);h[d>>3]=J;D=b+40|0;L=+h[D>>3];E=b+24|0;v=H+48|0;w=H+56|0;B=H+72|0;L=L+(+h[E>>3]-L)*.5+(+h[w>>3]-+h[B>>3])*3.0*.5;h[d+8>>3]=L;A=+h[C>>3];K=+h[b>>3]-A;K=A+K*.5-K*.25;h[d+16>>3]=K;h[d+24>>3]=L;h[d+32>>3]=K;A=+h[D>>3];h[d+40>>3]=A+(+h[E>>3]-A)*.5;K=K+(+h[x>>3]-+h[v>>3])*.5;h[d+48>>3]=K;A=+h[D>>3];h[d+56>>3]=A+(+h[E>>3]-A)*.5;h[d+64>>3]=K;K=+h[D>>3];K=K+(+h[E>>3]-K)*.5+(+h[w>>3]-+h[B>>3]);h[d+72>>3]=K;h[d+80>>3]=J;h[d+88>>3]=K;h[d+96>>3]=J;K=K-(+h[w>>3]-+h[B>>3])*.25;h[d+104>>3]=K;h[d+112>>3]=J+(+h[x>>3]-+h[v>>3]);h[d+120>>3]=K+(+h[w>>3]-+h[B>>3])*.5;h[d+128>>3]=+h[d>>3];h[d+136>>3]=L+(+h[w>>3]-+h[B>>3])*.25;ED(a,d,o,f);h[F>>3]=+h[C>>3];L=+h[D>>3];h[F+8>>3]=L+(+h[E>>3]-L)*.5;h[F+16>>3]=+h[b>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}else{switch(e|0){case 117440512:break;default:break a}d=sw(p)|0;h[d>>3]=+h[v>>3];E=H+56|0;F=H+72|0;h[d+8>>3]=+h[H+24>>3]-(+h[E>>3]-+h[F>>3])*.5;h[d+16>>3]=+h[H+48>>3];L=+h[E>>3];h[d+24>>3]=L-(L-+h[F>>3])*.5;h[d+32>>3]=+h[b+32>>3];D=b+40|0;h[d+40>>3]=+h[D>>3]+(+h[E>>3]-+h[F>>3])*.5;h[d+48>>3]=+h[v>>3];h[d+56>>3]=+h[D>>3]+(+h[E>>3]-+h[F>>3])*.5;L=+h[b+8>>3];h[d+72>>3]=L-(L-+h[b+56>>3])*.5;h[d+64>>3]=+h[b>>3];ED(a,d,u,f);xN(d);break}}if((e|0)<167772160)if((e|0)<150994944){switch(e|0){case 134217728:break;default:break a}d=sw(j)|0;C=b+16|0;A=+h[C>>3];B=H+48|0;A=A+(+h[b>>3]-A)*.5+(+h[x>>3]-+h[B>>3])*.25;h[d>>3]=A;D=b+40|0;L=+h[D>>3];E=b+24|0;L=L+(+h[E>>3]-L)*.5;h[d+8>>3]=L;h[d+16>>3]=A;v=H+56|0;w=H+72|0;J=L+(+h[v>>3]-+h[w>>3])*.5;h[d+24>>3]=J;A=A+(+h[x>>3]-+h[B>>3])*.5;h[d+32>>3]=A;h[d+40>>3]=J;h[d+48>>3]=A;A=J+(+h[v>>3]-+h[w>>3])*.5;h[d+56>>3]=A;K=+h[C>>3];K=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[B>>3])*3.0*.25;h[d+64>>3]=K;h[d+72>>3]=A;h[d+80>>3]=K;h[d+88>>3]=J;K=+h[C>>3];K=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[B>>3])*.25;h[d+96>>3]=K;h[d+104>>3]=J;h[d+112>>3]=K;h[d+120>>3]=L;ED(a,d,g,f);h[F>>3]=+h[C>>3];L=+h[D>>3];h[F+8>>3]=L+(+h[E>>3]-L)*.5;h[F+16>>3]=+h[b>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}else{switch(e|0){case 150994944:break;default:break a}d=sw(n)|0;C=b+16|0;J=+h[C>>3];B=H+48|0;J=J+(+h[b>>3]-J)*.5+(+h[x>>3]-+h[B>>3])*3.0*.25;h[d>>3]=J;D=b+40|0;L=+h[D>>3];E=b+24|0;L=L+(+h[E>>3]-L)*.5;h[d+8>>3]=L;h[d+16>>3]=J;u=H+56|0;v=H+72|0;J=L+(+h[u>>3]-+h[v>>3])*.25;h[d+24>>3]=J;K=+h[C>>3];h[d+32>>3]=K+(+h[b>>3]-K)*.5+(+h[x>>3]-+h[B>>3])*.25;K=J+(+h[u>>3]-+h[v>>3])*.5;h[d+40>>3]=K;A=+h[C>>3];h[d+48>>3]=A+(+h[b>>3]-A)*.5-(+h[x>>3]-+h[B>>3])*.25;h[d+56>>3]=K;K=+h[C>>3];K=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[B>>3])*3.0*.25;h[d+64>>3]=K;h[d+72>>3]=J;h[d+80>>3]=K;h[d+88>>3]=L;ED(a,d,w,f);h[F>>3]=+h[C>>3];L=+h[D>>3];h[F+8>>3]=L+(+h[E>>3]-L)*.5;h[F+16>>3]=+h[b>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}else if((e|0)<184549376){switch(e|0){case 167772160:break;default:break a}d=sw(p)|0;C=b+16|0;J=+h[C>>3];v=H+48|0;J=J+(+h[b>>3]-J)*.5+(+h[x>>3]-+h[v>>3]);h[d>>3]=J;D=b+40|0;L=+h[D>>3];E=b+24|0;w=H+56|0;B=H+72|0;L=L+(+h[E>>3]-L)*.5+(+h[w>>3]-+h[B>>3])*.25;h[d+8>>3]=L;J=J-(+h[x>>3]-+h[v>>3]);h[d+16>>3]=J;h[d+24>>3]=L+(+h[w>>3]-+h[B>>3]);h[d+32>>3]=J;J=L+(+h[w>>3]-+h[B>>3])*.5;h[d+40>>3]=J;A=+h[C>>3];K=+h[b>>3]-A;K=A+K*.5-K*.25;h[d+48>>3]=K;h[d+56>>3]=J;h[d+64>>3]=K;h[d+72>>3]=L;ED(a,d,u,f);h[F>>3]=+h[C>>3];L=+h[D>>3];h[F+8>>3]=L+(+h[E>>3]-L)*.5;h[F+16>>3]=+h[b>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}else{switch(e|0){case 184549376:break;default:break a}d=sw(j)|0;B=b+16|0;J=+h[B>>3];K=+h[b>>3]-J;u=H+48|0;K=K*.125+(J+K*.5)+(+h[x>>3]-+h[u>>3])*.5;h[d>>3]=K;v=b+40|0;J=+h[v>>3];w=b+24|0;E=H+56|0;C=H+72|0;J=J+(+h[w>>3]-J)*.5+(+h[E>>3]-+h[C>>3])*.25;h[d+8>>3]=J;A=+h[B>>3];L=+h[b>>3]-A;L=A+L*.5-L*.125;h[d+16>>3]=L;h[d+24>>3]=J;h[d+32>>3]=L;J=J+(+h[E>>3]-+h[C>>3])*.5;h[d+40>>3]=J;L=L-(+h[x>>3]-+h[u>>3])*.5;h[d+48>>3]=L;h[d+56>>3]=J;D=d+64|0;h[D>>3]=L;L=+h[v>>3];L=L+(+h[w>>3]-L)*.5-(+h[E>>3]-+h[C>>3])*.25;h[d+72>>3]=L;J=K-(+h[x>>3]-+h[u>>3])*.5;h[d+80>>3]=J;h[d+88>>3]=L;h[d+96>>3]=J;L=L-(+h[E>>3]-+h[C>>3])*.5;h[d+104>>3]=L;x=d+112|0;h[x>>3]=K;h[d+120>>3]=L;ED(a,d,g,f);h[F>>3]=+h[B>>3];L=+h[v>>3];B=F+8|0;h[B>>3]=L+(+h[w>>3]-L)*.5;C=F+16|0;h[C>>3]=+h[D>>3];D=b+8|0;E=b+56|0;f=F+24|0;h[f>>3]=L+(+h[D>>3]-+h[E>>3])*.5;HD(a,F,2);h[F>>3]=+h[x>>3];L=+h[v>>3];h[B>>3]=L+(+h[w>>3]-L)*.5;h[C>>3]=+h[b>>3];h[f>>3]=L+(+h[D>>3]-+h[E>>3])*.5;HD(a,F,2);xN(d);break}}if((e|0)<33554432){if((e|0)<8){switch(e|0){case 4:break;default:break a}i=tw((d*96|0)+32|0)|0;e=0;g=0;while(1){j=g|1;k=i+(g<<4)|0;m=i+(j<<4)|0;if((e|0)>=(d|0))break;b=e<<2;E=H+(b<<4)|0;c[k>>2]=c[E>>2];c[k+4>>2]=c[E+4>>2];c[k+8>>2]=c[E+8>>2];c[k+12>>2]=c[E+12>>2];E=H+((b|1)<<4)|0;c[m>>2]=c[E>>2];c[m+4>>2]=c[E+4>>2];c[m+8>>2]=c[E+8>>2];c[m+12>>2]=c[E+12>>2];F=i+(g+2<<4)|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];F=i+(g+3<<4)|0;E=H+((b|2)<<4)|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];F=i+(g+4<<4)|0;c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];F=i+(g+5<<4)|0;b=H+((b|3)<<4)|0;c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];e=e+1|0;g=g+6|0}c[k>>2]=c[i>>2];c[k+4>>2]=c[i+4>>2];c[k+8>>2]=c[i+8>>2];c[k+12>>2]=c[i+12>>2];d=i+16|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];GD(a,d,j,0,0,f&255);xN(i);break}if((e|0)<16777216){switch(e|0){case 8:break;default:break a}ED(a,b,d,f);g=F+16|0;e=0;while(1){if((e|0)>=(d|0))break a;f=e*3|0;b=H+(f+2<<4)|0;c[F>>2]=c[b>>2];c[F+4>>2]=c[b+4>>2];c[F+8>>2]=c[b+8>>2];c[F+12>>2]=c[b+12>>2];f=H+(f+4<<4)|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];HD(a,F,2);e=e+1|0}}switch(e|0){case 16777216:break;default:break a}g=sw(p)|0;e=1;while(1){if((e|0)>=(d|0))break;D=g+(e<<4)|0;C=b+(e<<4)|0;c[D>>2]=c[C>>2];c[D+4>>2]=c[C+4>>2];c[D+8>>2]=c[C+8>>2];c[D+12>>2]=c[C+12>>2];e=e+1|0}b=E*3|0;E=H+(b+4<<4)|0;c[g>>2]=c[E>>2];c[g+4>>2]=c[E+4>>2];c[g+8>>2]=c[E+8>>2];c[g+12>>2]=c[E+12>>2];D=g+(d<<4)|0;d=H+(b+2<<4)|0;c[D>>2]=c[d>>2];c[D+4>>2]=c[d+4>>2];c[D+8>>2]=c[d+8>>2];c[D+12>>2]=c[d+12>>2];ED(a,g,u,f);xN(g);c[F>>2]=c[d>>2];c[F+4>>2]=c[d+4>>2];c[F+8>>2]=c[d+8>>2];c[F+12>>2]=c[d+12>>2];f=F+16|0;c[f>>2]=c[E>>2];c[f+4>>2]=c[E+4>>2];c[f+8>>2]=c[E+8>>2];c[f+12>>2]=c[E+12>>2];b=b+3|0;d=F+32|0;h[d>>3]=+h[f>>3]+(+h[F>>3]-+h[H+(b<<4)>>3]);h[F+40>>3]=+h[F+24>>3]+(+h[F+8>>3]-+h[H+(b<<4)+8>>3]);HD(a,f,2);c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];HD(a,F,2);break}else{if((e|0)<50331648){switch(e|0){case 33554432:break;default:break a}g=sw(n)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];i=g+16|0;c[i>>2]=c[x>>2];c[i+4>>2]=c[x+4>>2];c[i+8>>2]=c[x+8>>2];c[i+12>>2]=c[x+12>>2];i=H+48|0;E=H+64|0;h[g+32>>3]=+h[x>>3]+(+h[i>>3]-+h[E>>3])/3.0;d=H+56|0;e=H+72|0;h[g+40>>3]=+h[H+40>>3]+(+h[d>>3]-+h[e>>3])/3.0;L=+h[i>>3];h[g+48>>3]=L+(L-+h[E>>3])/3.0;L=+h[d>>3];h[g+56>>3]=L+(L-+h[e>>3])/3.0;e=4;while(1){if((e|0)>=(w|0))break;d=g+(e<<4)|0;E=b+(e+-2<<4)|0;c[d>>2]=c[E>>2];c[d+4>>2]=c[E+4>>2];c[d+8>>2]=c[E+8>>2];c[d+12>>2]=c[E+12>>2];e=e+1|0}ED(a,g,w,f);xN(g);c[F>>2]=c[i>>2];c[F+4>>2]=c[i+4>>2];c[F+8>>2]=c[i+8>>2];c[F+12>>2]=c[i+12>>2];f=F+16|0;c[f>>2]=c[x>>2];c[f+4>>2]=c[x+4>>2];c[f+8>>2]=c[x+8>>2];c[f+12>>2]=c[x+12>>2];HD(a,F,2);break}if((e|0)>=67108864){switch(e|0){case 67108864:break;default:break a}if(k){D=sw(n)|0;c[D>>2]=c[b>>2];c[D+4>>2]=c[b+4>>2];c[D+8>>2]=c[b+8>>2];c[D+12>>2]=c[b+12>>2];d=D+16|0;c[d>>2]=c[x>>2];c[d+4>>2]=c[x+4>>2];c[d+8>>2]=c[x+8>>2];c[d+12>>2]=c[x+12>>2];d=D+32|0;E=H+64|0;c[d>>2]=c[E>>2];c[d+4>>2]=c[E+4>>2];c[d+8>>2]=c[E+8>>2];c[d+12>>2]=c[E+12>>2];d=D+48|0;b=b+32|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];b=D+64|0;d=H+128|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=D+80|0;C=H+160|0;c[b>>2]=c[C>>2];c[b+4>>2]=c[C+4>>2];c[b+8>>2]=c[C+8>>2];c[b+12>>2]=c[C+12>>2];ED(a,D,w,f);xN(D);h[F>>3]=+h[v>>3]+(+h[H+176>>3]-+h[H>>3]);h[F+8>>3]=+h[H+24>>3]+(+h[H+184>>3]-+h[H+8>>3]);f=F+16|0;c[f>>2]=c[E>>2];c[f+4>>2]=c[E+4>>2];c[f+8>>2]=c[E+8>>2];c[f+12>>2]=c[E+12>>2];HD(a,F,2);c[f>>2]=c[d>>2];c[f+4>>2]=c[d+4>>2];c[f+8>>2]=c[d+8>>2];c[f+12>>2]=c[d+12>>2];HD(a,F,2);c[f>>2]=c[H>>2];c[f+4>>2]=c[H+4>>2];c[f+8>>2]=c[H+8>>2];c[f+12>>2]=c[H+12>>2];HD(a,F,2);break}else va(90432,90443,714,90452)}switch(e|0){case 50331648:break;default:break a}g=sw(q)|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];L=+h[b>>3];h[g+16>>3]=L-(L-+h[v>>3])*.25;e=H+56|0;L=+h[b+8>>3]+(+h[e>>3]-+h[H+72>>3])/3.0;h[g+24>>3]=L;K=+h[b>>3];h[g+32>>3]=K-(K-+h[v>>3])*2.0;h[g+40>>3]=L;L=+h[b>>3];h[g+48>>3]=L-(L-+h[v>>3])*2.25;h[g+56>>3]=+h[e>>3];h[g+64>>3]=+h[H+48>>3];h[g+72>>3]=+h[e>>3];e=4;while(1){if((e|0)>=(t|0))break;d=g+(e<<4)|0;F=b+(e+-3<<4)|0;c[d>>2]=c[F>>2];c[d+4>>2]=c[F+4>>2];c[d+8>>2]=c[F+8>>2];c[d+12>>2]=c[F+12>>2];e=e+1|0}ED(a,g,t,f);xN(g);break}}else if((e|0)<318767104){if((e|0)<251658240){if((e|0)<218103808){switch(e|0){case 201326592:break;default:break a}E=sw(i)|0;u=b+16|0;L=+h[u>>3];h[E>>3]=L;C=b+40|0;K=+h[C>>3];D=b+24|0;B=H+48|0;v=H+56|0;w=H+72|0;K=K+(+h[D>>3]-K)*.5+(+h[v>>3]-+h[w>>3])*.125;h[E+8>>3]=K;J=L+(+h[x>>3]-+h[B>>3])*2.0;h[E+16>>3]=J;h[E+24>>3]=K;h[E+32>>3]=J;K=K+(+h[v>>3]-+h[w>>3])*.5;h[E+40>>3]=K;h[E+48>>3]=L;h[E+56>>3]=K;ED(a,E,d,f);xN(E);E=sw(i)|0;K=+h[u>>3]+(+h[x>>3]-+h[B>>3]);h[E>>3]=K;L=+h[C>>3];L=L+(+h[D>>3]-L)*.5-(+h[v>>3]-+h[w>>3])*5.0*.125;h[E+8>>3]=L;J=K+(+h[x>>3]-+h[B>>3]);B=E+16|0;h[B>>3]=J;h[E+24>>3]=L;h[E+32>>3]=J;L=L+(+h[v>>3]-+h[w>>3])*.5;h[E+40>>3]=L;h[E+48>>3]=K;h[E+56>>3]=L;ED(a,E,d,f);h[F>>3]=+h[B>>3];L=+h[C>>3];h[F+8>>3]=L+(+h[D>>3]-L)*.5;h[F+16>>3]=+h[b>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(E);break}if((e|0)<234881024){switch(e|0){case 218103808:break;default:break a}E=sw(i)|0;L=+h[b>>3];h[E>>3]=L;B=b+40|0;K=+h[B>>3];C=b+24|0;w=H+56|0;D=H+72|0;K=K+(+h[C>>3]-K)*.5+(+h[w>>3]-+h[D>>3])*.125;h[E+8>>3]=K;h[E+16>>3]=L;J=K+(+h[w>>3]-+h[D>>3])*.5;h[E+24>>3]=J;L=L-(+h[w>>3]-+h[D>>3])*2.0;h[E+32>>3]=L;h[E+40>>3]=J;h[E+48>>3]=L;h[E+56>>3]=K;ED(a,E,d,f);xN(E);E=sw(i)|0;K=+h[b>>3]-(+h[x>>3]-+h[H+48>>3]);h[E>>3]=K;L=+h[B>>3];L=L+(+h[C>>3]-L)*.5-(+h[w>>3]-+h[D>>3])*5.0*.125;h[E+8>>3]=L;h[E+16>>3]=K;J=L+(+h[w>>3]-+h[D>>3])*.5;h[E+24>>3]=J;K=K-(+h[w>>3]-+h[D>>3]);h[E+32>>3]=K;h[E+40>>3]=J;D=E+48|0;h[D>>3]=K;h[E+56>>3]=L;ED(a,E,d,f);h[F>>3]=+h[b+16>>3];L=+h[B>>3];h[F+8>>3]=L+(+h[C>>3]-L)*.5;h[F+16>>3]=+h[D>>3];h[F+24>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(E);break}else{switch(e|0){case 234881024:break;default:break a}E=sw(i)|0;t=b+16|0;K=+h[t>>3];u=H+48|0;K=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[u>>3])*9.0*.125;h[E>>3]=K;v=b+40|0;L=+h[v>>3];w=b+24|0;D=H+56|0;C=H+72|0;L=L+(+h[w>>3]-L)*.5+(+h[D>>3]-+h[C>>3])*.125;h[E+8>>3]=L;J=K+(+h[x>>3]-+h[u>>3]);h[E+16>>3]=J;h[E+24>>3]=L;h[E+32>>3]=J;L=L+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=L;h[E+48>>3]=K;h[E+56>>3]=L;ED(a,E,d,f);xN(E);E=sw(i)|0;L=+h[t>>3];L=L+(+h[b>>3]-L)*.5-(+h[x>>3]-+h[u>>3])*9.0*.125;h[E>>3]=L;K=+h[v>>3];K=K+(+h[w>>3]-K)*.5-(+h[D>>3]-+h[C>>3])*5.0*.125;h[E+8>>3]=K;J=L+(+h[x>>3]-+h[u>>3]);h[E+16>>3]=J;h[E+24>>3]=K;h[E+32>>3]=J;K=K+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=K;h[E+48>>3]=L;h[E+56>>3]=K;ED(a,E,d,f);xN(E);E=sw(i)|0;K=+h[t>>3];K=K+(+h[b>>3]-K)*.5+(+h[x>>3]-+h[u>>3])*.125;h[E>>3]=K;L=+h[v>>3];L=L+(+h[w>>3]-L)*.5-(+h[D>>3]-+h[C>>3])*5.0*.125;h[E+8>>3]=L;J=K+(+h[x>>3]-+h[u>>3]);h[E+16>>3]=J;h[E+24>>3]=L;h[E+32>>3]=J;L=L+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=L;h[E+48>>3]=K;h[E+56>>3]=L;ED(a,E,d,f);xN(E);E=sw(i)|0;L=+h[t>>3];L=L+(+h[b>>3]-L)*.5+(+h[x>>3]-+h[u>>3])*.125;h[E>>3]=L;K=+h[v>>3];K=K+(+h[w>>3]-K)*.5+(+h[D>>3]-+h[C>>3])*.125;h[E+8>>3]=K;J=L+(+h[x>>3]-+h[u>>3]);B=E+16|0;h[B>>3]=J;h[E+24>>3]=K;h[E+32>>3]=J;K=K+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=K;h[E+48>>3]=L;h[E+56>>3]=K;ED(a,E,d,f);h[F>>3]=+h[B>>3];K=+h[v>>3];B=F+8|0;h[B>>3]=K+(+h[w>>3]-K)*.5;C=F+16|0;h[C>>3]=+h[b>>3];D=b+8|0;d=b+56|0;f=F+24|0;h[f>>3]=K+(+h[D>>3]-+h[d>>3])*.5;HD(a,F,2);K=+h[t>>3];h[F>>3]=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[u>>3])*9.0*.125;L=+h[v>>3];h[B>>3]=L+(+h[w>>3]-L)*.5;h[C>>3]=K;h[f>>3]=L+(+h[D>>3]-+h[d>>3])*.5;HD(a,F,2);xN(E);break}}if((e|0)<285212672)if((e|0)<268435456){switch(e|0){case 251658240:break;default:break a}E=sw(i)|0;u=b+16|0;L=+h[u>>3];B=H+48|0;L=L+(+h[b>>3]-L)*.5-(+h[x>>3]-+h[B>>3]);h[E>>3]=L;v=b+40|0;K=+h[v>>3];w=b+24|0;D=H+56|0;C=H+72|0;K=K+(+h[w>>3]-K)*.5+(+h[D>>3]-+h[C>>3])*.125;h[E+8>>3]=K;J=L+(+h[x>>3]-+h[B>>3])*2.0;h[E+16>>3]=J;h[E+24>>3]=K;h[E+32>>3]=J;K=K+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=K;h[E+48>>3]=L;h[E+56>>3]=K;ED(a,E,d,f);xN(E);E=sw(i)|0;K=+h[u>>3];K=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[B>>3]);h[E>>3]=K;L=+h[v>>3];L=L+(+h[w>>3]-L)*.5-(+h[D>>3]-+h[C>>3])*5.0*.125;h[E+8>>3]=L;J=K+(+h[x>>3]-+h[B>>3])*2.0;B=E+16|0;h[B>>3]=J;h[E+24>>3]=L;h[E+32>>3]=J;L=L+(+h[D>>3]-+h[C>>3])*.5;h[E+40>>3]=L;h[E+48>>3]=K;h[E+56>>3]=L;ED(a,E,d,f);h[F>>3]=+h[B>>3];L=+h[v>>3];B=F+8|0;h[B>>3]=L+(+h[w>>3]-L)*.5;C=F+16|0;h[C>>3]=+h[b>>3];D=b+8|0;d=b+56|0;f=F+24|0;h[f>>3]=L+(+h[D>>3]-+h[d>>3])*.5;HD(a,F,2);h[F>>3]=+h[u>>3];L=+h[v>>3];h[B>>3]=L+(+h[w>>3]-L)*.5;h[C>>3]=+h[E>>3];h[f>>3]=L+(+h[D>>3]-+h[d>>3])*.5;HD(a,F,2);xN(E);break}else{switch(e|0){case 268435456:break;default:break a}E=sw(i)|0;h[E>>3]=+h[b>>3];u=H+48|0;B=H+56|0;C=H+72|0;h[E+8>>3]=+h[H+24>>3]-(+h[B>>3]-+h[C>>3])*.5;h[E+16>>3]=+h[u>>3];L=+h[B>>3];h[E+24>>3]=L-(L-+h[C>>3])*.5;h[E+32>>3]=+h[b+32>>3];w=b+40|0;h[E+40>>3]=+h[w>>3]+(+h[B>>3]-+h[C>>3])*.5;h[E+48>>3]=+h[b>>3];h[E+56>>3]=+h[w>>3]+(+h[B>>3]-+h[C>>3])*.5;ED(a,E,d,f);v=b+16|0;L=(+h[x>>3]-+h[u>>3])*.25;K=+h[v>>3]+L;h[F>>3]=K;A=+h[w>>3];t=b+24|0;J=+h[B>>3]-+h[C>>3];A=A+(+h[t>>3]-A)*.5+J*.125;D=F+8|0;h[D>>3]=A;d=F+16|0;h[d>>3]=K+L;f=F+24|0;h[f>>3]=A-J*.25;HD(a,F,2);J=(+h[x>>3]-+h[u>>3])*.25;A=+h[v>>3]+J;h[F>>3]=A;L=+h[w>>3];K=+h[B>>3]-+h[C>>3];L=L+(+h[t>>3]-L)*.5-K*.125;h[D>>3]=L;h[d>>3]=A+J;h[f>>3]=L+K*.25;HD(a,F,2);K=(+h[x>>3]-+h[u>>3])*.25;h[F>>3]=+h[v>>3]+K;L=+h[w>>3]+(+h[B>>3]-+h[C>>3])*3.0*.25;h[D>>3]=L;h[d>>3]=+h[b>>3]-K;h[f>>3]=L;HD(a,F,2);xN(E);break}else if((e|0)<301989888){switch(e|0){case 285212672:break;default:break a}B=sw(i)|0;u=b+16|0;z=+h[u>>3];C=H+48|0;z=z+(+h[b>>3]-z)*.5+(+h[x>>3]-+h[C>>3])*.5;h[B>>3]=z;v=b+40|0;A=+h[v>>3];w=b+24|0;A=A+(+h[w>>3]-A)*.5+(+h[x>>3]-+h[C>>3])*.5;h[B+8>>3]=A;h[B+16>>3]=z;z=+h[v>>3];L=(+h[x>>3]-+h[C>>3])*.5;z=z+(+h[w>>3]-z)*.5-L;h[B+24>>3]=z;J=+h[u>>3];L=J+(+h[b>>3]-J)*.5-L;h[B+32>>3]=L;h[B+40>>3]=z;h[B+48>>3]=L;h[B+56>>3]=A;ED(a,B,d,f);xN(B);A=+h[u>>3];A=A+(+h[b>>3]-A)*.5;L=(+h[x>>3]-+h[C>>3])*3.0*.25;z=A+L;h[F>>3]=z;J=+h[v>>3];J=J+(+h[w>>3]-J)*.5;K=J+L;B=F+8|0;h[B>>3]=K;D=F+16|0;h[D>>3]=z;J=J-L;f=F+24|0;h[f>>3]=J;L=A-L;h[F+32>>3]=L;h[F+40>>3]=J;h[F+48>>3]=L;h[F+56>>3]=K;E=F+64|0;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];HD(a,F,5);K=+h[u>>3];L=+h[b>>3];h[F>>3]=K+(L-K)*.5+(+h[x>>3]-+h[C>>3])*3.0*.25;K=+h[v>>3];h[B>>3]=K+(+h[w>>3]-K)*.5;h[D>>3]=L;E=b+8|0;d=b+56|0;h[f>>3]=K+(+h[E>>3]-+h[d>>3])*.5;HD(a,F,2);K=+h[u>>3];h[F>>3]=K;L=+h[v>>3];h[B>>3]=L+(+h[w>>3]-L)*.5;h[D>>3]=K+(+h[b>>3]-K)*.5-(+h[x>>3]-+h[C>>3])*3.0*.25;h[f>>3]=L+(+h[E>>3]-+h[d>>3])*.5;HD(a,F,2);break}else{switch(e|0){case 301989888:break;default:break a}d=sw(r)|0;w=b+16|0;y=+h[w>>3];s=H+48|0;y=y+(+h[b>>3]-y)*.5+(+h[x>>3]-+h[s>>3])*.25;h[d>>3]=y;B=b+40|0;A=+h[B>>3];C=b+24|0;u=H+56|0;v=H+72|0;A=A+(+h[C>>3]-A)*.5+(+h[u>>3]-+h[v>>3])*.5;t=d+8|0;h[t>>3]=A;h[d+16>>3]=y;A=A+(+h[u>>3]-+h[v>>3])*.125;E=d+24|0;h[E>>3]=A;J=y-(+h[x>>3]-+h[s>>3])*.125;D=d+32|0;h[D>>3]=J;z=A+(+h[u>>3]-+h[v>>3])*.125;h[d+40>>3]=z;h[d+48>>3]=y;L=z+(+h[u>>3]-+h[v>>3])*.125;h[d+56>>3]=L;h[d+64>>3]=y;y=L+(+h[u>>3]-+h[v>>3])*.125;h[d+72>>3]=y;h[d+80>>3]=J;h[d+88>>3]=y;J=+h[w>>3];J=J+(+h[b>>3]-J)*.5;h[d+96>>3]=J;h[d+104>>3]=L;K=J-(+h[x>>3]-+h[s>>3])*.125;h[d+112>>3]=K;h[d+120>>3]=y;K=K-(+h[x>>3]-+h[s>>3])*.125;h[d+128>>3]=K;h[d+136>>3]=y;h[d+144>>3]=K;h[d+152>>3]=L;L=K+(+h[x>>3]-+h[s>>3])*.125;h[d+160>>3]=L;h[d+168>>3]=z;h[d+176>>3]=K;h[d+184>>3]=A;h[d+192>>3]=K;K=+h[t>>3];h[d+200>>3]=K;h[d+208>>3]=L;h[d+216>>3]=K;x=d+224|0;h[x>>3]=J;h[d+232>>3]=+h[E>>3];h[d+240>>3]=+h[D>>3];h[d+248>>3]=K;ED(a,d,m,f);K=+h[x>>3];h[F>>3]=K;J=+h[B>>3];J=J+(+h[C>>3]-J)*.5;D=F+8|0;h[D>>3]=J;E=F+16|0;h[E>>3]=K;f=F+24|0;h[f>>3]=J+(+h[u>>3]-+h[v>>3])*.125;HD(a,F,2);J=+h[x>>3];h[F>>3]=J;K=+h[B>>3];L=+h[u>>3]-+h[v>>3];K=K+(+h[C>>3]-K)*.5+L*.25;h[D>>3]=K;h[E>>3]=J;h[f>>3]=K+L*.125;HD(a,F,2);h[F>>3]=+h[w>>3];L=+h[B>>3];h[D>>3]=L+(+h[C>>3]-L)*.5;h[E>>3]=+h[b>>3];h[f>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}}else{if((e|0)<369098752){if((e|0)<335544320){switch(e|0){case 318767104:break;default:break a}d=sw(j)|0;w=b+16|0;J=+h[w>>3];D=H+48|0;J=J+(+h[b>>3]-J)*.5+(+h[x>>3]-+h[D>>3])*.125;h[d>>3]=J;B=b+40|0;K=+h[B>>3];C=b+24|0;u=H+56|0;v=H+72|0;K=K+(+h[C>>3]-K)*.5+(+h[u>>3]-+h[v>>3])*.5;h[d+8>>3]=K;z=J+(+h[x>>3]-+h[D>>3])*.125;h[d+16>>3]=z;L=K+(+h[u>>3]-+h[v>>3])*.125;h[d+24>>3]=L;h[d+32>>3]=z;z=L+(+h[u>>3]-+h[v>>3])*.25;h[d+40>>3]=z;h[d+48>>3]=J;A=z+(+h[u>>3]-+h[v>>3])*.125;h[d+56>>3]=A;J=J-(+h[x>>3]-+h[D>>3])*.25;h[d+64>>3]=J;h[d+72>>3]=A;A=J-(+h[x>>3]-+h[D>>3])*.125;h[d+80>>3]=A;h[d+88>>3]=z;h[d+96>>3]=A;h[d+104>>3]=L;h[d+112>>3]=J;h[d+120>>3]=K;ED(a,d,g,f);K=+h[w>>3];K=K+(+h[b>>3]-K)*.5;h[F>>3]=K;J=+h[B>>3];J=J+(+h[C>>3]-J)*.5;D=F+8|0;h[D>>3]=J;E=F+16|0;h[E>>3]=K;f=F+24|0;h[f>>3]=J+(+h[u>>3]-+h[v>>3])*.125;HD(a,F,2);J=+h[w>>3];J=J+(+h[b>>3]-J)*.5;h[F>>3]=J;K=+h[B>>3];L=+h[u>>3]-+h[v>>3];K=K+(+h[C>>3]-K)*.5+L*.25;h[D>>3]=K;h[E>>3]=J;h[f>>3]=K+L*.125;HD(a,F,2);h[F>>3]=+h[w>>3];L=+h[B>>3];h[D>>3]=L+(+h[C>>3]-L)*.5;h[E>>3]=+h[b>>3];h[f>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}if((e|0)<352321536){switch(e|0){case 335544320:break;default:break a}d=sw(r)|0;B=b+16|0;y=+h[B>>3];u=H+48|0;y=y+(+h[b>>3]-y)*.5+(+h[x>>3]-+h[u>>3])*.25;h[d>>3]=y;C=b+40|0;A=+h[C>>3];D=b+24|0;s=H+56|0;t=H+72|0;A=A+(+h[D>>3]-A)*.5+(+h[s>>3]-+h[t>>3])*.5;E=d+8|0;h[E>>3]=A;h[d+16>>3]=y;A=A+(+h[s>>3]-+h[t>>3])*.125;v=d+24|0;h[v>>3]=A;K=y-(+h[x>>3]-+h[u>>3])*.125;w=d+32|0;h[w>>3]=K;z=A+(+h[s>>3]-+h[t>>3])*.125;h[d+40>>3]=z;h[d+48>>3]=y;J=z+(+h[s>>3]-+h[t>>3])*.125;h[d+56>>3]=J;h[d+64>>3]=y;y=J+(+h[s>>3]-+h[t>>3])*.125;h[d+72>>3]=y;h[d+80>>3]=K;h[d+88>>3]=y;K=+h[B>>3];K=K+(+h[b>>3]-K)*.5;h[d+96>>3]=K;h[d+104>>3]=J;L=K-(+h[x>>3]-+h[u>>3])*.125;h[d+112>>3]=L;h[d+120>>3]=y;L=L-(+h[x>>3]-+h[u>>3])*.125;h[d+128>>3]=L;h[d+136>>3]=y;h[d+144>>3]=L;h[d+152>>3]=J;J=L+(+h[x>>3]-+h[u>>3])*.125;h[d+160>>3]=J;h[d+168>>3]=z;h[d+176>>3]=L;h[d+184>>3]=A;h[d+192>>3]=L;L=+h[E>>3];h[d+200>>3]=L;h[d+208>>3]=J;h[d+216>>3]=L;E=d+224|0;h[E>>3]=K;h[d+232>>3]=+h[v>>3];h[d+240>>3]=+h[w>>3];h[d+248>>3]=L;ED(a,d,m,f);c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];E=F+16|0;h[E>>3]=+h[F>>3];L=+h[C>>3];f=F+24|0;h[f>>3]=L+(+h[D>>3]-L)*.5;HD(a,F,2);h[F>>3]=+h[B>>3];L=+h[C>>3];h[F+8>>3]=L+(+h[D>>3]-L)*.5;h[E>>3]=+h[b>>3];h[f>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}else{switch(e|0){case 352321536:break;default:break a}d=sw(j)|0;w=b+16|0;K=+h[w>>3];D=H+48|0;K=K+(+h[b>>3]-K)*.5+(+h[x>>3]-+h[D>>3])*.125;h[d>>3]=K;B=b+40|0;L=+h[B>>3];C=b+24|0;u=H+56|0;v=H+72|0;L=L+(+h[C>>3]-L)*.5+(+h[u>>3]-+h[v>>3])*.5;E=d+8|0;h[E>>3]=L;z=K+(+h[x>>3]-+h[D>>3])*.125;h[d+16>>3]=z;J=L+(+h[u>>3]-+h[v>>3])*.125;h[d+24>>3]=J;h[d+32>>3]=z;z=J+(+h[u>>3]-+h[v>>3])*.25;h[d+40>>3]=z;h[d+48>>3]=K;A=z+(+h[u>>3]-+h[v>>3])*.125;h[d+56>>3]=A;K=K-(+h[x>>3]-+h[D>>3])*.25;h[d+64>>3]=K;h[d+72>>3]=A;A=K-(+h[x>>3]-+h[D>>3])*.125;h[d+80>>3]=A;h[d+88>>3]=z;h[d+96>>3]=A;h[d+104>>3]=J;h[d+112>>3]=K;h[d+120>>3]=L;ED(a,d,g,f);L=+h[w>>3];L=L+(+h[b>>3]-L)*.5;h[F>>3]=L;D=F+8|0;h[D>>3]=+h[E>>3];E=F+16|0;h[E>>3]=L;L=+h[B>>3];f=F+24|0;h[f>>3]=L+(+h[C>>3]-L)*.5;HD(a,F,2);h[F>>3]=+h[w>>3];L=+h[B>>3];h[D>>3]=L+(+h[C>>3]-L)*.5;h[E>>3]=+h[b>>3];h[f>>3]=L+(+h[b+8>>3]-+h[b+56>>3])*.5;HD(a,F,2);xN(d);break}}if((e|0)<402653184)if((e|0)<385875968){switch(e|0){case 369098752:break;default:break a}d=sw(s)|0;F=H+48|0;h[d>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;E=H+56|0;D=H+72|0;h[d+8>>3]=+h[H+24>>3]-(+h[E>>3]-+h[D>>3])*.5;h[d+16>>3]=+h[F>>3];L=+h[E>>3];h[d+24>>3]=L-(L-+h[D>>3])*.5;h[d+32>>3]=+h[b+32>>3];C=b+40|0;h[d+40>>3]=+h[C>>3];L=+h[x>>3];h[d+48>>3]=L+(L-+h[F>>3])*.5;h[d+56>>3]=+h[C>>3];L=+h[x>>3];h[d+64>>3]=L+(L-+h[F>>3])*.5;h[d+72>>3]=+h[C>>3]+(+h[E>>3]-+h[D>>3])*.5;h[d+80>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;h[d+88>>3]=+h[C>>3]+(+h[E>>3]-+h[D>>3])*.5;h[d+96>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;D=b+56|0;h[d+104>>3]=+h[D>>3];E=b+8|0;L=+h[E>>3];h[d+120>>3]=L-(L-+h[D>>3])*.5;h[d+112>>3]=+h[b>>3];h[d+136>>3]=+h[E>>3];h[d+128>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;ED(a,d,o,f);xN(d);break}else{switch(e|0){case 385875968:break;default:break a}d=sw(q)|0;F=H+48|0;h[d>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;E=H+56|0;D=H+72|0;h[d+8>>3]=+h[H+24>>3]-(+h[E>>3]-+h[D>>3])*.5;h[d+16>>3]=+h[F>>3];L=+h[E>>3];h[d+24>>3]=L-(L-+h[D>>3])*.5;h[d+32>>3]=+h[b+32>>3];C=b+40|0;h[d+40>>3]=+h[C>>3]+(+h[E>>3]-+h[D>>3])*.5;h[d+48>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;h[d+56>>3]=+h[C>>3]+(+h[E>>3]-+h[D>>3])*.5;h[d+64>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;D=b+56|0;h[d+72>>3]=+h[D>>3];E=b+8|0;L=+h[E>>3];h[d+88>>3]=L-(L-+h[D>>3])*.5;h[d+80>>3]=+h[b>>3];h[d+104>>3]=+h[E>>3];h[d+96>>3]=+h[v>>3]-(+h[x>>3]-+h[F>>3])*.5;ED(a,d,t,f);xN(d);break}else if((e|0)<419430400){switch(e|0){case 402653184:break;default:break a}d=sw(q)|0;h[d>>3]=+h[b>>3];C=b+8|0;D=H+48|0;E=H+56|0;F=H+72|0;h[d+8>>3]=+h[C>>3]-(+h[E>>3]-+h[F>>3])*.5;L=+h[x>>3];h[d+16>>3]=L+(L-+h[D>>3])*.5;h[d+24>>3]=+h[C>>3]-(+h[E>>3]-+h[F>>3])*.5;L=+h[x>>3];h[d+32>>3]=L+(L-+h[D>>3])*.5;h[d+40>>3]=+h[H+40>>3];h[d+48>>3]=+h[b+16>>3];L=+h[b+24>>3];C=b+40|0;h[d+56>>3]=L-(L-+h[C>>3])*.5;L=+h[x>>3];h[d+64>>3]=L+(L-+h[D>>3])*.5;h[d+72>>3]=+h[C>>3];h[d+88>>3]=+h[C>>3]+(+h[E>>3]-+h[F>>3])*.5;L=+h[x>>3];h[d+80>>3]=L+(L-+h[D>>3])*.5;h[d+104>>3]=+h[b+56>>3]+(+h[E>>3]-+h[F>>3])*.5;h[d+96>>3]=+h[b>>3];ED(a,d,t,f);xN(d);break}else{switch(e|0){case 419430400:break;default:break a}d=sw(s)|0;h[d>>3]=+h[b>>3];F=b+8|0;E=H+48|0;C=H+56|0;D=H+72|0;h[d+8>>3]=+h[F>>3]-(+h[C>>3]-+h[D>>3])*.5;L=+h[x>>3];h[d+16>>3]=L+(L-+h[E>>3])*.5;h[d+24>>3]=+h[F>>3]-(+h[C>>3]-+h[D>>3])*.5;L=+h[x>>3];h[d+32>>3]=L+(L-+h[E>>3])*.5;h[d+40>>3]=+h[H+40>>3];h[d+48>>3]=+h[b+16>>3];L=+h[b+24>>3];F=b+40|0;h[d+56>>3]=L-(L-+h[F>>3])*.5;L=+h[x>>3];h[d+64>>3]=L+(L-+h[E>>3])*.5;h[d+72>>3]=+h[F>>3];h[d+88>>3]=+h[F>>3]+(+h[C>>3]-+h[D>>3])*.5;L=+h[x>>3];h[d+80>>3]=L+(L-+h[E>>3])*.5;F=b+56|0;h[d+104>>3]=+h[F>>3]+(+h[C>>3]-+h[D>>3])*.5;h[d+96>>3]=+h[v>>3]-(+h[x>>3]-+h[E>>3])*.5;h[d+112>>3]=+h[v>>3]-(+h[x>>3]-+h[E>>3])*.5;h[d+120>>3]=+h[F>>3];h[d+128>>3]=+h[b+48>>3];h[d+136>>3]=+h[F>>3];ED(a,d,o,f);xN(d);break}}while(0);xN(H)}l=I;return}function wy(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0;f=l;l=l+112|0;g=f;k=+h[b+8>>3];k=k+k;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];h[g+16>>3]=+h[b+16>>3];h[g+24>>3]=k-+h[b+24>>3];h[g+32>>3]=+h[b+32>>3];h[g+40>>3]=k-+h[b+40>>3];h[g+48>>3]=+h[b+48>>3];h[g+56>>3]=k-+h[b+56>>3];h[g+64>>3]=+h[b+64>>3];h[g+72>>3]=k-+h[b+72>>3];h[g+80>>3]=+h[b+80>>3];h[g+88>>3]=k-+h[b+88>>3];i=g+96|0;j=b+96|0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];GD(a,b,d,0,0,e&255);GD(a,g,7,0,0,0);l=f;return}function xy(a,b,c,d){a=a|0;b=+b;c=c|0;d=d|0;var e=0.0,f=0.0;f=+h[c>>3];e=+h[c+8>>3];e=e+(+h[d+8>>3]-e)*b;h[a>>3]=f+(+h[d>>3]-f)*b;h[a+8>>3]=e;return}function yy(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a){a=c[c[a+4>>2]>>2]|0;if((a|0)!=75)if((a|0)==78)a=2;else return ((a|0)==77?3:(a|0)==80?4:0)|0;else a=1}else a=0;return a|0}function zy(b){b=b|0;var d=0.0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0.0,x=0,y=0.0,z=0.0,A=0,B=0,C=0,D=0,E=0,H=0,K=0,L=0,M=0,N=0,P=0,Q=0.0,R=0.0,T=0,U=0,V=0.0,W=0.0,X=0.0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0.0;ca=l;l=l+144|0;K=ca+112|0;N=ca+104|0;D=ca+96|0;E=ca+88|0;j=ca+80|0;$=ca+64|0;aa=ca+48|0;T=ca+40|0;U=ca+32|0;o=ca+24|0;x=ca+16|0;B=ca+136|0;A=ca+128|0;L=ca;ba=sw(48)|0;Z=b+16|0;P=c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0;i=(P|0)==1552;_=c[P>>2]|0;e=c[P+4>>2]|0;g=c[P+8>>2]|0;f=+h[P+16>>3];k=+h[P+32>>3];m=+h[P+24>>3];_=(FA(Im(b,90505)|0)|0)&255|_;P=(_|0)!=0;do if(!i){if(!P){Y=c[Z>>2]|0;d=+h[Y+32>>3]*72.0;r=+h[Y+40>>3]*72.0;r=+(~~(r+(r>=0.0?.5:-.5))|0);d=+(~~(d+(d>=0.0?.5:-.5))|0);break}d=+Jy(b);if(d>0.0)r=d;else{Y=c[Z>>2]|0;r=+h[Y+32>>3];d=+h[Y+40>>3];d=(r<d?r:d)*72.0;d=+(~~(d+(d>=0.0?.5:-.5))|0);r=d}}else{r=0.0;d=0.0}while(0);Y=AA(b,c[42230]|0,e,0)|0;X=f+ +BA(b,c[42232]|0,0.0,-360.0);if(!g){W=+BA(b,c[42233]|0,0.0,-100.0);H=AA(b,c[42229]|0,4,0)|0;V=+BA(b,c[42234]|0,0.0,-100.0)}else{H=g;W=k;V=m}e=c[(c[Z>>2]|0)+104>>2]|0;C=e+24|0;c[$>>2]=c[C>>2];c[$+4>>2]=c[C+4>>2];c[$+8>>2]=c[C+8>>2];c[$+12>>2]=c[C+12>>2];n=+h[$>>3];C=$+8|0;if(n>0.0)if(i)k=n;else M=11;else if(i|!(+h[C>>3]>0.0))k=n;else M=11;if((M|0)==11){e=Im(b,90490)|0;f=n+16.0;do if(e){h[x>>3]=0.0;h[o>>3]=0.0;c[j>>2]=o;c[j+4>>2]=x;e=FL(e,90497,j)|0;k=+h[o>>3];if(k<0.0){h[o>>3]=0.0;k=0.0}m=+h[x>>3];if(m<0.0){h[x>>3]=0.0;m=0.0}if((e|0)<=0){h[$>>3]=f;k=8.0;break}k=k*72.0;k=+(~~(k+(k>=0.0?.5:-.5))<<1|0);f=n+k;h[$>>3]=f;if((e|0)!=1){k=m*72.0;k=+(~~(k+(k>=0.0?.5:-.5))<<1|0)}}else{h[$>>3]=f;k=8.0}while(0);h[C>>3]=k+ +h[C>>3];e=c[(c[Z>>2]|0)+104>>2]|0;k=f}q=k-+h[e+24>>3];f=+h[c[(c[(ro(b)|0)+16>>2]|0)+8>>2]>>3];if(f>0.0){Q=f*72.0;Q=+(~~(Q+(Q>=0.0?.5:-.5))|0);R=+Ky(k,Q);h[$>>3]=R;h[C>>3]=+Ky(+h[C>>3],Q)}else R=k;e=c[(c[Z>>2]|0)+8>>2]|0;do if(!(a[e+12>>0]|0)){g=Im(b,93807)|0;if((g|0)!=0?(a[g>>0]|0)!=0:0){Mr(A,ro(b)|0,g);e=c[A>>2]|0;i=c[A+4>>2]|0;if((i&e|0)==-1){e=Dn(b)|0;c[D>>2]=g;c[D+4>>2]=e;_l(0,90581,D)|0;g=0;e=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;g=e+2|0;e=i+2|0;break}}else{g=0;e=0}}else{e=c[e>>2]|0;if((a[e>>0]|0)==99?(vJ(e,90513)|0)==0:0){g=Im(b,90520)|0;Mr(B,ro(b)|0,g);e=c[B>>2]|0;i=c[B+4>>2]|0;if((i&e|0)==-1){e=Dn(b)|0;c[E>>2]=g|0?g:90530;c[E+4>>2]=e;_l(0,90536,E)|0;g=0;e=0;break}else{a[(c[(ro(b)|0)+16>>2]|0)+114>>0]=1;g=e+2|0;e=i+2|0;break}}else{g=0;e=0}}while(0);Q=+(g|0);h[aa>>3]=R>Q?R:Q;Q=+h[C>>3];p=+(e|0);A=aa+8|0;h[A>>3]=Q>p?Q:p;e=(H|0)<3&(V!=0.0|W!=0.0)?120:H;g=Im(b,90622)|0;if(!g)i=99;else{i=a[g>>0]|0;i=i<<24>>24==116?116:i<<24>>24==98?98:99}g=c[Z>>2]|0;a[(c[g+104>>2]|0)+80>>0]=i;if((e|0)==4)if((V==0.0?((~~(X+(X>=0.0?.5:-.5))|0)%90|0|0)==0:0)&W==0.0){n=4.0;o=1}else{n=4.0;M=40}else{n=+(e|0);M=40}do if((M|0)==40){g=c[(c[(c[g+8>>2]|0)+8>>2]|0)+44>>2]|0;if(g|0){o=c[g>>2]|0;c[K>>2]=c[aa>>2];c[K+4>>2]=c[aa+4>>2];c[K+8>>2]=c[aa+8>>2];c[K+12>>2]=c[aa+12>>2];cb[o&31](L,K);c[aa>>2]=c[L>>2];c[aa+4>>2]=c[L+4>>2];c[aa+8>>2]=c[L+8>>2];c[aa+12>>2]=c[L+12>>2];o=0;break}f=+h[A>>3];k=f*1.4142135623730951;if(r>k&i<<24>>24==99){m=f/r;m=+G(+(1.0/(1.0-m*m)));m=m*+h[aa>>3];h[aa>>3]=m}else{m=+h[aa>>3]*1.4142135623730951;h[aa>>3]=m;h[A>>3]=k;f=k}if((e|0)>2){z=+I(+(3.141592653589793/n));h[aa>>3]=m/z;h[A>>3]=f/z;o=0}else o=0}while(0);k=+h[A>>3];g=CA(b,c[42235]|0,122116)|0;x=ba+40|0;if((a[g>>0]|0)==115?(vJ(g,90631)|0)==0:0){h[aa>>3]=d;h[A>>3]=r;c[x>>2]=c[x>>2]|2048;f=r}else{if(!((FA(g)|0)<<24>>24)){f=+h[aa>>3];d=d>f?d:f;h[aa>>3]=d;f=+h[A>>3];f=r>f?r:f}else{M=c[(c[Z>>2]|0)+104>>2]|0;if(!(!(d<+h[M+24>>3])?!(r<+h[M+32>>3]):0)){L=Dn(b)|0;M=Dn(ro(b)|0)|0;c[N>>2]=L;c[N+4>>2]=M;_l(0,90637,N)|0}h[aa>>3]=d;f=r}h[A>>3]=f}if(P){y=d>f?d:f;h[A>>3]=y;h[aa>>3]=y;z=y}else{z=f;y=d}d=R-q;do if(!((FA(CA(b,c[42226]|0,122116)|0)|0)<<24>>24)){if(o){d=+h[(R>+h[aa>>3]?$:aa)>>3]-q;break}f=+h[A>>3];if(Q<f){d=+h[aa>>3]*+G(+(1.0-Q*Q/(f*f)));d=(R>d?R:d)-q}}while(0);g=c[(c[Z>>2]|0)+104>>2]|0;h[g+40>>3]=d;if(!(c[x>>2]&2048)){w=+h[A>>3]-k;h[g+48>>3]=Q+(Q<p?p-Q+w:w)}j=(Y|0)>1;g=j?Y:1;a:do if((e|0)<3){g=sw(g<<5)|0;f=+h[aa>>3]*.5;d=+h[A>>3]*.5;h[g>>3]=-f;h[g+8>>3]=-d;h[g+16>>3]=f;h[g+24>>3]=d;if(j){e=1;i=2;while(1){if((e|0)==(Y|0))break;y=f+4.0;z=d+4.0;h[g+(i<<4)>>3]=-y;h[g+(i<<4)+8>>3]=-z;U=i|1;h[g+(U<<4)>>3]=y;h[g+(U<<4)+8>>3]=z;e=e+1|0;i=i+2|0;f=y;d=z}h[aa>>3]=f*2.0;h[A>>3]=d*2.0;e=2}else e=2}else{g=sw(S(g<<4,e)|0)|0;i=c[(c[(c[(c[Z>>2]|0)+8>>2]|0)+8>>2]|0)+44>>2]|0;b:do if(!i){p=6.283185307179586/n;s=p*.5;q=+J(+s);r=+sJ(+F(+V)+ +F(+W),1.0);s=V*1.4142135623730951/+I(+s);t=W*.5;k=(p+-3.141592653589793)*.5;lL(k,T,U);u=X/180.0*3.141592653589793;f=0.0;d=0.0;k=k+(3.141592653589793-p)*.5;i=0;m=+h[U>>3]*.5;n=+h[T>>3]*.5;while(1){if((i|0)>=(e|0))break b;k=p+k;lL(k,T,U);m=m+q*+h[U>>3];n=n+q*+h[T>>3];w=t*n+m*(r+s*n);lL(u+ +O(+n,+w),T,U);w=+sJ(w,n);v=w*+h[U>>3]*+h[aa>>3];w=w*+h[T>>3]*+h[A>>3];da=+F(+v);d=da>d?da:d;da=+F(+w);f=da>f?da:f;h[g+(i<<4)>>3]=v;h[g+(i<<4)+8>>3]=w;if(o)break;else i=i+1|0}da=-v;h[g+16>>3]=da;h[g+24>>3]=w;h[g+32>>3]=da;da=-w;h[g+40>>3]=da;h[g+48>>3]=v;h[g+56>>3]=da}else{cb[c[i+4>>2]&31](g,aa);f=+h[A>>3]*.5;d=+h[aa>>3]*.5}while(0);d=d*2.0;f=f*2.0;y=y>d?y:d;h[aa>>3]=y;da=z>f?z:f;h[A>>3]=da;d=y/d;f=da/f;i=0;while(1){if((i|0)>=(e|0))break;P=g+(i<<4)|0;b=g+(i<<4)+8|0;da=f*+h[b>>3];h[P>>3]=d*+h[P>>3];h[b>>3]=da;i=i+1|0}if(j){j=e+-1|0;f=+h[g>>3];k=+h[g+8>>3];d=+O(+(k-+h[g+(j<<4)+8>>3]),+(f-+h[g+(j<<4)>>3]));j=0;c:while(1){if((j|0)>=(e|0))break;o=j+1|0;i=(o|0)%(e|0)|0;m=+h[g+(i<<4)>>3];n=+h[g+(i<<4)+8>>3];p=+O(+(n-k),+(m-f));z=(d+3.141592653589793-p)*.5;da=4.0/+J(+z);lL(d-z,T,U);h[T>>3]=da*+h[T>>3];h[U>>3]=da*+h[U>>3];i=1;d=k;while(1){if((i|0)==(Y|0)){d=p;j=o;f=m;k=n;continue c}z=f+ +h[U>>3];da=d+ +h[T>>3];b=(S(i,e)|0)+j|0;h[g+(b<<4)>>3]=z;h[g+(b<<4)+8>>3]=da;i=i+1|0;f=z;d=da}}j=S(e,Y+-1|0)|0;i=0;while(1){if((i|0)>=(e|0))break a;U=i+j|0;z=+h[g+(U<<4)+8>>3];y=+F(+(+h[g+(U<<4)>>3]))*2.0;da=+h[aa>>3];h[aa>>3]=y>da?y:da;z=+F(+z)*2.0;da=+h[A>>3];h[A>>3]=z>da?z:da;i=i+1|0}}}while(0);c[ba>>2]=_;c[ba+4>>2]=Y;c[ba+8>>2]=e;h[ba+16>>3]=X;h[ba+32>>3]=W;h[ba+24>>3]=V;c[ba+44>>2]=g;g=c[Z>>2]|0;f=+h[aa>>3];d=+h[A>>3];e=g+32|0;if(!(c[x>>2]&2048))h[e>>3]=f/72.0;else{h[e>>3]=+h[(R>f?$:aa)>>3]/72.0;d=+h[(Q>d?$:aa)+8>>3]}h[g+40>>3]=d/72.0;c[g+12>>2]=ba;l=ca;return}function Ay(a){a=a|0;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;j=o+40|0;e=o+32|0;k=o+16|0;n=o;d=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]|0)>>>2&1^1;m=a+16|0;f=c[c[(c[m>>2]|0)+104>>2]>>2]|0;c[42360]=f;f=TK(f)|0;f=sw(((f|0)>1?f:1)+1|0)|0;b=Cy(a,d,1,f)|0;if(!b){c[e>>2]=c[c[(c[m>>2]|0)+104>>2]>>2];_l(1,90466,e)|0;c[42360]=90487;b=Cy(a,d,1,f)|0}xN(f);Dy(j,a,b);d=c[m>>2]|0;i=+h[d+32>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))|0);h[n>>3]=i;g=+h[d+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);d=n+8|0;h[d>>3]=g;if(!((FA(CA(a,c[42235]|0,122116)|0)|0)<<24>>24)){i=+h[(+h[b>>3]>i?b:n)>>3];h[n>>3]=i;e=b+8|0;g=+h[(+h[e>>3]>g?b:n)+8>>3];h[d>>3]=g;d=e;e=b}else{d=b+8|0;e=b}a=(FA(CA(a,c[42226]|0,122116)|0)|0)&255;c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2];Ey(b,j,a);Fy(k,i*-.5,g*.5);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];Gy(b,j,15);n=c[m>>2]|0;h[n+32>>3]=+h[e>>3]/72.0;h[n+40>>3]=(+h[d>>3]+1.0)/72.0;c[n+12>>2]=b;l=o;return}function By(a){a=a|0;var b=0.0,d=0,e=0.0,f=0.0,g=0,i=0,j=0,k=0,l=0.0,m=0;j=sw(48)|0;k=a+16|0;g=c[(c[(c[(c[k>>2]|0)+8>>2]|0)+8>>2]|0)+4>>2]|0;b=+BA(a,c[42208]|0,1797693134862315708145274.0e284,0.0);f=+BA(a,c[42207]|0,1797693134862315708145274.0e284,0.0);b=b<f?b:f;i=c[k>>2]|0;b=f==1797693134862315708145274.0e284&b==1797693134862315708145274.0e284?.05:b>0.0?(b>.0003?b:.0003):b;h[i+40>>3]=b;h[i+32>>3]=b;b=b*72.0;g=AA(a,c[42230]|0,g,0)|0;i=sw((g|0)<1?32:g<<5)|0;f=b*.5;e=-f;h[i>>3]=e;h[i+8>>3]=e;h[i+16>>3]=f;h[i+24>>3]=f;if((g|0)>1){a=1;d=2;e=f;b=f;while(1){if((a|0)==(g|0))break;l=e+4.0;f=b+4.0;h[i+(d<<4)>>3]=-l;h[i+(d<<4)+8>>3]=-f;m=d|1;h[i+(m<<4)>>3]=l;h[i+(m<<4)+8>>3]=f;a=a+1|0;d=d+2|0;e=l;b=f}b=e*2.0}c[j>>2]=1;c[j+4>>2]=g;c[j+8>>2]=2;m=j+16|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;c[m+16>>2]=0;c[m+20>>2]=0;c[j+44>>2]=i;l=b/72.0;m=c[k>>2]|0;h[m+32>>3]=l;h[m+40>>3]=l;c[m+12>>2]=j;return}function Cy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;g=sw(72)|0;n=c[(c[b+16>>2]|0)+104>>2]|0;m=0;i=1;j=c[42360]|0;a:while(1){k=a[j>>0]|0;switch(k<<24>>24){case 0:break a;case 92:{j=j+1|0;k=a[j>>0]|0;switch(k<<24>>24){case 124:case 125:case 123:case 92:{l=m;break}default:E=4}break}default:E=4}if((E|0)==4){E=0;switch(k<<24>>24){case 123:{l=m+1|0;break}case 125:{l=m+-1|0;break}default:{l=m;i=((m|0)==0&k<<24>>24==124&1)+i|0}}if((l|0)<0)break}m=l;j=j+1|0}C=g+56|0;c[C>>2]=sw(i<<2)|0;a[g+64>>0]=d;z=(d|0)==0&1;A=f+1|0;B=n+82|0;y=(e|0)==0;w=n+16|0;x=n+4|0;v=n+8|0;l=0;m=0;d=0;u=0;k=0;e=0;n=f;i=0;j=0;b:while(1){p=l;l=0;c:while(1){r=n;d:while(1){t=e;e:while(1){s=i;f:while(1){q=m;o=k;g:while(1){while(1){if(u){E=79;break b}i=c[42360]|0;k=a[i>>0]|0;e=i+1|0;if((k+-1&255)>=31)break;c[42360]=e}switch(k<<24>>24|0){case 92:{E=52;break d}case 0:case 124:case 125:break e;case 60:break f;case 62:break g;case 123:break;default:{E=56;break d}}c[42360]=e;if(o|0){E=32;break b}if(!(a[e>>0]|0)){E=32;break b}o=Cy(b,z,0,f)|0;c[(c[C>>2]|0)+(q<<2)>>2]=o;if(!o){E=34;break b}else{q=q+1|0;o=4}}n=s+-1|0;if(a[B>>0]|0){k=o;break d}if(!(o&16)){E=26;break b}if(s>>>0<=A>>>0|(n|0)==(t|0))i=s;else i=(a[n>>0]|0)==32?n:s;a[i>>0]=0;l=mL(f)|0;c[42360]=(c[42360]|0)+1;m=q;k=o&-17;s=i}if(o&6|0){E=21;break b}if(a[B>>0]|0){E=57;break d}c[42360]=e;m=q;k=o|18;t=f;i=f}if((o&16|0)!=0|y&k<<24>>24==0){E=36;break b}if(!(o&4)){e=sw(72)|0;c[(c[C>>2]|0)+(q<<2)>>2]=e;m=q+1|0}else{e=p;m=q}if(l|0)c[e+60>>2]=l;if(!(o&5)){a[f+j>>0]=32;o=o|1;j=j+1|0}i=f+j|0;if(!(o&1))n=r;else{if((j|0)>1?(D=i+-1|0,(D|0)!=(r|0)):0)i=(a[D>>0]|0)==32?D:i;a[i>>0]=0;n=mL(f)|0;c[e+52>>2]=iw(b,n,a[B>>0]|0?2:0,+h[w>>3],c[x>>2]|0,c[v>>2]|0)|0;a[e+64>>0]=1;n=f;j=0}i=c[42360]|0;k=a[i>>0]|0;if(!(k<<24>>24)){l=e;u=1;k=o;e=t;i=s;continue b}c[42360]=i+1;if(k<<24>>24==125){E=51;break b}else{p=e;k=0;l=0;e=t;r=n;i=s}}h:do if((E|0)==52){E=0;k=f+j|0;n=s+-1|0;m=j+1|0;switch(a[e>>0]|0){case 0:{k=o;break h}case 62:case 60:case 124:case 125:case 123:{i=d;k=o;break}case 32:{if(!(a[B>>0]|0)){i=1;k=o}else E=54;break}default:E=54}if((E|0)==54){E=0;a[k>>0]=92;i=d;k=o|9;j=m}c[42360]=e;d=i;i=e}else if((E|0)==56){E=0;k=o;n=s+-1|0}else if((E|0)==57){E=0;k=o;n=s+-1|0}while(0);e=f+j|0;if(k&4|0?(a[i>>0]|0)!=32:0){E=60;break b}if(!(k&24))k=(a[i>>0]|0)==32?k:k|9;o=(d|0)!=0;if(!(k&8))if(!(k&16)){e=t;n=r;o=s}else{m=a[i>>0]|0;if(!(o|m<<24>>24!=32))if((s|0)!=(f|0))if((a[n>>0]|0)==32)m=s;else E=74;else m=f;else E=74;if((E|0)==74){E=0;a[s>>0]=m;m=s+1|0;i=c[42360]|0}e=o?m+-1|0:t;n=r;o=m}else{m=a[i>>0]|0;if(!((!(o|m<<24>>24!=32)?(a[e+-1>>0]|0)==32:0)?(a[B>>0]|0)==0:0)){a[e>>0]=m;j=j+1|0}if(o){e=t;n=f+j+-1|0;o=s}else{e=t;n=r;o=s}}i=i+1|0;c[42360]=i;while(1){if((a[i>>0]|0)>=0){m=q;i=o;continue c}t=i+1|0;c[42360]=t;a[f+j>>0]=a[i>>0]|0;j=j+1|0;i=t}}}if((E|0)==21){Hy(g,l);g=0}else if((E|0)==26){Hy(g,l);g=0}else if((E|0)==32){Hy(g,l);g=0}else if((E|0)==34){Hy(g,l);g=0}else if((E|0)==36){Hy(g,l);g=0}else if((E|0)==51)c[g+48>>2]=m;else if((E|0)==60){Hy(g,l);g=0}else if((E|0)==79)c[g+48>>2]=q;return g|0}function Dy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+64|0;n=v+48|0;k=v+40|0;p=v+32|0;u=v+16|0;s=v;j=c[e+52>>2]|0;t=u+8|0;a:do if(!j){o=e+48|0;p=e+56|0;q=e+64|0;r=s+8|0;c[u>>2]=0;c[u+4>>2]=0;c[u+8>>2]=0;c[u+12>>2]=0;n=0;while(1){if((n|0)>=(c[o>>2]|0))break a;Dy(s,d,c[(c[p>>2]|0)+(n<<2)>>2]|0);f=+h[t>>3];g=+h[u>>3];i=+h[s>>3];m=+h[r>>3];if(!(a[q>>0]|0)){h[t>>3]=f+m;j=g>i?u:s;k=u}else{h[u>>3]=g+i;j=(f>m?u:s)+8|0;k=t}h[k>>3]=+h[j>>3];n=n+1|0}}else{g=+h[j+24>>3];f=+h[j+32>>3];if(g>0.0|f>0.0){j=Im(d,90490)|0;m=g+16.0;if((j|0)!=0?(c[n>>2]=k,c[n+4>>2]=p,o=FL(j,90497,n)|0,(o|0)>0):0){i=+h[k>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0);g=g+i;if((o|0)!=1){i=+h[p>>3]*72.0;i=+(~~(i+(i>=0.0?.5:-.5))<<1|0)}}else{i=8.0;g=m}f=f+i}h[u>>3]=g;h[t>>3]=f}while(0);c[e>>2]=c[u>>2];c[e+4>>2]=c[u+4>>2];c[e+8>>2]=c[u+8>>2];c[e+12>>2]=c[u+12>>2];c[b>>2]=c[u>>2];c[b+4>>2]=c[u+4>>2];c[b+8>>2]=c[u+8>>2];c[b+12>>2]=c[u+12>>2];l=v;return}function Ey(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0.0,r=0;r=l;l=l+32|0;n=r+16|0;o=r;p=+h[d>>3];g=p-+h[b>>3];q=+h[d+8>>3];f=q-+h[b+8>>3];c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];d=c[b+52>>2]|0;if(!((e|0)!=0|(d|0)==0)){m=d+40|0;h[m>>3]=g+ +h[m>>3];m=d+48|0;h[m>>3]=f+ +h[m>>3]}k=b+48|0;d=c[k>>2]|0;a:do if(d|0){m=b+64|0;g=((a[m>>0]|0)==0?f:g)/+(d|0);j=b+56|0;i=0;while(1){if((i|0)>=(d|0))break a;d=c[(c[j>>2]|0)+(i<<2)>>2]|0;b=i+1|0;f=+(~~(g*+(b|0))-~~(g*+(i|0))|0);if(!(a[m>>0]|0))Fy(o,p,f+ +h[d+8>>3]);else Fy(o,f+ +h[d>>3],q);c[n>>2]=c[o>>2];c[n+4>>2]=c[o+4>>2];c[n+8>>2]=c[o+8>>2];c[n+12>>2]=c[o+12>>2];Ey(d,n,e);i=b;d=c[k>>2]|0}}while(0);l=r;return}function Fy(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Gy(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0;q=l;l=l+48|0;j=q+32|0;n=q+16|0;m=q;a[b+65>>0]=e;k=b+16|0;s=+h[d>>3];p=d+8|0;r=+h[p>>3];Fy(n,s,r-+h[b+8>>3]);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];k=b+32|0;Fy(m,s+ +h[b>>3],r);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];k=c[b+48>>2]|0;m=k+-1|0;n=(e|0)==0;o=b+64|0;i=b+56|0;g=0;while(1){if((g|0)>=(k|0))break;do if(!n){b=(g|0)==0;f=(g|0)==(m|0);if(!(a[o>>0]|0))if(b){b=f?15:14;break}else{b=f?11:10;break}else if(b){b=f?15:13;break}else{b=f?7:5;break}}else b=0;while(0);f=c[(c[i>>2]|0)+(g<<2)>>2]|0;c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];Gy(f,j,b&e);b=c[(c[i>>2]|0)+(g<<2)>>2]|0;if(!(a[o>>0]|0))h[p>>3]=+h[p>>3]-+h[b+8>>3];else h[d>>3]=+h[d>>3]+ +h[b>>3];g=g+1|0}l=q;return}function Hy(a,b){a=a|0;b=b|0;Iy(a);xN(b);return}function Iy(a){a=a|0;var b=0,d=0,e=0;d=a+48|0;e=a+56|0;b=0;while(1){if((b|0)>=(c[d>>2]|0))break;Iy(c[(c[e>>2]|0)+(b<<2)>>2]|0);b=b+1|0}xN(c[a+60>>2]|0);lw(c[a+52>>2]|0);xN(c[e>>2]|0);xN(a);return}function Jy(a){a=a|0;var b=0.0,d=0.0;d=+BA(a,c[42208]|0,0.0,.01);b=+BA(a,c[42207]|0,0.0,.02);b=(d>b?d:b)*72.0;return +(+(~~(b+(b>=0.0?.5:-.5))|0))}function Ky(a,b){a=+a;b=+b;var c=0;c=~~(a/b);return +(+((+(c|0)*b+1.0e-05<a&1)+c|0)*b)}function Ly(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[c[a+4>>2]>>2]|0)==75&1;return a|0}function My(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;f=c[42361]|0;a:do if(!f)d=0;else{g=c[42362]|0;e=0;while(1){if((e|0)>=(g|0)){d=0;break a}d=c[f+(e<<2)>>2]|0;h=c[d>>2]|0;if((a[h>>0]|0)==(a[b>>0]|0)?(vJ(h,b)|0)==0:0)break a;e=e+1|0}}while(0);return d|0}function Ny(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;do if(!(OA(Im(d,90520)|0)|0))d=b;else{if((a[b>>0]|0)==101?(vJ(b,90685)|0)==0:0){d=b;break}d=90513}while(0);f=a[d>>0]|0;if(f<<24>>24==99?(vJ(d,90513)|0)==0:0)g=11;else{b=19872;g=7}a:do if((g|0)==7)while(1){g=0;e=c[b>>2]|0;if(!e){g=11;break a}if((a[e>>0]|0)==f<<24>>24?(vJ(e,d)|0)==0:0)break a;b=b+16|0;g=7}while(0);if((g|0)==11)b=Oy(d)|0;return b|0}function Oy(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;d=My(b)|0;if(!d){f=c[42362]|0;e=f+1|0;c[42362]=e;d=c[42361]|0;e=e<<2;if(!d)d=tw(e)|0;else d=vw(d,e)|0;c[42361]=d;d=sw(16)|0;c[(c[42361]|0)+(f<<2)>>2]=d;c[d>>2]=c[4968];c[d+4>>2]=c[4969];c[d+8>>2]=c[4970];c[d+12>>2]=c[4971];e=mL(b)|0;c[d>>2]=e;do if(!(c[42185]|0)){if((a[b>>0]|0)==99?(vJ(b,90513)|0)==0:0){e=1;break}c[g>>2]=c[4968];c[g+4>>2]=e;_l(0,90690,g)|0;e=0}else e=1;while(0);a[d+12>>0]=e}l=h;return d|0}function Py(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[b>>3]/1.902113032590307;c=+h[b+8>>3]/1.1180339887498947;c=(d>c?d:c)*.9510565162951535*.8090169943749475/.29389262614623657;h[a>>3]=c*2.0*.9510565162951535;h[a+8>>3]=c*1.8090169943749475;return}function Qy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0.0,k=0,l=0.0,m=0;d=+h[b>>3];k=b+8|0;e=+h[k>>3];c=e/d;if(!(c>.9510565162951536))if(c<.9510565162951536){j=d;e=d*.9510565162951536}else j=d;else j=e/.9510565162951536;i=j/1.902113032590307;d=i*.9510565162951535*.30901699437494745/.7694208842938134;g=i*.19098300562505266*.5;c=.3141592653589793;f=0;while(1){if((f|0)>=10)break;h[a+(f<<4)>>3]=i*+I(+c);h[a+(f<<4)+8>>3]=i*+J(+c)-g;l=c+.6283185307179586;m=f|1;h[a+(m<<4)>>3]=d*+I(+l);h[a+(m<<4)+8>>3]=d*+J(+l)-g;c=l+.6283185307179586;f=f+2|0}h[b>>3]=j;h[k>>3]=e;return}function Ry(a){a=a|0;a=c[(c[a+16>>2]|0)+12>>2]|0;if(a|0){xN(c[a+44>>2]|0);xN(a)}return}function Sy(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+80|0;k=o+40|0;g=o;n=o+64|0;h=o+56|0;if(!(a[e>>0]|0)){g=4144;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}else{i=(f|0)==0?91360:f;c[n>>2]=15;j=d+16|0;f=c[j>>2]|0;do if(a[(c[f+104>>2]|0)+82>>0]|0){f=GF(d,e,n)|0;if(!f){f=c[j>>2]|0;m=8;break}if(ez(d,f,g,i,c[n>>2]|0,0)|0){c[k>>2]=Dn(d)|0;c[k+4>>2]=e;c[k+8>>2]=i;_l(0,91362,k)|0}}else m=8;while(0);if((m|0)==8){if((c[(c[f+8>>2]|0)+8>>2]|0)==1600)h=0;else{c[h>>2]=d;c[h+4>>2]=0}if(ez(d,0,g,e,c[n>>2]|0,h)|0)fz(d,e)}c[g+36>>2]=0;h=b+40|0;do{c[b>>2]=c[g>>2];b=b+4|0;g=g+4|0}while((b|0)<(h|0))}l=o;return}function Ty(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0;r=l;l=l+112|0;n=r+96|0;m=r+80|0;p=r+64|0;k=r+48|0;q=r+32|0;o=r+16|0;f=r;if(!a){c[42365]=0;a=0}else{g=c[a+4>>2]|0;a=c[a>>2]|0;i=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[n>>2]=c[b>>2];c[n+4>>2]=c[b+4>>2];c[n+8>>2]=c[b+8>>2];c[n+12>>2]=c[b+12>>2];Zv(f,n,i);c[q>>2]=c[f>>2];c[q+4>>2]=c[f+4>>2];c[q+8>>2]=c[f+8>>2];c[q+12>>2]=c[f+12>>2];a:do if(g){d=+h[g+8>>3];e=+h[g+24>>3];s=+h[q>>3];if((+h[g>>3]<=s?s<=+h[g+16>>3]:0)?(j=+h[q+8>>3],d<=j):0)a=j<=e&1;else a=0}else{if((a|0)==(c[42365]|0)){f=c[42366]|0;g=c[42368]|0;i=c[42367]|0}else{g=c[(c[a+16>>2]|0)+12>>2]|0;c[42369]=g;i=c[g+44>>2]|0;c[42367]=i;f=c[g+8>>2]|0;c[42366]=f;g=S((c[g+4>>2]|0)+-1|0,f)|0;g=(g|0)>0?g:0;c[42368]=g;c[42365]=a}a=0;b=0;while(1){if((a|0)>=(f|0)){a=1;break a}t=i+(g+a<<4)|0;c[o>>2]=c[t>>2];c[o+4>>2]=c[t+4>>2];c[o+8>>2]=c[t+8>>2];c[o+12>>2]=c[t+12>>2];t=i+(((a+4|0)%(f|0)|0)+g<<4)|0;c[k>>2]=c[q>>2];c[k+4>>2]=c[q+4>>2];c[k+8>>2]=c[q+8>>2];c[k+12>>2]=c[q+12>>2];c[p>>2]=c[41808];c[p+4>>2]=c[41809];c[p+8>>2]=c[41810];c[p+12>>2]=c[41811];c[m>>2]=c[o>>2];c[m+4>>2]=c[o+4>>2];c[m+8>>2]=c[o+8>>2];c[m+12>>2]=c[o+12>>2];c[n>>2]=c[t>>2];c[n+4>>2]=c[t+4>>2];c[n+8>>2]=c[t+8>>2];c[n+12>>2]=c[t+12>>2];b=((dz(k,p,m,n)|0)==0&1)+b|0;if((b|0)==2){a=0;break}else a=a+2|0}}while(0)}l=r;return a|0}function Uy(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;e=c[b+16>>2]|0;if((a[(c[e+104>>2]|0)+82>>0]|0)!=0?(a[e+145>>0]|0)!=0:0)b=JF(b,d,0,f,g)|0;else b=0;return b|0}function Vy(e,f){e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0.0,G=0.0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0;V=l;l=l+48|0;R=V+24|0;Q=V+16|0;N=V+8|0;M=V;T=V+32|0;q=V+28|0;n=c[e+16>>2]|0;U=n+208|0;o=c[U>>2]|0;if(!o){i=e+152|0;j=n+228|0;k=n+212|0;m=n+244|0;if(!(b[n+260>>1]&1)){O=i;J=0}else P=4}else{i=e+152|0;j=n+228|0;m=n+244|0;k=n+212|0;P=4}if((P|0)==4)if(!(c[i>>2]&4)){tD(e,o,c[j>>2]|0,c[m>>2]|0,c[k>>2]|0);O=i;J=1}else{O=i;J=1}K=f+16|0;i=c[K>>2]|0;y=c[i+12>>2]|0;I=c[y+44>>2]|0;L=c[y+8>>2]|0;y=c[y+4>>2]|0;if((c[42363]|0)<(L|0)){n=L+5|0;c[42363]=n;i=c[42364]|0;n=n<<4;if(!i)i=tw(n)|0;else i=vw(i,n)|0;c[42364]=i;i=c[K>>2]|0}H=(c[i+104>>2]|0)+56|0;i=i+16|0;c[H>>2]=c[i>>2];c[H+4>>2]=c[i+4>>2];c[H+8>>2]=c[i+8>>2];c[H+12>>2]=c[i+12>>2];H=c[K>>2]|0;F=+h[H+32>>3]*72.0;F=(+h[H+88>>3]+ +h[H+96>>3])/+(~~(F+(F>=0.0?.5:-.5))|0);G=+h[H+40>>3]*72.0;G=+h[H+80>>3]/+(~~(G+(G>=0.0?.5:-.5))|0);H=Wy(e,f)|0;c[T>>2]=0;i=d[(c[K>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){B=DA(f,c[42214]|0,91260)|0;yD(e,B);AD(e,DA(f,c[42215]|0,91268)|0);n=0;i=1;break}if(i&8|0){B=DA(f,c[42218]|0,91276)|0;yD(e,B);AD(e,DA(f,c[42219]|0,91284)|0);n=0;i=1;break}if(i&4|0){B=DA(f,c[42216]|0,91292)|0;yD(e,B);AD(e,DA(f,c[42217]|0,91300)|0);n=0;i=1;break}if(!(H&1))if(!(H&576)){n=0;i=0}else{n=Xy(f)|0;i=1}else{n=Xy(f)|0;if(!((uv(n,T,q)|0)<<24>>24)){AD(e,n);i=1}else{AD(e,c[T>>2]|0);i=c[T+4>>2]|0;o=AA(f,c[42243]|0,0,0)|0;p=+g[q>>2];if(!i)BD(e,122122,o,p);else BD(e,i,o,p);i=(H&2)>>>1|2}}B=Yy(e,f)|0}else{B=DA(f,c[42212]|0,91244)|0;yD(e,B);AD(e,DA(f,c[42213]|0,91252)|0);n=0;i=1}while(0);o=c[(c[K>>2]|0)+8>>2]|0;if(a[o+12>>0]|0){o=c[o>>2]|0;if((a[o>>0]|0)==99){o=(vJ(o,90513)|0)==0;P=33}else o=1}else{o=1;P=33}if((P|0)==33){o=o^1;if(!((y|0)!=0|i<<24>>24==0|o)){yD(e,122187);y=1;o=0}}C=(L|0)<3;D=(H&64|0)!=0;v=(H&512|0)!=0;E=(H&8|0)==0;w=(H&1024|0)==0;x=(H&2130706444|0)==0;u=0;while(1){r=(u|0)==0;z=i&255;A=v&r;if((u|0)>=(y|0))break;s=S(u,L)|0;t=c[42364]|0;q=0;while(1){if((q|0)>=(L|0))break;X=q+s|0;p=+h[I+(X<<4)+8>>3];W=c[K>>2]|0;h[t+(q<<4)>>3]=F*+h[I+(X<<4)>>3]+ +h[W+16>>3];h[t+(q<<4)+8>>3]=G*p+ +h[W+24>>3];q=q+1|0}do if(C){if(A?(VK(n,58)|0)!=0:0)if((Xt(e,t,n)|0)>1){c[M>>2]=Dn(f)|0;_l(3,91308,M)|0;i=0}else i=0;DD(e,c[42364]|0,L,i&255);if(!E)Zy(e,f)}else{if(D){if(r?($t(e,t,n,1)|0)>1:0){c[N>>2]=Dn(f)|0;_l(3,91308,N)|0}ED(e,c[42364]|0,L,0);break}if(!w){yD(e,122187);ED(e,c[42364]|0,L,z);yD(e,B);HD(e,(c[42364]|0)+32|0,2);break}if(x){ED(e,t,L,z);break}else{vy(e,t,L,H,z);break}}while(0);u=u+1|0;i=0}q=c[(c[K>>2]|0)+8>>2]|0;if(!(a[q+12>>0]|0)){q=Im(f,93807)|0;if(q|0?a[q>>0]|0:0)P=65}else{q=c[q>>2]|0;if((a[q>>0]|0)==99?(vJ(q,90513)|0)==0:0){q=Im(f,90520)|0;if(q|0?a[q>>0]|0:0)P=65}else P=65}if((P|0)==65){s=c[42364]|0;r=0;while(1){if((r|0)>=(L|0))break;p=+h[I+(r<<4)+8>>3];X=c[K>>2]|0;h[s+(r<<4)>>3]=F*+h[I+(r<<4)>>3]+ +h[X+16>>3];h[s+(r<<4)+8>>3]=G*p+ +h[X+24>>3];r=r+1|0}do if(!(o|i<<24>>24==0)){if(C){if(A?(VK(n,58)|0)!=0:0)if((Xt(e,s,n)|0)>1){c[Q>>2]=Dn(f)|0;_l(3,91308,Q)|0;i=0}else i=0;DD(e,c[42364]|0,L,i&255);if(E)break;Zy(e,f);break}if(!D)if(!(H&12)){ED(e,s,L,z);break}else{vy(e,s,L,H,z);break}else{if(($t(e,s,n,1)|0)>1){c[R>>2]=Dn(f)|0;_l(3,91308,R)|0}ED(e,c[42364]|0,L,0);break}}while(0);X=c[42364]|0;JD(e,q,X,L,i,CA(f,c[42236]|0,122116)|0)}xN(c[T>>2]|0);mw(e,10,c[(c[K>>2]|0)+104>>2]|0);if(J){if(c[O>>2]&4|0)tD(e,c[U>>2]|0,c[j>>2]|0,c[m>>2]|0,c[k>>2]|0);uD(e)}l=V;return}function Wy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;e=az(d,f)|0;if(e|0)CD(b,e);e=c[42242]|0;if((e|0?(g=Jm(d,e)|0,g|0):0)?a[g>>0]|0:0)LD(b,+BA(d,c[42242]|0,1.0,0.0));l=h;return c[f>>2]|0}function Xy(a){a=a|0;return $y(a,119608)|0}function Yy(b,d){b=b|0;d=d|0;d=DA(d,c[42210]|0,174318)|0;d=a[d>>0]|0?d:122122;yD(b,d);return d|0}function Zy(a,b){a=a|0;b=b|0;var d=0,e=0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;d=l;l=l+96|0;j=d+80|0;k=d+64|0;e=d+32|0;m=d+16|0;g=d;b=c[b+16>>2]|0;f=+h[b+80>>3]*.75*.5;h[m+8>>3]=f;i=+h[b+96>>3]*.6614;h[m>>3]=i;b=b+16|0;c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2];c[j>>2]=c[b>>2];c[j+4>>2]=c[b+4>>2];c[j+8>>2]=c[b+8>>2];c[j+12>>2]=c[b+12>>2];_y(g,k,j);c[e>>2]=c[g>>2];c[e+4>>2]=c[g+4>>2];c[e+8>>2]=c[g+8>>2];c[e+12>>2]=c[g+12>>2];g=e+8|0;b=e+24|0;h[b>>3]=+h[g>>3];h[e+16>>3]=+h[e>>3]-i*2.0;HD(a,e,2);f=+h[g>>3]-f*2.0;h[g>>3]=f;h[b>>3]=f;HD(a,e,2);l=d;return}function _y(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]+ +h[c+8>>3];h[a>>3]=+h[b>>3]+ +h[c>>3];h[a+8>>3]=d;return}function $y(b,d){b=b|0;d=d|0;var e=0;e=DA(b,c[42211]|0,174318)|0;if(!(a[e>>0]|0)){e=DA(b,c[42210]|0,174318)|0;return ((a[e>>0]|0)==0?d:e)|0}else return e|0;return 0}function az(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=DA(b,c[42227]|0,174318)|0;a:do if(!(a[e>>0]|0)){g=0;e=0}else{g=Au(e)|0;i=g;e=0;b:while(1){f=c[i>>2]|0;if(!f)break a;h=i+4|0;switch(a[f>>0]|0){case 102:{i=h;e=e|(vJ(f,95883)|0)==0;continue b}case 114:{if(!(vJ(f,91320)|0)){f=i;do{j=f;f=f+4|0;h=c[f>>2]|0;c[j>>2]=h}while((h|0)!=0);j=i;e=e|4;i=j;continue b}if(!(vJ(f,91338)|0))f=i;else{j=e;i=h;e=j;continue b}do{h=f;f=f+4|0;j=c[f>>2]|0;c[h>>2]=j}while((j|0)!=0);j=i;e=e|3;i=j;continue b}case 100:{if(!(vJ(f,91328)|0))f=i;else{j=e;i=h;e=j;continue b}do{h=f;f=f+4|0;j=c[f>>2]|0;c[h>>2]=j}while((j|0)!=0);j=i;e=e|8;i=j;continue b}case 105:{j=(vJ(f,119143)|0)==0;i=h;e=j?e|32:e;continue b}case 115:{if(vJ(f,91345)|0){j=e;i=h;e=j;continue b}if(!(bz(b)|0)){j=e;i=h;e=j;continue b}else f=i;do{h=f;f=f+4|0;j=c[f>>2]|0;c[h>>2]=j}while((j|0)!=0);j=i;e=e|64;i=j;continue b}case 119:{if(vJ(f,91353)|0){j=e;i=h;e=j;continue b}if(!(cz(b)|0)){j=e;i=h;e=j;continue b}else f=i;do{h=f;f=f+4|0;j=c[f>>2]|0;c[h>>2]=j}while((j|0)!=0);j=i;e=e|512;i=j;continue b}default:{j=e;i=h;e=j;continue b}}}}while(0);f=c[(c[(c[b+16>>2]|0)+8>>2]|0)+8>>2]|0;if(f)e=c[f+40>>2]|e;c[d>>2]=e;return g|0}function bz(a){a=a|0;var b=0.0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else{if(((c[a+8>>2]|0)==4?(b=+h[a+16>>3],((~~(b+(b>=0.0?.5:-.5))|0)%90|0|0)==0):0)?+h[a+24>>3]==0.0:0)a=+h[a+32>>3]==0.0;else a=0;a=a&1}return a|0}function cz(a){a=a|0;a=c[(c[(c[a+16>>2]|0)+8>>2]|0)+8>>2]|0;if(!a)a=0;else a=(c[a+8>>2]|0)<3&1;return a|0}function dz(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;e=+h[c+8>>3];g=-(+h[d+8>>3]-e);i=+h[c>>3];f=+h[d>>3]-i;e=i*g+e*f;return (+h[a>>3]*g+f*+h[a+8>>3]-e>=0.0^+h[b>>3]*g+f*+h[b+8>>3]-e>=0.0^1)&1|0}function ez(b,d,e,f,g,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0.0,t=0.0,u=0.0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=l;l=l+192|0;D=H+176|0;F=H+160|0;m=H+144|0;B=H+128|0;C=H+112|0;o=H+96|0;p=H+80|0;w=H+64|0;x=H+48|0;y=H+32|0;z=H+16|0;E=H;G=F+8|0;if(!d){c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;n=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;m=c[b+16>>2]|0;t=+h[m+80>>3]*.5;v=-t;s=+h[m+88>>3];u=-s;m=0;k=0.0;q=n?u:v;r=n?s:t;s=n?t:s;t=0.0;u=n?v:u}else{q=+h[d>>3];u=+h[d+8>>3];r=+h[d+16>>3];s=+h[d+24>>3];Fy(m,(q+r)*.5,(u+s)*.5);c[F>>2]=c[m>>2];c[F+4>>2]=c[m+4>>2];c[F+8>>2]=c[m+8>>2];c[F+12>>2]=c[m+12>>2];m=1;k=+h[F>>3];t=+h[G>>3]}v=(r>s?r:s)*4.0;a:do if((f|0)!=0?(A=a[f>>0]|0,A<<24>>24!=0):0){f=f+1|0;n=(i|0)!=0;j=-v;switch(A<<24>>24|0){case 99:{p=1;g=0;f=0;n=0;j=0.0;o=0;break a}case 101:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(n){gz(B,i,t,v);c[F>>2]=c[B>>2];c[F+4>>2]=c[B+4>>2];c[F+8>>2]=c[B+8>>2];c[F+12>>2]=c[B+12>>2]}else h[F>>3]=r;p=0;g=g&2;f=0;n=1;j=0.0;o=0;m=1;break a}case 115:{h[G>>3]=u;switch(a[f>>0]|0){case 0:{if(n){gz(C,i,j,k);c[F>>2]=c[C>>2];c[F+4>>2]=c[C+4>>2];c[F+8>>2]=c[C+8>>2];c[F+12>>2]=c[C+12>>2]}else h[F>>3]=k;p=0;g=g&1;f=0;n=1;j=-1.5707963267948966;o=0;m=1;break a}case 101:{if(n){gz(o,i,j,v);c[F>>2]=c[o>>2];c[F+4>>2]=c[o+4>>2];c[F+8>>2]=c[o+8>>2];c[F+12>>2]=c[o+12>>2]}else h[F>>3]=r;p=0;g=g&3;f=0;n=1;j=-.7853981633974483;o=0;m=1;break a}case 119:{if(n){gz(p,i,j,j);c[F>>2]=c[p>>2];c[F+4>>2]=c[p+4>>2];c[F+8>>2]=c[p+8>>2];c[F+12>>2]=c[p+12>>2]}else h[F>>3]=q;p=0;g=g&9;f=0;n=1;j=-2.356194490192345;o=0;m=1;break a}default:{h[G>>3]=t;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 119:{if(a[f>>0]|0){p=1;g=0;f=0;n=0;j=0.0;o=1;break a}if(n){gz(w,i,t,j);c[F>>2]=c[w>>2];c[F+4>>2]=c[w+4>>2];c[F+8>>2]=c[w+8>>2];c[F+12>>2]=c[w+12>>2]}else h[F>>3]=q;p=0;g=g&8;f=0;n=1;j=3.141592653589793;o=0;m=1;break a}case 110:{h[G>>3]=s;switch(a[f>>0]|0){case 0:{if(n){gz(x,i,v,k);c[F>>2]=c[x>>2];c[F+4>>2]=c[x+4>>2];c[F+8>>2]=c[x+8>>2];c[F+12>>2]=c[x+12>>2]}else h[F>>3]=k;p=0;g=g&4;f=0;n=1;j=1.5707963267948966;o=0;m=1;break a}case 101:{if(n){gz(y,i,v,v);c[F>>2]=c[y>>2];c[F+4>>2]=c[y+4>>2];c[F+8>>2]=c[y+8>>2];c[F+12>>2]=c[y+12>>2]}else h[F>>3]=r;p=0;g=g&6;f=0;n=1;j=.7853981633974483;o=0;m=1;break a}case 119:{if(n){gz(z,i,v,j);c[F>>2]=c[z>>2];c[F+4>>2]=c[z+4>>2];c[F+8>>2]=c[z+8>>2];c[F+12>>2]=c[z+12>>2]}else h[F>>3]=q;p=0;g=g&12;f=0;n=1;j=2.356194490192345;o=0;m=1;break a}default:{h[G>>3]=t;p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}case 95:{p=1;f=1;n=0;j=0.0;o=0;break a}default:{p=1;g=0;f=0;n=0;j=0.0;o=1;break a}}}else{p=1;g=0;f=0;n=0;j=0.0;o=0}while(0);C=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)*90|0;c[D>>2]=c[F>>2];c[D+4>>2]=c[F+4>>2];c[D+8>>2]=c[F+8>>2];c[D+12>>2]=c[F+12>>2];Yv(E,D,C);c[F>>2]=c[E>>2];c[F+4>>2]=c[E+4>>2];c[F+8>>2]=c[E+8>>2];c[F+12>>2]=c[E+12>>2];if(!(f<<24>>24))g=hz(g,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3)|0;a[e+33>>0]=g;c[e+24>>2]=d;k=+h[F>>3];h[e>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);k=+h[G>>3];h[e+8>>3]=+(~~(k+(k>=0.0?.5:-.5))|0);h[e+16>>3]=+iz(j,c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&3);k=+h[F>>3];j=+h[G>>3];if(k==0.0&j==0.0)g=-128;else{v=+O(+j,+k)+4.71238898038469;g=~~((!(v>=6.283185307179586)?v:v+-6.283185307179586)*256.0/6.283185307179586)&255}a[e+32>>0]=g;a[e+29>>0]=n;a[e+28>>0]=m;a[e+30>>0]=p;a[e+31>>0]=f;l=H;return o|0}function fz(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=Dn(a)|0;c[e+4>>2]=b;_l(0,91423,e)|0;l=d;return}function gz(a,b,d,e){a=a|0;b=b|0;d=+d;e=+e;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+128|0;i=p+112|0;j=p+48|0;k=p+16|0;m=p+32|0;n=p;o=c[b>>2]|0;g=c[(c[(ro(o)|0)+16>>2]|0)+116>>2]&3;h[k>>3]=e;h[k+8>>3]=d;f=(g|0)!=0;g=g*90|0;if(f){c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];Yv(m,i,g);c[k>>2]=c[m>>2];c[k+4>>2]=c[m+4>>2];c[k+8>>2]=c[m+8>>2];c[k+12>>2]=c[m+12>>2]}m=j+48|0;q=j+32|0;c[j>>2]=0;c[j+4>>2]=0;c[j+8>>2]=0;c[j+12>>2]=0;c[j+16>>2]=0;c[j+20>>2]=0;c[j+24>>2]=0;c[j+28>>2]=0;c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];c[m>>2]=c[k>>2];c[m+4>>2]=c[k+4>>2];c[m+8>>2]=c[k+8>>2];c[m+12>>2]=c[k+12>>2];Cz(b,c[(c[(c[(c[o+16>>2]|0)+8>>2]|0)+4>>2]|0)+12>>2]|0,j,1);if(f){c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];c[i+8>>2]=c[j+8>>2];c[i+12>>2]=c[j+12>>2];Zv(n,i,g);c[j>>2]=c[n>>2];c[j+4>>2]=c[n+4>>2];c[j+8>>2]=c[n+8>>2];c[j+12>>2]=c[n+12>>2]};c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];l=p;return}function hz(a,b){a=a|0;b=b|0;a:do switch(b|0){case 3:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=1;break a}case 2:{a=4;break a}default:break a}case 2:switch(a|0){case 4:{a=1;break a}case 1:{a=4;break a}default:break a}case 1:switch(a|0){case 4:{a=2;break a}case 1:{a=8;break a}case 8:{a=4;break a}case 2:{a=1;break a}default:break a}default:{}}while(0);return a|0}function iz(a,b){a=+a;b=b|0;switch(b|0){case 3:{if(!(a==3.141592653589793))if(!(a==2.356194490192345))if(!(a==1.5707963267948966))if(!(a==0.0))if(!(a==-.7853981633974483)){if(a==-1.5707963267948966)a=3.141592653589793}else a=2.356194490192345;else a=1.5707963267948966;else a=0.0;else a=-.7853981633974483;else a=-1.5707963267948966;break}case 2:{a=-a;break}case 1:{a=a+-1.5707963267948966;break}default:{}}return +a}function jz(a,b){a=a|0;b=b|0;var d=0.0,e=0,f=0.0,g=0.0,i=0,j=0,k=0;e=l;l=l+32|0;k=e+16|0;i=e;a=c[a>>2]|0;j=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[k>>2]=c[b>>2];c[k+4>>2]=c[b+4>>2];c[k+8>>2]=c[b+8>>2];c[k+12>>2]=c[b+12>>2];Zv(i,k,j);d=+h[i>>3];g=+h[i+8>>3];a=c[a+16>>2]|0;f=+h[a+80>>3]*.5;if(!(!(g>=-f)|!(g<=f))?d>=-+h[a+88>>3]:0)a=d<=+h[a+96>>3]&1;else a=0;l=e;return a|0}function kz(a,d){a=a|0;d=d|0;var e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;q=l;l=l+32|0;p=q;e=c[a+16>>2]|0;n=e+208|0;m=c[n>>2]|0;if(!m)o=(b[e+260>>1]&1)!=0;else o=1;g=d+16|0;d=c[g>>2]|0;i=c[d+12>>2]|0;if(i|0){j=e+212|0;k=e+244|0;e=e+228|0;f=a+152|0;if(o?(c[f>>2]&4|0)==0:0){tD(a,m,c[e>>2]|0,c[k>>2]|0,c[j>>2]|0);d=c[g>>2]|0}m=c[a+36>>2]|0;s=+h[d+24>>3]+ +(c[i+8>>2]|0);r=c[i>>2]|0;h[p>>3]=+h[d+16>>3]+ +(c[i+4>>2]|0);h[p+8>>3]=s;c[p+16>>2]=r;OL(m,91454,p)|0;m=c[g>>2]|0;p=(c[m+104>>2]|0)+56|0;m=m+16|0;c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];mw(a,10,c[(c[g>>2]|0)+104>>2]|0);if(o){if(c[f>>2]&4|0)tD(a,c[n>>2]|0,c[e>>2]|0,c[k>>2]|0,c[j>>2]|0);uD(a)}}l=q;return}function lz(a){a=a|0;Iy(c[(c[a+16>>2]|0)+12>>2]|0);return}function mz(b,e,f,g){b=b|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,m=0;m=l;l=l+64|0;k=m+40|0;h=m;if(!(a[f>>0]|0)){h=4144;g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}else{g=(g|0)==0?91360:g;i=c[(c[e+16>>2]|0)+12>>2]|0;j=sz(i,f)|0;if(!j){if(ez(e,i+16|0,h,f,15,0)|0)fz(e,f)}else if(ez(e,j+16|0,h,g,d[j+65>>0]|0,0)|0){c[k>>2]=Dn(e)|0;c[k+4>>2]=f;c[k+8>>2]=g;_l(0,91362,k)|0}g=b+40|0;do{c[b>>2]=c[h>>2];b=b+4|0;h=h+4|0}while((b|0)<(g|0))}l=m;return}function nz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0,i=0,j=0.0,k=0,m=0,n=0.0;k=l;l=l+32|0;m=k+16|0;i=k;f=c[a+4>>2]|0;a=c[a>>2]|0;g=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[m>>2]=c[b>>2];c[m+4>>2]=c[b+4>>2];c[m+8>>2]=c[b+8>>2];c[m+12>>2]=c[b+12>>2];Zv(i,m,g);c[b>>2]=c[i>>2];c[b+4>>2]=c[i+4>>2];c[b+8>>2]=c[i+8>>2];c[b+12>>2]=c[i+12>>2];if(!f){f=c[(c[a+16>>2]|0)+12>>2]|0;g=f+16|0;a=f+24|0;i=f+32|0;f=f+40|0}else{g=f;a=f+8|0;i=f+16|0;f=f+24|0}e=+h[a>>3];d=+h[f>>3];n=+h[b>>3];if((+h[g>>3]<=n?n<=+h[i>>3]:0)?(j=+h[b+8>>3],e<=j):0)a=j<=d&1;else a=0;l=k;return a|0}function oz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0,t=0,u=0,v=0.0;u=l;l=l+80|0;r=u+64|0;q=u+32|0;t=u;a:do if(!(a[d+28>>0]|0))e=0;else{i=+h[d>>3];p=b+16|0;m=c[(c[p>>2]|0)+12>>2]|0;k=m+48|0;m=m+56|0;d=0;while(1){if((d|0)>=(c[k>>2]|0))break a;n=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[(c[m>>2]|0)+(d<<2)>>2]|0;j=+(~~+h[(n?o+16|0:o+24|0)>>3]|0);if(j<=i?(s=+(~~+h[(n?o+32|0:o+40|0)>>3]|0),i<=s):0)break;d=d+1|0}if(!(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1)){t=c[p>>2]|0;v=+h[t+16>>3];h[f>>3]=j+v;j=+h[t+24>>3];i=+h[t+80>>3];h[f+8>>3]=j-i*.5;h[f+16>>3]=s+v}else{o=(c[(c[m>>2]|0)+(d<<2)>>2]|0)+16|0;b=(c[p>>2]|0)+16|0;c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];c[q+16>>2]=c[o+16>>2];c[q+20>>2]=c[o+20>>2];c[q+24>>2]=c[o+24>>2];c[q+28>>2]=c[o+28>>2];c[r>>2]=c[b>>2];c[r+4>>2]=c[b+4>>2];c[r+8>>2]=c[b+8>>2];c[r+12>>2]=c[b+12>>2];_v(t,q,r);c[f>>2]=c[t>>2];c[f+4>>2]=c[t+4>>2];c[f+8>>2]=c[t+8>>2];c[f+12>>2]=c[t+12>>2];c[f+16>>2]=c[t+16>>2];c[f+20>>2]=c[t+20>>2];c[f+24>>2]=c[t+24>>2];c[f+28>>2]=c[t+28>>2];t=c[p>>2]|0;i=+h[t+80>>3];j=+h[t+24>>3]}h[f+24>>3]=j+i*.5;c[g>>2]=1}while(0);l=u;return e|0}function pz(d,e){d=d|0;e=e|0;var f=0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0;z=l;l=l+144|0;p=z+96|0;r=z+64|0;t=z;w=z+128|0;f=c[d+16>>2]|0;x=f+208|0;i=c[x>>2]|0;if(!i)y=(b[f+260>>1]&1)!=0;else y=1;m=e+16|0;s=c[m>>2]|0;q=c[s+12>>2]|0;u=q+16|0;c[r>>2]=c[u>>2];c[r+4>>2]=c[u+4>>2];c[r+8>>2]=c[u+8>>2];c[r+12>>2]=c[u+12>>2];c[r+16>>2]=c[u+16>>2];c[r+20>>2]=c[u+20>>2];c[r+24>>2]=c[u+24>>2];c[r+28>>2]=c[u+28>>2];A=+h[s+16>>3];h[r>>3]=A+ +h[r>>3];k=+h[s+24>>3];s=r+8|0;h[s>>3]=k+ +h[s>>3];s=r+16|0;h[s>>3]=A+ +h[s>>3];u=r+24|0;h[u>>3]=k+ +h[u>>3];u=f+228|0;v=f+212|0;n=f+244|0;o=d+152|0;if(y?(c[o>>2]&4|0)==0:0)tD(d,i,c[u>>2]|0,c[n>>2]|0,c[v>>2]|0);f=Wy(d,e)|0;Yy(d,e)|0;c[w>>2]=0;if(!(f&1))i=0;else{i=Xy(e)|0;if(!((uv(i,w,p)|0)<<24>>24)){AD(d,i);i=1}else{AD(d,c[w>>2]|0);i=c[w+4>>2]|0;j=AA(e,c[42243]|0,0,0)|0;k=+g[p>>2];if(!i)BD(d,122122,j,k);else BD(d,i,j,k);i=f>>>1&1|2}}j=c[c[(c[m>>2]|0)+8>>2]>>2]|0;if((a[j>>0]|0)==77){m=(vJ(j,91231)|0)==0;f=m?f|4:f}if(!(f&2130706444)){c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];c[p+16>>2]=c[r+16>>2];c[p+20>>2]=c[r+20>>2];c[p+24>>2]=c[r+24>>2];c[p+28>>2]=c[r+28>>2];FD(d,p,i)}else{c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];r=t+32|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];h[t+16>>3]=+h[r>>3];h[t+24>>3]=+h[t+8>>3];h[t+48>>3]=+h[t>>3];h[t+56>>3]=+h[t+40>>3];vy(d,t,4,f,i)}qz(d,e,q);xN(c[w>>2]|0);if(y){if(c[o>>2]&4|0)tD(d,c[x>>2]|0,c[u>>2]|0,c[n>>2]|0,c[v>>2]|0);uD(d)}l=z;return}function qz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+144|0;p=u+128|0;o=u+112|0;q=u+16|0;r=u;i=u+96|0;j=u+80|0;s=u+64|0;t=u+48|0;k=e+52|0;g=c[k>>2]|0;f=d+16|0;if(g){n=g+56|0;g=e+16|0;m=e+32|0;c[o>>2]=c[g>>2];c[o+4>>2]=c[g+4>>2];c[o+8>>2]=c[g+8>>2];c[o+12>>2]=c[g+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];rz(i,o,p);m=(c[f>>2]|0)+16|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];c[p>>2]=c[m>>2];c[p+4>>2]=c[m+4>>2];c[p+8>>2]=c[m+8>>2];c[p+12>>2]=c[m+12>>2];_y(j,o,p);c[n>>2]=c[j>>2];c[n+4>>2]=c[j+4>>2];c[n+8>>2]=c[j+8>>2];c[n+12>>2]=c[j+12>>2];mw(b,10,c[k>>2]|0);Yy(b,d)|0}m=(c[f>>2]|0)+16|0;c[r>>2]=c[m>>2];c[r+4>>2]=c[m+4>>2];c[r+8>>2]=c[m+8>>2];c[r+12>>2]=c[m+12>>2];m=e+48|0;n=e+56|0;j=e+64|0;k=q+16|0;i=0;while(1){if((i|0)>=(c[m>>2]|0))break;if((i|0)>0){f=(c[n>>2]|0)+(i<<2)|0;g=c[f>>2]|0;if(!(a[j>>0]|0)){g=g+32|0;c[k>>2]=c[g>>2];c[k+4>>2]=c[g+4>>2];c[k+8>>2]=c[g+8>>2];c[k+12>>2]=c[g+12>>2];h[q>>3]=+h[(c[f>>2]|0)+16>>3];f=k;g=0}else{g=g+16|0;c[q>>2]=c[g>>2];c[q+4>>2]=c[g+4>>2];c[q+8>>2]=c[g+8>>2];c[q+12>>2]=c[g+12>>2];h[k>>3]=+h[q>>3];f=(c[f>>2]|0)+32|0;g=1}h[q+(g<<4)+8>>3]=+h[f+8>>3];c[o>>2]=c[q>>2];c[o+4>>2]=c[q+4>>2];c[o+8>>2]=c[q+8>>2];c[o+12>>2]=c[q+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];_y(s,o,p);c[q>>2]=c[s>>2];c[q+4>>2]=c[s+4>>2];c[q+8>>2]=c[s+8>>2];c[q+12>>2]=c[s+12>>2];c[o>>2]=c[k>>2];c[o+4>>2]=c[k+4>>2];c[o+8>>2]=c[k+8>>2];c[o+12>>2]=c[k+12>>2];c[p>>2]=c[r>>2];c[p+4>>2]=c[r+4>>2];c[p+8>>2]=c[r+8>>2];c[p+12>>2]=c[r+12>>2];_y(t,o,p);c[k>>2]=c[t>>2];c[k+4>>2]=c[t+4>>2];c[k+8>>2]=c[t+8>>2];c[k+12>>2]=c[t+12>>2];HD(b,q,2)}qz(b,d,c[(c[n>>2]|0)+(i<<2)>>2]|0);i=i+1|0}l=u;return}function rz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=(+h[b+8>>3]+ +h[c+8>>3])*.5;h[a>>3]=(+h[b>>3]+ +h[c>>3])*.5;h[a+8>>3]=d;return}function sz(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;e=c[b+60>>2]|0;if(!(((e|0)!=0?(a[e>>0]|0)==(a[d>>0]|0):0)?(vJ(e,d)|0)==0:0))f=4;a:do if((f|0)==4){g=b+56|0;f=c[b+48>>2]|0;e=0;while(1){if((e|0)>=(f|0)){b=0;break a}b=sz(c[(c[g>>2]|0)+(e<<2)>>2]|0,d)|0;if(!b)e=e+1|0;else break}}while(0);return b|0}function tz(a,b){a=a|0;b=b|0;var d=0;d=b+8|0;h[d>>3]=+h[d>>3]*1.375;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];return}function uz(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0.0,k=0.0,l=0.0,m=0.0;f=+h[b>>3]*.5;m=+h[b+8>>3];i=m*.5;m=m/11.0;h[a>>3]=f;e=i-m;h[a+8>>3]=e;h[a+16>>3]=f;g=i-m*.44821599999999995;h[a+24>>3]=g;j=f*.551784;h[a+32>>3]=j;h[a+40>>3]=i;h[a+48>>3]=0.0;h[a+56>>3]=i;k=f*-.551784;h[a+64>>3]=k;h[a+72>>3]=i;l=-f;h[a+80>>3]=l;h[a+88>>3]=g;d=a+96|0;h[d>>3]=l;h[a+104>>3]=e;b=a+112|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+128|0;h[b>>3]=l;h[a+136>>3]=m-i;d=a+144|0;c[d>>2]=c[b>>2];c[d+4>>2]=c[b+4>>2];c[d+8>>2]=c[b+8>>2];c[d+12>>2]=c[b+12>>2];h[a+160>>3]=l;g=-g;h[a+168>>3]=g;h[a+176>>3]=k;i=-i;h[a+184>>3]=i;h[a+192>>3]=0.0;h[a+200>>3]=i;h[a+208>>3]=j;h[a+216>>3]=i;h[a+224>>3]=f;h[a+232>>3]=g;d=a+240|0;h[d>>3]=f;h[a+248>>3]=-e;b=a+256|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];b=a+288|0;d=a+272|0;c[d>>2]=c[a>>2];c[d+4>>2]=c[a+4>>2];c[d+8>>2]=c[a+8>>2];c[d+12>>2]=c[a+12>>2];c[b>>2]=c[a>>2];c[b+4>>2]=c[a+4>>2];c[b+8>>2]=c[a+8>>2];c[b+12>>2]=c[a+12>>2];return}function vz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;x=l;l=l+144|0;u=x+112|0;t=x+96|0;w=x+80|0;s=x+64|0;v=x+32|0;q=x+16|0;r=x;f=x+48|0;do if(a){j=c[a+4>>2]|0;k=c[a>>2]|0;o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&3)*90|0;c[u>>2]=c[b>>2];c[u+4>>2]=c[b+4>>2];c[u+8>>2]=c[b+8>>2];c[u+12>>2]=c[b+12>>2];Zv(f,u,o);c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];f=v+8|0;if(j|0){d=+h[v>>3];if(!(+h[j>>3]<=d)){a=0;break}if(!(d<=+h[j+16>>3])){a=0;break}d=+h[f>>3];if(!(+h[j+8>>3]<=d)){a=0;break}a=d<=+h[j+24>>3];break}if((k|0)==(c[42370]|0)){d=+h[20906];e=+h[20907];i=+h[20908]}else{a=k+16|0;b=c[(c[a>>2]|0)+12>>2]|0;c[42371]=b;c[42372]=c[b+44>>2];c[42373]=c[b+8>>2];if(!(c[b+40>>2]&2048)){n=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;o=c[a>>2]|0;h[(n?167272:167280)>>3]=+h[o+88>>3]+ +h[o+96>>3];h[(n?167280:167272)>>3]=+h[o+80>>3];i=+h[o+32>>3]*72.0;g=+h[o+40>>3]*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);i=+(~~(i+(i>=0.0?.5:-.5))|0)}else{ZA(u,b);i=+h[u+16>>3]-+h[u>>3];g=+h[u+24>>3]-+h[u+8>>3];o=(c[(c[(ro(k)|0)+16>>2]|0)+116>>2]&1|0)==0;h[(o?167272:167280)>>3]=i;h[(o?167280:167272)>>3]=g}d=+h[20909];if(d==0.0){h[20909]=1.0;d=1.0}e=+h[20910];if(e==0.0){h[20910]=1.0;e=1.0}d=i/d;h[20906]=d;e=g/e;h[20907]=e;i=i*.5;h[20908]=i;h[20911]=g*.5;o=S((c[(c[42371]|0)+4>>2]|0)+-1|0,c[42373]|0)|0;c[42374]=(o|0)>0?o:0;c[42370]=k}g=d*+h[v>>3];h[v>>3]=g;d=e*+h[f>>3];h[f>>3]=d;if(!(+F(+g)>i)?(e=+F(+d),p=+h[20911],!(e>p)):0){o=c[42373]|0;if((o|0)<3){a=+sJ(g/i,d/p)<1.0;break}b=(c[42375]|0)%(o|0)|0;a=(b+1|0)%(o|0)|0;k=c[42372]|0;m=c[42374]|0;n=k+(m+b<<4)|0;c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];n=k+(m+a<<4)|0;c[r>>2]=c[n>>2];c[r+4>>2]=c[n+4>>2];c[r+8>>2]=c[n+8>>2];c[r+12>>2]=c[n+12>>2];c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[w>>2]=c[41824];c[w+4>>2]=c[41825];c[w+8>>2]=c[41826];c[w+12>>2]=c[41827];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[n>>2];c[u+4>>2]=c[n+4>>2];c[u+8>>2]=c[n+8>>2];c[u+12>>2]=c[n+12>>2];if(dz(s,w,t,u)|0){c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[w>>2]=c[q>>2];c[w+4>>2]=c[q+4>>2];c[w+8>>2]=c[q+8>>2];c[w+12>>2]=c[q+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[u>>2]=c[41824];c[u+4>>2]=c[41825];c[u+8>>2]=c[41826];c[u+12>>2]=c[41827];n=(dz(s,w,t,u)|0)!=0;if(n?(c[s>>2]=c[v>>2],c[s+4>>2]=c[v+4>>2],c[s+8>>2]=c[v+8>>2],c[s+12>>2]=c[v+12>>2],c[w>>2]=c[r>>2],c[w+4>>2]=c[r+4>>2],c[w+8>>2]=c[r+8>>2],c[w+12>>2]=c[r+12>>2],c[t>>2]=c[41824],c[t+4>>2]=c[41825],c[t+8>>2]=c[41826],c[t+12>>2]=c[41827],c[u>>2]=c[q>>2],c[u+4>>2]=c[q+4>>2],c[u+8>>2]=c[q+8>>2],c[u+12>>2]=c[q+12>>2],(dz(s,w,t,u)|0)!=0):0){a=1;break}else{j=b;b=1}while(1){if((b|0)>=(o|0)){b=31;break}if(n){f=a;a=(a+1|0)%(o|0)|0}else{f=(j+-1+o|0)%(o|0)|0;a=j}q=k+(m+f<<4)|0;r=k+(m+a<<4)|0;c[s>>2]=c[v>>2];c[s+4>>2]=c[v+4>>2];c[s+8>>2]=c[v+8>>2];c[s+12>>2]=c[v+12>>2];c[w>>2]=c[41824];c[w+4>>2]=c[41825];c[w+8>>2]=c[41826];c[w+12>>2]=c[41827];c[t>>2]=c[q>>2];c[t+4>>2]=c[q+4>>2];c[t+8>>2]=c[q+8>>2];c[t+12>>2]=c[q+12>>2];c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];if(!(dz(s,w,t,u)|0)){b=30;break}else{j=f;b=b+1|0}}if((b|0)==30){c[42375]=f;a=0;break}else if((b|0)==31){c[42375]=j;a=1;break}}else a=0}else a=0}else{c[42370]=0;a=0}while(0);l=x;return a&1|0}function wz(a,b){a=a|0;b=b|0;var d=0.0,e=0.0,f=0,g=0.0,i=0,j=0,k=0;j=l;l=l+32|0;f=j+16|0;i=j;if(a){a=c[a>>2]|0;k=(c[(c[(ro(a)|0)+16>>2]|0)+116>>2]&3)*90|0;c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Zv(i,f,k);g=+h[i>>3];e=+h[i+8>>3];if((a|0)==(c[42378]|0))d=+h[20914];else{i=c[(c[a+16>>2]|0)+12>>2]|0;k=(c[i+4>>2]<<1)+-2|0;d=+h[(c[i+44>>2]|0)+((((k|0)>0?k:0)|1)<<4)>>3];h[20914]=d;c[42378]=a}if(!(+F(+g)>d)?!(+F(+e)>d):0)a=+sJ(g,e)<=d&1;else a=0}else{c[42378]=0;a=0}l=j;return a|0}function xz(e,f){e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0.0,z=0;w=l;l=l+16|0;p=w;m=c[e+16>>2]|0;v=m+208|0;n=c[v>>2]|0;if(!n){i=m+228|0;j=m+212|0;k=m+244|0;g=e+152|0;if(!(b[m+260>>1]&1)){u=i;t=0}else o=4}else{g=e+152|0;i=m+228|0;k=m+244|0;j=m+212|0;o=4}if((o|0)==4)if(!(c[g>>2]&4)){tD(e,n,c[i>>2]|0,c[k>>2]|0,c[j>>2]|0);u=i;t=1}else{u=i;t=1}q=f+16|0;n=c[(c[q>>2]|0)+12>>2]|0;r=c[n+44>>2]|0;s=c[n+8>>2]|0;n=c[n+4>>2]|0;if((c[42376]|0)<(s|0)){m=s+2|0;c[42376]=m;i=c[42377]|0;m=m<<4;if(!i)i=tw(m)|0;else i=vw(i,m)|0;c[42377]=i}az(f,p)|0;if(!(c[p>>2]&32))CD(e,21044);else CD(e,21040);i=c[42242]|0;if(i|0)LD(e,+BA(f,i,1.0,0.0));i=d[(c[q>>2]|0)+117>>0]|0;do if(!(i&1)){if(i&2|0){yD(e,DA(f,c[42214]|0,91260)|0);i=DA(f,c[42215]|0,91268)|0;AD(e,i);break}if(i&8|0){yD(e,DA(f,c[42218]|0,91276)|0);i=DA(f,c[42219]|0,91284)|0;AD(e,i);break}if(!(i&4)){i=$y(f,122122)|0;AD(e,i);Yy(e,f)|0;break}else{yD(e,DA(f,c[42216]|0,91292)|0);i=DA(f,c[42217]|0,91300)|0;AD(e,i);break}}else{yD(e,DA(f,c[42212]|0,91244)|0);i=DA(f,c[42213]|0,91252)|0;AD(e,i)}while(0);if(!n)if(!(a[i>>0]|0))m=1;else{yD(e,i);m=1}else m=n;n=1;o=0;while(1){if((o|0)>=(m|0))break;p=c[42377]|0;f=S(o,s)|0;i=0;while(1){if((i|0)>=(s|0))break;z=i+f|0;y=+h[r+(z<<4)+8>>3];x=c[q>>2]|0;h[p+(i<<4)>>3]=+h[r+(z<<4)>>3]+ +h[x+16>>3];h[p+(i<<4)+8>>3]=y+ +h[x+24>>3];i=i+1|0}DD(e,p,s,n);n=0;o=o+1|0}if(t){if(c[g>>2]&4|0)tD(e,c[v>>2]|0,c[u>>2]|0,c[k>>2]|0,c[j>>2]|0);uD(e)}l=w;return}function yz(a,b,e,f){a=a|0;b=b|0;e=e|0;f=f|0;var g=0,h=0;g=l;l=l+48|0;h=g;e=zz(b,e,f)|0;c[h+36>>2]=c[f+36>>2];ez(b,c[f+24>>2]|0,h,e,d[f+33>>0]|0,0)|0;b=h;e=a+40|0;do{c[a>>2]=c[b>>2];a=a+4|0;b=b+4|0}while((a|0)<(e|0));l=g;return}function zz(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0.0,B=0.0,C=0;z=l;l=l+32|0;y=z;j=z+24|0;n=z+16|0;x=c[(c[(c[(ro(b)|0)+60>>2]|0)+16>>2]|0)+116>>2]&3;f=b+16|0;w=(c[f>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Az(j,y,x);w=(c[d+16>>2]|0)+16|0;c[y>>2]=c[w>>2];c[y+4>>2]=c[w+4>>2];c[y+8>>2]=c[w+8>>2];c[y+12>>2]=c[w+12>>2];Az(n,y,x);x=a[e+33>>0]|0;y=x&255;a:do switch(x<<24>>24){case 0:case 15:{d=0;break}default:{d=c[e+24>>2]|0;if(!d){x=(c[(c[(ro(b)|0)+16>>2]|0)+116>>2]&1|0)==0;w=c[f>>2]|0;B=+h[w+80>>3]*.5;A=-B;k=+h[w+88>>3];g=-k;m=x?g:A;i=x?k:B;k=x?B:k;g=x?A:g}else{m=+h[d>>3];i=+h[d+16>>3];k=+h[d+24>>3];g=+h[d+8>>3]}v=~~((g+k)*.5);w=~~((m+i)*.5);x=c[j>>2]|0;t=c[j+4>>2]|0;u=c[n>>2]|0;s=c[n+4>>2]|0;r=~~g;q=~~i;p=~~k;o=~~m;j=0;n=0;d=0;e=0;b=0;while(1){if((n|0)==4)break a;if(1<<n&y){switch(n|0){case 0:{e=w;b=r;break}case 1:{e=q;b=v;break}case 2:{e=w;b=p;break}case 3:{e=o;b=v;break}default:{}}e=x+e|0;b=t+b|0;f=e-u|0;C=b-s|0;f=(S(C,C)|0)+(S(f,f)|0)|0;if((d|0)==0|(f|0)<(j|0))d=c[21052+(n<<2)>>2]|0;else f=j}else f=j;j=f;n=n+1|0}}}while(0);l=z;return d|0}function Az(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0;g=b+8|0;switch(d|0){case 0:{f=+h[b>>3];e=+h[g>>3];break}case 2:{f=+h[b>>3];e=-+h[g>>3];break}case 1:{f=-+h[g>>3];e=+h[b>>3];break}case 3:{f=+h[g>>3];e=+h[b>>3];break}default:{f=0.0;e=0.0}}c[a>>2]=~~(f+(f>=0.0?.5:-.5));c[a+4>>2]=~~(e+(e>=0.0?.5:-.5));return}function Bz(){var a=0,b=0,d=0;a=l;l=l+32|0;b=a+16|0;d=a;c[d>>2]=0;c[d+4>>2]=0;c[d+8>>2]=0;c[d+12>>2]=0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];vz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];wz(0,b)|0;c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];Ty(0,b)|0;l=a;return}function Cz(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0.0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=l;l=l+192|0;s=z+176|0;x=z+112|0;y=z+48|0;t=z+32|0;u=z+24|0;v=z+16|0;w=z;if(!(e<<24>>24)){k=d+48|0;c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2];k=u;m=v;n=x;o=0}else{c[t>>2]=c[d>>2];c[t+4>>2]=c[d+4>>2];c[t+8>>2]=c[d+8>>2];c[t+12>>2]=c[d+12>>2];k=v;m=u;n=0;o=x}h[u>>3]=0.0;h[v>>3]=1.0;q=t+8|0;f=0.0;g=1.0;j=0;p=+h[t>>3];while(1){r=+h[q>>3];f=(g+f)*.5;MA(w,d,3,f,n,o);c[t>>2]=c[w>>2];c[t+4>>2]=c[w+4>>2];c[t+8>>2]=c[w+8>>2];c[t+12>>2]=c[w+12>>2];c[s>>2]=c[w>>2];c[s+4>>2]=c[w+4>>2];c[s+8>>2]=c[w+8>>2];c[s+12>>2]=c[w+12>>2];a:do if(!((lb[b&63](a,s)|0)<<24>>24)){e=0;while(1){if((e|0)==4){e=k;j=1;break a}j=y+(e<<4)|0;A=x+(e<<4)|0;c[j>>2]=c[A>>2];c[j+4>>2]=c[A+4>>2];c[j+8>>2]=c[A+8>>2];c[j+12>>2]=c[A+12>>2];e=e+1|0}}else e=m;while(0);h[e>>3]=f;i=+h[t>>3];p=p-i;if(!((p>=0.0?p:-p)>.5)?(r=r-+h[q>>3],!((r>=0.0?r:-r)>.5)):0)break;f=+h[u>>3];g=+h[v>>3];p=i}b:do if(!(j<<24>>24)){e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;y=x+(e<<4)|0;c[A>>2]=c[y>>2];c[A+4>>2]=c[y+4>>2];c[A+8>>2]=c[y+8>>2];c[A+12>>2]=c[y+12>>2];e=e+1|0}}else{e=0;while(1){if((e|0)==4)break b;A=d+(e<<4)|0;x=y+(e<<4)|0;c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];e=e+1|0}}while(0);l=z;return}function Dz(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0;m=l;l=l+48|0;d=m+16|0;f=m;g=m+32|0;i=a+16|0;j=c[i>>2]|0;k=c[j+8>>2]|0;if(k|0?(e=c[(c[k+4>>2]|0)+12>>2]|0,e|0):0){c[g>>2]=a;c[g+4>>2]=0;n=+h[j+96>>3];h[f>>3]=+h[b>>3]-+h[j+16>>3];h[f+8>>3]=+h[b+8>>3]-+h[j+24>>3];c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2];k=lb[e&63](g,d)|0;h[(c[i>>2]|0)+96>>3]=n;Ez(g,a,b,k)}l=m;return}function Ez(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0.0,m=0,n=0;n=l;l=l+64|0;m=n;g=b+16|0;i=c[g>>2]|0;k=+h[i+96>>3];j=i+16|0;f=i+24|0;b=0;while(1){if((b|0)==4)break;h[m+(b<<4)>>3]=+h[d+(b<<4)>>3]-+h[j>>3];h[m+(b<<4)+8>>3]=+h[d+(b<<4)+8>>3]-+h[f>>3];b=b+1|0}Cz(a,c[(c[(c[i+8>>2]|0)+4>>2]|0)+12>>2]|0,m,e);f=c[g>>2]|0;g=f+16|0;i=f+24|0;b=0;while(1){if((b|0)==4)break;h[d+(b<<4)>>3]=+h[m+(b<<4)>>3]+ +h[g>>3];h[d+(b<<4)+8>>3]=+h[m+(b<<4)+8>>3]+ +h[i>>3];b=b+1|0}h[f+96>>3]=k;l=n;return}function Fz(b,d){b=b|0;d=d|0;var e=0,f=0;while(1){f=b+16|0;b=c[f>>2]|0;if(!(a[b+112>>0]|0))break;b=c[b+116>>2]|0}b=c[b+8>>2]|0;if(!b){b=sw(40)|0;c[(c[f>>2]|0)+8>>2]=b}e=c[b>>2]|0;b=((c[b+4>>2]|0)*48|0)+48|0;if(!e)b=tw(b)|0;else b=vw(e,b)|0;f=c[(c[f>>2]|0)+8>>2]|0;c[f>>2]=b;f=f+4|0;e=c[f>>2]|0;c[f>>2]=e+1;f=b+(e*48|0)|0;c[f>>2]=sw(d<<4)|0;c[b+(e*48|0)+4>>2]=d;b=b+(e*48|0)+8|0;e=b+40|0;do{c[b>>2]=0;b=b+4|0}while((b|0)<(e|0));return f|0}function Gz(b,e,f,g,i){b=b|0;e=e|0;f=f|0;g=g|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0.0,H=0.0;D=l;l=l+96|0;A=D+16|0;t=D;x=D+92|0;y=D+88|0;u=D+80|0;m=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;z=ro(m)|0;B=Fz(b,g)|0;n=b;while(1){o=c[n+16>>2]|0;if(!(a[o+112>>0]|0))break;n=c[o+116>>2]|0}if((a[i+8>>0]|0)==0?(j=c[m+16>>2]|0,k=c[e+16>>2]|0,(c[j+232>>2]|0)==(c[k+232>>2]|0)):0){p=(c[j+236>>2]|0)>(c[k+236>>2]|0);w=p?m:e;m=p?e:m}else w=e;F=(m|0)==(c[((c[n>>2]&3|0)==3?n:n+48|0)+40>>2]|0);p=c[o+40>>2]|0;e=c[o+80>>2]|0;k=d[o+86>>0]|0;E=d[o+46>>0]|0;n=F?k:E;j=F?p:e;o=F?e:p;p=g+-4|0;g=t+8|0;e=u+4|0;if((((F?E:k)|0)!=0?(r=m+16|0,q=c[(c[r>>2]|0)+8>>2]|0,(q|0)!=0):0)?(c[(c[q+4>>2]|0)+12>>2]|0)!=0:0){c[u>>2]=m;c[e>>2]=j;k=0;while(1){if((k|0)>=(p|0))break;j=k+3|0;F=c[r>>2]|0;h[t>>3]=+h[f+(j<<4)>>3]-+h[F+16>>3];h[g>>3]=+h[f+(j<<4)+8>>3]-+h[F+24>>3];F=c[(c[(c[F+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[t>>2];c[A+4>>2]=c[t+4>>2];c[A+8>>2]=c[t+8>>2];c[A+12>>2]=c[t+12>>2];if(!((lb[F&63](u,A)|0)<<24>>24))break;else k=j}c[x>>2]=k;Ez(u,m,f+(k<<4)|0,1)}else{c[x>>2]=0;k=0}if(((n|0)!=0?(v=w+16|0,s=c[(c[v>>2]|0)+8>>2]|0,(s|0)!=0):0)?(c[(c[s+4>>2]|0)+12>>2]|0)!=0:0){c[u>>2]=w;c[e>>2]=o;j=p;while(1){if((j|0)<=0)break;F=c[v>>2]|0;h[t>>3]=+h[f+(j<<4)>>3]-+h[F+16>>3];h[g>>3]=+h[f+(j<<4)+8>>3]-+h[F+24>>3];F=c[(c[(c[F+8>>2]|0)+4>>2]|0)+12>>2]|0;c[A>>2]=c[t>>2];c[A+4>>2]=c[t+4>>2];c[A+8>>2]=c[t+8>>2];c[A+12>>2]=c[t+12>>2];if(!((lb[F&63](u,A)|0)<<24>>24))break;j=j+-3|0}c[y>>2]=j;Ez(u,w,f+(j<<4)|0,0)}else{c[y>>2]=p;j=p}while(1){if((k|0)>=(p|0))break;e=k+3|0;H=+h[f+(k<<4)>>3]-+h[f+(e<<4)>>3];G=+h[f+(k<<4)+8>>3]-+h[f+(e<<4)+8>>3];if(H*H+G*G<1.0e-06)k=e;else break}c[x>>2]=k;while(1){if((j|0)<=0)break;F=j+3|0;G=+h[f+(j<<4)>>3]-+h[f+(F<<4)>>3];H=+h[f+(j<<4)+8>>3]-+h[f+(F<<4)+8>>3];if(!(G*G+H*H<1.0e-06))break;j=j+-3|0}c[y>>2]=j;Hz(b,w,f,x,y,B,i);p=c[x>>2]|0;m=(c[y>>2]|0)+4|0;n=A+16|0;o=A+32|0;g=A+48|0;k=z+16|0;j=p;while(1){if((j|0)>=(m|0))break;F=(c[B>>2]|0)+(j-p<<4)|0;e=f+(j<<4)|0;c[F>>2]=c[e>>2];c[F+4>>2]=c[e+4>>2];c[F+8>>2]=c[e+8>>2];c[F+12>>2]=c[e+12>>2];c[A>>2]=c[e>>2];c[A+4>>2]=c[e+4>>2];c[A+8>>2]=c[e+8>>2];c[A+12>>2]=c[e+12>>2];e=j+1|0;if((e|0)>=(m|0)){C=35;break}E=(c[B>>2]|0)+(e-p<<4)|0;F=f+(e<<4)|0;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];c[n>>2]=c[F>>2];c[n+4>>2]=c[F+4>>2];c[n+8>>2]=c[F+8>>2];c[n+12>>2]=c[F+12>>2];F=j+2|0;E=(c[B>>2]|0)+(F-p<<4)|0;F=f+(F<<4)|0;c[E>>2]=c[F>>2];c[E+4>>2]=c[F+4>>2];c[E+8>>2]=c[F+8>>2];c[E+12>>2]=c[F+12>>2];c[o>>2]=c[F>>2];c[o+4>>2]=c[F+4>>2];c[o+8>>2]=c[F+8>>2];c[o+12>>2]=c[F+12>>2];F=j+3|0;E=f+(F<<4)|0;c[g>>2]=c[E>>2];c[g+4>>2]=c[E+4>>2];c[g+8>>2]=c[E+8>>2];c[g+12>>2]=c[E+12>>2];bu((c[k>>2]|0)+16|0,A);j=F}c[B+4>>2]=m-p;l=D;return}function Hz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;m=p+4|0;n=p;o=b;while(1){j=c[(c[o+16>>2]|0)+116>>2]|0;if(!j)break;else o=j}if(!(a[i+8>>0]|0))k=(fb[c[i>>2]&31](o)|0)&255;else k=0;xt(o,m,n);j=i+4|0;if((fb[c[j>>2]&31](d)|0)<<24>>24)c[n>>2]=0;if(!((fb[c[j>>2]&31](c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0)<<24>>24))b=c[m>>2]|0;else{c[m>>2]=0;b=0}if(k){d=c[n>>2]|0;c[m>>2]=d;c[n>>2]=b;b=d}if(!(a[i+9>>0]|0)){if(b|0)c[f>>2]=Mt(o,e,c[f>>2]|0,c[g>>2]|0,h,b)|0;j=c[n>>2]|0;if(j|0)c[g>>2]=Kt(o,e,c[f>>2]|0,c[g>>2]|0,h,j)|0}else{j=c[n>>2]|0;if(j|b|0)Nt(o,e,c[f>>2]|0,c[g>>2]|0,h,b,j)}l=p;return}function Iz(a,b){a=a|0;b=b|0;var d=0,e=0;if(+h[b>>3]<+h[b+16>>3]?+h[b+8>>3]<+h[b+24>>3]:0){d=c[a+84>>2]|0;e=a+80|0;a=c[e>>2]|0;c[e>>2]=a+1;a=d+(a<<5)|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];c[a+16>>2]=c[b+16>>2];c[a+20>>2]=c[b+20>>2];c[a+24>>2]=c[b+24>>2];c[a+28>>2]=c[b+28>>2]}return}function Jz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0.0,n=0,o=0.0,p=0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0.0;D=l;l=l+112|0;A=D+72|0;r=D+56|0;p=D+16|0;s=D;n=c[d>>2]&3;t=d+48|0;B=c[((n|0)==3?d:t)+40>>2]|0;u=d+16|0;z=c[u>>2]|0;i=z+16|0;if(a[z+47>>0]|0){yz(p,B,c[((n|0)==2?d:d+-48|0)+40>>2]|0,i);n=p;p=i+40|0;do{c[i>>2]=c[n>>2];i=i+4|0;n=n+4|0}while((i|0)<(p|0))}w=B+16|0;n=c[w>>2]|0;i=c[n+8>>2]|0;if(!i)p=0;else p=c[(c[i+4>>2]|0)+16>>2]|0;z=n+16|0;n=(c[u>>2]|0)+16|0;c[r>>2]=c[z>>2];c[r+4>>2]=c[z+4>>2];c[r+8>>2]=c[z+8>>2];c[r+12>>2]=c[z+12>>2];c[A>>2]=c[n>>2];c[A+4>>2]=c[n+4>>2];c[A+8>>2]=c[n+8>>2];c[A+12>>2]=c[n+12>>2];Kz(s,r,A);c[b>>2]=c[s>>2];c[b+4>>2]=c[s+4>>2];c[b+8>>2]=c[s+8>>2];c[b+12>>2]=c[s+12>>2];n=b+16|0;if(!(g<<24>>24)){i=c[u>>2]|0;if(!(a[i+45>>0]|0))i=0;else{j=+h[i+32>>3];C=9}}else{j=+Lz(c[((c[d>>2]&3|0)==3?d:t)+40>>2]|0);C=9}if((C|0)==9){h[n>>3]=j;i=1}a[b+29>>0]=i;c[b+80>>2]=0;c[b+88>>2]=d;y=f+32|0;c[y>>2]=c[b>>2];c[y+4>>2]=c[b+4>>2];c[y+8>>2]=c[b+8>>2];c[y+12>>2]=c[b+12>>2];y=f+48|0;z=f+52|0;t=b+8|0;g=f+56|0;switch(e|0){case 1:{i=c[w>>2]|0;if((a[i+156>>0]|0)==0?(s=a[(c[u>>2]|0)+49>>0]|0,x=s&255,s<<24>>24!=0):0){c[A>>2]=c[f>>2];c[A+4>>2]=c[f+4>>2];c[A+8>>2]=c[f+8>>2];c[A+12>>2]=c[f+12>>2];c[A+16>>2]=c[f+16>>2];c[A+20>>2]=c[f+20>>2];c[A+24>>2]=c[f+24>>2];c[A+28>>2]=c[f+28>>2];s=A+16|0;r=i+80|0;o=+h[t>>3];p=i+24|0;do if(!(x&4)){i=A+24|0;if(x&1|0){c[y>>2]=1;h[i>>3]=+h[(+h[i>>3]>o?s:b)+8>>3];c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}n=A+8|0;k=+h[b>>3];j=+h[p>>3]-+h[r>>3]*.5;if(!(x&8)){c[y>>2]=2;h[A>>3]=k;h[n>>3]=j;h[i>>3]=o;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}else{c[y>>2]=8;h[s>>3]=k;h[n>>3]=j;h[i>>3]=o;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}}else{c[y>>2]=4;m=+h[A>>3];j=+h[p>>3]+ +h[r>>3]*.5;k=+h[s>>3];if(+h[b>>3]<+h[i+16>>3]){m=m+-1.0;q=j+ +((c[(c[(ro(B)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[w>>2]|0;h[s>>3]=+h[i+16>>3]-+h[i+88>>3];h[A+24>>3]=o;h[A+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[A>>3]=m;h[f+56>>3]=m;h[f+64>>3]=o;h[f+72>>3]=k;h[f+80>>3]=q;i=f+88|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];c[i+16>>2]=c[A+16>>2];c[i+20>>2]=c[A+20>>2];c[i+24>>2]=c[A+24>>2];c[i+28>>2]=c[A+28>>2];i=2;break}else{k=k+1.0;q=j+ +((c[(c[(ro(B)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[w>>2]|0;h[A>>3]=+h[i+16>>3]+ +h[i+96>>3]+0.0;h[A+24>>3]=o;h[A+8>>3]=+h[i+24>>3]-+h[i+80>>3]*.5;h[s>>3]=k;h[f+56>>3]=m;h[f+64>>3]=o;h[f+72>>3]=k;h[f+80>>3]=q;i=f+88|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];c[i+16>>2]=c[A+16>>2];c[i+20>>2]=c[A+20>>2];c[i+24>>2]=c[A+24>>2];c[i+28>>2]=c[A+28>>2];i=2;break}}while(0);c[z>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((B|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0}else{d=1;C=47}break}case 2:{x=a[(c[u>>2]|0)+49>>0]|0;s=x&255;if(!(x<<24>>24))C=46;else{c[A>>2]=c[f>>2];c[A+4>>2]=c[f+4>>2];c[A+8>>2]=c[f+8>>2];c[A+12>>2]=c[f+12>>2];c[A+16>>2]=c[f+16>>2];c[A+20>>2]=c[f+20>>2];c[A+24>>2]=c[f+24>>2];c[A+28>>2]=c[f+28>>2];n=A+8|0;do if(!(s&4)){i=A+16|0;p=A+24|0;r=(c[y>>2]|0)==4;if(s&1|0)if(r){x=c[w>>2]|0;q=+h[x+24>>3]-+h[x+80>>3]*.5;o=+h[i>>3]+1.0;k=+h[b>>3];m=q-+((c[(c[(ro(B)|0)+16>>2]|0)+252>>2]|0)/2|0|0);b=c[w>>2]|0;h[A>>3]=+h[b+16>>3]+ +h[b+96>>3]+0.0;h[n>>3]=q;h[p>>3]=+h[b+24>>3]+ +h[b+80>>3]*.5;h[i>>3]=o;h[f+56>>3]=k;h[f+64>>3]=m;h[f+72>>3]=o;h[f+80>>3]=q;i=f+88|0;c[i>>2]=c[A>>2];c[i+4>>2]=c[A+4>>2];c[i+8>>2]=c[A+8>>2];c[i+12>>2]=c[A+12>>2];c[i+16>>2]=c[A+16>>2];c[i+20>>2]=c[A+20>>2];c[i+24>>2]=c[A+24>>2];c[i+28>>2]=c[A+28>>2];i=2;break}else{h[p>>3]=+h[(+h[p>>3]>+h[t>>3]?i:b)+8>>3];c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}q=+h[b>>3];b=c[w>>2]|0;k=+h[t>>3];o=+h[b+80>>3]*.5;j=k+1.0;E=+h[b+24>>3];m=E-o;o=E+o;if(!(s&8)){h[A>>3]=q;if(r){h[p>>3]=o;j=k;i=A}else h[n>>3]=m;h[i+8>>3]=j;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}else{h[i>>3]=q+1.0;if(r){h[p>>3]=o;j=k+-1.0;i=A}else h[n>>3]=m;h[i+8>>3]=j;c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1;break}}else{h[n>>3]=+h[(+h[n>>3]<+h[t>>3]?A:b)+8>>3];c[g>>2]=c[A>>2];c[g+4>>2]=c[A+4>>2];c[g+8>>2]=c[A+8>>2];c[g+12>>2]=c[A+12>>2];c[g+16>>2]=c[A+16>>2];c[g+20>>2]=c[A+20>>2];c[g+24>>2]=c[A+24>>2];c[g+28>>2]=c[A+28>>2];i=1}while(0);c[z>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((B|0)==(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0)?i+16|0:i+56|0)+30>>0]=0;c[y>>2]=s}break}default:C=46}if((C|0)==46){d=c[y>>2]|0;C=47}a:do if((C|0)==47){if(p|0?(v=mb[p&3](B,(c[u>>2]|0)+16|0,d,g,z)|0,v|0):0){c[y>>2]=v;break};c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];c[g+16>>2]=c[f+16>>2];c[g+20>>2]=c[f+20>>2];c[g+24>>2]=c[f+24>>2];c[g+28>>2]=c[f+28>>2];c[z>>2]=1;switch(e|0){case 8:{va(123221,91518,569,91528);break}case 2:{h[((c[y>>2]|0)==4?g:f+72|0)+8>>3]=+h[t>>3];break a}case 1:{h[f+80>>3]=+h[t>>3];c[y>>2]=1;break a}default:break a}}while(0);l=D;return}function Kz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]+ +h[c+8>>3];h[a>>3]=+h[b>>3]+ +h[c>>3];h[a+8>>3]=d;return}function Lz(a){a=a|0;var b=0.0,d=0,e=0,f=0.0,g=0,i=0,j=0,k=0.0,l=0.0;i=c[a+16>>2]|0;j=c[i+172>>2]|0;f=0.0;g=0;while(1){a=c[j+(g<<2)>>2]|0;if(!a)break;f=f+ +h[(c[(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16>>2]|0)+16>>3];g=g+1|0}e=c[i+180>>2]|0;b=0.0;a=0;while(1){d=c[e+(a<<2)>>2]|0;if(!d)break;b=b+ +h[(c[(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+16>>3];a=a+1|0}k=+h[i+16>>3];l=+h[i+24>>3];j=c[j>>2]|0;f=+O(+(l-+h[(c[(c[((c[j>>2]&3|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+24>>3]),+(k-f/+(g|0)));j=c[e>>2]|0;return +((f+ +O(+(+h[(c[(c[((c[j>>2]&3|0)==2?j:j+-48|0)+40>>2]|0)+16>>2]|0)+24>>3]-l),+(b/+(a|0)-k)))*.5)}function Mz(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=l;l=l+112|0;C=F+72|0;r=F+56|0;p=F+16|0;t=F;o=c[d>>2]&3;v=d+-48|0;D=c[((o|0)==2?d:v)+40>>2]|0;x=d+16|0;B=c[x>>2]|0;i=B+56|0;if(a[B+87>>0]|0){yz(p,D,c[((o|0)==3?d:d+48|0)+40>>2]|0,i);o=p;p=i+40|0;do{c[i>>2]=c[o>>2];i=i+4|0;o=o+4|0}while((i|0)<(p|0))}z=D+16|0;o=c[z>>2]|0;i=c[o+8>>2]|0;if(!i)p=0;else p=c[(c[i+4>>2]|0)+16>>2]|0;w=b+40|0;B=o+16|0;o=(c[x>>2]|0)+56|0;c[r>>2]=c[B>>2];c[r+4>>2]=c[B+4>>2];c[r+8>>2]=c[B+8>>2];c[r+12>>2]=c[B+12>>2];c[C>>2]=c[o>>2];c[C+4>>2]=c[o+4>>2];c[C+8>>2]=c[o+8>>2];c[C+12>>2]=c[o+12>>2];Kz(t,r,C);c[w>>2]=c[t>>2];c[w+4>>2]=c[t+4>>2];c[w+8>>2]=c[t+8>>2];c[w+12>>2]=c[t+12>>2];o=b+56|0;if(!(g<<24>>24)){i=c[x>>2]|0;if(!(a[i+85>>0]|0))u=0;else{h[o>>3]=+h[i+72>>3];u=1}}else{s=+Lz(c[((c[d>>2]&3|0)==2?d:v)+40>>2]|0)+3.141592653589793;h[o>>3]=s;if(s<6.283185307179586)u=1;else va(91538,91518,606,91562)}a[b+69>>0]=u;B=f+32|0;c[B>>2]=c[w>>2];c[B+4>>2]=c[w+4>>2];c[B+8>>2]=c[w+8>>2];c[B+12>>2]=c[w+12>>2];B=f+48|0;g=f+52|0;v=f+56|0;t=b+48|0;switch(e|0){case 1:{i=c[z>>2]|0;if((a[i+156>>0]|0)==0?(b=a[(c[x>>2]|0)+89>>0]|0,A=b&255,b<<24>>24!=0):0){c[C>>2]=c[f>>2];c[C+4>>2]=c[f+4>>2];c[C+8>>2]=c[f+8>>2];c[C+12>>2]=c[f+12>>2];c[C+16>>2]=c[f+16>>2];c[C+20>>2]=c[f+20>>2];c[C+24>>2]=c[f+24>>2];c[C+28>>2]=c[f+28>>2];p=C+8|0;s=+h[t>>3];do if(!(A&4)){o=C+16|0;q=+h[w>>3];j=+h[i+80>>3]*.5;n=+h[i+24>>3];if(!(A&1)){i=C+24|0;j=n+j;if(!(A&8)){c[B>>2]=2;h[C>>3]=q;h[i>>3]=j;h[p>>3]=s;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1;break}else{c[B>>2]=8;h[o>>3]=q;h[i>>3]=j;h[p>>3]=s;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1;break}}else{c[B>>2]=1;k=+h[C>>3];m=+h[o>>3];j=n-j;if(q<+h[i+16>>3]){n=k+-1.0;q=j-+((c[(c[(ro(D)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[z>>2]|0;h[o>>3]=+h[i+16>>3]-+h[i+88>>3];h[p>>3]=s;h[C+24>>3]=+h[i+24>>3]+ +h[i+80>>3]*.5;h[C>>3]=n;h[f+56>>3]=n;h[f+64>>3]=q;h[f+72>>3]=m;h[f+80>>3]=s;i=f+88|0;c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[i+16>>2]=c[C+16>>2];c[i+20>>2]=c[C+20>>2];c[i+24>>2]=c[C+24>>2];c[i+28>>2]=c[C+28>>2];i=2;break}else{q=m+1.0;n=j-+((c[(c[(ro(D)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[z>>2]|0;h[C>>3]=+h[i+16>>3]+ +h[i+96>>3]+0.0;h[p>>3]=s;h[C+24>>3]=+h[i+24>>3]+ +h[i+80>>3]*.5;h[o>>3]=q;h[f+56>>3]=k;h[f+64>>3]=n;h[f+72>>3]=q;h[f+80>>3]=s;i=f+88|0;c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[i+16>>2]=c[C+16>>2];c[i+20>>2]=c[C+20>>2];c[i+24>>2]=c[C+24>>2];c[i+28>>2]=c[C+28>>2];i=2;break}}}else{c[B>>2]=4;h[p>>3]=+h[(+h[p>>3]<s?C:w)+8>>3];c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1}while(0);c[g>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((D|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[B>>2]=A}else{d=4;E=47}break}case 2:{A=a[(c[x>>2]|0)+89>>0]|0;u=A&255;if(!(A<<24>>24))E=46;else{c[C>>2]=c[f>>2];c[C+4>>2]=c[f+4>>2];c[C+8>>2]=c[f+8>>2];c[C+12>>2]=c[f+12>>2];c[C+16>>2]=c[f+16>>2];c[C+20>>2]=c[f+20>>2];c[C+24>>2]=c[f+24>>2];c[C+28>>2]=c[f+28>>2];o=C+8|0;do if(!(u&4)){i=C+16|0;p=C+24|0;r=(c[B>>2]|0)==4;if(u&1|0)if(r){m=+h[C>>3]+-1.0;i=c[z>>2]|0;s=+h[i+24>>3]-+h[i+80>>3]*.5;q=+h[w>>3];n=s-+((c[(c[(ro(D)|0)+16>>2]|0)+252>>2]|0)/2|0|0);i=c[z>>2]|0;h[C+16>>3]=+h[i+16>>3]-+h[i+88>>3]+-2.0;h[o>>3]=s;h[p>>3]=+h[i+24>>3]+ +h[i+80>>3]*.5;h[C>>3]=m;h[f+56>>3]=m;h[f+64>>3]=n;h[f+72>>3]=q;h[f+80>>3]=s;i=f+88|0;c[i>>2]=c[C>>2];c[i+4>>2]=c[C+4>>2];c[i+8>>2]=c[C+8>>2];c[i+12>>2]=c[C+12>>2];c[i+16>>2]=c[C+16>>2];c[i+20>>2]=c[C+20>>2];c[i+24>>2]=c[C+24>>2];c[i+28>>2]=c[C+28>>2];i=2;break}else{h[p>>3]=+h[(+h[p>>3]>+h[b+8>>3]?i:b)+8>>3];c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1;break}q=+h[w>>3];f=c[z>>2]|0;k=+h[t>>3];j=k+-1.0;s=+h[f+24>>3];n=+h[f+80>>3]*.5;m=s-n;n=s+n;if(!(u&8)){h[C>>3]=q+-1.0;if(r){h[p>>3]=n;i=C}else{h[o>>3]=m;j=k}h[i+8>>3]=j;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1;break}else{h[i>>3]=q+1.0;if(r){h[p>>3]=n;i=C}else{h[o>>3]=m;j=k+1.0}h[i+8>>3]=j;c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1;break}}else{h[o>>3]=+h[(+h[o>>3]<+h[t>>3]?C:w)+8>>3];c[v>>2]=c[C>>2];c[v+4>>2]=c[C+4>>2];c[v+8>>2]=c[C+8>>2];c[v+12>>2]=c[C+12>>2];c[v+16>>2]=c[C+16>>2];c[v+20>>2]=c[C+20>>2];c[v+24>>2]=c[C+24>>2];c[v+28>>2]=c[C+28>>2];i=1}while(0);c[g>>2]=i;while(1){i=c[d+16>>2]|0;if(!(a[i+112>>0]|0))break;d=c[i+116>>2]|0}a[((D|0)==(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)?i+56|0:i+16|0)+30>>0]=0;c[B>>2]=u}break}default:E=46}if((E|0)==46){d=c[B>>2]|0;E=47}a:do if((E|0)==47){if(p|0?(y=mb[p&3](D,(c[x>>2]|0)+56|0,d,v,g)|0,y|0):0){c[B>>2]=y;break};c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];c[v+16>>2]=c[f+16>>2];c[v+20>>2]=c[f+20>>2];c[v+24>>2]=c[f+24>>2];c[v+28>>2]=c[f+28>>2];c[g>>2]=1;switch(e|0){case 8:{va(123221,91518,765,91562);break}case 2:{h[((c[B>>2]|0)==4?v:f+72|0)+8>>3]=+h[t>>3];break a}case 1:{h[f+64>>3]=+h[t>>3];c[B>>2]=4;break a}default:break a}}while(0);l=F;return}function Nz(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0;g=c[b+16>>2]|0;i=c[g+96>>2]|0;if((a[g+44>>0]|0)==0?(a[g+84>>0]|0)==0:0)j=6;else{d=a[g+49>>0]|0;e=d&255;if(((e&8|0)==0?(f=a[g+89>>0]|0,(f&8)==0):0)?((e&5|0)==0?1:d<<24>>24!=f<<24>>24):0)j=6;else b=0}if((j|0)==6)if(!i)b=18;else{b=(c[(c[(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)!=0;b=~~(+h[(b?i+32|0:i+24|0)>>3]+18.0)}return b|0}function Oz(b,d,e,f,g,h,i){b=b|0;d=d|0;e=e|0;f=f|0;g=+g;h=+h;i=i|0;var j=0,k=0,l=0,m=0;b=c[(c[d+(e<<2)>>2]|0)+16>>2]|0;if((a[b+44>>0]|0)==0?(a[b+84>>0]|0)==0:0)l=6;else l=3;do if((l|0)==3){j=a[b+49>>0]|0;k=j&255;b=b+89|0;if((k&8|0)==0?(m=a[b>>0]|0,(m&8)==0):0){if((k&5|0)==0?1:j<<24>>24!=m<<24>>24){l=6;break}if(k&4|0){Qz(d,e,f,g,h,i);break}if(!(k&1))va(123221,91518,1231,91570);else{Sz(d,e,f,g,h,i);break}}if((k&2|0)==0?(a[b>>0]&2)==0:0){Rz(d,e,f,g,h,i);break}Qz(d,e,f,g,h,i)}while(0);if((l|0)==6)Pz(d,e,f,g,h,i);return}function Pz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0.0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0;O=l;l=l+16080|0;K=O+80|0;L=O+64|0;M=O+48|0;N=O+32|0;I=O+16|0;J=O;A=c[b+(e<<2)>>2]|0;i=i*.5/+(f|0);i=i>2.0?i:2.0;C=(c[((c[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)+16|0;z=c[C>>2]|0;B=+h[z+16>>3];G=+h[z+24>>3];A=c[A+16>>2]|0;D=B+ +h[A+16>>3];E=G+ +h[A+24>>3];F=B+ +h[A+56>>3];G=G+ +h[A+64>>3];k=!(E>=G)?-1:1;m=+h[z+96>>3];switch(Tz(d[A+49>>0]|0,d[A+89>>0]|0)|0){case 65:case 32:{if(E==G)k=0-k|0;break}default:{}}P=B+m;o=(P-D)*3.0;P=(P-F)*3.0;u=i*+(k|0);t=K+8|0;v=K+16|0;w=K+32|0;x=K+48|0;y=(E+G)*.5;z=K+64|0;A=K+80|0;r=K+96|0;s=K+104|0;q=0;n=0.0;i=m;o=m<o?m:o;m=m<P?m:P;while(1){if((q|0)>=(f|0))break;p=e+1|0;e=c[b+(e<<2)>>2]|0;i=i+g;o=o+g;m=m+g;n=u+n;h[K>>3]=D;h[t>>3]=E;P=E+n;Uz(L,D+o/3.0,P);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];Q=B+i;Uz(M,Q,P);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];Uz(N,Q,y);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];P=G-n;Uz(I,Q,P);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];Uz(J,F+m/3.0,P);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];h[r>>3]=F;h[s>>3]=G;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(R=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,H=+h[(R?k+24|0:k+32|0)>>3],R=c[C>>2]|0,h[k+56>>3]=H*.5+(i+ +h[R+16>>3]),h[k+64>>3]=+h[R+24>>3],a[k+81>>0]=1,H>g):0)i=i+(H-g);Gz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,K,7,j);e=p;q=q+1|0}l=O;return}function Qz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0.0,D=0,E=0.0,F=0.0,G=0.0,H=0.0,I=0.0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0,R=0;P=l;l=l+16080|0;L=P+80|0;M=P+64|0;N=P+48|0;O=P+32|0;J=P+16|0;K=P;B=c[b+(e<<2)>>2]|0;q=g*.5/+(f|0);q=q>2.0?q:2.0;D=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;k=c[D>>2]|0;g=+h[k+16>>3];C=+h[k+24>>3];B=c[B+16>>2]|0;E=g+ +h[B+16>>3];F=C+ +h[B+24>>3];G=g+ +h[B+56>>3];H=C+ +h[B+64>>3];p=!(E>=G)?-1.0:1.0;s=+h[k+80>>3]*.5;m=E-g;n=G-g;o=g-E;switch(Tz(d[B+49>>0]|0,d[B+89>>0]|0)|0){case 15:{m=p*(q+(+h[k+96>>3]-n));break}case 38:{m=p*(q+(+h[k+88>>3]-(g-G)));break}case 41:{m=p*(q+(+h[k+96>>3]-m));break}case 48:{m=p*(q+(+h[k+96>>3]-m));break}case 58:case 57:case 51:case 47:case 37:case 14:{m=p*((+h[k+88>>3]-o+(+h[k+96>>3]-n))/3.0);break}case 73:{m=p*(q+(+h[k+88>>3]-o));break}case 83:{m=p*(+h[k+88>>3]-o);break}case 84:{m=p*(q+(+h[k+88>>3]-o+(+h[k+96>>3]-n))*.5);break}case 85:case 75:case 74:{m=p*(q*2.0+(+h[k+88>>3]-o+(+h[k+96>>3]-n))*.5);break}default:m=0.0}n=C+s;o=(n-F)*3.0;n=(n-H)*3.0;p=q*p;w=L+8|0;x=L+16|0;y=L+32|0;z=L+48|0;q=(E+G)*.5;A=L+64|0;B=L+80|0;u=L+96|0;v=L+104|0;t=0;g=s;o=s<o?s:o;n=s<n?s:n;while(1){if((t|0)>=(f|0))break;r=e+1|0;e=c[b+(e<<2)>>2]|0;g=g+i;o=o+i;n=n+i;m=p+m;h[L>>3]=E;h[w>>3]=F;s=E+m;Uz(M,s,F+o/3.0);c[x>>2]=c[M>>2];c[x+4>>2]=c[M+4>>2];c[x+8>>2]=c[M+8>>2];c[x+12>>2]=c[M+12>>2];Q=C+g;Uz(N,s,Q);c[y>>2]=c[N>>2];c[y+4>>2]=c[N+4>>2];c[y+8>>2]=c[N+8>>2];c[y+12>>2]=c[N+12>>2];Uz(O,q,Q);c[z>>2]=c[O>>2];c[z+4>>2]=c[O+4>>2];c[z+8>>2]=c[O+8>>2];c[z+12>>2]=c[O+12>>2];s=G-m;Uz(J,s,Q);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];Uz(K,s,H+n/3.0);c[B>>2]=c[K>>2];c[B+4>>2]=c[K+4>>2];c[B+8>>2]=c[K+8>>2];c[B+12>>2]=c[K+12>>2];h[u>>3]=G;h[v>>3]=H;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(R=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,I=+h[(R?k+32|0:k+24|0)>>3],R=c[D>>2]|0,h[k+64>>3]=I*.5+(g+ +h[R+24>>3]),h[k+56>>3]=+h[R+16>>3],a[k+81>>0]=1,I>i):0)g=g+(I-i);Gz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,L,7,j);e=r;t=t+1|0}l=P;return}function Rz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0,m=0.0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0.0,C=0,D=0.0,E=0.0,F=0.0,G=0.0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0;O=l;l=l+16080|0;K=O+80|0;L=O+64|0;M=O+48|0;N=O+32|0;I=O+16|0;J=O;A=c[b+(e<<2)>>2]|0;i=i*.5/+(f|0);i=i>2.0?i:2.0;C=(c[((c[A>>2]&3|0)==3?A:A+48|0)+40>>2]|0)+16|0;z=c[C>>2]|0;B=+h[z+16>>3];G=+h[z+24>>3];A=c[A+16>>2]|0;D=B+ +h[A+16>>3];E=G+ +h[A+24>>3];F=B+ +h[A+56>>3];G=G+ +h[A+64>>3];k=!(E>=G)?-1:1;m=+h[z+88>>3];switch(Tz(d[A+49>>0]|0,d[A+89>>0]|0)|0){case 67:case 12:{if(E==G)k=0-k|0;break}default:{}}o=(D+m-B)*3.0;P=(F+m-B)*3.0;u=i*+(k|0);t=K+8|0;v=K+16|0;w=K+32|0;x=K+48|0;y=(E+G)*.5;z=K+64|0;A=K+80|0;r=K+96|0;s=K+104|0;q=0;n=0.0;i=m;o=m<o?m:o;m=m<P?m:P;while(1){if((q|0)>=(f|0))break;p=e+1|0;e=c[b+(e<<2)>>2]|0;i=i+g;o=o+g;m=m+g;n=u+n;h[K>>3]=D;h[t>>3]=E;P=E+n;Uz(L,D-o/3.0,P);c[v>>2]=c[L>>2];c[v+4>>2]=c[L+4>>2];c[v+8>>2]=c[L+8>>2];c[v+12>>2]=c[L+12>>2];Q=B-i;Uz(M,Q,P);c[w>>2]=c[M>>2];c[w+4>>2]=c[M+4>>2];c[w+8>>2]=c[M+8>>2];c[w+12>>2]=c[M+12>>2];Uz(N,Q,y);c[x>>2]=c[N>>2];c[x+4>>2]=c[N+4>>2];c[x+8>>2]=c[N+8>>2];c[x+12>>2]=c[N+12>>2];P=G-n;Uz(I,Q,P);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];Uz(J,F-m/3.0,P);c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];h[r>>3]=F;h[s>>3]=G;k=e+16|0;if((c[(c[k>>2]|0)+96>>2]|0)!=0?(R=(c[(c[(ro(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,k=c[(c[k>>2]|0)+96>>2]|0,H=+h[(R?k+24|0:k+32|0)>>3],R=c[C>>2]|0,h[k+56>>3]=+h[R+16>>3]-i-H*.5,h[k+64>>3]=+h[R+24>>3],a[k+81>>0]=1,H>g):0)i=i+(H-g);Gz(e,c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,K,7,j);e=p;q=q+1|0}l=O;return}function Sz(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=+i;j=j|0;var k=0.0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0,u=0.0,v=0,w=0.0,x=0.0,y=0.0,z=0.0,A=0.0,B=0,C=0,D=0,E=0.0,F=0,G=0,H=0.0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0.0,Q=0.0,R=0;O=l;l=l+16080|0;K=O+80|0;L=O+64|0;M=O+48|0;N=O+32|0;I=O+16|0;J=O;B=c[b+(e<<2)>>2]|0;A=g*.5/+(f|0);v=(c[((c[B>>2]&3|0)==3?B:B+48|0)+40>>2]|0)+16|0;C=c[v>>2]|0;y=+h[C+16>>3];u=+h[C+24>>3];B=c[B+16>>2]|0;w=y+ +h[B+16>>3];x=u+ +h[B+24>>3];y=y+ +h[B+56>>3];z=u+ +h[B+64>>3];t=!(w>=y)?-1:1;P=+h[C+80>>3]*.5;B=(Tz(d[B+49>>0]|0,d[B+89>>0]|0)|0)==67;m=(x+P-u)*3.0;n=(z+P-u)*3.0;A=(A>2.0?A:2.0)*+((B?0-t|0:t)|0);t=K+8|0;B=K+16|0;C=K+32|0;D=K+48|0;E=(w+y)*.5;F=K+64|0;G=K+80|0;r=K+96|0;s=K+104|0;g=P;k=0.0;m=P<m?P:m;n=P<n?P:n;p=0;while(1){if((p|0)>=(f|0))break;q=e+1|0;o=c[b+(e<<2)>>2]|0;g=g+i;m=m+i;n=n+i;k=A+k;h[K>>3]=w;h[t>>3]=x;P=w+k;Uz(L,P,x-m/3.0);c[B>>2]=c[L>>2];c[B+4>>2]=c[L+4>>2];c[B+8>>2]=c[L+8>>2];c[B+12>>2]=c[L+12>>2];Q=u-g;Uz(M,P,Q);c[C>>2]=c[M>>2];c[C+4>>2]=c[M+4>>2];c[C+8>>2]=c[M+8>>2];c[C+12>>2]=c[M+12>>2];Uz(N,E,Q);c[D>>2]=c[N>>2];c[D+4>>2]=c[N+4>>2];c[D+8>>2]=c[N+8>>2];c[D+12>>2]=c[N+12>>2];P=y-k;Uz(I,P,Q);c[F>>2]=c[I>>2];c[F+4>>2]=c[I+4>>2];c[F+8>>2]=c[I+8>>2];c[F+12>>2]=c[I+12>>2];Uz(J,P,z-n/3.0);c[G>>2]=c[J>>2];c[G+4>>2]=c[J+4>>2];c[G+8>>2]=c[J+8>>2];c[G+12>>2]=c[J+12>>2];h[r>>3]=y;h[s>>3]=z;e=o+16|0;if((c[(c[e>>2]|0)+96>>2]|0)!=0?(R=(c[(c[(ro(c[((c[o>>2]&3|0)==3?o:o+48|0)+40>>2]|0)|0)+16>>2]|0)+116>>2]&1|0)==0,e=c[(c[e>>2]|0)+96>>2]|0,H=+h[(R?e+32|0:e+24|0)>>3],R=c[v>>2]|0,h[e+64>>3]=+h[R+24>>3]-g-H*.5,h[e+56>>3]=+h[R+16>>3],a[e+81>>0]=1,H>i):0)g=g+(H-i);Gz(o,c[((c[o>>2]&3|0)==2?o:o+-48|0)+40>>2]|0,K,7,j);e=q;p=p+1|0}l=O;return}function Tz(a,b){a=a|0;b=b|0;var d=0;d=0;while(1){if((d|0)>=8){b=-1;break}if((c[21068+(d<<2)>>2]|0)==(b|0)){b=d;break}d=d+1|0}d=0;while(1){if((d|0)>=8){d=-1;break}if((c[21068+(d<<2)>>2]|0)==(a|0))break;d=d+1|0}if((d|b|0)<0)d=0;else d=c[21100+(d<<5)+(b<<2)>>2]|0;return d|0}function Uz(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Vz(b){b=b|0;var d=0,e=0,f=0;if((c[42280]|0)!=0|(c[42279]|0)!=0){e=b+16|0;f=c[(c[e>>2]|0)+100>>2]|0;d=b+48|0;if((f|0?(a[f+81>>0]|0)==0:0)?Wz(b,1)|0:0){f=ro(c[((c[b>>2]&3|0)==3?b:d)+40>>2]|0)|0;_A(f,c[(c[e>>2]|0)+100>>2]|0)}f=c[(c[e>>2]|0)+104>>2]|0;if((f|0?(a[f+81>>0]|0)==0:0)?Wz(b,0)|0:0){f=ro(c[((c[b>>2]&3|0)==3?b:d)+40>>2]|0)|0;_A(f,c[(c[e>>2]|0)+104>>2]|0)}}return}function Wz(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0.0,i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=l;l=l+96|0;p=r+32|0;m=r+16|0;o=r;i=b+16|0;do if((a[(c[i>>2]|0)+112>>0]|0)!=6){e=c[42280]|0;if(!((e|0)!=0?(a[(Jm(b,e)|0)>>0]|0)!=0:0)){e=c[42279]|0;if(!e){e=0;break}if(!(a[(Jm(b,e)|0)>>0]|0)){e=0;break}}d=d<<24>>24==0;q=c[i>>2]|0;q=c[(d?q+104|0:q+100|0)>>2]|0;e=Xz(b)|0;if(e){n=c[e>>2]|0;do if(d){o=c[n>>2]|0;g=+h[o>>3];f=+h[o+8>>3];if(!(c[n+8>>2]|0))e=0;else{k=g;g=+h[n+16>>3];j=f;f=+h[n+24>>3];break}while(1){if((e|0)==4)break;o=p+(e<<4)|0;i=(c[n>>2]|0)+(e<<4)|0;c[o>>2]=c[i>>2];c[o+4>>2]=c[i+4>>2];c[o+8>>2]=c[i+8>>2];c[o+12>>2]=c[i+12>>2];e=e+1|0}MA(m,p,3,.1,0,0);k=+h[m>>3];j=+h[m+8>>3]}else{e=(c[e+4>>2]|0)+-1|0;d=n+(e*48|0)+4|0;i=n+(e*48|0)|0;s=c[i>>2]|0;m=(c[d>>2]|0)+-1|0;f=+h[s+(m<<4)+8>>3];g=+h[s+(m<<4)>>3];if(!(c[n+(e*48|0)+12>>2]|0))e=0;else{k=g;g=+h[n+(e*48|0)+32>>3];j=f;f=+h[n+(e*48|0)+40>>3];break}while(1){if((e|0)==4)break;s=p+(e<<4)|0;n=(c[i>>2]|0)+(e+-4+(c[d>>2]|0)<<4)|0;c[s>>2]=c[n>>2];c[s+4>>2]=c[n+4>>2];c[s+8>>2]=c[n+8>>2];c[s+12>>2]=c[n+12>>2];e=e+1|0}MA(o,p,3,.9,0,0);k=+h[o>>3];j=+h[o+8>>3]}while(0);k=+O(+(j-f),+(k-g));k=k+ +BA(b,c[42280]|0,-25.0,-180.0)/180.0*3.141592653589793;j=+BA(b,c[42279]|0,1.0,0.0)*10.0;h[q+56>>3]=g+j*+I(+k);h[q+64>>3]=f+j*+J(+k);a[q+81>>0]=1;e=1}else e=0}else e=0;while(0);l=r;return e|0}function Xz(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;f=h;d=b;while(1){e=c[d+16>>2]|0;d=c[e+8>>2]|0;if(d|0)break;if(!(a[e+112>>0]|0)){g=5;break}d=c[e+116>>2]|0}if((g|0)==5){g=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;d=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[f>>2]=g;c[f+4>>2]=d;_l(1,91583,f)|0;d=0}l=h;return d|0}function Yz(a,d,e){a=a|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;s=l;l=l+96|0;m=s+80|0;n=s+64|0;o=s+48|0;p=s+32|0;q=s+16|0;r=s;k=b[(c[d+16>>2]|0)+136>>1]|0;d=e+16|0;Zz(c[(c[d>>2]|0)+8>>2]|0,p,q);f=+h[p>>3];g=+h[q>>3];u=f-g;i=+h[p+8>>3];j=+h[q+8>>3];t=i-j;a:do if(u*u+t*t<1.0e-06){c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2]}else{d=c[(c[d>>2]|0)+8>>2]|0;switch(k&14){case 4:case 10:{h[n>>3]=(f+g)*.5;h[n+8>>3]=(i+j)*.5;c[m>>2]=c[n>>2];c[m+4>>2]=c[n+4>>2];c[m+8>>2]=c[n+8>>2];c[m+12>>2]=c[n+12>>2];SA(r,d,m);c[o>>2]=c[r>>2];c[o+4>>2]=c[r+4>>2];c[o+8>>2]=c[r+8>>2];c[o+12>>2]=c[r+12>>2];break a}default:{_z(o,d,p,q);break a}}}while(0);c[a>>2]=c[o>>2];c[a+4>>2]=c[o+4>>2];c[a+8>>2]=c[o+8>>2];c[a+12>>2]=c[o+12>>2];l=s;return}function Zz(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=l;l=l+32|0;g=h+16|0;f=h;j=c[a>>2]|0;e=c[j>>2]|0;i=c[j+8>>2]|0;k=j+16|0;c[g>>2]=c[k>>2];c[g+4>>2]=c[k+4>>2];c[g+8>>2]=c[k+8>>2];c[g+12>>2]=c[k+12>>2];j=j+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!i){c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2]}else{c[b>>2]=c[g>>2];c[b+4>>2]=c[g+4>>2];c[b+8>>2]=c[g+8>>2];c[b+12>>2]=c[g+12>>2]}i=c[a>>2]|0;j=(c[a+4>>2]|0)+-1|0;e=c[i+(j*48|0)>>2]|0;a=c[i+(j*48|0)+4>>2]|0;k=c[i+(j*48|0)+12>>2]|0;b=i+(j*48|0)+16|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];j=i+(j*48|0)+32|0;c[f>>2]=c[j>>2];c[f+4>>2]=c[j+4>>2];c[f+8>>2]=c[j+8>>2];c[f+12>>2]=c[j+12>>2];if(!k){k=e+(a+-1<<4)|0;c[d>>2]=c[k>>2];c[d+4>>2]=c[k+4>>2];c[d+8>>2]=c[k+8>>2];c[d+12>>2]=c[k+12>>2]}else{c[d>>2]=c[f>>2];c[d+4>>2]=c[f+4>>2];c[d+8>>2]=c[f+8>>2];c[d+12>>2]=c[f+12>>2]}l=h;return}function _z(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0;r=c[b+4>>2]|0;g=0.0;f=0;while(1){if((f|0)>=(r|0))break;l=c[b>>2]|0;k=c[l+(f*48|0)>>2]|0;l=c[l+(f*48|0)+4>>2]|0;i=3;j=0;while(1){if((i|0)>=(l|0))break;p=+h[k+(j<<4)>>3]-+h[k+(i<<4)>>3];q=+h[k+(j<<4)+8>>3]-+h[k+(i<<4)+8>>3];i=i+3|0;j=j+3|0;g=g+ +G(+(p*p+q*q))}f=f+1|0}l=0;g=g*.5;a:while(1){if((l|0)>=(r|0)){f=15;break}k=c[b>>2]|0;j=c[k+(l*48|0)>>2]|0;k=c[k+(l*48|0)+4>>2]|0;f=3;i=0;while(1){if((f|0)>=(k|0))break;m=+h[j+(i<<4)>>3];p=+h[j+(i<<4)+8>>3];n=+h[j+(f<<4)>>3];o=+h[j+(f<<4)+8>>3];s=m-n;q=p-o;q=+G(+(s*s+q*q));if(q>=g){f=12;break a}f=f+3|0;i=i+3|0;g=g-q}l=l+1|0}if((f|0)==12){h[d>>3]=m;h[d+8>>3]=p;h[e>>3]=n;h[e+8>>3]=o;s=q-g;h[a>>3]=(g*n+m*s)/q;h[a+8>>3]=(g*o+p*s)/q;return}else if((f|0)==15)va(123539,91518,1316,91645)}function $z(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Vz(b);return}function aA(b,d,e,f,g){b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,l=0.0,m=0.0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0.0,E=0.0,F=0,G=0,H=0,K=0,L=0,M=0,N=0;L=bA(b)|0;K=c[L+4>>2]|0;M=c[L>>2]|0;H=K+-1|0;D=+h[M+(H<<6)+16>>3];E=+(K|0);F=(g|0)==2;G=(f|0)!=0;n=0;j=0.0;i=0.0;l=0.0;m=0.0;while(1){if((n|0)>=(K|0))break;b=~~+cA(+(n+-1|0),E);C=n+1|0;N=~~+cA(+(C|0),E);o=M+(n<<6)|0;m=+h[o>>3];B=M+(n<<6)+8|0;l=+h[B>>3];u=M+(n<<6)+16|0;v=+h[u>>3];w=M+(n<<6)+24|0;x=M+(n<<6)+32|0;y=M+(n<<6)+40|0;z=M+(n<<6)+48|0;A=M+(n<<6)+56|0;k=+dA(+h[M+(N<<6)+8>>3]-l,+h[M+(N<<6)>>3]-m);p=+dA(+h[M+(b<<6)+8>>3]-l,+h[M+(b<<6)>>3]-m);t=+gb[d&7](v,D,e);b=(n|0)==0;q=k+1.5707963267948966;r=p+-1.5707963267948966;do if(b|(n|0)==(H|0))if(b){if(!F){b=0;s=q;j=t;i=q;break}b=0;s=q;j=t;i=q;l=l-t*+J(+k);m=m-t*+I(+k);break}else{if(!F){b=0;s=r;j=t;i=r;break}b=0;s=r;j=t;i=r;l=l-t*+J(+p);m=m-t*+I(+p);break}else{i=k-p;i=1.5707963267948966-(i<0.0?i+6.283185307179586:i)*.5;j=+I(+i);j=j==0.0?0.0:t/j;i=q+i;if(G|j>t*10.0){i=+cA(r,6.283185307179586);b=1;s=+cA(q,6.283185307179586);j=t}else{b=0;s=i}}while(0);h[o>>3]=m;h[B>>3]=l;h[u>>3]=v;a[w>>0]=108;h[x>>3]=i;h[y>>3]=j;c[z>>2]=b;h[A>>3]=s;n=C}o=sw(12)|0;b=0;while(1){if((b|0)>=(K|0))break;m=+h[M+(b<<6)>>3];l=+h[M+(b<<6)+8>>3];i=+h[M+(b<<6)+32>>3];j=+h[M+(b<<6)+40>>3];N=c[M+(b<<6)+48>>2]|0;k=+h[M+(b<<6)+56>>3];eA(o,m+j*+I(+i),l+j*+J(+i));if(N|0)fA(m,l,j,1,i,k,f,o);b=b+1|0}n=(g|0)==1;k=i+3.141592653589793;if(n)gA(o,m,l,j,i,k);else{eA(o,m+j*+I(+k),l+j*+J(+k));i=k}b=K+-2|0;k=m;while(1){if((b|0)<=-1)break;m=+h[M+(b<<6)>>3];l=+h[M+(b<<6)+8>>3];j=+h[M+(b<<6)+40>>3];N=c[M+(b<<6)+48>>2]|0;i=+h[M+(b<<6)+32>>3]+3.141592653589793;k=+h[M+(b<<6)+56>>3]+3.141592653589793;eA(o,m+j*+I(+k),l+j*+J(+k));if(N|0)fA(m,l,j,0,i,k,f,o);b=b+-1|0;k=m}if(n)gA(o,k,l,j,i,i+3.141592653589793);hA(L);return o|0}function bA(a){a=a|0;var b=0.0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0;q=l;l=l+144|0;i=q+128|0;h=q+112|0;j=q+96|0;k=q+64|0;m=q;n=q+80|0;o=iA()|0;p=c[a+4>>2]|0;f=c[a>>2]|0;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];jA(o,i,0.0);g=m+48|0;c[g>>2]=c[f>>2];c[g+4>>2]=c[f+4>>2];c[g+8>>2]=c[f+8>>2];c[g+12>>2]=c[f+12>>2];d=0;b=0.0;a:while(1){e=d+3|0;if((e|0)>=(p|0))break;c[m>>2]=c[g>>2];c[m+4>>2]=c[g+4>>2];c[m+8>>2]=c[g+8>>2];c[m+12>>2]=c[g+12>>2];a=1;while(1){if((a|0)==4)break;r=m+(a<<4)|0;s=f+(a+d<<4)|0;c[r>>2]=c[s>>2];c[r+4>>2]=c[s+4>>2];c[r+8>>2]=c[s+8>>2];c[r+12>>2]=c[s+12>>2];a=a+1|0}c[j>>2]=c[m>>2];c[j+4>>2]=c[m+4>>2];c[j+8>>2]=c[m+8>>2];c[j+12>>2]=c[m+12>>2];a=1;while(1){if((a|0)==21){d=e;continue a}MA(n,m,3,+(a|0)/20.0,0,0);c[k>>2]=c[n>>2];c[k+4>>2]=c[n+4>>2];c[k+8>>2]=c[n+8>>2];c[k+12>>2]=c[n+12>>2];c[h>>2]=c[j>>2];c[h+4>>2]=c[j+4>>2];c[h+8>>2]=c[j+8>>2];c[h+12>>2]=c[j+12>>2];c[i>>2]=c[n>>2];c[i+4>>2]=c[n+4>>2];c[i+8>>2]=c[n+8>>2];c[i+12>>2]=c[n+12>>2];t=b+ +kA(h,i);c[i>>2]=c[k>>2];c[i+4>>2]=c[k+4>>2];c[i+8>>2]=c[k+8>>2];c[i+12>>2]=c[k+12>>2];jA(o,i,t);c[j>>2]=c[k>>2];c[j+4>>2]=c[k+4>>2];c[j+8>>2]=c[k+8>>2];c[j+12>>2]=c[k+12>>2];a=a+1|0;b=t}}lA(o);l=q;return o|0}function cA(a,b){a=+a;b=+b;if(!(!(a<0.0)&!(a>=b)))a=a-+E(+(a/b))*b;return +a}function dA(a,b){a=+a;b=+b;if(!(a==0.0&b==0.0)){a=+O(+a,+b);if(!(a>=0.0))a=a+6.283185307179586}else a=0.0;return +a}function eA(a,b,d){a=a|0;b=+b;d=+d;var e=0,f=0,g=0;f=c[a>>2]|0;e=a+4|0;g=a+8|0;if((f|0)<(c[e>>2]|0))e=c[g>>2]|0;else{c[e>>2]=2e3;e=vw(c[g>>2]|0,32e3)|0;c[g>>2]=e;f=c[a>>2]|0}c[a>>2]=f+1;h[e+(f<<4)>>3]=b;h[e+(f<<4)+8>>3]=d;return}function fA(a,b,c,d,e,f,g,h){a=+a;b=+b;c=+c;d=d|0;e=+e;f=+f;g=g|0;h=h|0;var i=0.0,j=0.0,k=0.0;d=(d|0)==0;i=d?e:f;j=+I(+i)*c+a;k=+J(+i)*c+a;do if((g|0)==1){e=(d?f:e)-i;e=!(e<=1.7453292519943296e-03)?e:e+6.283185307179586;if(e<3.141592653589793){gA(h,a,b,c,i+e,i);break}else{eA(h,j,k);break}}else eA(h,j,k);while(0);return}function gA(a,b,c,d,e,f){a=a|0;b=+b;c=+c;d=+d;e=+e;f=+f;var g=0,h=0.0;eA(a,+I(+e)*d+b,+J(+e)*d+c);a:do if(!(d==0.0)){while(1){if(!(f>e))break;f=f+-6.283185307179586}f=e-f;while(1){if(!(f>6.283185307179586))break;f=f+-6.283185307179586}f=f/19.0;g=1;while(1){if((g|0)==20)break a;h=e-f*+(g|0);eA(a,+I(+h)*d+b,+J(+h)*d+c);g=g+1|0}}while(0);return}function hA(a){a=a|0;xN(c[a>>2]|0);xN(a);return}function iA(){var a=0;a=sw(12)|0;c[a+4>>2]=0;c[a+8>>2]=2e3;c[a>>2]=sw(128e3)|0;return a|0}function jA(a,b,d){a=a|0;b=b|0;d=+d;var e=0,f=0,g=0,i=0;i=a+4|0;e=c[i>>2]|0;f=a+8|0;g=c[f>>2]|0;if((e|0)<(g|0))a=c[a>>2]|0;else{c[f>>2]=g<<1;e=vw(c[a>>2]|0,g<<7)|0;c[a>>2]=e;a=e;e=c[i>>2]|0}h[a+(e<<6)>>3]=+h[b>>3];h[a+(e<<6)+8>>3]=+h[b+8>>3];c[i>>2]=e+1;h[a+(e<<6)+16>>3]=d;return}function kA(a,b){a=a|0;b=b|0;var c=0.0,d=0.0;d=+h[a>>3]-+h[b>>3];c=+h[a+8>>3]-+h[b+8>>3];return +(+G(+(d*d+c*c)))}function lA(a){a=a|0;var b=0;b=c[a+4>>2]|0;if((c[a+8>>2]|0)>(b|0))c[a>>2]=vw(c[a>>2]|0,b<<6)|0;return}function mA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m+8|0;j=m;h=m+12|0;c[h>>2]=0;i=c[e+4>>2]|0;if(!i)va(91662,91673,203,91684);f=c[i>>2]|0;if(!f)va(91698,91673,206,91684);g=i+8|0;if(!(c[g>>2]|0))c[g>>2]=nA(f)|0;if(!(a[174212]|0))f=0;else{f=(Av(c[i>>2]|0)|0)==0;f=f?0:h}if(!((uE(d,e,f)|0)<<24>>24))oA(e,f);do if(f|0){g=c[h>>2]|0;d=c[13857]|0;f=c[i>>2]|0;if(!g){c[k>>2]=f;OL(d,91741,k)|0;break}else{c[j>>2]=f;c[j+4>>2]=g;OL(d,91709,j)|0;break}}while(0);k=e+32|0;c[b>>2]=c[k>>2];c[b+4>>2]=c[k+4>>2];c[b+8>>2]=c[k+8>>2];c[b+12>>2]=c[k+12>>2];l=m;return}function nA(a){a=a|0;var b=0;b=c[42379]|0;if((b|0)!=0?(SK(b,a)|0)==0:0)a=c[42388]|0;else{xN(b);c[42379]=mL(a)|0;a=qN(169516,21356,35,36,29)|0;c[42388]=a}return a|0}function oA(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0.0,j=0,k=0.0;j=c[b+4>>2]|0;e=c[j>>2]|0;i=+h[j+16>>3];j=b+32|0;h[j>>3]=0.0;h[b+40>>3]=i*1.2;h[b+16>>3]=0.0;h[b+24>>3]=i*.1;c[b+8>>2]=0;c[b+12>>2]=0;if(bL(e,91775,4)|0)if((bL(e,91780,5)|0)!=0?(bL(e,91786,9)|0)!=0:0){g=4184;e=91796}else{g=8280;e=91832}else{g=6232;e=91813}if(d|0)c[d>>2]=e;e=c[b>>2]|0;if(e|0){f=0.0;while(1){b=a[e>>0]|0;if(!(b<<24>>24))break;k=f+ +h[g+((b&255)<<3)>>3];h[j>>3]=k;e=e+1|0;f=k}h[j>>3]=i*f}return}function pA(a,b){a=a|0;b=b|0;return SK(c[a>>2]|0,c[b>>2]|0)|0}function qA(a){a=a|0;var b=0;b=a+108|0;c[b>>2]=0;c[a+112>>2]=32;c[a+116>>2]=-1;c[a+120>>2]=14;c[a+124>>2]=58;c[a+128>>2]=20;c[a+132>>2]=0;c[a+136>>2]=0;c[a+140>>2]=0;b=Ql(b,c[4345]|0)|0;c[a+144>>2]=b;return b|0}function rA(a,b,d){a=a|0;b=b|0;d=d|0;d=yN(1,32)|0;a=c[b>>2]|0;if(a|0)c[d>>2]=mL(a)|0;a=c[b+4>>2]|0;if(a|0)c[d+4>>2]=mL(a)|0;c[d+24>>2]=c[b+24>>2]&127;h[d+16>>3]=+h[b+16>>3];c[d+8>>2]=c[b+8>>2];return d|0}function sA(a,b,d){a=a|0;b=b|0;d=d|0;xN(c[b>>2]|0);xN(c[b+4>>2]|0);xN(b);return}function tA(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0;a=c[b>>2]|0;e=c[d>>2]|0;i=(e|0)==0;if(!a)if(i)j=5;else a=-1;else if(!i){a=vJ(a,e)|0;if(!a)j=5}else a=1;do if((j|0)==5){a=c[b+4>>2]|0;e=c[d+4>>2]|0;i=(e|0)==0;if(!a){if(!i){a=-1;break}}else{if(i){a=1;break}a=vJ(a,e)|0;if(a|0)break}a=(c[b+24>>2]&127)-(c[d+24>>2]&127)|0;if(!a){g=+h[b+16>>3];f=+h[d+16>>3];if(g<f)a=-1;else a=g>f&1}}while(0);return a|0}function uA(){za(169556)|0;return}function vA(){var a=0,b=0;b=l;l=l+16|0;a=b;za(a|0)|0;l=b;return +(+((c[a+4>>2]|0)+(c[a>>2]|0)-(c[42389]|0)-(c[42390]|0)|0)/60.0)}function wA(a){a=a|0;var b=0,d=0;b=sw(16)|0;a=(a|0)>2?a:2;d=sw(a<<2)|0;c[b>>2]=d;c[b+12>>2]=d;c[b+8>>2]=d;c[b+4>>2]=d+(a<<2);return b|0}function xA(a){a=a|0;xN(c[a>>2]|0);xN(a);return}function yA(a,b){a=a|0;b=b|0;var d=0,e=0;d=a+12|0;e=c[d>>2]|0;c[d>>2]=e+4;c[e>>2]=b;if((c[d>>2]|0)>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2];return}function zA(a){a=a|0;var b=0,d=0,e=0;d=a+8|0;b=c[d>>2]|0;if((b|0)!=(c[a+12>>2]|0)){e=b+4|0;c[d>>2]=e;b=c[b>>2]|0;if(e>>>0>=(c[a+4>>2]|0)>>>0)c[d>>2]=c[a>>2]}else b=0;return b|0}function AA(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;i=l;l=l+16|0;g=i;if(((d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){d=rJ(h,g,10)|0;e=(h|0)==(c[g>>2]|0)?e:(d|0)<(f|0)?f:d}l=i;return e|0}function BA(b,d,e,f){b=b|0;d=d|0;e=+e;f=+f;var g=0,h=0,i=0,j=0.0;i=l;l=l+16|0;g=i;if(((b|0)!=0&(d|0)!=0?(h=Jm(b,d)|0,(h|0)!=0):0)?(a[h>>0]|0)!=0:0){j=+nN(h,g);e=(h|0)==(c[g>>2]|0)?e:j<f?f:j}l=i;return +e}function CA(a,b,c){a=a|0;b=b|0;c=c|0;if((a|0)!=0&(b|0)!=0)c=Jm(a,b)|0;return c|0}function DA(b,c,d){b=b|0;c=c|0;d=d|0;b=CA(b,c,d)|0;if((b|0)!=0?(a[b>>0]|0)!=0:0)d=b;return d|0}function EA(a,b,c){a=a|0;b=b|0;c=c|0;if(!b)a=c&255;else a=FA(Jm(a,b)|0)|0;return a|0}function FA(a){a=a|0;return GA(a,0)|0}function GA(b,c){b=b|0;c=c|0;var d=0;if((b|0)!=0?(d=a[b>>0]|0,d<<24>>24!=0):0)if((SK(b,122116)|0)!=0?(SK(b,92642)|0)!=0:0)if((SK(b,92645)|0)!=0?(SK(b,92650)|0)!=0:0){if(((d<<24>>24)+-48|0)>>>0<10)c=(pN(b)|0)&255}else c=1;else c=0;return c|0}function HA(a){a=a|0;var b=0,d=0;while(1){b=(c[a+16>>2]|0)+220|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[(c[d+16>>2]|0)+220>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function IA(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0;if((a|0)!=(b|0)){d=c[a+16>>2]|0;e=d+220|0;if(!(c[e>>2]|0)){c[e>>2]=a;c[d+216>>2]=1}else a=HA(a)|0;e=c[b+16>>2]|0;d=e+220|0;if(!(c[d>>2]|0)){c[d>>2]=b;c[e+216>>2]=1;d=e;e=1}else{b=HA(b)|0;e=c[b+16>>2]|0;d=e;e=c[e+216>>2]|0}h=c[a+16>>2]|0;g=(c[h+120>>2]|0)>(c[d+120>>2]|0);f=h+216|0;e=e+(c[f>>2]|0)|0;a=g?b:a;c[(g?h:d)+220>>2]=a;c[(g?d+216|0:f)>>2]=e}return a|0}function JA(b){b=b|0;b=c[b+16>>2]|0;c[b+216>>2]=1;c[b+220>>2]=0;a[b+159>>0]=0;return}function KA(a,b){a=a|0;b=b|0;if((HA(a)|0)==(a|0)){a=c[a+16>>2]|0;c[a+220>>2]=b;b=(c[b+16>>2]|0)+216|0;c[b>>2]=(c[b>>2]|0)+(c[a+216>>2]|0);return}else va(92662,92654,194,92678)}function LA(a,b){a=a|0;b=b|0;var d=0.0;b=c[(c[b+16>>2]|0)+132>>2]|0;d=+h[b+8>>3]*72.0;h[a>>3]=+h[b>>3]*72.0;h[a+8>>3]=d;return}function MA(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=+e;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0,o=0,p=0;o=l;l=l+576|0;n=o;i=0;while(1){if((i|0)>(d|0))break;k=n+(i<<4)|0;j=b+(i<<4)|0;c[k>>2]=c[j>>2];c[k+4>>2]=c[j+4>>2];c[k+8>>2]=c[j+8>>2];c[k+12>>2]=c[j+12>>2];i=i+1|0}m=1.0-e;i=1;while(1){if((i|0)>(d|0))break;j=d-i|0;k=i+-1|0;b=0;while(1){if((b|0)>(j|0))break;p=b+1|0;h[n+(i*96|0)+(b<<4)>>3]=m*+h[n+(k*96|0)+(b<<4)>>3]+ +h[n+(k*96|0)+(p<<4)>>3]*e;h[n+(i*96|0)+(b<<4)+8>>3]=m*+h[n+(k*96|0)+(b<<4)+8>>3]+ +h[n+(k*96|0)+(p<<4)+8>>3]*e;b=p}i=i+1|0}a:do if(f|0){i=0;while(1){if((i|0)>(d|0))break a;p=f+(i<<4)|0;k=n+(i*96|0)|0;c[p>>2]=c[k>>2];c[p+4>>2]=c[k+4>>2];c[p+8>>2]=c[k+8>>2];c[p+12>>2]=c[k+12>>2];i=i+1|0}}while(0);b:do if(g|0){i=0;while(1){if((i|0)>(d|0))break b;p=g+(i<<4)|0;f=n+((d-i|0)*96|0)+(i<<4)|0;c[p>>2]=c[f>>2];c[p+4>>2]=c[f+4>>2];c[p+8>>2]=c[f+8>>2];c[p+12>>2]=c[f+12>>2];i=i+1|0}}while(0);p=n+(d*96|0)|0;c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2];l=o;return}function NA(b){b=b|0;var d=0,e=0,f=0,g=0;e=0;do{d=c[42393]|0;f=d+1024|0;if((d-e|0)<1024){c[42393]=f;f=vw(c[42394]|0,f)|0;c[42394]=f;d=c[42393]|0}else f=c[42394]|0;d=DL(f+e|0,d-e|0,b)|0;if(!d){g=6;break}e=(TK(d)|0)+e|0;d=c[42394]|0}while((a[d+(e+-1)>>0]|0)!=10);if((g|0)==6)d=c[42394]|0;return ((e|0)>0?d:0)|0}function OA(b){b=b|0;var d=0,e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h+8|0;f=h;do if((b|0)!=0?(a[b>>0]|0)!=0:0){d=c[42188]|0;if(!d){d=c[42187]|0;e=c[42396]|0;if((c[42395]|0)==(d|0))d=e;else{if(e){xN(c[e>>2]|0);xN(c[42396]|0);c[42396]=0;d=c[42187]|0}c[42395]=d;if(!d)break;if(!(a[d>>0]|0))break;d=PA(d)|0;c[42396]=d}if(!((a[b>>0]|0)!=47&(d|0)!=0))break;b=QA(d,c[42397]|0,b)|0;break}e=c[42186]|0;if(e|0?a[e>>0]|0:0){if(!(c[42395]|0)){c[42396]=PA(e)|0;e=c[42186]|0;c[42395]=e}d=XL(b,47)|0;d=(d|0)==0?b:d+1|0;f=XL(d,92)|0;f=(f|0)==0?d:f+1|0;d=XL(f,58)|0;d=(d|0)==0?f:d+1|0;if(!((a[92689]|0)==0|(d|0)==(b|0))){c[g>>2]=b;c[g+4>>2]=e;_l(0,92815,g)|0;a[92689]=0}b=QA(c[42396]|0,c[42397]|0,d)|0;break}if(a[92689]|0){c[f>>2]=d;_l(0,92690,f)|0;a[92689]=0;b=0}else b=0}else b=0;while(0);l=h;return b|0}function PA(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=0;f=0;g=0;b=mL(a)|0;d=0;while(1){b=uN(b,92977)|0;if(!b)break;a=(g<<2)+8|0;if(!f)a=tw(a)|0;else a=vw(d,a)|0;c[a+(g<<2)>>2]=b;f=TK(b)|0;e=e>>>0>f>>>0?e:f;f=a;g=g+1|0;b=0;d=a}c[f+(g<<2)>>2]=0;c[42397]=e;return f|0}function QA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;h=c[42398]|0;c[42398]=zN(h,b+2+(TK(d)|0)|0)|0;while(1){b=c[a>>2]|0;if(!b){a=0;break}h=c[42398]|0;c[e>>2]=b;c[e+4>>2]=92975;c[e+8>>2]=d;yJ(h,92968,e)|0;if(!(WL(c[42398]|0,4)|0)){f=4;break}else a=a+4|0}if((f|0)==4)a=c[42398]|0;l=g;return a|0}function RA(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=(b|0)==0;f=0;while(1){h=c[d+(f<<2)>>2]|0;if(!h)break;if((!g?(a[b>>0]|0)==(a[h>>0]|0):0)?(vJ(b,h)|0)==0:0)break;f=f+1|0}return c[e+(f<<2)>>2]|0}function SA(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0.0,j=0.0,k=0.0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;z=l;l=l+80|0;x=z+16|0;y=z;u=c[b+4>>2]|0;v=c[b>>2]|0;w=d+8|0;f=0;e=-1;g=1.e+38;b=-1;while(1){if((f|0)>=(u|0))break;s=c[v+(f*48|0)>>2]|0;t=c[v+(f*48|0)+4>>2]|0;r=0;while(1){if((r|0)>=(t|0))break;p=+h[s+(r<<4)>>3]-+h[d>>3];q=+h[s+(r<<4)+8>>3]-+h[w>>3];q=p*p+q*q;A=(e|0)==-1|q<g;B=A?r:e;r=r+1|0;b=A?f:b;e=B;g=A?q:g}f=f+1|0}f=c[v+(b*48|0)>>2]|0;e=(((e|0)==((c[v+(b*48|0)+4>>2]|0)+-1|0))<<31>>31)+e|0;e=e-((e|0)%3|0)|0;b=0;while(1){if((b|0)==4)break;B=b+e|0;h[x+(b<<4)>>3]=+h[f+(B<<4)>>3];h[x+(b<<4)+8>>3]=+h[f+(B<<4)+8>>3];b=b+1|0}q=+h[d>>3];p=+h[x>>3]-q;o=+h[w>>3];k=+h[x+8>>3]-o;n=+h[x+48>>3]-q;j=+h[x+56>>3]-o;b=y+8|0;g=1.0;i=0.0;j=n*n+j*j;k=p*p+k*k;while(1){p=(i+g)*.5;MA(y,x,3,p,0,0);m=+h[y>>3];n=+h[b>>3];if(+F(+(k-j))<1.0)break;if(+F(+(g-i))<1.0e-05)break;B=k<j;n=n-o;m=m-q;n=m*m+n*n;g=B?p:g;i=B?i:p;j=B?n:j;k=B?k:n}h[a>>3]=m;h[a+8>>3]=n;l=z;return}function TA(b){b=b|0;var d=0.0,e=0,f=0,g=0,i=0,j=0,k=0,l=0;d=+BA(b,c[42208]|0,.75,.01);g=b+16|0;h[(c[g>>2]|0)+32>>3]=d;d=+BA(b,c[42207]|0,.5,.02);h[(c[g>>2]|0)+40>>3]=d;l=Ny(DA(b,c[42209]|0,92979)|0,b)|0;c[(c[g>>2]|0)+8>>2]=l;l=Jm(b,c[42224]|0)|0;d=+BA(b,c[42220]|0,14.0,1.0);e=DA(b,c[42221]|0,92987)|0;f=DA(b,c[42222]|0,122122)|0;i=(dp(l)|0)!=0;k=(yy(b)|0)==2;i=iw(b,l,(k?4:0)|(i?2:0),d,e,f)|0;c[(c[g>>2]|0)+104>>2]=i;i=c[42225]|0;if((i|0?(j=Jm(b,i)|0,j|0):0)?a[j>>0]|0:0){l=(dp(j)|0)!=0;l=iw(b,j,l?2:0,d,e,f)|0;c[(c[g>>2]|0)+108>>2]=l;l=(c[(ro(b)|0)+16>>2]|0)+113|0;a[l>>0]=a[l>>0]|16}k=(AA(b,c[42228]|0,0,0)|0)&255;l=c[g>>2]|0;a[l+144>>0]=k;bb[c[c[(c[l+8>>2]|0)+4>>2]>>2]&127](b);return}\nfunction Lv(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0.0,k=0.0,m=0,n=0,o=0,p=0.0,q=0.0,r=0.0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=l;l=l+112|0;u=B+80|0;v=B+56|0;t=B+40|0;w=B+32|0;x=B+24|0;y=B+16|0;z=B+8|0;A=B;m=c[b>>2]|0;p=+h[m+272>>3];r=+h[m+280>>3];q=+h[m+256>>3];s=+h[m+264>>3];f=+h[b+240>>3];e=q-f;h[b+208>>3]=e;i=+h[b+248>>3];j=s-i;h[b+216>>3]=j;f=p+f;h[b+224>>3]=f;i=r+i;h[b+232>>3]=i;e=f-e;j=i-j;h[y>>3]=1.0;g=c[(c[d+16>>2]|0)+8>>2]|0;i=+h[g+64>>3];do if(i>.001?(k=+h[g+72>>3],k>.001):0){e=e==0.0?i:e;f=j==0.0?k:j;if(!(i<e|k<f)?!(k>f&(i>e&(a[g+80>>0]|0)!=0)):0){k=e;j=f;i=1.0;break}o=i/e<k/f;i=(o?i:k)/(o?e:f);h[y>>3]=i;k=e;j=f}else{k=e;i=1.0}while(0);f=(p+q)*.5;h[z>>3]=f;e=(r+s)*.5;h[A>>3]=e;c[b+360>>2]=c[m+288>>2];k=k*i;h[w>>3]=k;j=j*i;h[x>>3]=j;o=Im(d,85743)|0;if(o){m=wN((TK(o)|0)+1|0)|0;n=wN((TK(o)|0)+1|0)|0;c[t>>2]=w;c[t+4>>2]=x;c[t+8>>2]=y;c[t+12>>2]=m;g=d+60|0;do if((FL(o,85752,t)|0)==4){g=no(c[g>>2]|0,m,0)|0;if(g|0){v=c[g+16>>2]|0;h[z>>3]=+h[v+16>>3];h[A>>3]=+h[v+24>>3]}}else{c[v>>2]=w;c[v+4>>2]=x;c[v+8>>2]=y;c[v+12>>2]=m;c[v+16>>2]=n;if((FL(o,85772,v)|0)!=4){c[u>>2]=w;c[u+4>>2]=x;c[u+8>>2]=y;c[u+12>>2]=z;c[u+16>>2]=A;FL(o,85792,u)|0;break}g=no(c[g>>2]|0,m,0)|0;if(g|0){v=c[g+16>>2]|0;h[z>>3]=+h[v+16>>3];h[A>>3]=+h[v+24>>3]}}while(0);xN(m);xN(n);k=+h[w>>3];j=+h[x>>3];i=+h[y>>3];f=+h[z>>3];e=+h[A>>3]}h[b+368>>3]=k;h[b+376>>3]=j;h[b+352>>3]=i;h[b+336>>3]=f;h[b+344>>3]=e;l=B;return}function Mv(b,d){b=b|0;d=d|0;var e=0,f=0,g=0.0,i=0,j=0.0,k=0.0,m=0.0,n=0.0,o=0,p=0.0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0.0;M=l;l=l+224|0;J=M+200|0;x=M+176|0;C=M+152|0;G=M+120|0;D=M+96|0;F=M+80|0;e=M+184|0;t=M+168|0;u=M+144|0;w=M+136|0;v=M+112|0;y=M+64|0;z=M+48|0;A=M+32|0;B=M+16|0;K=M+8|0;L=M;s=c[b>>2]|0;c[F>>2]=0;c[F+4>>2]=0;c[F+8>>2]=0;c[F+12>>2]=0;H=b+368|0;c[G>>2]=c[H>>2];c[G+4>>2]=c[H+4>>2];c[G+8>>2]=c[H+8>>2];c[G+12>>2]=c[H+12>>2];H=b+360|0;if(c[H>>2]|0){c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];Nv(e,J);c[G>>2]=c[e>>2];c[G+4>>2]=c[e+4>>2];c[G+8>>2]=c[e+8>>2];c[G+12>>2]=c[e+12>>2]}E=b+416|0;c[D>>2]=c[E>>2];c[D+4>>2]=c[E+4>>2];c[D+8>>2]=c[E+8>>2];c[D+12>>2]=c[E+12>>2];E=D+8|0;I=G+8|0;q=C+8|0;o=b+204|0;f=b+164|0;i=b+168|0;if((a[s+294>>0]|0)!=0?(c[b+152>>2]&32|0)!=0:0){m=+h[s+232>>3]-+h[D>>3]*2.0;h[C>>3]=m;k=+h[s+240>>3]-+h[E>>3]*2.0;h[q>>3]=k;if(!(m<.0001)){p=+h[G>>3];e=~~(p/m);c[f>>2]=e;if(p-m*+(e|0)>.0001){e=e+1|0;r=8}}else{e=1;r=8}if((r|0)==8)c[f>>2]=e;j=+h[I>>3];if(!(k<.0001)){f=~~(j/k);c[i>>2]=f;if(j-k*+(f|0)>.0001){f=f+1|0;r=12}}else{f=1;r=12}if((r|0)==12)c[i>>2]=f;c[o>>2]=S(f,e)|0;g=+h[(+h[G>>3]<m?G:C)>>3];h[G>>3]=g;e=G;j=+h[(j<k?G:C)+8>>3];r=21}else{if(c[b+68>>2]|0){e=c[b+84>>2]|0;g=+h[e+24>>3]-+h[D>>3]*2.0;g=g<0.0?0.0:g;h[C>>3]=g;p=+h[e+32>>3]-+h[E>>3]*2.0;h[q>>3]=p;if(p<0.0){e=q;r=17}else j=g}else{h[q>>3]=0.0;e=C;r=17}if((r|0)==17){h[e>>3]=0.0;j=+h[C>>3]}c[o>>2]=1;c[i>>2]=1;c[f>>2]=1;g=+h[G>>3];if(j<g){h[C>>3]=g;m=g}else m=j;j=+h[q>>3];k=+h[I>>3];if(j<k){e=C;j=k;r=21}else p=j}if((r|0)==21){h[e+8>>3]=j;p=+h[q>>3]}n=+h[D>>3];q=b+432|0;k=+h[q>>3]*(m+n*2.0)/72.0;c[b+448>>2]=~~(k+(k>=0.0?.5:-.5));k=+h[E>>3];r=b+440|0;j=+h[r>>3]*(p+k*2.0)/72.0;c[b+452>>2]=~~(j+(j>=0.0?.5:-.5));i=b+188|0;o=b+180|0;e=b+172|0;f=s+196|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[e+20>>2]=0;Ov(t,b,a[c[f>>2]>>0]|0);s=t;t=c[s+4>>2]|0;e=o;c[e>>2]=c[s>>2];c[e+4>>2]=t;Ov(u,b,a[(c[f>>2]|0)+1>>0]|0);e=u;u=c[e>>2]|0;e=c[e+4>>2]|0;t=i;c[t>>2]=u;c[t+4>>2]=e;u=u+(c[o>>2]|0)|0;if(!((((u|0)>-1?u:0-u|0)|0)==1?(u=e+(c[b+184>>2]|0)|0,(((u|0)>-1?u:0-u|0)|0)==1):0)){Ov(w,b,66);t=w;w=c[t+4>>2]|0;u=o;c[u>>2]=c[t>>2];c[u+4>>2]=w;Ov(v,b,76);u=v;v=c[u+4>>2]|0;w=i;c[w>>2]=c[u>>2];c[w+4>>2]=v;c[x>>2]=c[f>>2];_l(0,85723,x)|0}e=F+8|0;if(a[(c[(c[d+16>>2]|0)+8>>2]|0)+82>>0]|0){if(m>g){m=(m-g)*.5;h[F>>3]=m}else m=0.0;j=+h[I>>3];if(p>j){j=(p-j)*.5;h[e>>3]=j}else j=0.0}else{j=0.0;m=0.0}if(!(c[H>>2]|0))i=1;else{c[J>>2]=c[G>>2];c[J+4>>2]=c[G+4>>2];c[J+8>>2]=c[G+8>>2];c[J+12>>2]=c[G+12>>2];Nv(y,J);c[G>>2]=c[y>>2];c[G+4>>2]=c[y+4>>2];c[G+8>>2]=c[y+8>>2];c[G+12>>2]=c[y+12>>2];c[J>>2]=c[C>>2];c[J+4>>2]=c[C+4>>2];c[J+8>>2]=c[C+8>>2];c[J+12>>2]=c[C+12>>2];Nv(z,J);c[C>>2]=c[z>>2];c[C+4>>2]=c[z+4>>2];c[C+8>>2]=c[z+8>>2];c[C+12>>2]=c[z+12>>2];c[J>>2]=c[D>>2];c[J+4>>2]=c[D+4>>2];c[J+8>>2]=c[D+8>>2];c[J+12>>2]=c[D+12>>2];Nv(A,J);c[D>>2]=c[A>>2];c[D+4>>2]=c[A+4>>2];c[D+8>>2]=c[A+8>>2];c[D+12>>2]=c[A+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];Nv(B,J);c[F>>2]=c[B>>2];c[F+4>>2]=c[B+4>>2];c[F+8>>2]=c[B+8>>2];c[F+12>>2]=c[B+12>>2];n=+h[D>>3];m=+h[F>>3];k=+h[E>>3];j=+h[e>>3];g=+h[G>>3];i=(c[H>>2]|0)==0}n=n+m;h[b+384>>3]=n;j=k+j;h[b+392>>3]=j;m=n+g;h[b+400>>3]=m;N=+h[I>>3];p=j+N;h[b+408>>3]=p;k=+h[b+352>>3];h[b+320>>3]=g/k;h[b+328>>3]=N/k;k=+h[q>>3];n=n*k/72.0;f=b+456|0;c[f>>2]=~~(n+(n>=0.0?.5:-.5));n=+h[r>>3];j=j*n/72.0;c[b+460>>2]=~~(j+(j>=0.0?.5:-.5));m=k*m/72.0;e=b+464|0;c[e>>2]=~~(m+(m>=0.0?.5:-.5));p=n*p/72.0;c[b+468>>2]=~~(p+(p>=0.0?.5:-.5));if(!i){c[J>>2]=c[f>>2];c[J+4>>2]=c[f+4>>2];yv(K,J);I=K;K=c[I+4>>2]|0;b=f;c[b>>2]=c[I>>2];c[b+4>>2]=K;c[J>>2]=c[e>>2];c[J+4>>2]=c[e+4>>2];yv(L,J);b=L;K=c[b+4>>2]|0;L=e;c[L>>2]=c[b>>2];c[L+4>>2]=K}l=M;return}function Nv(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b>>3];h[a>>3]=+h[b+8>>3];h[a+8>>3]=c;return}function Ov(a,b,d){a=a|0;b=b|0;d=d|0;d=(d<<24>>24)+-66|0;switch(d>>>1|d<<31|0){case 9:{c[b+176>>2]=(c[b+168>>2]|0)+-1;b=0;d=-1;break}case 0:{b=0;d=1;break}case 5:{b=1;d=0;break}case 8:{c[b+172>>2]=(c[b+164>>2]|0)+-1;b=-1;d=0;break}default:{b=0;d=0}}c[a>>2]=b;c[a+4>>2]=d;return}function Pv(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;f=Im(d,85964)|0;i=b+296|0;c[i>>2]=(f|0)==0?85973:f;d=Im(d,85977)|0;f=b+300|0;d=(d|0)==0?85990:d;c[f>>2]=d;d=tN(c[i>>2]|0,d)|0;if(d|0){c[g>>2]=a[d>>0];_l(0,85992,g)|0;c[f>>2]=174318}d=mL(e)|0;c[b+304>>2]=d;h=b+308|0;f=0;b=0;while(1){e=uN(d,c[i>>2]|0)|0;if(!e)break;g=b+1|0;if((b|0)<(f|0))d=c[h>>2]|0;else{f=f+128|0;d=c[h>>2]|0;b=f<<2;if(!d)d=tw(b)|0;else d=vw(d,b)|0;c[h>>2]=d}c[d+(g<<2)>>2]=e;b=g;d=0}if(b|0){i=vw(c[h>>2]|0,(b<<2)+8|0)|0;c[h>>2]=i;c[i>>2]=0;c[(c[h>>2]|0)+(b+1<<2)>>2]=0}l=j;return b|0}function Qv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;k=m;j=a+312|0;d=tw((c[j>>2]<<2)+8|0)|0;e=0;i=1;while(1){g=c[j>>2]|0;h=e+1|0;f=d+(h<<2)|0;if((i|0)>(g|0))break;if((fv(a,i,g,b)|0)<<24>>24){c[f>>2]=i;e=h}i=i+1|0}if(!e){c[k>>2]=b;_l(0,85863,k)|0;xN(d);d=0}else{c[d>>2]=e;c[f>>2]=(c[j>>2]|0)+1}l=m;return d|0}function Rv(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0;d=c[b+16>>2]|0;g=+h[d+16>>3];h[d+48>>3]=g-+h[d+88>>3];f=+h[d+24>>3];e=+h[d+80>>3]*.5;h[d+56>>3]=f-e;h[d+64>>3]=g+ +h[d+96>>3];h[d+72>>3]=f+e;b=Pm(a,b)|0;while(1){if(!b)break;Sv(b);b=Rm(a,b)|0}return}function Sv(a){a=a|0;a=c[(c[a+16>>2]|0)+8>>2]|0;if(a|0)Tv(a);return}function Tv(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=l;l=l+240|0;v=C+192|0;u=C+176|0;w=C+64|0;x=C+32|0;y=C;z=C+144|0;A=C+112|0;B=a+4|0;if((c[B>>2]|0)<=0)va(86131,84885,3994,86145);b=c[a>>2]|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Uv(x,v);i=x+8|0;j=y+8|0;k=x+16|0;m=y+16|0;n=x+24|0;o=y+24|0;p=w+8|0;q=w+12|0;r=w+32|0;s=w+4|0;t=w+16|0;g=0;while(1){if((g|0)>=(c[B>>2]|0))break;if((g|0)>0){b=(c[a>>2]|0)+(g*48|0)|0;d=w;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));d=v;e=b;f=d+48|0;do{c[d>>2]=c[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(f|0));Uv(y,v);h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[p>>2]|0;if(b|0){f=c[w>>2]|0;c[u>>2]=c[t>>2];c[u+4>>2]=c[t+4>>2];c[u+8>>2]=c[t+8>>2];c[u+12>>2]=c[t+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Ot(z,u,v,1.0,b);c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];c[y+16>>2]=c[z+16>>2];c[y+20>>2]=c[z+20>>2];c[y+24>>2]=c[z+24>>2];c[y+28>>2]=c[z+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}b=c[q>>2]|0;if(b|0){f=(c[w>>2]|0)+((c[s>>2]|0)+-1<<4)|0;c[u>>2]=c[r>>2];c[u+4>>2]=c[r+4>>2];c[u+8>>2]=c[r+8>>2];c[u+12>>2]=c[r+12>>2];c[v>>2]=c[f>>2];c[v+4>>2]=c[f+4>>2];c[v+8>>2]=c[f+8>>2];c[v+12>>2]=c[f+12>>2];Ot(A,u,v,1.0,b);c[y>>2]=c[A>>2];c[y+4>>2]=c[A+4>>2];c[y+8>>2]=c[A+8>>2];c[y+12>>2]=c[A+12>>2];c[y+16>>2]=c[A+16>>2];c[y+20>>2]=c[A+20>>2];c[y+24>>2]=c[A+24>>2];c[y+28>>2]=c[A+28>>2];h[x>>3]=+h[(+h[x>>3]<+h[y>>3]?x:y)>>3];h[i>>3]=+h[(+h[i>>3]<+h[j>>3]?x:y)+8>>3];h[k>>3]=+h[(+h[k>>3]>+h[m>>3]?x:y)+16>>3];h[n>>3]=+h[(+h[n>>3]>+h[o>>3]?x:y)+24>>3]}g=g+1|0}B=a+8|0;c[B>>2]=c[x>>2];c[B+4>>2]=c[x+4>>2];c[B+8>>2]=c[x+8>>2];c[B+12>>2]=c[x+12>>2];c[B+16>>2]=c[x+16>>2];c[B+20>>2]=c[x+20>>2];c[B+24>>2]=c[x+24>>2];c[B+28>>2]=c[x+28>>2];l=C;return}function Uv(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0;n=l;l=l+48|0;i=n+32|0;j=n;k=c[b+4>>2]|0;if((k|0)<=0)va(86161,84885,3968,86173);if(((k>>>0)%3|0|0)!=1)va(86183,84885,3969,86173);m=j+16|0;d=c[b>>2]|0;c[m>>2]=c[d>>2];c[m+4>>2]=c[d+4>>2];c[m+8>>2]=c[d+8>>2];c[m+12>>2]=c[d+12>>2];c[j>>2]=c[d>>2];c[j+4>>2]=c[d+4>>2];c[j+8>>2]=c[d+8>>2];c[j+12>>2]=c[d+12>>2];e=i+8|0;f=j+8|0;g=j+24|0;b=1;while(1){if((b|0)>=(k|0))break;o=+h[d+(b<<4)+8>>3];t=b+1|0;p=+h[d+(t<<4)+8>>3];r=(+h[d+(b<<4)>>3]+ +h[d+(t<<4)>>3])*.5;h[i>>3]=r;p=(o+p)*.5;h[e>>3]=p;o=+h[(+h[j>>3]<r?j:i)>>3];h[j>>3]=o;s=+h[(+h[f>>3]<p?j:i)+8>>3];h[f>>3]=s;r=+h[(+h[m>>3]>r?m:i)>>3];h[m>>3]=r;p=+h[(+h[g>>3]>p?m:i)+8>>3];h[g>>3]=p;t=d+(b+2<<4)|0;c[i>>2]=c[t>>2];c[i+4>>2]=c[t+4>>2];c[i+8>>2]=c[t+8>>2];c[i+12>>2]=c[t+12>>2];q=+h[i>>3];h[j>>3]=+h[(o<q?j:i)>>3];o=+h[e>>3];h[f>>3]=+h[(s<o?j:i)+8>>3];h[m>>3]=+h[(r>q?m:i)>>3];h[g>>3]=+h[(p>o?m:i)+8>>3];b=b+3|0}c[a>>2]=c[j>>2];c[a+4>>2]=c[j+4>>2];c[a+8>>2]=c[j+8>>2];c[a+12>>2]=c[j+12>>2];c[a+16>>2]=c[j+16>>2];c[a+20>>2]=c[j+20>>2];c[a+24>>2]=c[j+24>>2];c[a+28>>2]=c[j+28>>2];l=n;return}function Vv(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0.0,l=0.0,m=0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0;t=+h[a>>3];u=+h[c>>3];o=t>=u;q=c+8|0;r=c+16|0;m=a+8|0;s=c+24|0;if((o?t<=+h[r>>3]:0)?(d=+h[m>>3],d>=+h[q>>3]):0)c=d<=+h[s>>3];else c=0;d=+h[b>>3];j=d>=u;a=b+8|0;if((j?d<=+h[r>>3]:0)?(e=+h[a>>3],e>=+h[q>>3]):0){a=e<=+h[s>>3];if(!(c^a))if(c&a)a=1;else{n=e;p=12}else a=0}else if(c)a=0;else{n=+h[a>>3];p=12}a:do if((p|0)==12){l=+h[m>>3];do if(t==d){u=+h[q>>3];if(o&(l>=u^n>=u)?t<=+h[r>>3]:0){a=0;break a}}else{if(l==n){if(!(o^j))break;if(!(l>=+h[q>>3]))break;if(!(l<=+h[s>>3]))break;else{a=0;break a}}k=(n-l)/(d-t);p=t<d;f=p?t:d;d=p?d:t;e=l+(u-t)*k;i=+h[q>>3];if(!(!(u>=f)|!(u<=d)|!(e>=i))?e<=+h[s>>3]:0){a=0;break a}g=+h[r>>3];e=e+k*(g-u);if(e>=i?!(!(g<=d)|(g>=f?!(e<=+h[s>>3]):1)):0){a=0;break a}r=l<n;f=r?l:n;e=r?n:l;d=t+(i-l)/k;if(!(!(i<=e)|(!(i>=f)|(!(d>=u)|!(d<=g))))){a=0;break a}n=+h[s>>3];t=d+(n-i)/k;if(!(!(n<=e)|(!(n>=f)|(!(t>=u)|!(t<=g))))){a=0;break a}}while(0);a=-1}while(0);return a|0}function Wv(a){a=a|0;var b=0,c=0.0;b=a+16|0;c=+h[b>>3];h[a+32>>3]=c;h[a+48>>3]=c;h[a+40>>3]=+h[a+24>>3];h[a+56>>3]=+h[a+8>>3];h[b>>3]=+h[a>>3];return}function Xv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0.0,i=0.0;if((c[42184]|0)!=(d|0)){lL(+(d|0)/6.283185307179586,167128,167136);c[42184]=d}f=+h[b>>3];i=+h[20892];g=+h[b+8>>3];e=+h[20891];h[a>>3]=f*i-g*e;h[a+8>>3]=i*g+f*e;return}function Yv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0.0,i=0,j=0,k=0;k=l;l=l+16|0;f=k;e=+h[b>>3];i=b+8|0;g=+h[i>>3];a:do switch(d|0){case 0:{j=11;break}case 90:{h[b>>3]=g;e=-e;j=10;break}case 180:{e=-g;j=10;break}case 270:{h[b>>3]=g;j=10;break}default:{if((d|0)<0){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Zv(a,f,0-d|0);break a}if((d|0)>360){c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Yv(a,f,(d>>>0)%360|0);break a}else{c[f>>2]=c[b>>2];c[f+4>>2]=c[b+4>>2];c[f+8>>2]=c[b+8>>2];c[f+12>>2]=c[b+12>>2];Xv(a,f,d);break a}}}while(0);if((j|0)==10){h[i>>3]=e;j=11}if((j|0)==11){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=k;return}function Zv(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0;m=l;l=l+16|0;g=m;e=+h[b>>3];j=b+8|0;f=+h[j>>3];i=-f;a:do switch(d|0){case 0:{k=10;break}case 90:{f=i;k=8;break}case 180:{e=i;k=9;break}case 270:{k=8;break}default:{if((d|0)<0){c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Yv(a,g,0-d|0);break a}if((d|0)>360){c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Zv(a,g,(d>>>0)%360|0);break a}else{c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Xv(a,g,360-d|0);break a}}}while(0);if((k|0)==8){h[b>>3]=f;k=9}if((k|0)==9){h[j>>3]=e;k=10}if((k|0)==10){c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2]}l=m;return}function _v(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;g=+h[c>>3];d=+h[c+8>>3];f=+h[b>>3]+d;e=+h[b+24>>3]+g;d=+h[b+16>>3]+d;h[a>>3]=+h[b+8>>3]+g;h[a+8>>3]=f;h[a+16>>3]=e;h[a+24>>3]=d;return}function $v(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0.0,f=0.0,g=0.0;f=+h[a>>3];e=+h[b>>3]-f;g=+h[a+8>>3];d=+h[b+8>>3]-g;f=e*(+h[c+8>>3]-g)-d*(+h[c>>3]-f);f=f*f;return +(f<1.0e-10?0.0:f/(e*e+d*d))}function aw(b,d){b=b|0;d=d|0;var e=0,f=0.0,g=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;g=n+8|0;i=n;e=sw(96)|0;m=b+16|0;c[(c[m>>2]|0)+8>>2]=e;e=Im(b,86210)|0;if(!e){e=Ia(86219)|0;if(e|0)k=3}else k=3;if((k|0)==3)ua(86231,e|0,1)|0;e=(bw(b)|0)&255;a[(c[m>>2]|0)+115>>0]=e;if((c[42188]|0)==0?(e=Im(b,86242)|0,c[42187]=e,(e|0)==0):0)c[42187]=c[42186];f=+BA(b,ym(b,0,86252,0)|0,0.0,0.0);h[c[(c[m>>2]|0)+8>>2]>>3]=f;e=Im(b,86260)|0;a:do if(!e)e=0;else{switch(a[e>>0]|0){case 76:{if(!(vJ(e,86268)|0)){e=1;break a}break}case 66:{if(!(vJ(e,86271)|0)){e=2;break a}break}case 82:{e=(vJ(e,86274)|0)==0;e=e?3:0;break a}default:{e=0;break a}}e=0}while(0);c[(c[m>>2]|0)+116>>2]=e<<2|(d<<24>>24==0?0:e);f=+BA(b,ym(b,0,86277,0)|0,.25,.02);h[i>>3]=f;f=f*72.0;c[(c[m>>2]|0)+248>>2]=~~(f+(f>=0.0?.5:-.5));e=CA(b,ym(b,0,86285,0)|0,0)|0;if(e){c[g>>2]=i;if(FL(e,86206,g)|0){f=+h[i>>3];if(f<.02){h[i>>3]=.02;f=.02}}else{h[i>>3]=.5;f=.5}if(RL(e,86293)|0)a[(c[m>>2]|0)+276>>0]=1}else{h[i>>3]=.5;f=.5}f=f*72.0;c[(c[m>>2]|0)+252>>2]=~~(f+(f>=0.0?.5:-.5));i=(AA(b,ym(b,0,86301,0)|0,0,0)|0)&255;a[(c[m>>2]|0)+243>>0]=i;i=RA(CA(b,ym(b,0,86311,0)|0,0)|0,19736,19752)|0;c[(c[m>>2]|0)+244>>2]=i;cw(b);i=dw(b,86321,(c[(c[m>>2]|0)+8>>2]|0)+64|0)|0;e=c[(c[m>>2]|0)+8>>2]|0;a[e+80>>0]=i;dw(b,86326,e+48|0)|0;e=FA(Im(b,86331)|0)|0;a[(c[(c[m>>2]|0)+8>>2]|0)+82>>0]=e;e=Im(b,86338)|0;do if(!e){e=Im(b,86345)|0;if(e|0){e=(a[e>>0]|32)<<24>>24==108&1;k=27;break}e=Im(b,86357)|0;if(e|0){e=FA(e)|0;k=27}}else{e=(pN(e)|0)==90&1;k=27}while(0);if((k|0)==27)a[(c[(c[m>>2]|0)+8>>2]|0)+81>>0]=e;c[42191]=RA(Im(b,86367)|0,19768,19784)|0;a[174213]=FA(Im(b,86379)|0)|0;c[42193]=0;c[42194]=0;h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=0.0;e=Im(b,86391)|0;if((e|0)!=0?(a[e>>0]|0)!=0:0)k=32;else k=30;if(((k|0)==30?(j=Im(b,86395)|0,j|0):0)?a[j>>0]|0:0){e=j;k=32}if((k|0)==32){f=+mN(e);h[(c[(c[m>>2]|0)+8>>2]|0)+24>>3]=f}ew(b);h[20893]=1.e+37;c[42202]=ym(b,0,86406,0)|0;c[42205]=ym(b,0,86415,0)|0;c[42206]=ym(b,0,90490,0)|0;c[42207]=ym(b,1,96009,0)|0;c[42208]=ym(b,1,96003,0)|0;c[42209]=ym(b,1,90631,0)|0;c[42210]=ym(b,1,122556,0)|0;c[42211]=ym(b,1,86429,0)|0;c[42227]=ym(b,1,86439,0)|0;c[42220]=ym(b,1,86445,0)|0;c[42221]=ym(b,1,86454,0)|0;c[42222]=ym(b,1,86463,0)|0;k=ym(b,1,86200,0)|0;c[42224]=k;if(!k)c[42224]=ym(b,1,86200,90487)|0;c[42225]=ym(b,1,86473,0)|0;c[42228]=ym(b,1,86301,0)|0;c[42242]=ym(b,1,86480,0)|0;c[42231]=ym(b,1,86406,0)|0;c[42223]=ym(b,1,90490,0)|0;c[42229]=ym(b,1,86489,0)|0;c[42230]=ym(b,1,86495,0)|0;c[42233]=ym(b,1,86507,0)|0;c[42232]=ym(b,1,86345,0)|0;c[42234]=ym(b,1,86512,0)|0;c[42235]=ym(b,1,86523,0)|0;c[42236]=ym(b,1,122105,0)|0;c[42226]=ym(b,1,86533,0)|0;c[42237]=ym(b,1,86543,0)|0;c[42238]=ym(b,1,86549,0)|0;c[42239]=ym(b,1,86555,0)|0;c[42240]=ym(b,1,86563,0)|0;c[42241]=ym(b,1,86572,0)|0;c[42243]=ym(b,1,86415,0)|0;c[42244]=ym(b,2,86574,0)|0;c[42246]=ym(b,2,122556,0)|0;c[42247]=ym(b,2,86429,0)|0;c[42256]=ym(b,2,86445,0)|0;c[42257]=ym(b,2,86454,0)|0;c[42258]=ym(b,2,86463,0)|0;c[42259]=ym(b,2,86200,0)|0;c[42260]=ym(b,2,86473,0)|0;c[42269]=ym(b,2,86581,0)|0;c[42261]=ym(b,2,86592,0)|0;c[42272]=ym(b,2,86596,0)|0;c[42273]=ym(b,2,86606,0)|0;c[42274]=ym(b,2,86616,0)|0;c[42275]=ym(b,2,86626,0)|0;c[42276]=ym(b,2,86636,0)|0;c[42277]=ym(b,2,86650,0)|0;c[42278]=ym(b,2,86664,0)|0;c[42279]=ym(b,2,86679,0)|0;c[42280]=ym(b,2,86693,0)|0;c[42245]=ym(b,2,86704,0)|0;c[42264]=ym(b,2,86301,0)|0;c[42262]=ym(b,2,86439,0)|0;c[42263]=ym(b,2,86711,0)|0;c[42265]=ym(b,2,86720,0)|0;c[42266]=ym(b,2,86730,0)|0;c[42267]=ym(b,2,86543,0)|0;c[42268]=ym(b,2,86555,0)|0;c[42281]=ym(b,2,86741,0)|0;c[42282]=ym(b,2,86750,0)|0;c[42283]=ym(b,2,86480,0)|0;e=Rt(b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+88>>2]=e;e=Im(b,86759)|0;if(e|0?a[e>>0]|0:0){b=nw(e,b)|0;c[(c[(c[m>>2]|0)+8>>2]|0)+92>>2]=b}l=n;return}function bw(a){a=a|0;var b=0,d=0;d=l;l=l+16|0;b=d;a=DA(a,ym(a,0,86843,0)|0,86851)|0;if(((((((SK(a,86857)|0)!=0?(SK(a,86865)|0)!=0:0)?(SK(a,86872)|0)!=0:0)?(SK(a,86875)|0)!=0:0)?(SK(a,86886)|0)!=0:0)?(SK(a,86897)|0)!=0:0)?(SK(a,86907)|0)!=0:0)if((SK(a,86918)|0)!=0?(SK(a,86924)|0)!=0:0)if((SK(a,86851)|0)!=0?(SK(a,86929)|0)!=0:0){c[b>>2]=a;_l(0,86934,b)|0;a=0}else a=0;else a=2;else a=1;l=d;return a|0}function cw(b){b=b|0;var d=0.0,e=0,f=0;e=Im(b,86801)|0;a:do if(e|0?(f=a[e>>0]|0,f<<24>>24):0){b=b+16|0;switch(f<<24>>24|0){case 97:{if(f<<24>>24!=97)break a;if(vJ(e,86807)|0)break a;c[(c[(c[b>>2]|0)+8>>2]|0)+84>>2]=4;break a}case 99:{if(f<<24>>24!=99)break a;if(vJ(e,86812)|0)break a;c[(c[(c[b>>2]|0)+8>>2]|0)+84>>2]=3;break a}case 101:{if(f<<24>>24!=101)break a;if(vJ(e,86821)|0)break a;c[(c[(c[b>>2]|0)+8>>2]|0)+84>>2]=5;break a}case 102:{if(f<<24>>24!=102)break a;if(vJ(e,86828)|0)break a;c[(c[(c[b>>2]|0)+8>>2]|0)+84>>2]=2;break a}default:{d=+mN(e);if(!(d>0.0))break a;f=c[(c[b>>2]|0)+8>>2]|0;c[f+84>>2]=1;h[f+16>>3]=d;break a}}}while(0);return}function dw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0.0,g=0.0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+48|0;m=o+32|0;i=o+16|0;k=o+8|0;j=o;n=o+40|0;a[n>>0]=0;d=Im(b,d)|0;do if(d){c[i>>2]=k;c[i+4>>2]=j;c[i+8>>2]=n;i=(FL(d,86785,i)|0)>1;g=+h[k>>3];f=+h[j>>3];b=e+8|0;if(i&g>0.0&f>0.0){g=g*72.0;h[e>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);g=f*72.0;h[b>>3]=+(~~(g+(g>=0.0?.5:-.5))|0);b=(a[n>>0]|0)==33;break}a[n>>0]=0;c[m>>2]=k;c[m+4>>2]=n;m=(FL(d,86795,m)|0)>0;f=+h[k>>3];if(m&f>0.0){g=f*72.0;g=+(~~(g+(g>=0.0?.5:-.5))|0);h[e>>3]=g;h[b>>3]=g;b=(a[n>>0]|0)==33}else b=0}else b=0;while(0);l=o;return b&1|0}function ew(b){b=b|0;var d=0,e=0,f=0,g=0.0,i=0.0,j=0;d=Im(b,86200)|0;do if(d|0?a[d>>0]|0:0){e=(c[(c[b+60>>2]|0)+16>>2]|0)+113|0;a[e>>0]=a[e>>0]|8;e=(dp(d)|0)!=0;i=+BA(b,ym(b,0,86445,0)|0,14.0,1.0);j=DA(b,ym(b,0,86454,0)|0,92987)|0;d=iw(b,d,e?2:0,i,j,DA(b,ym(b,0,86463,0)|0,122122)|0)|0;j=b+16|0;c[(c[j>>2]|0)+12>>2]=d;d=Im(b,90622)|0;e=(d|0)!=0;do if((so(b)|0)==(b|0)){if(e?(a[d>>0]|0)==116:0){d=1;break}d=0}else{if(e?(a[d>>0]|0)==98:0){d=0;break}d=1}while(0);e=Im(b,86762)|0;a:do if(e){f=d&255;switch(a[e>>0]|0){case 108:{d=(f|2)&255;break a}case 114:{d=(f|4)&255;break a}default:break a}}while(0);a[(c[j>>2]|0)+275>>0]=d;if((so(b)|0)!=(b|0)){d=c[(c[j>>2]|0)+12>>2]|0;g=+h[d+24>>3]+16.0;i=+h[d+32>>3]+8.0;b=(c[(c[(so(b)|0)+16>>2]|0)+116>>2]&1|0)==0;d=c[j>>2]|0;e=a[d+275>>0]<<1&2;if(b){b=e&255;h[d+48+(b<<4)>>3]=g;h[d+48+(b<<4)+8>>3]=i;break}else{b=(e^3)&255;h[d+48+(b<<4)>>3]=i;h[d+48+(b<<4)+8>>3]=g;break}}}while(0);return}function fw(a){a=a|0;var b=0,d=0,e=0;e=a+16|0;d=c[e>>2]|0;b=c[d+8>>2]|0;do if(!b)b=d;else{d=c[b+88>>2]|0;if(d){ut(d);d=c[e>>2]|0;b=c[d+8>>2]|0;if(!b){b=d;break}}xN(c[b+92>>2]|0);b=c[e>>2]|0}while(0);xN(c[b+8>>2]|0);e=c[e>>2]|0;c[e+8>>2]=0;lw(c[e+12>>2]|0);Uo(a,0,122293);return}function gw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=c[d>>2]|0;m=d+24|0;c[m>>2]=0;c[m+4>>2]=0;c[m+8>>2]=0;c[m+12>>2]=0;if(a[f>>0]|0){g=tw((TK(f)|0)+1|0)|0;a[g>>0]=0;k=d+12|0;e=g;a:while(1){b:while(1){i=f+1|0;h=a[f>>0]|0;if(!(h<<24>>24))break a;j=e+1|0;f=f+2|0;if(!(h<<24>>24==-1|((h&255)<161|(c[k>>2]|0)!=2))){a[e>>0]=h;i=a[i>>0]|0;e=e+2|0;a[j>>0]=i;if(!(i<<24>>24))break a;else continue}switch(h<<24>>24){case 92:break b;case 10:{l=12;break b}default:{}}a[e>>0]=h;e=j;f=i}if((l|0)==12){l=0;a[e>>0]=0;hw(b,d,g,110);e=j;g=j;f=i;continue}h=a[i>>0]|0;switch(h<<24>>24|0){case 114:case 108:case 110:{a[e>>0]=0;hw(b,d,g,a[i>>0]|0);g=j;break}default:a[e>>0]=h}e=j;f=(a[i>>0]|0)==0?i:f}if((g|0)!=(e|0)){a[e>>0]=0;hw(b,d,g,110)}d=d+40|0;c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2]}return}function hw(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0.0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;r=t+16|0;q=t;s=e+76|0;m=b[s>>1]|0;o=e+72|0;n=c[o>>2]|0;i=m+2|0;if(!n)p=sw(i*56|0)|0;else p=uw(n,i,56,m+1|0)|0;c[o>>2]=p;i=b[s>>1]|0;m=i<<16>>16;n=p+(m*56|0)|0;c[n>>2]=f;a[p+(m*56|0)+48>>0]=g;j=+h[e+16>>3];if((f|0)!=0?(a[f>>0]|0)!=0:0){c[41788]=c[e+4>>2];h[20896]=j;i=c[d+144>>2]|0;c[p+(m*56|0)+4>>2]=Za[c[i>>2]&31](i,167152,1)|0;mA(q,d,n);k=+h[q>>3];h[r>>3]=k;j=+h[q+8>>3];i=b[s>>1]|0}else{h[r>>3]=0.0;j=+(~~(j*1.2)|0);h[p+(m*56|0)+40>>3]=j;k=0.0}b[s>>1]=i+1<<16>>16;s=e+24|0;h[s>>3]=+h[(+h[s>>3]>k?s:r)>>3];s=e+32|0;h[s>>3]=j+ +h[s>>3];l=t;return}function iw(b,e,f,g,i,j){b=b|0;e=e|0;f=f|0;g=+g;i=i|0;j=j|0;var k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;r=u+16|0;q=u+8|0;p=u;t=sw(88)|0;switch(Co(b)|0){case 0:{m=0;s=c[b+60>>2]|0;n=b;o=0;break}case 1:{m=0;s=so(ro(b)|0)|0;n=0;o=b;break}case 2:{m=b;s=so(ro(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0)|0;n=0;o=0;break}default:{m=0;s=0;n=0;o=0}}c[t+4>>2]=i;c[t+8>>2]=j;h[t+16>>3]=g;k=s+16|0;j=t+12|0;c[j>>2]=d[(c[k>>2]|0)+115>>0];a:do if(f&4){c[t>>2]=mL(e)|0;if(f&2|0)a[t+82>>0]=1}else switch(f|0){case 2:{c[t>>2]=mL(e)|0;a[t+82>>0]=1;if(!(SF(b,t)|0))break a;switch(Co(b)|0){case 0:{c[p>>2]=Dn(n)|0;_l(3,86977,p)|0;break a}case 1:{c[q>>2]=Dn(o)|0;_l(3,86999,q)|0;break a}case 2:{p=Dn(c[((c[m>>2]&3|0)==3?m:m+48|0)+40>>2]|0)|0;q=(qn(s)|0)!=0;s=Dn(c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0)|0;c[r>>2]=p;c[r+4>>2]=q?122562:122565;c[r+8>>2]=s;_l(3,87020,r)|0;break a}default:break a}}case 0:{i=jw(e,b,0)|0;c[t>>2]=i;if((c[j>>2]|0)==1)i=vB(i)|0;else i=sB(i,s)|0;xN(c[t>>2]|0);c[t>>2]=i;gw(c[(c[k>>2]|0)+144>>2]|0,t);break a}default:va(87047,87063,166,87072)}while(0);l=u;return t|0}function jw(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;m=(b|0)!=0;switch(Co(d)|0){case 0:{i=Dn(d)|0;g=TK(i)|0;f=c[(c[d+16>>2]|0)+12>>2]|0;if(f){f=c[f>>2]|0;if(m){v=0;t=2;u=2;s=2;h=2;y=87095;n=87092;j=90487;o=174318;r=174318;q=0;p=0;m=TK(f)|0;w=f;x=87089}else{v=0;t=2;u=2;s=2;h=2;y=87095;n=87092;j=90487;o=174318;r=174318;q=0;p=0;m=2;w=f;x=87089}}else{v=0;t=2;u=2;s=2;h=2;y=87095;n=87092;j=90487;o=174318;r=174318;q=0;p=0;m=2;w=87083;x=87089}break}case 1:{i=Dn(ro(d)|0)|0;g=TK(i)|0;j=Dn(d)|0;h=TK(j)|0;f=c[(c[d+16>>2]|0)+104>>2]|0;if(f){f=c[f>>2]|0;if(m){v=0;t=2;u=2;s=2;y=87095;n=87092;o=174318;r=174318;q=0;p=0;m=TK(f)|0;w=f;x=87089}else{v=0;t=2;u=2;s=2;y=87095;n=87092;o=174318;r=174318;q=0;p=0;m=2;w=f;x=87089}}else{v=0;t=2;u=2;s=2;y=87095;n=87092;o=174318;r=174318;q=0;p=0;m=2;w=87083;x=87089}break}case 2:{h=d+48|0;i=Dn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0;g=TK(i)|0;l=Dn(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0;k=TK(l)|0;f=d+16|0;r=c[(c[f>>2]|0)+52>>2]|0;if(!r)p=0;else p=TK(r)|0;n=Dn(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0)|0;f=c[f>>2]|0;o=c[f+92>>2]|0;if(!o)q=0;else q=TK(o)|0;j=TK(n)|0;f=c[f+96>>2]|0;if(f){f=c[f>>2]|0;if(m)m=TK(f)|0;else m=2}else{m=2;f=87083}x=(qn(so(ro(c[((c[d>>2]&3|0)==3?d:h)+40>>2]|0)|0)|0)|0)==0;v=1;t=k;u=j;s=k+2+(p|0?p+1|0:0)+j+(q|0?q+1|0:0)|0;h=2;y=l;j=90487;w=f;x=x?122565:122562;break}default:{v=0;t=2;u=2;s=2;h=2;g=2;y=87095;n=87092;j=90487;i=87086;o=174318;r=174318;q=0;p=0;m=2;w=87083;x=87089}}e=(e|0)!=0;k=0;f=b;a:while(1){d=f+1|0;l=k+1|0;switch(a[f>>0]|0){case 0:break a;case 92:break;default:{k=l;f=d;continue a}}f=f+2|0;switch(a[d>>0]|0){case 71:{k=k+g|0;continue a}case 78:{k=k+h|0;continue a}case 69:{k=k+s|0;continue a}case 72:{k=k+u|0;continue a}case 84:{k=k+t|0;continue a}case 76:{k=k+m|0;continue a}case 92:{if(e){k=l;continue a}break}default:{}}k=k+2|0}t=tw(l)|0;s=(v|0)==0;p=(p|0)==0;m=(q|0)==0;f=t;g=b;b:while(1){k=g+1|0;h=a[g>>0]|0;if(!(h<<24>>24))break;d=f+1|0;if(h<<24>>24!=92){a[f>>0]=h;f=d;g=k;continue}l=g+2|0;g=a[k>>0]|0;switch(g<<24>>24|0){case 71:{g=i;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}g=g+1|0;f=f+1|0}}case 78:{g=j;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}g=g+1|0;f=f+1|0}}case 69:{if(s){g=l;continue b}else g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;h=f+1|0;if(!(b<<24>>24))break;else{g=g+1|0;f=h}}c:do if(p)g=x;else{a[f>>0]=58;g=r;f=h;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=x;break c}g=g+1|0;f=f+1|0}}while(0);while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=n;break}g=g+1|0;f=f+1|0}while(1){b=a[g>>0]|0;a[f>>0]=b;h=f+1|0;if(!(b<<24>>24))break;else{g=g+1|0;f=h}}if(m){g=l;continue b}a[f>>0]=58;g=o;f=h;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}g=g+1|0;f=f+1|0}}case 84:{g=y;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}g=g+1|0;f=f+1|0}}case 72:{g=n;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}f=f+1|0;g=g+1|0}}case 76:{g=w;while(1){b=a[g>>0]|0;a[f>>0]=b;if(!(b<<24>>24)){g=l;continue b}f=f+1|0;g=g+1|0}}case 92:{if(e){a[f>>0]=92;f=d;g=l;continue b}break}default:{}}a[f>>0]=92;a[d>>0]=g;f=f+2|0;g=l}a[f>>0]=0;return t|0}function kw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;if(a|0){d=a;e=0;while(1){if((e|0)>=(b|0))break;if(!e)xN(c[d>>2]|0);g=c[d+8>>2]|0;if(g|0?(f=c[d+12>>2]|0,f|0):0)bb[f&127](g);d=d+56|0;e=e+1|0}xN(a)}return}function lw(d){d=d|0;var e=0;if(d|0){xN(c[d>>2]|0);e=d+72|0;if(a[d+82>>0]|0){e=c[e>>2]|0;if(e|0)DF(e,1)}else kw(c[e>>2]|0,b[d+76>>1]|0);xN(d)}return}function mw(d,e,f){d=d|0;e=e|0;f=f|0;var g=0.0,i=0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=l;l=l+32|0;q=u+16|0;r=u;m=c[d+16>>2]|0;s=m+12|0;t=c[s>>2]|0;c[s>>2]=e;o=f+72|0;if(!(a[f+82>>0]|0)){p=f+76|0;if((b[p>>1]|0)>=1){vD(d,0);yD(d,c[f+8>>2]|0);e=f+64|0;i=f+48|0;j=f+32|0;switch(a[f+80>>0]|0){case 116:{k=+h[e>>3];g=k+ +h[i>>3]*.5;break}case 98:{k=+h[e>>3];g=+h[j>>3]+(k-+h[i>>3]*.5);break}default:{k=+h[e>>3];g=k+ +h[j>>3]*.5}}g=g-+h[f+16>>3];n=r+8|0;h[n>>3]=g;if(b[m+260>>1]&512)h[n>>3]=g-k;m=f+40|0;i=f+56|0;e=0;while(1){if((e|0)>=(b[p>>1]|0))break;f=c[o>>2]|0;j=f+(e*56|0)|0;switch(a[f+(e*56|0)+48>>0]|0){case 108:{g=+h[i>>3]-+h[m>>3]*.5;break}case 114:{g=+h[i>>3]+ +h[m>>3]*.5;break}default:g=+h[i>>3]}h[r>>3]=g;c[q>>2]=c[r>>2];c[q+4>>2]=c[r+4>>2];c[q+8>>2]=c[r+8>>2];c[q+12>>2]=c[r+12>>2];xD(d,q,j);h[n>>3]=+h[n>>3]-+h[(c[o>>2]|0)+(e*56|0)+40>>3];e=e+1|0}wD(d);i=18}}else{iF(d,c[o>>2]|0,f);i=18}if((i|0)==18)c[s>>2]=t;l=u;return}function nw(a,b){a=a|0;b=b|0;return jw(a,b,1)|0}function ow(a){a=a|0;return pw(a,0)|0}function pw(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=c[42284]|0;if(!e){c[42285]=64;e=tw(64)|0;c[42284]=e}j=d<<24>>24!=0;i=0;f=0;h=b;while(1){if(!h)break;d=a[h>>0]|0;if(!(d<<24>>24))break;b=c[42285]|0;if((i|0)>(b+-8|0)){e=b<<1;c[42285]=e;e=vw(c[42284]|0,e)|0;c[42284]=e;e=e+i|0;d=a[h>>0]|0}a:do switch(d<<24>>24){case 38:{if(!j?(qw(h)|0)!=0:0)k=19;else{f=5;d=87124}break}case 60:{f=4;d=87147;break}case 62:{f=4;d=87130;break}case 45:{f=5;d=87141;break}default:{if((f|0)!=0&d<<24>>24==32)if((a[f>>0]|0)==32){f=6;d=87117;break a}else{k=19;break a}switch(d<<24>>24){case 34:{f=6;d=87104;break a}case 39:{f=5;d=87135;break a}case 10:if(j){f=5;d=87111;break a}else{k=19;break a}case 13:if(j){f=5;d=87098;break a}else{k=19;break a}default:{k=19;break a}}}}while(0);if((k|0)==19){k=0;f=1;d=h}g=e+f|0;b=f;while(1){if(!b)break;a[e>>0]=a[d>>0]|0;b=b+-1|0;d=d+1|0;e=e+1|0}b=h;i=f+i|0;e=g;h=h+1|0;f=b}a[e>>0]=0;return c[42284]|0}function qw(b){b=b|0;var c=0,d=0;d=b+1|0;c=a[d>>0]|0;a:do if(c<<24>>24==35){d=b+2|0;c=a[d>>0]|0;switch(c<<24>>24){case 88:case 120:break;default:{b=d;while(1){d=b+1|0;if((c+-48&255)>=10)break a;b=d;c=a[d>>0]|0}}}d=b+3|0;while(1){c=a[d>>0]|0;if((c+-48&255)>=10)switch(c<<24>>24){case 65:case 66:case 67:case 68:case 69:case 70:case 97:case 98:case 99:case 100:case 101:case 102:break;default:break a}d=d+1|0}}else while(1){b=d+1|0;if(((c&-33)+-65&255)>=26)break a;d=b;c=a[b>>0]|0}while(0);return c<<24>>24==59|0}function rw(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=c[42286]|0;if(!d){c[42287]=64;d=tw(64)|0;c[42286]=d;i=0;h=b}else{i=0;h=b}while(1){if(!h)break;b=a[h>>0]|0;if(!(b<<24>>24))break;e=c[42287]|0;if((i|0)>(e+-8|0)){d=e<<1;c[42287]=d;d=vw(c[42286]|0,d)|0;c[42286]=d;d=d+i|0;b=a[h>>0]|0}switch(b<<24>>24){case 38:{if(!(qw(h)|0)){f=5;b=87124}else j=12;break}case 60:{f=4;b=87147;break}case 62:{f=4;b=87130;break}case 34:{f=6;b=87104;break}case 39:{f=5;b=87135;break}default:j=12}if((j|0)==12){j=0;f=1;b=h}g=d+f|0;e=f;while(1){if(!e)break;a[d>>0]=a[b>>0]|0;e=e+-1|0;b=b+1|0;d=d+1|0}i=f+i|0;d=g;h=h+1|0}a[d>>0]=0;return c[42286]|0}function sw(a){a=a|0;var b=0;if(!a)a=0;else{b=tw(a)|0;GN(b|0,0,a|0)|0;a=b}return a|0}function tw(a){a=a|0;if(a){a=wN(a)|0;if(!a){oL(96548,14,1,c[13857]|0)|0;a=0}}else a=0;return a|0}function uw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=zN(a,S(d,b)|0)|0;if(!((b|0)!=0&(a|0)==0)){if(b>>>0>e>>>0)GN(a+(S(e,d)|0)|0,0,S(b-e|0,d)|0)|0}else oL(96548,14,1,c[13857]|0)|0;return a|0}function vw(a,b){a=a|0;b=b|0;a=zN(a,b)|0;if((b|0)!=0&(a|0)==0)oL(96548,14,1,c[13857]|0)|0;return a|0}function ww(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0.0,n=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+80|0;s=v+40|0;r=v+32|0;q=v+24|0;n=v;t=4;u=wN(40)|0;c[u>>2]=0;g=v+68|0;i=v+64|0;if(a[174212]|0){o=0;ja(57,b|0,g|0,i|0);j=o;o=0;if((j|0)!=0&(p|0)!=0){k=LN(c[j>>2]|0,u|0,t|0)|0;if(!k)xa(j|0,p|0);D=p}else k=-1;if((k|0)!=1){k=c[13857]|0;j=c[g>>2]|0;g=c[i>>2]|0;o=0;c[n>>2]=87196;c[n+4>>2]=j;c[n+8>>2]=g;c[n+12>>2]=e;c[n+16>>2]=d;$(13,k|0,87152,n|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)!=1){o=0;ka(1);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)!=1)k=6;else{g=D;k=15}}else{g=D;k=15}}else{g=D;k=15}}else k=6;do if((k|0)==6){o=0;g=ha(20,b|0)|0;i=o;o=0;if((i|0)!=0&(p|0)!=0){j=LN(c[i>>2]|0,u|0,t|0)|0;if(!j)xa(i|0,p|0);D=p}else j=-1;if((j|0)!=1){if(!g){o=0;ka(2);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;break}}if((e|0)<1){o=0;ka(3);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;break}g=0;break}else{c[42288]=(f|0)>-1?f:30;u=JN(169156,1,u|0,t|0)|0;t=D;o=0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;break}g=0;k=15;break}}else{g=D;k=15}}while(0);a:do if((k|0)==15){b:while(1){if(g|0){g=2;break a}o=0;ka(4);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue}b=c[13857]|0;n=0;while(1){o=0;k=ca(1)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}if(!k)break;o=0;g=ha(21,k|0)|0;i=o;o=0;if((i|0)!=0&(p|0)!=0){j=LN(c[i>>2]|0,u|0,t|0)|0;if(!j)xa(i|0,p|0);D=p}else j=-1;if((j|0)==1){g=D;k=15;continue b}o=0;ea(24,k|0,g|0);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}n=n+1|0;do if(((n|0)%100|0|0)==0&(a[174212]|0)!=0){g=(n|0)%1e3|0;if((g|0)==100){o=0;na(27,87196,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}o=0;c[q>>2]=n;$(13,b|0,87214,q|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}break}o=0;c[r>>2]=n;$(13,b|0,87214,r|0)|0;i=o;o=0;if((i|0)!=0&(p|0)!=0){j=LN(c[i>>2]|0,u|0,t|0)|0;if(!j)xa(i|0,p|0);D=p}else j=-1;if((j|0)==1){g=D;k=15;continue b}if(!g){o=0;na(28,10,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}}}while(0);if((n|0)>=(e|0))break}switch(d|0){case 1:{o=0;ka(5);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}break}case 2:{o=0;ka(6);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}break}default:{o=0;ka(7);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}o=0;ka(3);g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue b}}}if(!(a[174212]|0)){g=0;break a}if((n|0)>99){o=0;na(28,10,b|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15;continue}}g=c[42328]|0;i=c[42329]|0;o=0;m=+aa(1);j=o;o=0;if((j|0)!=0&(p|0)!=0){k=LN(c[j>>2]|0,u|0,t|0)|0;if(!k)xa(j|0,p|0);D=p}else k=-1;if((k|0)==1){g=D;k=15;continue}o=0;c[s>>2]=87196;c[s+4>>2]=g;c[s+8>>2]=i;c[s+12>>2]=n;h[s+16>>3]=m;$(13,b|0,87218,s|0)|0;g=o;o=0;if((g|0)!=0&(p|0)!=0){i=LN(c[g>>2]|0,u|0,t|0)|0;if(!i)xa(g|0,p|0);D=p}else i=-1;if((i|0)==1){g=D;k=15}else break}g=0}while(0);xN(u|0);l=v;return g|0}function xw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a=(c[a+16>>2]|0)+192|0;e=0;h=0;while(1){a=c[a>>2]|0;if(!a)break;g=c[a+16>>2]|0;f=c[g+180>>2]|0;a=0;while(1){if(!(c[f+(a<<2)>>2]|0))break;a=a+1|0;e=e+1|0}a=g+164|0;h=h+1|0}c[b>>2]=h;c[d>>2]=e;return}function yw(b){b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;c[42332]=b;c[42339]=0;c[42329]=0;c[42328]=0;i=b+16|0;b=(c[i>>2]|0)+192|0;h=0;f=0;while(1){b=c[b>>2]|0;if(!b)break;g=c[b+16>>2]|0;a[g+157>>0]=0;h=h+1|0;c[42328]=h;d=c[g+180>>2]|0;b=0;while(1){if(!(c[d+(b<<2)>>2]|0))break;k=f+1|0;c[42329]=k;b=b+1|0;f=k}b=g+164|0}b=c[42340]|0;if(!b)b=tw(h<<2)|0;else b=vw(b,h<<2)|0;c[42340]=b;c[42341]=0;b=c[42334]|0;d=c[42328]<<2;if(!b)b=tw(d)|0;else b=vw(b,d)|0;c[42334]=b;c[42333]=0;d=1;b=(c[i>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;k=b+16|0;h=c[k>>2]|0;i=h+292|0;c[i>>2]=0;h=c[h+172>>2]|0;j=d;b=0;d=0;while(1){g=c[h+(b<<2)>>2]|0;b=b+1|0;if(!g)break;d=d+1|0;c[i>>2]=d;f=c[g+16>>2]|0;c[f+160>>2]=0;c[f+164>>2]=-1;if(!j){j=0;continue}l=c[g>>2]&3;j=((c[(c[(c[((l|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((l|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)<(e[f+170>>1]|0|0)?0:j}b=sw(b<<2)|0;d=c[k>>2]|0;c[d+264>>2]=b;c[d+268>>2]=0;d=c[d+180>>2]|0;b=0;do{l=b;b=b+1|0}while((c[d+(l<<2)>>2]|0)!=0);d=sw(b<<2)|0;b=c[k>>2]|0;c[b+272>>2]=d;c[b+276>>2]=0;d=j;b=b+164|0}return d|0}function zw(){var a=0,b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;n=o+8|0;k=o;m=wA(c[42328]|0)|0;a=(c[(c[42332]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b){j=0;break}d=b+16|0;a=c[d>>2]|0;if(!(c[a+292>>2]|0)){yA(m,b);a=c[d>>2]|0}a=a+164|0}while(1){a=zA(m)|0;if(!a)break;i=a+16|0;a=c[i>>2]|0;f=a+232|0;c[f>>2]=0;d=c[a+172>>2]|0;b=0;h=0;while(1){g=c[d+(b<<2)>>2]|0;if(!g){f=0;break}g=(e[(c[g+16>>2]|0)+170>>1]|0)+(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;g=(h|0)>(g|0)?h:g;c[f>>2]=g;b=b+1|0;h=g}while(1){b=c[(c[a+180>>2]|0)+(f<<2)>>2]|0;if(!b)break;d=b+-48|0;g=(c[(c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0)+16>>2]|0)+292|0;h=c[g>>2]|0;c[g>>2]=h+-1;if((h|0)<2){yA(m,c[((c[b>>2]&3|0)==2?b:d)+40>>2]|0);a=c[i>>2]|0}f=f+1|0}j=j+1|0}a:do if((j|0)!=(c[42328]|0)){_l(1,87550,k)|0;a=(c[(c[42332]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break a;d=b+16|0;a=c[d>>2]|0;if(c[a+292>>2]|0){k=Dn(b)|0;a=c[(c[d>>2]|0)+292>>2]|0;c[n>>2]=k;c[n+4>>2]=a;_l(3,87572,n)|0;a=c[d>>2]|0}a=a+164|0}}while(0);xA(m);l=o;return}function Aw(){var b=0,d=0,e=0;b=(c[(c[42332]|0)+16>>2]|0)+192|0;while(1){b=c[b>>2]|0;if(!b)break;e=b+16|0;b=c[e>>2]|0;d=c[b+264>>2]|0;if(d){xN(d);b=c[e>>2]|0}d=c[b+272>>2]|0;if(d){xN(d);b=c[e>>2]|0}a[b+157>>0]=0;b=b+164|0}return}function Bw(){var a=0,b=0,d=0,e=0,f=0;a=(c[(c[42332]|0)+16>>2]|0)+192|0;while(1){a=c[a>>2]|0;if(!a)break;a=c[a+16>>2]|0;c[a+280>>2]=0;a=a+164|0}f=sw(c[42328]<<2)|0;e=0;a=(c[(c[42332]|0)+16>>2]|0)+192|0;while(1){b=c[a>>2]|0;if(!b)break;d=b+16|0;a=c[d>>2]|0;if(!(c[a+280>>2]|0)){c[f+(e<<2)>>2]=Ow(b)|0;b=e+1|0;a=c[d>>2]|0}else b=e;e=b;a=a+164|0}a=Pw(f,e)|0;while(1){if((Qw(a)|0)<=1)break;Uw(a,c[(Tw(Sw(Rw(a)|0)|0)|0)+8>>2]|0)}xN(a);a=0;while(1){if((a|0)>=(e|0))break;xN(c[f+(a<<2)>>2]|0);a=a+1|0}xN(f);if((c[42333]|0)==((c[42328]|0)+-1|0)){Vw();return}else va(87295,87325,523,87330)}function Cw(){var a=0,b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c[42339]|0;f=c[42333]|0;j=c[42334]|0;k=c[42288]|0;b=0;a=0;g=i;while(1){if((g|0)>=(f|0)){h=8;break}e=c[j+(g<<2)>>2]|0;d=c[(c[e+16>>2]|0)+160>>2]|0;if((d|0)<0){if(!a)a=e;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(d|0)?e:a;b=b+1|0;if((b|0)>=(k|0))break}e=g+1|0;c[42339]=e;g=e}if((h|0)==8)if((i|0)>0){f=0;while(1){if((f|0)>=(i|0))break;d=c[j+(f<<2)>>2]|0;e=c[(c[d+16>>2]|0)+160>>2]|0;if((e|0)<0){if(!a)a=d;else a=(c[(c[a+16>>2]|0)+160>>2]|0)>(e|0)?d:a;b=b+1|0;if((b|0)>=(k|0))break}f=f+1|0}c[42339]=f}return a|0}function Dw(a){a=a|0;var b=0,d=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;a=c[((b|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[d+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0);a=b?d:a;c[42335]=0;c[42336]=2147483647;d=c[a+16>>2]|0;c[42337]=c[d+284>>2];c[42338]=c[d+288>>2];if(b)Nw(a);else Mw(a);return c[42335]|0}function Ew(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+16|0;o=p;h=c[b>>2]&3;n=b+-48|0;k=b+48|0;m=b+16|0;h=(c[(c[(c[((h|0)==2?b:n)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?b:k)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[m>>2]|0)+170>>1]|0)|0;do if((h|0)>0){d=c[a>>2]&3;i=c[((d|0)==3?a:a+48|0)+40>>2]|0;j=c[i+16>>2]|0;if(((c[j+276>>2]|0)+(c[j+268>>2]|0)|0)==1){Iw(i,h);break}d=c[((d|0)==2?a:a+-48|0)+40>>2]|0;f=c[d+16>>2]|0;g=0-h|0;if(((c[f+276>>2]|0)+(c[f+268>>2]|0)|0)==1){Iw(d,g);break}if((c[j+288>>2]|0)<(c[f+288>>2]|0)){Iw(i,h);break}else{Iw(d,g);break}}while(0);d=a+16|0;f=c[(c[d>>2]|0)+160>>2]|0;g=c[b>>2]&3;g=Jw(c[((g|0)==3?b:k)+40>>2]|0,c[((g|0)==2?b:n)+40>>2]|0,f,1)|0;j=c[b>>2]&3;if((Jw(c[((j|0)==2?b:n)+40>>2]|0,c[((j|0)==3?b:k)+40>>2]|0,f,0)|0)==(g|0)){c[(c[m>>2]|0)+160>>2]=0-f;c[(c[d>>2]|0)+160>>2]=0;Kw(a,b);o=c[g+16>>2]|0;Lw(g,c[o+280>>2]|0,c[o+284>>2]|0)|0;l=p;return}else{_l(1,87256,o)|0;xa(169156,1)}}function Fw(){var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;Hw();n=sw((c[42331]<<2)+4|0)|0;d=c[42331]|0;b=0;while(1){if((b|0)>(d|0))break;c[n+(b<<2)>>2]=0;b=b+1|0}b=c[(c[(c[42332]|0)+16>>2]|0)+192>>2]|0;d=b;while(1){if(!d)break;d=c[d+16>>2]|0;if(!(a[d+156>>0]|0)){m=n+(c[d+232>>2]<<2)|0;c[m>>2]=(c[m>>2]|0)+1}d=c[d+164>>2]|0}while(1){if(!b)break;m=b+16|0;b=c[m>>2]|0;if(!(a[b+156>>0]|0)){h=c[42331]|0;f=c[b+172>>2]|0;k=0;j=0;d=0;while(1){g=c[f+(d<<2)>>2]|0;if(!g)break;i=c[g+16>>2]|0;l=(e[i+170>>1]|0)+(c[(c[(c[((c[g>>2]&3|0)==3?g:g+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0;k=(c[i+156>>2]|0)+k|0;j=(j|0)>(l|0)?j:l;d=d+1|0}g=c[b+180>>2]|0;i=0;l=h;d=0;while(1){f=c[g+(d<<2)>>2]|0;if(!f)break;o=c[f+16>>2]|0;h=(c[(c[(c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[o+170>>1]|0)|0;i=(c[o+156>>2]|0)+i|0;l=(l|0)<(h|0)?l:h;d=d+1|0}d=(j|0)>0?j:0;if((k|0)==(i|0)){h=d;f=d;while(1){d=f+1|0;g=n+(h<<2)|0;if((f|0)>=(l|0))break;h=(c[n+(d<<2)>>2]|0)<(c[g>>2]|0)?d:h;f=d}o=b+232|0;l=n+(c[o>>2]<<2)|0;c[l>>2]=(c[l>>2]|0)+-1;c[g>>2]=(c[g>>2]|0)+1;c[o>>2]=h}d=c[b+264>>2]|0;if(d){xN(d);b=c[m>>2]|0}d=c[b+272>>2]|0;if(d){xN(d);b=c[m>>2]|0}a[b+157>>0]=0}b=c[b+164>>2]|0}xN(n);return}function Gw(){var a=0,b=0,d=0,f=0,g=0,h=0;b=0;while(1){if((b|0)>=(c[42333]|0))break;a=c[(c[42334]|0)+(b<<2)>>2]|0;do if(((c[(c[a+16>>2]|0)+160>>2]|0)==0?(d=Dw(a)|0,d|0):0)?(f=c[d>>2]&3,f=(c[(c[(c[((f|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((f|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0,(f|0)>=2):0){h=c[a>>2]&3;g=c[((h|0)==3?a:a+48|0)+40>>2]|0;a=c[((h|0)==2?a:a+-48|0)+40>>2]|0;if((c[(c[g+16>>2]|0)+288>>2]|0)<(c[(c[a+16>>2]|0)+288>>2]|0)){Iw(g,f>>>1);break}else{Iw(a,(f|0)/-2|0);break}}while(0);b=b+1|0}Aw();return}function Hw(){var b=0,d=0,e=0,f=0,g=0;c[42330]=2147483647;c[42331]=-2147483647;b=c[(c[(c[42332]|0)+16>>2]|0)+192>>2]|0;e=b;d=2147483647;f=-2147483647;while(1){if(!e)break;e=c[e+16>>2]|0;if(!(a[e+156>>0]|0)){g=c[e+232>>2]|0;d=(d|0)<(g|0)?d:g;c[42330]=d;f=(f|0)>(g|0)?f:g;c[42331]=f}e=c[e+164>>2]|0}if(d|0){while(1){if(!b)break;g=c[b+16>>2]|0;e=g+232|0;c[e>>2]=(c[e>>2]|0)-d;b=c[g+164>>2]|0}c[42331]=f-d;c[42330]=0}return}function Iw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;a=c[f>>2]|0;e=a+232|0;c[e>>2]=(c[e>>2]|0)-b;e=0;while(1){d=c[(c[a+272>>2]|0)+(e<<2)>>2]|0;if(!d){e=0;break}if((d|0)!=(c[a+280>>2]|0)){Iw(c[((c[d>>2]&3|0)==2?d:d+-48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(c[a+280>>2]|0)){Iw(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,b);a=c[f>>2]|0}e=e+1|0}return}function Jw(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=(e|0)==0&1;h=0-d|0;f=c[(c[b+16>>2]|0)+288>>2]|0;b=a;while(1){a=c[b+16>>2]|0;if((c[a+284>>2]|0)<=(f|0)?(f|0)<=(c[a+288>>2]|0):0)break;a=c[a+280>>2]|0;i=a+48|0;j=(c[a+16>>2]|0)+160|0;c[j>>2]=(((b|0)==(c[((c[a>>2]&3|0)==3?a:i)+40>>2]|0)?e:g)|0?d:h)+(c[j>>2]|0);j=c[a>>2]&3;i=c[((j|0)==3?a:i)+40>>2]|0;a=c[((j|0)==2?a:a+-48|0)+40>>2]|0;b=(c[(c[i+16>>2]|0)+288>>2]|0)>(c[(c[a+16>>2]|0)+288>>2]|0)?i:a}return b|0}function Kw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=a+16|0;h=(c[e>>2]|0)+164|0;c[(c[b+16>>2]|0)+164>>2]=c[h>>2];c[(c[42334]|0)+(c[h>>2]<<2)>>2]=b;c[(c[e>>2]|0)+164>>2]=-1;e=(c[((c[a>>2]&3|0)==3?a:a+48|0)+40>>2]|0)+16|0;h=c[e>>2]|0;d=h+276|0;f=c[d>>2]|0;g=f+-1|0;c[d>>2]=g;h=c[h+272>>2]|0;d=0;while(1){i=h+(d<<2)|0;if((d|0)>=(f|0))break;if((c[i>>2]|0)==(a|0))break;else d=d+1|0}c[i>>2]=c[h+(g<<2)>>2];c[(c[(c[e>>2]|0)+272>>2]|0)+(g<<2)>>2]=0;e=(c[((c[a>>2]&3|0)==2?a:a+-48|0)+40>>2]|0)+16|0;h=c[e>>2]|0;d=h+268|0;f=c[d>>2]|0;g=f+-1|0;c[d>>2]=g;h=c[h+264>>2]|0;d=0;while(1){i=h+(d<<2)|0;if((d|0)>=(f|0))break;if((c[i>>2]|0)==(a|0))break;else d=d+1|0}c[i>>2]=c[h+(g<<2)>>2];c[(c[(c[e>>2]|0)+264>>2]|0)+(g<<2)>>2]=0;a=(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)+16|0;i=c[a>>2]|0;h=c[i+272>>2]|0;i=i+276|0;g=c[i>>2]|0;c[i>>2]=g+1;c[h+(g<<2)>>2]=b;a=c[a>>2]|0;c[(c[a+272>>2]|0)+(c[a+276>>2]<<2)>>2]=0;a=(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)+16|0;g=c[a>>2]|0;h=c[g+264>>2]|0;g=g+268|0;i=c[g>>2]|0;c[g>>2]=i+1;c[h+(i<<2)>>2]=b;b=c[a>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;return}function Lw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;g=a+16|0;a=c[g>>2]|0;c[a+280>>2]=b;c[a+284>>2]=d;f=0;while(1){e=c[(c[a+272>>2]|0)+(f<<2)>>2]|0;if(!e){f=0;break}if((e|0)!=(b|0)){d=Lw(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}while(1){e=c[(c[a+264>>2]|0)+(f<<2)>>2]|0;if(!e)break;if((e|0)!=(b|0)){d=Lw(c[((c[e>>2]&3|0)==3?e:e+48|0)+40>>2]|0,e,d)|0;a=c[g>>2]|0}f=f+1|0}c[a+288>>2]=d;return d+1|0}function Mw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+16|0;b=0;while(1){a=c[l>>2]|0;i=c[(c[a+180>>2]|0)+(b<<2)>>2]|0;if(!i){d=0;break}j=c[i+16>>2]|0;d=c[i>>2]&3;f=c[((d|0)==2?i:i+-48|0)+40>>2]|0;g=c[f+16>>2]|0;h=c[g+288>>2]|0;if((c[j+164>>2]|0)<0){if((c[42337]|0)>(h|0)|(h|0)>(c[42338]|0)?(k=(c[g+232>>2]|0)-(c[(c[(c[((d|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[j+170>>1]|0)|0,(k|0)<(c[42336]|0)|(c[42335]|0)==0):0){c[42335]=i;c[42336]=k}}else if((h|0)<(c[a+288>>2]|0))Mw(f);b=b+1|0}while(1){b=c[(c[a+264>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42336]|0)>0))break;b=c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Mw(b);a=c[l>>2]|0}d=d+1|0}return}function Nw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+16|0;b=0;while(1){a=c[l>>2]|0;i=c[(c[a+172>>2]|0)+(b<<2)>>2]|0;if(!i){d=0;break}j=c[i+16>>2]|0;d=c[i>>2]&3;f=c[((d|0)==3?i:i+48|0)+40>>2]|0;g=c[f+16>>2]|0;h=c[g+288>>2]|0;if((c[j+164>>2]|0)<0){if((c[42337]|0)>(h|0)|(h|0)>(c[42338]|0)?(k=(c[(c[(c[((d|0)==2?i:i+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[g+232>>2]|0)-(e[j+170>>1]|0)|0,(k|0)<(c[42336]|0)|(c[42335]|0)==0):0){c[42335]=i;c[42336]=k}}else if((h|0)<(c[a+288>>2]|0))Nw(f);b=b+1|0}while(1){b=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!((b|0)!=0&(c[42336]|0)>0))break;b=c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0;if((c[(c[b+16>>2]|0)+288>>2]|0)<(c[a+288>>2]|0)){Nw(b);a=c[l>>2]|0}d=d+1|0}return}function Ow(a){a=a|0;var b=0;b=sw(16)|0;c[b>>2]=a;c[b+4>>2]=cx(a,b)|0;c[b+12>>2]=b;return b|0}function Pw(a,b){a=a|0;b=b|0;var d=0,e=0;e=sw(8)|0;c[e>>2]=a;c[e+4>>2]=b;d=0;while(1){if((d|0)>=(b|0))break;c[(c[a+(d<<2)>>2]|0)+8>>2]=d;d=d+1|0}d=(b|0)/2|0;while(1){if((d|0)<=-1)break;Uw(e,d);d=d+-1|0}return e|0}function Qw(a){a=a|0;return c[a+4>>2]|0}function Rw(a){a=a|0;var b=0,d=0,e=0,f=0;f=c[a>>2]|0;b=c[f>>2]|0;c[b+8>>2]=-1;d=a+4|0;e=(c[d>>2]|0)+-1|0;c[f>>2]=c[f+(e<<2)>>2];f=c[a>>2]|0;c[(c[f>>2]|0)+8>>2]=0;c[f+(e<<2)>>2]=b;c[d>>2]=e;Uw(a,0);return b|0}function Sw(a){a=a|0;return bx(c[a>>2]|0,0,0)|0}function Tw(a){a=a|0;var b=0,d=0,f=0,g=0,h=0,i=0;b=a+16|0;if((c[(c[b>>2]|0)+164>>2]|0)>-1)va(87344,87325,463,87358);g=a+48|0;d=Zw(c[((c[a>>2]&3|0)==3?a:g)+40>>2]|0)|0;i=a+-48|0;f=Zw(c[((c[a>>2]&3|0)==2?a:i)+40>>2]|0)|0;h=c[a>>2]&3;b=(c[(c[(c[((h|0)==2?a:i)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?a:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[b>>2]|0)+170>>1]|0)|0;if((c[d+8>>2]|0)==-1)_w(c[d>>2]|0,0,b);else _w(c[f>>2]|0,0,0-b|0);$w(a);return ax(d,f)|0}function Uw(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=c[a>>2]|0;h=c[a+4>>2]|0;while(1){a=b<<1;f=a+2|0;a=a|1;g=i+(b<<2)|0;if(!((a|0)<(h|0)?(c[(c[i+(a<<2)>>2]|0)+4>>2]|0)<(c[(c[g>>2]|0)+4>>2]|0):0))a=b;if((f|0)>=(h|0))break;d=i+(f<<2)|0;e=c[d>>2]|0;if((f|0)==(b|0)?1:(c[e+4>>2]|0)>=(c[(c[i+(a<<2)>>2]|0)+4>>2]|0))break;a=c[g>>2]|0;c[g>>2]=e;c[d>>2]=a;c[(c[g>>2]|0)+8>>2]=b;c[a+8>>2]=f;b=f}return}function Vw(){Lw(c[(c[(c[42332]|0)+16>>2]|0)+192>>2]|0,0,1)|0;Ww(c[(c[(c[42332]|0)+16>>2]|0)+192>>2]|0,0);return}function Ww(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;f=a+16|0;d=0;while(1){a=c[f>>2]|0;e=c[(c[a+272>>2]|0)+(d<<2)>>2]|0;if(!e){e=0;break}if((e|0)!=(b|0))Ww(c[((c[e>>2]&3|0)==2?e:e+-48|0)+40>>2]|0,e);d=d+1|0}while(1){d=c[(c[a+264>>2]|0)+(e<<2)>>2]|0;if(!d)break;if((d|0)!=(b|0)){Ww(c[((c[d>>2]&3|0)==3?d:d+48|0)+40>>2]|0,d);a=c[f>>2]|0}e=e+1|0}if(b|0)Xw(b);return}function Xw(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;b=c[a>>2]&3;d=c[((b|0)==3?a:a+48|0)+40>>2]|0;e=c[d+16>>2]|0;if((c[e+280>>2]|0)==(a|0))i=1;else{e=c[((b|0)==2?a:a+-48|0)+40>>2]|0;i=-1;d=e;e=c[e+16>>2]|0}g=c[e+180>>2]|0;b=0;f=0;while(1){h=c[g+(f<<2)>>2]|0;if(!h)break;b=(Yw(h,d,i)|0)+b|0;f=f+1|0}g=c[e+172>>2]|0;e=0;while(1){f=c[g+(e<<2)>>2]|0;if(!f)break;b=(Yw(f,d,i)|0)+b|0;e=e+1|0}c[(c[a+16>>2]|0)+160>>2]=b;return}function Yw(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=c[a>>2]&3;f=c[((h|0)==3?a:a+48|0)+40>>2]|0;e=(f|0)==(b|0);h=((h|0)==2?a:a+-48|0)+40|0;if(e)f=c[h>>2]|0;g=c[b+16>>2]|0;i=c[(c[f+16>>2]|0)+288>>2]|0;f=c[a+16>>2]|0;a=c[f+156>>2]|0;if((c[g+284>>2]|0)<=(i|0)?(i|0)<=(c[g+288>>2]|0):0){if((c[f+164>>2]|0)>-1)f=c[f+160>>2]|0;else f=0;g=0;f=f-a|0}else{g=1;f=a}if((d|0)>0)e=(c[h>>2]|0)==(b|0);i=e?1:-1;return ((((g|0)==0?i:0-i|0)|0)<0?0-f|0:f)|0}function Zw(a){a=a|0;var b=0,d=0;a=c[(c[a+16>>2]|0)+280>>2]|0;while(1){b=a+12|0;d=c[b>>2]|0;if(!((d|0)!=(a|0)&(d|0)!=0))break;a=c[d+12>>2]|0;if(!a){a=d;continue}c[b>>2]=a}return a|0}function _w(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=a+16|0;e=c[h>>2]|0;g=e+232|0;c[g>>2]=(c[g>>2]|0)+d;g=0;while(1){f=c[(c[e+264>>2]|0)+(g<<2)>>2]|0;if(!f){g=0;break}f=c[((c[f>>2]&3|0)==3?f:f+48|0)+40>>2]|0;if((f|0)!=(b|0)){_w(f,a,d);e=c[h>>2]|0}g=g+1|0}while(1){f=c[(c[e+272>>2]|0)+(g<<2)>>2]|0;if(!f)break;f=c[((c[f>>2]&3|0)==2?f:f+-48|0)+40>>2]|0;if((f|0)!=(b|0)){_w(f,a,d);e=c[h>>2]|0}g=g+1|0}return}function $w(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;d=(c[b+16>>2]|0)+164|0;if((c[d>>2]|0)>-1){_l(1,87447,h)|0;xa(169156,1)}g=c[42333]|0;c[d>>2]=g;d=c[42334]|0;c[42333]=g+1;c[d+(g<<2)>>2]=b;d=c[b>>2]|0;g=b+48|0;e=c[((d&3|0)==3?b:g)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){f=c[42340]|0;d=c[42341]|0;c[42341]=d+1;c[f+(d<<2)>>2]=e;d=c[b>>2]|0}f=b+-48|0;e=c[((d&3|0)==2?b:f)+40>>2]|0;if(!(a[(c[e+16>>2]|0)+157>>0]|0)){i=c[42340]|0;d=c[42341]|0;c[42341]=d+1;c[i+(d<<2)>>2]=e;d=c[b>>2]|0}i=(c[((d&3|0)==3?b:g)+40>>2]|0)+16|0;d=c[i>>2]|0;a[d+157>>0]=1;e=c[d+272>>2]|0;d=d+276|0;g=c[d>>2]|0;c[d>>2]=g+1;c[e+(g<<2)>>2]=b;g=c[i>>2]|0;c[(c[g+272>>2]|0)+(c[g+276>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+180>>2]|0)+((c[i+276>>2]|0)+-1<<2)>>2]|0)){_l(1,87481,h+8|0)|0;xa(169156,1)}i=(c[((c[b>>2]&3|0)==2?b:f)+40>>2]|0)+16|0;e=c[i>>2]|0;a[e+157>>0]=1;f=c[e+264>>2]|0;e=e+268|0;g=c[e>>2]|0;c[e>>2]=g+1;c[f+(g<<2)>>2]=b;b=c[i>>2]|0;c[(c[b+264>>2]|0)+(c[b+268>>2]<<2)>>2]=0;i=c[i>>2]|0;if(!(c[(c[i+172>>2]|0)+((c[i+268>>2]|0)+-1<<2)>>2]|0)){_l(1,87516,h+16|0)|0;xa(169156,1)}else{l=h;return}}function ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;while(1){i=a+12|0;d=c[i>>2]|0;if((d|0)==0|(d|0)==(a|0))break;else a=d}while(1){h=b+12|0;d=c[h>>2]|0;if((d|0)==0|(d|0)==(b|0))break;else b=d}if((a|0)!=(b|0)){d=c[a+8>>2]|0;e=c[b+8>>2]|0;if((e&d|0)<=-1)va(87370,87325,327,87417);f=c[a+4>>2]|0;g=c[b+4>>2]|0;if((e|0)!=-1){d=(d|0)==-1?b:(g|0)<(f|0)?a:b;a=d;d=c[d+8>>2]|0}c[h>>2]=a;c[i>>2]=a;c[a+4>>2]=g+f;if((d|0)>-1)j=a;else va(87428,87325,335,87417)}else j=a;return j|0}function bx(a,b,d){a=a|0;b=b|0;d=d|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=Zw(a)|0;if(d){k=c[d>>2]&3;if(((c[(c[(c[((k|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((k|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)!=(e[(c[d+16>>2]|0)+170>>1]|0|0))f=3}else{d=0;f=3}a:do if((f|0)==3){k=a+16|0;j=0;while(1){f=c[k>>2]|0;i=c[(c[f+180>>2]|0)+(j<<2)>>2]|0;if(!i){j=0;break}f=i+16|0;g=i+-48|0;h=c[((c[i>>2]&3|0)==2?i:g)+40>>2]|0;do if((c[(c[f>>2]|0)+164>>2]|0)>-1){if((h|0)!=(b|0))d=bx(h,a,d)|0}else if((Zw(h)|0)!=(l|0)){if(d|0?(m=c[i>>2]&3,h=c[d>>2]&3,((c[(c[(c[((m|0)==2?i:g)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?i:i+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[f>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((h|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((h|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=i}while(0);j=j+1|0}while(1){f=c[(c[f+172>>2]|0)+(j<<2)>>2]|0;if(!f)break a;g=f+16|0;h=f+48|0;i=c[((c[f>>2]&3|0)==3?f:h)+40>>2]|0;do if((c[(c[g>>2]|0)+164>>2]|0)>-1){if((i|0)!=(b|0))d=bx(i,a,d)|0}else if((Zw(i)|0)!=(l|0)){if(d|0?(i=c[f>>2]&3,m=c[d>>2]&3,((c[(c[(c[((i|0)==2?f:f+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((i|0)==3?f:h)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[g>>2]|0)+170>>1]|0)|0)>=((c[(c[(c[((m|0)==2?d:d+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[(c[(c[((m|0)==3?d:d+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(e[(c[d+16>>2]|0)+170>>1]|0)|0)):0)break;d=f}while(0);j=j+1|0;f=c[k>>2]|0}}while(0);return d|0}function cx(a,b){a=a|0;b=b|0;var d=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=a+16|0;d=c[l>>2]|0;c[d+280>>2]=b;a=1;h=0;while(1){g=c[(c[d+172>>2]|0)+(h<<2)>>2]|0;if(!g){h=0;break}f=c[g+16>>2]|0;if(((c[f+164>>2]|0)<=-1?(i=c[g>>2]&3,j=g+48|0,k=c[(c[((i|0)==3?g:j)+40>>2]|0)+16>>2]|0,(c[k+280>>2]|0)==0):0)?((c[(c[(c[((i|0)==2?g:g+-48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)-(c[k+232>>2]|0)|0)==(e[f+170>>1]|0|0):0){$w(g);a=(cx(c[((c[g>>2]&3|0)==3?g:j)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}while(1){f=c[(c[d+180>>2]|0)+(h<<2)>>2]|0;if(!f)break;g=c[f+16>>2]|0;if(((c[g+164>>2]|0)<=-1?(m=c[f>>2]&3,n=f+-48|0,o=c[(c[((m|0)==2?f:n)+40>>2]|0)+16>>2]|0,(c[o+280>>2]|0)==0):0)?((c[o+232>>2]|0)-(c[(c[(c[((m|0)==3?f:f+48|0)+40>>2]|0)+16>>2]|0)+232>>2]|0)|0)==(e[g+170>>1]|0|0):0){$w(f);a=(cx(c[((c[f>>2]&3|0)==2?f:n)+40>>2]|0,b)|0)+a|0;d=c[l>>2]|0}h=h+1|0}return a|0}function dx(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=Im(a,87580)|0;if(!d)d=30;else d=pN(d)|0;return ww(a,b,c,d)|0}function ex(a){a=+a;return +((c[42195]|0)==0?a:+h[20898]-a)}function fx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0.0,v=0;s=l;l=l+16|0;r=s;c[42342]=c[(c[(c[d+64>>2]|0)+8>>2]|0)+4>>2];gx(d);i=c[d+16>>2]|0;u=+h[i+32>>3];t=+h[i+40>>3];hx(e,87591,+h[b+352>>3]);hx(e,87598,u/72.0);hx(e,87598,t/72.0);ix(e);i=co(d)|0;while(1){if(!i)break;g=i+16|0;if(!(a[(c[g>>2]|0)+118>>0]|0)){jx(e,87600,Wp(Dn(i)|0)|0);q=(c[g>>2]|0)+16|0;c[r>>2]=c[q>>2];c[r+4>>2]=c[q+4>>2];c[r+8>>2]=c[q+8>>2];c[r+12>>2]=c[q+12>>2];kx(e,r);if(!(a[(c[(c[g>>2]|0)+104>>2]|0)+82>>0]|0)){b=ro(i)|0;b=lx(b,c[c[(c[g>>2]|0)+104>>2]>>2]|0)|0}else b=Wp(Jm(i,c[42224]|0)|0)|0;hx(e,87598,+h[(c[g>>2]|0)+32>>3]);hx(e,87598,+h[(c[g>>2]|0)+40>>3]);jx(e,87598,b);jx(e,87598,DA(i,c[42227]|0,95849)|0);jx(e,87598,c[c[(c[g>>2]|0)+8>>2]>>2]|0);jx(e,87598,DA(i,c[42210]|0,122122)|0);b=DA(i,c[42211]|0,174318)|0;if(!(a[b>>0]|0))b=DA(i,c[42210]|0,119608)|0;jx(e,87598,b);ix(e)}i=eo(d,i)|0}o=f<<24>>24==0;n=co(d)|0;while(1){if(!n)break;m=Pm(d,n)|0;while(1){if(!m)break;if(o){f=174318;j=174318}else{j=Im(m,96258)|0;f=Im(m,96267)|0;f=f|0?f:174318;j=j|0?j:174318}p=m+16|0;b=c[p>>2]|0;k=c[b+8>>2]|0;q=m+48|0;a:do if(k){i=c[k+4>>2]|0;b=0;g=0;while(1){if((b|0)>=(i|0))break;v=(c[(c[k>>2]|0)+(b*48|0)+4>>2]|0)+g|0;b=b+1|0;g=v}jx(e,0,96253);mx(e,c[((c[m>>2]&3|0)==3?m:q)+40>>2]|0,j);mx(e,c[((c[m>>2]&3|0)==2?m:m+-48|0)+40>>2]|0,f);nx(e,g);f=0;while(1){b=c[p>>2]|0;g=c[b+8>>2]|0;if((f|0)>=(c[g+4>>2]|0))break a;i=c[g>>2]|0;g=c[i+(f*48|0)>>2]|0;i=c[i+(f*48|0)+4>>2]|0;b=0;while(1){if((b|0)>=(i|0))break;v=g+(b<<4)|0;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];kx(e,r);b=b+1|0}f=f+1|0}}while(0);if(c[b+96>>2]|0){v=ro(c[((c[m>>2]&3|0)==3?m:q)+40>>2]|0)|0;jx(e,87598,lx(v,c[c[(c[p>>2]|0)+96>>2]>>2]|0)|0);v=(c[(c[p>>2]|0)+96>>2]|0)+56|0;c[r>>2]=c[v>>2];c[r+4>>2]=c[v+4>>2];c[r+8>>2]=c[v+8>>2];c[r+12>>2]=c[v+12>>2];kx(e,r)}jx(e,87598,DA(m,c[42262]|0,95849)|0);jx(e,87598,DA(m,c[42246]|0,122122)|0);ix(e);m=Rm(d,m)|0}n=eo(d,n)|0}ox(87606,e);l=s;return}function gx(a){a=a|0;var b=0.0;if(c[42195]|0){a=c[a+16>>2]|0;b=+h[a+40>>3]+ +h[a+24>>3];h[20898]=b;h[20899]=b/72.0}return}function hx(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0,f=0;f=l;l=l+1040|0;e=f;d=f+8|0;if(b|0)ox(b,a);h[e>>3]=c;yJ(d,87612,e)|0;ox(d,a);l=f;return}function ix(b){b=b|0;a[174214]=10;lb[c[42342]&63](b,174214)|0;return}function jx(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)ox(b,a);ox(c,a);return}function kx(a,b){a=a|0;b=b|0;var d=0.0;hx(a,87598,+h[b>>3]/72.0);d=+h[b+8>>3];hx(a,87598,((c[42195]|0)==0?d:+h[20898]-d)/72.0);return}function lx(a,b){a=a|0;b=b|0;var c=0;c=ap(a,b)|0;b=Wp(c)|0;cp(a,c)|0;return b|0}function mx(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!(a[(c[d+16>>2]|0)+118>>0]|0))d=Wp(Dn(d)|0)|0;else{f=ro(d)|0;d=lx(f,(VK(Dn(d)|0,58)|0)+1|0)|0}jx(b,87598,d);if(e|0?a[e>>0]|0:0)jx(b,92977,Wp(e)|0);return}function nx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+1040|0;f=d;e=d+8|0;ox(87598,a);c[f>>2]=b;yJ(e,122203,f)|0;ox(e,a);l=d;return}function ox(a,b){a=a|0;b=b|0;lb[c[42342]&63](b,a)|0;return}function px(d,f,g){d=d|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0.0,Z=0;X=l;l=l+2288|0;V=X+208|0;U=X+192|0;T=X+176|0;S=X+160|0;R=X+144|0;Q=X+128|0;O=X+112|0;N=X+96|0;M=X+80|0;L=X+64|0;K=X+56|0;H=X+48|0;W=X+32|0;P=X+24|0;G=X;D=X+1264|0;E=X+224|0;F=d+16|0;B=(e[(c[F>>2]|0)+178>>1]|0)>2;Cv(1);gx(d);cm(E,1024,X+240|0);qB(d,1,87617,174318)|0;qB(d,1,87621,174318)|0;c[42208]=qB(d,1,96003,174318)|0;c[42207]=qB(d,1,96009,174318)|0;qB(d,2,87617,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0;if(i&16){qB(d,1,87627,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0}if(i&1){qB(d,2,87631,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0}if(i&32){qB(d,2,87627,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0}if(i&2){qB(d,2,87634,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0}if(i&4){qB(d,2,87642,174318)|0;i=a[(c[F>>2]|0)+113>>0]|0}if(!(i&8)){u=0;v=0;w=0}else{w=qB(d,0,87631,174318)|0;v=qB(d,0,87650,174318)|0;u=qB(d,0,87657,174318)|0}y=qB(d,0,87665,174318)|0;z=E+4|0;A=E+8|0;t=0;i=0;x=co(d)|0;while(1){if(!x)break;s=x+16|0;j=c[s>>2]|0;n=+h[j+16>>3];o=+h[j+24>>3];o=(c[42195]|0)==0?o:+h[20898]-o;if(B){Y=+h[(c[j+132>>2]|0)+16>>3]*72.0;h[G>>3]=n;h[G+8>>3]=o;h[G+16>>3]=Y;yJ(D,87668,G)|0;fm(E,D)|0;j=3;while(1){if((j|0)>=(e[(c[F>>2]|0)+178>>1]|0))break;h[P>>3]=+h[(c[(c[s>>2]|0)+132>>2]|0)+(j<<3)>>3]*72.0;yJ(D,87683,P)|0;fm(E,D)|0;j=j+1|0}j=c[z>>2]|0;if(j>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;j=c[z>>2]|0}a[j>>0]=0;r=c[E>>2]|0;c[z>>2]=r;Km(x,87617,r)|0;r=x}else{h[W>>3]=n;h[W+8>>3]=o;yJ(D,87689,W)|0;Km(x,87617,D)|0;r=x}h[H>>3]=+h[(c[s>>2]|0)+80>>3]/72.0;yJ(D,87612,H)|0;Cm(r,c[42207]|0,D)|0;j=c[s>>2]|0;h[K>>3]=(+h[j+88>>3]+ +h[j+96>>3])/72.0;yJ(D,87612,K)|0;Cm(r,c[42208]|0,D)|0;j=c[s>>2]|0;k=c[j+108>>2]|0;if((k|0)!=0?(a[k+81>>0]|0)!=0:0){Y=+h[k+64>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[L>>3]=+h[k+56>>3];h[L+8>>3]=Y;yJ(D,87689,L)|0;Km(r,87627,D)|0;j=c[s>>2]|0}if(vJ(c[c[j+8>>2]>>2]|0,91224)|0){if(c[42240]|0?(Ly(x)|0)<<24>>24:0){k=c[(c[s>>2]|0)+12>>2]|0;q=k+8|0;j=c[q>>2]|0;if((j|0)<3){j=Im(r,87699)|0;if(!j)j=8;else j=pN(j)|0;j=(j|0)<3?8:j}p=k+44|0;n=+(j|0);m=0;while(1){if((m|0)>=(j|0))break;if((m|0)>0){k=c[z>>2]|0;if(k>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;k=c[z>>2]|0}c[z>>2]=k+1;a[k>>0]=32}k=(c[42195]|0)!=0;if((c[q>>2]|0)>2){Z=c[p>>2]|0;Y=+h[Z+(m<<4)+8>>3]/72.0;Y=k?+h[20899]-Y:Y;h[M>>3]=+h[Z+(m<<4)>>3]/72.0;h[M+8>>3]=Y;yJ(D,87712,M)|0}else{Z=c[s>>2]|0;Y=+(m|0)/n*3.141592653589793*2.0;o=+h[Z+32>>3]*.5*+I(+Y);Y=+h[Z+40>>3]*.5*+J(+Y);Y=k?+h[20899]-Y:Y;h[N>>3]=o;h[N+8>>3]=Y;yJ(D,87712,N)|0}fm(E,D)|0;m=m+1|0}k=c[42240]|0;j=c[z>>2]|0;if(j>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;j=c[z>>2]|0}a[j>>0]=0;Z=c[E>>2]|0;c[z>>2]=Z;Cm(r,k,Z)|0}}else{qx(x,c[j+12>>2]|0,E);hm(E)|0;j=c[z>>2]|0;if(j>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;j=c[z>>2]|0}a[j>>0]=0;Z=c[E>>2]|0;c[z>>2]=Z;Km(r,87621,Z)|0}a:do if((c[42193]|0)>0){s=Pm(d,x)|0;j=t;while(1){if(!s)break a;r=s+16|0;k=c[r>>2]|0;do if((a[k+112>>0]|0)!=6?(C=c[k+8>>2]|0,(C|0)!=0):0){q=0;k=C;while(1){if((q|0)>=(c[k+4>>2]|0))break;if((q|0)>0){k=c[z>>2]|0;if(k>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;k=c[z>>2]|0}c[z>>2]=k+1;a[k>>0]=59;k=c[(c[r>>2]|0)+8>>2]|0}k=c[k>>2]|0;if(c[k+(q*48|0)+8>>2]|0){Y=+h[k+(q*48|0)+24>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[O>>3]=+h[k+(q*48|0)+16>>3];h[O+8>>3]=Y;yJ(D,87722,O)|0;fm(E,D)|0;i=1;k=c[c[(c[r>>2]|0)+8>>2]>>2]|0}if(c[k+(q*48|0)+12>>2]|0){Y=+h[k+(q*48|0)+40>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[Q>>3]=+h[k+(q*48|0)+32>>3];h[Q+8>>3]=Y;yJ(D,87735,Q)|0;fm(E,D)|0;j=1}p=0;while(1){k=c[(c[r>>2]|0)+8>>2]|0;m=c[k>>2]|0;if((p|0)>=(c[m+(q*48|0)+4>>2]|0))break;if((p|0)>0){k=c[z>>2]|0;if(k>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;k=c[z>>2]|0}c[z>>2]=k+1;a[k>>0]=32;k=c[c[(c[r>>2]|0)+8>>2]>>2]|0}else k=m;Z=c[k+(q*48|0)>>2]|0;Y=+h[Z+(p<<4)+8>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[R>>3]=+h[Z+(p<<4)>>3];h[R+8>>3]=Y;yJ(D,87689,R)|0;fm(E,D)|0;p=p+1|0}q=q+1|0}k=c[z>>2]|0;if(k>>>0>=(c[A>>2]|0)>>>0){dm(E,1)|0;k=c[z>>2]|0}a[k>>0]=0;k=c[E>>2]|0;c[z>>2]=k;Km(s,87617,k)|0;k=c[r>>2]|0;m=c[k+96>>2]|0;if(m){Y=+h[m+64>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[S>>3]=+h[m+56>>3];h[S+8>>3]=Y;yJ(D,87689,S)|0;Km(s,87631,D)|0;k=c[r>>2]|0}m=c[k+108>>2]|0;do if(m){if(!(a[m+81>>0]|0))break;Y=+h[m+64>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[T>>3]=+h[m+56>>3];h[T+8>>3]=Y;yJ(D,87689,T)|0;Km(s,87627,D)|0;k=c[r>>2]|0}while(0);m=c[k+100>>2]|0;if(m){Y=+h[m+64>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[U>>3]=+h[m+56>>3];h[U+8>>3]=Y;yJ(D,87689,U)|0;Km(s,87634,D)|0;k=c[r>>2]|0}k=c[k+104>>2]|0;if(!k)break;Y=+h[k+64>>3];Y=(c[42195]|0)==0?Y:+h[20898]-Y;h[V>>3]=+h[k+56>>3];h[V+8>>3]=Y;yJ(D,87689,V)|0;Km(s,87642,D)|0}while(0);s=Rm(d,s)|0}}else j=t;while(0);t=j;x=eo(d,x)|0}rx(d,y,w,v,u);gm(E);if(b[(c[F>>2]|0)+136>>1]&1)kB(d);c[f>>2]=i;c[g>>2]=t;Cv(0);l=X;return}function qx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0,j=0.0,k=0.0,m=0,n=0.0,o=0.0,p=0.0,q=0;i=l;l=l+1056|0;f=i;e=i+32|0;g=b+48|0;if(!(c[g>>2]|0)){q=c[a+16>>2]|0;p=+h[q+16>>3];m=(c[42195]|0)!=0;j=+h[q+24>>3];o=j+ +h[b+24>>3];k=+h[20898];n=p+ +h[b+32>>3];j=j+ +h[b+40>>3];h[f>>3]=+h[b+16>>3]+p;h[f+8>>3]=m?k-o:o;h[f+16>>3]=n;h[f+24>>3]=m?k-j:j;yJ(e,87773,f)|0;fm(d,e)|0}e=b+56|0;b=0;while(1){if((b|0)>=(c[g>>2]|0))break;qx(a,c[(c[e>>2]|0)+(b<<2)>>2]|0,d);b=b+1|0}l=i;return}function rx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0.0,r=0.0,s=0,t=0.0,u=0.0,v=0;p=l;l=l+1088|0;k=p+56|0;n=p+48|0;m=p+32|0;i=p;j=p+64|0;o=b+16|0;v=c[o>>2]|0;s=(c[42195]|0)!=0;u=+h[v+24>>3];r=+h[20898];t=+h[v+32>>3];q=+h[v+40>>3];h[i>>3]=+h[v+16>>3];h[i+8>>3]=s?r-u:u;h[i+16>>3]=t;h[i+24>>3]=s?r-q:q;yJ(j,87748,i)|0;Cm(b,d,j)|0;i=c[(c[o>>2]|0)+12>>2]|0;if((i|0)!=0?(a[c[i>>2]>>0]|0)!=0:0){u=+h[i+64>>3];u=(c[42195]|0)==0?u:+h[20898]-u;h[m>>3]=+h[i+56>>3];h[m+8>>3]=u;yJ(j,87689,m)|0;Cm(b,e,j)|0;v=c[(c[o>>2]|0)+12>>2]|0;u=+h[v+32>>3];h[n>>3]=+h[v+24>>3]/72.0;yJ(j,87768,n)|0;Cm(b,f,j)|0;h[k>>3]=u/72.0;yJ(j,87768,k)|0;Cm(b,g,j)|0;b=1}else b=1;while(1){i=c[o>>2]|0;if((b|0)>(c[i+180>>2]|0))break;rx(c[(c[i+184>>2]|0)+(b<<2)>>2]|0,d,e,f,g);b=b+1|0}l=p;return}function sx(a){a=a|0;var b=0;b=l;l=l+16|0;px(a,b,b+4|0);l=b;return}function tx(){return Ql(19800,c[4345]|0)|0}function ux(a,b,c){a=a|0;b=b|0;c=c|0;xN(b);return}function vx(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;a=c[b>>2]|0;e=c[d>>2]|0;if((a|0)<=(e|0))if((a|0)<(e|0))a=-1;else{b=c[b+4>>2]|0;d=c[d+4>>2]|0;return ((b|0)>(d|0)?1:((b|0)<(d|0))<<31>>31)|0}else a=1;return a|0}function wx(a){a=a|0;Kl(a)|0;return}function xx(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=c[b>>2];c[e+4>>2]=c[b+4>>2];b=yx(e)|0;if((Za[c[a>>2]&31](a,b,1)|0)!=(b|0))xN(b);l=d;return}function yx(a){a=a|0;var b=0,d=0,e=0;b=sw(16)|0;e=a;d=c[e+4>>2]|0;a=b+8|0;c[a>>2]=c[e>>2];c[a+4>>2]=d;return b|0}function zx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;e=l;l=l+16|0;f=e+8|0;g=e;c[g>>2]=b;c[g+4>>2]=d;c[f>>2]=c[g>>2];c[f+4>>2]=c[g+4>>2];b=yx(f)|0;if((Za[c[a>>2]&31](a,b,1)|0)!=(b|0))xN(b);l=e;return}function Ax(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+16|0;e=d;g=b;f=c[g+4>>2]|0;b=e+8|0;c[b>>2]=c[g>>2];c[b+4>>2]=f;b=(Za[c[a>>2]&31](a,e,4)|0)!=0&1;l=d;return b|0}function Bx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f+8>>2]=b;c[f+12>>2]=d;d=(Za[c[a>>2]&31](a,f,4)|0)!=0&1;l=e;return d|0}function Cx(a){a=a|0;return Sl(a)|0}function Dx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;d=sw((Sl(a)|0)<<3)|0;b=d;a=Ol(a)|0;while(1){if(!a)break;g=a+8|0;f=c[g+4>>2]|0;e=b;c[e>>2]=c[g>>2];c[e+4>>2]=f;b=b+8|0;a=c[a>>2]|0}return d|0}function Ex(a,b){a=a|0;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+160|0;q=t+144|0;d=t+64|0;j=t+128|0;k=t+112|0;m=t+96|0;n=t+48|0;o=t+32|0;p=t+16|0;r=t;s=a+16|0;a=c[s>>2]|0;e=+h[a+16>>3];f=+h[a+24>>3];g=+h[a+32>>3];i=+h[a+40>>3];a=d+16|0;if((b+-1|0)>>>0<2){Fx(j,e,i);c[q>>2]=c[j>>2];c[q+4>>2]=c[j+4>>2];c[q+8>>2]=c[j+8>>2];c[q+12>>2]=c[j+12>>2];Gx(d,q);Fx(k,g,f);c[q>>2]=c[k>>2];c[q+4>>2]=c[k+4>>2];c[q+8>>2]=c[k+8>>2];c[q+12>>2]=c[k+12>>2];Gx(m,q);c[a>>2]=c[m>>2];c[a+4>>2]=c[m+4>>2];c[a+8>>2]=c[m+8>>2];c[a+12>>2]=c[m+12>>2]}else{Fx(n,e,f);c[q>>2]=c[n>>2];c[q+4>>2]=c[n+4>>2];c[q+8>>2]=c[n+8>>2];c[q+12>>2]=c[n+12>>2];Gx(d,q);Fx(o,g,i);c[q>>2]=c[o>>2];c[q+4>>2]=c[o+4>>2];c[q+8>>2]=c[o+8>>2];c[q+12>>2]=c[o+12>>2];Gx(p,q);c[a>>2]=c[p>>2];c[a+4>>2]=c[p+4>>2];c[a+8>>2]=c[p+8>>2];c[a+12>>2]=c[p+12>>2]}a=(c[s>>2]|0)+16|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];a=c[(c[s>>2]|0)+12>>2]|0;if(!a)a=1;else{a=a+56|0;c[q>>2]=c[a>>2];c[q+4>>2]=c[a+4>>2];c[q+8>>2]=c[a+8>>2];c[q+12>>2]=c[a+12>>2];Gx(r,q);c[a>>2]=c[r>>2];c[a+4>>2]=c[r+4>>2];c[a+8>>2]=c[r+8>>2];c[a+12>>2]=c[r+12>>2];a=1}while(1){d=c[s>>2]|0;if((a|0)>(c[d+180>>2]|0))break;Ex(c[(c[d+184>>2]|0)+(a<<2)>>2]|0,b);a=a+1|0}l=t;return}function Fx(a,b,c){a=a|0;b=+b;c=+c;h[a>>3]=b;h[a+8>>3]=c;return}function Gx(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0;d=l;l=l+32|0;g=d+16|0;e=d;f=(c[42343]|0)*90|0;c[g>>2]=c[b>>2];c[g+4>>2]=c[b+4>>2];c[g+8>>2]=c[b+8>>2];c[g+12>>2]=c[b+12>>2];Zv(e,g,f);c[b>>2]=c[e>>2];c[b+4>>2]=c[e+4>>2];c[b+8>>2]=c[e+8>>2];c[b+12>>2]=c[e+12>>2];h[b>>3]=+h[b>>3]-+h[20900];e=b+8|0;h[e>>3]=+h[e>>3]-+h[20901];c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];l=d;return}function Hx(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0.0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0.0;A=l;l=l+1168|0;x=A+144|0;z=A+96|0;y=A+64|0;w=A+48|0;s=A+32|0;t=A+16|0;u=A;c[w>>2]=0;c[w+4>>2]=0;c[w+8>>2]=0;c[w+12>>2]=0;v=b+16|0;q=c[(c[v>>2]|0)+116>>2]|0;c[42343]=q&3;q=q&1;a[174216]=q;if(!(q<<24>>24))Jx(b);else Ix(b);Kx(b);q=c[v>>2]|0;g=c[q+12>>2]|0;do if(g|0?(a[g+81>>0]|0)==0:0){j=g+24|0;c[w>>2]=c[j>>2];c[w+4>>2]=c[j+4>>2];c[w+8>>2]=c[j+8>>2];c[w+12>>2]=c[j+12>>2];r=+h[w>>3]+16.0;h[w>>3]=r;j=w+8|0;e=+h[j>>3]+8.0;h[j>>3]=e;j=(a[q+275>>0]&1)!=0;m=q+16|0;n=q+40|0;o=q+24|0;p=q+32|0;if(a[174216]|0){if(j)h[p>>3]=e+ +h[p>>3];else h[m>>3]=+h[m>>3]-e;e=+h[n>>3];f=+h[o>>3];B=e-f;i=(r-B)*.5;if(!(r>B))break;h[o>>3]=f-i;h[n>>3]=e+i;break}k=(c[42343]|0)==0;do if(j)if(k){h[n>>3]=e+ +h[n>>3];break}else{h[o>>3]=+h[o>>3]-e;break}else if(k){h[o>>3]=+h[o>>3]-e;break}else{h[n>>3]=e+ +h[n>>3];break}while(0);e=+h[p>>3];f=+h[m>>3];B=e-f;i=(r-B)*.5;if(r>B){h[m>>3]=f-i;h[p>>3]=e+i}}while(0);if(d){switch(c[42343]|0){case 0:{u=q+16|0;c[41800]=c[u>>2];c[41801]=c[u+4>>2];c[41802]=c[u+8>>2];c[41803]=c[u+12>>2];break}case 1:{Fx(s,-+h[q+40>>3],+h[q+16>>3]);c[41800]=c[s>>2];c[41801]=c[s+4>>2];c[41802]=c[s+8>>2];c[41803]=c[s+12>>2];break}case 2:{Fx(t,+h[q+16>>3],-+h[q+40>>3]);c[41800]=c[t>>2];c[41801]=c[t+4>>2];c[41802]=c[t+8>>2];c[41803]=c[t+12>>2];break}case 3:{Fx(u,+h[q+24>>3],+h[q+16>>3]);c[41800]=c[u>>2];c[41801]=c[u+4>>2];c[41802]=c[u+8>>2];c[41803]=c[u+12>>2];break}default:{}}Lx(b);g=c[(c[v>>2]|0)+12>>2]|0}if(g|0?(a[g+81>>0]|0)==0:0){c[x>>2]=c[w>>2];c[x+4>>2]=c[w+4>>2];c[x+8>>2]=c[w+8>>2];c[x+12>>2]=c[w+12>>2];Mx(b,x)}if(c[42190]|0){e=+h[20900];f=+h[20901];if(!(a[174216]|0)){h[z>>3]=f;h[z+8>>3]=e;h[z+16>>3]=f;h[z+24>>3]=e;h[z+32>>3]=-e;h[z+40>>3]=-f;yJ(x,88009,z)|0}else{h[y>>3]=e;h[y+8>>3]=f;h[y+16>>3]=e;h[y+24>>3]=f;yJ(x,87794,y)|0}z=mL(x)|0;c[c[42190]>>2]=z}l=A;return}function Ix(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0.0,k=0,l=0;l=b+16|0;if(((so(b)|0)!=(b|0)?(i=c[l>>2]|0,k=c[i+12>>2]|0,(k|0)!=0):0)?(a[k+81>>0]|0)==0:0){b=a[i+275>>0]|0;if(!(b&1)){j=+h[i+16>>3]+ +h[i+96>>3]*.5;d=i+104|0}else{j=+h[i+32>>3]-+h[i+64>>3]*.5;d=i+72|0}g=b<<24>>24;f=+h[d>>3]*.5;b=i+24|0;do if(!(g&4)){e=+h[i+40>>3];if(!(g&2)){e=(e+ +h[b>>3])*.5;break}else{e=e-f;break}}else e=f+ +h[b>>3];while(0);h[k+56>>3]=j;h[k+64>>3]=e;a[(c[(c[l>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[l>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Ix(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Jx(b){b=b|0;var d=0,e=0.0,f=0.0,g=0,i=0,j=0.0,k=0,l=0;l=b+16|0;if(((so(b)|0)!=(b|0)?(i=c[l>>2]|0,k=c[i+12>>2]|0,(k|0)!=0):0)?(a[k+81>>0]|0)==0:0){b=a[i+275>>0]|0;if(!(b&1)){j=+h[i+24>>3]+ +h[i+56>>3]*.5;d=i+48|0}else{j=+h[i+40>>3]-+h[i+88>>3]*.5;d=i+80|0}g=b<<24>>24;f=+h[d>>3]*.5;b=i+32|0;do if(!(g&4)){e=+h[i+16>>3];if(!(g&2)){e=(e+ +h[b>>3])*.5;break}else{e=f+e;break}}else e=+h[b>>3]-f;while(0);h[k+56>>3]=e;h[k+64>>3]=j;a[(c[(c[l>>2]|0)+12>>2]|0)+81>>0]=1;b=1}else b=1;while(1){d=c[l>>2]|0;if((b|0)>(c[d+180>>2]|0))break;Jx(c[(c[d+184>>2]|0)+(b<<2)>>2]|0);b=b+1|0}return}function Kx(e){e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=l;l=l+544|0;L=S+504|0;R=S+448|0;Q=S+408|0;K=S+352|0;J=S+312|0;I=S+304|0;H=S+248|0;M=S+200|0;B=S+184|0;O=S+96|0;q=S+488|0;C=S+456|0;D=S+416|0;E=S+376|0;F=S+360|0;G=S+320|0;w=S+288|0;x=S+256|0;y=S+232|0;z=S+152|0;A=S+136|0;f=S+56|0;N=S+16|0;P=S;p=e+16|0;u=c[p>>2]|0;g=b[u+136>>1]&14;u=d[u+113>>0]|0;if(!((u&54|0)==0?(u&1|0)==0|(c[42194]|0)!=0:0)){u=g<<16>>16!=0;o=co(e)|0;h=0;j=0;i=0;while(1){if(!o)break;g=c[(c[o+16>>2]|0)+108>>2]|0;do if(g)if(!(a[g+81>>0]|0)){i=i+1|0;break}else{h=h+1|0;break}while(0);n=Pm(e,o)|0;g=j;while(1){if(!n)break;k=c[n+16>>2]|0;j=c[k+108>>2]|0;m=k+8|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(u)g=((c[m>>2]|0)!=0&1)+g|0}while(0);j=c[k+100>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(u)g=((c[m>>2]|0)!=0&1)+g|0}while(0);j=c[k+104>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(u)g=((c[m>>2]|0)!=0&1)+g|0}while(0);j=c[k+96>>2]|0;do if(j){if(a[j+81>>0]|0){h=h+1|0;break}if(u)g=((c[m>>2]|0)!=0&1)+g|0}while(0);n=Rm(e,n)|0}o=eo(e,o)|0;j=g}if(!(a[(c[p>>2]|0)+113>>0]&8))o=0;else o=Ox(e)|0;t=j+i|0;if(t|0){p=h+j+o+(mn(e)|0)|0;r=sw(p*40|0)|0;s=sw(t*40|0)|0;Fx(M,2147483647.0,2147483647.0);g=M+16|0;Fx(q,-2147483647.0,-2147483647.0);c[g>>2]=c[q>>2];c[g+4>>2]=c[q+4>>2];c[g+8>>2]=c[q+8>>2];c[g+12>>2]=c[q+12>>2];g=s;i=r;n=co(e)|0;while(1){if(!n)break;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Px(C,n,i,L);c[M>>2]=c[C>>2];c[M+4>>2]=c[C+4>>2];c[M+8>>2]=c[C+8>>2];c[M+12>>2]=c[C+12>>2];c[M+16>>2]=c[C+16>>2];c[M+20>>2]=c[C+20>>2];c[M+24>>2]=c[C+24>>2];c[M+28>>2]=c[C+28>>2];h=c[(c[n+16>>2]|0)+108>>2]|0;do if(h)if(!(a[h+81>>0]|0)){c[L>>2]=c[B>>2];c[L+4>>2]=c[B+4>>2];c[L+8>>2]=c[B+8>>2];c[L+12>>2]=c[B+12>>2];Rx(h,i,g,0,L);g=g+40|0;break}else{i=i+40|0;c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Qx(D,h,i,L);c[M>>2]=c[D>>2];c[M+4>>2]=c[D+4>>2];c[M+8>>2]=c[D+8>>2];c[M+12>>2]=c[D+12>>2];c[M+16>>2]=c[D+16>>2];c[M+20>>2]=c[D+20>>2];c[M+24>>2]=c[D+24>>2];c[M+28>>2]=c[D+28>>2];break}while(0);m=Pm(e,n)|0;i=i+40|0;while(1){if(!m)break;k=m+16|0;h=c[k>>2]|0;j=c[h+96>>2]|0;a:do if(!j)v=52;else{do if(!(a[j+81>>0]|0)){if(u?c[h+8>>2]|0:0){Yz(F,e,m);c[L>>2]=c[F>>2];c[L+4>>2]=c[F+4>>2];c[L+8>>2]=c[F+8>>2];c[L+12>>2]=c[F+12>>2];Rx(j,i,g,1,L);g=g+40|0;break}c[H>>2]=c[j>>2];_l(0,88821,H)|0;break a}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Qx(E,j,i,L);c[M>>2]=c[E>>2];c[M+4>>2]=c[E+4>>2];c[M+8>>2]=c[E+8>>2];c[M+12>>2]=c[E+12>>2];c[M+16>>2]=c[E+16>>2];c[M+20>>2]=c[E+20>>2];c[M+24>>2]=c[E+24>>2];c[M+28>>2]=c[E+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0;v=52}while(0);b:do if((v|0)==52){v=0;j=c[h+104>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(u?c[h+8>>2]|0:0){Sx(w,m);c[L>>2]=c[w>>2];c[L+4>>2]=c[w+4>>2];c[L+8>>2]=c[w+8>>2];c[L+12>>2]=c[w+12>>2];Rx(j,i,g,1,L);g=g+40|0;break}c[I>>2]=c[j>>2];_l(0,88856,I)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Qx(G,j,i,L);c[M>>2]=c[G>>2];c[M+4>>2]=c[G+4>>2];c[M+8>>2]=c[G+8>>2];c[M+12>>2]=c[G+12>>2];c[M+16>>2]=c[G+16>>2];c[M+20>>2]=c[G+20>>2];c[M+24>>2]=c[G+24>>2];c[M+28>>2]=c[G+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+100>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(u?c[h+8>>2]|0:0){Tx(y,m);c[L>>2]=c[y>>2];c[L+4>>2]=c[y+4>>2];c[L+8>>2]=c[y+8>>2];c[L+12>>2]=c[y+12>>2];Rx(j,i,g,1,L);g=g+40|0;break}c[J>>2]=c[j>>2];_l(0,88896,J)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Qx(x,j,i,L);c[M>>2]=c[x>>2];c[M+4>>2]=c[x+4>>2];c[M+8>>2]=c[x+8>>2];c[M+12>>2]=c[x+12>>2];c[M+16>>2]=c[x+16>>2];c[M+20>>2]=c[x+20>>2];c[M+24>>2]=c[x+24>>2];c[M+28>>2]=c[x+28>>2]}while(0);i=i+40|0;h=c[k>>2]|0}j=c[h+108>>2]|0;if(j){do if(!(a[j+81>>0]|0)){if(u?c[h+8>>2]|0:0){Yz(A,e,m);c[L>>2]=c[A>>2];c[L+4>>2]=c[A+4>>2];c[L+8>>2]=c[A+8>>2];c[L+12>>2]=c[A+12>>2];Rx(j,i,g,1,L);g=g+40|0;break}c[K>>2]=c[j>>2];_l(0,88936,K)|0;break b}else{c[L>>2]=c[M>>2];c[L+4>>2]=c[M+4>>2];c[L+8>>2]=c[M+8>>2];c[L+12>>2]=c[M+12>>2];c[L+16>>2]=c[M+16>>2];c[L+20>>2]=c[M+20>>2];c[L+24>>2]=c[M+24>>2];c[L+28>>2]=c[M+28>>2];Qx(z,j,i,L);c[M>>2]=c[z>>2];c[M+4>>2]=c[z+4>>2];c[M+8>>2]=c[z+8>>2];c[M+12>>2]=c[z+12>>2];c[M+16>>2]=c[z+16>>2];c[M+20>>2]=c[z+20>>2];c[M+24>>2]=c[z+24>>2];c[M+28>>2]=c[z+28>>2]}while(0);i=i+40|0}}while(0);m=Rm(e,m)|0}n=eo(e,n)|0}if(o|0){c[f>>2]=c[M>>2];c[f+4>>2]=c[M+4>>2];c[f+8>>2]=c[M+8>>2];c[f+12>>2]=c[M+12>>2];c[f+16>>2]=c[M+16>>2];c[f+20>>2]=c[M+20>>2];c[f+24>>2]=c[M+24>>2];c[f+28>>2]=c[M+28>>2];c[f+32>>2]=i;h=L;g=h+40|0;do{c[h>>2]=c[f>>2];h=h+4|0;f=f+4|0}while((h|0)<(g|0));Ux(N,e,L);c[M>>2]=c[N>>2];c[M+4>>2]=c[N+4>>2];c[M+8>>2]=c[N+8>>2];c[M+12>>2]=c[N+12>>2];c[M+16>>2]=c[N+16>>2];c[M+20>>2]=c[N+20>>2];c[M+24>>2]=c[N+24>>2];c[M+28>>2]=c[N+28>>2]}a[O+32>>0]=EA(e,ym(e,0,88972,0)|0,1)|0;c[O>>2]=c[M>>2];c[O+4>>2]=c[M+4>>2];c[O+8>>2]=c[M+8>>2];c[O+12>>2]=c[M+12>>2];c[O+16>>2]=c[M+16>>2];c[O+20>>2]=c[M+20>>2];c[O+24>>2]=c[M+24>>2];c[O+28>>2]=c[M+28>>2];yE(r,p,s,t,O)|0;if(a[174212]|0)Vx(r,p,s,t,O);f=0;g=0;h=s;while(1){if((g|0)>=(t|0))break;if(a[h+36>>0]|0){O=c[h+32>>2]|0;a[O+81>>0]=1;N=O+56|0;Wx(P,h);c[N>>2]=c[P>>2];c[N+4>>2]=c[P+4>>2];c[N+8>>2]=c[P+8>>2];c[N+12>>2]=c[P+12>>2];_A(e,O);f=f+1|0}g=g+1|0;h=h+40|0}if(!(a[174212]|0)){if((f|0)!=(t|0)){c[R>>2]=f;c[R+4>>2]=t;_l(0,89017,R)|0}}else{R=c[13857]|0;c[Q>>2]=f;c[Q+4>>2]=t;OL(R,88984,Q)|0}xN(r);xN(s)}}l=S;return}function Lx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,i=0,j=0;i=l;l=l+48|0;e=i+32|0;f=i+16|0;g=i;if(+h[20900]!=0.0|+h[20901]!=0.0|(c[42343]|0)!=0){d=co(a)|0;while(1){if(!d)break;if(c[42343]|0)HB(d,0);b=d+16|0;j=(c[b>>2]|0)+16|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Gx(f,e);c[j>>2]=c[f>>2];c[j+4>>2]=c[f+4>>2];c[j+8>>2]=c[f+8>>2];c[j+12>>2]=c[f+12>>2];b=c[(c[b>>2]|0)+108>>2]|0;if(b|0){j=b+56|0;c[e>>2]=c[j>>2];c[e+4>>2]=c[j+4>>2];c[e+8>>2]=c[j+8>>2];c[e+12>>2]=c[j+12>>2];Gx(g,e);c[j>>2]=c[g>>2];c[j+4>>2]=c[g+4>>2];c[j+8>>2]=c[g+8>>2];c[j+12>>2]=c[g+12>>2]}a:do if((c[42193]|0)==1){b=Pm(a,d)|0;while(1){if(!b)break a;Nx(b);b=Rm(a,b)|0}}while(0);d=eo(a,d)|0}Ex(a,c[(c[a+16>>2]|0)+116>>2]&3)}l=i;return}function Mx(b,d){b=b|0;d=d|0;var e=0.0,f=0.0,g=0,i=0,j=0;i=b+16|0;j=c[i>>2]|0;g=a[j+275>>0]|0;b=j+32|0;do if(!(g&4)){e=+h[j+16>>3];if(!(g&2)){f=(e+ +h[b>>3])*.5;break}else{f=e+ +h[d>>3]*.5;break}}else f=+h[b>>3]-+h[d>>3]*.5;while(0);e=+h[d+8>>3]*.5;if(!(g&1))e=e+ +h[j+24>>3];else e=+h[j+40>>3]-e;j=c[j+12>>2]|0;h[j+56>>3]=f;h[j+64>>3]=e;a[(c[(c[i>>2]|0)+12>>2]|0)+81>>0]=1;return}function Nx(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;s=l;l=l+144|0;q=s+120|0;e=s+16|0;i=s+104|0;j=s+88|0;k=s+72|0;m=s+56|0;n=s+40|0;o=s+24|0;r=s;p=b+16|0;d=c[p>>2]|0;f=c[d+8>>2]|0;if(!f){if((a[174213]|0)==0?(a[d+112>>0]|0)!=6:0){q=Dn(c[((c[b>>2]&3|0)==3?b:b+48|0)+40>>2]|0)|0;r=Dn(c[((c[b>>2]&3|0)==2?b:b+-48|0)+40>>2]|0)|0;c[e>>2]=q;c[e+4>>2]=r;_l(1,88804,e)|0}}else{h=0;b=f;while(1){if((h|0)>=(c[b+4>>2]|0))break;g=c[b>>2]|0;b=c[g+(h*48|0)>>2]|0;e=c[g+(h*48|0)+4>>2]|0;f=c[g+(h*48|0)+8>>2]|0;g=c[g+(h*48|0)+12>>2]|0;d=0;while(1){if((d|0)>=(e|0))break;t=b+(d<<4)|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Gx(i,q);c[t>>2]=c[i>>2];c[t+4>>2]=c[i+4>>2];c[t+8>>2]=c[i+8>>2];c[t+12>>2]=c[i+12>>2];d=d+1|0}if(f|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+16|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Gx(j,q);c[t>>2]=c[j>>2];c[t+4>>2]=c[j+4>>2];c[t+8>>2]=c[j+8>>2];c[t+12>>2]=c[j+12>>2]}if(g|0){t=(c[c[(c[p>>2]|0)+8>>2]>>2]|0)+(h*48|0)+32|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Gx(k,q);c[t>>2]=c[k>>2];c[t+4>>2]=c[k+4>>2];c[t+8>>2]=c[k+8>>2];c[t+12>>2]=c[k+12>>2]}d=c[p>>2]|0;h=h+1|0;b=c[d+8>>2]|0}b=c[d+96>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Gx(m,q);c[d>>2]=c[m>>2];c[d+4>>2]=c[m+4>>2];c[d+8>>2]=c[m+8>>2];c[d+12>>2]=c[m+12>>2];d=c[p>>2]|0}b=c[d+108>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Gx(n,q);c[d>>2]=c[n>>2];c[d+4>>2]=c[n+4>>2];c[d+8>>2]=c[n+8>>2];c[d+12>>2]=c[n+12>>2];d=c[p>>2]|0}b=c[d+100>>2]|0;if(b){d=b+56|0;c[q>>2]=c[d>>2];c[q+4>>2]=c[d+4>>2];c[q+8>>2]=c[d+8>>2];c[q+12>>2]=c[d+12>>2];Gx(o,q);c[d>>2]=c[o>>2];c[d+4>>2]=c[o+4>>2];c[d+8>>2]=c[o+8>>2];c[d+12>>2]=c[o+12>>2];d=c[p>>2]|0}d=c[d+104>>2]|0;if(d|0){t=d+56|0;c[q>>2]=c[t>>2];c[q+4>>2]=c[t+4>>2];c[q+8>>2]=c[t+8>>2];c[q+12>>2]=c[t+12>>2];Gx(r,q);c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2]}}l=s;return}function Ox(b){b=b|0;var d=0,e=0,f=0;f=b+16|0;if((so(b)|0)!=(b|0)?(d=c[(c[f>>2]|0)+12>>2]|0,(d|0)!=0):0){e=1;b=(a[d+81>>0]|0)!=0&1}else{e=1;b=0}while(1){d=c[f>>2]|0;if((e|0)>(c[d+180>>2]|0))break;d=(Ox(c[(c[d+184>>2]|0)+(e<<2)>>2]|0)|0)+b|0;e=e+1|0;b=d}return b|0}function Px(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0,n=0;g=l;l=l+32|0;i=g;n=(a[174216]|0)==0;d=c[d+16>>2]|0;m=+h[d+40>>3]*72.0;j=+h[d+32>>3]*72.0;k=n?j:m;j=n?m:j;h[e+16>>3]=k;h[e+24>>3]=j;d=d+16|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];Xx(b,e,i);l=g;return}function Qx(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0.0,k=0.0,m=0.0,n=0;g=l;l=l+32|0;i=g;n=(a[174216]|0)==0;j=+h[d+24>>3];m=+h[d+32>>3];k=n?j:m;j=n?m:j;h[e+16>>3]=k;h[e+24>>3]=j;d=d+56|0;c[e>>2]=c[d>>2];c[e+4>>2]=c[d+4>>2];c[e+8>>2]=c[d+8>>2];c[e+12>>2]=c[d+12>>2];h[e>>3]=+h[e>>3]-k*.5;d=e+8|0;h[d>>3]=+h[d>>3]-j*.5;c[i>>2]=c[f>>2];c[i+4>>2]=c[f+4>>2];c[i+8>>2]=c[f+8>>2];c[i+12>>2]=c[f+12>>2];c[i+16>>2]=c[f+16>>2];c[i+20>>2]=c[f+20>>2];c[i+24>>2]=c[f+24>>2];c[i+28>>2]=c[f+28>>2];Xx(b,e,i);l=g;return}function Rx(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;if(f|0){f=d+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[d>>2]=c[g>>2];c[d+4>>2]=c[g+4>>2];c[d+8>>2]=c[g+8>>2];c[d+12>>2]=c[g+12>>2]}f=b+24|0;if(!(a[174216]|0)){c[e>>2]=c[f>>2];c[e+4>>2]=c[f+4>>2];c[e+8>>2]=c[f+8>>2];c[e+12>>2]=c[f+12>>2]}else{h[e>>3]=+h[b+32>>3];h[e+8>>3]=+h[f>>3]}c[e+32>>2]=b;a[e+36>>0]=0;c[d+32>>2]=e;return}function Sx(a,b){a=a|0;b=b|0;b=Xz(b)|0;do if(b){b=c[b>>2]|0;if(!(c[b+8>>2]|0)){b=c[b>>2]|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}else{b=b+16|0;c[a>>2]=c[b>>2];c[a+4>>2]=c[b+4>>2];c[a+8>>2]=c[b+8>>2];c[a+12>>2]=c[b+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Tx(a,b){a=a|0;b=b|0;var d=0;b=Xz(b)|0;do if(b){d=c[b>>2]|0;b=(c[b+4>>2]|0)+-1|0;if(!(c[d+(b*48|0)+12>>2]|0)){d=(c[d+(b*48|0)>>2]|0)+((c[d+(b*48|0)+4>>2]|0)+-1<<4)|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}else{d=d+(b*48|0)+32|0;c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];break}}else{c[a>>2]=0;c[a+4>>2]=0;c[a+8>>2]=0;c[a+12>>2]=0}while(0);return}function Ux(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;q=l;l=l+112|0;k=q+72|0;n=q+32|0;o=q;p=d+16|0;j=1;while(1){f=c[p>>2]|0;if((j|0)>(c[f+180>>2]|0))break;f=c[(c[f+184>>2]|0)+(j<<2)>>2]|0;g=k;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));Ux(n,f,k);g=e;h=n;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));j=j+1|0}if(((so(d)|0)!=(d|0)?(m=c[(c[p>>2]|0)+12>>2]|0,m|0):0)?a[m+81>>0]|0:0){p=e+32|0;n=c[p>>2]|0;c[k>>2]=c[e>>2];c[k+4>>2]=c[e+4>>2];c[k+8>>2]=c[e+8>>2];c[k+12>>2]=c[e+12>>2];c[k+16>>2]=c[e+16>>2];c[k+20>>2]=c[e+20>>2];c[k+24>>2]=c[e+24>>2];c[k+28>>2]=c[e+28>>2];Qx(o,m,n,k);c[e>>2]=c[o>>2];c[e+4>>2]=c[o+4>>2];c[e+8>>2]=c[o+8>>2];c[e+12>>2]=c[o+12>>2];c[e+16>>2]=c[o+16>>2];c[e+20>>2]=c[o+20>>2];c[e+24>>2]=c[o+24>>2];c[e+28>>2]=c[o+28>>2];c[p>>2]=(c[p>>2]|0)+40}g=b;h=e;i=g+40|0;do{c[g>>2]=c[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));l=q;return}function Vx(a,b,e,f,g){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;var i=0.0,j=0.0,k=0.0,m=0.0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+160|0;r=s+96|0;p=s+48|0;o=s;q=c[13857]|0;n=d[g+32>>0]|0;i=+h[g>>3];j=+h[g+8>>3];k=+h[g+16>>3];m=+h[g+24>>3];c[o>>2]=b;c[o+4>>2]=f;c[o+8>>2]=n;h[o+16>>3]=i;h[o+24>>3]=j;h[o+32>>3]=k;h[o+40>>3]=m;OL(q,89059,o)|0;a:do if((d[174212]|0)>=2){oL(89119,8,1,q)|0;o=0;while(1){if((o|0)>=(b|0))break;g=c[a+32>>2]|0;i=+h[a>>3];j=+h[a+8>>3];k=+h[a+16>>3];m=+h[a+24>>3];if(!g)n=174318;else n=c[c[g+32>>2]>>2]|0;c[p>>2]=o;h[p+8>>3]=i;h[p+16>>3]=j;h[p+24>>3]=k;h[p+32>>3]=m;c[p+40>>2]=g;c[p+44>>2]=n;OL(q,89128,p)|0;o=o+1|0;a=a+40|0}oL(89171,8,1,q)|0;g=0;while(1){if((g|0)>=(f|0))break a;b=d[e+36>>0]|0;i=+h[e+16>>3];j=+h[e+24>>3];k=+h[e>>3];m=+h[e+8>>3];p=c[c[e+32>>2]>>2]|0;c[r>>2]=g;c[r+4>>2]=e;c[r+8>>2]=b;h[r+16>>3]=i;h[r+24>>3]=j;h[r+32>>3]=k;h[r+40>>3]=m;c[r+48>>2]=p;OL(q,89180,r)|0;e=e+40|0;g=g+1|0}}while(0);l=s;return}function Wx(a,b){a=a|0;b=b|0;var c=0.0;c=+h[b+24>>3]+ +h[b+8>>3]*.5;h[a>>3]=+h[b+16>>3]+ +h[b>>3]*.5;h[a+8>>3]=c;return}function Xx(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,i=0.0,j=0.0;e=l;l=l+16|0;f=e;j=+h[b>>3];h[d>>3]=+h[(+h[d>>3]<j?d:b)>>3];g=d+8|0;i=+h[b+8>>3];h[g>>3]=+h[(+h[g>>3]<i?d:b)+8>>3];j=j+ +h[b+16>>3];h[f>>3]=j;i=i+ +h[b+24>>3];h[f+8>>3]=i;g=d+16|0;h[g>>3]=+h[(+h[g>>3]>j?g:f)>>3];b=d+24|0;h[b>>3]=+h[(+h[b>>3]>i?g:f)+8>>3];c[a>>2]=c[d>>2];c[a+4>>2]=c[d+4>>2];c[a+8>>2]=c[d+8>>2];c[a+12>>2]=c[d+12>>2];c[a+16>>2]=c[d+16>>2];c[a+20>>2]=c[d+20>>2];c[a+24>>2]=c[d+24>>2];c[a+28>>2]=c[d+28>>2];l=e;return}function Yx(a){a=a|0;Hx(a,1);return}function Zx(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;e=l;l=l+16|0;d=e;b=OA(Im(a,90520)|0)|0;if(b){b=_x(b)|0;if(b|0){f=c[b+40>>2]|0;d=c[b+44>>2]|0;g=a+16|0;a=c[g>>2]|0;h[a+32>>3]=+(f|0)/72.0;h[a+40>>3]=+(d|0)/72.0;a=sw(12)|0;c[(c[g>>2]|0)+12>>2]=a;c[a>>2]=c[b+12>>2];c[a+4>>2]=((f|0)/-2|0)-(c[b+32>>2]|0);c[a+8>>2]=((d|0)/-2|0)-(c[b+36>>2]|0)}}else{c[d>>2]=Dn(a)|0;_l(0,89228,d)|0}l=e;return}function _x(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0;p=l;l=l+1152|0;i=p+24|0;h=p+8|0;e=p;f=p+120|0;j=p+44|0;k=p+40|0;m=p+36|0;n=p+32|0;o=p+28|0;d=c[42344]|0;if(!d){d=Ql(19836,c[4345]|0)|0;c[42344]=d}d=Za[c[d>>2]&31](d,b,512)|0;do if(!d){g=uL(b,123648)|0;if(!g){c[e>>2]=b;_l(0,89277,e)|0;d=0;break}else{d=0;e=0}while(1){if(!(DL(f,1024,g)|0)){f=11;break}c[h>>2]=k;c[h+4>>2]=m;c[h+8>>2]=n;c[h+12>>2]=o;q=(FL(f,89305,h)|0)==4;e=q?1:e;if((a[f>>0]|0)!=37){q=(RL(f,89334)|0)==0;d=q?d:1}if((e|0)!=0&(d|0)!=0){f=12;break}}if((f|0)==11)if(!e){c[i>>2]=b;_l(0,89339,i)|0;d=0}else f=12;if((f|0)==12){q=tw(64)|0;k=c[k>>2]|0;c[q+32>>2]=k;m=c[m>>2]|0;c[q+40>>2]=(c[n>>2]|0)-k;c[q+36>>2]=(c[o>>2]|0)-m;c[q+8>>2]=b;o=c[42345]|0;c[42345]=o+1;c[q+12>>2]=o;yK(gN(g)|0,j)|0;o=c[j+36>>2]|0;n=tw(o+1|0)|0;c[q+52>>2]=n;NL(g,0,0)|0;iN(n,o,1,g)|0;a[n+o>>0]=0;o=c[42344]|0;Za[c[o>>2]&31](o,q,1)|0;a[q+16>>0]=d;d=q}AL(g)|0}while(0);l=p;return d|0}function $x(a,b,d){a=a|0;b=b|0;d=d|0;xN(c[b+52>>2]|0);return}function ay(a){a=a|0;xN(c[(c[a+16>>2]|0)+12>>2]|0);return}function by(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;m=n+8|0;k=n;j=(d|0)!=0;a:do if(j){h=0;f=0;b:while(1)while(1){if(h)break a;g=c[d+(f<<2)>>2]|0;if(!g){i=6;break a}f=f+1|0;if(!(a[g>>0]|0)){h=1;continue b}}}else i=6;while(0);c:do if((i|0)==6)while(1){f=c[e>>2]|0;if(!f)break c;jr(b,f)|0;jr(b,134917)|0;e=e+4|0;i=6}while(0);d:do if(j){h=0;while(1){f=c[d+(h<<2)>>2]|0;if(!f)break d;do if(a[f>>0]|0){e=OA(f)|0;if(!e){c[k>>2]=f;_l(0,89378,k)|0;break}g=uL(e,123648)|0;if(!g){c[m>>2]=e;_l(0,89406,m)|0;break}while(1){f=NA(g)|0;if(!f)break;jr(b,f)|0}jr(b,134917)|0;AL(g)|0}while(0);h=h+1|0}}while(0);l=n;return}function cy(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;d=c[d+52>>2]|0;a:while(1){e=a[d>>0]|0;b:do switch(e<<24>>24){case 0:break a;case 37:{if((a[d+1>>0]|0)==37){f=d+2|0;if((((bL(f,89434,3)|0)!=0?(bL(f,89438,5)|0)!=0:0)?(bL(f,89444,3)|0)!=0:0)?(bL(f,89448,7)|0)!=0:0)break b;else f=37;while(1){if((f&255)<14){e=d+1|0;if(!(7166>>>(f&255)&1))break}else e=d+1|0;d=e;f=a[e>>0]|0}switch(f<<24>>24){case 0:continue a;case 13:{if((a[e>>0]|0)==10){d=d+2|0;continue a}break}default:{}}d=e;continue a}else e=37;break}default:{}}while(0);c:while(1){switch(e<<24>>24){case 10:case 13:case 0:break c;default:{}}kr(b,e<<24>>24)|0;f=d+1|0;d=f;e=a[f>>0]|0}f=d+1|0;switch(e<<24>>24){case 13:{if((a[f>>0]|0)==10)d=d+2|0;else g=21;break}case 0:break;default:g=21}if((g|0)==21){g=0;d=f}kr(b,10)|0}return}function dy(b){b=b|0;var d=0,e=0,f=0,g=0;f=l;l=l+16|0;e=f;d=c[42344]|0;a:do if(d|0){d=Za[c[d>>2]&31](d,0,128)|0;while(1){if(!d)break a;if(!(a[d+16>>0]|0)){c[e>>2]=c[d+12>>2];pr(b,89456,e);jr(b,89474)|0;cy(b,d);jr(b,89492)|0;jr(b,89507)|0}g=c[42344]|0;d=Za[c[g>>2]&31](g,d,8)|0}}while(0);l=f;return}function ey(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+16|0;e=g;a:do switch(d|0){case 0:{f=b;break}case 1:{f=wB(b)|0;break}default:{switch(fy(b)|0){case 2:break;case 1:{f=wB(b)|0;break a}default:{f=b;break a}}if(!(c[42346]|0)){_l(0,89519,e)|0;c[42346]=1;f=b}else f=b}}while(0);if(!(c[42347]|0))cm(169388,0,0);d=c[42348]|0;if(d>>>0>=(c[42349]|0)>>>0){dm(169388,1)|0;d=c[42348]|0}c[42348]=d+1;a[d>>0]=40;e=f;b:while(1){switch(a[e>>0]|0){case 0:break b;case 92:case 41:case 40:{d=c[42348]|0;if(d>>>0>=(c[42349]|0)>>>0){dm(169388,1)|0;d=c[42348]|0}c[42348]=d+1;a[d>>0]=92;break}default:{}}d=c[42348]|0;if(d>>>0>=(c[42349]|0)>>>0){dm(169388,1)|0;d=c[42348]|0}h=a[e>>0]|0;c[42348]=d+1;a[d>>0]=h;e=e+1|0}d=c[42348]|0;if(d>>>0>=(c[42349]|0)>>>0){dm(169388,1)|0;d=c[42348]|0}c[42348]=d+1;a[d>>0]=41;if((f|0)!=(b|0))xN(f);d=c[42348]|0;if(d>>>0>=(c[42349]|0)>>>0){dm(169388,1)|0;d=c[42348]|0}a[d>>0]=0;h=c[42347]|0;c[42348]=h;l=g;return h|0}function fy(b){b=b|0;var c=0,d=0;c=0;a:while(1){while(1){d=a[b>>0]|0;if(!(d<<24>>24))break a;if((d&255)<127)b=b+1|0;else break}if((d&-4)<<24>>24==-64){c=1;b=b+2|0}else{c=2;break}}return c|0}function gy(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;n=l;l=l+96|0;i=n+80|0;j=n+72|0;m=n+64|0;g=n+32|0;k=n;h[g>>3]=+h[a>>3];h[g+8>>3]=+h[a+8>>3];h[g+16>>3]=+h[b>>3];h[g+24>>3]=+h[b+8>>3];do if((CI(d,g,j)|0)>=0){if(!f){b=d+4|0;a=c[b>>2]|0;f=c[42352]|0;if((a|0)>(c[42351]|0)){a=a<<5;if(!f)a=tw(a)|0;else a=vw(f,a)|0;c[42352]=a;g=c[b>>2]|0;c[42351]=g;f=a}else g=a;b=c[d>>2]|0;a=0;while(1){if((a|0)>=(g|0))break;o=f+(a<<5)|0;d=b+(a<<4)|0;c[o>>2]=c[d>>2];c[o+4>>2]=c[d+4>>2];c[o+8>>2]=c[d+8>>2];c[o+12>>2]=c[d+12>>2];o=f+(a<<5)+16|0;d=a+1|0;p=b+(((d|0)%(g|0)|0)<<4)|0;c[o>>2]=c[p>>2];c[o+4>>2]=c[p+4>>2];c[o+8>>2]=c[p+8>>2];c[o+12>>2]=c[p+12>>2];a=d}c[k>>2]=0;c[k+4>>2]=0;c[k+8>>2]=0;c[k+12>>2]=0;c[k+16>>2]=0;c[k+20>>2]=0;c[k+24>>2]=0;c[k+28>>2]=0;c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];if((gI(f,g,i,k,m)|0)<0){a=0;break}}else{c[i>>2]=c[j>>2];c[i+4>>2]=c[j+4>>2];XI(i,m)}a=m+4|0;if(!(hy(c[a>>2]|0)|0)){g=c[a>>2]|0;a=c[42353]|0;f=c[m>>2]|0;b=0;while(1){if((b|0)>=(g|0))break;p=a+(b<<4)|0;o=f+(b<<4)|0;c[p>>2]=c[o>>2];c[p+4>>2]=c[o+4>>2];c[p+8>>2]=c[o+8>>2];c[p+12>>2]=c[o+12>>2];b=b+1|0}c[e>>2]=g}else a=0}else a=0;while(0);l=n;return a|0}function hy(a){a=a|0;var b=0,d=0,e=0;e=l;l=l+16|0;d=e;b=c[42354]|0;do if((b|0)<(a|0)){a=a+300-((a|0)%300|0)+b|0;b=vw(c[42353]|0,a<<4)|0;c[42353]=b;if(!b){_l(1,89609,d)|0;a=1;break}else{c[42354]=a;a=0;break}}else a=0;while(0);l=e;return a|0}function iy(){var b=0,d=0,e=0;d=l;l=l+16|0;b=d;e=c[42355]|0;c[42355]=e+1;do if((e|0)<=0){e=tw(4800)|0;c[42353]=e;if(!e){_l(1,89632,b)|0;b=1;break}c[42354]=300;c[42356]=0;c[42357]=0;if(a[174212]|0){uA();b=0}else b=0}else b=0;while(0);l=d;return b|0}function jy(){var b=0,d=0,e=0,f=0.0,g=0,i=0;d=l;l=l+16|0;b=d;e=c[42355]|0;c[42355]=e+-1;if((e|0)<=1?(xN(c[42353]|0),a[174212]|0):0){e=c[13857]|0;i=c[42356]|0;g=c[42357]|0;f=+vA();c[b>>2]=i;c[b+4>>2]=g;h[b+8>>3]=f;OL(e,89670,b)|0}l=d;return}function ky(a,b){a=a|0;b=b|0;return ly(a,b,0)|0}function ly(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0.0;P=l;l=l+176|0;K=P+168|0;O=P+128|0;B=P+120|0;z=P+112|0;j=P+104|0;w=P+88|0;s=P+72|0;g=P+64|0;x=P+160|0;M=P+152|0;C=P+144|0;y=P+32|0;A=P;N=P+136|0;c[42356]=(c[42356]|0)+1;L=c[b+80>>2]|0;c[42357]=(c[42357]|0)+L;f=b+88|0;while(1){G=c[f>>2]|0;if(!G){H=4;break}f=c[G+16>>2]|0;if(!(a[f+112>>0]|0)){H=5;break}else f=f+116|0}do if((H|0)==4){_l(1,89713,g)|0;f=0}else if((H|0)==5){F=c[b+84>>2]|0;if(!(my(L,F,b)|0)){i=L<<3;if((i|0)>(c[42358]|0)){f=c[42359]|0;g=L<<7;if(!f)f=tw(g)|0;else f=vw(f,g)|0;c[42359]=f;c[42358]=i}a:do if((L|0)>1?+h[F+8>>3]>+h[F+40>>3]:0){f=0;while(1){if((f|0)==(L|0)){u=1;break a}D=F+(f<<5)+24|0;Q=+h[D>>3];E=F+(f<<5)+8|0;h[D>>3]=-+h[E>>3];h[E>>3]=-Q;f=f+1|0}}else u=0;while(0);v=c[G>>2]&3;D=G+48|0;f=c[((v|0)==3?G:D)+40>>2]|0;E=G+-48|0;if((f|0)==(c[((v|0)==2?G:E)+40>>2]|0)){c[j>>2]=Dn(f)|0;_l(1,89820,j)|0;f=0;break}t=L+-1|0;v=c[42359]|0;j=0;f=0;b:while(1){c:while(1){if((f|0)>=(L|0)){s=t;break b}i=F+(f<<5)+8|0;if((f|0)>0)k=+h[i>>3]>+h[F+(f+-1<<5)+8>>3]?-1:1;else k=0;r=f+1|0;if((f|0)<(t|0))m=+h[F+(r<<5)+8>>3]>+h[i>>3]?1:-1;else m=0;if((k|0)!=(m|0)){H=24;break}switch(k|0){case -1:{f=r;break}case 0:{H=28;break c}default:{H=29;break b}}}do if((H|0)==24){H=0;q=j+2|0;n=F+(f<<5)|0;o=F+(f<<5)+24|0;g=v+(j+1<<4)|0;p=v+(j<<4)+8|0;j=v+(j<<4)|0;if((k|0)==1|(m|0)==-1){h[j>>3]=+h[n>>3];h[p>>3]=+h[o>>3];h[g>>3]=+h[n>>3];f=q;break}else{f=F+(f<<5)+16|0;h[j>>3]=+h[f>>3];h[p>>3]=+h[i>>3];h[g>>3]=+h[f>>3];i=o;f=q;break}}else if((H|0)==28){H=0;q=F+(f<<5)|0;h[v+(j<<4)>>3]=+h[q>>3];h[v+(j<<4)+8>>3]=+h[F+(f<<5)+24>>3];g=v+(j+1<<4)|0;h[g>>3]=+h[q>>3];f=j+2|0}while(0);h[g+8>>3]=+h[i>>3];j=f;f=r}if((H|0)==29){c[s>>2]=k;c[s+4>>2]=k;c[s+8>>2]=480;_l(1,89755,s)|0;f=0;break}d:while(1){if((s|0)<=-1)break;g=F+(s<<5)+8|0;if((s|0)<(t|0))k=+h[g>>3]>+h[F+(s+1<<5)+8>>3]?-1:1;else k=0;if((s|0)>0)m=+h[F+(s+-1<<5)+8>>3]>+h[g>>3]?1:-1;else m=0;n=F+(s<<5)|0;f=j+1|0;i=j+2|0;o=F+(s<<5)+16|0;r=F+(s<<5)+24|0;e:do if((k|0)!=(m|0)){p=v+(f<<4)|0;q=v+(j<<4)|0;j=v+(j<<4)+8|0;if((k|0)==1|(m|0)==-1){h[q>>3]=+h[n>>3];h[j>>3]=+h[r>>3];h[p>>3]=+h[n>>3];break}else{h[q>>3]=+h[o>>3];h[j>>3]=+h[g>>3];h[p>>3]=+h[o>>3];g=r;break}}else switch(k|0){case 0:{h[v+(j<<4)>>3]=+h[o>>3];h[v+(j<<4)+8>>3]=+h[g>>3];h[v+(f<<4)>>3]=+h[o>>3];g=r;break e}case -1:{h[v+(j<<4)>>3]=+h[o>>3];h[v+(j<<4)+8>>3]=+h[g>>3];h[v+(f<<4)>>3]=+h[o>>3];h[v+(f<<4)+8>>3]=+h[r>>3];h[v+(i<<4)>>3]=+h[n>>3];f=j+3|0;h[v+(i<<4)+8>>3]=+h[r>>3];h[v+(f<<4)>>3]=+h[n>>3];i=j+4|0;break e}default:{H=42;break d}}while(0);h[v+(f<<4)+8>>3]=+h[g>>3];s=s+-1|0;j=i}if((H|0)==42){c[w>>2]=k;c[w+4>>2]=k;c[w+8>>2]=513;_l(1,89755,w)|0;f=0;break}f:do if(!u)f=0;else{f=0;while(1){if((f|0)>=(L|0)){f=0;break}u=F+(f<<5)+24|0;Q=+h[u>>3];w=F+(f<<5)+8|0;h[u>>3]=-+h[w>>3];h[w>>3]=-Q;f=f+1|0}while(1){if((f|0)>=(j|0)){f=0;break f}w=v+(f<<4)+8|0;h[w>>3]=-+h[w>>3];f=f+1|0}}while(0);while(1){if((f|0)>=(L|0))break;h[F+(f<<5)>>3]=2147483647.0;h[F+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}c[x>>2]=v;i=x+4|0;c[i>>2]=j;h[y>>3]=+h[b>>3];h[y+8>>3]=+h[b+8>>3];h[y+16>>3]=+h[b+40>>3];h[y+24>>3]=+h[b+48>>3];if((CI(x,y,M)|0)<0){_l(1,89859,z)|0;f=0;break}if(!e){g=c[i>>2]|0;f=c[42352]|0;if((g|0)>(c[42351]|0)){g=g<<5;if(!f)f=tw(g)|0;else f=vw(f,g)|0;c[42352]=f;g=c[i>>2]|0;c[42351]=g}j=c[42359]|0;i=0;while(1){if((i|0)>=(g|0))break;y=f+(i<<5)|0;z=j+(i<<4)|0;c[y>>2]=c[z>>2];c[y+4>>2]=c[z+4>>2];c[y+8>>2]=c[z+8>>2];c[y+12>>2]=c[z+12>>2];y=f+(i<<5)+16|0;z=i+1|0;x=j+(((z|0)%(g|0)|0)<<4)|0;c[y>>2]=c[x>>2];c[y+4>>2]=c[x+4>>2];c[y+8>>2]=c[x+8>>2];c[y+12>>2]=c[x+12>>2];i=z}if(!(a[b+29>>0]|0)){c[A>>2]=0;c[A+4>>2]=0;c[A+8>>2]=0;c[A+12>>2]=0}else{Q=+h[b+16>>3];h[A>>3]=+I(+Q);h[A+8>>3]=+J(+Q)}i=A+16|0;if(!(a[b+69>>0]|0)){c[i>>2]=0;c[i+4>>2]=0;c[i+8>>2]=0;c[i+12>>2]=0}else{Q=+h[b+56>>3];h[i>>3]=-+I(+Q);h[A+24>>3]=-+J(+Q)};c[K>>2]=c[M>>2];c[K+4>>2]=c[M+4>>2];if((gI(f,g,K,A,C)|0)<0){_l(1,89898,B)|0;f=0;break}}else{c[K>>2]=c[M>>2];c[K+4>>2]=c[M+4>>2];XI(K,C)}k=C+4|0;if(!(hy(c[k>>2]|0)|0)){f=0;while(1){if((f|0)>=(L|0))break;h[F+(f<<5)>>3]=2147483647.0;h[F+(f<<5)+16>>3]=-2147483648.0;f=f+1|0}i=c[k>>2]|0;j=c[42353]|0;g=c[C>>2]|0;f=0;while(1){if((f|0)>=(i|0)){i=1;f=10;g=0;break}C=j+(f<<4)|0;B=g+(f<<4)|0;c[C>>2]=c[B>>2];c[C+4>>2]=c[B+4>>2];c[C+8>>2]=c[B+8>>2];c[C+12>>2]=c[B+12>>2];f=f+1|0}while(1){if(!((g|0)<15&i<<24>>24!=0))break;ny(F,L,c[42353]|0,c[k>>2]|0,f);j=0;while(1){if((j|0)>=(L|0))break;if(+h[F+(j<<5)>>3]==2147483647.0){H=84;break}if(+h[F+(j<<5)+16>>3]==-2147483648.0){H=84;break}j=j+1|0}if((H|0)==84){H=0;C=f<<1;f=C;g=(C|0)>(2147483647/(L|0)|0|0)?15:g}i=(j|0)==(L|0)?0:i;g=g+1|0}if(i<<24>>24){D=Dn(c[((c[G>>2]&3|0)==3?G:D)+40>>2]|0)|0;H=Dn(c[((c[G>>2]&3|0)==2?G:E)+40>>2]|0)|0;c[O>>2]=D;c[O+4>>2]=H;_l(0,89936,O)|0;c[K>>2]=c[M>>2];c[K+4>>2]=c[M+4>>2];XI(K,N);ny(F,L,c[N>>2]|0,c[N+4>>2]|0,10);xN(c[N>>2]|0)}c[d>>2]=c[k>>2];f=c[42353]|0}else f=0}else f=0}while(0);l=P;return f|0}function my(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0.0,i=0.0,j=0,k=0,m=0,n=0,o=0.0,p=0.0,q=0.0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0.0,M=0,N=0,O=0,P=0,Q=0.0,R=0,S=0;S=l;l=l+32|0;J=S+16|0;I=S+8|0;m=S;f=0;k=0;while(1){if((k|0)>=(b|0))break;j=d+(k<<5)|0;t=+h[d+(k<<5)+8>>3]-+h[d+(k<<5)+24>>3];if(!((t>=0.0?t:-t)<.01)?(t=+h[j>>3]-+h[d+(k<<5)+16>>3],!((t>=0.0?t:-t)<.01)):0){if((f|0)!=(k|0)){P=d+(f<<5)|0;c[P>>2]=c[j>>2];c[P+4>>2]=c[j+4>>2];c[P+8>>2]=c[j+8>>2];c[P+12>>2]=c[j+12>>2];c[P+16>>2]=c[j+16>>2];c[P+20>>2]=c[j+20>>2];c[P+24>>2]=c[j+24>>2];c[P+28>>2]=c[j+28>>2]}f=f+1|0}k=k+1|0}K=d+16|0;do if(!(+h[d>>3]>+h[K>>3])?(M=d+8|0,N=d+24|0,!(+h[M>>3]>+h[N>>3])):0){O=f+-1|0;P=c[13857]|0;x=0;while(1){if((x|0)>=(O|0))break;E=x+1|0;F=d+(E<<5)|0;g=+h[F>>3];G=d+(E<<5)+16|0;i=+h[G>>3];if(g>i){R=16;break}B=d+(E<<5)+8|0;o=+h[B>>3];C=d+(E<<5)+24|0;p=+h[C>>3];if(o>p){R=16;break}H=d+(x<<5)+16|0;w=+h[H>>3]<g;f=w&1;D=d+(x<<5)|0;v=+h[D>>3]>i;b=v&1;A=d+(x<<5)+24|0;u=+h[A>>3]<o;k=u&1;z=d+(x<<5)+8|0;m=+h[z>>3]>p;j=m&1;y=b+f+k+j|0;n=(y|0)!=0;if(!((a[174212]|0)==0|n^1)){c[J>>2]=x;c[J+4>>2]=E;OL(P,90136,J)|0;oy(e)}a:do if(n){if(!w)if(!v)if(!u){if(m){m=0;n=f;f=C;j=z;R=24}}else{m=j;k=0;n=f;f=B;j=A;R=24}else{m=j;b=0;n=f;f=G;j=D;R=24}else{m=j;n=0;f=F;j=H;R=24}if((R|0)==24){R=0;x=~~+h[j>>3];h[j>>3]=+h[f>>3];h[f>>3]=+(x|0);j=m;f=n}n=y+-1|0;m=0;while(1){if((m|0)>=(n|0))break a;do if((f|0)!=1){if((b|0)==1){t=+(~~((+h[D>>3]+ +h[G>>3])*.5+.5)|0);h[G>>3]=t;h[D>>3]=t;b=0;break}if((k|0)==1){t=+(~~((+h[A>>3]+ +h[B>>3])*.5+.5)|0);h[B>>3]=t;h[A>>3]=t;k=0;break}if((j|0)==1){t=+(~~((+h[z>>3]+ +h[C>>3])*.5+.5)|0);h[C>>3]=t;h[z>>3]=t;j=0}}else{t=+(~~((+h[H>>3]+ +h[F>>3])*.5+.5)|0);h[F>>3]=t;h[H>>3]=t;f=0}while(0);m=m+1|0}}while(0);q=+h[D>>3];r=+h[H>>3];s=+h[F>>3];t=+h[G>>3];j=py(~~q,~~r,~~s,~~t)|0;p=+h[z>>3];o=+h[A>>3];i=+h[B>>3];g=+h[C>>3];f=py(~~p,~~o,~~i,~~g)|0;if(!((j|0)!=0&(f|0)!=0)){x=E;continue}if((j|0)<(f|0)){C=r-q>t-s;x=r<t;h[(C?(x?H:D):x?F:G)>>3]=C?(x?s:t):x?r:q;x=E;continue}else{C=o-p>g-i;x=o<g;h[(C?(x?H:D):x?F:G)+8>>3]=C?(x?i:g):x?o:p;x=E;continue}}if((R|0)==16){c[I>>2]=E;_l(1,90090,I)|0;oy(e);f=1;break}i=+h[e>>3];g=+h[d>>3];f=e+8|0;if(!(((!(i<g)?!(i>+h[K>>3]):0)?(L=+h[f>>3],!(L<+h[M>>3])):0)?!(L>+h[N>>3]):0)){if(a[174212]|0){oL(90179,42,1,P)|0;oy(e);i=+h[e>>3];g=+h[d>>3]}if(i<g){h[e>>3]=g;i=g}g=+h[K>>3];if(i>g)h[e>>3]=g;i=+h[f>>3];g=+h[M>>3];if(i<g){h[f>>3]=g;i=g}g=+h[N>>3];if(i>g)h[f>>3]=g}k=e+40|0;i=+h[k>>3];f=d+(O<<5)|0;g=+h[f>>3];n=e+48|0;b=d+(O<<5)+8|0;m=d+(O<<5)+24|0;j=d+(O<<5)+16|0;if(((!(i<g)?!(i>+h[j>>3]):0)?(Q=+h[n>>3],!(Q<+h[b>>3])):0)?!(Q>+h[m>>3]):0){f=0;break}if(a[174212]|0){oL(90222,39,1,P)|0;oy(e);i=+h[k>>3];g=+h[f>>3]}if(i<g){h[k>>3]=g;i=g}g=+h[j>>3];if(i>g)h[k>>3]=g;i=+h[n>>3];g=+h[b>>3];if(i<g){h[n>>3]=g;i=g}g=+h[m>>3];if(i>g){h[n>>3]=g;f=0}else f=0}else R=12;while(0);if((R|0)==12){_l(1,90045,m)|0;oy(e);f=1}l=S;return f|0}function ny(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,i=0,j=0,k=0,l=0,m=0.0,n=0.0,o=0,p=0,q=0,r=0,s=0,t=0.0,u=0,v=0.0,w=0.0,x=0.0,y=0.0,z=0.0;s=S(e,b)|0;t=+(s|0);e=0;a:while(1){u=e+3|0;if((u|0)>=(d|0))break;o=c+(e<<4)|0;p=c+(e<<4)+8|0;r=e+1|0;q=c+(r<<4)|0;r=c+(r<<4)+8|0;j=e+2|0;i=c+(j<<4)|0;j=c+(j<<4)+8|0;k=c+(u<<4)|0;l=c+(u<<4)+8|0;g=0;while(1){if((g|0)>(s|0)){e=u;continue a}x=+(g|0)/t;m=+h[o>>3];n=+h[p>>3];y=+h[q>>3];v=+h[r>>3];z=+h[i>>3];w=+h[j>>3];m=m+x*(y-m);n=n+x*(v-n);y=y+x*(z-y);v=v+x*(w-v);m=m+x*(y-m);n=n+x*(v-n);m=m+x*(y+x*(z+x*(+h[k>>3]-z)-y)-m);n=n+x*(v+x*(w+x*(+h[l>>3]-w)-v)-n);f=0;while(1){if((f|0)>=(b|0))break;if(n<=+h[a+(f<<5)+24>>3]+.0001?n>=+h[a+(f<<5)+8>>3]+-.0001:0){e=a+(f<<5)|0;if(+h[e>>3]>m)h[e>>3]=m;e=a+(f<<5)+16|0;if(+h[e>>3]<m)h[e>>3]=m}f=f+1|0}g=g+1|0}}return}function oy(b){b=b|0;var d=0,e=0,f=0,g=0,i=0,j=0,k=0,m=0,n=0.0,o=0.0,p=0.0,q=0.0,r=0;m=l;l=l+112|0;j=m+80|0;k=m+48|0;i=m+8|0;g=m;e=c[13857]|0;f=b+80|0;c[g>>2]=c[f>>2];OL(e,90262,g)|0;g=b+84|0;d=0;while(1){if((d|0)>=(c[f>>2]|0))break;r=c[g>>2]|0;q=+h[r+(d<<5)>>3];p=+h[r+(d<<5)+8>>3];o=+h[r+(d<<5)+16>>3];n=+h[r+(d<<5)+24>>3];c[i>>2]=d;h[i+8>>3]=q;h[i+16>>3]=p;h[i+24>>3]=o;h[i+32>>3]=n;OL(e,90273,i)|0;d=d+1|0}q=+h[b+8>>3];p=+h[b+16>>3];r=a[b+29>>0]|0?90304:90316;h[k>>3]=+h[b>>3];h[k+8>>3]=q;h[k+16>>3]=p;c[k+24>>2]=r;OL(e,90332,k)|0;p=+h[b+48>>3];q=+h[b+56>>3];r=a[b+69>>0]|0?90304:90316;h[j>>3]=+h[b+40>>3];h[j+8>>3]=p;h[j+16>>3]=q;c[j+24>>2]=r;OL(e,90383,j)|0;l=m;return}function py(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;do if((b|0)>(c|0)&(d|0)>(a|0)){if(!((c|0)>(a|0)|(d|0)<(a|0))){a=d-a|0;break}if((b|0)<(c|0)|(b|0)>(d|0)){b=b-a|0;a=d-c|0;a=(b|0)<(a|0)?b:a;break}else{a=b-c|0;break}}else a=0;while(0);return a|0}function qy(a,b){a=a|0;b=b|0;return ly(a,b,1)|0}function ry(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var i=0,j=0,k=0,m=0.0,n=0.0,o=0.0,p=0.0,q=0.0,r=0,s=0.0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,H=0,I=0,J=0,K=0,L=0.0,M=0.0,N=0.0,O=0,P=0;K=l;l=l+304|0;A=K+272|0;z=K+208|0;F=K+96|0;H=K+32|0;I=K+16|0;J=K;r=K+192|0;y=K+176|0;i=K+160|0;B=K+296|0;C=K+288|0;j=c[d>>2]|0;w=c[j>>2]&3;k=j+-48|0;D=c[((w|0)==2?j:k)+40>>2]|0;t=F+16|0;w=(c[(c[((w|0)==3?j:j+48|0)+40>>2]|0)+16>>2]|0)+16|0;x=j+16|0;E=(c[x>>2]|0)+16|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[E>>2];c[A+4>>2]=c[E+4>>2];c[A+8>>2]=c[E+8>>2];c[A+12>>2]=c[E+12>>2];sy(r,z,A);c[F>>2]=c[r>>2];c[F+4>>2]=c[r+4>>2];c[F+8>>2]=c[r+8>>2];c[F+12>>2]=c[r+12>>2];c[t>>2]=c[r>>2];c[t+4>>2]=c[r+4>>2];c[t+8>>2]=c[r+8>>2];c[t+12>>2]=c[r+12>>2];c[I>>2]=c[r>>2];c[I+4>>2]=c[r+4>>2];c[I+8>>2]=c[r+8>>2];c[I+12>>2]=c[r+12>>2];r=F+32|0;E=F+48|0;w=(c[D+16>>2]|0)+16|0;x=(c[x>>2]|0)+56|0;c[z>>2]=c[w>>2];c[z+4>>2]=c[w+4>>2];c[z+8>>2]=c[w+8>>2];c[z+12>>2]=c[w+12>>2];c[A>>2]=c[x>>2];c[A+4>>2]=c[x+4>>2];c[A+8>>2]=c[x+8>>2];c[A+12>>2]=c[x+12>>2];sy(y,z,A);c[E>>2]=c[y>>2];c[E+4>>2]=c[y+4>>2];c[E+8>>2]=c[y+8>>2];c[E+12>>2]=c[y+12>>2];c[r>>2]=c[y>>2];c[r+4>>2]=c[y+4>>2];c[r+8>>2]=c[y+8>>2];c[r+12>>2]=c[y+12>>2];c[J>>2]=c[y>>2];c[J+4>>2]=c[y+4>>2];c[J+8>>2]=c[y+8>>2];c[J+12>>2]=c[y+12>>2];a:do if((e|0)!=1&(a[174213]|0)==0){m=+h[F>>3];n=+h[E>>3];L=m-n;o=+h[F+8>>3];p=+h[F+56>>3];s=o-p;q=s*s;if(L*L+q<1.0e-06){c[t>>2]=c[F>>2];c[t+4>>2]=c[F+4>>2];c[t+8>>2]=c[F+8>>2];c[t+12>>2]=c[F+12>>2];c[r>>2]=c[E>>2];c[r+4>>2]=c[E+4>>2];c[r+8>>2]=c[E+8>>2];c[r+12>>2]=c[E+12>>2];y=F+24|0;x=F+40|0;n=0.0;m=0.0}else{M=n-m;L=+G(+(M*M+q));w=c[(c[(c[b+60>>2]|0)+16>>2]|0)+248>>2]|0;N=+((S(w,e+-1|0)|0)/2|0|0);q=s*N/L;h[t>>3]=m+q;m=M*N/L;y=F+24|0;h[y>>3]=o+m;h[r>>3]=n+q;x=F+40|0;h[x>>3]=p+m;m=+(0-w|0);n=M*m/L;m=s*m/L}f=(f|0)==6;u=C+4|0;v=B+4|0;j=0;while(1){if((j|0)>=(e|0))break a;w=c[d+(j<<2)>>2]|0;k=w+-48|0;b:do if((c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0)==(D|0)){c[I>>2]=c[F>>2];c[I+4>>2]=c[F+4>>2];c[I+8>>2]=c[F+8>>2];c[I+12>>2]=c[F+12>>2];c[J>>2]=c[E>>2];c[J+4>>2]=c[E+4>>2];c[J+8>>2]=c[E+8>>2];c[J+12>>2]=c[E+12>>2];i=0;while(1){if((i|0)==4)break b;O=H+(i<<4)|0;P=F+(i<<4)|0;c[O>>2]=c[P>>2];c[O+4>>2]=c[P+4>>2];c[O+8>>2]=c[P+8>>2];c[O+12>>2]=c[P+12>>2];i=i+1|0}}else{c[I>>2]=c[E>>2];c[I+4>>2]=c[E+4>>2];c[I+8>>2]=c[E+8>>2];c[I+12>>2]=c[E+12>>2];c[J>>2]=c[F>>2];c[J+4>>2]=c[F+4>>2];c[J+8>>2]=c[F+8>>2];c[J+12>>2]=c[F+12>>2];i=0;while(1){if((i|0)==4)break b;P=H+(3-i<<4)|0;O=F+(i<<4)|0;c[P>>2]=c[O>>2];c[P+4>>2]=c[O+4>>2];c[P+8>>2]=c[O+8>>2];c[P+12>>2]=c[O+12>>2];i=i+1|0}}while(0);if(f){c[u>>2]=4;c[C>>2]=z;i=0;while(1){if((i|0)==4)break;P=z+(i<<4)|0;O=H+(i<<4)|0;c[P>>2]=c[O>>2];c[P+4>>2]=c[O+4>>2];c[P+8>>2]=c[O+8>>2];c[P+12>>2]=c[O+12>>2];i=i+1|0}c[A>>2]=c[C>>2];c[A+4>>2]=c[C+4>>2];XI(A,B);Gz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,c[B>>2]|0,c[v>>2]|0,g)}else Gz(w,c[((c[w>>2]&3|0)==2?w:k)+40>>2]|0,H,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];$z(b,w,z,A);h[t>>3]=m+ +h[t>>3];h[y>>3]=n+ +h[y>>3];h[r>>3]=m+ +h[r>>3];h[x>>3]=n+ +h[x>>3];j=j+1|0}}else{if((f|0)==4){ty(i,b);c[A>>2]=c[i>>2];c[A+4>>2]=c[i+4>>2];c[A+8>>2]=c[i+8>>2];c[A+12>>2]=c[i+12>>2];uy(F,A)}Gz(j,c[((c[j>>2]&3|0)==2?j:k)+40>>2]|0,F,4,g);c[z>>2]=c[I>>2];c[z+4>>2]=c[I+4>>2];c[z+8>>2]=c[I+8>>2];c[z+12>>2]=c[I+12>>2];c[A>>2]=c[J>>2];c[A+4>>2]=c[J+4>>2];c[A+8>>2]=c[J+8>>2];c[A+12>>2]=c[J+12>>2];$z(b,j,z,A)}while(0);l=K;return}function sy(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0;d=+h[b+8>>3]+ +h[c+8>>3];h[a>>3]=+h[b>>3]+ +h[c>>3];h[a+8>>3]=d;return}function ty(a,b){a=a|0;b=b|0;b=c[b+16>>2]|0;h[20902]=(+h[b+16>>3]+ +h[b+32>>3])*.5;h[20903]=(+h[b+24>>3]+ +h[b+40>>3])*.5;c[a>>2]=c[41804];c[a+4>>2]=c[41805];c[a+8>>2]=c[41806];c[a+12>>2]=c[41807];return}function uy(a,b){a=a|0;b=b|0;var c=0.0,d=0.0,e=0.0,f=0.0,g=0.0,i=0.0;g=+h[a>>3];d=+h[a+48>>3];i=(g+d)*.5;f=+h[a+8>>3];c=+h[a+56>>3];e=(f+c)*.5;g=d-g;f=c-f;f=+G(+(g*g+f*f))/5.0;g=+h[b>>3]-i;c=+h[b+8>>3]-e;d=+G(+(g*g+c*c));if(!(d==0.0)){g=i-f*(g/d);i=e-f*(c/d);h[a+32>>3]=g;h[a+16>>3]=g;h[a+40>>3]=i;h[a+24>>3]=i}return}\nfunction KK(a,b,e,f,g,h){a=a|0;b=b|0;e=e|0;f=f|0;g=g|0;h=h|0;var i=0.0,j=0.0,k=0,m=0,n=0,o=0,p=0,q=0,r=0.0,s=0.0,t=0.0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,G=0,H=0,I=0,J=0,K=0.0;J=l;l=l+512|0;G=J;H=f+e|0;I=0-H|0;B=a+4|0;C=a+100|0;k=0;a:while(1){switch(b|0){case 46:{z=6;break a}case 48:break;default:{v=0;p=k;q=0;o=0;break a}}b=c[B>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[B>>2]=b+1;b=d[b>>0]|0;k=1;continue}else{b=mJ(a)|0;k=1;continue}}if((z|0)==6){b=c[B>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[B>>2]=b+1;b=d[b>>0]|0}else b=mJ(a)|0;if((b|0)==48){k=0;b=0;while(1){k=IN(k|0,b|0,-1,-1)|0;o=D;b=c[B>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[B>>2]=b+1;b=d[b>>0]|0}else b=mJ(a)|0;if((b|0)==48)b=o;else{v=1;p=1;q=k;break}}}else{v=1;p=k;q=0;o=0}}c[G>>2]=0;n=b+-48|0;m=(b|0)==46;b:do if(m|n>>>0<10){A=G+496|0;w=0;k=0;u=0;x=v;y=p;z=n;p=0;n=0;c:while(1){do if(m)if(!x){x=1;q=p;o=n}else break c;else{p=IN(p|0,n|0,1,0)|0;n=D;v=(b|0)!=48;if((k|0)>=125){if(!v)break;c[A>>2]=c[A>>2]|1;break}m=G+(k<<2)|0;if(!w)b=z;else b=b+-48+((c[m>>2]|0)*10|0)|0;c[m>>2]=b;w=w+1|0;y=(w|0)==9;w=y?0:w;k=(y&1)+k|0;u=v?p:u;y=1}while(0);b=c[B>>2]|0;if(b>>>0<(c[C>>2]|0)>>>0){c[B>>2]=b+1;b=d[b>>0]|0}else b=mJ(a)|0;z=b+-48|0;m=(b|0)==46;if(!(m|z>>>0<10)){v=x;m=y;z=29;break b}}b=w;m=(y|0)!=0;z=37}else{w=0;k=0;u=0;m=p;p=0;n=0;z=29}while(0);do if((z|0)==29){A=(v|0)==0;q=A?p:q;o=A?n:o;m=(m|0)!=0;if(!(m&(b|32|0)==101))if((b|0)>-1){b=w;z=37;break}else{b=w;z=39;break}m=LK(a,h)|0;b=D;if((m|0)==0&(b|0)==-2147483648){if(!h){kJ(a,0);i=0.0;break}if(!(c[C>>2]|0)){m=0;b=0}else{c[B>>2]=(c[B>>2]|0)+-1;m=0;b=0}}y=IN(m|0,b|0,q|0,o|0)|0;b=w;o=D;z=41}while(0);if((z|0)==37)if(c[C>>2]|0){c[B>>2]=(c[B>>2]|0)+-1;if(m){y=q;z=41}else z=40}else z=39;if((z|0)==39)if(m){y=q;z=41}else z=40;do if((z|0)==40){c[(bJ()|0)>>2]=22;kJ(a,0);i=0.0}else if((z|0)==41){m=c[G>>2]|0;if(!m){i=+(g|0)*0.0;break}if(((n|0)<0|(n|0)==0&p>>>0<10)&((y|0)==(p|0)&(o|0)==(n|0))?(e|0)>30|(m>>>e|0)==0:0){i=+(g|0)*+(m>>>0);break}a=(f|0)/-2|0;C=((a|0)<0)<<31>>31;if((o|0)>(C|0)|(o|0)==(C|0)&y>>>0>a>>>0){c[(bJ()|0)>>2]=34;i=+(g|0)*1797693134862315708145274.0e284*1797693134862315708145274.0e284;break}a=f+-106|0;C=((a|0)<0)<<31>>31;if((o|0)<(C|0)|(o|0)==(C|0)&y>>>0<a>>>0){c[(bJ()|0)>>2]=34;i=+(g|0)*2.2250738585072014e-308*2.2250738585072014e-308;break}if(b){if((b|0)<9){n=G+(k<<2)|0;m=c[n>>2]|0;do{m=m*10|0;b=b+1|0}while((b|0)!=9);c[n>>2]=m}k=k+1|0}if((u|0)<9?(u|0)<=(y|0)&(y|0)<18:0){b=c[G>>2]|0;if((y|0)==9){i=+(g|0)*+(b>>>0);break}if((y|0)<9){i=+(g|0)*+(b>>>0)/+(c[56272+(8-y<<2)>>2]|0);break}a=e+27+(S(y,-3)|0)|0;if((a|0)>30|(b>>>a|0)==0){i=+(g|0)*+(b>>>0)*+(c[56272+(y+-10<<2)>>2]|0);break}}b=(y|0)%9|0;if(!b){b=0;n=0}else{u=(y|0)>-1?b:b+9|0;p=c[56272+(8-u<<2)>>2]|0;if(k){q=1e9/(p|0)|0;n=0;o=0;m=y;b=0;do{B=G+(b<<2)|0;C=c[B>>2]|0;a=((C>>>0)/(p>>>0)|0)+n|0;c[B>>2]=a;n=S(q,(C>>>0)%(p>>>0)|0)|0;a=(b|0)==(o|0)&(a|0)==0;m=a?m+-9|0:m;o=a?o+1&127:o;b=b+1|0}while((b|0)!=(k|0));if(!n)n=o;else{c[G+(k<<2)>>2]=n;n=o;k=k+1|0}}else{n=0;k=0;m=y}b=0;y=9-u+m|0}d:while(1){u=(y|0)<18;v=(y|0)==18;w=G+(n<<2)|0;while(1){if(!u){if(!v){m=y;break d}if((c[w>>2]|0)>>>0>=9007199){m=18;break d}}m=0;x=k;k=k+127|0;while(1){o=k&127;p=G+(o<<2)|0;k=HN(c[p>>2]|0,0,29)|0;k=IN(k|0,D|0,m|0,0)|0;m=D;if(m>>>0>0|(m|0)==0&k>>>0>1e9){q=PN(k|0,m|0,1e9,0)|0;k=UN(k|0,m|0,1e9,0)|0}else q=0;c[p>>2]=k;a=(o|0)==(n|0);x=(k|0)==0&(((o|0)!=(x+127&127|0)|a)^1)?o:x;if(a)break;else{m=q;k=o+-1|0}}b=b+-29|0;if(q|0)break;else k=x}n=n+127&127;k=x+127&127;m=G+((x+126&127)<<2)|0;if((n|0)==(x|0))c[m>>2]=c[m>>2]|c[G+(k<<2)>>2];else k=x;c[G+(n<<2)>>2]=q;y=y+9|0}e:while(1){w=k+1&127;x=G+((k+127&127)<<2)|0;while(1){q=(m|0)==18;v=(m|0)>27?9:1;y=n;while(1){n=0;while(1){o=n+y&127;if((o|0)==(k|0)){E=2;z=88;break}o=c[G+(o<<2)>>2]|0;p=c[56304+(n<<2)>>2]|0;if(o>>>0<p>>>0){E=2;z=88;break}if(o>>>0>p>>>0)break;n=n+1|0;if((n|0)>=2){E=n;z=88;break}}if((z|0)==88?(z=0,q&(E|0)==2):0){i=0.0;o=0;break e}b=v+b|0;if((y|0)==(k|0))y=k;else break}q=(1<<v)+-1|0;u=1e9>>>v;p=0;n=y;o=y;do{B=G+(o<<2)|0;C=c[B>>2]|0;a=(C>>>v)+p|0;c[B>>2]=a;p=S(C&q,u)|0;a=(o|0)==(n|0)&(a|0)==0;m=a?m+-9|0:m;n=a?n+1&127:n;o=o+1&127}while((o|0)!=(k|0));if(!p)continue;if((w|0)!=(n|0))break;c[x>>2]=c[x>>2]|1}c[G+(k<<2)>>2]=p;k=w}do{n=o+y&127;m=k+1&127;if((n|0)==(k|0)){c[G+(m+-1<<2)>>2]=0;k=m}i=i*1.0e9+ +((c[G+(n<<2)>>2]|0)>>>0);o=o+1|0}while((o|0)!=2);t=+(g|0);j=t*i;o=b+53|0;p=o-f|0;q=(p|0)<(e|0);n=q?((p|0)>0?p:0):e;if((n|0)<53){K=+NK(+MK(1.0,105-n|0),j);r=+OK(j,+MK(1.0,53-n|0));s=K;i=r;r=K+(j-r)}else{s=0.0;i=0.0;r=j}m=y+2&127;if((m|0)!=(k|0)){m=c[G+(m<<2)>>2]|0;do if(m>>>0>=5e8){if((m|0)!=5e8){i=t*.75+i;break}if((y+3&127|0)==(k|0)){i=t*.5+i;break}else{i=t*.75+i;break}}else{if((m|0)==0?(y+3&127|0)==(k|0):0)break;i=t*.25+i}while(0);if((53-n|0)>1?!(+OK(i,1.0)!=0.0):0)j=i+1.0;else j=i}else j=i;i=r+j-s;do if((o&2147483647|0)>(-2-H|0)){H=!(+F(+i)>=9007199254740992.0);b=((H^1)&1)+b|0;i=H?i:i*.5;if((b+50|0)<=(I|0)?!(j!=0.0&(q&((n|0)!=(p|0)|H))):0)break;c[(bJ()|0)>>2]=34}while(0);i=+PK(i,b)}while(0);l=J;return +i}function LK(a,b){a=a|0;b=b|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;e=c[k>>2]|0;j=a+100|0;if(e>>>0<(c[j>>2]|0)>>>0){c[k>>2]=e+1;e=d[e>>0]|0}else e=mJ(a)|0;switch(e|0){case 43:case 45:{f=(e|0)==45&1;e=c[k>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[k>>2]=e+1;e=d[e>>0]|0}else e=mJ(a)|0;if((b|0)!=0&(e+-48|0)>>>0>9?(c[j>>2]|0)!=0:0)c[k>>2]=(c[k>>2]|0)+-1;break}default:f=0}if((e+-48|0)>>>0>9)if(!(c[j>>2]|0)){f=-2147483648;e=0}else{c[k>>2]=(c[k>>2]|0)+-1;f=-2147483648;e=0}else{g=0;do{g=e+-48+(g*10|0)|0;e=c[k>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[k>>2]=e+1;e=d[e>>0]|0}else e=mJ(a)|0}while((e+-48|0)>>>0<10&(g|0)<214748364);b=((g|0)<0)<<31>>31;if((e+-48|0)>>>0<10){do{b=RN(g|0,b|0,10,0)|0;g=D;e=IN(e|0,((e|0)<0)<<31>>31|0,-48,-1)|0;g=IN(e|0,D|0,b|0,g|0)|0;b=D;e=c[k>>2]|0;if(e>>>0<(c[j>>2]|0)>>>0){c[k>>2]=e+1;e=d[e>>0]|0}else e=mJ(a)|0}while((e+-48|0)>>>0<10&((b|0)<21474836|(b|0)==21474836&g>>>0<2061584302));h=e;i=g}else{h=e;i=g}e=c[j>>2]|0;if((h+-48|0)>>>0<10)do{g=c[k>>2]|0;if(g>>>0<e>>>0){c[k>>2]=g+1;g=d[g>>0]|0}else{g=mJ(a)|0;e=c[j>>2]|0}}while((g+-48|0)>>>0<10);if(e|0)c[k>>2]=(c[k>>2]|0)+-1;k=(f|0)!=0;e=FN(0,0,i|0,b|0)|0;f=k?D:b;e=k?e:i}D=f;return e|0}function MK(a,b){a=+a;b=b|0;var d=0,e=0;if((b|0)<=1023){if((b|0)<-1022){a=a*2.2250738585072014e-308;d=b+1022|0;e=(d|0)<-1022;b=b+2044|0;a=e?a*2.2250738585072014e-308:a;b=e?((b|0)>-1022?b:-1022):d}}else{a=a*8988465674311579538646525.0e283;e=b+-1023|0;d=(e|0)>1023;b=b+-2046|0;a=d?a*8988465674311579538646525.0e283:a;b=d?((b|0)<1023?b:1023):e}d=HN(b+1023|0,0,52)|0;e=D;c[j>>2]=d;c[j+4>>2]=e;return +(a*+h[j>>3])}function NK(a,b){a=+a;b=+b;return +(+uJ(a,b))}function OK(a,b){a=+a;b=+b;return +(+QK(a,b))}function PK(a,b){a=+a;b=b|0;return +(+MK(a,b))}function QK(a,b){a=+a;b=+b;var d=0,e=0,f=0,g=0,i=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;h[j>>3]=a;i=c[j>>2]|0;l=c[j+4>>2]|0;h[j>>3]=b;n=c[j>>2]|0;o=c[j+4>>2]|0;e=KN(i|0,l|0,52)|0;e=e&2047;m=KN(n|0,o|0,52)|0;m=m&2047;p=l&-2147483648;g=HN(n|0,o|0,1)|0;k=D;a:do if(!((g|0)==0&(k|0)==0)?(f=RK(b)|0,d=D&2147483647,!((e|0)==2047|(d>>>0>2146435072|(d|0)==2146435072&f>>>0>0))):0){d=HN(i|0,l|0,1)|0;f=D;if(!(f>>>0>k>>>0|(f|0)==(k|0)&d>>>0>g>>>0))return +((d|0)==(g|0)&(f|0)==(k|0)?a*0.0:a);if(!e){d=HN(i|0,l|0,12)|0;f=D;if((f|0)>-1|(f|0)==-1&d>>>0>4294967295){e=0;do{e=e+-1|0;d=HN(d|0,f|0,1)|0;f=D}while((f|0)>-1|(f|0)==-1&d>>>0>4294967295)}else e=0;i=HN(i|0,l|0,1-e|0)|0;g=D}else g=l&1048575|1048576;if(!m){f=HN(n|0,o|0,12)|0;k=D;if((k|0)>-1|(k|0)==-1&f>>>0>4294967295){d=0;do{d=d+-1|0;f=HN(f|0,k|0,1)|0;k=D}while((k|0)>-1|(k|0)==-1&f>>>0>4294967295)}else d=0;n=HN(n|0,o|0,1-d|0)|0;m=d;l=D}else l=o&1048575|1048576;f=FN(i|0,g|0,n|0,l|0)|0;d=D;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;b:do if((e|0)>(m|0)){while(1){if(k){if((f|0)==0&(d|0)==0)break}else{f=i;d=g}i=HN(f|0,d|0,1)|0;g=D;e=e+-1|0;f=FN(i|0,g|0,n|0,l|0)|0;d=D;k=(d|0)>-1|(d|0)==-1&f>>>0>4294967295;if((e|0)<=(m|0))break b}b=a*0.0;break a}while(0);if(k){if((f|0)==0&(d|0)==0){b=a*0.0;break}}else{d=g;f=i}if(d>>>0<1048576|(d|0)==1048576&f>>>0<0)do{f=HN(f|0,d|0,1)|0;d=D;e=e+-1|0}while(d>>>0<1048576|(d|0)==1048576&f>>>0<0);if((e|0)>0){o=IN(f|0,d|0,0,-1048576)|0;d=D;e=HN(e|0,0,52)|0;d=d|D;e=o|e}else{e=KN(f|0,d|0,1-e|0)|0;d=D}c[j>>2]=e;c[j+4>>2]=d|p;b=+h[j>>3]}else q=3;while(0);if((q|0)==3){b=a*b;b=b/b}return +b}function RK(a){a=+a;var b=0;h[j>>3]=a;b=c[j>>2]|0;D=c[j+4>>2]|0;return b|0}function SK(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;f=a[b>>0]|0;e=f&255;a:do if(f<<24>>24){g=f;do{f=a[c>>0]|0;if(!(f<<24>>24))break a;if(g<<24>>24!=f<<24>>24?(g=hJ(e)|0,(g|0)!=(hJ(f&255)|0)):0)break a;b=b+1|0;c=c+1|0;g=a[b>>0]|0;e=g&255}while(g<<24>>24!=0)}while(0);g=hJ(e)|0;return g-(hJ(d[c>>0]|0)|0)|0}function TK(b){b=b|0;var d=0,e=0,f=0;f=b;a:do if(!(f&3))e=4;else{d=f;while(1){if(!(a[b>>0]|0)){b=d;break a}b=b+1|0;d=b;if(!(d&3)){e=4;break}}}while(0);if((e|0)==4){while(1){d=c[b>>2]|0;if(!((d&-2139062144^-2139062144)&d+-16843009))b=b+4|0;else break}if((d&255)<<24>>24)do b=b+1|0;while((a[b>>0]|0)!=0)}return b-f|0}function UK(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;XK();c[e>>2]=a;c[e+4>>2]=b;b=aJ(Ha(91,e|0)|0)|0;l=d;return b|0}function VK(b,c){b=b|0;c=c|0;b=WK(b,c)|0;return ((a[b>>0]|0)==(c&255)<<24>>24?b:0)|0}function WK(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;f=d&255;a:do if(!f)b=b+(TK(b)|0)|0;else{if(b&3){e=d&255;do{g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break a;b=b+1|0}while((b&3|0)!=0)}f=S(f,16843009)|0;e=c[b>>2]|0;b:do if(!((e&-2139062144^-2139062144)&e+-16843009))do{g=e^f;if((g&-2139062144^-2139062144)&g+-16843009|0)break b;b=b+4|0;e=c[b>>2]|0}while(!((e&-2139062144^-2139062144)&e+-16843009|0));while(0);e=d&255;while(1){g=a[b>>0]|0;if(g<<24>>24==0?1:g<<24>>24==e<<24>>24)break;else b=b+1|0}}while(0);return b|0}function XK(){return}function YK(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0;k=l;l=l+16|0;g=k;i=(f|0)==0?170404:f;f=c[i>>2]|0;a:do if(!d)if(!f)f=0;else j=17;else{h=(b|0)==0?g:b;if(!e)f=-2;else{if(!f){f=a[d>>0]|0;if(f<<24>>24>-1){c[h>>2]=f&255;f=f<<24>>24!=0&1;break}g=(c[c[(ZK()|0)+188>>2]>>2]|0)==0;f=a[d>>0]|0;if(g){c[h>>2]=f<<24>>24&57343;f=1;break}f=(f&255)+-194|0;if(f>>>0>50){j=17;break}f=c[55224+(f<<2)>>2]|0;g=e+-1|0;if(g){d=d+1|0;j=11}}else{g=e;j=11}b:do if((j|0)==11){b=a[d>>0]|0;m=(b&255)>>>3;if((m+-16|m+(f>>26))>>>0>7){j=17;break a}while(1){d=d+1|0;f=(b&255)+-128|f<<6;g=g+-1|0;if((f|0)>=0)break;if(!g)break b;b=a[d>>0]|0;if((b&-64)<<24>>24!=-128){j=17;break a}}c[i>>2]=0;c[h>>2]=f;f=e-g|0;break a}while(0);c[i>>2]=f;f=-2}}while(0);if((j|0)==17){c[i>>2]=0;c[(bJ()|0)>>2]=84;f=-1}l=k;return f|0}function ZK(){return dJ()|0}function _K(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0;p=l;l=l+272|0;n=p+8|0;o=p;do if(!(a[d>>0]|0)){d=Ia(134782)|0;if(d|0?a[d>>0]|0:0)break;d=Ia(134789+(b*12|0)|0)|0;if(d|0?a[d>>0]|0:0)break;d=Ia(134861)|0;if(d|0?a[d>>0]|0:0)break;d=134866}while(0);e=0;a:do{switch(a[d+e>>0]|0){case 47:case 0:break a;default:{}}e=e+1|0}while(e>>>0<15);f=a[d>>0]|0;if(f<<24>>24!=46?(a[d+e>>0]|0)==0:0)if(f<<24>>24==67)m=15;else{k=d;m=16}else{d=134866;m=15}if((m|0)==15)if(!(a[d+1>>0]|0))m=18;else{k=d;m=16}b:do if((m|0)==16)if((vJ(k,134866)|0)!=0?(vJ(k,134874)|0)!=0:0){d=c[42602]|0;if(d|0)do{if(!(vJ(k,d+8|0)|0))break b;d=c[d+24>>2]|0}while((d|0)!=0);Pa(170412);d=c[42602]|0;c:do if(d|0){while(1){if(!(vJ(k,d+8|0)|0))break;d=c[d+24>>2]|0;if(!d)break c}Ma(170412);break b}while(0);d:do if(((c[42587]|0)==0?(g=Ia(134880)|0,(g|0)!=0):0)?(a[g>>0]|0)!=0:0){i=254-e|0;j=e+1|0;f=g;while(1){h=WK(f,58)|0;d=a[h>>0]|0;g=((d<<24>>24!=0)<<31>>31)+(h-f)|0;if(g>>>0<i>>>0){MN(n|0,f|0,g|0)|0;f=n+g|0;a[f>>0]=47;MN(f+1|0,k|0,e|0)|0;a[n+(j+g)>>0]=0;g=Ja(n|0,o|0)|0;if(g|0)break;d=a[h>>0]|0}f=h+(d<<24>>24!=0&1)|0;if(!(a[f>>0]|0)){m=41;break d}}d=wN(28)|0;f=c[o>>2]|0;if(!d){UK(g,f)|0;m=41;break}else{c[d>>2]=g;c[d+4>>2]=f;o=d+8|0;MN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42602];c[42602]=d;break}}else m=41;while(0);if((m|0)==41){d=wN(28)|0;if(d){c[d>>2]=c[13794];c[d+4>>2]=c[13795];o=d+8|0;MN(o|0,k|0,e|0)|0;a[o+e>>0]=0;c[d+24>>2]=c[42602];c[42602]=d}}Ma(170412);d=(b|0)==0&(d|0)==0?55176:d}else{d=k;m=18}while(0);do if((m|0)==18){if((b|0)==0?(a[d+1>>0]|0)==46:0){d=55176;break}d=0}while(0);l=p;return d|0}function $K(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;h=l;l=l+16|0;g=h;do if(b>>>0>6)d=0;else{Pa(170420);if((b|0)!=6){d=aL(b,d)|0;Ma(170420);break}if(!d){d=176391;b=0}else{b=g;e=134893;f=b+16|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));f=0;do{b=WK(d,59)|0;e=b-d|0;if((e|0)<16){MN(g|0,d|0,e|0)|0;a[g+e>>0]=0;d=(a[b>>0]|0)==0?d:b+1|0}aL(f,g)|0;f=f+1|0}while((f|0)!=6);d=176391;b=0}do{f=c[170380+(b<<2)>>2]|0;f=f|0?f+8|0:134909;g=TK(f)|0;MN(d|0,f|0,g|0)|0;a[d+g>>0]=59;d=d+(g+1)|0;b=b+1|0}while((b|0)!=6);a[d+-1>>0]=0;Ma(170420);d=176391}while(0);l=h;return d|0}function aL(a,b){a=a|0;b=b|0;if(!b)a=c[170380+(a<<2)>>2]|0;else{b=_K(a,b)|0;c[170380+(a<<2)>>2]=b;a=b}return (a|0?a+8|0:134909)|0}function bL(b,c,e){b=b|0;c=c|0;e=e|0;var f=0,g=0,h=0;if(!e)f=0;else{g=a[b>>0]|0;f=g&255;a:do if(g<<24>>24){h=g;do{e=e+-1|0;g=a[c>>0]|0;if(!((e|0)!=0&g<<24>>24!=0))break a;if(h<<24>>24!=g<<24>>24?(h=hJ(f)|0,(h|0)!=(hJ(g&255)|0)):0)break a;b=b+1|0;c=c+1|0;h=a[b>>0]|0;f=h&255}while(h<<24>>24!=0)}while(0);f=hJ(f)|0;f=f-(hJ(d[c>>0]|0)|0)|0}return f|0}function cL(a,b){a=a|0;b=b|0;dL(a,b)|0;return a|0}function dL(b,d){b=b|0;d=d|0;var e=0,f=0;e=d;a:do if(!((e^b)&3)){if(e&3)do{e=a[d>>0]|0;a[b>>0]=e;if(!(e<<24>>24))break a;d=d+1|0;b=b+1|0}while((d&3|0)!=0);e=c[d>>2]|0;if(!((e&-2139062144^-2139062144)&e+-16843009)){f=b;while(1){d=d+4|0;b=f+4|0;c[f>>2]=e;e=c[d>>2]|0;if((e&-2139062144^-2139062144)&e+-16843009|0)break;else f=b}}f=8}else f=8;while(0);if((f|0)==8){f=a[d>>0]|0;a[b>>0]=f;if(f<<24>>24)do{d=d+1|0;b=b+1|0;f=a[d>>0]|0;a[b>>0]=f}while(f<<24>>24!=0)}return b|0}function eL(a,b){a=+a;b=+b;var c=0.0,d=0.0,e=0.0,f=0.0;c=a*a;d=c*c;e=c*.5;f=1.0-e;return +(f+(1.0-f-e+(c*(c*(c*(c*2.480158728947673e-05+-.001388888888887411)+.0416666666666666)+d*d*(c*(2.087572321298175e-09-c*1.1359647557788195e-11)+-2.7557314351390663e-07))-a*b)))}function fL(a,b){a=+a;b=b|0;var d=0,e=0.0,f=0.0,g=0.0,i=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;r=l;l=l+48|0;m=r+16|0;n=r;h[j>>3]=a;d=c[j>>2]|0;i=c[j+4>>2]|0;o=KN(d|0,i|0,63)|0;q=i&2147483647;do if(q>>>0<1074752123)if((i&1048575|0)!=598523){d=(o|0)!=0;if(q>>>0<1073928573)if(d){g=a+1.5707963267341256;k=g+6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+6.077100506506192e-11;d=-1;break}else{g=a+-1.5707963267341256;k=g+-6.077100506506192e-11;h[b>>3]=k;h[b+8>>3]=g-k+-6.077100506506192e-11;d=1;break}else if(d){g=a+3.1415926534682512;k=g+1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.2154201013012384e-10;d=-2;break}else{g=a+-3.1415926534682512;k=g+-1.2154201013012384e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.2154201013012384e-10;d=2;break}}else p=21;else{if(q>>>0<1075594812)if(q>>>0<1075183037){if((q|0)==1074977148){p=21;break}if(!o){g=a+-4.712388980202377;k=g+-1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+-1.8231301519518578e-10;d=3;break}else{g=a+4.712388980202377;k=g+1.8231301519518578e-10;h[b>>3]=k;h[b+8>>3]=g-k+1.8231301519518578e-10;d=-3;break}}else{if((q|0)==1075388923){p=21;break}if(!o){g=a+-6.2831853069365025;k=g+-2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+-2.430840202602477e-10;d=4;break}else{g=a+6.2831853069365025;k=g+2.430840202602477e-10;h[b>>3]=k;h[b+8>>3]=g-k+2.430840202602477e-10;d=-4;break}}if(q>>>0>=1094263291){if(q>>>0>2146435071){k=a-a;h[b+8>>3]=k;h[b>>3]=k;d=0;break}c[j>>2]=d;c[j+4>>2]=i&1048575|1096810496;a=+h[j>>3];d=0;do{k=+(~~a|0);h[m+(d<<3)>>3]=k;a=(a-k)*16777216.0;d=d+1|0}while((d|0)!=2);h[m+16>>3]=a;if(a==0.0){d=1;while(1)if(+h[m+(d<<3)>>3]==0.0)d=d+-1|0;else break}else d=2;d=gL(m,n,(q>>>20)+-1046|0,d+1|0,1)|0;e=+h[n>>3];a=+h[n+8>>3];if(!o){h[b>>3]=e;h[b+8>>3]=a;break}else{h[b>>3]=-e;h[b+8>>3]=-a;d=0-d|0;break}}else p=21}while(0);if((p|0)==21){g=a*.6366197723675814+6755399441055744.0+-6755399441055744.0;d=~~g;e=a-g*1.5707963267341256;f=g*6.077100506506192e-11;a=e-f;h[b>>3]=a;h[j>>3]=a;p=KN(c[j>>2]|0,c[j+4>>2]|0,52)|0;i=q>>>20;if((i-(p&2047)|0)>16){f=g*6.077100506303966e-11;k=e-f;f=g*2.0222662487959506e-21-(e-k-f);a=k-f;h[b>>3]=a;h[j>>3]=a;q=KN(c[j>>2]|0,c[j+4>>2]|0,52)|0;s=g*2.0222662487111665e-21;e=k-s;g=g*8.4784276603689e-32-(k-e-s);if((i-(q&2047)|0)>49){a=e-g;h[b>>3]=a;f=g}else e=k}h[b+8>>3]=e-a-f}l=r;return d|0}function gL(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0.0,i=0.0,j=0,k=0.0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,F=0,G=0,H=0,I=0;I=l;l=l+560|0;C=I+480|0;A=I+320|0;H=I+160|0;F=I;D=c[56312+(f<<2)>>2]|0;q=e+-1|0;z=(d+-3|0)/24|0;z=(z|0)>0?z:0;B=S(z,-24)|0;j=d+-24+B|0;if((D+q|0)>=0){o=D+e|0;m=z-q|0;n=0;while(1){if((m|0)<0)g=0.0;else g=+(c[56328+(m<<2)>>2]|0);h[A+(n<<3)>>3]=g;n=n+1|0;if((n|0)==(o|0))break;else m=m+1|0}}p=(e|0)>0;o=0;while(1){if(p){n=o+q|0;g=0.0;m=0;do{g=g+ +h[a+(m<<3)>>3]*+h[A+(n-m<<3)>>3];m=m+1|0}while((m|0)!=(e|0))}else g=0.0;h[F+(o<<3)>>3]=g;if((o|0)<(D|0))o=o+1|0;else break}u=(j|0)>0;v=24-j|0;w=23-j|0;x=(e|0)>0;y=(j|0)==0;m=D;a:while(1){g=+h[F+(m<<3)>>3];p=(m|0)>0;if(p){n=m;o=0;while(1){k=+(~~(g*5.9604644775390625e-08)|0);c[C+(o<<2)>>2]=~~(g-k*16777216.0);t=n;n=n+-1|0;g=k+ +h[F+(n<<3)>>3];if((t|0)<=1)break;else o=o+1|0}}g=+MK(g,j);g=g-+E(+(g*.125))*8.0;n=~~g;g=g-+(n|0);do if(!u)if(!y)if(!(g>=.5)){q=0;t=n;break}else{o=2;G=20;break}else{o=c[C+(m+-1<<2)>>2]>>23;G=19;break}else{t=C+(m+-1<<2)|0;o=c[t>>2]|0;G=o>>v;o=o-(G<<v)|0;c[t>>2]=o;o=o>>w;n=G+n|0;G=19}while(0);if((G|0)==19){G=0;if((o|0)>0)G=20;else{q=o;t=n}}if((G|0)==20){G=0;t=n+1|0;if(p){n=0;s=0;do{q=C+(s<<2)|0;r=c[q>>2]|0;if(!n)if(!r)n=0;else{n=1;p=16777216;G=23}else{p=16777215;G=23}if((G|0)==23){G=0;c[q>>2]=p-r}s=s+1|0}while((s|0)!=(m|0))}else n=0;b:do if(u){switch(j|0){case 1:{p=8388607;break}case 2:{p=4194303;break}default:break b}s=C+(m+-1<<2)|0;c[s>>2]=c[s>>2]&p}while(0);if((o|0)==2){g=1.0-g;if(!n)q=2;else{q=2;g=g-+MK(1.0,j)}}else q=o}if(!(g==0.0)){G=42;break}if((m|0)>(D|0)){n=0;o=m;do{o=o+-1|0;n=c[C+(o<<2)>>2]|n}while((o|0)>(D|0));if(n){G=41;break}else n=1}else n=1;while(1)if(!(c[C+(D-n<<2)>>2]|0))n=n+1|0;else break;p=n+m|0;if((n|0)<=0){m=p;continue}while(1){o=m+1|0;n=m+e|0;h[A+(n<<3)>>3]=+(c[56328+(o+z<<2)>>2]|0);if(x){g=0.0;m=0;do{g=g+ +h[a+(m<<3)>>3]*+h[A+(n-m<<3)>>3];m=m+1|0}while((m|0)!=(e|0))}else g=0.0;h[F+(o<<3)>>3]=g;if((o|0)<(p|0))m=o;else{m=p;continue a}}}if((G|0)==41)while(1){G=0;j=j+-24|0;m=m+-1|0;if(!(c[C+(m<<2)>>2]|0))G=41;else{p=m;break}}else if((G|0)==42){g=+MK(g,0-j|0);if(g>=16777216.0){k=+(~~(g*5.9604644775390625e-08)|0);c[C+(m<<2)>>2]=~~(g-k*16777216.0);j=B+d|0;m=m+1|0;g=k}c[C+(m<<2)>>2]=~~g;p=m}o=(p|0)>-1;if(o){g=+MK(1.0,j);j=p;while(1){h[F+(j<<3)>>3]=g*+(c[C+(j<<2)>>2]|0);if((j|0)>0){g=g*5.9604644775390625e-08;j=j+-1|0}else break}if(o){m=p;while(1){n=p-m|0;j=0;g=0.0;while(1){g=g+ +h[10840+(j<<3)>>3]*+h[F+(j+m<<3)>>3];if((j|0)>=(D|0)|(j|0)>=(n|0))break;else j=j+1|0}h[H+(n<<3)>>3]=g;if((m|0)>0)m=m+-1|0;else break}}}switch(f|0){case 0:{if(o){g=0.0;j=p;while(1){g=g+ +h[H+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;i=(q|0)==0?g:-g;G=73;break}case 2:case 1:{if(o){g=0.0;j=p;while(1){g=g+ +h[H+(j<<3)>>3];if((j|0)>0)j=j+-1|0;else break}}else g=0.0;m=(q|0)==0;h[b>>3]=m?g:-g;g=+h[H>>3]-g;if((p|0)>=1){j=1;while(1){g=g+ +h[H+(j<<3)>>3];if((j|0)==(p|0))break;else j=j+1|0}}i=m?g:-g;b=b+8|0;G=73;break}case 3:{if((p|0)>0){j=p;g=+h[H+(p<<3)>>3];do{G=j;j=j+-1|0;F=H+(j<<3)|0;k=+h[F>>3];i=g;g=k+g;h[H+(G<<3)>>3]=i+(k-g);h[F>>3]=g}while((G|0)>1);m=(p|0)>1;if(m){j=p;g=+h[H+(p<<3)>>3];do{F=j;j=j+-1|0;G=H+(j<<3)|0;k=+h[G>>3];i=g;g=k+g;h[H+(F<<3)>>3]=i+(k-g);h[G>>3]=g}while((j|0)>1);if(m){j=p;i=0.0;do{i=i+ +h[H+(j<<3)>>3];j=j+-1|0}while((j|0)>1)}else i=0.0}else i=0.0}else i=0.0;k=+h[H>>3];g=+h[H+8>>3];if(!q)h[b>>3]=k;else{h[b>>3]=-k;i=-i;g=-g}h[b+8>>3]=g;b=b+16|0;G=73;break}default:{}}if((G|0)==73)h[b>>3]=i;l=I;return t&7|0}function hL(a,b,c){a=+a;b=+b;c=c|0;var d=0.0,e=0.0,f=0.0;f=a*a;d=f*(f*f)*(f*1.58969099521155e-10+-2.5050760253406863e-08)+(f*(f*2.7557313707070068e-06+-1.984126982985795e-04)+.00833333333332249);e=f*a;if(!c)a=e*(f*d+-.16666666666666632)+a;else a=a-(e*.16666666666666632+(f*(b*.5-e*d)-b));return +a}function iL(a){a=+a;var b=0,d=0,e=0,f=0.0,g=0.0;h[j>>3]=a;d=c[j+4>>2]|0;b=d&2147483647;do if(b>>>0>2146435071)a=a+a;else{if(b>>>0<1048576){h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;b=d&2147483647;if(!b)break;else e=696219795}else e=715094163;c[j>>2]=0;c[j+4>>2]=((b>>>0)/3|0)+e|d&-2147483648;g=+h[j>>3];f=g*g*(g/a);h[j>>3]=g*(f*(f*f)*(f*.14599619288661245+-.758397934778766)+(f*(f*1.6214297201053545+-1.8849797954337717)+1.87595182427177));d=IN(c[j>>2]|0,c[j+4>>2]|0,-2147483648,0)|0;e=D;c[j>>2]=d&-1073741824;c[j+4>>2]=e;f=+h[j>>3];a=a/(f*f);a=f+f*((a-f)/(f+f+a))}while(0);return +a}function jL(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;k=+h[j>>3]+-1.0;i=k*(k*.5);l=k/(k+2.0);m=l*l;a=m*m;h[j>>3]=k-i;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;g=+h[j>>3];a=k-g-i+l*(i+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+m*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));m=g*.4342944818781689;i=+(e+(f>>>20)|0);l=i*.30102999566361177;k=l+m;a=k+(m+(l-k)+(a*.4342944818781689+(i*3.694239077158931e-13+(g+a)*2.5082946711645275e-11)))}return +a}function kL(a){a=+a;var b=0,d=0,e=0,f=0,g=0.0,i=0.0,k=0.0,l=0.0,m=0.0;h[j>>3]=a;b=c[j>>2]|0;d=c[j+4>>2]|0;e=(d|0)<0;do if(e|d>>>0<1048576){if((b|0)==0&(d&2147483647|0)==0){a=-1.0/(a*a);break}if(e){a=(a-a)/0.0;break}else{h[j>>3]=a*18014398509481984.0;d=c[j+4>>2]|0;e=-1077;b=c[j>>2]|0;f=9;break}}else if(d>>>0<=2146435071)if((b|0)==0&0==0&(d|0)==1072693248)a=0.0;else{e=-1023;f=9}while(0);if((f|0)==9){f=d+614242|0;c[j>>2]=b;c[j+4>>2]=(f&1048575)+1072079006;m=+h[j>>3]+-1.0;k=m*(m*.5);i=m/(m+2.0);l=i*i;a=l*l;h[j>>3]=m-k;d=c[j+4>>2]|0;c[j>>2]=0;c[j+4>>2]=d;g=+h[j>>3];a=m-g-k+i*(k+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+l*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));l=g*1.4426950407214463;k=+(e+(f>>>20)|0);i=k+l;a=i+(l+(k-i)+(a*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function lL(a,b,d){a=+a;b=b|0;d=d|0;var e=0.0,f=0,g=0,i=0.0,k=0,m=0;k=l;l=l+16|0;g=k;h[j>>3]=a;f=c[j+4>>2]&2147483647;do if(f>>>0<1072243196)if(f>>>0<1044816030){h[b>>3]=a;h[d>>3]=1.0;break}else{h[b>>3]=+hL(a,0.0,0);h[d>>3]=+eL(a,0.0);break}else{if(f>>>0>2146435071){i=a-a;h[d>>3]=i;h[b>>3]=i;break}f=fL(a,g)|0;m=g+8|0;e=+hL(+h[g>>3],+h[m>>3],1);a=+eL(+h[g>>3],+h[m>>3]);switch(f&3){case 0:{h[b>>3]=e;i=a;break}case 1:{h[b>>3]=a;i=-e;break}case 2:{h[b>>3]=-e;i=-a;break}case 3:{h[b>>3]=-a;i=e;break}default:{}}h[d>>3]=i}while(0);l=k;return}function mL(a){a=a|0;var b=0,c=0;c=(TK(a)|0)+1|0;b=wN(c)|0;if(!b)b=0;else MN(b|0,a|0,c|0)|0;return b|0}function nL(a,b){a=a|0;b=b|0;var c=0;c=TK(a)|0;return ((oL(a,1,c,b)|0)!=(c|0))<<31>>31|0}function oL(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;f=S(d,b)|0;d=(b|0)==0?0:d;if((c[e+76>>2]|0)>-1){g=(DJ(e)|0)==0;a=$J(a,f,e)|0;if(!g)EJ(e)}else a=$J(a,f,e)|0;if((a|0)!=(f|0))d=(a>>>0)/(b>>>0)|0;return d|0}function pL(a){a=a|0;var b=0;if(c[a+68>>2]|0){b=c[a+116>>2]|0;a=a+112|0;if(b|0)c[b+112>>2]=c[a>>2];a=c[a>>2]|0;if(!a)a=(qL()|0)+232|0;else a=a+116|0;c[a>>2]=b}return}function qL(){return dJ()|0}function rL(b,e){b=b|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,m=0;m=l;l=l+16|0;j=m;k=e&255;a[j>>0]=k;g=b+16|0;h=c[g>>2]|0;if(!h)if(!(aK(b)|0)){h=c[g>>2]|0;i=4}else f=-1;else i=4;do if((i|0)==4){i=b+20|0;g=c[i>>2]|0;if(g>>>0<h>>>0?(f=e&255,(f|0)!=(a[b+75>>0]|0)):0){c[i>>2]=g+1;a[g>>0]=k;break}if((Za[c[b+36>>2]&31](b,j,1)|0)==1)f=d[j>>0]|0;else f=-1}while(0);l=m;return f|0}function sL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;g=j;a:do if(!e)b=0;else{do if(f|0){i=(b|0)==0?g:b;b=a[e>>0]|0;if(b<<24>>24>-1){c[i>>2]=b&255;b=b<<24>>24!=0&1;break a}h=(c[c[(tL()|0)+188>>2]>>2]|0)==0;b=a[e>>0]|0;if(h){c[i>>2]=b<<24>>24&57343;b=1;break a}b=(b&255)+-194|0;if(b>>>0<=50){g=e+1|0;h=c[55224+(b<<2)>>2]|0;if(f>>>0<4?h&-2147483648>>>((f*6|0)+-6|0)|0:0)break;b=d[g>>0]|0;f=b>>>3;if((f+-16|f+(h>>26))>>>0<=7){b=b+-128|h<<6;if((b|0)>=0){c[i>>2]=b;b=2;break a}g=(d[e+2>>0]|0)+-128|0;if(g>>>0<=63){g=g|b<<6;if((g|0)>=0){c[i>>2]=g;b=3;break a}b=(d[e+3>>0]|0)+-128|0;if(b>>>0<=63){c[i>>2]=b|g<<6;b=4;break a}}}}}while(0);c[(bJ()|0)>>2]=84;b=-1}while(0);l=j;return b|0}function tL(){return dJ()|0}function uL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;i=l;l=l+48|0;h=i+32|0;g=i+16|0;e=i;if(MJ(134911,a[d>>0]|0,4)|0){f=vL(d)|0;c[e>>2]=b;c[e+4>>2]=f|32768;c[e+8>>2]=438;e=aJ(Ra(5,e|0)|0)|0;if((e|0)>=0){if(f&524288|0){c[g>>2]=e;c[g+4>>2]=2;c[g+8>>2]=1;qa(221,g|0)|0}b=wL(e,d)|0;if(!b){c[h>>2]=e;ta(6,h|0)|0;b=0}}else b=0}else{c[(bJ()|0)>>2]=22;b=0}l=i;return b|0}function vL(b){b=b|0;var c=0,d=0,e=0;d=(VK(b,43)|0)==0;c=a[b>>0]|0;d=d?c<<24>>24!=114&1:2;e=(VK(b,120)|0)==0;d=e?d:d|128;b=(VK(b,101)|0)==0;b=b?d:d|524288;b=c<<24>>24==114?b:b|64;b=c<<24>>24==119?b|512:b;return (c<<24>>24==97?b|1024:b)|0}function wL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+64|0;n=o+40|0;k=o+24|0;j=o+16|0;g=o;m=o+56|0;f=a[d>>0]|0;if(MJ(134911,f<<24>>24,4)|0){e=wN(1156)|0;if(!e)e=0;else{h=e;i=h+124|0;do{c[h>>2]=0;h=h+4|0}while((h|0)<(i|0));if(!(VK(d,43)|0))c[e>>2]=f<<24>>24==114?8:4;if(VK(d,101)|0){c[g>>2]=b;c[g+4>>2]=2;c[g+8>>2]=1;qa(221,g|0)|0;f=a[d>>0]|0}if(f<<24>>24==97){c[j>>2]=b;c[j+4>>2]=3;f=qa(221,j|0)|0;if(!(f&1024)){c[k>>2]=b;c[k+4>>2]=4;c[k+8>>2]=f|1024;qa(221,k|0)|0}d=c[e>>2]|128;c[e>>2]=d}else d=c[e>>2]|0;c[e+60>>2]=b;c[e+44>>2]=e+132;c[e+48>>2]=1024;f=e+75|0;a[f>>0]=-1;if((d&8|0)==0?(c[n>>2]=b,c[n+4>>2]=21523,c[n+8>>2]=m,(La(54,n|0)|0)==0):0)a[f>>0]=10;c[e+32>>2]=8;c[e+36>>2]=6;c[e+40>>2]=7;c[e+12>>2]=15;if(!(c[42586]|0))c[e+76>>2]=-1;xL(e)|0}}else{c[(bJ()|0)>>2]=22;e=0}l=o;return e|0}function xL(a){a=a|0;var b=0,d=0;b=yL()|0;c[a+56>>2]=c[b>>2];d=c[b>>2]|0;if(d|0)c[d+52>>2]=a;c[b>>2]=a;zL();return a|0}function yL(){Pa(170428);return 170436}function zL(){Ma(170428);return}function AL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0;if((c[a+76>>2]|0)>-1)f=DJ(a)|0;else f=0;pL(a);g=(c[a>>2]&1|0)!=0;if(!g){e=yL()|0;d=c[a+52>>2]|0;b=a+56|0;if(d|0)c[d+56>>2]=c[b>>2];b=c[b>>2]|0;if(b|0)c[b+52>>2]=d;if((c[e>>2]|0)==(a|0))c[e>>2]=b;zL()}b=BL(a)|0;b=fb[c[a+12>>2]&31](a)|0|b;d=c[a+92>>2]|0;if(d|0)xN(d);if(g){if(f|0)EJ(a)}else xN(a);return b|0}function BL(a){a=a|0;var b=0,d=0;do if(a){if((c[a+76>>2]|0)<=-1){b=CL(a)|0;break}d=(DJ(a)|0)==0;b=CL(a)|0;if(!d)EJ(a)}else{if(!(c[14014]|0))b=0;else b=BL(c[14014]|0)|0;a=c[(yL()|0)>>2]|0;if(a)do{if((c[a+76>>2]|0)>-1)d=DJ(a)|0;else d=0;if((c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0)b=CL(a)|0|b;if(d|0)EJ(a);a=c[a+56>>2]|0}while((a|0)!=0);zL()}while(0);return b|0}function CL(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;b=a+20|0;h=a+28|0;if((c[b>>2]|0)>>>0>(c[h>>2]|0)>>>0?(Za[c[a+36>>2]&31](a,0,0)|0,(c[b>>2]|0)==0):0)a=-1;else{d=a+4|0;e=c[d>>2]|0;f=a+8|0;g=c[f>>2]|0;if(e>>>0<g>>>0)Za[c[a+40>>2]&31](a,e-g|0,1)|0;c[a+16>>2]=0;c[h>>2]=0;c[b>>2]=0;c[f>>2]=0;c[d>>2]=0;a=0}return a|0}function DL(b,e,f){b=b|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if((c[f+76>>2]|0)>-1)l=DJ(f)|0;else l=0;h=e+-1|0;g=(h|0)!=0;if((e|0)<2){m=f+74|0;k=a[m>>0]|0;a[m>>0]=k+255|k;if(l|0)EJ(f);if(g)b=0;else a[b>>0]=0}else{a:do if(g){j=f+4|0;k=f+8|0;e=b;while(1){g=c[j>>2]|0;o=g;p=(c[k>>2]|0)-o|0;n=MJ(g,10,p)|0;i=(n|0)==0;n=i?p:1-o+n|0;n=n>>>0<h>>>0?n:h;MN(e|0,g|0,n|0)|0;g=(c[j>>2]|0)+n|0;c[j>>2]=g;e=e+n|0;h=h-n|0;if(!(i&(h|0)!=0)){m=17;break a}if(g>>>0>=(c[k>>2]|0)>>>0){g=oJ(f)|0;if((g|0)<0)break}else{c[j>>2]=g+1;g=d[g>>0]|0}h=h+-1|0;i=e+1|0;a[e>>0]=g;if(!((h|0)!=0&(g&255|0)!=10)){e=i;m=17;break a}else e=i}if((e|0)!=(b|0)?(c[f>>2]&16|0)!=0:0)m=17;else b=0}else{e=b;m=17}while(0);if((m|0)==17)if(!b)b=0;else a[e>>0]=0;if(l)EJ(f)}return b|0}function EL(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(DJ(a)|0)==0;a=(c[a>>2]|0)>>>4&1}else a=(c[a>>2]|0)>>>4&1;return a|0}function FL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=GL(a,b,f)|0;l=e;return d|0}function GL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+128|0;e=g;f=e;h=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(h|0));c[e+32>>2]=18;c[e+44>>2]=a;c[e+76>>2]=-1;c[e+84>>2]=a;h=IL(e,b,d)|0;l=g;return h|0}function HL(a,b,c){a=a|0;b=b|0;c=c|0;return ML(a,b,c)|0}function IL(b,e,f){b=b|0;e=e|0;f=f|0;var i=0,j=0,k=0,m=0,n=0,o=0.0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=l;l=l+288|0;K=Q+8|0;L=Q+17|0;M=Q;N=Q+16|0;if((c[b+76>>2]|0)>-1)P=DJ(b)|0;else P=0;i=a[e>>0]|0;a:do if(i<<24>>24){z=b+4|0;A=b+100|0;B=b+108|0;C=b+8|0;E=L+10|0;F=L+33|0;y=K+4|0;G=L+46|0;H=L+94|0;I=L+1|0;J=L+1|0;m=e;u=0;e=0;k=0;j=0;b:while(1){c:do if(!(nJ(i&255)|0)){i=i<<24>>24==37;d:do if(i){p=m+1|0;n=a[p>>0]|0;e:do switch(n<<24>>24){case 37:break d;case 42:{x=0;m=m+2|0;break}default:{i=(n&255)+-48|0;if(i>>>0<10?(a[m+2>>0]|0)==36:0){x=JL(f,i)|0;m=m+3|0;break e}m=(c[f>>2]|0)+(4-1)&~(4-1);x=c[m>>2]|0;c[f>>2]=m+4;m=p}}while(0);i=a[m>>0]|0;n=i&255;if((n+-48|0)>>>0<10){p=0;do{p=(p*10|0)+-48+n|0;m=m+1|0;i=a[m>>0]|0;n=i&255}while((n+-48|0)>>>0<10)}else p=0;i=i<<24>>24==109;w=(x|0)!=0;k=i?0:k;j=i?0:j;m=i?m+1|0:m;i=w&i;n=m+1|0;switch(a[m>>0]|0){case 104:{v=(a[n>>0]|0)==104;q=v?-2:-1;m=v?m+2|0:n;break}case 108:{v=(a[n>>0]|0)==108;q=v?3:1;m=v?m+2|0:n;break}case 106:{q=3;m=n;break}case 116:case 122:{q=1;m=n;break}case 76:{q=2;m=n;break}case 110:case 112:case 67:case 83:case 91:case 99:case 115:case 88:case 71:case 70:case 69:case 65:case 103:case 102:case 101:case 97:case 120:case 117:case 111:case 105:case 100:{q=0;break}default:{O=137;break b}}s=d[m>>0]|0;t=(s&47|0)==3;s=t?s|32:s;t=t?1:q;r=s&255;switch(r<<24>>24){case 99:{p=(p|0)>1?p:1;break}case 91:break;case 110:{KL(x,t,u,((u|0)<0)<<31>>31);n=u;break c}default:{kJ(b,0);do{n=c[z>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[z>>2]=n+1;n=d[n>>0]|0}else n=mJ(b)|0}while((nJ(n)|0)!=0);if(!(c[A>>2]|0))n=c[z>>2]|0;else{n=(c[z>>2]|0)+-1|0;c[z>>2]=n}u=(c[B>>2]|0)+u+n-(c[C>>2]|0)|0}}kJ(b,p);n=c[z>>2]|0;q=c[A>>2]|0;if(n>>>0<q>>>0)c[z>>2]=n+1;else{if((mJ(b)|0)<0){O=137;break b}q=c[A>>2]|0}if(q|0)c[z>>2]=(c[z>>2]|0)+-1;f:do switch(r<<24>>24){case 91:case 99:case 115:{v=(s|0)==99;g:do if((s|16|0)==115){GN(I|0,-1,256)|0;a[L>>0]=0;if((s|0)==115){a[F>>0]=0;a[E>>0]=0;a[E+1>>0]=0;a[E+2>>0]=0;a[E+3>>0]=0;a[E+4>>0]=0}}else{n=m+1|0;s=(a[n>>0]|0)==94;r=s&1;m=s?m+2|0:n;GN(J|0,s&1|0,256)|0;a[L>>0]=0;switch(a[m>>0]|0){case 45:{n=G;O=64;break}case 93:{n=H;O=64;break}default:s=(r^1)&255}if((O|0)==64){O=0;s=(r^1)&255;a[n>>0]=s;m=m+1|0}while(1){n=a[m>>0]|0;h:do switch(n<<24>>24){case 0:{O=137;break b}case 93:break g;case 45:{r=m+1|0;n=a[r>>0]|0;switch(n<<24>>24){case 93:case 0:{n=45;break h}default:{}}m=a[m+-1>>0]|0;if((m&255)<(n&255)){m=m&255;do{m=m+1|0;a[L+m>>0]=s;n=a[r>>0]|0}while((m|0)<(n&255|0));m=r}else m=r;break}default:{}}while(0);a[L+((n&255)+1)>>0]=s;m=m+1|0}}while(0);n=v?p+1|0:31;s=(t|0)==1;i:do if(s){if(i){j=wN(n<<2)|0;if(!j){k=0;j=0;i=1;O=137;break b}}else j=x;c[K>>2]=0;c[y>>2]=0;r=n;k=0;j:while(1){q=(j|0)==0;do{k:while(1){n=c[z>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[z>>2]=n+1;n=d[n>>0]|0}else n=mJ(b)|0;if(!(a[L+(n+1)>>0]|0))break j;a[N>>0]=n;switch(YK(M,N,1,K)|0){case -1:{k=0;O=137;break b}case -2:break;default:break k}}if(!q){c[j+(k<<2)>>2]=c[M>>2];k=k+1|0}}while(!(i&(k|0)==(r|0)));k=r<<1|1;n=zN(j,k<<2)|0;if(!n){k=0;i=1;O=137;break b}else{t=r;r=k;j=n;k=t}}if(!(LL(K)|0)){k=0;O=137;break b}else{n=k;k=0;r=j}}else{if(i){k=wN(n)|0;if(!k){k=0;j=0;i=1;O=137;break b}else{q=n;j=0}while(1){do{n=c[z>>2]|0;if(n>>>0<(c[A>>2]|0)>>>0){c[z>>2]=n+1;n=d[n>>0]|0}else n=mJ(b)|0;if(!(a[L+(n+1)>>0]|0)){n=j;r=0;j=0;break i}a[k+j>>0]=n;j=j+1|0}while((j|0)!=(q|0));j=q<<1|1;n=zN(k,j)|0;if(!n){j=0;i=1;O=137;break b}else{t=q;q=j;k=n;j=t}}}if(!x){k=q;while(1){j=c[z>>2]|0;if(j>>>0<k>>>0){c[z>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;if(!(a[L+(j+1)>>0]|0)){n=0;k=0;r=0;j=0;break i}k=c[A>>2]|0}}else{n=0;k=q;while(1){j=c[z>>2]|0;if(j>>>0<k>>>0){c[z>>2]=j+1;j=d[j>>0]|0}else j=mJ(b)|0;if(!(a[L+(j+1)>>0]|0)){k=x;r=0;j=0;break i}a[x+n>>0]=j;n=n+1|0;k=c[A>>2]|0}}}while(0);if(!(c[A>>2]|0))q=c[z>>2]|0;else{q=(c[z>>2]|0)+-1|0;c[z>>2]=q}q=q-(c[C>>2]|0)+(c[B>>2]|0)|0;if(!q){O=139;break b}if(!((q|0)==(p|0)|v^1)){O=139;break b}do if(i)if(s){c[x>>2]=r;break}else{c[x>>2]=k;break}while(0);if(!v){if(r|0)c[r+(n<<2)>>2]=0;if(!k){k=0;break f}a[k+n>>0]=0}break}case 120:case 88:case 112:{n=16;O=125;break}case 111:{n=8;O=125;break}case 117:case 100:{n=10;O=125;break}case 105:{n=0;O=125;break}case 71:case 103:case 70:case 102:case 69:case 101:case 65:case 97:{o=+IK(b,t,0);if((c[B>>2]|0)==((c[C>>2]|0)-(c[z>>2]|0)|0)){O=139;break b}if(x)switch(t|0){case 0:{g[x>>2]=o;break f}case 1:{h[x>>3]=o;break f}case 2:{h[x>>3]=o;break f}default:break f}break}default:{}}while(0);do if((O|0)==125){O=0;n=lJ(b,n,0,-1,-1)|0;if((c[B>>2]|0)==((c[C>>2]|0)-(c[z>>2]|0)|0)){O=139;break b}if(w&(s|0)==112){c[x>>2]=n;break}else{KL(x,t,n,D);break}}while(0);e=(w&1)+e|0;n=(c[B>>2]|0)+u+(c[z>>2]|0)-(c[C>>2]|0)|0;break c}while(0);m=m+(i&1)|0;kJ(b,0);i=c[z>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[z>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0;if((i|0)!=(d[m>>0]|0)){O=22;break b}n=u+1|0}else{while(1){i=m+1|0;if(!(nJ(d[i>>0]|0)|0))break;else m=i}kJ(b,0);do{i=c[z>>2]|0;if(i>>>0<(c[A>>2]|0)>>>0){c[z>>2]=i+1;i=d[i>>0]|0}else i=mJ(b)|0}while((nJ(i)|0)!=0);if(!(c[A>>2]|0))i=c[z>>2]|0;else{i=(c[z>>2]|0)+-1|0;c[z>>2]=i}n=(c[B>>2]|0)+u+i-(c[C>>2]|0)|0}while(0);m=m+1|0;i=a[m>>0]|0;if(!(i<<24>>24))break a;else u=n}if((O|0)==22){if(c[A>>2]|0)c[z>>2]=(c[z>>2]|0)+-1;if((e|0)!=0|(i|0)>-1)break;else{i=0;O=138}}else if((O|0)==137){i=i&1;if(!e)O=138}else if((O|0)==139)i=i&1;if((O|0)==138)e=-1;if(i){xN(k);xN(j)}}else e=0;while(0);if(P|0)EJ(b);l=Q;return e|0}function JL(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;e=l;l=l+16|0;d=e;c[d>>2]=c[a>>2];while(1){f=(c[d>>2]|0)+(4-1)&~(4-1);a=c[f>>2]|0;c[d>>2]=f+4;if(b>>>0>1)b=b+-1|0;else break}l=e;return a|0}function KL(d,e,f,g){d=d|0;e=e|0;f=f|0;g=g|0;a:do if(d|0)switch(e|0){case -2:{a[d>>0]=f;break a}case -1:{b[d>>1]=f;break a}case 0:{c[d>>2]=f;break a}case 1:{c[d>>2]=f;break a}case 3:{e=d;c[e>>2]=f;c[e+4>>2]=g;break a}default:break a}while(0);return}function LL(a){a=a|0;if(!a)a=1;else a=(c[a>>2]|0)==0;return a&1|0}function ML(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;e=a+84|0;g=c[e>>2]|0;h=d+256|0;f=MJ(g,0,h)|0;f=(f|0)==0?h:f-g|0;d=f>>>0<d>>>0?f:d;MN(b|0,g|0,d|0)|0;c[a+4>>2]=g+d;b=g+f|0;c[a+8>>2]=b;c[e>>2]=b;return d|0}function NL(a,b,c){a=a|0;b=b|0;c=c|0;return PL(a,b,c)|0}function OL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=l;l=l+16|0;f=e;c[f>>2]=d;d=BJ(a,b,f)|0;l=e;return d|0}function PL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if((c[a+76>>2]|0)>-1){e=(DJ(a)|0)==0;b=QL(a,b,d)|0;if(!e)EJ(a)}else b=QL(a,b,d)|0;return b|0}function QL(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;if((d|0)==1)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)|0;e=a+20|0;f=a+28|0;if((c[e>>2]|0)>>>0>(c[f>>2]|0)>>>0?(Za[c[a+36>>2]&31](a,0,0)|0,(c[e>>2]|0)==0):0)b=-1;else{c[a+16>>2]=0;c[f>>2]=0;c[e>>2]=0;if((Za[c[a+40>>2]&31](a,b,d)|0)<0)b=-1;else{c[a+8>>2]=0;c[a+4>>2]=0;c[a>>2]=c[a>>2]&-17;b=0}}return b|0}function RL(b,c){b=b|0;c=c|0;var d=0;d=a[c>>0]|0;do if(d<<24>>24){b=VK(b,d<<24>>24)|0;if(b){if(a[c+1>>0]|0)if(a[b+1>>0]|0){if(!(a[c+2>>0]|0)){b=SL(b,c)|0;break}if(a[b+2>>0]|0){if(!(a[c+3>>0]|0)){b=TL(b,c)|0;break}if(a[b+3>>0]|0)if(!(a[c+4>>0]|0)){b=UL(b,c)|0;break}else{b=VL(b,c)|0;break}else b=0}else b=0}else b=0}else b=0}while(0);return b|0}function SL(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;g=(d[c>>0]|0)<<8|(d[c+1>>0]|0);f=d[b>>0]|0;while(1){c=b+1|0;e=a[c>>0]|0;if(!(e<<24>>24)){b=0;break}f=e&255|f<<8&65280;if((f|0)==(g|0))break;else b=c}return b|0}function TL(b,c){b=b|0;c=c|0;var e=0,f=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8;e=b+2|0;c=a[e>>0]|0;b=(d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(c&255)<<8;c=c<<24>>24!=0;if(!((b|0)==(f|0)|c^1))do{e=e+1|0;c=a[e>>0]|0;b=(c&255|b)<<8;c=c<<24>>24!=0}while(!((b|0)==(f|0)|c^1));return (c?e+-2|0:0)|0}function UL(b,c){b=b|0;c=c|0;var e=0,f=0,g=0;f=(d[c+1>>0]|0)<<16|(d[c>>0]|0)<<24|(d[c+2>>0]|0)<<8|(d[c+3>>0]|0);c=b+3|0;g=a[c>>0]|0;e=g&255|((d[b+1>>0]|0)<<16|(d[b>>0]|0)<<24|(d[b+2>>0]|0)<<8);b=g<<24>>24!=0;if(!((e|0)==(f|0)|b^1))do{c=c+1|0;b=a[c>>0]|0;e=b&255|e<<8;b=b<<24>>24!=0}while(!((e|0)==(f|0)|b^1));return (b?c+-3|0:0)|0}function VL(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+1056|0;t=v+1024|0;u=v;c[t>>2]=0;c[t+4>>2]=0;c[t+8>>2]=0;c[t+12>>2]=0;c[t+16>>2]=0;c[t+20>>2]=0;c[t+24>>2]=0;c[t+28>>2]=0;e=a[d>>0]|0;a:do if(e<<24>>24){s=0;f=e;e=e&255;while(1){if(!(a[b+s>>0]|0)){e=0;break a}r=t+(((f&255)>>>5&255)<<2)|0;c[r>>2]=c[r>>2]|1<<(f&31);s=s+1|0;c[u+(e<<2)>>2]=s;e=a[d+s>>0]|0;if(!(e<<24>>24))break;else{f=e;e=e&255}}m=s>>>0>1;if(m){f=0;k=-1;g=1;b:while(1){h=1;e=f;while(1){f=g;c:while(1){j=1;while(1){g=a[d+(j+k)>>0]|0;i=a[d+f>>0]|0;if(g<<24>>24!=i<<24>>24)break c;if((j|0)==(h|0))break;j=j+1|0;f=j+e|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}e=h+e|0;f=e+1|0;if(f>>>0>=s>>>0){n=h;e=k;break b}}h=f-k|0;if((g&255)<=(i&255))break;g=f+1|0;if(g>>>0>=s>>>0){n=h;e=k;break b}else e=f}g=e+2|0;if(g>>>0>=s>>>0){n=1;break}else{f=e+1|0;k=e}}if(m){h=0;m=-1;i=1;while(1){f=1;g=h;while(1){h=i;d:while(1){k=1;while(1){i=a[d+(k+m)>>0]|0;j=a[d+h>>0]|0;if(i<<24>>24!=j<<24>>24)break d;if((k|0)==(f|0))break;k=k+1|0;h=k+g|0;if(h>>>0>=s>>>0){h=n;g=m;i=27;break a}}g=f+g|0;h=g+1|0;if(h>>>0>=s>>>0){h=n;g=m;i=27;break a}}f=h-m|0;if((i&255)>=(j&255))break;i=h+1|0;if(i>>>0>=s>>>0){h=n;g=m;i=27;break a}else g=h}i=g+2|0;if(i>>>0>=s>>>0){h=n;f=1;i=27;break}else{h=g+1|0;m=g}}}else{h=n;f=1;g=-1;i=27}}else{h=1;e=-1;f=1;g=-1;i=27}}else{h=1;e=-1;s=0;f=1;g=-1;i=27}while(0);e:do if((i|0)==27){q=(g+1|0)>>>0>(e+1|0)>>>0;f=q?f:h;q=q?g:e;r=q+1|0;if(!(wJ(d,d+f|0,r)|0))p=s-f|0;else{f=s-q+-1|0;p=0;f=(q>>>0>f>>>0?q:f)+1|0}k=s|63;m=s+-1|0;n=(p|0)!=0;o=s-f|0;e=b;j=0;g=b;while(1){h=e;do if((g-h|0)>>>0<s>>>0){i=MJ(g,0,k)|0;if(i)if((i-h|0)>>>0<s>>>0){e=0;break e}else break;else{i=g+k|0;break}}else i=g;while(0);g=a[e+m>>0]|0;f:do if(!(1<<(g&31)&c[t+(((g&255)>>>5&255)<<2)>>2])){h=0;g=s}else{g=s-(c[u+((g&255)<<2)>>2]|0)|0;if(g|0){h=0;g=n&(j|0)!=0&g>>>0<f>>>0?o:g;break}g=r>>>0>j>>>0?r:j;h=a[d+g>>0]|0;g:do if(!(h<<24>>24))g=r;else{while(1){if(h<<24>>24!=(a[e+g>>0]|0))break;g=g+1|0;h=a[d+g>>0]|0;if(!(h<<24>>24)){g=r;break g}}h=0;g=g-q|0;break f}while(0);while(1){if(g>>>0<=j>>>0)break e;g=g+-1|0;if((a[d+g>>0]|0)!=(a[e+g>>0]|0)){h=p;g=f;break}}}while(0);e=e+g|0;j=h;g=i}}while(0);l=v;return e|0}function WL(a,b){a=a|0;b=b|0;var d=0,e=0;d=l;l=l+16|0;e=d;c[e>>2]=a;c[e+4>>2]=b;b=aJ(Ka(33,e|0)|0)|0;l=d;return b|0}function XL(a,b){a=a|0;b=b|0;return YL(a,b,(TK(a)|0)+1|0)|0}function YL(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;e=c&255;do{if(!d){c=0;break}d=d+-1|0;c=b+d|0}while((a[c>>0]|0)!=e<<24>>24);return c|0}function ZL(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0;j=l;l=l+32|0;i=j;h=((g|0)<0)<<31>>31;do if((g&4095|0)==0&(h&-4096|0)==0){if(b>>>0>2147483646){c[(bJ()|0)>>2]=12;a=-1;break}if(e&16|0)XK();h=KN(g|0,h|0,12)|0;c[i>>2]=a;c[i+4>>2]=b;c[i+8>>2]=d;c[i+12>>2]=e;c[i+16>>2]=f;c[i+20>>2]=h;a=aJ(Ba(192,i|0)|0)|0}else{c[(bJ()|0)>>2]=22;a=-1}while(0);l=j;return a|0}function _L(a){a=a|0;return $L(a)|0}function $L(a){a=a|0;return WN(a|0)|0}function aM(a,b,c){a=a|0;b=b|0;c=c|0;bM(a,b,c)|0;return a|0}function bM(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;g=d;do if(!((g^b)&3)){f=(e|0)!=0;a:do if(f&(g&3|0)!=0)while(1){g=a[d>>0]|0;a[b>>0]=g;if(!(g<<24>>24))break a;e=e+-1|0;d=d+1|0;b=b+1|0;f=(e|0)!=0;if(!(f&(d&3|0)!=0)){h=5;break}}else h=5;while(0);if((h|0)==5)if(!f){e=0;break}if(a[d>>0]|0){b:do if(e>>>0>3){f=d;while(1){d=c[f>>2]|0;if((d&-2139062144^-2139062144)&d+-16843009|0){d=f;break b}c[b>>2]=d;e=e+-4|0;d=f+4|0;b=b+4|0;if(e>>>0>3)f=d;else break}}while(0);h=11}}else h=11;while(0);c:do if((h|0)==11)if(!e)e=0;else while(1){h=a[d>>0]|0;a[b>>0]=h;if(!(h<<24>>24))break c;e=e+-1|0;b=b+1|0;if(!e){e=0;break}else d=d+1|0}while(0);GN(b|0,0,e|0)|0;return b|0}function cM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0;g=l;l=l+32|0;f=g;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;e=a[d>>0]|0;do if(!(e<<24>>24))d=0;else{if(!(a[d+1>>0]|0)){d=b;while(1)if((a[d>>0]|0)==e<<24>>24)d=d+1|0;else break;d=d-b|0;break}do{h=f+(((e&255)>>>5&255)<<2)|0;c[h>>2]=c[h>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;a:do if(!(e<<24>>24))d=b;else{d=b;do{if(!(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)))break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}while(0);d=d-b|0}while(0);l=g;return d|0}function dM(a,c){a=a|0;c=c|0;var d=0,f=0,g=0;g=a+2|0;f=a+4|0;d=RN((e[c+2>>1]|0)<<16|(e[c>>1]|0)|0,e[c+4>>1]|0|0,(e[g>>1]|0)<<16|(e[a>>1]|0)|0,e[f>>1]|0|0)|0;c=IN(d|0,D|0,e[c+6>>1]|0|0,0)|0;d=D;b[a>>1]=c;a=KN(c|0,d|0,16)|0;b[g>>1]=a;b[f>>1]=d;D=d&65535;return c|0}function eM(a){a=a|0;var b=0;b=dM(a,58690)|0;b=HN(b|0,D|0,4)|0;a=D|1072693248;c[j>>2]=b;c[j+4>>2]=a;return +(+h[j>>3]+-1.0)}function fM(){return +(+eM(58684))}function gM(a){a=a|0;b[87006]=b[29342]|0;b[87007]=b[29343]|0;b[87008]=b[29344]|0;b[29342]=b[a>>1]|0;b[29343]=b[a+2>>1]|0;b[29344]=b[a+4>>1]|0;return 174012}function hM(a){a=a|0;var c=0,d=0;c=l;l=l+16|0;d=c;b[d>>1]=13070;b[d+2>>1]=a;b[d+4>>1]=a>>>16;gM(d)|0;l=c;return}function iM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;v=l;l=l+48|0;i=v;t=jM()|0;a:do if(!t)b=12;else{u=kM(0,0)|0;if(!u){lM(t);b=12;break}e=i+8|0;c[e>>2]=0;c[e+4>>2]=0;c[e+8>>2]=0;c[e+12>>2]=0;c[e+16>>2]=0;c[i>>2]=u;c[i+4>>2]=t;c[i+16>>2]=b;c[i+32>>2]=d;e=i+28|0;c[e>>2]=-1;b=mM(i)|0;b:do if(!b){h=i+20|0;f=c[h>>2]|0;c[a>>2]=f+-1;j=c[i+8>>2]|0;b=c[e>>2]|0;if((b|0)<(f|0)){g=yN(1,68)|0;if(g){r=b>>>31^1;c[g+60>>2]=r;c[g+28>>2]=f;if((d&8|0)==0|(r|0)!=0){b=nM(0,t,j,g)|0;if(b|0){h=0;i=0;f=0;e=0;break}f=c[g+40>>2]|0;if((f|0)>0){b=(f<<2)+4|0;e=wN(b)|0;if(!e){h=0;i=0;b=12;f=0;e=0;break}c[g+32>>2]=e;GN(e|0,-1,b|0)|0}else e=0;r=yN(f<<1|1,4)|0;c[g+36>>2]=r;if(!r){h=0;i=0;b=12;f=0;e=0;break}b=yN(c[h>>2]|0,12)|0;if(!b){h=0;i=0;b=12;f=0;e=0;break}c[g+16>>2]=b;b=nM(u,t,j,g)|0;if(!b)b=e;else{h=0;i=0;f=0;e=0;break}}else b=0;r=i+24|0;b=oM(u,t,j,r,b)|0;if(!b){b=c[r>>2]|0;c[r>>2]=b+1;b=pM(u,0,0,b)|0;if((b|0)!=0?(s=qM(u,j,b)|0,(s|0)!=0):0){b=rM(u,t,s)|0;if(!b){e=c[r>>2]|0;b=e<<2;p=wN(b)|0;if(p){q=wN(b)|0;if(q){if((e|0)>0)GN(p|0,0,e<<2|0)|0;sM(s,0,p,0)|0;f=c[r>>2]|0;if((f|0)>0){b=0;e=0;do{c[q+(e<<2)>>2]=b;o=p+(e<<2)|0;b=b+1+(c[o>>2]|0)|0;c[o>>2]=0;e=e+1|0}while((e|0)<(f|0));m=b}else m=0;n=yN(m+1|0,32)|0;if(n){c[g>>2]=n;o=g+4|0;c[o>>2]=m;b=sM(s,n,p,q)|0;if(!b){c[g+20>>2]=0;f=s+24|0;b=c[f>>2]|0;e=0;while(1){e=e+1|0;if((c[b>>2]|0)<=-1)break;else b=b+32|0}k=yN(e,32)|0;if(!k){h=p;i=q;b=12;f=p;e=q}else{c[g+8>>2]=k;b=c[f>>2]|0;e=c[b>>2]|0;if((e|0)>-1){j=b;b=0;do{c[k+(b<<5)+8>>2]=n+(c[q+(e<<2)>>2]<<5);c[k+(b<<5)+12>>2]=e;h=k+(b<<5)+16|0;c[h>>2]=0;i=j+12|0;f=c[i>>2]|0;if(f|0){e=0;do{w=e;e=e+1|0}while((c[f+(w<<2)>>2]|0)>-1);e=e<<2;f=wN(e)|0;c[h>>2]=f;if(!f){h=p;i=q;b=12;f=p;e=q;break b}MN(f|0,c[i>>2]|0,e|0)|0}c[k+(b<<5)+20>>2]=c[j+16>>2];b=b+1|0;j=j+32|0;e=c[j>>2]|0}while((e|0)>-1)}else b=0;c[k+(b<<5)+8>>2]=0;c[o>>2]=m;c[g+12>>2]=n+(c[q+(c[c[s+28>>2]>>2]<<2)>>2]<<5);c[g+52>>2]=c[r>>2];c[g+56>>2]=d;tM(u);lM(t);xN(p);xN(q);c[a+4>>2]=g;b=0;break a}}else{h=p;i=q;f=p;e=q}}else{h=p;i=q;b=12;f=p;e=q}}else{h=p;i=q;b=12;f=p;e=0}}else{h=p;i=0;b=12;f=0;e=0}}else{h=0;i=0;f=0;e=0}}else{h=0;i=0;b=12;f=0;e=0}}else{h=0;i=0;f=0;e=0}}else{h=0;i=0;b=12;f=0;e=0}}else{g=0;h=0;i=0;b=6;f=0;e=0}}else{g=0;h=0;i=0;f=0;e=0}while(0);tM(u);lM(t);if(h|0)xN(f);if(i|0)xN(e);c[a+4>>2]=g;uM(a)}while(0);l=v;return b|0}function jM(){var a=0,b=0;a=wN(20)|0;do if(a){b=wN(2048)|0;c[a+16>>2]=b;if(!b){xN(a);a=0;break}else{c[a>>2]=512;c[a+4>>2]=1024e3;c[a+8>>2]=128;c[a+12>>2]=0;break}}while(0);return a|0}function kM(a,b){a=a|0;b=b|0;if(!a)b=yN(1,24)|0;else{c[b>>2]=0;c[b+4>>2]=0;c[b+8>>2]=0;c[b+12>>2]=0;c[b+16>>2]=0;c[b+20>>2]=0}return b|0}function lM(a){a=a|0;xN(c[a+16>>2]|0);xN(a);return}function mM(b){b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;v=l;l=l+16|0;q=v+4|0;r=v;s=c[b+32>>2]&1;t=b+16|0;e=c[t>>2]|0;u=c[b+4>>2]|0;d=yM(u,0)|0;a:do if(!d){n=(s|0)!=0;o=b+8|0;p=b+12|0;m=n^1;d=0;k=1;b:while(1){g=0;h=d;f=0;c:while(1){d=a[e>>0]|0;if(n){if(d<<24>>24==40)break;if((h|0)!=0&d<<24>>24==41)j=13;else j=14}else if(d<<24>>24==92)switch(a[e+1>>0]|0){case 40:break c;case 41:{j=13;break}default:j=14}else j=14;if((j|0)==13){j=0;i=pM(c[b>>2]|0,-1,-1,-1)|0;c[o>>2]=i;if(!i){d=12;break a}else i=f}else if((j|0)==14){j=0;d=OM(b,e)|0;if(d|0)break a;i=f;e=c[p>>2]|0}while(1){d:while(1){d=a[e>>0]|0;switch(d<<24>>24){case 42:case 92:break;default:{if(!n)break d;switch(d<<24>>24){case 123:case 63:case 43:break;default:break d}}}d=d<<24>>24==92;if(n&d)break;f=e+1|0;if(d)switch(a[f>>0]|0){case 123:case 63:case 43:break;default:break d}e=d?f:e;if((!n?(e|0)==((c[t>>2]|0)+1|0):0)?(a[e+-1>>0]|0)==94:0)break;if((a[e>>0]|0)==123){e=PM(e+1|0,s,q,r)|0;if(!e){j=28;break b}d=c[r>>2]|0;f=c[b>>2]|0;if(!d)d=pM(f,-1,-1,-1)|0;else j=36}else{c[q>>2]=0;c[r>>2]=-1;d=a[e>>0]|0;if(d<<24>>24==43){c[q>>2]=1;d=a[e>>0]|0}if(d<<24>>24==63){c[r>>2]=1;d=1}else d=-1;e=e+1|0;f=c[b>>2]|0;j=36}if((j|0)==36){j=0;d=JM(f,c[o>>2]|0,c[q>>2]|0,d,0)|0}c[o>>2]=d;if(!d){d=12;break a}}g=qM(c[b>>2]|0,g,c[o>>2]|0)|0;f=a[e>>0]|0;do if(!n)if(f<<24>>24==92)if((a[e+1>>0]|0)==41){d=KM(c[b>>2]|0,i,g)|0;j=49}else{d=92;j=44}else{d=f;j=46}else{if(f<<24>>24!=124)if((h|0)!=0&f<<24>>24==41)f=41;else{d=f;j=44;break}else f=124;d=KM(c[b>>2]|0,i,g)|0;j=50}while(0);if((j|0)==44)if(d<<24>>24==92&m)if((a[e+1>>0]|0)==124)j=48;else{f=i;continue c}else j=46;if((j|0)==46)if(!(d<<24>>24))j=48;else{f=i;continue c}if((j|0)==48){d=KM(c[b>>2]|0,i,g)|0;if(f<<24>>24==92)j=49;else j=50}if((j|0)==49){j=0;if((a[e+1>>0]|0)==124){f=2;break}if(!h){d=8;break a}e=e+2|0;f=92}else if((j|0)==50){j=0;if(f<<24>>24==124){f=1;break}e=f<<24>>24==41?e+1|0:e}d=QM(b,d,zM(u)|0)|0;if(d|0)break a;d=f<<24>>24==0;f=(h|0)<1;if(f&d){j=56;break b}if(f|d){d=8;break a}g=AM(u)|0;h=h+-1|0;i=AM(u)|0}g=0;e=e+f|0;f=d}d=xM(u,f)|0;if(d|0)break a;d=xM(u,g)|0;if(d|0)break a;d=yM(u,k)|0;if(d|0)break a;d=h+1|0;k=k+1|0;e=n?e+1|0:e+2|0}if((j|0)==28){d=10;break}else if((j|0)==56){c[b+20>>2]=k;d=0;break}}while(0);l=v;return d|0}function nM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=wM(d)|0;y=(b|0)==0|(f|0)==0;if(!y){c[f+48>>2]=0;c[c[f+36>>2]>>2]=-1}h=c[f+28>>2]|0;z=wN((h<<3)+8|0)|0;do if(!z)g=12;else{c[z>>2]=-1;A=wN((h<<2)+4|0)|0;if(!A){xN(z);g=12;break}c[A>>2]=-1;g=0;while(1)if(g>>>0>h>>>0)break;else g=g+1|0;xM(d,e)|0;g=yM(d,0)|0;a:do if((g|0)!=0|(wM(d)|0)<=(x|0)){e=z;n=0;h=0;m=0;l=-1}else{u=f+32|0;v=f+36|0;w=f+16|0;e=z;n=0;h=0;m=0;t=1;l=-1;s=0;while(1){b:do switch(zM(d)|0){case 6:{i=zM(d)|0;g=0;do{j=e+(g<<2)|0;g=g+1|0}while((c[j>>2]|0)>-1);c[j>>2]=i<<1|1;c[e+(g<<2)>>2]=-1;g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;c[A+(g+-1<<2)>>2]=-1;g=0;j=t;i=s;break}case 0:{q=AM(d)|0;r=q+12|0;j=c[r>>2]|0;if((j|0)>-1){g=0;do{i=e+(g<<2)|0;g=g+1|0}while((c[i>>2]|0)>-1);c[i>>2]=j<<1;c[e+(g<<2)>>2]=-1;if(!y){g=0;while(1)if((c[A+(g<<2)>>2]|0)>-1)g=g+1|0;else break;i=(c[w>>2]|0)+(j*12|0)+8|0;c[i>>2]=0;if((g|0)>0){g=wN((g<<2)+4|0)|0;if(!g){g=12;j=t;i=s;break b}c[i>>2]=g;i=c[A>>2]|0;if((i|0)>-1){k=0;j=g;do{c[j>>2]=i;k=k+1|0;i=c[A+(k<<2)>>2]|0;j=g+(k<<2)|0}while((i|0)>-1);g=j}c[g>>2]=-1}}g=yM(d,c[r>>2]|0)|0;if(g|0){j=t;i=s;break b}g=yM(d,6)|0;if(g|0){j=t;i=s;break b}}c:do switch(c[q>>2]|0){case 0:{p=c[c[q+4>>2]>>2]|0;if((p|0)>-1|(p|0)==-4?(c[e>>2]|0)>-1:0){if(y){c[q+20>>2]=1;g=0}else{g=LM(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}MM(e,f,m)}c[e>>2]=-1;p=t+1|0;o=s;n=n+1|0;m=t}else{p=t;g=0;o=s}break}case 1:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;g=xM(d,q)|0;if(!g){g=yM(d,5)|0;if(!g){g=xM(d,j)|0;if(!g){g=yM(d,0)|0;if(!g){i=k+20|0;g=yM(d,(c[i>>2]|0)+t|0)|0;if(!g){if((c[i>>2]|0)>0){i=(c[j+20>>2]|0)>0;g=i?t:-1;i=(i&1)+t|0}else{g=-1;i=t}g=yM(d,g)|0;if(!g){g=yM(d,4)|0;if(!g){g=xM(d,k)|0;if(!g){p=i;g=yM(d,0)|0;o=s}else{p=i;o=s}}else{p=i;o=s}}else{p=i;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 2:{i=c[q+4>>2]|0;if(y){if((c[e>>2]|0)>-1)g=1;else g=(a[i+12>>0]&1)!=0;g=yM(d,g&1)|0;if(g|0){p=t;o=s;break c}}else{g=yM(d,m)|0;if(g|0){p=t;o=s;break c}g=yM(d,a[i+12>>0]&1)|0;if(g|0){p=t;o=s;break c}}g=xM(d,q)|0;if(!g){g=yM(d,1)|0;if(!g){g=xM(d,c[i>>2]|0)|0;if(!g){g=yM(d,0)|0;if(!g){if((c[e>>2]|0)<=-1?(a[i+12>>0]&1)==0:0){p=t;g=0;o=0;break c}if(y)g=0;else{g=LM(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=(a[i+12>>0]&1)==0?s:1;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}MM(e,f,m)}c[e>>2]=-1;p=t+1|0;o=0;n=n+1|0;m=t}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}case 3:{j=c[q+4>>2]|0;k=c[j>>2]|0;j=c[j+4>>2]|0;i=(c[e>>2]|0)>-1;p=t+1|0;g=yM(d,i?p:t)|0;if(!g){g=yM(d,i?t:m)|0;if(!g){g=xM(d,e)|0;if(!g){g=yM(d,(c[e>>2]|0)>>>31^1)|0;if(!g){g=xM(d,q)|0;if(!g){g=xM(d,j)|0;if(!g){g=xM(d,k)|0;if(!g){g=yM(d,3)|0;if(!g){g=xM(d,j)|0;if(!g){g=yM(d,0)|0;if(!g){g=yM(d,2)|0;if(g|0){p=t;o=s;break c}g=xM(d,k)|0;if(g|0){p=t;o=s;break c}g=yM(d,0)|0;if(g|0){p=t;o=s;break c}if((c[e>>2]|0)>-1){if(y)g=0;else{g=LM(b,q,m)|0;c[(c[u>>2]|0)+(m<<2)>>2]=s;if((l|0)>-1){j=c[v>>2]|0;i=0;while(1){k=j+(i<<2)|0;o=i+1|0;if((c[k>>2]|0)>-1)i=o;else break}c[k>>2]=m;c[j+(o<<2)>>2]=l;c[j+(i+2<<2)>>2]=-1;h=h+1|0;l=-1}MM(e,f,m)}c[e>>2]=-1;n=n+1|0;m=t;i=p}else{g=0;i=t}t=(c[q+16>>2]|0)>0;p=t?i+2|0:i;o=s;m=t?i+1|0:m}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}}else{p=t;o=s}break}default:{p=t;g=0;o=s}}while(0);j=c[r>>2]|0;if((j|0)>-1){i=0;do{k=A+(i<<2)|0;i=i+1|0}while((c[k>>2]|0)>-1);c[k>>2]=j;c[A+(i<<2)>>2]=-1;j=p;i=o}else{j=p;i=o}break}case 1:{g=AM(d)|0;if(y){i=c[(c[c[g+4>>2]>>2]|0)+20>>2]|0;c[g+20>>2]=(zM(d)|0)+i;i=0;l=-1}else{q=zM(d)|0;r=zM(d)|0;i=q;l=(q|0)==0?l:r}g=0;j=t;i=y?s:(i|0)==0&1;break}case 4:{i=zM(d)|0;j=zM(d)|0;g=0;m=(i|0)>-1?i:m;i=s;break}case 5:{g=AM(d)|0;if(y){j=c[g+4>>2]|0;c[g+20>>2]=(c[(c[j+4>>2]|0)+20>>2]|0)+(c[(c[j>>2]|0)+20>>2]|0);g=0;j=t;i=s}else{g=0;j=t;i=s}break}case 2:{while(1)if((c[e>>2]|0)>-1)e=e+4|0;else{g=0;j=t;i=s;break}break}case 3:{j=AM(d)|0;o=AM(d)|0;g=AM(d)|0;e=zM(d)|0;if(y){r=c[g+4>>2]|0;s=g+16|0;c[g+20>>2]=(c[(c[r>>2]|0)+20>>2]|0)+e+(c[(c[r+4>>2]|0)+20>>2]|0)+((c[s>>2]|0)>0?2:0);g=s}else g=g+16|0;e=AM(d)|0;i=zM(d)|0;k=zM(d)|0;if((c[g>>2]|0)>0){if(y)g=0;else{g=NM(b,j,i)|0;c[(c[u>>2]|0)+(i<<2)>>2]=1;if(!g)g=NM(b,o,k)|0;c[(c[u>>2]|0)+(k<<2)>>2]=1}n=n+2|0;j=t;i=1}else{g=0;j=t;i=1}break}default:{g=0;j=t;i=s}}while(0);if((g|0)!=0|(wM(d)|0)<=(x|0))break a;else{t=j;s=i}}}while(0);if(!y?(MM(e,f,m),(l|0)>-1):0){i=c[f+36>>2]|0;e=0;while(1){j=i+(e<<2)|0;k=e+1|0;if((c[j>>2]|0)>-1)e=k;else break}c[j>>2]=m;c[i+(k<<2)>>2]=l;c[i+(e+2<<2)>>2]=-1;h=h+1|0}c[f+48>>2]=n;c[f+40>>2]=n;c[f+44>>2]=h;xN(z);xN(A)}while(0);return g|0}function oM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=l;l=l+16|0;t=y+12|0;w=y+8|0;x=y+4|0;u=y;v=wM(b)|0;c[t>>2]=0;c[w>>2]=0;d=xM(b,d)|0;a:do if(!d){d=yM(b,0)|0;if(!d){b:do if((wM(b)|0)>(v|0)){g=0;i=0;j=0;c:while(1){q=zM(b)|0;r=AM(b)|0;d:do switch(q|0){case 0:{switch(c[r>>2]|0){case 0:{d=c[r+4>>2]|0;r=c[d>>2]|0;if(!((r|0)>-1|(r|0)==-4)){d=j;break d}r=d+8|0;d=(c[r>>2]|0)+j|0;c[r>>2]=d;if((d|0)<=(c[w>>2]|0)){d=j;break d}c[w>>2]=d;d=j;break d}case 3:{h=c[r+4>>2]|0;d=xM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=yM(b,0)|0;if(d|0)break b;d=xM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 1:{h=c[r+4>>2]|0;d=xM(b,c[h+4>>2]|0)|0;if(d|0)break b;d=yM(b,0)|0;if(d|0)break b;d=xM(b,c[h>>2]|0)|0;if(d|0)break b;break}case 2:{h=c[r+4>>2]|0;d=yM(b,j)|0;if(d|0)break b;d=xM(b,r)|0;if(d|0)break b;d=yM(b,1)|0;if(d|0)break b;d=xM(b,c[h>>2]|0)|0;if(d|0)break b;d=yM(b,0)|0;if(d|0)break b;if((c[h+4>>2]|0)<=1?(c[h+8>>2]|0)<=1:0)d=j;else{c[t>>2]=0;d=0}i=i+1|0;break d}default:{d=j;break d}}d=yM(b,0)|0;if(!d)d=j;else break b;break}case 1:{p=r+4|0;o=c[p>>2]|0;q=zM(b)|0;c[t>>2]=q;n=o+4|0;j=c[n>>2]|0;if((j|0)<=1)if((c[o+8>>2]|0)>1){c[x>>2]=0;if((j|0)>0)s=30;else{d=q;h=0;s=37}}else d=q;else{c[x>>2]=0;s=30}e:do if((s|0)==30){d=IM(a,b,c[o>>2]|0,(j|0)>1?1:2,t,f,u,w)|0;if(!d){h=0;k=q;m=1}else{s=34;break c}while(1){d=c[u>>2]|0;if(!h)h=d;else h=qM(a,h,d)|0;if(!h){d=12;s=34;break c}j=c[n>>2]|0;if((m|0)>=(j|0)){d=k;s=37;break e}k=c[t>>2]|0;m=m+1|0;d=IM(a,b,c[o>>2]|0,(m|0)<(j|0)?1:2,t,f,u,w)|0;if(d|0){s=34;break c}}}while(0);if((s|0)==37){s=0;n=o+8|0;k=c[n>>2]|0;if((k|0)==-1){k=c[t>>2]|0;d=IM(a,b,c[o>>2]|0,0,t,0,x,w)|0;if(d|0)break c;j=JM(a,c[x>>2]|0,0,-1,0)|0;c[x>>2]=j;if(!j){d=12;break c}else d=k}else if((j|0)<(k|0)){k=j;j=0;do{m=c[t>>2]|0;d=IM(a,b,c[o>>2]|0,0,t,0,u,w)|0;if(d|0){g=j;s=48;break c}d=c[u>>2]|0;if(!j)j=d;else j=qM(a,d,j)|0;if(!j){d=12;g=0;s=48;break c}d=pM(a,-1,-1,-1)|0;if(!d){d=12;g=j;s=48;break c}j=KM(a,d,j)|0;if(!j){d=12;g=0;s=48;break c}k=k+1|0}while((k|0)<(c[n>>2]|0));c[x>>2]=j;d=m}else j=0;c[t>>2]=d;if(h){if(j){h=qM(a,h,j)|0;s=54}}else{h=j;s=54}if((s|0)==54){s=0;if(!h){d=12;break c}}c[p>>2]=c[h+4>>2];c[r>>2]=c[h>>2]}i=i+-1|0;h=d-q+g|0;if(!i){c[t>>2]=h;g=h;i=0;d=h}else g=h;break}default:d=j}while(0);if((wM(b)|0)>(v|0))j=d;else{d=0;break b}}if((s|0)!=34)if((s|0)==48)c[x>>2]=g;break a}else{d=0;g=0}while(0);x=(c[e>>2]|0)+g|0;w=c[w>>2]|0;c[e>>2]=(w|0)>(x|0)?w:x}}while(0);l=y;return d|0}function pM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;f=FM(a,0,0,1,20)|0;a=HM(a,0,f)|0;if(!a)a=0;else{c[f>>2]=b;c[f+4>>2]=d;c[f+8>>2]=e}return a|0}function qM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=FM(a,0,0,1,8)|0;a=HM(a,1,e)|0;if(!a)d=0;else{c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}}return d|0}function rM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0;o=l;l=l+16|0;j=o+4|0;k=o;m=wM(b)|0;d=xM(b,d)|0;a:do if(!d){d=yM(b,0)|0;if(!d)if((wM(b)|0)>(m|0)){b:while(1){h=zM(b)|0;i=AM(b)|0;c:do switch(h|0){case 0:switch(c[i>>2]|0){case 0:{g=c[i+4>>2]|0;f=c[g>>2]|0;if((f|0)==-4){c[i+8>>2]=0;d=g+8|0;h=BM(a,c[d>>2]|0,0,1114111,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=BM(a,c[d>>2]|0,0,1114111,0,0,c[g+4>>2]|0)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}d=i+8|0;if((f|0)<0){c[d>>2]=1;h=CM(a)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=CM(a)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}else{c[d>>2]=0;d=g+8|0;e=g+4|0;h=BM(a,c[d>>2]|0,f,c[e>>2]|0,0,0,-1)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=BM(a,c[d>>2]|0,c[g>>2]|0,c[e>>2]|0,c[g+12>>2]|0,c[g+16>>2]|0,-1)|0;c[i+28>>2]=h;if(!h){d=12;break a}else break c}}case 3:{d=xM(b,i)|0;if(d|0)break a;d=yM(b,1)|0;if(d|0)break a;e=i+4|0;d=xM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=yM(b,0)|0;if(d|0)break a;d=xM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=yM(b,0)|0;if(!d)break c;else break a}case 1:{d=xM(b,i)|0;if(d|0)break a;d=yM(b,2)|0;if(d|0)break a;e=i+4|0;d=xM(b,c[(c[e>>2]|0)+4>>2]|0)|0;if(d|0)break a;d=yM(b,0)|0;if(d|0)break a;d=xM(b,c[c[e>>2]>>2]|0)|0;if(d|0)break a;d=yM(b,0)|0;if(!d)break c;else break a}case 2:{d=xM(b,i)|0;if(d|0)break a;d=yM(b,3)|0;if(d|0)break a;d=xM(b,c[c[i+4>>2]>>2]|0)|0;if(d|0)break a;d=yM(b,0)|0;if(!d)break c;else break a}default:break c}case 1:{d=c[i+4>>2]|0;e=c[d>>2]|0;f=d+4|0;g=c[f>>2]|0;if(!(c[e+8>>2]|0))h=(c[g+8>>2]|0)!=0;else h=1;c[i+8>>2]=h&1;h=DM(a,c[e+24>>2]|0,c[g+24>>2]|0,0,0)|0;c[i+24>>2]=h;if(!h){d=12;break a}h=DM(a,c[(c[d>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,0,0)|0;c[i+28>>2]=h;if(!h){d=12;break a}break}case 3:{h=c[i+4>>2]|0;d=c[h>>2]|0;if(!(c[h+4>>2]|0))e=1;else e=(c[d+8>>2]|0)!=0&1;c[i+8>>2]=e;c[i+24>>2]=c[d+24>>2];c[i+28>>2]=c[d+28>>2];break}case 2:{g=c[i+4>>2]|0;d=c[g>>2]|0;e=d+8|0;if(!(c[e>>2]|0))f=0;else f=(c[(c[g+4>>2]|0)+8>>2]|0)!=0;c[i+8>>2]=f&1;if(c[e>>2]|0){d=EM(b,d,0,0,j)|0;if(d|0)break b;e=wN((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=EM(b,c[g>>2]|0,e,k,0)|0;if(d|0){n=45;break b}d=g+4|0;h=i+24|0;c[h>>2]=DM(a,c[(c[d>>2]|0)+24>>2]|0,c[(c[g>>2]|0)+24>>2]|0,e,c[k>>2]|0)|0;xN(e);if(!(c[h>>2]|0)){d=12;break b}else f=d}else{c[i+24>>2]=c[d+24>>2];f=g+4|0}d=c[f>>2]|0;if(c[d+8>>2]|0){d=EM(b,d,0,0,j)|0;if(d|0)break b;e=wN((c[j>>2]<<2)+4|0)|0;if(!e){d=12;break b}c[e>>2]=-1;c[k>>2]=0;d=EM(b,c[f>>2]|0,e,k,0)|0;if(d|0){n=52;break b}i=i+28|0;c[i>>2]=DM(a,c[(c[g>>2]|0)+28>>2]|0,c[(c[f>>2]|0)+28>>2]|0,e,c[k>>2]|0)|0;xN(e);if(!(c[i>>2]|0)){d=12;break b}}else c[i+28>>2]=c[d+28>>2];break}default:{}}while(0);if((wM(b)|0)<=(m|0)){d=0;break a}}if((n|0)==45)xN(e);else if((n|0)==52)xN(e)}else d=0}while(0);l=o;return d|0}function sM(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:while(1){switch(c[a>>2]|0){case 2:{a=c[a+4>>2]|0;if((c[a+8>>2]|0)==-1?(h=c[a>>2]|0,h=vM(c[h+28>>2]|0,c[h+24>>2]|0,b,d,e)|0,(h|0)!=0):0){a=h;break a}break}case 3:{f=c[a+4>>2]|0;a=sM(c[f>>2]|0,b,d,e)|0;if(a|0)break a;a=f+4|0;break}case 1:{f=c[a+4>>2]|0;g=f+4|0;a=vM(c[(c[f>>2]|0)+28>>2]|0,c[(c[g>>2]|0)+24>>2]|0,b,d,e)|0;if(a|0)break a;a=sM(c[f>>2]|0,b,d,e)|0;if(!a)a=g;else break a;break}default:{a=0;break a}}a=c[a>>2]|0}return a|0}function tM(a){a=a|0;var b=0,d=0;b=c[a>>2]|0;if(b|0)do{xN(c[b>>2]|0);d=b;b=c[b+4>>2]|0;xN(d)}while((b|0)!=0);xN(a);return}function uM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0;h=c[a+4>>2]|0;if(h|0){e=h+4|0;a=c[h>>2]|0;if(c[e>>2]|0){d=0;do{if(c[a+(d<<5)+8>>2]|0){b=c[a+(d<<5)+16>>2]|0;if(b){xN(b);a=c[h>>2]|0}b=c[a+(d<<5)+28>>2]|0;if(b){xN(b);a=c[h>>2]|0}}d=d+1|0}while(d>>>0<(c[e>>2]|0)>>>0)}if(a|0)xN(a);d=h+8|0;a=c[d>>2]|0;if(a|0){if(c[a+8>>2]|0){while(1){b=c[a+16>>2]|0;if(b|0)xN(b);if(!(c[a+40>>2]|0))break;else a=a+32|0}a=c[d>>2]|0}xN(a)}f=h+16|0;a=c[f>>2]|0;if(a|0){g=h+28|0;b=c[g>>2]|0;if(b){e=0;do{d=c[a+(e*12|0)+8>>2]|0;if(d){xN(d);b=c[g>>2]|0;a=c[f>>2]|0}e=e+1|0}while(e>>>0<b>>>0)}xN(a)}a=c[h+32>>2]|0;if(a|0)xN(a);a=c[h+20>>2]|0;if(a|0)xN(a);a=c[h+36>>2]|0;if(a|0)xN(a);xN(h)}return}function vM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=c[a>>2]|0;h=(g|0)>-1;a:do if(!d)if(h){h=b+32|0;do{if((c[b>>2]|0)>-1?(y=e+(g<<2)|0,c[y>>2]=(c[y>>2]|0)+1,(c[h>>2]|0)>-1):0){g=h;do{y=e+(c[a>>2]<<2)|0;c[y>>2]=(c[y>>2]|0)+1;g=g+32|0}while((c[g>>2]|0)>-1)}a=a+32|0;g=c[a>>2]|0}while((g|0)>-1);g=0}else g=0;else if(h)while(1){h=c[b>>2]|0;b:do if((h|0)>-1){p=a+4|0;q=a+8|0;r=a+16|0;s=a+20|0;t=a+24|0;u=a+28|0;v=a+12|0;e=-1;g=b;while(1){o=h;while(1){if((o|0)!=(e|0))break;g=g+32|0;h=c[g>>2]|0;if((h|0)>-1)o=h;else break b}n=d+(c[f+(c[a>>2]<<2)>>2]<<5)|0;while(1){h=n+8|0;if(!(c[h>>2]|0))break;else n=n+32|0}c[n+40>>2]=0;c[n>>2]=c[p>>2];c[n+4>>2]=c[q>>2];c[h>>2]=d+(c[f+(o<<2)>>2]<<5);c[n+12>>2]=o;h=c[s>>2]|0;m=c[t>>2]|0;e=(m|0)!=0;i=c[g+16>>2]|c[r>>2]|(h|0?4:0)|(e?8:0);j=n+20|0;c[j>>2]=i;k=c[u>>2]|0;l=n+24|0;if((k|0)>-1){c[l>>2]=k;c[j>>2]=i|256}else c[l>>2]=h;if(e){h=0;do{l=h;h=h+1|0}while((c[m+(l<<2)>>2]|0)!=0);h=wN(h<<2)|0;c[n+28>>2]=h;if(!h){g=12;break a}k=c[t>>2]|0;e=c[k>>2]|0;if(e){j=0;i=h;do{c[i>>2]=e;j=j+1|0;e=c[k+(j<<2)>>2]|0;i=h+(j<<2)|0}while((e|0)!=0);h=i}c[h>>2]=0}else c[n+28>>2]=0;e=c[v>>2]|0;if(!e)h=0;else{h=0;while(1)if((c[e+(h<<2)>>2]|0)>-1)h=h+1|0;else break}k=g+12|0;i=c[k>>2]|0;if(!i)e=0;else{e=0;while(1)if((c[i+(e<<2)>>2]|0)>-1)e=e+1|0;else break}j=n+16|0;i=c[j>>2]|0;if(i|0)xN(i);c[j>>2]=0;h=e+h|0;if((h|0)>0){n=wN((h<<2)+4|0)|0;c[j>>2]=n;if(!n){g=12;break a}i=c[v>>2]|0;if((i|0)!=0?(w=c[i>>2]|0,(w|0)>-1):0){h=0;e=w;do{c[n+(h<<2)>>2]=e;h=h+1|0;e=c[i+(h<<2)>>2]|0}while((e|0)>-1);m=h}else m=0;j=c[k>>2]|0;if((j|0)!=0?(x=c[j>>2]|0,(x|0)>-1):0){k=(m|0)>0;h=m;i=0;l=x;do{c:do if(k){e=0;while(1){if((c[n+(e<<2)>>2]|0)==(l|0))break c;e=e+1|0;if((e|0)>=(m|0)){y=40;break}}}else y=40;while(0);if((y|0)==40){y=0;c[n+(h<<2)>>2]=l;h=h+1|0}i=i+1|0;l=c[j+(i<<2)>>2]|0}while((l|0)>-1)}else h=m;c[n+(h<<2)>>2]=-1}g=g+32|0;h=c[g>>2]|0;if((h|0)<=-1)break;else e=o}}while(0);a=a+32|0;if((c[a>>2]|0)<=-1){g=0;break}}else g=0;while(0);return g|0}function wM(a){a=a|0;return c[a+12>>2]|0}function xM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=GM(a,e)|0;l=d;return b|0}function yM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0;d=l;l=l+16|0;e=d+4|0;f=d;c[f>>2]=b;c[e>>2]=c[f>>2];b=GM(a,e)|0;l=d;return b|0}function zM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function AM(a){a=a|0;var b=0,d=0;b=c[a+16>>2]|0;d=a+12|0;a=(c[d>>2]|0)+-1|0;c[d>>2]=a;return c[b+(a<<2)>>2]|0}function BM(a,b,d,e,f,g,h){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;a=FM(a,0,0,1,64)|0;if(!a)a=0;else{c[a>>2]=b;c[a+4>>2]=d;c[a+8>>2]=e;c[a+20>>2]=f;c[a+24>>2]=g;c[a+28>>2]=h;c[a+32>>2]=-1;c[a+36>>2]=-1;c[a+40>>2]=-1}return a|0}function CM(a){a=a|0;a=FM(a,0,0,1,32)|0;if(!a)a=0;else{c[a>>2]=-1;c[a+4>>2]=-1;c[a+8>>2]=-1}return a|0}function DM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(e|0)==0;if(o)n=0;else{g=0;while(1)if((c[e+(g<<2)>>2]|0)>-1)g=g+1|0;else{n=g;break}}h=0;while(1)if((c[b+(h<<5)>>2]|0)>-1)h=h+1|0;else{g=0;break}while(1)if((c[d+(g<<5)>>2]|0)>-1)g=g+1|0;else break;g=FM(a,0,0,1,(g+h<<5)+32|0)|0;a:do if(!g)g=0;else{h=c[b>>2]|0;if((h|0)>-1){m=(n|0)>0;i=0;while(1){c[g+(i<<5)>>2]=h;c[g+(i<<5)+4>>2]=c[b+(i<<5)+4>>2];c[g+(i<<5)+8>>2]=c[b+(i<<5)+8>>2];c[g+(i<<5)+16>>2]=c[b+(i<<5)+16>>2]|f;c[g+(i<<5)+20>>2]=c[b+(i<<5)+20>>2];c[g+(i<<5)+24>>2]=c[b+(i<<5)+24>>2];c[g+(i<<5)+28>>2]=c[b+(i<<5)+28>>2];l=b+(i<<5)+12|0;k=c[l>>2]|0;h=(k|0)==0;if(o&h)h=0;else{if(h)j=0;else{j=0;while(1)if((c[k+(j<<2)>>2]|0)>-1)j=j+1|0;else break}h=FM(a,0,0,0,(j+n<<2)+4|0)|0;if(!h){g=0;break a}if((j|0)>0){l=c[l>>2]|0;k=0;do{c[h+(k<<2)>>2]=c[l+(k<<2)>>2];k=k+1|0}while((k|0)!=(j|0))}else j=0;if(m){l=0;k=j;while(1){c[h+(k<<2)>>2]=c[e+(l<<2)>>2];k=l+1|0;if((k|0)==(n|0))break;else{l=k;k=k+j|0}}j=n+j|0}c[h+(j<<2)>>2]=-1}c[g+(i<<5)+12>>2]=h;i=i+1|0;h=c[b+(i<<5)>>2]|0;if((h|0)<=-1){n=i;break}}}else n=0;i=c[d>>2]|0;h=g+(n<<5)|0;if((i|0)>-1){m=0;l=n;do{c[h>>2]=i;c[g+(l<<5)+4>>2]=c[d+(m<<5)+4>>2];c[g+(l<<5)+8>>2]=c[d+(m<<5)+8>>2];c[g+(l<<5)+16>>2]=c[d+(m<<5)+16>>2];c[g+(l<<5)+20>>2]=c[d+(m<<5)+20>>2];c[g+(l<<5)+24>>2]=c[d+(m<<5)+24>>2];c[g+(l<<5)+28>>2]=c[d+(m<<5)+28>>2];k=d+(m<<5)+12|0;h=c[k>>2]|0;if(!h)h=0;else{i=0;while(1){j=i+1|0;if((c[h+(i<<2)>>2]|0)>-1)i=j;else break}h=FM(a,0,0,0,j<<2)|0;if(!h){g=0;break a}if((i|0)>0){k=c[k>>2]|0;j=0;do{c[h+(j<<2)>>2]=c[k+(j<<2)>>2];j=j+1|0}while((j|0)!=(i|0))}else i=0;c[h+(i<<2)>>2]=-1}c[g+(l<<5)+12>>2]=h;m=m+1|0;i=c[d+(m<<5)>>2]|0;l=m+n|0;h=g+(l<<5)|0}while((i|0)>-1)}c[h>>2]=-1}while(0);return g|0}function EM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=wM(a)|0;p=(f|0)!=0;if(p)c[f>>2]=0;b=xM(a,b)|0;a:do if(!b){m=(d|0)==0;l=(e|0)==0;if((wM(a)|0)>(o|0))while(1){b=AM(a)|0;b:do switch(c[b>>2]|0){case 0:{b=c[b+4>>2]|0;switch(c[b>>2]|0){case -3:break;case -2:{if(l)break b;c[e>>2]=c[e>>2]|c[b+4>>2];break b}default:break b}h=c[b+4>>2]|0;if((h|0)>-1){c:do if(!m){b=0;while(1){i=d+(b<<2)|0;j=c[i>>2]|0;if((j|0)<=-1)break;if((j|0)==(h|0))break c;else b=b+1|0}c[i>>2]=h;c[d+(b+1<<2)>>2]=-1}while(0);if(p)c[f>>2]=(c[f>>2]|0)+1}break}case 3:{b=c[b+4>>2]|0;h=c[b>>2]|0;if(c[h+8>>2]|0){k=h;n=6;break b}b=c[b+4>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}case 1:{b=c[b+4>>2]|0;h=xM(a,c[b>>2]|0)|0;if(h|0){g=h;break a}k=c[b+4>>2]|0;n=6;break}case 2:{b=c[c[b+4>>2]>>2]|0;if(c[b+8>>2]|0){k=b;n=6}break}default:{}}while(0);if((n|0)==6?(n=0,g=xM(a,k)|0,g|0):0)break a;if((wM(a)|0)<=(o|0)){g=0;break a}}else g=0}else g=b;while(0);return g|0}function FM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;h=a+16|0;a:do if(!(c[h>>2]|0)){j=a+12|0;g=c[j>>2]|0;if(g>>>0<f>>>0){do if(b)if(!d){c[h>>2]=1;d=0;break a}else{b=a+8|0;c[b>>2]=d;g=1024;break}else{g=f<<3;g=g>>>0>1024?g:1024;i=wN(8)|0;if(!i){c[h>>2]=1;d=0;break a}d=wN(g)|0;c[i>>2]=d;if(!d){xN(i);c[h>>2]=1;d=0;break a}c[i+4>>2]=0;b=a+4|0;h=c[b>>2]|0;if(h|0)c[h+4>>2]=i;if(!(c[a>>2]|0))c[a>>2]=i;c[b>>2]=i;b=a+8|0;c[b>>2]=d}while(0);c[j>>2]=g;h=b}else{d=a+8|0;h=d;d=c[d>>2]|0}b=d+f&3;b=((b|0)==0?0:4-b|0)+f|0;c[h>>2]=d+b;c[j>>2]=g-b;if(e)GN(d|0,0,b|0)|0}else d=0;while(0);return d|0}function GM(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+16|0;g=k;d=a+12|0;e=c[d>>2]|0;j=c[a>>2]|0;if((e|0)>=(j|0)){d=c[a+4>>2]|0;if((j|0)<(d|0)?(f=(c[a+8>>2]|0)+j|0,f=(f|0)>(d|0)?d:f,h=a+16|0,i=zN(c[h>>2]|0,f<<2)|0,(i|0)!=0):0){c[a>>2]=f;c[h>>2]=i;c[g>>2]=c[b>>2];GM(a,g)|0;d=0}else d=12}else{c[(c[a+16>>2]|0)+(e<<2)>>2]=c[b>>2];c[d>>2]=(c[d>>2]|0)+1;d=0}l=k;return d|0}function HM(a,b,d){a=a|0;b=b|0;d=d|0;a=FM(a,0,0,1,32)|0;if((d|0)!=0&(a|0)!=0){c[a+4>>2]=d;c[a>>2]=b;c[a+8>>2]=-1;c[a+12>>2]=-1}else a=0;return a|0}function IM(b,d,e,f,g,h,i,j){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=wM(d)|0;xM(d,e)|0;e=yM(d,0)|0;a:do if(!e){r=(f&1|0)==0;q=(f&2|0)!=0;o=0;p=1;e=i;while(1){if((wM(d)|0)>(s|0))n=e;else{f=o;e=0;break a}b:while(1){c:while(1){switch(zM(d)|0){case 1:{i=7;break c}case 0:{e=AM(d)|0;switch(c[e>>2]|0){case 0:{i=9;break b}case 3:{i=19;break b}case 1:{i=26;break b}case 2:{i=33;break c}default:{}}break}default:{}}if((wM(d)|0)<=(s|0)){f=o;e=0;break a}}if((i|0)==7)e=AM(d)|0;else if((i|0)==33){f=c[e+4>>2]|0;e=xM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=yM(d,0)|0;if(e|0){f=o;break a}e=JM(b,c[f>>2]|0,c[f+4>>2]|0,c[f+8>>2]|0,a[f+12>>0]&1)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}e=c[e+4>>2]|0}if((wM(d)|0)>(s|0))n=e;else{f=o;e=0;break a}}if((i|0)==9){m=c[e+4>>2]|0;k=c[m+8>>2]|0;i=c[m>>2]|0;e=c[m+4>>2]|0;if(!((i|0)>-1|(i|0)==-4)){f=(i|0)==-3;if(r|f^1)if(f)if(q&(p|0)!=0){c[h+(e<<2)>>2]=1;i=-3;l=k;f=o;k=0}else{i=-3;l=k;f=o;k=p}else{l=k;f=o;k=p}else{e=-1;i=-1;l=-1;f=o;k=p}}else{l=(c[g>>2]|0)+k|0;f=o+1|0;k=p}e=pM(b,i,e,l)|0;c[n>>2]=e;if(!e)e=12;else{e=c[e+4>>2]|0;c[e+12>>2]=c[m+12>>2];c[e+16>>2]=c[m+16>>2];e=0}if((l|0)>(c[j>>2]|0)){c[j>>2]=l;l=f;f=n}else{l=f;f=n}}else if((i|0)==19){i=c[e+4>>2]|0;f=i+4|0;e=KM(b,c[i>>2]|0,c[f>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}m=c[e+4>>2]|0;e=xM(d,c[f>>2]|0)|0;if(e|0){f=o;break a}e=yM(d,0)|0;if(e|0){f=o;break a}e=xM(d,m+4|0)|0;if(e|0){f=o;break a}e=yM(d,1)|0;if(e|0){f=o;break a}e=xM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}l=o;k=p;f=m;e=yM(d,0)|0}else if((i|0)==26){l=c[e+4>>2]|0;i=l+4|0;e=qM(b,c[l>>2]|0,c[i>>2]|0)|0;c[n>>2]=e;if(!e){f=o;e=12;break a}f=c[e+4>>2]|0;c[f>>2]=0;k=f+4|0;c[k>>2]=0;e=xM(d,c[i>>2]|0)|0;if(e|0){f=o;break a}e=yM(d,0)|0;if(e|0){f=o;break a}e=xM(d,k)|0;if(e|0){f=o;break a}e=yM(d,1)|0;if(e|0){f=o;break a}e=xM(d,c[l>>2]|0)|0;if(e|0){f=o;break a}l=o;k=p;e=yM(d,0)|0}if(!e){o=l;p=k;e=f}else{f=l;break}}}else f=0;while(0);c[g>>2]=(c[g>>2]|0)+f;return e|0}function JM(b,d,e,f,g){b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0;h=FM(b,0,0,1,16)|0;b=HM(b,2,h)|0;if(!b)b=0;else{c[h>>2]=d;c[h+4>>2]=e;c[h+8>>2]=f;h=h+12|0;a[h>>0]=a[h>>0]&-2|g&1;c[b+16>>2]=c[d+16>>2]}return b|0}function KM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0;if(b){e=FM(a,0,0,1,8)|0;a=HM(a,3,e)|0;if((d|0)!=0&(a|0)!=0){c[e>>2]=b;c[e+4>>2]=d;c[a+16>>2]=(c[d+16>>2]|0)+(c[b+16>>2]|0);d=a}else d=0}return d|0}function LM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=FM(a,0,0,0,8)|0;if(((e|0)!=0?(d=pM(a,-3,d,-1)|0,c[e>>2]=d,(d|0)!=0):0)?(f=FM(a,0,0,0,32)|0,c[e+4>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function MM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;f=c[a>>2]|0;if((f|0)>-1){g=c[b+16>>2]|0;e=0;b=f;do{f=b>>>1;c[((b&1|0)==0?g+(f*12|0)|0:g+(f*12|0)+4|0)>>2]=d;e=e+1|0;b=c[a+(e<<2)>>2]|0}while((b|0)>-1)}c[a>>2]=-1;return}function NM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=FM(a,0,0,0,8)|0;if(((e|0)!=0?(d=pM(a,-3,d,-1)|0,c[e+4>>2]=d,(d|0)!=0):0)?(f=FM(a,0,0,0,32)|0,c[e>>2]=f,(f|0)!=0):0){a=b+4|0;c[f+4>>2]=c[a>>2];c[f>>2]=c[b>>2];c[f+8>>2]=-1;c[f+12>>2]=-1;f=f+16|0;c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[a>>2]=e;c[b>>2]=1;a=0}else a=12;return a|0}function OM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0;m=l;l=l+16|0;j=m;i=b+32|0;h=c[i>>2]|0;g=h&1;a:do switch(a[d>>0]|0){case 91:{e=SM(b,d+1|0)|0;break}case 92:{e=d+1|0;f=TM(e)|0;if(f|0){e=OM(b,f)|0;c[b+12>>2]=d+2;break a}f=a[e>>0]|0;switch(f|0){case 0:{e=5;break a}case 98:{f=pM(c[b>>2]|0,-2,64,-1)|0;break}case 66:{f=pM(c[b>>2]|0,-2,128,-1)|0;break}case 60:{f=pM(c[b>>2]|0,-2,16,-1)|0;break}case 62:{f=pM(c[b>>2]|0,-2,32,-1)|0;break}case 120:{h=d+2|0;i=(a[h>>0]|0)==123;g=i?8:2;h=i?d+3|0:h;e=0;f=0;do{d=UM(a[h+e>>0]|0)|0;if((d|0)<0)break;f=d+(f<<4)|0;e=e+1|0}while((f|0)<1114112&(e|0)<(g|0));e=h+e|0;if(i){if((a[e>>0]|0)!=125){e=9;break a}e=e+1|0}j=c[b>>2]|0;i=b+24|0;k=c[i>>2]|0;c[i>>2]=k+1;f=pM(j,f,f,k)|0;e=e+-1|0;break}case 63:case 43:case 123:if(!g){e=13;break a}else{k=37;break a}case 124:{if(g|0){k=37;break a}e=pM(c[b>>2]|0,-1,-1,-1)|0;k=45;break a}default:{if(!((g|0)==0&(f+-49|0)>>>0<9)){k=37;break a}j=f+-48|0;k=c[b>>2]|0;i=b+24|0;f=c[i>>2]|0;c[i>>2]=f+1;f=pM(k,-4,j,f)|0;k=b+28|0;i=c[k>>2]|0;c[k>>2]=(j|0)<(i|0)?i:j}}d=e+1|0;e=f;k=45;break}case 46:{g=b+24|0;e=c[g>>2]|0;c[g>>2]=e+1;f=c[b>>2]|0;if(h&4){f=pM(f,0,9,e)|0;k=c[b>>2]|0;e=c[g>>2]|0;c[g>>2]=e+1;e=pM(k,11,1114111,e)|0;if((f|0)!=0&(e|0)!=0)e=KM(c[b>>2]|0,f,e)|0;else e=0}else e=pM(f,0,1114111,e)|0;d=d+1|0;k=45;break}case 94:{if((g|0)==0?(c[b+16>>2]|0)!=(d|0):0){e=d;k=37;break a}d=d+1|0;e=pM(c[b>>2]|0,-2,1,-1)|0;k=45;break}case 36:{e=d+1|0;if((g|0)==0?a[e>>0]|0:0){e=d;k=37;break a}d=e;e=pM(c[b>>2]|0,-2,2,-1)|0;k=45;break}case 63:case 43:case 123:case 42:{if(!g){e=d;k=37}else e=13;break}case 124:{if(!g){e=d;k=37}else k=36;break}case 0:{k=36;break}default:{e=d;k=37}}while(0);if((k|0)==36){e=pM(c[b>>2]|0,-1,-1,-1)|0;k=45}else if((k|0)==37){h=sL(j,e,-1)|0;if((h|0)<0)e=2;else{do if(c[i>>2]&2){if((qK(c[j>>2]|0)|0)==0?(mK(c[j>>2]|0)|0)==0:0){k=43;break}i=c[b>>2]|0;n=wK(c[j>>2]|0)|0;g=wK(c[j>>2]|0)|0;f=b+24|0;g=pM(i,n,g,c[f>>2]|0)|0;n=c[b>>2]|0;i=sK(c[j>>2]|0)|0;d=sK(c[j>>2]|0)|0;d=pM(n,i,d,c[f>>2]|0)|0;if((g|0)!=0&(d|0)!=0)g=KM(c[b>>2]|0,g,d)|0;else g=0}else k=43;while(0);if((k|0)==43){g=c[j>>2]|0;f=b+24|0;g=pM(c[b>>2]|0,g,g,c[f>>2]|0)|0}c[f>>2]=(c[f>>2]|0)+1;d=e+h|0;e=g;k=45}}if((k|0)==45)if(!e)e=12;else{c[b+8>>2]=e;c[b+12>>2]=d;e=0}l=m;return e|0}function PM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0;j=l;l=l+16|0;i=j+4|0;g=j;b=RM(b,i)|0;if((a[b>>0]|0)==44){b=RM(b+1|0,g)|0;h=c[g>>2]|0;g=c[i>>2]|0}else{i=c[i>>2]|0;c[g>>2]=i;h=i;g=i}do if(!(g>>>0>255|((h|0)>255|(h|0)>-1&(h|0)<(g|0)))){if(!d)if((a[b>>0]|0)==92)b=b+1|0;else{b=0;break}if((a[b>>0]|0)==125){c[e>>2]=g;c[f>>2]=h;b=b+1|0}else b=0}else b=0;while(0);l=j;return b|0}function QM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0;if((c[b+12>>2]|0)>-1){e=pM(c[a>>2]|0,-1,-1,-1)|0;if((e|0)!=0?(f=qM(c[a>>2]|0,e,b)|0,(f|0)!=0):0){e=c[b+16>>2]|0;c[f+16>>2]=e;g=6}else e=12}else{f=b;e=c[b+16>>2]|0;g=6}if((g|0)==6){c[f+12>>2]=d;c[f+16>>2]=e+1;c[a+8>>2]=f;e=0}return e|0}function RM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0;c[d>>2]=-1;if(((a[b>>0]|0)+-48|0)>>>0<10){c[d>>2]=0;e=b;g=0;f=a[b>>0]|0;while(1){g=(g*10|0)+-48+(f<<24>>24)|0;c[d>>2]=g;b=e+1|0;f=a[b>>0]|0;if((g|0)>255|((f<<24>>24)+-48|0)>>>0>9)break;else e=b}}return b|0}function SM(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=l;l=l+288|0;e=s+264|0;g=s;c[e>>2]=c[b>>2];h=e+8|0;c[h>>2]=0;c[e+12>>2]=32;p=wN(128)|0;r=e+4|0;c[r>>2]=p;if(!p)d=12;else{f=g+4|0;c[f>>2]=0;p=(a[d>>0]|0)==94;c[g>>2]=p&1;d=VM(b,p?d+1|0:d,e,g)|0;a:do if(!d){p=(c[g>>2]|0)==0;if(!p){AK(c[r>>2]|0,c[h>>2]|0,4,41);d=XM(e)|0;if(!d){d=12;e=0;break}c[d>>2]=1114112;c[d+4>>2]=1114112;c[d+8>>2]=-1;d=c[f>>2]|0;if(d){e=d<<2;f=FM(c[b>>2]|0,0,0,0,e+4|0)|0;if(!f){d=12;e=0;break}MN(f|0,g+8|0,e|0)|0;c[f+(d<<2)>>2]=0}else f=0}else f=0;m=c[h>>2]|0;if((m|0)>0){n=c[r>>2]|0;o=b+24|0;e=0;d=0;k=0;while(1){i=c[n+(k<<2)>>2]|0;g=c[i>>2]|0;h=i+4|0;do if(!p){j=(c[h>>2]|0)+1|0;if((g|0)>(d|0)){c[i>>2]=d;c[h>>2]=g+-1;d=j;q=14;break}else{d=(j|0)>=(d|0)?j:d;break}}else q=14;while(0);if((q|0)==14){q=0;c[i+8>>2]=c[o>>2];c[i+16>>2]=f;j=HM(c[b>>2]|0,0,i)|0;e=KM(c[b>>2]|0,e,j)|0;if(!e){d=12;e=0;break a}}k=k+1|0;if((k|0)>=(m|0)){d=0;break}}}else{d=0;e=0}}else e=0;while(0);xN(c[r>>2]|0);r=b+24|0;c[r>>2]=(c[r>>2]|0)+1;c[b+8>>2]=e}l=s;return d|0}function TM(b){b=b|0;var d=0;d=a[b>>0]|0;b=0;while(1){if((a[56592+(b<<3)>>0]|0)==d<<24>>24)break;b=b+1|0;if((b|0)==12){b=12;break}}return c[56592+(b<<3)+4>>2]|0}function UM(a){a=a|0;var b=0;b=a+-48|0;if(b>>>0<10)return b|0;else{b=a|32;return ((b+-97|0)>>>0<6?b+-87|0:-1)|0}return 0}function VM(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=l;l=l+32|0;o=t;q=t+4|0;i=sL(o,d,-1)|0;g=a[d>>0]|0;a:do if((i|0)>=1){r=f+4|0;n=b+32|0;h=d;j=i;b:while(1){i=(h|0)==(d|0);if(!(i|g<<24>>24!=93)){s=5;break}c:do if(!(i|g<<24>>24!=45)){switch(a[h+1>>0]|0){case 93:break c;case 45:break;default:{g=11;break a}}if((a[h+2>>0]|0)==93){g=11;break a}}while(0);d:do if(g<<24>>24==91){switch(a[h+1>>0]|0){case 61:case 46:{g=3;break a}case 58:break;default:{s=17;break d}}i=h+2|0;g=0;e:while(1){switch(a[i+g>>0]|0){case 0:{s=16;break b}case 58:break e;default:{}}g=g+1|0;if((g|0)>=14){s=16;break b}}MN(q|0,i|0,g|0)|0;a[q+g>>0]=0;j=xK(q)|0;if(!j){s=16;break b}h=i+(g+2)|0;if((a[i+(g+1)>>0]|0)!=93){s=16;break b}if(!(c[f>>2]|0)){g=1114111;m=0;k=1;s=25}else{g=c[r>>2]|0;if((g|0)>63){g=12;break a}c[r>>2]=g+1;c[f+8+(g<<2)>>2]=j}}else s=17;while(0);if((s|0)==17){s=0;i=c[o>>2]|0;h=h+j|0;if((a[h>>0]|0)==45?(p=h+1|0,(a[p>>0]|0)!=93):0){h=sL(o,p,-1)|0;g=c[o>>2]|0;if((h|0)<1|(i|0)>(g|0)){g=11;break a}j=0;m=i;h=p+h|0;k=0;s=25}else{j=0;g=i;m=i;k=0;s=25}}if((s|0)==25){s=0;i=XM(e)|0;if(!i){g=12;break a}c[i>>2]=m;c[i+4>>2]=g;c[i+12>>2]=j;c[i+8>>2]=-1;if(!(k|(c[n>>2]&2|0)==0)?(YM(e,m,g)|0)!=0:0){g=12;break a}}j=sL(o,h,-1)|0;g=a[h>>0]|0;if((j|0)<1){s=3;break a}}if((s|0)==5){c[b+12>>2]=h+1;g=0;break}else if((s|0)==16){g=4;break}}else s=3;while(0);if((s|0)==3)g=g<<24>>24?2:7;l=t;return g|0}function WM(a,b){a=a|0;b=b|0;return (c[c[a>>2]>>2]|0)-(c[c[b>>2]>>2]|0)|0}function XM(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=c[h>>2]|0;e=a+12|0;f=c[e>>2]|0;if((d|0)>=(f|0))if((f|0)<=32767?(c[e>>2]=f<<1,g=a+4|0,b=zN(c[g>>2]|0,f<<3)|0,(b|0)!=0):0){c[g>>2]=b;d=c[h>>2]|0;i=6}else b=0;else{b=c[a+4>>2]|0;i=6}if((i|0)==6){c[h>>2]=d+1;i=FM(c[a>>2]|0,0,0,1,20)|0;c[b+(d<<2)>>2]=i;b=i}return b|0}function YM(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0,g=0,h=0;a:do if((b|0)>(d|0))b=0;else while(1){b:do if(!(mK(b)|0)){if(!(qK(b)|0)){b=b+1|0;break}f=sK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((sK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}else{f=wK(b)|0;e=f;while(1){g=b+1|0;e=e+1|0;if((b|0)>=(d|0)){h=f;b=g;g=12;break b}if((wK(g)|0)==(e|0))b=g;else{h=f;b=g;g=12;break}}}while(0);if((g|0)==12){g=0;f=XM(a)|0;if(!f){b=-1;break a}c[f>>2]=h;c[f+4>>2]=e+-1;c[f+8>>2]=-1}if((b|0)>(d|0)){b=0;break}}while(0);return b|0}function ZM(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0;n=l;l=l+16|0;k=n;i=c[a+4>>2]|0;j=i+56|0;h=(c[j>>2]&8|0)==0?d:0;a=c[i+40>>2]|0;if((a|0)>0&(h|0)!=0){a=wN(a<<2)|0;if(!a)a=12;else{g=a;d=a;m=3}}else{g=0;d=0;m=3}if((m|0)==3){if(!(c[i+60>>2]|0))a=$M(i,b,g,f,k)|0;else a=_M(i,b,g,f,k)|0;if(!a)aN(h,e,c[j>>2]|0,i,g,c[k>>2]|0);if(g)xN(d)}l=n;return a|0}function _M(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0;W=l;l=l+16|0;U=W;c[U>>2]=0;o=e&1;S=e&2;T=a+56|0;n=c[T>>2]&4;V=kM(0,0)|0;a:do if(V){p=FM(V,0,0,0,32)|0;if(!p){tM(V);e=12;break}c[p+24>>2]=0;c[p+28>>2]=0;R=a+40|0;q=c[R>>2]|0;if(q){e=wN(q<<2)|0;if(!e){m=0;k=0;j=e;e=12;i=0;h=0;g=0}else{j=e;i=e;C=6}}else{j=0;i=0;C=6}b:do if((C|0)==6){e=c[a+28>>2]|0;if(e){e=wN(e<<3)|0;if(!e){m=e;k=0;e=12;h=0;g=0;break}else{m=e;h=e}}else{m=0;h=0}Q=a+52|0;e=c[Q>>2]|0;if(e){e=wN(e<<2)|0;if(!e){k=e;e=12;g=0;break}else{k=e;g=e}}else{k=0;g=0}M=a+8|0;N=a+12|0;O=(d|0)!=0;P=a+32|0;J=(n|0)!=0;K=(d|0)==0;L=(o|0)==0;I=(o|0)==0;s=b;e=1;r=-1;v=-1;n=q;B=0;c:while(1){if((n|0)>0){o=0;do{c[j+(o<<2)>>2]=-1;if(!K){c[d+(o<<2)>>2]=-1;n=c[R>>2]|0}o=o+1|0}while((o|0)<(n|0))}n=c[Q>>2]|0;if((n|0)>0)GN(g|0,0,n<<2|0)|0;G=e+r|0;e=sL(U,s,4)|0;if((e|0)<1)if((e|0)<0){e=1;break b}else e=1;F=s+e|0;H=c[U>>2]|0;n=c[M>>2]|0;o=n+8|0;if(c[o>>2]|0){w=(G|0)!=0;x=(B|0)==95;y=(G|0)==0;A=J&(B|0)==10;z=(G|0)<1&I;u=n;n=0;t=0;s=o;while(1){r=u+20|0;o=c[r>>2]|0;d:do if(o)if((o&1|0)==0|z|A){if(o&2|0?(E=c[U>>2]|0,!((E|S|0)==0|J&(E|0)==10)):0){q=t;break}do if(o&16|0){if(x){q=t;break d}if(fK(B)|0){q=t;break d}o=c[U>>2]|0;if((o|0)==95)break;if(!(fK(o)|0)){q=t;break d}}while(0);o=c[r>>2]|0;if(o&32){if(x){o=c[U>>2]|0;if((o|0)==95){q=t;break}}else{E=(fK(B)|0)==0;o=c[U>>2]|0;if(E|(o|0)==95){q=t;break}}if(fK(o)|0){q=t;break}o=c[r>>2]|0}q=c[U>>2]|0;do if((q|0)!=0&(w&(o&64|0)!=0)){if(x){o=q;q=1}else{q=(fK(B)|0)!=0;o=c[U>>2]|0}if((o|0)==95)if(q){q=t;break d}else break;else if(q^(fK(o)|0)!=0)break;else{q=t;break d}}while(0);if(!(c[r>>2]&128)){C=49;break}o=c[U>>2]|0;if(y|(o|0)==0){q=t;break}if(x)q=1;else{q=(fK(B)|0)!=0;o=c[U>>2]|0}if((o|0)==95)if(q){C=49;break}else{q=t;break}else if(q^(fK(o)|0)!=0){q=t;break}else{C=49;break}}else q=t;else C=49;while(0);do if((C|0)==49){C=0;if(!t){n=c[u+16>>2]|0;q=c[s>>2]|0;break}q=p+28|0;o=c[q>>2]|0;if(!o){o=FM(V,0,0,0,32)|0;if(!o){C=53;break c}c[o+24>>2]=p;c[o+28>>2]=0;E=FM(V,0,0,0,c[R>>2]<<2)|0;c[o+20>>2]=E;if(!E){C=60;break c}c[q>>2]=o;p=o}else p=o;c[p>>2]=G;c[p+4>>2]=F;c[p+8>>2]=c[s>>2];c[p+12>>2]=c[u+12>>2];c[p+16>>2]=c[U>>2];if((c[R>>2]|0)>0){q=c[p+20>>2]|0;o=0;do{c[q+(o<<2)>>2]=c[j+(o<<2)>>2];o=o+1|0}while((o|0)<(c[R>>2]|0))}o=c[u+16>>2]|0;if(!o)q=t;else{q=c[o>>2]|0;if((q|0)<=-1){q=t;break}r=c[p+20>>2]|0;do{o=o+4|0;c[r+(q<<2)>>2]=G;q=c[o>>2]|0}while((q|0)>-1);q=t}}while(0);s=u+40|0;if(!(c[s>>2]|0))break;else{u=u+32|0;t=q}}if(n){o=c[n>>2]|0;if((o|0)>-1)do{c[j+(o<<2)>>2]=G;n=n+4|0;o=c[n>>2]|0}while((o|0)>-1)}else n=0;if(!q)C=170;else{s=G;r=F;w=q;x=n;C=79}}else{n=0;C=170}e:while(1){if((C|0)==79){if((w|0)==(c[N>>2]|0)){if((v|0)>=(s|0)){if(!(O&(v|0)==(s|0))){n=x;C=170;continue}if(!(cN(c[R>>2]|0,c[P>>2]|0,j,d)|0)){n=x;C=170;continue}}if(!O){v=s;n=x;C=170;continue}if((c[R>>2]|0)>0)n=0;else{v=s;n=x;C=170;continue}while(1){c[d+(n<<2)>>2]=c[j+(n<<2)>>2];n=n+1|0;if((n|0)>=(c[R>>2]|0)){v=s;n=x;C=170;continue e}}}u=w+8|0;if((c[u>>2]|0)!=0?(c[w+20>>2]&256|0)!=0:0){o=c[w+24>>2]|0;aN(o+1|0,m,c[T>>2]&-9,a,j,s);E=c[m+(o<<3)>>2]|0;o=(c[m+(o<<3)+4>>2]|0)-E|0;if(xJ(b+E|0,r+-1|0,o)|0){n=x;C=170;continue}E=(o|0)==0;n=E&1;q=k+(c[w+12>>2]<<2)|0;if(E?c[q>>2]|0:0){n=x;C=170;continue}c[q>>2]=n;o=o+-1|0;r=r+o|0;o=o+s|0;q=c[U>>2]|0;n=sL(U,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;D=r+n|0;E=n}else{q=c[U>>2]|0;if(!q){n=x;C=170;continue}n=sL(U,r,4)|0;if((n|0)<1)if((n|0)<0){e=1;break b}else n=1;o=s;D=r+n|0;E=n}s=o+e|0;if(!(c[u>>2]|0)){e=E;n=x;C=170;continue}y=(s|0)!=0;z=(q|0)==95;A=(s|0)==0;C=J&(q|0)==10;B=(s|0)<1&L;t=0;n=x;while(1){f:do if((c[w>>2]|0)>>>0<=q>>>0){if((c[w+4>>2]|0)>>>0<q>>>0)break;r=w+20|0;e=c[r>>2]|0;do if(e|0){if(!((e&1|0)==0|B|C))break f;if(e&2|0?(x=c[U>>2]|0,!((x|S|0)==0|J&(x|0)==10)):0)break f;do if(e&16|0){if(z)break f;if(fK(q)|0)break f;e=c[U>>2]|0;if((e|0)==95)break;if(!(fK(e)|0))break f}while(0);e=c[r>>2]|0;if(e&32){if(z){e=c[U>>2]|0;if((e|0)==95)break f}else{x=(fK(q)|0)==0;e=c[U>>2]|0;if(x|(e|0)==95)break f}if(fK(e)|0)break f;e=c[r>>2]|0}o=c[U>>2]|0;do if((o|0)!=0&(y&(e&64|0)!=0)){if(z)e=1;else{e=(fK(q)|0)!=0;o=c[U>>2]|0}if((o|0)==95)if(e)break f;else break;else if(e^(fK(o)|0)!=0)break;else break f}while(0);do if(c[r>>2]&128|0){e=c[U>>2]|0;if(A|(e|0)==0)break f;if(z)o=1;else{o=(fK(q)|0)!=0;e=c[U>>2]|0}if((e|0)==95)if(o)break;else break f;else if(o^(fK(e)|0)!=0)break f;else break}while(0);e=c[r>>2]|0;do if(e&4){if(c[T>>2]&2|0)break;if(!(kK(q,c[w+24>>2]|0)|0))break f;e=c[r>>2]|0}while(0);do if(e&4|0){if(!(c[T>>2]&2))break;x=sK(q)|0;e=w+24|0;if(kK(x,c[e>>2]|0)|0)break;x=wK(q)|0;if(!(kK(x,c[e>>2]|0)|0))break f}while(0);if(!(c[r>>2]&8))break;if(bN(c[w+28>>2]|0,q,c[T>>2]&2)|0)break f}while(0);if(!t){t=c[u>>2]|0;n=c[w+16>>2]|0;break}o=p+28|0;e=c[o>>2]|0;if(!e){e=FM(V,0,0,0,32)|0;if(!e){C=144;break c}c[e+24>>2]=p;c[e+28>>2]=0;x=FM(V,0,0,0,c[R>>2]<<2)|0;c[e+20>>2]=x;if(!x){C=151;break c}c[o>>2]=e;p=e}else p=e;c[p>>2]=s;c[p+4>>2]=D;c[p+8>>2]=c[u>>2];c[p+12>>2]=c[w+12>>2];c[p+16>>2]=c[U>>2];if((c[R>>2]|0)>0){o=c[p+20>>2]|0;e=0;do{c[o+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)<(c[R>>2]|0))}e=c[w+16>>2]|0;if(!e)break;o=c[e>>2]|0;if((o|0)<=-1)break;r=c[p+20>>2]|0;do{c[r+(o<<2)>>2]=s;e=e+4|0;o=c[e>>2]|0}while((o|0)>-1)}while(0);u=w+40|0;if(!(c[u>>2]|0))break;else w=w+32|0}if(!t){e=E;C=170;continue}if(n){e=c[n>>2]|0;if((e|0)>-1){do{n=n+4|0;c[j+(e<<2)>>2]=s;e=c[n>>2]|0}while((e|0)>-1);q=v;o=D;e=E}else{q=v;o=D;e=E}}else{q=v;o=D;e=E;n=0}}else if((C|0)==170){C=0;r=c[p+24>>2]|0;if(!r)break;t=c[p+8>>2]|0;if(c[t+20>>2]&256|0)c[k+(c[p+12>>2]<<2)>>2]=0;s=c[p>>2]|0;u=c[p+4>>2]|0;c[U>>2]=c[p+16>>2];q=c[R>>2]|0;if((q|0)>0){p=c[p+20>>2]|0;o=0;do{c[j+(o<<2)>>2]=c[p+(o<<2)>>2];o=o+1|0}while((o|0)<(q|0));p=r;q=v;o=u}else{p=r;q=v;o=u}}r=o;v=q;w=t;x=n;C=79}n=(v|0)>-1;if(n|(c[U>>2]|0)==0){C=179;break}c[U>>2]=H;s=F;r=G;n=c[R>>2]|0;B=H}if((C|0)==53){tM(V);if(j|0)xN(i);if(m|0)xN(h);if(!k){e=12;break a}xN(g);e=12;break a}else if((C|0)==60){tM(V);if(j|0)xN(i);if(m|0)xN(h);if(!k){e=12;break a}xN(g);e=12;break a}else if((C|0)==144){tM(V);if(j|0)xN(i);if(m|0)xN(h);if(!k){e=12;break a}xN(g);e=12;break a}else if((C|0)==151){tM(V);if(j|0)xN(i);if(m|0)xN(h);if(!k){e=12;break a}xN(g);e=12;break a}else if((C|0)==179){c[f>>2]=v;e=(n^1)&1;break}}while(0);tM(V);if(j|0)xN(i);if(m|0)xN(h);if(k)xN(g)}else e=12;while(0);l=W;return e|0}function $M(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,T=0,U=0,V=0,W=0,X=0;X=l;l=l+16|0;U=X;c[U>>2]=0;k=e&1;Q=e&2;R=a+56|0;j=c[R>>2]&4;if(!d)O=0;else O=c[a+40>>2]|0;P=O<<2;i=c[a+52>>2]|0;h=i<<3;g=h+8|0;e=P+12+h+(g+(S(P,i)|0)<<1)|0;V=wN(e)|0;if(!V)e=12;else{GN(V|0,0,e|0)|0;e=V+P|0;m=e&3;m=e+((m|0)==0?0:4-m|0)|0;e=m+g|0;n=e&3;n=e+((n|0)==0?0:4-n|0)|0;e=n+g|0;N=e&3;N=e+((N|0)==0?0:4-N|0)|0;e=N+h|0;g=e&3;h=(i|0)>0;if(h){e=e+((g|0)==0?0:4-g|0)|0;g=0;while(1){c[n+(g<<3)+4>>2]=e;e=e+P|0;c[m+(g<<3)+4>>2]=e;g=g+1|0;if((g|0)>=(i|0))break;else e=e+P|0}if(h){e=0;do{c[N+(e<<3)>>2]=-1;e=e+1|0}while((e|0)<(i|0))}}e=sL(U,b,4)|0;if((e|0)<1)if((e|0)<0)e=1;else{i=1;W=11}else{i=e;W=11}a:do if((W|0)==11){M=a+8|0;H=(j|0)!=0;I=(O|0)>0;J=a+12|0;K=a+44|0;L=a+32|0;E=a+36|0;F=(O|0)==0;G=(k|0)==0;D=(O|0)<1;C=(k|0)==0;h=0;v=b+i|0;u=0;j=0;e=-1;g=m;A=V;x=m;w=n;while(1){if((e|0)<0){k=c[M>>2]|0;a=k+8|0;b:do if(c[a>>2]|0){p=(u|0)!=0;q=(h|0)==95;r=(u|0)==0;t=H&(h|0)==10;s=(u|0)<1&G;while(1){c:while(1){o=k+12|0;if((c[N+(c[o>>2]<<3)>>2]|0)>=(u|0))break;n=k+20|0;b=c[n>>2]|0;if(!b){W=46;break}d:do if((b&1|0)==0|s|t){if(b&2|0?(B=c[U>>2]|0,!((B|Q|0)==0|H&(B|0)==10)):0)break;do if(b&16|0){if(q)break d;if(fK(h)|0)break d;b=c[U>>2]|0;if((b|0)==95)break;if(!(fK(b)|0))break d}while(0);b=c[n>>2]|0;if(b&32){if(q){b=c[U>>2]|0;if((b|0)==95)break}else{B=(fK(h)|0)==0;b=c[U>>2]|0;if(B|(b|0)==95)break}if(fK(b)|0)break;b=c[n>>2]|0}m=c[U>>2]|0;do if((m|0)!=0&(p&(b&64|0)!=0)){if(q)b=1;else{b=(fK(h)|0)!=0;m=c[U>>2]|0}if((m|0)==95)if(b)break d;else break;else if(b^(fK(m)|0)!=0)break;else break d}while(0);if(!(c[n>>2]&128)){W=46;break c}b=c[U>>2]|0;if(r|(b|0)==0)break;if(q)m=1;else{m=(fK(h)|0)!=0;b=c[U>>2]|0}if((b|0)==95)if(m){W=46;break c}else break;else if(m^(fK(b)|0)!=0)break;else{W=46;break c}}while(0);a=k+40|0;if(!(c[a>>2]|0))break b;else k=k+32|0}if((W|0)==46){W=0;c[g>>2]=c[a>>2];if(I)GN(c[g+4>>2]|0,-1,P|0)|0;a=c[k+16>>2]|0;if(a|0?(T=c[a>>2]|0,(T|0)>-1):0){m=g+4|0;b=T;do{if((b|0)<(O|0))c[(c[m>>2]|0)+(b<<2)>>2]=u;a=a+4|0;b=c[a>>2]|0}while((b|0)>-1)}a=(c[g>>2]|0)!=(c[J>>2]|0);if(a|D){j=a?j:1;e=a?e:u;a=g+4|0}else{a=g+4|0;j=c[a>>2]|0;e=0;do{c[d+(e<<2)>>2]=c[j+(e<<2)>>2];e=e+1|0}while((e|0)!=(O|0));j=1;e=u}B=c[o>>2]|0;c[N+(B<<3)>>2]=u;c[N+(B<<3)+4>>2]=a;g=g+8|0}a=k+40|0;if(!(c[a>>2]|0))break;else k=k+32|0}}while(0);c[g>>2]=0;g=c[U>>2]|0;if(!g)break;else h=g}else{if(F)break;h=c[U>>2]|0;if(!((g|0)!=(x|0)&(h|0)!=0))break}B=u+i|0;g=sL(U,v,4)|0;if((g|0)<1)if((g|0)<0){e=1;break a}else i=1;else i=g;z=v+i|0;if((j|0)!=0&(c[K>>2]|0)!=0){if(!(c[x>>2]|0))g=w;else{o=c[E>>2]|0;p=c[o>>2]|0;q=(p|0)>-1;n=x;g=w;do{m=n+4|0;e:do if(q){a=0;b=p;do{k=c[o+((a|1)<<2)>>2]|0;if((b|0)>=(O|0))break e;j=c[m>>2]|0;if((c[j+(k<<2)>>2]|0)==(c[d+(k<<2)>>2]|0)?(c[j+(b<<2)>>2]|0)<(c[d+(b<<2)>>2]|0):0)break e;a=a+2|0;b=c[o+(a<<2)>>2]|0}while((b|0)>-1);a=m;W=75}else{a=m;j=c[m>>2]|0;W=75}while(0);if((W|0)==75){W=0;c[g>>2]=c[n>>2];v=g+4|0;y=c[v>>2]|0;c[v>>2]=j;c[a>>2]=y;g=g+8|0}n=n+8|0}while((c[n>>2]|0)!=0)}c[g>>2]=0;y=x;j=0}else{y=w;w=x}a=c[w>>2]|0;if(!a){a=A;g=y}else{r=(B|0)!=0;s=(h|0)==95;t=(B|0)==0;v=H&(h|0)==10;u=(B|0)<1&C;q=w;k=A;g=y;while(1){b=a+8|0;if(c[b>>2]|0){p=q+4|0;o=k;n=b;while(1){f:do if((c[a>>2]|0)>>>0<=h>>>0?(c[a+4>>2]|0)>>>0>=h>>>0:0){m=a+20|0;k=c[m>>2]|0;do if(k|0){if(!((k&1|0)==0|u|v)){k=o;break f}if(k&2|0?(A=c[U>>2]|0,!((A|Q|0)==0|H&(A|0)==10)):0){k=o;break f}do if(k&16|0){if(s){k=o;break f}if(fK(h)|0){k=o;break f}k=c[U>>2]|0;if((k|0)==95)break;if(!(fK(k)|0)){k=o;break f}}while(0);k=c[m>>2]|0;if(k&32){if(s){k=c[U>>2]|0;if((k|0)==95){k=o;break f}}else{A=(fK(h)|0)==0;k=c[U>>2]|0;if(A|(k|0)==95){k=o;break f}}if(fK(k)|0){k=o;break f}k=c[m>>2]|0}b=c[U>>2]|0;do if((b|0)!=0&(r&(k&64|0)!=0)){if(s)k=1;else{k=(fK(h)|0)!=0;b=c[U>>2]|0}if((b|0)==95)if(k){k=o;break f}else break;else if(k^(fK(b)|0)!=0)break;else{k=o;break f}}while(0);do if(c[m>>2]&128|0){k=c[U>>2]|0;if(t|(k|0)==0){k=o;break f}if(s)b=1;else{b=(fK(h)|0)!=0;k=c[U>>2]|0}if((k|0)==95)if(b)break;else{k=o;break f}else if(b^(fK(k)|0)!=0){k=o;break f}else break}while(0);k=c[m>>2]|0;do if(k&4){if(c[R>>2]&2|0)break;if(!(kK(h,c[a+24>>2]|0)|0)){k=o;break f}k=c[m>>2]|0}while(0);do if(k&4|0){if(!(c[R>>2]&2))break;A=sK(h)|0;k=a+24|0;if(kK(A,c[k>>2]|0)|0)break;A=wK(h)|0;if(!(kK(A,c[k>>2]|0)|0)){k=o;break f}}while(0);if(!(c[m>>2]&8))break;if(bN(c[a+28>>2]|0,h,c[R>>2]&2)|0){k=o;break f}}while(0);if(I){b=c[p>>2]|0;k=0;do{c[o+(k<<2)>>2]=c[b+(k<<2)>>2];k=k+1|0}while((k|0)!=(O|0))}k=c[a+16>>2]|0;do if(k|0){b=c[k>>2]|0;if((b|0)<=-1)break;do{if((b|0)<(O|0))c[o+(b<<2)>>2]=B;k=k+4|0;b=c[k>>2]|0}while((b|0)>-1)}while(0);k=c[a+12>>2]|0;b=N+(k<<3)|0;if((c[b>>2]|0)>=(B|0)){k=c[N+(k<<3)+4>>2]|0;b=c[k>>2]|0;if(!(cN(O,c[L>>2]|0,o,b)|0)){k=o;break}c[k>>2]=o;if((c[n>>2]|0)!=(c[J>>2]|0)){k=b;break}if(I)e=0;else{j=1;k=b;e=B;break}while(1){c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0;if((e|0)==(O|0)){j=1;k=b;e=B;break f}}}A=c[n>>2]|0;c[g>>2]=A;x=g+4|0;m=c[x>>2]|0;c[x>>2]=o;c[b>>2]=B;c[N+(k<<3)+4>>2]=x;do if((A|0)==(c[J>>2]|0)){if((e|0)==-1)if(I)e=0;else{e=B;j=1;break}else{if(!I)break;if((c[o>>2]|0)>(c[d>>2]|0))break;else e=0}do{c[d+(e<<2)>>2]=c[o+(e<<2)>>2];e=e+1|0}while((e|0)<(O|0));e=B;j=1}while(0);k=m;g=g+8|0}else k=o;while(0);n=a+40|0;if(!(c[n>>2]|0))break;else{a=a+32|0;o=k}}}q=q+8|0;a=c[q>>2]|0;if(!a){a=k;break}}}c[g>>2]=0;v=z;u=B;A=a;x=y}c[f>>2]=e;e=e>>>31}while(0);xN(V)}l=X;return e|0}function aN(a,b,d,e,f,g){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;if((d&8|0)==0&(g|0)>-1?(m=c[e+16>>2]|0,n=c[e+28>>2]|0,l=(a|0)!=0&(n|0)!=0,l):0){k=c[e+48>>2]|0;j=0;do{d=c[m+(j*12|0)>>2]|0;if((d|0)==(k|0))i=g;else i=c[f+(d<<2)>>2]|0;h=b+(j<<3)|0;c[h>>2]=i;d=c[m+(j*12|0)+4>>2]|0;if((d|0)==(k|0))d=g;else d=c[f+(d<<2)>>2]|0;e=b+(j<<3)+4|0;c[e>>2]=d;if((d|0)==-1|(i|0)==-1){c[e>>2]=-1;c[h>>2]=-1}j=j+1|0}while(j>>>0<a>>>0&j>>>0<n>>>0);if(l){d=0;do{i=b+(d<<3)+4|0;j=c[m+(d*12|0)+8>>2]|0;if(j|0?(o=c[j>>2]|0,(o|0)>-1):0){k=b+(d<<3)|0;h=0;f=o;e=c[k>>2]|0;do{if(!((e|0)>=(c[b+(f<<3)>>2]|0)?(c[i>>2]|0)<=(c[b+(f<<3)+4>>2]|0):0)){c[i>>2]=-1;c[k>>2]=-1;e=-1}h=h+1|0;f=c[j+(h<<2)>>2]|0}while((f|0)>-1)}d=d+1|0}while(d>>>0<a>>>0&d>>>0<n>>>0)}else d=0}else d=0;if(d>>>0<a>>>0)GN(b+(d<<3)|0,-1,a-d<<3|0)|0;return}function bN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;e=c[a>>2]|0;a:do if(!e)d=0;else{f=(d|0)==0;d=e;while(1){if(f){if(kK(b,d)|0){d=1;break a}}else{e=wK(b)|0;if(kK(e,c[a>>2]|0)|0){d=1;break a}e=sK(b)|0;if(kK(e,c[a>>2]|0)|0){d=1;break a}}a=a+4|0;d=c[a>>2]|0;if(!d){d=0;break}}}while(0);return d|0}function cN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if((a|0)>0){f=0;while(1){h=c[d+(f<<2)>>2]|0;g=c[e+(f<<2)>>2]|0;if(!(c[b+(f<<2)>>2]|0)){if((h|0)<(g|0)){f=1;break a}if((h|0)>(g|0)){f=0;break a}}else{if((h|0)>(g|0)){f=1;break a}if((h|0)<(g|0)){f=0;break a}}f=f+1|0;if((f|0)>=(a|0)){f=0;break}}}else f=0;while(0);return f|0}function dN(a){a=a|0;var b=0,e=0,f=0;if((c[a+76>>2]|0)>=0?(DJ(a)|0)!=0:0){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0}else b=oJ(a)|0}else f=3;do if((f|0)==3){b=a+4|0;e=c[b>>2]|0;if(e>>>0<(c[a+8>>2]|0)>>>0){c[b>>2]=e+1;b=d[e>>0]|0;break}else{b=oJ(a)|0;break}}while(0);return b|0}function eN(a){a=a|0;var b=0;if((c[a+76>>2]|0)>-1){b=(DJ(a)|0)==0;a=fN(a)|0}else a=fN(a)|0;return a|0}function fN(a){a=a|0;var b=0;if(!(c[a>>2]&128))b=1;else b=(c[a+20>>2]|0)>>>0>(c[a+28>>2]|0)>>>0?2:1;b=Za[c[a+40>>2]&31](a,0,b)|0;if((b|0)>=0)b=b-(c[a+8>>2]|0)+(c[a+4>>2]|0)+(c[a+20>>2]|0)-(c[a+28>>2]|0)|0;return b|0}function gN(a){a=a|0;(c[a+76>>2]|0)>-1?DJ(a)|0:0;return c[a+60>>2]|0}function hN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;j=b&255;e=b&255;if((c[d+76>>2]|0)>=0?(DJ(d)|0)!=0:0){if((e|0)!=(a[d+75>>0]|0)?(h=d+20|0,i=c[h>>2]|0,i>>>0<(c[d+16>>2]|0)>>>0):0){c[h>>2]=i+1;a[i>>0]=j}else e=rL(d,b)|0;EJ(d)}else k=3;do if((k|0)==3){if((e|0)!=(a[d+75>>0]|0)?(f=d+20|0,g=c[f>>2]|0,g>>>0<(c[d+16>>2]|0)>>>0):0){c[f>>2]=g+1;a[g>>0]=j;break}e=rL(d,b)|0}while(0);return e|0}function iN(b,d,e,f){b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=S(e,d)|0;e=(d|0)==0?0:e;if((c[f+76>>2]|0)>-1)j=DJ(f)|0;else j=0;g=f+74|0;h=a[g>>0]|0;a[g>>0]=h+255|h;g=f+4|0;h=c[g>>2]|0;m=(c[f+8>>2]|0)-h|0;i=m>>>0<k>>>0?m:k;if((m|0)>0){MN(b|0,h|0,i|0)|0;c[g>>2]=h+i;g=k-i|0;b=b+i|0}else g=k;a:do if(!g)l=13;else{i=f+32|0;while(1){if(pJ(f)|0)break;h=Za[c[i>>2]&31](f,b,g)|0;if((h+1|0)>>>0<2)break;g=g-h|0;if(!g){l=13;break a}else b=b+h|0}if(j|0)EJ(f);e=((k-g|0)>>>0)/(d>>>0)|0}while(0);if((l|0)==13)if(j)EJ(f);return e|0}function jN(a){a=a|0;return eN(a)|0}function kN(b){b=b|0;var d=0,e=0,f=0;f=l;l=l+16|0;e=f;Sa(0,e|0)|0;d=0;e=(c[e+4>>2]|0)*65537^(e>>>4)+b;while(1){a[b+d>>0]=(e&15)+65|e<<1&32;d=d+1|0;if((d|0)==6)break;else e=e>>>5}l=f;return b|0}function lN(){var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;k=l;l=l+48|0;i=k+24|0;h=k+16|0;g=k;d=k+28|0;b=d;e=135004;f=b+20|0;do{a[b>>0]=a[e>>0]|0;b=b+1|0;e=e+1|0}while((b|0)<(f|0));e=d+13|0;b=0;while(1){kN(e)|0;c[g>>2]=d;c[g+4>>2]=32962;c[g+8>>2]=384;f=aJ(Ra(5,g|0)|0)|0;b=b+1|0;if((f|0)>-1){j=4;break}if((b|0)>=100){b=0;break}}if((j|0)==4){c[h>>2]=d;Oa(10,h|0)|0;b=wL(f,135024)|0;if(!b){c[i>>2]=f;ta(6,i|0)|0;b=0}}l=k;return b|0}function mN(a){a=a|0;return +(+nN(a,0))}function nN(a,b){a=a|0;b=b|0;return +(+oN(a,b,1))}function oN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0.0,f=0,g=0,h=0,i=0;i=l;l=l+128|0;h=i;f=h;g=f+124|0;do{c[f>>2]=0;f=f+4|0}while((f|0)<(g|0));f=h+4|0;c[f>>2]=a;g=h+8|0;c[g>>2]=-1;c[h+44>>2]=a;c[h+76>>2]=-1;kJ(h,0);e=+IK(h,d,1);d=(c[f>>2]|0)-(c[g>>2]|0)+(c[h+108>>2]|0)|0;if(b|0)c[b>>2]=d|0?a+d|0:a;l=i;return +e}function pN(b){b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;while(1){e=a[b>>0]|0;c=e<<24>>24;f=b+1|0;if(!(nJ(c)|0))break;else b=f}switch(c|0){case 45:{b=1;g=5;break}case 43:{b=0;g=5;break}default:{h=0;d=b;b=e}}if((g|0)==5){h=b;d=f;b=a[f>>0]|0}c=(b<<24>>24)+-48|0;if(c>>>0<10){b=0;do{d=d+1|0;b=(b*10|0)-c|0;c=(a[d>>0]|0)+-48|0}while(c>>>0<10)}else b=0;return (h|0?b:0-b|0)|0}function qN(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;a:do if(!c)b=0;else{h=b;while(1){g=c>>>1;b=h+(S(g,d)|0)|0;f=lb[e&63](a,b)|0;if(!f)break a;if((c|0)==1){b=0;break a}f=(f|0)<0;c=f?g:c-g|0;if(!c){b=0;break}else h=f?h:b}}while(0);return b|0}function rN(b,d){b=b|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;h=l;l=l+32|0;f=h;e=a[d>>0]|0;a:do if(e<<24>>24!=0?(a[d+1>>0]|0)!=0:0){c[f>>2]=0;c[f+4>>2]=0;c[f+8>>2]=0;c[f+12>>2]=0;c[f+16>>2]=0;c[f+20>>2]=0;c[f+24>>2]=0;c[f+28>>2]=0;do{i=f+(((e&255)>>>5&255)<<2)|0;c[i>>2]=c[i>>2]|1<<(e&31);d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0);e=a[b>>0]|0;if(!(e<<24>>24))d=b;else{d=b;do{if(c[f+(((e&255)>>>5&255)<<2)>>2]&1<<(e&31)|0)break a;d=d+1|0;e=a[d>>0]|0}while(e<<24>>24!=0)}}else g=3;while(0);if((g|0)==3)d=WK(b,e<<24>>24)|0;l=h;return d-b|0}function sN(a,b){a=a|0;b=b|0;cL(a+(TK(a)|0)|0,b)|0;return a|0}function tN(b,c){b=b|0;c=c|0;c=b+(rN(b,c)|0)|0;return (a[c>>0]|0?c:0)|0}function uN(b,d){b=b|0;d=d|0;var e=0;if(!b){b=c[42610]|0;if(!b)b=0;else e=3}else e=3;do if((e|0)==3){b=b+(cM(b,d)|0)|0;if(!(a[b>>0]|0)){c[42610]=0;b=0;break}d=b+(rN(b,d)|0)|0;c[42610]=d;if(!(a[d>>0]|0)){c[42610]=0;break}else{c[42610]=d+1;a[d>>0]=0;break}}while(0);return b|0}function vN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0;if(!b){b=c[e>>2]|0;if(!b)b=0;else f=3}else f=3;do if((f|0)==3){b=b+(cM(b,d)|0)|0;if(!(a[b>>0]|0)){c[e>>2]=0;b=0;break}d=b+(rN(b,d)|0)|0;c[e>>2]=d;if(!(a[d>>0]|0)){c[e>>2]=0;break}else{c[e>>2]=d+1;a[d>>0]=0;break}}while(0);return b|0}\nfunction wN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=l;l=l+16|0;o=K;do if(a>>>0<245){p=a>>>0<11?16:a+11&-8;a=p>>>3;t=c[42611]|0;d=t>>>a;if(d&3|0){a=(d&1^1)+a|0;d=170484+(a<<1<<2)|0;e=d+8|0;f=c[e>>2]|0;g=f+8|0;h=c[g>>2]|0;do if((d|0)!=(h|0)){if(h>>>0<(c[42615]|0)>>>0)Qa();b=h+12|0;if((c[b>>2]|0)==(f|0)){c[b>>2]=d;c[e>>2]=h;break}else Qa()}else c[42611]=t&~(1<<a);while(0);J=a<<3;c[f+4>>2]=J|3;J=f+J+4|0;c[J>>2]=c[J>>2]|1;J=g;l=K;return J|0}s=c[42613]|0;if(p>>>0>s>>>0){if(d|0){i=2<<a;a=d<<a&(i|0-i);a=(a&0-a)+-1|0;i=a>>>12&16;a=a>>>i;e=a>>>5&8;a=a>>>e;g=a>>>2&4;a=a>>>g;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=(e|i|g|d|b)+(a>>>b)|0;a=170484+(b<<1<<2)|0;d=a+8|0;g=c[d>>2]|0;i=g+8|0;e=c[i>>2]|0;do if((a|0)!=(e|0)){if(e>>>0<(c[42615]|0)>>>0)Qa();f=e+12|0;if((c[f>>2]|0)==(g|0)){c[f>>2]=a;c[d>>2]=e;j=t;break}else Qa()}else{j=t&~(1<<b);c[42611]=j}while(0);h=(b<<3)-p|0;c[g+4>>2]=p|3;e=g+p|0;c[e+4>>2]=h|1;c[e+h>>2]=h;if(s|0){f=c[42616]|0;b=s>>>3;d=170484+(b<<1<<2)|0;b=1<<b;if(j&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[42615]|0)>>>0)Qa();else{k=a;m=b}}else{c[42611]=j|b;k=d;m=d+8|0}c[m>>2]=f;c[k+12>>2]=f;c[f+8>>2]=k;c[f+12>>2]=d}c[42613]=h;c[42616]=e;J=i;l=K;return J|0}k=c[42612]|0;if(k){a=(k&0-k)+-1|0;I=a>>>12&16;a=a>>>I;H=a>>>5&8;a=a>>>H;J=a>>>2&4;a=a>>>J;d=a>>>1&2;a=a>>>d;b=a>>>1&1;b=c[170748+((H|I|J|d|b)+(a>>>b)<<2)>>2]|0;a=(c[b+4>>2]&-8)-p|0;d=c[b+16+(((c[b+16>>2]|0)==0&1)<<2)>>2]|0;if(!d){j=b;h=a}else{do{I=(c[d+4>>2]&-8)-p|0;J=I>>>0<a>>>0;a=J?I:a;b=J?d:b;d=c[d+16+(((c[d+16>>2]|0)==0&1)<<2)>>2]|0}while((d|0)!=0);j=b;h=a}f=c[42615]|0;if(j>>>0<f>>>0)Qa();i=j+p|0;if(j>>>0>=i>>>0)Qa();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){n=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)Qa();else{c[a>>2]=0;n=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)Qa();b=e+12|0;if((c[b>>2]|0)!=(j|0))Qa();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;n=d;break}else Qa()}while(0);a:do if(g|0){b=c[j+28>>2]|0;a=170748+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=n;if(!n){c[42612]=k&~(1<<b);break a}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=n;if(!n)break a;else break}else Qa();while(0);a=c[42615]|0;if(n>>>0<a>>>0)Qa();c[n+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)Qa();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);b=c[j+20>>2]|0;if(b|0)if(b>>>0<(c[42615]|0)>>>0)Qa();else{c[n+20>>2]=b;c[b+24>>2]=n;break}}while(0);if(h>>>0<16){J=h+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}else{c[j+4>>2]=p|3;c[i+4>>2]=h|1;c[i+h>>2]=h;if(s|0){e=c[42616]|0;b=s>>>3;d=170484+(b<<1<<2)|0;b=1<<b;if(t&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[42615]|0)>>>0)Qa();else{q=a;r=b}}else{c[42611]=t|b;q=d;r=d+8|0}c[r>>2]=e;c[q+12>>2]=e;c[e+8>>2]=q;c[e+12>>2]=d}c[42613]=h;c[42616]=i}J=j+8|0;l=K;return J|0}}}else if(a>>>0<=4294967231){a=a+11|0;p=a&-8;k=c[42612]|0;if(k){e=0-p|0;a=a>>>8;if(a)if(p>>>0>16777215)i=31;else{r=(a+1048320|0)>>>16&8;C=a<<r;q=(C+520192|0)>>>16&4;C=C<<q;i=(C+245760|0)>>>16&2;i=14-(q|r|i)+(C<<i>>>15)|0;i=p>>>(i+7|0)&1|i<<1}else i=0;d=c[170748+(i<<2)>>2]|0;b:do if(!d){d=0;a=0;C=81}else{a=0;h=p<<((i|0)==31?0:25-(i>>>1)|0);g=0;while(1){f=(c[d+4>>2]&-8)-p|0;if(f>>>0<e>>>0)if(!f){a=d;e=0;f=d;C=85;break b}else{a=d;e=f}f=c[d+20>>2]|0;d=c[d+16+(h>>>31<<2)>>2]|0;g=(f|0)==0|(f|0)==(d|0)?g:f;f=(d|0)==0;if(f){d=g;C=81;break}else h=h<<((f^1)&1)}}while(0);if((C|0)==81){if((d|0)==0&(a|0)==0){a=2<<i;a=k&(a|0-a);if(!a)break;r=(a&0-a)+-1|0;m=r>>>12&16;r=r>>>m;j=r>>>5&8;r=r>>>j;n=r>>>2&4;r=r>>>n;q=r>>>1&2;r=r>>>q;d=r>>>1&1;a=0;d=c[170748+((j|m|n|q|d)+(r>>>d)<<2)>>2]|0}if(!d){j=a;i=e}else{f=d;C=85}}if((C|0)==85)while(1){C=0;d=(c[f+4>>2]&-8)-p|0;r=d>>>0<e>>>0;d=r?d:e;a=r?f:a;f=c[f+16+(((c[f+16>>2]|0)==0&1)<<2)>>2]|0;if(!f){j=a;i=d;break}else{e=d;C=85}}if((j|0)!=0?i>>>0<((c[42613]|0)-p|0)>>>0:0){f=c[42615]|0;if(j>>>0<f>>>0)Qa();h=j+p|0;if(j>>>0>=h>>>0)Qa();g=c[j+24>>2]|0;d=c[j+12>>2]|0;do if((d|0)==(j|0)){a=j+20|0;b=c[a>>2]|0;if(!b){a=j+16|0;b=c[a>>2]|0;if(!b){s=0;break}}while(1){d=b+20|0;e=c[d>>2]|0;if(e|0){b=e;a=d;continue}d=b+16|0;e=c[d>>2]|0;if(!e)break;else{b=e;a=d}}if(a>>>0<f>>>0)Qa();else{c[a>>2]=0;s=b;break}}else{e=c[j+8>>2]|0;if(e>>>0<f>>>0)Qa();b=e+12|0;if((c[b>>2]|0)!=(j|0))Qa();a=d+8|0;if((c[a>>2]|0)==(j|0)){c[b>>2]=d;c[a>>2]=e;s=d;break}else Qa()}while(0);c:do if(g){b=c[j+28>>2]|0;a=170748+(b<<2)|0;do if((j|0)==(c[a>>2]|0)){c[a>>2]=s;if(!s){t=k&~(1<<b);c[42612]=t;break c}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(j|0)&1)<<2)>>2]=s;if(!s){t=k;break c}else break}else Qa();while(0);a=c[42615]|0;if(s>>>0<a>>>0)Qa();c[s+24>>2]=g;b=c[j+16>>2]|0;do if(b|0)if(b>>>0<a>>>0)Qa();else{c[s+16>>2]=b;c[b+24>>2]=s;break}while(0);b=c[j+20>>2]|0;if(b)if(b>>>0<(c[42615]|0)>>>0)Qa();else{c[s+20>>2]=b;c[b+24>>2]=s;t=k;break}else t=k}else t=k;while(0);do if(i>>>0>=16){c[j+4>>2]=p|3;c[h+4>>2]=i|1;c[h+i>>2]=i;b=i>>>3;if(i>>>0<256){d=170484+(b<<1<<2)|0;a=c[42611]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[42615]|0)>>>0)Qa();else{x=a;y=b}}else{c[42611]=a|b;x=d;y=d+8|0}c[y>>2]=h;c[x+12>>2]=h;c[h+8>>2]=x;c[h+12>>2]=d;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;d=170748+(b<<2)|0;c[h+28>>2]=b;a=h+16|0;c[a+4>>2]=0;c[a>>2]=0;a=1<<b;if(!(t&a)){c[42612]=t|a;c[d>>2]=h;c[h+24>>2]=d;c[h+12>>2]=h;c[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);e=c[d>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(i|0)){C=139;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=136;break}else{a=a<<1;e=b}}if((C|0)==136)if(d>>>0<(c[42615]|0)>>>0)Qa();else{c[d>>2]=h;c[h+24>>2]=e;c[h+12>>2]=h;c[h+8>>2]=h;break}else if((C|0)==139){b=e+8|0;a=c[b>>2]|0;J=c[42615]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=h;c[b>>2]=h;c[h+8>>2]=a;c[h+12>>2]=e;c[h+24>>2]=0;break}else Qa()}}else{J=i+p|0;c[j+4>>2]=J|3;J=j+J+4|0;c[J>>2]=c[J>>2]|1}while(0);J=j+8|0;l=K;return J|0}}}else p=-1;while(0);d=c[42613]|0;if(d>>>0>=p>>>0){b=d-p|0;a=c[42616]|0;if(b>>>0>15){J=a+p|0;c[42616]=J;c[42613]=b;c[J+4>>2]=b|1;c[J+b>>2]=b;c[a+4>>2]=p|3}else{c[42613]=0;c[42616]=0;c[a+4>>2]=d|3;J=a+d+4|0;c[J>>2]=c[J>>2]|1}J=a+8|0;l=K;return J|0}h=c[42614]|0;if(h>>>0>p>>>0){H=h-p|0;c[42614]=H;J=c[42617]|0;I=J+p|0;c[42617]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}if(!(c[42729]|0)){c[42731]=4096;c[42730]=4096;c[42732]=-1;c[42733]=-1;c[42734]=0;c[42722]=0;a=o&-16^1431655768;c[o>>2]=a;c[42729]=a;a=4096}else a=c[42731]|0;i=p+48|0;j=p+47|0;g=a+j|0;f=0-a|0;k=g&f;if(k>>>0<=p>>>0){J=0;l=K;return J|0}a=c[42721]|0;if(a|0?(x=c[42719]|0,y=x+k|0,y>>>0<=x>>>0|y>>>0>a>>>0):0){J=0;l=K;return J|0}d:do if(!(c[42722]&4)){d=c[42617]|0;e:do if(d){e=170892;while(1){a=c[e>>2]|0;if(a>>>0<=d>>>0?(w=e+4|0,(a+(c[w>>2]|0)|0)>>>0>d>>>0):0)break;a=c[e+8>>2]|0;if(!a){C=163;break e}else e=a}b=g-h&f;if(b>>>0<2147483647){a=SN(b|0)|0;if((a|0)==((c[e>>2]|0)+(c[w>>2]|0)|0)){if((a|0)!=(-1|0)){h=b;g=a;C=180;break d}}else{e=a;C=171}}else b=0}else C=163;while(0);do if((C|0)==163){d=SN(0)|0;if((d|0)!=(-1|0)?(b=d,u=c[42730]|0,v=u+-1|0,b=((v&b|0)==0?0:(v+b&0-u)-b|0)+k|0,u=c[42719]|0,v=b+u|0,b>>>0>p>>>0&b>>>0<2147483647):0){y=c[42721]|0;if(y|0?v>>>0<=u>>>0|v>>>0>y>>>0:0){b=0;break}a=SN(b|0)|0;if((a|0)==(d|0)){h=b;g=d;C=180;break d}else{e=a;C=171}}else b=0}while(0);do if((C|0)==171){d=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(e|0)!=(-1|0))))if((e|0)==(-1|0)){b=0;break}else{h=b;g=e;C=180;break d}a=c[42731]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=b;g=e;C=180;break d}if((SN(a|0)|0)==(-1|0)){SN(d|0)|0;b=0;break}else{h=a+b|0;g=e;C=180;break d}}while(0);c[42722]=c[42722]|4;C=178}else{b=0;C=178}while(0);if(((C|0)==178?k>>>0<2147483647:0)?(B=SN(k|0)|0,y=SN(0)|0,z=y-B|0,A=z>>>0>(p+40|0)>>>0,!((B|0)==(-1|0)|A^1|B>>>0<y>>>0&((B|0)!=(-1|0)&(y|0)!=(-1|0))^1)):0){h=A?z:b;g=B;C=180}if((C|0)==180){b=(c[42719]|0)+h|0;c[42719]=b;if(b>>>0>(c[42720]|0)>>>0)c[42720]=b;k=c[42617]|0;do if(k){b=170892;while(1){a=c[b>>2]|0;d=b+4|0;e=c[d>>2]|0;if((g|0)==(a+e|0)){C=190;break}f=c[b+8>>2]|0;if(!f)break;else b=f}if(((C|0)==190?(c[b+12>>2]&8|0)==0:0)?k>>>0<g>>>0&k>>>0>=a>>>0:0){c[d>>2]=e+h;J=k+8|0;J=(J&7|0)==0?0:0-J&7;I=k+J|0;J=(c[42614]|0)+(h-J)|0;c[42617]=I;c[42614]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[42618]=c[42733];break}b=c[42615]|0;if(g>>>0<b>>>0){c[42615]=g;i=g}else i=b;d=g+h|0;b=170892;while(1){if((c[b>>2]|0)==(d|0)){C=198;break}a=c[b+8>>2]|0;if(!a)break;else b=a}if((C|0)==198?(c[b+12>>2]&8|0)==0:0){c[b>>2]=g;n=b+4|0;c[n>>2]=(c[n>>2]|0)+h;n=g+8|0;n=g+((n&7|0)==0?0:0-n&7)|0;b=d+8|0;b=d+((b&7|0)==0?0:0-b&7)|0;m=n+p|0;j=b-n-p|0;c[n+4>>2]=p|3;do if((b|0)!=(k|0)){if((b|0)==(c[42616]|0)){J=(c[42613]|0)+j|0;c[42613]=J;c[42616]=m;c[m+4>>2]=J|1;c[m+J>>2]=J;break}a=c[b+4>>2]|0;if((a&3|0)==1){h=a&-8;f=a>>>3;f:do if(a>>>0>=256){g=c[b+24>>2]|0;e=c[b+12>>2]|0;do if((e|0)==(b|0)){e=b+16|0;d=e+4|0;a=c[d>>2]|0;if(!a){a=c[e>>2]|0;if(!a){H=0;break}else d=e}while(1){e=a+20|0;f=c[e>>2]|0;if(f|0){a=f;d=e;continue}e=a+16|0;f=c[e>>2]|0;if(!f)break;else{a=f;d=e}}if(d>>>0<i>>>0)Qa();else{c[d>>2]=0;H=a;break}}else{f=c[b+8>>2]|0;if(f>>>0<i>>>0)Qa();a=f+12|0;if((c[a>>2]|0)!=(b|0))Qa();d=e+8|0;if((c[d>>2]|0)==(b|0)){c[a>>2]=e;c[d>>2]=f;H=e;break}else Qa()}while(0);if(!g)break;a=c[b+28>>2]|0;d=170748+(a<<2)|0;do if((b|0)!=(c[d>>2]|0))if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=H;if(!H)break f;else break}else Qa();else{c[d>>2]=H;if(H|0)break;c[42612]=c[42612]&~(1<<a);break f}while(0);e=c[42615]|0;if(H>>>0<e>>>0)Qa();c[H+24>>2]=g;a=b+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<e>>>0)Qa();else{c[H+16>>2]=d;c[d+24>>2]=H;break}while(0);a=c[a+4>>2]|0;if(!a)break;if(a>>>0<(c[42615]|0)>>>0)Qa();else{c[H+20>>2]=a;c[a+24>>2]=H;break}}else{d=c[b+8>>2]|0;e=c[b+12>>2]|0;a=170484+(f<<1<<2)|0;do if((d|0)!=(a|0)){if(d>>>0<i>>>0)Qa();if((c[d+12>>2]|0)==(b|0))break;Qa()}while(0);if((e|0)==(d|0)){c[42611]=c[42611]&~(1<<f);break}do if((e|0)==(a|0))E=e+8|0;else{if(e>>>0<i>>>0)Qa();a=e+8|0;if((c[a>>2]|0)==(b|0)){E=a;break}Qa()}while(0);c[d+12>>2]=e;c[E>>2]=d}while(0);b=b+h|0;f=h+j|0}else f=j;b=b+4|0;c[b>>2]=c[b>>2]&-2;c[m+4>>2]=f|1;c[m+f>>2]=f;b=f>>>3;if(f>>>0<256){d=170484+(b<<1<<2)|0;a=c[42611]|0;b=1<<b;do if(!(a&b)){c[42611]=a|b;I=d;J=d+8|0}else{b=d+8|0;a=c[b>>2]|0;if(a>>>0>=(c[42615]|0)>>>0){I=a;J=b;break}Qa()}while(0);c[J>>2]=m;c[I+12>>2]=m;c[m+8>>2]=I;c[m+12>>2]=d;break}b=f>>>8;do if(!b)b=0;else{if(f>>>0>16777215){b=31;break}I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;b=(J+245760|0)>>>16&2;b=14-(H|I|b)+(J<<b>>>15)|0;b=f>>>(b+7|0)&1|b<<1}while(0);e=170748+(b<<2)|0;c[m+28>>2]=b;a=m+16|0;c[a+4>>2]=0;c[a>>2]=0;a=c[42612]|0;d=1<<b;if(!(a&d)){c[42612]=a|d;c[e>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}a=f<<((b|0)==31?0:25-(b>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){C=265;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=262;break}else{a=a<<1;e=b}}if((C|0)==262)if(d>>>0<(c[42615]|0)>>>0)Qa();else{c[d>>2]=m;c[m+24>>2]=e;c[m+12>>2]=m;c[m+8>>2]=m;break}else if((C|0)==265){b=e+8|0;a=c[b>>2]|0;J=c[42615]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=m;c[b>>2]=m;c[m+8>>2]=a;c[m+12>>2]=e;c[m+24>>2]=0;break}else Qa()}}else{J=(c[42614]|0)+j|0;c[42614]=J;c[42617]=m;c[m+4>>2]=J|1}while(0);J=n+8|0;l=K;return J|0}b=170892;while(1){a=c[b>>2]|0;if(a>>>0<=k>>>0?(D=a+(c[b+4>>2]|0)|0,D>>>0>k>>>0):0)break;b=c[b+8>>2]|0}f=D+-47|0;a=f+8|0;a=f+((a&7|0)==0?0:0-a&7)|0;f=k+16|0;a=a>>>0<f>>>0?k:a;b=a+8|0;d=g+8|0;d=(d&7|0)==0?0:0-d&7;J=g+d|0;d=h+-40-d|0;c[42617]=J;c[42614]=d;c[J+4>>2]=d|1;c[J+d+4>>2]=40;c[42618]=c[42733];d=a+4|0;c[d>>2]=27;c[b>>2]=c[42723];c[b+4>>2]=c[42724];c[b+8>>2]=c[42725];c[b+12>>2]=c[42726];c[42723]=g;c[42724]=h;c[42726]=0;c[42725]=b;b=a+24|0;do{J=b;b=b+4|0;c[b>>2]=7}while((J+8|0)>>>0<D>>>0);if((a|0)!=(k|0)){g=a-k|0;c[d>>2]=c[d>>2]&-2;c[k+4>>2]=g|1;c[a>>2]=g;b=g>>>3;if(g>>>0<256){d=170484+(b<<1<<2)|0;a=c[42611]|0;b=1<<b;if(a&b){b=d+8|0;a=c[b>>2]|0;if(a>>>0<(c[42615]|0)>>>0)Qa();else{F=a;G=b}}else{c[42611]=a|b;F=d;G=d+8|0}c[G>>2]=k;c[F+12>>2]=k;c[k+8>>2]=F;c[k+12>>2]=d;break}b=g>>>8;if(b)if(g>>>0>16777215)d=31;else{I=(b+1048320|0)>>>16&8;J=b<<I;H=(J+520192|0)>>>16&4;J=J<<H;d=(J+245760|0)>>>16&2;d=14-(H|I|d)+(J<<d>>>15)|0;d=g>>>(d+7|0)&1|d<<1}else d=0;e=170748+(d<<2)|0;c[k+28>>2]=d;c[k+20>>2]=0;c[f>>2]=0;b=c[42612]|0;a=1<<d;if(!(b&a)){c[42612]=b|a;c[e>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}a=g<<((d|0)==31?0:25-(d>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(g|0)){C=292;break}d=e+16+(a>>>31<<2)|0;b=c[d>>2]|0;if(!b){C=289;break}else{a=a<<1;e=b}}if((C|0)==289)if(d>>>0<(c[42615]|0)>>>0)Qa();else{c[d>>2]=k;c[k+24>>2]=e;c[k+12>>2]=k;c[k+8>>2]=k;break}else if((C|0)==292){b=e+8|0;a=c[b>>2]|0;J=c[42615]|0;if(a>>>0>=J>>>0&e>>>0>=J>>>0){c[a+12>>2]=k;c[b>>2]=k;c[k+8>>2]=a;c[k+12>>2]=e;c[k+24>>2]=0;break}else Qa()}}}else{J=c[42615]|0;if((J|0)==0|g>>>0<J>>>0)c[42615]=g;c[42723]=g;c[42724]=h;c[42726]=0;c[42620]=c[42729];c[42619]=-1;b=0;do{J=170484+(b<<1<<2)|0;c[J+12>>2]=J;c[J+8>>2]=J;b=b+1|0}while((b|0)!=32);J=g+8|0;J=(J&7|0)==0?0:0-J&7;I=g+J|0;J=h+-40-J|0;c[42617]=I;c[42614]=J;c[I+4>>2]=J|1;c[I+J+4>>2]=40;c[42618]=c[42733]}while(0);b=c[42614]|0;if(b>>>0>p>>>0){H=b-p|0;c[42614]=H;J=c[42617]|0;I=J+p|0;c[42617]=I;c[I+4>>2]=H|1;c[J+4>>2]=p|3;J=J+8|0;l=K;return J|0}}c[(bJ()|0)>>2]=12;J=0;l=K;return J|0}function xN(a){a=a|0;var b=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;if(!a)return;d=a+-8|0;h=c[42615]|0;if(d>>>0<h>>>0)Qa();a=c[a+-4>>2]|0;b=a&3;if((b|0)==1)Qa();e=a&-8;o=d+e|0;a:do if(!(a&1)){a=c[d>>2]|0;if(!b)return;k=d+(0-a)|0;j=a+e|0;if(k>>>0<h>>>0)Qa();if((k|0)==(c[42616]|0)){a=o+4|0;b=c[a>>2]|0;if((b&3|0)!=3){r=k;f=j;m=k;break}c[42613]=j;c[a>>2]=b&-2;c[k+4>>2]=j|1;c[k+j>>2]=j;return}e=a>>>3;if(a>>>0<256){b=c[k+8>>2]|0;d=c[k+12>>2]|0;a=170484+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<h>>>0)Qa();if((c[b+12>>2]|0)!=(k|0))Qa()}if((d|0)==(b|0)){c[42611]=c[42611]&~(1<<e);r=k;f=j;m=k;break}if((d|0)!=(a|0)){if(d>>>0<h>>>0)Qa();a=d+8|0;if((c[a>>2]|0)==(k|0))g=a;else Qa()}else g=d+8|0;c[b+12>>2]=d;c[g>>2]=b;r=k;f=j;m=k;break}g=c[k+24>>2]|0;d=c[k+12>>2]|0;do if((d|0)==(k|0)){d=k+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){i=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<h>>>0)Qa();else{c[b>>2]=0;i=a;break}}else{e=c[k+8>>2]|0;if(e>>>0<h>>>0)Qa();a=e+12|0;if((c[a>>2]|0)!=(k|0))Qa();b=d+8|0;if((c[b>>2]|0)==(k|0)){c[a>>2]=d;c[b>>2]=e;i=d;break}else Qa()}while(0);if(g){a=c[k+28>>2]|0;b=170748+(a<<2)|0;do if((k|0)==(c[b>>2]|0)){c[b>>2]=i;if(!i){c[42612]=c[42612]&~(1<<a);r=k;f=j;m=k;break a}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(k|0)&1)<<2)>>2]=i;if(!i){r=k;f=j;m=k;break a}else break}else Qa();while(0);d=c[42615]|0;if(i>>>0<d>>>0)Qa();c[i+24>>2]=g;a=k+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)Qa();else{c[i+16>>2]=b;c[b+24>>2]=i;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[42615]|0)>>>0)Qa();else{c[i+20>>2]=a;c[a+24>>2]=i;r=k;f=j;m=k;break}else{r=k;f=j;m=k}}else{r=k;f=j;m=k}}else{r=d;f=e;m=d}while(0);if(m>>>0>=o>>>0)Qa();a=o+4|0;b=c[a>>2]|0;if(!(b&1))Qa();if(!(b&2)){a=c[42616]|0;if((o|0)==(c[42617]|0)){q=(c[42614]|0)+f|0;c[42614]=q;c[42617]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[42616]=0;c[42613]=0;return}if((o|0)==(a|0)){q=(c[42613]|0)+f|0;c[42613]=q;c[42616]=m;c[r+4>>2]=q|1;c[m+q>>2]=q;return}f=(b&-8)+f|0;e=b>>>3;b:do if(b>>>0>=256){g=c[o+24>>2]|0;a=c[o+12>>2]|0;do if((a|0)==(o|0)){d=o+16|0;b=d+4|0;a=c[b>>2]|0;if(!a){a=c[d>>2]|0;if(!a){n=0;break}else b=d}while(1){d=a+20|0;e=c[d>>2]|0;if(e|0){a=e;b=d;continue}d=a+16|0;e=c[d>>2]|0;if(!e)break;else{a=e;b=d}}if(b>>>0<(c[42615]|0)>>>0)Qa();else{c[b>>2]=0;n=a;break}}else{b=c[o+8>>2]|0;if(b>>>0<(c[42615]|0)>>>0)Qa();d=b+12|0;if((c[d>>2]|0)!=(o|0))Qa();e=a+8|0;if((c[e>>2]|0)==(o|0)){c[d>>2]=a;c[e>>2]=b;n=a;break}else Qa()}while(0);if(g|0){a=c[o+28>>2]|0;b=170748+(a<<2)|0;do if((o|0)==(c[b>>2]|0)){c[b>>2]=n;if(!n){c[42612]=c[42612]&~(1<<a);break b}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else Qa();while(0);d=c[42615]|0;if(n>>>0<d>>>0)Qa();c[n+24>>2]=g;a=o+16|0;b=c[a>>2]|0;do if(b|0)if(b>>>0<d>>>0)Qa();else{c[n+16>>2]=b;c[b+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[42615]|0)>>>0)Qa();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{b=c[o+8>>2]|0;d=c[o+12>>2]|0;a=170484+(e<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(c[42615]|0)>>>0)Qa();if((c[b+12>>2]|0)!=(o|0))Qa()}if((d|0)==(b|0)){c[42611]=c[42611]&~(1<<e);break}if((d|0)!=(a|0)){if(d>>>0<(c[42615]|0)>>>0)Qa();a=d+8|0;if((c[a>>2]|0)==(o|0))l=a;else Qa()}else l=d+8|0;c[b+12>>2]=d;c[l>>2]=b}while(0);c[r+4>>2]=f|1;c[m+f>>2]=f;if((r|0)==(c[42616]|0)){c[42613]=f;return}}else{c[a>>2]=b&-2;c[r+4>>2]=f|1;c[m+f>>2]=f}a=f>>>3;if(f>>>0<256){d=170484+(a<<1<<2)|0;b=c[42611]|0;a=1<<a;if(b&a){a=d+8|0;b=c[a>>2]|0;if(b>>>0<(c[42615]|0)>>>0)Qa();else{p=b;q=a}}else{c[42611]=b|a;p=d;q=d+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=d;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=170748+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;b=c[42612]|0;d=1<<a;do if(b&d){b=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=124;break}d=e+16+(b>>>31<<2)|0;a=c[d>>2]|0;if(!a){a=121;break}else{b=b<<1;e=a}}if((a|0)==121)if(d>>>0<(c[42615]|0)>>>0)Qa();else{c[d>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;break}else if((a|0)==124){a=e+8|0;b=c[a>>2]|0;q=c[42615]|0;if(b>>>0>=q>>>0&e>>>0>=q>>>0){c[b+12>>2]=r;c[a>>2]=r;c[r+8>>2]=b;c[r+12>>2]=e;c[r+24>>2]=0;break}else Qa()}}else{c[42612]=b|d;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r}while(0);r=(c[42619]|0)+-1|0;c[42619]=r;if(!r)a=170900;else return;while(1){a=c[a>>2]|0;if(!a)break;else a=a+8|0}c[42619]=-1;return}function yN(a,b){a=a|0;b=b|0;var d=0;if(a){d=S(b,a)|0;if((b|a)>>>0>65535)d=((d>>>0)/(a>>>0)|0|0)==(b|0)?d:-1}else d=0;a=wN(d)|0;if(!a)return a|0;if(!(c[a+-4>>2]&3))return a|0;GN(a|0,0,d|0)|0;return a|0}function zN(a,b){a=a|0;b=b|0;var d=0,e=0;if(!a){b=wN(b)|0;return b|0}if(b>>>0>4294967231){c[(bJ()|0)>>2]=12;b=0;return b|0}d=AN(a+-8|0,b>>>0<11?16:b+11&-8)|0;if(d|0){b=d+8|0;return b|0}d=wN(b)|0;if(!d){b=0;return b|0}e=c[a+-4>>2]|0;e=(e&-8)-((e&3|0)==0?8:4)|0;MN(d|0,a|0,(e>>>0<b>>>0?e:b)|0)|0;xN(a);b=d;return b|0}function AN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=a+4|0;n=c[o>>2]|0;d=n&-8;k=a+d|0;i=c[42615]|0;e=n&3;if(!((e|0)!=1&a>>>0>=i>>>0&a>>>0<k>>>0))Qa();f=c[k+4>>2]|0;if(!(f&1))Qa();if(!e){if(b>>>0<256){a=0;return a|0}if(d>>>0>=(b+4|0)>>>0?(d-b|0)>>>0<=c[42731]<<1>>>0:0)return a|0;a=0;return a|0}if(d>>>0>=b>>>0){d=d-b|0;if(d>>>0<=15)return a|0;m=a+b|0;c[o>>2]=n&1|b|2;c[m+4>>2]=d|3;o=m+d+4|0;c[o>>2]=c[o>>2]|1;BN(m,d);return a|0}if((k|0)==(c[42617]|0)){m=(c[42614]|0)+d|0;d=m-b|0;e=a+b|0;if(m>>>0<=b>>>0){a=0;return a|0}c[o>>2]=n&1|b|2;c[e+4>>2]=d|1;c[42617]=e;c[42614]=d;return a|0}if((k|0)==(c[42616]|0)){f=(c[42613]|0)+d|0;if(f>>>0<b>>>0){a=0;return a|0}d=f-b|0;e=n&1;if(d>>>0>15){n=a+b|0;m=n+d|0;c[o>>2]=e|b|2;c[n+4>>2]=d|1;c[m>>2]=d;e=m+4|0;c[e>>2]=c[e>>2]&-2;e=n}else{c[o>>2]=e|f|2;e=a+f+4|0;c[e>>2]=c[e>>2]|1;e=0;d=0}c[42613]=d;c[42616]=e;return a|0}if(f&2|0){a=0;return a|0}l=(f&-8)+d|0;if(l>>>0<b>>>0){a=0;return a|0}m=l-b|0;g=f>>>3;a:do if(f>>>0>=256){h=c[k+24>>2]|0;f=c[k+12>>2]|0;do if((f|0)==(k|0)){f=k+16|0;e=f+4|0;d=c[e>>2]|0;if(!d){d=c[f>>2]|0;if(!d){j=0;break}else e=f}while(1){f=d+20|0;g=c[f>>2]|0;if(g|0){d=g;e=f;continue}f=d+16|0;g=c[f>>2]|0;if(!g)break;else{d=g;e=f}}if(e>>>0<i>>>0)Qa();else{c[e>>2]=0;j=d;break}}else{g=c[k+8>>2]|0;if(g>>>0<i>>>0)Qa();d=g+12|0;if((c[d>>2]|0)!=(k|0))Qa();e=f+8|0;if((c[e>>2]|0)==(k|0)){c[d>>2]=f;c[e>>2]=g;j=f;break}else Qa()}while(0);if(h|0){d=c[k+28>>2]|0;e=170748+(d<<2)|0;do if((k|0)==(c[e>>2]|0)){c[e>>2]=j;if(!j){c[42612]=c[42612]&~(1<<d);break a}}else if(h>>>0>=(c[42615]|0)>>>0){c[h+16+(((c[h+16>>2]|0)!=(k|0)&1)<<2)>>2]=j;if(!j)break a;else break}else Qa();while(0);f=c[42615]|0;if(j>>>0<f>>>0)Qa();c[j+24>>2]=h;d=k+16|0;e=c[d>>2]|0;do if(e|0)if(e>>>0<f>>>0)Qa();else{c[j+16>>2]=e;c[e+24>>2]=j;break}while(0);d=c[d+4>>2]|0;if(d|0)if(d>>>0<(c[42615]|0)>>>0)Qa();else{c[j+20>>2]=d;c[d+24>>2]=j;break}}}else{e=c[k+8>>2]|0;f=c[k+12>>2]|0;d=170484+(g<<1<<2)|0;if((e|0)!=(d|0)){if(e>>>0<i>>>0)Qa();if((c[e+12>>2]|0)!=(k|0))Qa()}if((f|0)==(e|0)){c[42611]=c[42611]&~(1<<g);break}if((f|0)!=(d|0)){if(f>>>0<i>>>0)Qa();d=f+8|0;if((c[d>>2]|0)==(k|0))h=d;else Qa()}else h=f+8|0;c[e+12>>2]=f;c[h>>2]=e}while(0);d=n&1;if(m>>>0<16){c[o>>2]=l|d|2;o=a+l+4|0;c[o>>2]=c[o>>2]|1;return a|0}else{n=a+b|0;c[o>>2]=d|b|2;c[n+4>>2]=m|3;o=n+m+4|0;c[o>>2]=c[o>>2]|1;BN(n,m);return a|0}return 0}function BN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;o=a+b|0;d=c[a+4>>2]|0;a:do if(!(d&1)){g=c[a>>2]|0;if(!(d&3))return;l=a+(0-g)|0;k=g+b|0;i=c[42615]|0;if(l>>>0<i>>>0)Qa();if((l|0)==(c[42616]|0)){a=o+4|0;d=c[a>>2]|0;if((d&3|0)!=3){r=l;f=k;break}c[42613]=k;c[a>>2]=d&-2;c[l+4>>2]=k|1;c[l+k>>2]=k;return}e=g>>>3;if(g>>>0<256){d=c[l+8>>2]|0;b=c[l+12>>2]|0;a=170484+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<i>>>0)Qa();if((c[d+12>>2]|0)!=(l|0))Qa()}if((b|0)==(d|0)){c[42611]=c[42611]&~(1<<e);r=l;f=k;break}if((b|0)!=(a|0)){if(b>>>0<i>>>0)Qa();a=b+8|0;if((c[a>>2]|0)==(l|0))h=a;else Qa()}else h=b+8|0;c[d+12>>2]=b;c[h>>2]=d;r=l;f=k;break}g=c[l+24>>2]|0;b=c[l+12>>2]|0;do if((b|0)==(l|0)){b=l+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){j=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<i>>>0)Qa();else{c[d>>2]=0;j=a;break}}else{e=c[l+8>>2]|0;if(e>>>0<i>>>0)Qa();a=e+12|0;if((c[a>>2]|0)!=(l|0))Qa();d=b+8|0;if((c[d>>2]|0)==(l|0)){c[a>>2]=b;c[d>>2]=e;j=b;break}else Qa()}while(0);if(g){a=c[l+28>>2]|0;d=170748+(a<<2)|0;do if((l|0)==(c[d>>2]|0)){c[d>>2]=j;if(!j){c[42612]=c[42612]&~(1<<a);r=l;f=k;break a}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(l|0)&1)<<2)>>2]=j;if(!j){r=l;f=k;break a}else break}else Qa();while(0);b=c[42615]|0;if(j>>>0<b>>>0)Qa();c[j+24>>2]=g;a=l+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)Qa();else{c[j+16>>2]=d;c[d+24>>2]=j;break}while(0);a=c[a+4>>2]|0;if(a)if(a>>>0<(c[42615]|0)>>>0)Qa();else{c[j+20>>2]=a;c[a+24>>2]=j;r=l;f=k;break}else{r=l;f=k}}else{r=l;f=k}}else{r=a;f=b}while(0);h=c[42615]|0;if(o>>>0<h>>>0)Qa();a=o+4|0;d=c[a>>2]|0;if(!(d&2)){a=c[42616]|0;if((o|0)==(c[42617]|0)){q=(c[42614]|0)+f|0;c[42614]=q;c[42617]=r;c[r+4>>2]=q|1;if((r|0)!=(a|0))return;c[42616]=0;c[42613]=0;return}if((o|0)==(a|0)){q=(c[42613]|0)+f|0;c[42613]=q;c[42616]=r;c[r+4>>2]=q|1;c[r+q>>2]=q;return}f=(d&-8)+f|0;e=d>>>3;b:do if(d>>>0>=256){g=c[o+24>>2]|0;b=c[o+12>>2]|0;do if((b|0)==(o|0)){b=o+16|0;d=b+4|0;a=c[d>>2]|0;if(!a){a=c[b>>2]|0;if(!a){n=0;break}else d=b}while(1){b=a+20|0;e=c[b>>2]|0;if(e|0){a=e;d=b;continue}b=a+16|0;e=c[b>>2]|0;if(!e)break;else{a=e;d=b}}if(d>>>0<h>>>0)Qa();else{c[d>>2]=0;n=a;break}}else{e=c[o+8>>2]|0;if(e>>>0<h>>>0)Qa();a=e+12|0;if((c[a>>2]|0)!=(o|0))Qa();d=b+8|0;if((c[d>>2]|0)==(o|0)){c[a>>2]=b;c[d>>2]=e;n=b;break}else Qa()}while(0);if(g|0){a=c[o+28>>2]|0;d=170748+(a<<2)|0;do if((o|0)==(c[d>>2]|0)){c[d>>2]=n;if(!n){c[42612]=c[42612]&~(1<<a);break b}}else if(g>>>0>=(c[42615]|0)>>>0){c[g+16+(((c[g+16>>2]|0)!=(o|0)&1)<<2)>>2]=n;if(!n)break b;else break}else Qa();while(0);b=c[42615]|0;if(n>>>0<b>>>0)Qa();c[n+24>>2]=g;a=o+16|0;d=c[a>>2]|0;do if(d|0)if(d>>>0<b>>>0)Qa();else{c[n+16>>2]=d;c[d+24>>2]=n;break}while(0);a=c[a+4>>2]|0;if(a|0)if(a>>>0<(c[42615]|0)>>>0)Qa();else{c[n+20>>2]=a;c[a+24>>2]=n;break}}}else{d=c[o+8>>2]|0;b=c[o+12>>2]|0;a=170484+(e<<1<<2)|0;if((d|0)!=(a|0)){if(d>>>0<h>>>0)Qa();if((c[d+12>>2]|0)!=(o|0))Qa()}if((b|0)==(d|0)){c[42611]=c[42611]&~(1<<e);break}if((b|0)!=(a|0)){if(b>>>0<h>>>0)Qa();a=b+8|0;if((c[a>>2]|0)==(o|0))m=a;else Qa()}else m=b+8|0;c[d+12>>2]=b;c[m>>2]=d}while(0);c[r+4>>2]=f|1;c[r+f>>2]=f;if((r|0)==(c[42616]|0)){c[42613]=f;return}}else{c[a>>2]=d&-2;c[r+4>>2]=f|1;c[r+f>>2]=f}a=f>>>3;if(f>>>0<256){b=170484+(a<<1<<2)|0;d=c[42611]|0;a=1<<a;if(d&a){a=b+8|0;d=c[a>>2]|0;if(d>>>0<(c[42615]|0)>>>0)Qa();else{p=d;q=a}}else{c[42611]=d|a;p=b;q=b+8|0}c[q>>2]=r;c[p+12>>2]=r;c[r+8>>2]=p;c[r+12>>2]=b;return}a=f>>>8;if(a)if(f>>>0>16777215)a=31;else{p=(a+1048320|0)>>>16&8;q=a<<p;o=(q+520192|0)>>>16&4;q=q<<o;a=(q+245760|0)>>>16&2;a=14-(o|p|a)+(q<<a>>>15)|0;a=f>>>(a+7|0)&1|a<<1}else a=0;e=170748+(a<<2)|0;c[r+28>>2]=a;c[r+20>>2]=0;c[r+16>>2]=0;d=c[42612]|0;b=1<<a;if(!(d&b)){c[42612]=d|b;c[e>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}d=f<<((a|0)==31?0:25-(a>>>1)|0);e=c[e>>2]|0;while(1){if((c[e+4>>2]&-8|0)==(f|0)){a=121;break}b=e+16+(d>>>31<<2)|0;a=c[b>>2]|0;if(!a){a=118;break}else{d=d<<1;e=a}}if((a|0)==118){if(b>>>0<(c[42615]|0)>>>0)Qa();c[b>>2]=r;c[r+24>>2]=e;c[r+12>>2]=r;c[r+8>>2]=r;return}else if((a|0)==121){a=e+8|0;d=c[a>>2]|0;q=c[42615]|0;if(!(d>>>0>=q>>>0&e>>>0>=q>>>0))Qa();c[d+12>>2]=r;c[a>>2]=r;c[r+8>>2]=d;c[r+12>>2]=e;c[r+24>>2]=0;return}}function CN(a,b){a=a|0;b=b|0;if(a>>>0<9){b=wN(b)|0;return b|0}else{b=DN(a,b)|0;return b|0}return 0}function DN(a,b){a=a|0;b=b|0;var d=0,e=0,f=0,g=0,h=0,i=0;a=a>>>0>16?a:16;if(a+-1&a){d=16;while(1)if(d>>>0<a>>>0)d=d<<1;else{a=d;break}}if((-64-a|0)>>>0<=b>>>0){c[(bJ()|0)>>2]=12;h=0;return h|0}g=b>>>0<11?16:b+11&-8;d=wN(g+12+a|0)|0;if(!d){h=0;return h|0}f=d+-8|0;do if(d&a+-1){e=(d+a+-1&0-a)+-8|0;b=f;e=(e-b|0)>>>0>15?e:e+a|0;b=e-b|0;a=d+-4|0;i=c[a>>2]|0;d=(i&-8)-b|0;if(!(i&3)){c[e>>2]=(c[f>>2]|0)+b;c[e+4>>2]=d;a=e;b=e;break}else{i=e+4|0;c[i>>2]=d|c[i>>2]&1|2;d=e+d+4|0;c[d>>2]=c[d>>2]|1;c[a>>2]=b|c[a>>2]&1|2;c[i>>2]=c[i>>2]|1;BN(f,b);a=e;b=e;break}}else{a=f;b=f}while(0);a=a+4|0;d=c[a>>2]|0;if(d&3|0?(h=d&-8,h>>>0>(g+16|0)>>>0):0){i=h-g|0;h=b+g|0;c[a>>2]=g|d&1|2;c[h+4>>2]=i|3;g=h+i+4|0;c[g>>2]=c[g>>2]|1;BN(h,i)}i=b+8|0;return i|0}function EN(){}function FN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (D=d,a-c>>>0|0)|0}function GN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0;h=b+e|0;d=d&255;if((e|0)>=67){while(b&3){a[b>>0]=d;b=b+1|0}f=h&-4|0;g=f-64|0;i=d|d<<8|d<<16|d<<24;while((b|0)<=(g|0)){c[b>>2]=i;c[b+4>>2]=i;c[b+8>>2]=i;c[b+12>>2]=i;c[b+16>>2]=i;c[b+20>>2]=i;c[b+24>>2]=i;c[b+28>>2]=i;c[b+32>>2]=i;c[b+36>>2]=i;c[b+40>>2]=i;c[b+44>>2]=i;c[b+48>>2]=i;c[b+52>>2]=i;c[b+56>>2]=i;c[b+60>>2]=i;b=b+64|0}while((b|0)<(f|0)){c[b>>2]=i;b=b+4|0}}while((b|0)<(h|0)){a[b>>0]=d;b=b+1|0}return h-e|0}function HN(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b<<c|(a&(1<<c)-1<<32-c)>>>32-c;return a<<c}D=a<<c-32;return 0}function IN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (D=b+d+(c>>>0<a>>>0|0)>>>0,c|0)|0}function JN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0;q=q+1|0;c[a>>2]=q;while((f|0)<(e|0)){if(!(c[d+(f<<3)>>2]|0)){c[d+(f<<3)>>2]=q;c[d+((f<<3)+4)>>2]=b;c[d+((f<<3)+8)>>2]=0;D=e;return d|0}f=f+1|0}e=e*2|0;d=zN(d|0,8*(e+1|0)|0)|0;d=JN(a|0,b|0,d|0,e|0)|0;D=e;return d|0}function KN(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){D=b>>>c;return a>>>c|(b&(1<<c)-1)<<32-c}D=0;return b>>>c-32|0}function LN(a,b,d){a=a|0;b=b|0;d=d|0;var e=0,f=0;while((f|0)<(d|0)){e=c[b+(f<<3)>>2]|0;if(!e)break;if((e|0)==(a|0))return c[b+((f<<3)+4)>>2]|0;f=f+1|0}return 0}function MN(b,d,e){b=b|0;d=d|0;e=e|0;var f=0,g=0,h=0;if((e|0)>=8192)return Ga(b|0,d|0,e|0)|0;h=b|0;g=b+e|0;if((b&3)==(d&3)){while(b&3){if(!e)return h|0;a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0;e=e-1|0}e=g&-4|0;f=e-64|0;while((b|0)<=(f|0)){c[b>>2]=c[d>>2];c[b+4>>2]=c[d+4>>2];c[b+8>>2]=c[d+8>>2];c[b+12>>2]=c[d+12>>2];c[b+16>>2]=c[d+16>>2];c[b+20>>2]=c[d+20>>2];c[b+24>>2]=c[d+24>>2];c[b+28>>2]=c[d+28>>2];c[b+32>>2]=c[d+32>>2];c[b+36>>2]=c[d+36>>2];c[b+40>>2]=c[d+40>>2];c[b+44>>2]=c[d+44>>2];c[b+48>>2]=c[d+48>>2];c[b+52>>2]=c[d+52>>2];c[b+56>>2]=c[d+56>>2];c[b+60>>2]=c[d+60>>2];b=b+64|0;d=d+64|0}while((b|0)<(e|0)){c[b>>2]=c[d>>2];b=b+4|0;d=d+4|0}}else{e=g-4|0;while((b|0)<(e|0)){a[b>>0]=a[d>>0]|0;a[b+1>>0]=a[d+1>>0]|0;a[b+2>>0]=a[d+2>>0]|0;a[b+3>>0]=a[d+3>>0]|0;b=b+4|0;d=d+4|0}}while((b|0)<(g|0)){a[b>>0]=a[d>>0]|0;b=b+1|0;d=d+1|0}return h|0}function NN(b){b=b|0;var c=0;c=a[n+(b&255)>>0]|0;if((c|0)<8)return c|0;c=a[n+(b>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=a[n+(b>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (a[n+(b>>>24)>>0]|0)+24|0}function ON(a,b,d,e,f){a=a|0;b=b|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=d;n=e;i=n;if(!k){g=(f|0)!=0;if(!i){if(g){c[f>>2]=(l>>>0)%(h>>>0);c[f+4>>2]=0}n=0;f=(l>>>0)/(h>>>0)>>>0;return (D=n,f)|0}else{if(!g){n=0;f=0;return (D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=b&0;n=0;f=0;return (D=n,f)|0}}g=(i|0)==0;do if(h){if(!g){g=(V(i|0)|0)-(V(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<<i;b=k>>>(m>>>0)&b;g=0;i=l<<i;break}if(!f){n=0;f=0;return (D=n,f)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;n=0;f=0;return (D=n,f)|0}g=h-1|0;if(g&h|0){i=(V(h|0)|0)+33-(V(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<<m|l>>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<<p&j;i=(k<<p|l>>>(o>>>0))&j|l<<m&i-33>>31;break}if(f|0){c[f>>2]=g&l;c[f+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (D=o,p)|0}else{p=NN(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (D=o,p)|0}}else{if(g){if(f|0){c[f>>2]=(k>>>0)%(h>>>0);c[f+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (D=o,p)|0}if(!l){if(f|0){c[f>>2]=0;c[f+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (D=o,p)|0}g=i-1|0;if(!(g&i)){if(f|0){c[f>>2]=a|0;c[f+4>>2]=g&k|b&0}o=0;p=k>>>((NN(i|0)|0)>>>0);return (D=o,p)|0}g=(V(i|0)|0)-(V(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<<i|l>>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<<i;break}if(!f){o=0;p=0;return (D=o,p)|0}c[f>>2]=a|0;c[f+4>>2]=j|b&0;o=0;p=0;return (D=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=d|0|0;l=n|e&0;k=IN(m|0,l|0,-1,-1)|0;d=D;j=i;i=0;do{e=j;j=g>>>31|j<<1;g=i|g<<1;e=a<<1|e>>>31|0;n=a>>>31|b<<1|0;FN(k|0,d|0,e|0,n|0)|0;p=D;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=FN(e|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=D;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(f|0){c[f>>2]=a;c[f+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (D=o,p)|0}function PN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ON(a,b,c,d,0)|0}function QN(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=S(e,f)|0;d=a>>>16;a=(c>>>16)+(S(e,d)|0)|0;e=b>>>16;b=S(e,f)|0;return (D=(a>>>16)+(S(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function RN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=QN(e,f)|0;a=D;return (D=(S(b,f)|0)+(S(d,e)|0)+a|a&0,c|0|0)|0}function SN(a){a=a|0;var b=0,d=0;d=a+15&-16|0;b=c[i>>2]|0;a=b+d|0;if((d|0)>0&(a|0)<(b|0)|(a|0)<0){_()|0;Aa(12);return -1}c[i>>2]=a;if((a|0)>(Z()|0)?(Y()|0)==0:0){Aa(12);c[i>>2]=b;return -1}return b|0}function TN(b,c,d){b=b|0;c=c|0;d=d|0;var e=0;if((c|0)<(b|0)&(b|0)<(c+d|0)){e=b;c=c+d|0;b=b+d|0;while((d|0)>0){b=b-1|0;c=c-1|0;d=d-1|0;a[b>>0]=a[c>>0]|0}b=e}else MN(b,c,d)|0;return b|0}function UN(a,b,d,e){a=a|0;b=b|0;d=d|0;e=e|0;var f=0,g=0;g=l;l=l+16|0;f=g|0;ON(a,b,d,e,f)|0;l=g;return (D=c[f+4>>2]|0,c[f>>2]|0)|0}function VN(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function WN(a){a=a|0;return (a&255)<<8|a>>8&255|0}function XN(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Za[a&31](b|0,c|0,d|0)|0}function YN(a){a=a|0;return +_a[a&1]()}function ZN(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;$a[a&7](b|0,c|0,d|0,e|0,f|0)}function _N(a){a=a|0;return ab[a&3]()|0}function $N(a,b){a=a|0;b=b|0;bb[a&127](b|0)}function aO(a,b,c){a=a|0;b=b|0;c=c|0;cb[a&31](b|0,c|0)}function bO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return db[a&1](b|0,c|0,d|0,e|0,f|0,g|0)|0}function cO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=+e;f=+f;g=g|0;eb[a&15](b|0,c|0,d|0,+e,+f,g|0)}function dO(a,b){a=a|0;b=b|0;return fb[a&31](b|0)|0}function eO(a,b,c,d){a=a|0;b=+b;c=+c;d=+d;return +gb[a&7](+b,+c,+d)}function fO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;hb[a&127](b|0,c|0,d|0)}function gO(a){a=a|0;ib[a&15]()}function hO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return jb[a&31](b|0,c|0,d|0,e|0)|0}function iO(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;kb[a&15](b|0,c|0,d|0,e|0,f|0,g|0)}function jO(a,b,c){a=a|0;b=b|0;c=c|0;return lb[a&63](b|0,c|0)|0}function kO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return mb[a&3](b|0,c|0,d|0,e|0,f|0)|0}function lO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;nb[a&31](b|0,c|0,d|0,e|0)}function mO(a,b,c){a=a|0;b=b|0;c=c|0;W(0);return 0}function nO(){W(1);return 0.0}function oO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;W(2)}function pO(){W(3);return 0}function qO(a){a=a|0;W(4)}function rO(a,b){a=a|0;b=b|0;W(5)}function sO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;W(6);return 0}function tO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=+d;e=+e;f=f|0;W(7)}function uO(a){a=a|0;W(8);return 0}function vO(a,b,c){a=+a;b=+b;c=+c;W(9);return 0.0}function wO(a,b,c){a=a|0;b=b|0;c=c|0;W(10)}function xO(){W(11)}function yO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(12);return 0}function zO(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;W(13)}function AO(a,b){a=a|0;b=b|0;W(14);return 0}function BO(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;W(15);return 0}function CO(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;W(16)}\n\n// EMSCRIPTEN_END_FUNCS\nvar Za=[mO,Pl,Vl,Pn,Tn,fG,_I,$I,fJ,gJ,bK,_l,Xl,OL,rA,Bx,YC,FI,HL,mO,mO,mO,mO,mO,mO,mO,mO,mO,mO,mO,mO,mO];var _a=[nO,vA];var $a=[oO,Rc,vd,Cd,Sd,ve,nl,TB];var ab=[pO,Cw,tx,pO];var bb=[qO,zb,Ab,Eb,Fb,Gb,_b,$b,xc,yc,zc,Ac,Bc,Cc,Dc,Pc,Qc,Tc,Uc,Vc,Wc,Xc,Yc,Zc,jd,kd,ld,nd,od,pd,qd,rd,sd,td,ud,Fd,Gd,Hd,Jd,Kd,Ld,Md,Nd,Od,Pd,Qd,Rd,Td,ee,fe,ge,he,se,te,ue,we,Je,Ke,Le,Ne,Oe,Pe,Qe,Re,Se,Te,Ue,Ve,cf,df,ef,ff,Jf,Ef,yn,zy,Ry,By,Ay,lz,Zx,ay,YD,bE,xf,ql,lm,kG,RC,SB,wx,xN,EG,iI,DI,EI,KI,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO,qO];var cb=[rO,Fc,Kc,$c,ed,Bd,Zd,ne,Ce,$e,mf,Xn,Vy,xz,pz,kz,Py,Qy,tz,uz,$D,dE,bm,os,Ew,JB,hI,GI,HI,LI,NI,rO];var db=[sO,jI];var eb=[tO,Ct,Dt,Et,Ft,Gt,Ht,It,Jt,tO,tO,tO,tO,tO,tO,tO];var fb=[uO,Rg,kg,Rn,Un,YB,ZB,QD,RD,SD,TD,UD,VD,WD,XD,ZI,vb,lr,ll,ol,yw,Dw,nn,tw,co,KB,sw,PB,QB,MI,uO,uO];var gb=[vO,Qu,Ru,Su,Tu,vO,vO,vO];var hb=[wO,Hb,Ib,Lb,wc,Ec,Gc,Jc,_c,ad,dd,wd,xd,Ad,Ud,Vd,Yd,ie,je,me,xe,ye,Be,We,Xe,_e,gf,hf,lf,bk,ck,dk,im,zn,$n,Ko,Op,gs,Bv,ux,$x,jB,yC,wC,ZD,_D,aE,cE,eE,gG,VH,UH,Bm,bn,oo,So,Vo,xw,sA,zx,NB,RB,WH,YH,ZH,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO,wO];var ib=[xO,uA,zw,Aw,Bw,Fw,Gw,Hw,lG,xO,xO,xO,xO,xO,xO,xO];var jb=[yO,Nm,Np,Om,fn,vn,xn,In,Hn,Wn,_n,ao,vx,zC,xC,vE,hG,DG,CG,Ml,tA,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO,yO];var kb=[zO,Kb,Ic,cd,zd,Xd,le,Ae,Ze,kf,UB,zO,zO,zO,zO,zO];var lb=[AO,tn,Qn,Vn,vz,wz,nz,jz,Ty,jr,ag,Qg,rh,Vh,li,wk,uk,ml,pl,zq,yq,xq,As,Qs,Ls,Ms,Lt,nL,hN,pA,rB,Im,vG,Pm,Rm,eo,LB,vJ,WE,II,JI,WM,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO,AO];var mb=[BO,un,Uy,oz];var nb=[CO,Jb,Hc,bd,md,yd,Id,Wd,ke,ze,Me,Ye,jf,Af,zf,yf,wf,vf,uf,Zb,tf,sf,wn,Sy,mz,AK,MB,OB,CO,CO,CO,CO];return{_i64Subtract:FN,_memset:GN,_bitshift64Lshr:KN,_bitshift64Shl:HN,_fflush:BL,_vizLastErrorMessage:wb,_sbrk:SN,_memcpy:MN,_llvm_bswap_i32:VN,___muldi3:RN,_dtdisc:Ll,___uremdi3:UN,_testSetjmp:LN,_llvm_cttz_i32:NN,_vizCreateFile:xb,___udivmoddi4:ON,_realloc:zN,_i64Add:IN,_llvm_bswap_i16:WN,_emscripten_get_global_libc:YI,_htons:_L,___udivdi3:PN,___errno_location:bJ,___muldsi3:QN,_vizRenderFromString:yb,_saveSetjmp:JN,_free:xN,_dtextract:Nl,_memmove:TN,_dtopen:Ql,_malloc:wN,_memalign:CN,runPostSets:EN,stackAlloc:ob,stackSave:pb,stackRestore:qb,establishStackSpace:rb,setTempRet0:tb,getTempRet0:ub,setThrew:sb,stackAlloc:ob,stackSave:pb,stackRestore:qb,establishStackSpace:rb,setThrew:sb,setTempRet0:tb,getTempRet0:ub,dynCall_iiii:XN,dynCall_d:YN,dynCall_viiiii:ZN,dynCall_i:_N,dynCall_vi:$N,dynCall_vii:aO,dynCall_iiiiiii:bO,dynCall_viiiddi:cO,dynCall_ii:dO,dynCall_dddd:eO,dynCall_viii:fO,dynCall_v:gO,dynCall_iiiii:hO,dynCall_viiiiii:iO,dynCall_iii:jO,dynCall_iiiiii:kO,dynCall_viiii:lO}})\n\n\n// EMSCRIPTEN_END_ASM\n(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var stackSave=Module[\"stackSave\"]=asm[\"stackSave\"];var _vizCreateFile=Module[\"_vizCreateFile\"]=asm[\"_vizCreateFile\"];var ___udivdi3=Module[\"___udivdi3\"]=asm[\"___udivdi3\"];var getTempRet0=Module[\"getTempRet0\"]=asm[\"getTempRet0\"];var _vizRenderFromString=Module[\"_vizRenderFromString\"]=asm[\"_vizRenderFromString\"];var _bitshift64Lshr=Module[\"_bitshift64Lshr\"]=asm[\"_bitshift64Lshr\"];var _bitshift64Shl=Module[\"_bitshift64Shl\"]=asm[\"_bitshift64Shl\"];var _fflush=Module[\"_fflush\"]=asm[\"_fflush\"];var _vizLastErrorMessage=Module[\"_vizLastErrorMessage\"]=asm[\"_vizLastErrorMessage\"];var _sbrk=Module[\"_sbrk\"]=asm[\"_sbrk\"];var ___muldsi3=Module[\"___muldsi3\"]=asm[\"___muldsi3\"];var _memcpy=Module[\"_memcpy\"]=asm[\"_memcpy\"];var ___errno_location=Module[\"___errno_location\"]=asm[\"___errno_location\"];var ___muldi3=Module[\"___muldi3\"]=asm[\"___muldi3\"];var _dtdisc=Module[\"_dtdisc\"]=asm[\"_dtdisc\"];var ___uremdi3=Module[\"___uremdi3\"]=asm[\"___uremdi3\"];var stackAlloc=Module[\"stackAlloc\"]=asm[\"stackAlloc\"];var _llvm_cttz_i32=Module[\"_llvm_cttz_i32\"]=asm[\"_llvm_cttz_i32\"];var _i64Subtract=Module[\"_i64Subtract\"]=asm[\"_i64Subtract\"];var ___udivmoddi4=Module[\"___udivmoddi4\"]=asm[\"___udivmoddi4\"];var setTempRet0=Module[\"setTempRet0\"]=asm[\"setTempRet0\"];var _realloc=Module[\"_realloc\"]=asm[\"_realloc\"];var _i64Add=Module[\"_i64Add\"]=asm[\"_i64Add\"];var _llvm_bswap_i16=Module[\"_llvm_bswap_i16\"]=asm[\"_llvm_bswap_i16\"];var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=asm[\"_emscripten_get_global_libc\"];var _htons=Module[\"_htons\"]=asm[\"_htons\"];var _llvm_bswap_i32=Module[\"_llvm_bswap_i32\"]=asm[\"_llvm_bswap_i32\"];var _memset=Module[\"_memset\"]=asm[\"_memset\"];var _testSetjmp=Module[\"_testSetjmp\"]=asm[\"_testSetjmp\"];var _saveSetjmp=Module[\"_saveSetjmp\"]=asm[\"_saveSetjmp\"];var _free=Module[\"_free\"]=asm[\"_free\"];var runPostSets=Module[\"runPostSets\"]=asm[\"runPostSets\"];var setThrew=Module[\"setThrew\"]=asm[\"setThrew\"];var _dtextract=Module[\"_dtextract\"]=asm[\"_dtextract\"];var _memmove=Module[\"_memmove\"]=asm[\"_memmove\"];var _dtopen=Module[\"_dtopen\"]=asm[\"_dtopen\"];var stackRestore=Module[\"stackRestore\"]=asm[\"stackRestore\"];var _malloc=Module[\"_malloc\"]=asm[\"_malloc\"];var establishStackSpace=Module[\"establishStackSpace\"]=asm[\"establishStackSpace\"];var _memalign=Module[\"_memalign\"]=asm[\"_memalign\"];var dynCall_iiii=Module[\"dynCall_iiii\"]=asm[\"dynCall_iiii\"];var dynCall_d=Module[\"dynCall_d\"]=asm[\"dynCall_d\"];var dynCall_viiiii=Module[\"dynCall_viiiii\"]=asm[\"dynCall_viiiii\"];var dynCall_i=Module[\"dynCall_i\"]=asm[\"dynCall_i\"];var dynCall_vi=Module[\"dynCall_vi\"]=asm[\"dynCall_vi\"];var dynCall_vii=Module[\"dynCall_vii\"]=asm[\"dynCall_vii\"];var dynCall_iiiiiii=Module[\"dynCall_iiiiiii\"]=asm[\"dynCall_iiiiiii\"];var dynCall_viiiddi=Module[\"dynCall_viiiddi\"]=asm[\"dynCall_viiiddi\"];var dynCall_ii=Module[\"dynCall_ii\"]=asm[\"dynCall_ii\"];var dynCall_dddd=Module[\"dynCall_dddd\"]=asm[\"dynCall_dddd\"];var dynCall_viii=Module[\"dynCall_viii\"]=asm[\"dynCall_viii\"];var dynCall_v=Module[\"dynCall_v\"]=asm[\"dynCall_v\"];var dynCall_iiiii=Module[\"dynCall_iiiii\"]=asm[\"dynCall_iiiii\"];var dynCall_viiiiii=Module[\"dynCall_viiiiii\"]=asm[\"dynCall_viiiiii\"];var dynCall_iii=Module[\"dynCall_iii\"]=asm[\"dynCall_iii\"];var dynCall_iiiiii=Module[\"dynCall_iiiiii\"]=asm[\"dynCall_iiiiii\"];var dynCall_viiii=Module[\"dynCall_viiii\"]=asm[\"dynCall_viiii\"];Runtime.stackAlloc=Module[\"stackAlloc\"];Runtime.stackSave=Module[\"stackSave\"];Runtime.stackRestore=Module[\"stackRestore\"];Runtime.establishStackSpace=Module[\"establishStackSpace\"];Runtime.setTempRet0=Module[\"setTempRet0\"];Runtime.getTempRet0=Module[\"getTempRet0\"];Module[\"asm\"]=asm;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module[\"calledRun\"])run();if(!Module[\"calledRun\"])dependenciesFulfilled=runCaller};Module[\"callMain\"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module[\"thisProgram\"]),\"i8\",ALLOC_NORMAL)];pad();for(var i=0;i<argc-1;i=i+1){argv.push(allocate(intArrayFromString(args[i]),\"i8\",ALLOC_NORMAL));pad()}argv.push(0);argv=allocate(argv,\"i32\",ALLOC_NORMAL);try{var ret=Module[\"_main\"](argc,argv,0);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e==\"SimulateInfiniteLoop\"){Module[\"noExitRuntime\"]=true;return}else{var toLog=e;if(e&&typeof e===\"object\"&&e.stack){toLog=[e,e.stack]}Module.printErr(\"exception thrown: \"+toLog);Module[\"quit\"](1,e)}}finally{calledMain=true}};function run(args){args=args||Module[\"arguments\"];if(preloadStartTime===null)preloadStartTime=Date.now();if(runDependencies>0){return}preRun();if(runDependencies>0)return;if(Module[\"calledRun\"])return;function doRun(){if(Module[\"calledRun\"])return;Module[\"calledRun\"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(Module[\"_main\"]&&shouldRunNow)Module[\"callMain\"](args);postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout((function(){setTimeout((function(){Module[\"setStatus\"](\"\")}),1);doRun()}),1)}else{doRun()}}Module[\"run\"]=Module.run=run;function exit(status,implicit){if(implicit&&Module[\"noExitRuntime\"]){return}if(Module[\"noExitRuntime\"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status)}if(ENVIRONMENT_IS_NODE){process[\"exit\"](status)}Module[\"quit\"](status,new ExitStatus(status))}Module[\"exit\"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=\"\"}ABORT=true;EXITSTATUS=1;var extra=\"\\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.\";var output=\"abort(\"+what+\") at \"+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module[\"abort\"]=Module.abort=abort;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"]){shouldRunNow=false}run()\n\n\n\n\n\n  return Module;\n};\nfunction Viz(src) {\n  var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n  var format = options.format === undefined ? \"svg\" : options.format;\n  var engine = options.engine === undefined ? \"dot\" : options.engine;\n  var scale = options.scale;\n  var totalMemory = options.totalMemory;\n  var files = options.files === undefined ? [] : options.files;\n  var images = options.images === undefined ? [] : options.images;\n  var i;\n  \n  for (i = 0; i < images.length; i++) {\n    files.push({ path: images[i].path, data: \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\" standalone=\\\"no\\\"?>\\n<!DOCTYPE svg PUBLIC \\\"-//W3C//DTD SVG 1.1//EN\\\" \\\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\\\">\\n<svg width=\\\"\" + images[i].width + \"\\\" height=\\\"\" + images[i].height + \"\\\"></svg>\" });\n  }\n\n  if (format == \"png-image-element\") {\n    return Viz.svgXmlToPngImageElement(render(src, \"svg\", engine, totalMemory, files), scale);\n  } else {\n    return render(src, format, engine, totalMemory, files);\n  }\n}\n\nfunction render(src, format, engine, totalMemory, files) {\n  var graphviz = Module({ TOTAL_MEMORY: totalMemory });\n  var i;\n  \n  for (i = 0; i < files.length; i++) {\n    graphviz[\"ccall\"](\"vizCreateFile\", \"number\", [\"string\", \"string\"], [files[i].path, files[i].data]);\n  }\n  \n  var resultPointer = graphviz[\"ccall\"](\"vizRenderFromString\", \"number\", [\"string\", \"string\", \"string\"], [src, format, engine]);\n  var resultString = graphviz[\"Pointer_stringify\"](resultPointer);\n\n  var errorMessagePointer = graphviz[\"ccall\"](\"vizLastErrorMessage\", \"number\", [], []);\n  var errorMessageString = graphviz[\"Pointer_stringify\"](errorMessagePointer);\n  \n  if (errorMessageString != \"\") {\n    throw new Error(errorMessageString);\n  }\n  \n  return resultString;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\nfunction b64EncodeUnicode(str) {\n  return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function(match, p1) {\n    return String.fromCharCode('0x' + p1);\n  }));\n}\n\nViz.svgXmlToPngImageElement = function(svgXml, scale, callback) {\n  if (scale === undefined) {\n    if (\"devicePixelRatio\" in window && window.devicePixelRatio > 1) {\n      scale = window.devicePixelRatio;\n    } else {\n      scale = 1;\n    }\n  }\n  \n  var pngImage = new Image();\n\n  try {\n    if (typeof fabric === \"object\" && fabric.loadSVGFromString) {\n      fabric.loadSVGFromString(svgXml, function(objects, options) {\n        // If there's something wrong with the SVG, Fabric may return an empty array of objects. Graphviz appears to give us at least one <g> element back even given an empty graph, so we will assume an error in this case.\n        if (objects.length == 0) {\n          if (callback !== undefined) {\n            callback(new Error(\"Error loading SVG with Fabric\"));\n            return;\n          } else {\n            throw new Error(\"Error loading SVG with Fabric\");\n          }\n        }\n      \n        var element = document.createElement(\"canvas\");\n        element.width = options.width;\n        element.height = options.height;\n    \n        var canvas = new fabric.Canvas(element, { enableRetinaScaling: false });\n        var obj = fabric.util.groupSVGElements(objects, options);\n        canvas.add(obj).renderAll();\n    \n        pngImage.src = canvas.toDataURL({ multiplier: scale });\n        pngImage.width = options.width;\n        pngImage.height = options.height;\n      \n        if (callback !== undefined) {\n          callback(null, pngImage);\n        }\n      });\n    } else {\n      var svgImage = new Image();\n\n      svgImage.onload = function() {\n        var canvas = document.createElement(\"canvas\");\n        canvas.width = svgImage.width * scale;\n        canvas.height = svgImage.height * scale;\n\n        var context = canvas.getContext(\"2d\");\n        context.drawImage(svgImage, 0, 0, canvas.width, canvas.height);\n\n        pngImage.src = canvas.toDataURL(\"image/png\");\n        pngImage.width = svgImage.width;\n        pngImage.height = svgImage.height;\n      \n        if (callback !== undefined) {\n          callback(null, pngImage);\n        }\n      }\n    \n      svgImage.onerror = function(e) {\n        var error;\n      \n        if ('error' in e) {\n          error = e.error;\n        } else {\n          error = new Error('Error loading SVG');\n        }\n      \n        if (callback !== undefined) {\n          callback(error);\n        } else {\n          throw error;\n        }\n      }\n    \n      svgImage.src = \"data:image/svg+xml;base64,\" + b64EncodeUnicode(svgXml);\n    }\n  } catch (e) {\n    if (callback !== undefined) {\n      callback(e);\n    } else {\n      throw e;\n    }\n  }\n  \n  if (callback === undefined) {\n    return pngImage;\n  }\n}\n\nViz.svgXmlToPngBase64 = function(svgXml, scale, callback) {\n  Viz.svgXmlToPngImageElement(svgXml, scale, function(err, image) {\n    if (err) {\n      callback(err);\n    } else {\n      callback(null, image.src.slice(\"data:image/png;base64,\".length));\n    }\n  });\n}\nif (typeof module === \"object\" && module.exports) {\n  module.exports = Viz;\n} else {\n  global.Viz = Viz;\n}\n  \n})(this);\n"
  },
  {
    "path": "silk/storage.py",
    "content": "from django.core.files.storage import FileSystemStorage\n\nfrom silk.config import SilkyConfig\n\n\nclass ProfilerResultStorage(FileSystemStorage):\n    # the default storage will only store under MEDIA_ROOT, so we must define our own.\n    def __init__(self):\n        super().__init__(\n            location=SilkyConfig().SILKY_PYTHON_PROFILER_RESULT_PATH,\n            base_url=''\n        )\n        self.base_url = None\n"
  },
  {
    "path": "silk/templates/silk/base/base.html",
    "content": "{% load static %}\n<!DOCTYPE html>\n<html>\n<head>\n    <title>{% block pagetitle %}Silky{% endblock %}</title>\n    <link rel=\"stylesheet\" href=\"{% static \"silk/css/components/fonts.css\" %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static \"silk/css/components/colors.css\" %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static \"silk/lib/jquery-ui-1.13.2.min.css\" %}\"/>\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-32x32.png' %}\" sizes=\"32x32\">\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-16x16.png' %}\" sizes=\"16x16\">\n    <link rel=\"stylesheet\" href=\"{% static \"silk/css/pages/base.css\" %}\"/>\n    {% block style %}\n    {% endblock %}\n    <script src=\"{% static 'silk/lib/jquery-3.6.0.min.js' %}\"></script>\n    <script src=\"{% static 'silk/lib/jquery-ui-1.13.2.min.js' %}\"></script>\n    <script src=\"{% static 'silk/js/components/cell.js' %}\"></script>\n    <script src=\"{% static 'silk/js/pages/base.js' %}\"></script>\n    {% block js %}\n    {% endblock %}\n\n</head>\n\n<body onload=\"{% block onload %}{% endblock %}\" class=\"{% block body_class %}{% endblock %}\">\n{% block top %}\n\n{% endblock %}\n<div id=\"content\">\n    <div id=\"header\">\n        <div class=\"menu\">\n            {% block menu %}\n            {% endblock %}\n        </div>\n        <div id=\"filter\" class=\"menu\">\n            {% block filter %}\n            {% endblock %}\n        </div>\n    </div>\n    <div id=\"data\">\n        {% block data %}\n        {% endblock %}\n    </div>\n</div>\n\n</body>\n</html>\n"
  },
  {
    "path": "silk/templates/silk/base/detail_base.html",
    "content": "{% extends 'silk/base/base.html' %}\n{% load static %}\n{% block style %}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/lib/highlight/foundation.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/heading.css' %}\"/>\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-32x32.png' %}\" sizes=\"32x32\">\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-16x16.png' %}\" sizes=\"16x16\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/numeric.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/detail_base.css' %}\"/>\n{% endblock %}\n\n{% block js %}\n    <script src=\"{% static 'silk/js/components/cell.js' %}\"></script>\n    <script src=\"{% static 'silk/lib/highlight/highlight.pack.js' %}\"></script>\n    <script src=\"{% static 'silk/js/pages/detail_base.js' %}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/base/root_base.html",
    "content": "{% extends \"silk/base/base.html\" %}\n{% load silk_nav %}\n{% load silk_inclusion %}\n{% load static %}\n\n{% block body_class %}\n    cbp-spmenu-push\n{% endblock %}\n\n{% block style %}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/cell.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/row.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/numeric.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static \"silk/lib/jquery.datetimepicker.css\" %}\"/>\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-32x32.png' %}\" sizes=\"32x32\">\n    <link rel=\"icon\" type=\"image/png\" href=\"{% static 'silk/favicon-16x16.png' %}\" sizes=\"16x16\">\n    <!-- Begin Custom Styles -->\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/root_base.css' %}\"/>\n    <!-- End Custom Styles -->\n{% endblock %}\n\n{% block filter %}\n    <div id=\"filter-button\" class=\"menu-item selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <div id=\"filter-item\"><span id=\"num-filters\"><sub>{{ filters | length }}</sub></span></div>\n            </div>\n        </div>\n    </div>\n{% endblock %}\n\n{% block top %}\n    <nav class=\"cbp-spmenu cbp-spmenu-vertical cbp-spmenu-right\" id=\"cbp-spmenu-s2\">\n        <h3>Filters</h3>\n\n        <form id=\"filter-form2\" action=\"\" method=\"post\">\n            {% csrf_token %}\n            {% block filters %}{% endblock %}\n            <input type=\"submit\" style=\"display: none\">\n        </form>\n\n        <div class=\"button-div\">\n            <div class=\"apply-div\" onclick=\"submitEmptyFilters()\">Clear all filters</div>\n        </div>\n        <div class=\"button-div\">\n            <div class=\"apply-div\" onclick=\"submitFilters()\">Apply</div>\n        </div>\n\n    </nav>\n\n{% endblock %}\n\n{% block js %}\n    <script src=\"{% static 'silk/js/components/cell.js' %}\"></script>\n    <script src=\"{% static 'silk/lib/jquery.datetimepicker.js' %}\"></script>\n    <script src=\"{% static 'silk/js/components/filters.js' %}\"></script>\n    <script src=\"{% static 'silk/js/pages/root_base.js' %}\"></script>\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/clear_db.html",
    "content": "{% extends 'silk/base/root_base.html' %}\n{% load silk_inclusion %}\n{% load static %}\n{% block pagetitle %}Silky - Clear DB{% endblock %}\n\n{% block menu %}\n    {% root_menu request %}\n{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/clear_db.css' %}\"/>\n{% endblock %}\n\n{% block js %}\n    {{ block.super }}\n    <script src=\"{% static 'silk/js/pages/clear_db.js' %}\"></script>\n{% endblock %}\n{% block data %}\n    <div class=\"wrapper\">\n        <div class=\"inner\">\n            <h2>Silk Clear DB</h2>\n            <form class=\"cleardb-form\" action=\".\" method=\"post\">\n                {% csrf_token %}\n                <div class=\"cleardb-form-wrapper\">\n                    <label>\n                        <input type=\"checkbox\" name=\"clear_requests\" disabled=\"disabled\"/>\n                        Requests\n                    </label>\n                    <label>\n                        <input type=\"checkbox\" name=\"clear_profiling\" disabled=\"disabled\"/>\n                        Profiling\n                    </label>\n                    <label>\n                        <input type=\"checkbox\" name=\"clear_all\"/>\n                        All\n                    </label>\n                </div>\n                <button class=\"btn\">Clear</button>\n            </form>\n            <div class=\"msg\">{{ msg|linebreaks }}</div>\n        </div>\n    </div>\n\n{% endblock %}\n\n{# Hide filter hamburger menu #}\n{% block top %}{% endblock %}\n{% block filter %}{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/cprofile.html",
    "content": "{% extends \"silk/base/detail_base.html\" %}\n{% load silk_filters %}\n{% load silk_nav %}\n{% load silk_inclusion %}\n{% load static %}\n\n{% block pagetitle %}Silky - CProfile - {{ silk_request.path }}{% endblock %}\n\n{% block js %}\n    <script type=\"text/javascript\" src=\"{% static 'silk/lib/viz-lite.js' %}\"></script>\n    <script type=\"text/javascript\" src=\"{% static 'silk/lib/svg-pan-zoom.min.js' %}\"></script>\n    {{ block.super }}\n{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/summary.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/cprofile.css' %}\">\n{% endblock %}\n\n{% block menu %}\n    {% request_menu request silk_request %}\n{% endblock %}\n\n\n{% block data %}\n    <div class=\"wrapper\">\n        <div id=\"query-div\">\n            {% if silk_request.pyprofile %}\n            <div id=\"pyprofile-div\">\n                <div class=\"heading\">\n                    <div class=\"inner-heading\">CProfile</div>\n                </div>\n                <div class=\"description\">\n                    The below is a dump from the cPython profiler.\n                </div>\n                {% if silk_request.prof_file %}\n                Click <a href=\"{% url 'silk:request_profile_download' request_id=silk_request.pk %}\">here</a> to download profile.\n                {% endif %}\n                <pre class=\"pyprofile\">{{ silk_request.pyprofile }}</pre>\n                {% endif %}\n            </div>\n        </div>\n    </div>\n\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/inclusion/code.html",
    "content": "<pre><code>...\n{% for line in code %}<span class=\"line {% if line.strip in actual_line %}the-line{% endif %}\">{{ line }}</span><br>{% endfor %}...</code></pre>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/heading.html",
    "content": "<div class=\"heading\">\n    <div class=\"inner-heading\">\n        {{ text }}\n    </div>\n</div>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/profile_menu.html",
    "content": "{% load silk_nav %}\n<a href=\"\n    {% if silk_request %}\n        {% url \"silk:request_profiling\" silk_request.id %}\n    {% else %}\n        {% url \"silk:profiling\" %}\n    {% endif %}\n\">\n    <div class=\"menu-item selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">&larr;</div>\n        </div>\n    </div>\n</a>\n<div class=\"menu-item selectable-menu-item\n            {% if silk_request %}\n                {% navactive request 'silk:request_profile_detail' silk_request.id profile.id %}\n            {% else %}\n                {% navactive request 'silk:profile_detail' profile.id %}\n            {% endif %}\">\n    <a href=\"\n        {% if silk_request %}\n            {% url \"silk:request_profile_detail\" silk_request.id profile.id %}\n        {% else %}\n            {% url \"silk:profile_detail\" profile.id %}\n        {% endif %}\n    \">\n        <div class=\"menu-item-outer \">\n            <div class=\"menu-item-inner\">Detail</div>\n        </div>\n    </a>\n</div>\n<div class=\"menu-item selectable-menu-item\n            {% if silk_request %}\n                 {% navactive request 'silk:request_and_profile_sql' silk_request.id profile.id %}\n            {% else %}\n                {% navactive request 'silk:profile_sql' profile.id %}\n            {% endif %}\">\n    <a href=\"\n        {% if silk_request %}\n            {% url \"silk:request_and_profile_sql\" silk_request.id profile.id %}\n        {% else %}\n            {% url \"silk:profile_sql\" profile.id %}\n        {% endif %}\n    \">\n        <div class=\"menu-item-outer\n        \">\n            <div class=\"menu-item-inner\">Queries</div>\n        </div>\n    </a>\n</div>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/profile_summary.html",
    "content": "{% load silk_filters %}\n<div class=\"cell\">\n    <div class=\"timestamp-div\">{{ profile.start_time | silk_date_time }}</div>\n    <div class=\"name-div\">{% if profile.name %}{{ profile.name }}{% elif profile.func_name %}{{ profile.func_name }}{% endif %}</div>\n    <div class=\"path-div\">{{ profile.path }}</div>\n    <div class=\"time-taken-div\">\n        <span class=\"numeric\">{{ profile.time_taken|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"appendage\">overall</span>\n    </div>\n    <div class=\"time-taken-queries-div\">\n        <span class=\"numeric\">{{ profile.time_spent_on_sql_queries|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"appenage\">on queries</span></div>\n    <div class=\"num-queries-div\">\n        <span class=\"numeric\">{{ profile.queries.count }}</span>\n        <span class=\"appendage\">queries</span>\n    </div>\n</div>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/request_menu.html",
    "content": "{% load silk_nav %}\n<a href=\"\n\n    {% url \"silk:requests\" %}\n\">\n    <div class=\"menu-item selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">&larr;</div>\n        </div>\n    </div>\n</a>\n<a href=\"{% url \"silk:request_detail\" silk_request.id %}\">\n    <div class=\"menu-item {% navactive request 'silk:request_detail' silk_request.id %} selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Details</div>\n        </div>\n    </div>\n</a>\n<a href=\"{% url \"silk:request_sql\" silk_request.id %}\">\n    <div class=\"menu-item {% navactive request 'silk:request_sql' silk_request.id %} selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">SQL</div>\n        </div>\n    </div>\n</a>\n<a href=\"{% url \"silk:request_profiling\" silk_request.id %}\">\n    <div class=\"menu-item {% navactive request 'silk:request_profiling' silk_request.id %} selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Profiling</div>\n        </div>\n    </div>\n</a>\n\n<a href=\"{% url \"silk:cprofile\" silk_request.id %}\">\n    <div class=\"menu-item {% navactive request 'silk:cprofile' silk_request.id %} selectable-menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">CProfile</div>\n        </div>\n    </div>\n</a>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/request_summary.html",
    "content": "{% load silk_filters %}\n<div class=\"cell\">\n    <div class=\"timestamp-div\">{{ silk_request.start_time | silk_date_time }}</div>\n    <div class=\"method-div\">{% if silk_request.response.status_code %}{{ silk_request.response.status_code }} {% endif %}{{ silk_request.method }}</div>\n    <div class=\"path-div\">{{ silk_request.path }}</div>\n    <div class=\"time-taken-div\">\n        <span class=\"numeric\">{{ silk_request.time_taken|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"appendage\">overall<span class=\"meta\">{% if silk_request.total_meta_time %} +{{ silk_request.total_meta_time | floatformat:\"0\" }}<span class=\"unit\">ms</span>{% endif %}</span></span>\n    </div>\n    <div class=\"time-taken-queries-div\">\n        <span class=\"numeric\">{{ silk_request.time_spent_on_sql_queries|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"appenage\">on queries<span class=\"meta\">{% if silk_request.meta_time_spent_queries %} +{{ silk_request.meta_time_spent_queries | floatformat:\"0\" }}<span class=\"unit\">ms</span>{% endif %}</span></span>\n    </div>\n    <div class=\"num-queries-div\">\n        <span class=\"numeric\">{{ silk_request.num_sql_queries }}</span>\n        <span class=\"appendage\">queries<span class=\"meta\">{% if silk_request.meta_num_queries %} +{{ silk_request.meta_num_queries  }}{% endif %}</span></span>\n    </div>\n</div>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/request_summary_row.html",
    "content": "{% load silk_filters %}\n    <div class=\"col timestamp-div\">{{ silk_request.start_time | silk_date_time }}</div>\n    <div class=\"col method-div\">{% if silk_request.response.status_code %}{{ silk_request.response.status_code }} {% endif %}{{ silk_request.method }}</div>\n    <div class=\"col path-div\">{{ silk_request.path }}</div>\n    <div class=\"col time-taken-div spacing\">\n        <span class=\"numeric\">{{ silk_request.time_taken|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"appendage\">overall<span class=\"meta\">{% if silk_request.total_meta_time %} +{{ silk_request.total_meta_time | floatformat:\"0\" }}<span class=\"unit\">ms</span>{% endif %}</span></span>\n    </div>\n    <div class=\"col time-taken-queries-div spacing\">\n        <span class=\"col numeric\">{{ silk_request.time_spent_on_sql_queries|floatformat:\"0\" }}<span class=\"unit\">ms</span></span>\n        <span class=\"col appenage\">on queries<span class=\"meta\">{% if silk_request.meta_time_spent_queries %} +{{ silk_request.meta_time_spent_queries | floatformat:\"0\" }}<span class=\"unit\">ms</span>{% endif %}</span></div>\n    <div class=\"col num-queries-div spacing\">\n        <span class=\"col numeric\">{{ silk_request.num_sql_queries }}</span>\n        <span class=\"col appendage\">queries<span class=\"meta\">{% if silk_request.meta_num_queries %} +{{ silk_request.meta_num_queries  }}{% endif %}</span></span>\n    </div>\n"
  },
  {
    "path": "silk/templates/silk/inclusion/root_menu.html",
    "content": "{% load silk_nav %}\n<div class=\"menu-item selectable-menu-item {% navactive request 'silk:summary' %}\">\n    <a href=\"{% url \"silk:summary\" %}\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Summary</div>\n        </div>\n    </a>\n</div>\n<div class=\"menu-item selectable-menu-item {% navactive request 'silk:requests' %}\">\n    <a href=\"{% url \"silk:requests\" %}\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Requests</div>\n        </div>\n    </a>\n</div>\n<div class=\"menu-item selectable-menu-item {% navactive request 'silk:profiling' %}\">\n    <a href=\"{% url \"silk:profiling\" %}\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Profiling</div>\n        </div>\n    </a>\n</div>\n<div class=\"menu-item selectable-menu-item {% navactive request 'silk:cleardb' %}\">\n    <a href=\"{% url \"silk:cleardb\" %}\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">Clear DB</div>\n        </div>\n    </a>\n</div>\n"
  },
  {
    "path": "silk/templates/silk/profile_detail.html",
    "content": "{% extends \"silk/base/detail_base.html\" %}\n{% load silk_filters %}\n{% load silk_nav %}\n{% load silk_inclusion %}\n{% load static %}\n\n{% block pagetitle %}Silky - Profile Detail - {{ silk_request.path }}{% endblock %}\n\n{% block js %}\n    <script type=\"text/javascript\" src=\"{% static 'silk/lib/viz-lite.js' %}\"></script>\n    <script type=\"text/javascript\" src=\"{% static 'silk/lib/svg-pan-zoom.min.js' %}\"></script>\n    {{ block.super }}\n{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/summary.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/profile_detail.css' %}\">\n{% endblock %}\n\n{% block menu %}\n    {% profile_menu request profile silk_request %}\n{% endblock %}\n\n{% block data %}\n    <div class=\"wrapper\">\n        <div id=\"query-div\">\n            <div id=\"query-info-div\">\n                {% profile_summary profile %}\n            </div>\n            <div class=\"heading\">\n                <div class=\"inner-heading\">\n                    {% if profile.file_path and profile.line_num %}\n                        {{ profile.file_path }}:{{ profile.line_num }}{% if profile.end_line_num %}:{{ profile.end_line_num }}{% endif %}\n                    {% else %}\n                        Location\n                    {% endif %}\n                </div>\n            </div>\n            <div class=\"description\">\n                Below shows where in your code this profile was defined. If your profile was defined dynamically (i.e in your settings.py),\n                then this will show the range of lines that are covered by the profiling.\n            </div>\n            {% if code %}\n                <pre id=\"code\"><code>{% code code actual_line %}</code></pre>\n            {% elif code_error %}\n                <div id=\"error-div\">\n                    {{ code_error }}\n                </div>\n            {% endif %}\n\n            {% if silk_request.prof_file %}\n            <div class=\"heading\">\n                <div class=\"inner-heading\">Profile graph</div>\n            </div>\n            <div class=\"description\">\n                Below is a graph of the profile, with the nodes coloured by the time taken (red is more time). This should give a good indication of the slowest path through the profiled code.</div>\n\n                <span>Prune nodes taking up less than </span>\n                <input id='percent' type=\"text\" value='5'\n                       onkeypress='return event.charCode >= 48 && event.charCode <= 57 && $(\"#percent\").val().length < 2'\n                       oninput=\"createViz()\"\n                >\n\n                </input>\n                <span>% of the total time</span>\n\n            </div>\n            <div id=\"graph-div\">\n            </div>\n            {% url 'silk:request_profile_dot' request_id=silk_request.pk as profile_dot_url %}\n            {{ profile_dot_url|json_script:'profileDotURL' }}\n            <script src=\"{% static 'silk/js/pages/profile_detail.js' %}\"></script>\n            {% endif %}\n\n            {% if silk_request.pyprofile %}\n            <div id=\"pyprofile-div\">\n                <div class=\"heading\">\n                    <div class=\"inner-heading\">Python Profiler</div>\n                </div>\n                <div class=\"description\">\n                    The below is a dump from the cPython profiler.\n                </div>\n                {% if silk_request.prof_file %}\n                Click <a href=\"{% url 'silk:request_profile_download' request_id=silk_request.pk %}\">here</a> to download profile.\n                {% endif %}\n                <pre class=\"pyprofile\">{{ silk_request.pyprofile }}</pre>\n                {% endif %}\n            </div>\n\n        </div>\n    </div>\n\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/profiling.html",
    "content": "{% extends 'silk/base/root_base.html' %}\n{% load static %}\n{% load silk_inclusion %}\n\n{% block pagetitle %}Silky - Profiling - {{ silk_request.path }}{% endblock %}\n\n{% block menu %}\n    {% if silk_request %}\n        {% request_menu request silk_request %}\n    {% else %}\n        {% root_menu request %}\n    {% endif %}\n{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/profiling.css' %}\"/>\n{% endblock %}\n\n{% block filter %}\n    <form id=\"filter-form\" action=\".\" method=\"get\"></form>\n\n    <div class=\"menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Show:\n                    <select name=\"show\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_show %}\n                            <option value=\"{{ option }}\"\n                                    {% if option == show %}selected{% endif %}>{{ option }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    <div class=\"menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Order:\n                    <select name=\"order_by\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_order_by %}\n                            <option value=\"{{ option }}\"\n                                    {% if option == order_by %}selected{% endif %}>{{ option }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    {{ block.super }}\n{% endblock %}\n\n{% block js %}\n    {{ block.super }}\n    <script src=\"{% static 'silk/js/pages/profiling.js' %}\"></script>\n{% endblock %}\n\n{% block filters %}\n    <h4>Profile</h4>\n\n    <div class=\"filter-section\">Took longer than\n\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"OverallTimeFilter\"\n                   name=\"filter-overalltime-typ\"/>\n            <input type=\"text\"\n                   placeholder=\"milliseconds\"\n                   form=\"filter-form2\"\n                   name=\"filter-overalltime-value\"\n                   value=\"{{ filters.overalltime.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        milliseconds,\n        executed more than\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"NumQueriesFilter\"\n                   name=\"filter-numqueriesfilter-typ\"/>\n            <input\n                    type=\"text\"\n                    placeholder=\"n\"\n                    form=\"filter-form2\"\n                    name=\"filter-numqueriesfilter-value\"\n                    value=\"{{ filters.numqueriesfilter.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        queries,\n        and spent longer than\n        <div class=\"resizing-input\">\n\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"TimeSpentOnQueriesFilter\"\n                   name=\"filter-timespentfilter-typ\"/>\n            <input\n                    type=\"text\"\n                    placeholder=\"milliseconds\"\n                    form=\"filter-form2\"\n                    name=\"filter-timespentfilter-value\"\n                    value=\"{{ filters.timespentfilter.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        milliseconds executing queries.\n    </div>\n    <h4>Date Range</h4>\n    <div class=\"filter-section\">\n        Executed\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"SecondsFilter\"\n                   name=\"filter-seconds-typ\">\n            <input type=\"text\"\n                   placeholder=\"seconds\"\n                   form=\"filter-form2\"\n                   name=\"filter-seconds-value\"\n                   value=\"{{ filters.seconds.value }}\"\n                    >\n            <span style=\"display:none\"></span>\n        </div>\n        seconds ago, before\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"BeforeDateFilter\"\n                   name=\"filter-beforedate-typ\">\n            <input class=\"datetimepicker\"\n                   type=\"text\"\n                   placeholder=\"date\"\n                   form=\"filter-form2\"\n                   name=\"filter-beforedate-value\"\n                   value=\"{{ filters.beforedate.value }}\"\n                    />\n            <span style=\"display:none\"></span>\n        </div>\n        , and after\n        <div class=\"resizing-input\">\n\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"AfterDateFilter\"\n                   name=\"filter-afterdate-typ\">\n            <input class=\"datetimepicker\"\n                   type=\"text\"\n                   placeholder=\"date\"\n                   form=\"filter-form2\"\n                   name=\"filter-afterdate-value\"\n                   value=\"{{ filters.afterdate.value }}\"\n                    >\n            <span style=\"display:none\"></span>\n        </div>\n        .\n    </div>\n    <h4>Function</h4>\n    <div class=\"filter-section\">\n        <div>\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"NameFilter\"\n                   name=\"filter-name-typ\">\n            <label>Name:\n                <select form=\"filter-form2\" name=\"filter-name-value\">\n                    <option value=\"\" {% if not filters.name.value %}selected{% endif %}></option>\n                    {% for name in options_names %}\n                        <option {% if name == filters.name.value %}selected{% endif %}>{{ name }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n\n        </div>\n        <div>\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"FunctionNameFilter\"\n                   name=\"filter-functionname-typ\">\n            <label>Function:\n                <select form=\"filter-form2\" name=\"filter-functionname-value\">\n                    <option value=\"\" {% if not filters.functionname.value %}selected{% endif %}></option>\n                    {% for func_name in options_func_names %}\n                        <option {% if func_name == filters.functionname.value %}selected{% endif %}>{{ func_name }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n\n        </div>\n\n\n    </div>\n{% endblock %}\n\n{% block data %}\n\n    {% if results %}\n        <div class=\"container\">\n            <h2>Silk Profiler</h2>\n        </div>\n        {% for profile in results %}\n            <a href=\"\n            {% if silk_request %}\n                {% url \"silk:request_profile_detail\" request_id=silk_request.pk profile_id=profile.pk %}\n            {% else %}\n                {% url \"silk:profile_detail\" profile_id=profile.pk %}\n            {% endif %}\n            \">\n                {% profile_summary profile %}\n            </a>\n        {% endfor %}\n    {% else %}\n        <div class=\"container\">\n            <h2>Silk Profiler</h2>\n\n            <div class=\"description\">\n                No Silk profiling was performed for this request. Please check that:\n                <ul>\n                    <li>you use the <code>@silk_profile</code> decorator or <code>with silk_profile():</code> context manager on the correct view</li>\n                    <li>you have <code>\"silk\"</code> in <code>INSTALLED_APPS</code></li>\n                    <li>you have <code>\"silk.middleware.SilkyMiddleware\"</code> in <code>MIDDLEWARE</code></li>\n                    <li>you have <code>SILKY_PYTHON_PROFILER</code> set to <code>True</code></li>\n                </ul>\n            </div>\n        </div>\n    {% endif %}\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/raw.html",
    "content": "{% load static %}\n<html>\n<head>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/fonts.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/lib/highlight/foundation.css' %}\"/>\n\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/raw.css' %}\"/>\n    <script src=\"{% static 'silk/lib/highlight/highlight.pack.js' %}\"></script>\n    <script src=\"{% static 'silk/js/pages/raw.js' %}\"></script>\n\n</head>\n<body>\n<pre><code>{{ body }}</code></pre>\n\n</body>\n</html>\n"
  },
  {
    "path": "silk/templates/silk/request.html",
    "content": "{% extends \"silk/base/base.html\" %}\n{% load silk_filters %}\n{% load silk_inclusion %}\n{% load static %}\n{% block pagetitle %}Silky - Request - {{ silk_request.path }}{% endblock %}\n\n{% block style %}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/cell.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/numeric.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/heading.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/request.css' %}\"/>\n    <link rel=\"stylesheet\" href=\"{% static 'silk/lib/highlight/foundation.css' %}\"/>\n{% endblock %}\n{% block js %}\n    <script src=\"{% static 'silk/lib/highlight/highlight.pack.js' %}\"></script>\n    <script src=\"{% static 'silk/js/pages/request.js' %}\"></script>\n    <script src=\"{% static 'silk/js/components/cell.js' %}\"></script>\n{% endblock %}\n{% block onload %}\n{% endblock %}\n\n{% block menu %}\n    {% request_menu request silk_request %}\n{% endblock %}\n\n{% block data %}\n    <div class=\"wrapper\">\n        <div id=\"request-summary\">\n            {% request_summary silk_request %}\n        </div>\n        <div id=\"request-info\">\n            {% if query_params %}\n                {% heading 'Query Parameters' %}\n                <pre><code>{{ query_params }}</code></pre>\n            {% endif %}\n            {% heading 'Request Headers' %}\n            <table class=\"headers\">\n                {% for k,v in silk_request.headers.items %}\n                    <tr>\n                        <td class=\"key\">{{ k.upper }}</td>\n                        <td class=\"value\">{{ v }}</td>\n                    </tr>\n                {% endfor %}\n            </table>\n            {% if silk_request.raw_body %}\n                {% heading 'Raw Request Body' %}\n                {% if silk_request.raw_body|length > 1000 %}\n                    The raw request body is <b>{{ silk_request.raw_body|length }}</b> characters long\n                    and hence is <b>too big</b> to show here.\n                    Click <a href=\"{% url \"silk:raw\" silk_request.pk %}?typ=request&subtyp=raw\">here</a> to view the raw request body.\n                {% else %}\n                    <pre>{{ silk_request.raw_body }}</pre>\n                {% endif %}\n            {% endif %}\n            {% if silk_request.body %}\n                {% heading 'Request Body' %}\n                {% if silk_request.body|length > 1000 %}\n                    The processed request body is <b>{{ silk_request.body|length }}</b> characters long\n                    and hence is <b>too big</b> to show here.\n                    Click <a href=\"{% url \"silk:raw\" silk_request.pk %}?typ=request&subtyp=processed\">here</a> to view the request body.\n                {% else %}\n                    <div class=\"description\">\n                        This is the body of the HTTP request represented as JSON for easier reading.\n                    </div>\n                    <pre><code>{{ silk_request.body }}</code></pre>\n                {% endif %}\n            {% endif %}\n            {% if silk_request.response.headers %}\n                {% heading 'Response Headers' %}\n                <table class=\"headers\">\n                    {% for k, v in silk_request.response.headers.items %}\n                        <tr>\n                            <td class=\"key\">{{ k.upper }}</td>\n                            <td class=\"value\">{{ v }}</td>\n                        </tr>\n                    {% endfor %}\n                </table>\n            {% endif %}\n            {% if silk_request.response.raw_body %}\n                {% heading 'Raw Response Body' %}\n                {% with raw_body=silk_request.response.raw_body_decoded %}\n                    {% if raw_body|length > 1000 %}\n                        The raw response body is <b>{{ raw_body|length }}</b> characters long\n                        and hence is <b>too big</b> to show here.\n                        Click <a href=\"{% url \"silk:raw\" silk_request.pk %}?typ=response&subtyp=raw\">here</a> to view the raw response body.\n                    {% else %}\n                        <pre>{{ raw_body }}</pre>\n                    {% endif %}\n                {% endwith %}\n            {% endif %}\n            {% if silk_request.response.body %}\n                {% heading 'Response Body' %}\n                <div class=\"description\">\n                    This is the body of the HTTP response represented as JSON for easier reading.\n                </div>\n                {% if silk_request.response.body|length > 1000 %}\n                    The response body is <b>{{ silk_request.response.body|length }}</b> characters long\n                    and hence is <b>too big</b> to show here.\n                    Click <a href=\"{% url \"silk:raw\" silk_request.pk %}?typ=response&subtyp=processed\">here</a> to view the response body.\n                {% else %}\n                    <pre><code>{{ silk_request.response.body }}</code></pre>\n                {% endif %}\n            {% endif %}\n            {% if curl %}\n                {% heading 'Curl' %}\n                <div class=\"description\">\n                    Curl is a command-line utility for transferring data from servers. Paste the following into\n                    a terminal to repeat this request via command line.\n                </div>\n                <pre id=\"pre-curl\"><code>{{ curl.strip }}</code></pre>\n            {% endif %}\n            {% if client %}\n                {% heading 'Django Test Client' %}\n                <div class=\"description\">\n                    The following is working python code that makes use of the Django test client. It can be used to\n                    replicate this request from within a Django unit test, or simply as standalone Python.\n                </div>\n                <pre id=\"pre-curl\"><code>{{ client.strip }}</code></pre>\n            {% endif %}\n        </div>\n    </div>\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/requests.html",
    "content": "{% extends 'silk/base/root_base.html' %}\n{% load silk_inclusion %}\n{% load static %}\n\n{% block pagetitle %}Silky - Requests{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/requests.css' %}\"/>\n{% endblock %}\n\n{% block menu %}\n    {% root_menu request %}\n{% endblock %}\n\n{% block js %}\n    {{ block.super }}\n    <script src=\"{% static 'silk/js/pages/requests.js' %}\"></script>\n{% endblock %}\n\n{% block filter %}\n    <form id=\"filter-form\" action=\".\" method=\"get\"></form>\n    <div class=\"menu-item \">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>View:\n                    <select name=\"view_style\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_view_style %}\n                            <option value=\"{{ option.value }}\"\n                                    {% if option.value == view_style %}selected{% endif %}>{{ option.label }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    <div class=\"menu-item \">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Show:\n                    <select name=\"show\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_show %}\n                            <option value=\"{{ option }}\"\n                                    {% if option == show %}selected{% endif %}>{{ option }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    <div class=\"menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Order:\n                    <select name=\"order_by\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_order_by %}\n                            <option value=\"{{ option.value }}\"\n                                    {% if option.value == order_by %}selected{% endif %}>{{ option.label }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    <div class=\"menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Order:\n                    <select name=\"order_dir\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_order_dir %}\n                            <option value=\"{{ option.value }}\"\n                                    {% if option.value == order_dir %}selected{% endif %}>{{ option.label }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    {{ block.super }}\n{% endblock %}\n>\n{% block filters %}\n    <h4>Request</h4>\n\n    <div class=\"filter-section\">Took longer than\n\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"OverallTimeFilter\"\n                   name=\"filter-overalltime-typ\"/>\n            <input type=\"text\"\n                   placeholder=\"milliseconds\"\n                   form=\"filter-form2\"\n                   name=\"filter-overalltime-value\"\n                   value=\"{{ filters.overalltime.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        milliseconds,\n        executed more than\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"NumQueriesFilter\"\n                   name=\"filter-numqueriesfilter-typ\"/>\n            <input\n                    type=\"text\"\n                    placeholder=\"n\"\n                    form=\"filter-form2\"\n                    name=\"filter-numqueriesfilter-value\"\n                    value=\"{{ filters.numqueriesfilter.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        queries,\n        and spent longer than\n        <div class=\"resizing-input\">\n\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"TimeSpentOnQueriesFilter\"\n                   name=\"filter-timespentfilter-typ\"/>\n            <input\n                    type=\"text\"\n                    placeholder=\"milliseconds\"\n                    form=\"filter-form2\"\n                    name=\"filter-timespentfilter-value\"\n                    value=\"{{ filters.timespentfilter.value }}\"/>\n            <span style=\"display:none\"></span>\n        </div>\n        milliseconds executing queries.\n    </div>\n    <h4>Date Range</h4>\n    <div class=\"filter-section\">\n        Executed\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"SecondsFilter\"\n                   name=\"filter-seconds-typ\">\n            <input type=\"text\"\n                   placeholder=\"seconds\"\n                   form=\"filter-form2\"\n                   name=\"filter-seconds-value\"\n                   value=\"{{ filters.seconds.value }}\"\n                    >\n            <span style=\"display:none\"></span>\n        </div>\n        seconds ago, before\n        <div class=\"resizing-input\">\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"BeforeDateFilter\"\n                   name=\"filter-beforedate-typ\">\n            <input class=\"datetimepicker\"\n                   type=\"text\"\n                   placeholder=\"date\"\n                   form=\"filter-form2\"\n                   name=\"filter-beforedate-value\"\n                   value=\"{{ filters.beforedate.value }}\"\n                    />\n            <span style=\"display:none\"></span>\n        </div>\n        , and after\n        <div class=\"resizing-input\">\n\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"AfterDateFilter\"\n                   name=\"filter-afterdate-typ\">\n            <input class=\"datetimepicker\"\n                   type=\"text\"\n                   placeholder=\"date\"\n                   form=\"filter-form2\"\n                   name=\"filter-afterdate-value\"\n                   value=\"{{ filters.afterdate.value }}\"\n                    >\n            <span style=\"display:none\"></span>\n        </div>\n        .\n    </div>\n    <h4>View</h4>\n    <div class=\"filter-section\">\n        <div>\n           <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"ViewNameFilter\"\n                   name=\"filter-viewname-typ\">\n            <label>View:\n                <select  form=\"filter-form2\" name=\"filter-viewname-value\">\n                    <option value=\"\" {% if not filters.viewname.value %}selected{% endif %}></option>\n                    {% for view_name in view_names %}\n                        <option {% if view_name == filters.viewname.value%}selected{% endif %}>{{ view_name }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n\n        </div>\n        <div>\n                 <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"PathFilter\"\n                   name=\"filter-path-typ\">\n            <label>Path:\n                <select form=\"filter-form2\" name=\"filter-path-value\">\n                    <option value=\"\" {% if not filters.path.value %}selected{% endif %}></option>\n                    {% for path in options_paths %}\n                        <option {% if path == filters.path.value%}selected{% endif %}>{{ path }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n\n        </div>\n\n        <div>\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"StatusCodeFilter\"\n                   name=\"filter-status_code-typ\">\n            <label>Status Code:\n                <select form=\"filter-form2\" name=\"filter-status_code-value\">\n                    <option value=\"\" {% if not filters.status_code.value %}selected{% endif %}></option>\n                    {% for status_code in options_status_codes %}\n                        <option {% if status_code == filters.status_code.value %}selected{% endif %}>{{ status_code }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n        </div>\n\n        <div>\n            <input form=\"filter-form2\"\n                   class=\"typ\"\n                   type=\"hidden\"\n                   value=\"MethodFilter\"\n                   name=\"filter-method-typ\">\n            <label>Method:\n                <select form=\"filter-form2\" name=\"filter-method-value\">\n                    <option value=\"\" {% if not filters.method.value %}selected{% endif %}></option>\n                    {% for method in options_methods %}\n                        <option {% if method == filters.method.value %}selected{% endif %}>{{ method }}</option>\n                    {% endfor %}\n                </select>\n            </label>\n        </div>\n\n\n    </div>\n{% endblock %}\n\n{% block data %}\n    {% if results %}\n        {% if view_style == \"row\" %}\n            <div class=\"row-wrapper\">\n                {% for silk_request in results %}\n                    <a href=\"{% url 'silk:request_detail' request_id=silk_request.pk %}\" class=\"row\">\n                        {% request_summary_row silk_request %}\n                    </a>\n                {% endfor %}\n            </div>\n        {% else %}\n            {% for silk_request in results %}\n                <a href=\"{% url 'silk:request_detail' request_id=silk_request.pk %}\">\n                    {% request_summary silk_request %}\n                </a>\n            {% endfor %}\n        {% endif %}\n    {% else %}\n        <div class=\"container\">\n            <h2>No matches found</h2>\n            <div class=\"description\">\n                No requests were found with current set of filters. Please alter your filters and try again.\n            </div>\n        </div>\n    {% endif %}\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/sql.html",
    "content": "{% extends 'silk/base/base.html' %}\n\n{% load silk_nav %}\n{% load silk_filters %}\n{% load static %}\n{% load silk_inclusion %}\n{% load silk_urls %}\n\n{% block pagetitle %}Silky - SQL - {{ silk_request.path }}{% endblock %}\n\n{% block js %}\n  <script type=\"text/javascript\" src=\"{% static 'silk/lib/sortable.js' %}\"></script>\n  {{ block.super }}\n  <script src=\"{% static 'silk/js/pages/sql.js' %}\"></script>\n{% endblock %}\n\n{% block style %}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/sql.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/colors.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/numeric.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/summary.css' %}\">\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/components/cell.css' %}\">\n{% endblock %}\n\n{% block filter %}\n    <form id=\"filter-form\" action=\".\" method=\"get\"></form>\n\n    <div class=\"menu-item\">\n        <div class=\"menu-item-outer\">\n            <div class=\"menu-item-inner\">\n                <label>Show:\n                    <select name=\"per_page\" form=\"filter-form\" onchange=\"this.form.submit();\">\n                        {% for option in options_page_size %}\n                            <option value=\"{{ option }}\"\n                                    {% if option == per_page %}selected{% endif %}>{{ option }}</option>\n                        {% endfor %}\n                    </select>\n                </label>\n            </div>\n        </div>\n    </div>\n    {{ block.super }}\n{% endblock %}\n\n{% block menu %}\n    {% if profile %}\n        {% profile_menu request profile silk_request %}\n    {% elif silk_request %}\n        {% request_menu request silk_request %}\n    {% endif %}\n{% endblock %}\n\n\n{% block data %}\n    {{ block.super }}\n    <div class=\"wrapper\">\n        {% if profile or silk_request %}\n            <div id=\"query-div\">\n            <div id=\"query-info-div\">\n        {% endif %}\n        {% if profile %}\n            {% profile_summary profile %}\n        {% endif %}\n        {% if silk_request %}\n            {% request_summary silk_request %}\n        {% endif %}\n        {% if profile or silk_request %}\n            </div>\n            </div>\n        {% endif %}\n        <div id=\"table-div\">\n\n            <table class=\"sortable\">\n                <tr>\n                    <th class=\"left-aligned\">At</th>\n                    <th class=\"left-aligned\">Action</th>\n                    <th class=\"left-aligned\">Tables</th>\n                    <th class=\"right-aligned\">Num. Joins</th>\n                    <th class=\"right-aligned\">Execution Time (ms)</th>\n                </tr>\n                {% for sql_query in items %}\n                    {% sql_detail_url silk_request profile sql_query as detail_url %}\n                    <tr class=\"data-row\" data-sql-detail-url=\"{{ detail_url }}\">\n                        <td class=\"left-aligned\">+{{ sql_query.start_time_relative }}</td>\n                        <td class=\"left-aligned\">{{ sql_query.first_keywords }}</td>\n                        <td class=\"left-aligned\">{{ sql_query.tables_involved|join:\", \" }}</td>\n                        <td class=\"right-aligned\">{{ sql_query.num_joins }}</td>\n                        <td class=\"right-aligned\">{{ sql_query.time_taken | floatformat:6 }}</td>\n                    </tr>\n                {% endfor %}\n\n            </table>\n\n            {% if items.paginator.num_pages > 1 %}\n            <div id=\"table-pagination\" class=\"pagination\">\n                <div class=\"current\">\n                    Page {{ items.number }} of {{ items.paginator.num_pages }}.\n                </div>\n\n                <div class=\"step-links\">\n                    {% if items.has_previous %}\n                        <a href=\"?page={{ items.previous_page_number }}&per_page={{ per_page }}\">previous</a>\n                    {% else %}\n                        previous\n                    {% endif %}\n                    |\n                    {% if items.has_next %}\n                        <a href=\"?page={{ items.next_page_number }}&per_page={{ per_page }}\">next</a>\n                    {% else %}\n                        next\n                    {% endif %}\n                </div>\n            </div>\n            {% endif %}\n        </div>\n    </div>\n\n\n\n\n\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/sql_detail.html",
    "content": "{% extends \"silk/base/detail_base.html\" %}\n{% load static %}\n{% load silk_filters %}\n{% load silk_nav %}\n{% load silk_inclusion %}\n\n{% block pagetitle %}Silky - SQL Detail - {{ silk_request.path }}{% endblock %}\n\n{% block js %}\n    {{ block.super }}\n    <script src=\"{% static 'silk/js/pages/sql_detail.js' %}\"></script>\n{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/sql_detail.css' %}\"/>\n{% endblock %}\n\n{% block menu %}\n\n    <a href=\"\n        {% if silk_request and profile %}\n            {% url \"silk:request_and_profile_sql\" silk_request.id profile.id %}\n        {% elif silk_request %}\n            {% url \"silk:request_sql\" silk_request.pk %}\n        {% elif profile %}\n            {% url \"silk:profile_sql\" profile.pk %}\n        {% endif %}\n    \">\n        <div class=\"menu-item selectable-menu-item\">\n            <div class=\"menu-item-outer\">\n                <div class=\"menu-item-inner\">&larr;</div>\n            </div>\n        </div>\n    </a>\n\n    <div class=\"menu-item menu-item-selected\">\n        <div class=\"menu-item-outer \">\n            <div class=\"menu-item-inner\">SQL Query</div>\n        </div>\n    </div>\n{% endblock %}\n\n{% block data %}\n    <div class=\"wrapper\">\n        <div id=\"query-div\">\n            <pre id=\"query\"><code>{{ sql_query.formatted_query|spacify|linebreaksbr }}</code></pre>\n            <div id=\"query-info-div\">\n                <div id=\"time-taken-div\">\n                    <span class=\"numeric\">{{ sql_query.time_taken }}<span class=\"unit\">ms</span></span>\n                </div>\n                <div id=\"num-joins-div\">\n                    <span class=\"numeric\">{{ sql_query.num_joins }}</span> joins\n                </div>\n            </div>\n\n        </div>\n        {% if analysis %}\n        <div id=\"query-plan-div\">\n            <div class=\"heading\">\n                <div class=\"inner-heading\">\n                    Query Plan\n                </div>\n            </div>\n            <code id=\"plan\">{{ analysis | spacify | linebreaksbr }}</code>\n        </div>\n        {% endif %}\n        <div id=\"traceback\">\n            <div class=\"heading\">\n                <div class=\"inner-heading\">\n                    Traceback\n                </div>\n            </div>\n            <div class=\"description\">\n                The below is the Python stacktrace that leads up the execution of the above SQL query.\n                Use it to figure out where and why this SQL query is being executed and whether or not\n                it's actually neccessary.\n            </div>\n            {% for ln in traceback %}\n                {% if ln %}\n                    <div class=\"file-path {% if virtualenv_path not in ln %}not-{% else %}is-{% endif %}third-party\">\n                        {{ ln }}\n                    </div>\n                    {% if forloop.counter == pos %}\n                        {% code code actual_line %}\n                    {% endif %}\n                {% endif %}\n            {% endfor %}\n        </div>\n    </div>\n\n\n{% endblock %}\n"
  },
  {
    "path": "silk/templates/silk/summary.html",
    "content": "{% extends 'silk/base/root_base.html' %}\n{% load silk_inclusion %}\n{% load static %}\n{% block menu %}\n    {% root_menu request %}\n{% endblock %}\n\n{% block pagetitle %}Silky - Summary{% endblock %}\n\n{% block style %}\n    {{ block.super }}\n    <link rel=\"stylesheet\" href=\"{% static 'silk/css/pages/summary.css' %}\"/>\n{% endblock %}\n\n{% block js %}\n    {{ block.super }}\n    <script src=\"{% static 'silk/js/pages/summary.js' %}\"></script>\n{% endblock %}\n{% block data %}\n    <div class=\"wrapper\">\n        <div class=\"inner\">\n            <div id=\"filters\">\n                <form action=\".\" name=\"filter-form\" id=\"filter-form\" method=\"post\">\n                    {% csrf_token %}\n                </form>\n                <table id=\"filter-table\">\n                    <tr>\n                        <td>\n                            <img id=\"filter-image\" src=\"{% static 'silk/filter2.png' %}\">\n\n                        </td>\n                        <td id=\"filter-cell\">\n                            <div class=\"resizing-input\">\n                                Using requests that executed\n                                <input form=\"filter-form\"\n                                       class=\"typ\"\n                                       type=\"hidden\"\n                                       value=\"SecondsFilter\"\n                                       name=\"filter-seconds-typ\">\n                                <input type=\"text\"\n                                       placeholder=\"seconds\"\n                                       form=\"filter-form\"\n                                       name=\"filter-seconds-value\"\n                                       value=\"{{ filters.seconds.value }}\"\n                                        >\n                                seconds ago,\n                                <span style=\"display:none\"></span>\n                            </div>\n                            <div class=\"resizing-input\">\n                                before\n                                <input form=\"filter-form\"\n                                       class=\"typ\"\n                                       type=\"hidden\"\n                                       value=\"BeforeDateFilter\"\n                                       name=\"filter-beforedate-typ\">\n                                <input class=\"datetimepicker\"\n                                       type=\"text\"\n                                       placeholder=\"date\"\n                                       form=\"filter-form\"\n                                       name=\"filter-beforedate-value\"\n                                       value=\"{{ filters.beforedate.value }}\"\n                                        />,\n                                <span style=\"display:none\"></span>\n                            </div>\n                            <div class=\"resizing-input\">\n                                and after\n                                <input form=\"filter-form\"\n                                       class=\"typ\"\n                                       type=\"hidden\"\n                                       value=\"AfterDateFilter\"\n                                       name=\"filter-afterdate-typ\">\n                                <input class=\"datetimepicker\"\n                                       type=\"text\"\n                                       placeholder=\"date\"\n                                       form=\"filter-form\"\n                                       name=\"filter-afterdate-value\"\n                                       value=\"{{ filters.afterdate.value }}\"\n                                        >.\n                                <span style=\"display:none\"></span>\n                            </div>\n                        </td>\n                    </tr>\n                </table>\n\n            </div>\n            <h2>Summary</h2>\n            {% if num_requests %}\n                <div class=\"summary-cell\">\n                    <div class=\"num\"><span class=\"numeric\">{{ num_requests }}</span></div>\n                    <div class=\"desc\">Requests</div>\n                </div>\n                <div class=\"summary-cell\">\n                    <div class=\"num\"><span class=\"numeric\">{{ num_profiles }}</span></div>\n                    <div class=\"desc\">Profiles</div>\n                </div>\n                <div class=\"summary-cell\">\n                    <div class=\"num\"><span class=\"numeric\">{{ avg_overall_time | floatformat:0 }}<span class=\"unit\">ms</span></span></div>\n                    <div class=\"desc\">Avg. Time</div>\n                </div>\n                <div class=\"summary-cell\">\n                    <div class=\"num\"><span class=\"numeric\">{{ avg_num_queries | floatformat:2 }}</span></div>\n                    <div class=\"desc\">Avg. #Queries</div>\n                </div>\n                <div class=\"summary-cell\">\n                    <div class=\"num\"><span class=\"numeric\">{{ avg_time_spent_on_queries |floatformat:0 }}<span class=\"unit\">ms</span></span></div>\n                    <div class=\"desc\">Avg. DB Time</div>\n                </div>\n            {% else %}\n                <p class=\"no-data\">No data</p>\n            {% endif %}\n            <h2>Most Time Overall</h2>\n            {% if longest_queries_by_view %}\n                {% for x in longest_queries_by_view %}\n                    <a href=\"{% url \"silk:request_detail\" request_id=x.pk %}\">\n                        {% request_summary x %}\n                    </a>\n                {% endfor %}\n            {% else %}\n                <p class=\"no-data\">No data</p>\n            {% endif %}\n            <h2>Most Time Spent in Database</h2>\n            {% if most_time_spent_in_db %}\n                {% for x in most_time_spent_in_db %}\n                    <a href=\"{% url \"silk:request_detail\" request_id=x.pk %}\">\n                        {% request_summary x %}\n                    </a>\n                {% endfor %}\n            {% else %}\n                <p class=\"no-data\">No data</p>\n            {% endif %}\n            <h2>Most Database Queries</h2>\n            {% if most_queries %}\n                {% for x in most_queries %}\n                    <a href=\"{% url \"silk:request_detail\" request_id=x.pk %}\">\n                        {% request_summary x %}\n                    </a>\n                {% endfor %}\n            {% else %}\n                <p class=\"no-data\">No data</p>\n            {% endif %}\n        </div>\n    </div>\n\n{% endblock %}\n\n{# Hide filter hamburger menu #}\n{% block top %}{% endblock %}\n{% block filter %}{% endblock %}\n"
  },
  {
    "path": "silk/templatetags/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "silk/templatetags/silk_filters.py",
    "content": "import re\n\nfrom django.template import Library\nfrom django.template.defaultfilters import stringfilter\nfrom django.utils import timezone\nfrom django.utils.html import conditional_escape\nfrom django.utils.safestring import mark_safe\n\nregister = Library()\n\n\ndef _no_op(x):\n    return x\n\n\ndef _esc_func(autoescape):\n    if autoescape:\n        return conditional_escape\n    return _no_op\n\n\n@stringfilter\ndef spacify(value, autoescape=None):\n    esc = _esc_func(autoescape)\n    val = esc(value).replace(' ', \"&nbsp;\")\n    val = val.replace('\\t', '    ')\n    return mark_safe(val)\n\n\ndef _urlify(str):\n    r = re.compile(r'\"(?P<src>.*\\.py)\", line (?P<num>[0-9]+).*')\n    m = r.search(str)\n    while m:\n        group = m.groupdict()\n        src = group['src']\n        num = group['num']\n        start = m.start('src')\n        end = m.end('src')\n        rep = '<a href=\"/silk/src/?file_path={src}&line_num={num}\">{src}</a>'.format(src=src, num=num)\n        str = str[:start] + rep + str[end:]\n        m = r.search(str)\n    return str\n\n\n@register.filter\ndef hash(h, key):\n    return h[key]\n\n\ndef _process_microseconds(dt_strftime):\n    splt = dt_strftime.split('.')\n    micro = splt[-1]\n    time = '.'.join(splt[0:-1])\n    micro = '%.3f' % float('0.' + micro)\n    return time + micro[1:]\n\n\ndef _silk_date_time(dt):\n    today = timezone.now().date()\n    if dt.date() == today:\n        dt_strftime = dt.strftime('%H:%M:%S.%f')\n        return _process_microseconds(dt_strftime)\n    else:\n        return _process_microseconds(dt.strftime('%Y.%m.%d %H:%M.%f'))\n\n\n@register.filter(expects_localtime=True)\ndef silk_date_time(dt):\n    return _silk_date_time(dt)\n\n\n@register.filter\ndef sorted(value):\n    return sorted(value)\n\n\n@stringfilter\ndef filepath_urlify(value, autoescape=None):\n    value = _urlify(value)\n    return mark_safe(value)\n\n\n@stringfilter\ndef body_filter(value):\n    print(value)\n    if len(value) > 20:\n        return 'Too big!'\n    else:\n        return value\n\n\nspacify.needs_autoescape = True\nfilepath_urlify.needs_autoescape = True\nregister.filter(spacify)\nregister.filter(filepath_urlify)\nregister.filter(body_filter)\n"
  },
  {
    "path": "silk/templatetags/silk_inclusion.py",
    "content": "from django.template import Library\n\nregister = Library()\n\n\ndef request_summary(silk_request):\n    return {'silk_request': silk_request}\n\n\ndef request_summary_row(silk_request):\n    return {'silk_request': silk_request}\n\n\ndef request_menu(request, silk_request):\n    return {'request': request,\n            'silk_request': silk_request}\n\n\ndef root_menu(request):\n    return {'request': request}\n\n\ndef profile_menu(request, profile, silk_request=None):\n    context = {'request': request, 'profile': profile}\n    if silk_request:\n        context['silk_request'] = silk_request\n    return context\n\n\ndef profile_summary(profile):\n    return {'profile': profile}\n\n\ndef heading(text):\n    return {'text': text}\n\n\ndef code(lines, actual_line):\n    return {'code': lines, 'actual_line': [x.strip() for x in actual_line]}\n\n\nregister.inclusion_tag('silk/inclusion/request_summary.html')(request_summary)\nregister.inclusion_tag('silk/inclusion/request_summary_row.html')(request_summary_row)\nregister.inclusion_tag('silk/inclusion/profile_summary.html')(profile_summary)\nregister.inclusion_tag('silk/inclusion/code.html')(code)\nregister.inclusion_tag('silk/inclusion/request_menu.html')(request_menu)\nregister.inclusion_tag('silk/inclusion/profile_menu.html')(profile_menu)\nregister.inclusion_tag('silk/inclusion/root_menu.html')(root_menu)\nregister.inclusion_tag('silk/inclusion/heading.html')(heading)\n"
  },
  {
    "path": "silk/templatetags/silk_nav.py",
    "content": "from django import template\nfrom django.urls import reverse\n\nregister = template.Library()\n\n\n@register.simple_tag\ndef navactive(request, urls, *args, **kwargs):\n    path = request.path\n    urls = [reverse(url, args=args) for url in urls.split()]\n    if path in urls:\n        cls = kwargs.get('class', None)\n        if not cls:\n            cls = \"menu-item-selected\"\n        return cls\n    return \"\"\n"
  },
  {
    "path": "silk/templatetags/silk_urls.py",
    "content": "from django.template import Library\nfrom django.urls import reverse\n\nregister = Library()\n\n\n@register.simple_tag\ndef sql_detail_url(silk_request, profile, sql_query):\n    if profile and silk_request:\n        return reverse(\n            \"silk:request_and_profile_sql_detail\",\n            args=[silk_request.id, profile.id, sql_query.id],\n        )\n    elif profile:\n        return reverse(\"silk:profile_sql_detail\", args=[profile.id, sql_query.id])\n    elif silk_request:\n        return reverse(\"silk:request_sql_detail\", args=[silk_request.id, sql_query.id])\n"
  },
  {
    "path": "silk/urls.py",
    "content": "from django.urls import path\n\nfrom silk.views.clear_db import ClearDBView\nfrom silk.views.cprofile import CProfileView\nfrom silk.views.profile_detail import ProfilingDetailView\nfrom silk.views.profile_dot import ProfileDotView\nfrom silk.views.profile_download import ProfileDownloadView\nfrom silk.views.profiling import ProfilingView\nfrom silk.views.raw import Raw\nfrom silk.views.request_detail import RequestView\nfrom silk.views.requests import RequestsView\nfrom silk.views.sql import SQLView\nfrom silk.views.sql_detail import SQLDetailView\nfrom silk.views.summary import SummaryView\n\napp_name = 'silk'\nurlpatterns = [\n    path(route='', view=SummaryView.as_view(), name='summary'),\n    path(route='requests/', view=RequestsView.as_view(), name='requests'),\n    path(\n        route='request/<uuid:request_id>/',\n        view=RequestView.as_view(),\n        name='request_detail',\n    ),\n    path(\n        route='request/<uuid:request_id>/sql/',\n        view=SQLView.as_view(),\n        name='request_sql',\n    ),\n    path(\n        route='request/<uuid:request_id>/sql/<int:sql_id>/',\n        view=SQLDetailView.as_view(),\n        name='request_sql_detail',\n    ),\n    path(\n        route='request/<uuid:request_id>/raw/',\n        view=Raw.as_view(),\n        name='raw',\n    ),\n    path(\n        route='request/<uuid:request_id>/pyprofile/',\n        view=ProfileDownloadView.as_view(),\n        name='request_profile_download',\n    ),\n    path(\n        route='request/<uuid:request_id>/json/',\n        view=ProfileDotView.as_view(),\n        name='request_profile_dot',\n    ),\n    path(\n        route='request/<uuid:request_id>/profiling/',\n        view=ProfilingView.as_view(),\n        name='request_profiling',\n    ),\n    path(\n        route='request/<uuid:request_id>/profile/<int:profile_id>/',\n        view=ProfilingDetailView.as_view(),\n        name='request_profile_detail',\n    ),\n    path(\n        route='request/<uuid:request_id>/profile/<int:profile_id>/sql/',\n        view=SQLView.as_view(),\n        name='request_and_profile_sql',\n    ),\n    path(\n        route='request/<uuid:request_id>/profile/<int:profile_id>/sql/<int:sql_id>/',\n        view=SQLDetailView.as_view(),\n        name='request_and_profile_sql_detail',\n    ),\n    path(\n        route='profile/<int:profile_id>/',\n        view=ProfilingDetailView.as_view(),\n        name='profile_detail',\n    ),\n    path(\n        route='profile/<int:profile_id>/sql/',\n        view=SQLView.as_view(),\n        name='profile_sql',\n    ),\n    path(\n        route='profile/<int:profile_id>/sql/<int:sql_id>/',\n        view=SQLDetailView.as_view(),\n        name='profile_sql_detail',\n    ),\n    path(route='profiling/', view=ProfilingView.as_view(), name='profiling'),\n    path(route='cleardb/', view=ClearDBView.as_view(), name='cleardb'),\n    path(\n        route='request/<uuid:request_id>/cprofile/',\n        view=CProfileView.as_view(),\n        name='cprofile',\n    ),\n]\n"
  },
  {
    "path": "silk/utils/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "silk/utils/data_deletion.py",
    "content": "from django.conf import settings\nfrom django.db import connections\n\n\ndef delete_model(model):\n    engine = settings.DATABASES[model.objects.db]['ENGINE']\n    table = model._meta.db_table\n    if 'mysql' in engine or 'postgresql' in engine:\n        # Use \"TRUNCATE\" on the table\n        with connections[model.objects.db].cursor() as cursor:\n            if 'mysql' in engine:\n                cursor.execute(\"SET FOREIGN_KEY_CHECKS=0;\")\n                cursor.execute(f\"TRUNCATE TABLE {table}\")\n                cursor.execute(\"SET FOREIGN_KEY_CHECKS=1;\")\n            elif 'postgres' in engine:\n                cursor.execute(f\"ALTER TABLE {table} DISABLE TRIGGER USER;\")\n                cursor.execute(f\"TRUNCATE TABLE {table} CASCADE\")\n                cursor.execute(f\"ALTER TABLE {table} ENABLE TRIGGER USER;\")\n        return\n\n    # Manually delete rows because sqlite does not support TRUNCATE and\n    # oracle doesn't provide good support for disabling foreign key checks\n    while True:\n        items_to_delete = list(\n            model.objects.values_list('pk', flat=True).all()[:800])\n        if not items_to_delete:\n            break\n        model.objects.filter(pk__in=items_to_delete).delete()\n"
  },
  {
    "path": "silk/utils/pagination.py",
    "content": "from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator\n\n__author__ = 'mtford'\n\n\ndef _page(request, query_set, per_page=200):\n    paginator = Paginator(query_set, per_page)\n    page_number = request.GET.get('page')\n    try:\n        page = paginator.page(page_number)\n    except PageNotAnInteger:\n        page = paginator.page(1)\n    except EmptyPage:\n        page = paginator.page(paginator.num_pages)\n    return page\n"
  },
  {
    "path": "silk/utils/profile_parser.py",
    "content": "import re\n\n_pattern = re.compile(' +')\n\n\ndef parse_profile(output):\n    \"\"\"\n    Parse the output of cProfile to a list of tuples.\n    \"\"\"\n    if isinstance(output, str):\n        output = output.split('\\n')\n    for i, line in enumerate(output):\n        # ignore n function calls, total time and ordered by and empty lines\n        line = line.strip()\n        if i > 3 and line:\n            columns = _pattern.split(line)[0:]\n            function = ' '.join(columns[5:])\n            columns = columns[:5] + [function]\n            yield columns\n"
  },
  {
    "path": "silk/views/__init__.py",
    "content": "__author__ = 'mtford'\n"
  },
  {
    "path": "silk/views/clear_db.py",
    "content": "import os\nimport shutil\n\nfrom django.db import transaction\nfrom django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.config import SilkyConfig\nfrom silk.models import Profile, Request, Response, SQLQuery\nfrom silk.utils.data_deletion import delete_model\n\n\n@method_decorator(transaction.non_atomic_requests, name=\"dispatch\")\nclass ClearDBView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *_, **kwargs):\n        return render(request, 'silk/clear_db.html')\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def post(self, request, *_, **kwargs):\n        context = {}\n        if 'clear_all' in request.POST:\n            delete_model(Profile)\n            delete_model(SQLQuery)\n            delete_model(Response)\n            delete_model(Request)\n            tables = ['Response', 'SQLQuery', 'Profile', 'Request']\n            context['msg'] = 'Cleared data for following silk tables: {}'.format(', '.join(tables))\n\n            if SilkyConfig().SILKY_DELETE_PROFILES:\n                dir = SilkyConfig().SILKY_PYTHON_PROFILER_RESULT_PATH\n                for files in os.listdir(dir):\n                    path = os.path.join(dir, files)\n                    try:\n                        shutil.rmtree(path)\n                    except OSError:\n                        os.remove(path)\n                context['msg'] += '\\nDeleted all profiles from the directory.'\n\n        return render(request, 'silk/clear_db.html', context=context)\n"
  },
  {
    "path": "silk/views/code.py",
    "content": "from silk.config import SilkyConfig\n\n__author__ = 'mtford'\n\n\ndef _code(file_path, line_num, end_line_num=None):\n    line_num = int(line_num)\n    if not end_line_num:\n        end_line_num = line_num\n    end_line_num = int(end_line_num)\n    actual_line = []\n    lines = ''\n    with open(file_path, encoding='utf-8') as f:\n        r = range(max(0, line_num - 10), line_num + 10)\n        for i, line in enumerate(f):\n            if i in r:\n                lines += line\n            if i + 1 in range(line_num, end_line_num + 1):\n                actual_line.append(line)\n    code = lines.split('\\n')\n    return actual_line, code\n\n\ndef _code_context(file_path, line_num, end_line_num=None, prefix=''):\n    actual_line, code = _code(file_path, line_num, end_line_num)\n    return {\n        prefix + 'code': code,\n        prefix + 'file_path': file_path,\n        prefix + 'line_num': line_num,\n        prefix + 'actual_line': actual_line\n    }\n\n\ndef _code_context_from_request(request, end_line_num=None, prefix=''):\n    file_path = request.GET.get('file_path')\n    line_num = request.GET.get('line_num')\n    result = {}\n    if file_path is not None and line_num is not None:\n        result = _code_context(file_path, line_num, end_line_num, prefix)\n    return result\n\n\ndef _should_display_file_name(file_name):\n    for ignored_file in SilkyConfig().SILKY_IGNORE_FILES:\n        if ignored_file in file_name:\n            return False\n    return True\n"
  },
  {
    "path": "silk/views/cprofile.py",
    "content": "from django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Request\n\n\nclass CProfileView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *_, **kwargs):\n        request_id = kwargs['request_id']\n        silk_request = Request.objects.get(pk=request_id)\n        context = {\n            'silk_request': silk_request,\n            'request': request}\n\n        return render(request, 'silk/cprofile.html', context)\n"
  },
  {
    "path": "silk/views/profile_detail.py",
    "content": "from django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Profile\nfrom silk.views.code import _code_context, _code_context_from_request\n\n\nclass ProfilingDetailView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *_, **kwargs):\n        profile_id = kwargs['profile_id']\n        context = {\n            'request': request\n        }\n        profile = Profile.objects.get(pk=profile_id)\n        file_path = profile.file_path\n        line_num = profile.line_num\n\n        context['pos'] = pos = int(request.GET.get('pos', 0))\n        if pos:\n            context.update(_code_context_from_request(request, prefix='pyprofile_'))\n\n        context['profile'] = profile\n        context['line_num'] = file_path\n        context['file_path'] = line_num\n        context['file_column'] = 5\n\n        if profile.request:\n            context['silk_request'] = profile.request\n        if file_path and line_num:\n            try:\n                context.update(_code_context(file_path, line_num, profile.end_line_num))\n            except OSError as e:\n                if e.errno == 2:\n                    context['code_error'] = e.filename + ' does not exist.'\n                else:\n                    raise e\n\n        return render(request, 'silk/profile_detail.html', context)\n"
  },
  {
    "path": "silk/views/profile_dot.py",
    "content": "# std\nimport json\nimport os\nimport shutil\nimport tempfile\nfrom contextlib import closing, contextmanager\n\n# 3rd party\nfrom io import StringIO\n\nfrom django.http import HttpResponse\nfrom django.shortcuts import get_object_or_404\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\nfrom gprof2dot import DotWriter, PstatsParser, Theme\n\n# silk\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Request\n\nCOLOR_MAP = Theme(\n    mincolor=(0.18, 0.51, 0.53),\n    maxcolor=(0.03, 0.49, 0.50),\n    gamma=1.5,\n    fontname='FiraSans',\n    minfontsize=6.0,\n    maxfontsize=6.0,\n)\n\n\n@contextmanager\ndef _temp_file_from_file_field(source):\n    \"\"\"\n    Create a temp file containing data from a django file field.\n    \"\"\"\n    source.open()\n    with closing(source):\n        try:\n            with tempfile.NamedTemporaryFile(delete=False) as destination:\n                shutil.copyfileobj(source, destination)\n            yield destination.name\n        finally:\n            os.unlink(destination.name)\n\n\ndef _create_profile(source, get_filename=_temp_file_from_file_field):\n    \"\"\"\n    Parse a profile from a django file field source.\n    \"\"\"\n    with get_filename(source) as filename:\n        return PstatsParser(filename).parse()\n\n\ndef _create_dot(profile, cutoff):\n    \"\"\"\n    Create a dot file from pstats data stored in a django file field.\n    \"\"\"\n    node_cutoff = cutoff / 100.0\n    edge_cutoff = 0.1 / 100.0\n    profile.prune(node_cutoff, edge_cutoff, [], False)\n\n    with closing(StringIO()) as fp:\n        DotWriter(fp).graph(profile, COLOR_MAP)\n        return fp.getvalue()\n\n\nclass ProfileDotView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, request_id):\n        silk_request = get_object_or_404(Request, pk=request_id, prof_file__isnull=False)\n        cutoff = float(request.GET.get('cutoff', '') or 5)\n        profile = _create_profile(silk_request.prof_file)\n        result = dict(dot=_create_dot(profile, cutoff))\n        return HttpResponse(json.dumps(result).encode('utf-8'), content_type='application/json')\n"
  },
  {
    "path": "silk/views/profile_download.py",
    "content": "from django.http import FileResponse\nfrom django.shortcuts import get_object_or_404\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Request\n\n\nclass ProfileDownloadView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, request_id):\n        silk_request = get_object_or_404(Request, pk=request_id, prof_file__isnull=False)\n        response = FileResponse(silk_request.prof_file)\n        response['Content-Disposition'] = f'attachment; filename=\"{silk_request.prof_file.name}\"'\n        return response\n"
  },
  {
    "path": "silk/views/profiling.py",
    "content": "from django.db.models import Count, Sum\nfrom django.shortcuts import render\nfrom django.template.context_processors import csrf\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Profile, Request\nfrom silk.request_filters import BaseFilter, FiltersManager, filters_from_request\n\n\nclass ProfilingView(View):\n    show = [5, 10, 25, 100, 250]\n    default_show = 25\n    order_by = ['Recent',\n                'Name',\n                'Function Name',\n                'Num. Queries',\n                'Time',\n                'Time on queries']\n    defualt_order_by = 'Recent'\n    session_key_profile_filters = 'session_key_profile_filters'\n    filters_manager = FiltersManager(session_key_profile_filters)\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n\n    def _get_distinct_values(self, field, silk_request):\n        if silk_request:\n            query_set = Profile.objects.filter(request=silk_request)\n        else:\n            query_set = Profile.objects.all()\n        function_names = [x[field] for x in query_set.values(field).distinct()]\n        # Ensure top, default option is ''\n        try:\n            function_names.remove('')\n        except ValueError:\n            pass\n        return [''] + function_names\n\n    def _get_function_names(self, silk_request=None):\n        return self._get_distinct_values('func_name', silk_request)\n\n    def _get_names(self, silk_request=None):\n        return self._get_distinct_values('name', silk_request)\n\n    def _get_objects(self, show=None, order_by=None, name=None, func_name=None, silk_request=None, filters=None):\n        if not filters:\n            filters = []\n        if not show:\n            show = self.default_show\n        manager = Profile.objects\n        if silk_request:\n            query_set = manager.filter(request=silk_request)\n        else:\n            query_set = manager.all()\n        if not order_by:\n            order_by = self.defualt_order_by\n        if order_by == 'Recent':\n            query_set = query_set.order_by('-start_time')\n        elif order_by == 'Name':\n            query_set = query_set.order_by('-name')\n        elif order_by == 'Function Name':\n            query_set = query_set.order_by('-func_name')\n        elif order_by == 'Num. Queries':\n            query_set = query_set.annotate(num_queries=Count('queries')).order_by('-num_queries')\n        elif order_by == 'Time':\n            query_set = query_set.order_by('-time_taken')\n        elif order_by == 'Time on queries':\n            query_set = query_set.annotate(db_time=Sum('queries__time_taken')).order_by('-db_time')\n        elif order_by:\n            raise RuntimeError('Unknown order_by: \"%s\"' % order_by)\n        if func_name:\n            query_set = query_set.filter(func_name=func_name)\n        if name:\n            query_set = query_set.filter(name=name)\n        for f in filters:\n            query_set = f.contribute_to_query_set(query_set)\n            query_set = query_set.filter(f)\n        return list(query_set[:show])\n\n    def _create_context(self, request, *args, **kwargs):\n        request_id = kwargs.get('request_id')\n        if request_id:\n            silk_request = Request.objects.get(pk=request_id)\n        else:\n            silk_request = None\n        show = request.GET.get('show', self.default_show)\n        order_by = request.GET.get('order_by', self.defualt_order_by)\n        if show:\n            show = int(show)\n        func_name = request.GET.get('func_name', None)\n        name = request.GET.get('name', None)\n        filters = self.filters_manager.get(request)\n        context = {\n            'show': show,\n            'order_by': order_by,\n            'request': request,\n            'func_name': func_name,\n            'options_show': self.show,\n            'options_order_by': self.order_by,\n            'options_func_names': self._get_function_names(silk_request),\n            'options_names': self._get_names(silk_request),\n            'filters': filters\n        }\n        context.update(csrf(request))\n        if silk_request:\n            context['silk_request'] = silk_request\n        if func_name:\n            context['func_name'] = func_name\n        if name:\n            context['name'] = name\n        objs = self._get_objects(show=show,\n                                 order_by=order_by,\n                                 func_name=func_name,\n                                 silk_request=silk_request,\n                                 name=name,\n                                 filters=[BaseFilter.from_dict(x) for _, x in filters.items()])\n        context['results'] = objs\n        return context\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *args, **kwargs):\n        return render(request, 'silk/profiling.html', self._create_context(request, *args, **kwargs))\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def post(self, request):\n        filters = filters_from_request(request)\n        filters_as_dict = {ident: f.as_dict() for ident, f in filters.items()}\n        self.filters_manager.save(request, filters_as_dict)\n        return render(request, 'silk/profiling.html', self._create_context(request))\n"
  },
  {
    "path": "silk/views/raw.py",
    "content": "import logging\n\nfrom django.http import HttpResponse\nfrom django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Request\n\nLogger = logging.getLogger('silk.views.raw')\n\n\nclass Raw(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, request_id):\n        typ = request.GET.get('typ', None)\n        subtyp = request.GET.get('subtyp', None)\n        body = None\n        if typ and subtyp:\n            silk_request = Request.objects.get(pk=request_id)\n            if typ == 'request':\n                body = silk_request.raw_body if subtyp == 'raw' else silk_request.body\n            elif typ == 'response':\n                Logger.debug(silk_request.response.raw_body_decoded)\n                body = silk_request.response.raw_body_decoded if subtyp == 'raw' else silk_request.response.body\n            return render(request, 'silk/raw.html', {\n                'body': body\n            })\n        else:\n            return HttpResponse(content='Bad Request', status=400)\n"
  },
  {
    "path": "silk/views/request_detail.py",
    "content": "import json\n\nfrom django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.code_generation.curl import curl_cmd\nfrom silk.code_generation.django_test_client import gen\nfrom silk.models import Request\n\n\nclass RequestView(View):\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, request_id):\n        silk_request = Request.objects.get(pk=request_id)\n        query_params = None\n        if silk_request.query_params:\n            query_params = json.loads(silk_request.query_params)\n\n        context = {\n            'silk_request': silk_request,\n            'query_params': json.dumps(query_params, sort_keys=True, indent=4) if query_params else None,\n            'request': request\n        }\n\n        if len(silk_request.raw_body) < 20000:  # Don't do this for large request\n            body = silk_request.raw_body\n            try:\n                body = json.loads(body)  # Incase encoded as JSON\n            except (ValueError, TypeError):\n                pass\n            context['curl'] = curl_cmd(url=request.build_absolute_uri(silk_request.path),\n                                       method=silk_request.method,\n                                       query_params=query_params,\n                                       body=body,\n                                       content_type=silk_request.content_type)\n            context['client'] = gen(path=silk_request.path,\n                                    method=silk_request.method,\n                                    query_params=query_params,\n                                    data=body,\n                                    content_type=silk_request.content_type)\n\n        return render(request, 'silk/request.html', context)\n"
  },
  {
    "path": "silk/views/requests.py",
    "content": "from django.db.models import Sum\nfrom django.shortcuts import render\nfrom django.template.context_processors import csrf\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Request, Response\nfrom silk.request_filters import BaseFilter, FiltersManager, filters_from_request\n\n__author__ = 'mtford'\n\n\nclass RequestsView(View):\n    show = [5, 10, 25, 100, 250]\n    default_show = 25\n\n    order_by = {\n        'start_time': {\n            'label': 'Recent',\n            'additional_query_filter': None\n        },\n        'path': {\n            'label': 'Path',\n            'additional_query_filter': None\n        },\n        'num_sql_queries': {\n            'label': 'Num. Queries',\n            'additional_query_filter': None\n        },\n        'time_taken': {\n            'label': 'Time',\n            'additional_query_filter': lambda x: x.filter(time_taken__gte=0)\n        },\n        'db_time': {\n            'label': 'Time on queries',\n            'additional_query_filter': lambda x: x.annotate(db_time=Sum('queries__time_taken'))\n            .filter(db_time__gte=0)\n        },\n    }\n    order_dir = {\n        'ASC': {\n            'label': 'Ascending'\n        },\n        'DESC': {\n            'label': 'Descending'\n        }\n    }\n    view_style = {\n        'card': {\n            'label': 'Cards'\n        },\n        'row': {\n            'label': 'Rows'\n        }\n    }\n    default_order_by = 'start_time'\n    default_order_dir = 'DESC'\n    default_view_style = 'card'\n\n    session_key_request_filters = 'request_filters'\n    filters_manager = FiltersManager(session_key_request_filters)\n\n    @property\n    def options_order_by(self):\n        return [{'value': x, 'label': self.order_by[x]['label']} for x in self.order_by.keys()]\n\n    @property\n    def options_order_dir(self):\n        return [{'value': x, 'label': self.order_dir[x]['label']} for x in self.order_dir.keys()]\n\n    @property\n    def options_view_style(self):\n        return [{'value': x, 'label': self.view_style[x]['label']} for x in self.view_style.keys()]\n\n    def _get_paths(self):\n        return Request.objects.values_list(\n            'path',\n            flat=True\n        ).order_by(\n            'path'\n        ).distinct()\n\n    def _get_views(self):\n        return Request.objects.values_list(\n            'view_name',\n            flat=True\n        ).exclude(\n            view_name=''\n        ).order_by(\n            'view_name'\n        ).distinct()\n\n    def _get_status_codes(self):\n        return Response.objects.values_list(\n            'status_code',\n            flat=True\n        ).order_by(\n            'status_code'\n        ).distinct()\n\n    def _get_methods(self):\n        return Request.objects.values_list(\n            'method',\n            flat=True\n        ).order_by(\n            'method'\n        ).distinct()\n\n    def _get_objects(self, show=None, order_by=None, order_dir=None, path=None, filters=None):\n        if not filters:\n            filters = []\n        if not show:\n            show = self.default_show\n        query_set = Request.objects.all()\n        if not order_by:\n            order_by = self.default_order_by\n        if not order_dir:\n            order_dir = self.default_order_dir\n        if order_by not in self.order_by.keys():\n            raise RuntimeError('Unknown order_by: \"%s\"' % order_by)\n        ob = self.order_by[order_by]\n        if ob['additional_query_filter'] is not None:\n            query_set = ob['additional_query_filter'](query_set)\n        query_set = query_set.order_by('{}{}'.format('-' if order_dir == 'DESC' else '', order_by))\n        if path:\n            query_set = query_set.filter(path=path)\n        for f in filters:\n            query_set = f.contribute_to_query_set(query_set)\n            query_set = query_set.filter(f)\n        return query_set[:show]\n\n    def _create_context(self, request):\n        raw_filters = self.filters_manager.get(request).copy()\n        show = raw_filters.pop('show', self.default_show)\n        order_by = raw_filters.pop('order_by', self.default_order_by)\n        order_dir = raw_filters.pop('order_dir', self.default_order_dir)\n        view_style = raw_filters.pop('view_style', self.default_view_style)\n\n        if show:\n            show = int(show)\n        path = request.GET.get('path', None)\n        context = {\n            'show': show,\n            'order_by': order_by,\n            'order_dir': order_dir,\n            'view_style': view_style,\n            'request': request,\n            'options_show': self.show,\n            'options_order_by': self.options_order_by,\n            'options_order_dir': self.options_order_dir,\n            'options_view_style': self.options_view_style,\n            'options_paths': self._get_paths(),\n            'options_status_codes': self._get_status_codes(),\n            'options_methods': self._get_methods(),\n            'view_names': self._get_views(),\n            'filters': raw_filters,\n        }\n        context.update(csrf(request))\n        if path:\n            context['path'] = path\n        context['results'] = self._get_objects(show, order_by, order_dir, path,\n                                               filters=[BaseFilter.from_dict(x) for _, x in raw_filters.items()])\n        return context\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request):\n        # Retain filters and ordering if they were modified by GET params\n        if request.GET:\n            filters = {\n                # filters from previous session\n                **self.filters_manager.get(request),\n                # new filters from GET, overriding old\n                **{k: v for k, v in request.GET.items() if k in ['show', 'order_by', 'order_dir', 'view_style']},\n            }\n            self.filters_manager.save(request, filters)\n        return render(request, 'silk/requests.html', self._create_context(request))\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def post(self, request):\n        previous_session = self.filters_manager.get(request)\n        filters = {\n            # filters from previous session but only GET values\n            **{k: v for k, v in previous_session.items() if k in ['show', 'order_by', 'order_dir', 'view_style']},\n            # new filters from POST, overriding old\n            **{ident: f.as_dict() for ident, f in filters_from_request(request).items()},\n        }\n        self.filters_manager.save(request, filters)\n        return render(request, 'silk/requests.html', self._create_context(request))\n"
  },
  {
    "path": "silk/views/sql.py",
    "content": "from django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Profile, Request, SQLQuery\nfrom silk.utils.pagination import _page\n\n__author__ = 'mtford'\n\n\nclass SQLView(View):\n    page_sizes = [5, 10, 25, 100, 200, 500, 1000]\n    default_page_size = 200\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *_, **kwargs):\n        request_id = kwargs.get('request_id')\n        profile_id = kwargs.get('profile_id')\n        try:\n            per_page = int(request.GET.get('per_page', self.default_page_size))\n        except (TypeError, ValueError):\n            per_page = self.default_page_size\n        context = {\n            'request': request,\n            'options_page_size': self.page_sizes,\n            'per_page': per_page,\n        }\n        if request_id:\n            silk_request = Request.objects.get(id=request_id)\n            query_set = SQLQuery.objects.filter(request=silk_request).order_by('-start_time')\n            for q in query_set:\n                q.start_time_relative = q.start_time - silk_request.start_time\n            page = _page(request, query_set, per_page)\n            context['silk_request'] = silk_request\n        if profile_id:\n            p = Profile.objects.get(id=profile_id)\n            page = _page(request, p.queries.order_by('-start_time').all(), per_page)\n            context['profile'] = p\n        if not (request_id or profile_id):\n            raise KeyError('no profile_id or request_id')\n        # noinspection PyUnboundLocalVariable\n        context['items'] = page\n        return render(request, 'silk/sql.html', context)\n"
  },
  {
    "path": "silk/views/sql_detail.py",
    "content": "import os\nimport re\n\nfrom django.core.exceptions import PermissionDenied\nfrom django.shortcuts import render\nfrom django.utils.decorators import method_decorator\nfrom django.utils.safestring import mark_safe\nfrom django.views.generic import View\n\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.models import Profile, Request, SQLQuery\nfrom silk.views.code import _code\n\n\nclass SQLDetailView(View):\n    def _urlify(self, str):\n        files = []\n        r = re.compile(r'\"(?P<src>.*\\.py)\", line (?P<num>[0-9]+).*')\n        m = r.search(str)\n        n = 1\n        while m:\n            group = m.groupdict()\n            src = group['src']\n            files.append(src)\n            num = group['num']\n            start = m.start('src')\n            end = m.end('src')\n            rep = '<a name={name} href=\"?pos={pos}&file_path={src}&line_num={num}#{name}\">{src}</a>'.format(\n                pos=n,\n                src=src,\n                num=num,\n                name='c%d' % n,\n            )\n            str = str[:start] + rep + str[end:]\n            m = r.search(str)\n            n += 1\n        return str, files\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request, *_, **kwargs):\n        sql_id = kwargs.get('sql_id', None)\n        request_id = kwargs.get('request_id', None)\n        profile_id = kwargs.get('profile_id', None)\n        sql_query = SQLQuery.objects.get(pk=sql_id)\n        pos = int(request.GET.get('pos', 0))\n        file_path = request.GET.get('file_path', '')\n        line_num = int(request.GET.get('line_num', 0))\n        tb = sql_query.traceback_ln_only\n        analysis = sql_query.analysis\n        str, files = self._urlify(tb)\n        if file_path and file_path not in files:\n            raise PermissionDenied\n        tb = [mark_safe(x) for x in str.split('\\n')]\n        context = {\n            'sql_query': sql_query,\n            'traceback': tb,\n            'pos': pos,\n            'line_num': line_num,\n            'file_path': file_path,\n            'analysis': analysis,\n            'virtualenv_path': os.environ.get('VIRTUAL_ENV') or '',\n        }\n        if request_id:\n            context['silk_request'] = Request.objects.get(pk=request_id)\n        if profile_id:\n            context['profile'] = Profile.objects.get(pk=int(profile_id))\n        if pos and file_path and line_num:\n            actual_line, code = _code(file_path, line_num)\n            context['code'] = code\n            context['actual_line'] = actual_line\n        return render(request, 'silk/sql_detail.html', context)\n"
  },
  {
    "path": "silk/views/summary.py",
    "content": "from django.db.models import Avg, Count, Max, Sum\nfrom django.shortcuts import render\nfrom django.template.context_processors import csrf\nfrom django.utils.decorators import method_decorator\nfrom django.views.generic import View\n\nfrom silk import models\nfrom silk.auth import login_possibly_required, permissions_possibly_required\nfrom silk.request_filters import BaseFilter, FiltersManager, filters_from_request\n\n\nclass SummaryView(View):\n    filters_key = 'summary_filters'\n    filters_manager = FiltersManager(filters_key)\n\n    def _avg_num_queries(self, filters):\n        queries__aggregate = models.Request.objects.filter(*filters).annotate(num_queries=Count('queries')).aggregate(num=Avg('num_queries'))\n        return queries__aggregate['num']\n\n    def _avg_time_spent_on_queries(self, filters):\n        taken__aggregate = models.Request.objects.filter(*filters).annotate(time_spent=Sum('queries__time_taken')).aggregate(num=Avg('time_spent'))\n        return taken__aggregate['num']\n\n    def _avg_overall_time(self, filters):\n        taken__aggregate = models.Request.objects.filter(*filters).annotate(time_spent=Sum('time_taken')).aggregate(num=Avg('time_spent'))\n        return taken__aggregate['num']\n\n    # TODO: Find a more efficient way to do this. Currently has to go to DB num. views + 1 times and is prob quite expensive\n    def _longest_query_by_view(self, filters):\n        values_list = models.Request.objects.filter(*filters).values_list(\"view_name\").annotate(max=Max('time_taken')).filter(max__isnull=False).order_by('-max')[:5]\n        requests = []\n        for view_name, _ in values_list:\n            request = models.Request.objects.filter(view_name=view_name, *filters).filter(time_taken__isnull=False).order_by('-time_taken')[0]\n            requests.append(request)\n        return sorted(requests, key=lambda item: item.time_taken, reverse=True)\n\n    def _time_spent_in_db_by_view(self, filters):\n        values_list = models.Request.objects.filter(*filters).values_list('view_name').annotate(t=Sum('queries__time_taken')).filter(t__gte=0).order_by('-t')[:5]\n        requests = []\n        for view, _ in values_list:\n            r = models.Request.objects.filter(view_name=view, *filters).annotate(t=Sum('queries__time_taken')).filter(t__isnull=False).order_by('-t')[0]\n            requests.append(r)\n        return sorted(requests, key=lambda item: item.t, reverse=True)\n\n    def _num_queries_by_view(self, filters):\n        queryset = models.Request.objects.filter(*filters).values_list('view_name').annotate(t=Count('queries')).order_by('-t')[:5]\n        views = [r[0] for r in queryset[:6]]\n        requests = []\n        for view in views:\n            try:\n                r = models.Request.objects.filter(view_name=view, *filters).annotate(t=Count('queries')).order_by('-t')[0]\n                requests.append(r)\n            except IndexError:\n                pass\n        return sorted(requests, key=lambda item: item.t, reverse=True)\n\n    def _create_context(self, request):\n        raw_filters = self.filters_manager.get(request)\n        filters = [BaseFilter.from_dict(filter_d) for _, filter_d in raw_filters.items()]\n        avg_overall_time = self._avg_num_queries(filters)\n        c = {\n            'request': request,\n            'num_requests': models.Request.objects.filter(*filters).count(),\n            'num_profiles': models.Profile.objects.filter(*filters).count(),\n            'avg_num_queries': avg_overall_time,\n            'avg_time_spent_on_queries': self._avg_time_spent_on_queries(filters),\n            'avg_overall_time': self._avg_overall_time(filters),\n            'longest_queries_by_view': self._longest_query_by_view(filters),\n            'most_time_spent_in_db': self._time_spent_in_db_by_view(filters),\n            'most_queries': self._num_queries_by_view(filters),\n            'filters': raw_filters\n        }\n        c.update(csrf(request))\n        return c\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def get(self, request):\n        c = self._create_context(request)\n        return render(request, 'silk/summary.html', c)\n\n    @method_decorator(login_possibly_required)\n    @method_decorator(permissions_possibly_required)\n    def post(self, request):\n        filters = {ident: f.as_dict() for ident, f in filters_from_request(request).items()}\n        self.filters_manager.save(request, filters)\n        return render(request, 'silk/summary.html', self._create_context(request))\n"
  },
  {
    "path": "silk.sublime-project",
    "content": "{\n    \"folders\": [{\n        \"follow_symlinks\": true,\n        \"path\": \".\",\n        \"folder_exclude_patterns\": [\n            \".idea\",\n            \"bower_components\",\n            \"node_modules\"\n        ],\n        \"file_exclude_patterns\": [\n            \".gitmodules\",\n            \".gitignore\",\n            \"LICENSE\"\n        ]\n    }]\n}\n"
  },
  {
    "path": "tox.ini",
    "content": "[gh-actions]\npython =\n    3.10: py310\n    3.11: py311\n    3.12: py312\n    3.13: py313\n    3.14: py314\n\n[gh-actions:env]\nDJANGO =\n    4.2: dj42\n    5.1: dj51\n    5.2: dj52\n    6.0: dj60\n    main: djmain\n\n[tox]\nenvlist =\n    py{310,311,312,313,314}-dj{42,50,51,52}-{sqlite3,mysql,postgresql}\n    py{312,313,314}-dj{60,main}-{sqlite3,mysql,postgresql}\n\n[testenv]\nusedevelop = True\nignore_outcome =\n    djmain: True\nchangedir = {toxinidir}/project\ndeps =\n    -rrequirements.txt\n    mysql: mysqlclient\n    postgresql: psycopg2-binary\n    dj42: django>=4.2,<4.3\n    dj51: django>=5.1,<5.2\n    dj52: django>=5.2,<5.3\n    dj60: django>=6.0,<6.1\n    djmain: https://github.com/django/django/archive/main.tar.gz\n    py312: setuptools\n    py313: setuptools\n    py314: setuptools\nextras = formatting\nsetenv =\n    PYTHONPATH={toxinidir}:{toxinidir}\n    PYTHONDONTWRITEBYTECODE=1\n    sqlite3: DB_ENGINE=sqlite3\n    sqlite3: DB_NAME=\":memory:\"\n    mysql: DB_ENGINE=mysql\n    mysql: DB_NAME=mysql\n    mysql: DB_USER=root\n    mysql: DB_PASSWORD=mysql\n    mysql: DB_PORT=3306\n    postgresql: DB_ENGINE=postgresql\n    postgresql: DB_NAME=postgres\n    postgresql: DB_PASSWORD=postgres\ncommands = pytest\n\n[flake8]\nignore = \n    E501,\n    E203,\n    W503\n"
  }
]