[
  {
    "path": ".cargo/config.toml",
    "content": "[target.armv7-unknown-linux-gnueabihf]\nlinker = \"arm-linux-gnueabihf-gcc\"\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# Keep GitHub Actions up to date with GitHub's Dependabot...\n# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot\n# https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#package-ecosystem\nversion: 2\nupdates:\n  - package-ecosystem: github-actions\n    directory: /\n    groups:\n      github-actions:\n        patterns:\n          - \"*\" # Group all Actions updates into a single larger pull request\n    schedule:\n      interval: weekly\n"
  },
  {
    "path": ".github/release-drafter.yml",
    "content": "categories:\n  - title: \"⚠ Breaking Changes\"\n    labels:\n      - \"breaking\"\n  - title: \"🚀 Features\"\n    labels:\n      - \"feature\"\n      - \"enhancement\"\n  - title: \"🐛 Bug Fixes\"\n    labels:\n      - \"fix\"\n      - \"bugfix\"\n      - \"bug\"\n  - title: \"📄 Documentation\"\n    labels:\n      - \"documentation\"\n  - title: \"🧰 Maintenance\"\n    label:\n      - \"chore\"\n      - \"ci\"\n      - \"dependencies\"\n\nexclude-labels:\n  - \"skip-changelog\"\n\nchange-template: \"- $TITLE @$AUTHOR (#$NUMBER)\"\nchange-title-escapes: '\\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.\nversion-resolver:\n  major:\n    labels:\n      - \"major\"\n  minor:\n    labels:\n      - \"minor\"\n  patch:\n    labels:\n      - \"patch\"\n  default: patch\ntemplate: |\n  ## Changes\n\n  $CHANGES\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  workflow_dispatch:\n  push:\n    branches: [master]\n    tags:\n      - v*\n  pull_request:\n    branches: [master]\n\nenv:\n  CARGO_TERM_COLOR: always\n\njobs:\n  lint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n      - uses: actions/setup-python@v5\n        with:\n          python-version: 3.11\n      - uses: pre-commit/action@v3.0.1\n\n  build:\n    runs-on: ${{ matrix.os }}\n    needs: [lint]\n    strategy:\n      fail-fast: false\n      matrix:\n        os: [ubuntu-latest, windows-latest, macos-latest]\n    steps:\n      - uses: actions/checkout@v5\n      - uses: Swatinem/rust-cache@v2\n      - name: Install Dependencies\n        run: sudo apt install libunwind-dev\n        if: runner.os == 'Linux'\n      - uses: actions/setup-python@v5\n        with:\n          python-version: 3.9\n      - name: Build\n        run: cargo build --release --verbose --examples\n      - uses: actions/setup-python@v5\n        with:\n          python-version: 3.9\n      - name: Install optional numpy dependency\n        run: pip install numpy>=2\n      - name: Test\n        id: test\n        continue-on-error: true\n        run: cargo test --release\n      - name: Test (retry#1)\n        id: test1\n        run: cargo test --release\n        if: steps.test.outcome=='failure'\n        continue-on-error: true\n      - name: Test (retry#2)\n        run: cargo test --release\n        if: steps.test1.outcome=='failure'\n      - name: Build Wheel\n        run: |\n          pip install --upgrade maturin\n          maturin build --release -o dist --all-features\n        if: runner.os == 'Windows'\n      - name: Build Wheel - universal2\n        env:\n          DEVELOPER_DIR: /Applications/Xcode.app/Contents/Developer\n          SDKROOT: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk\n          MACOSX_DEPLOYMENT_TARGET: 10.9\n        run: |\n          rustup target add aarch64-apple-darwin\n          rustup target add x86_64-apple-darwin\n          pip install --upgrade maturin\n          maturin build --release -o dist\n          maturin build --release -o dist --target universal2-apple-darwin\n        if: matrix.os == 'macos-latest'\n      - name: Rename Wheels\n        run: |\n          python3 -c \"import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]\"\n        if: runner.os != 'Linux'\n      - name: Upload Windows Wheels\n        uses: actions/upload-artifact@v4\n        with:\n          name: wheels-windows\n          path: dist\n        if: runner.os == 'Windows'\n      - name: Upload Macos Wheels\n        uses: actions/upload-artifact@v4\n        with:\n          name: wheels-macos\n          path: dist\n        if: runner.os == 'macOS'\n\n  build-linux-cross:\n    runs-on: ubuntu-latest\n    needs: [lint]\n    strategy:\n      fail-fast: false\n      matrix:\n        target:\n          [\n            i686-unknown-linux-musl,\n            armv7-unknown-linux-musleabihf,\n            aarch64-unknown-linux-musl,\n            x86_64-unknown-linux-musl,\n          ]\n    container:\n      image: ghcr.io/benfred/rust-musl-cross:${{ matrix.target }}\n      env:\n        RUSTUP_HOME: /root/.rustup\n        CARGO_HOME: /root/.cargo\n    steps:\n      - uses: actions/checkout@v5\n      - uses: Swatinem/rust-cache@v2\n      - name: Build\n        run: |\n          python3 -m pip install --upgrade maturin\n          maturin build --release -o dist --target ${{ matrix.target }} --features unwind\n          maturin sdist -o dist\n        if: ${{ matrix.target == 'armv7-unknown-linux-musleabihf' || matrix.target == 'x86_64-unknown-linux-musl'}}\n      - name: Build\n        run: |\n          python3 -m pip install --upgrade maturin\n          maturin build --release -o dist --target ${{ matrix.target }}\n          maturin sdist -o dist\n        if: ${{ matrix.target == 'i686-unknown-linux-musl' || matrix.target == 'aarch64-unknown-linux-musl'}}\n      - name: Rename Wheels\n        run: |\n          python3 -c \"import shutil; import glob; wheels = glob.glob('dist/*.whl'); [shutil.move(wheel, wheel.replace('py3', 'py2.py3')) for wheel in wheels if 'py2' not in wheel]\"\n      - name: Upload wheels\n        uses: actions/upload-artifact@v4\n        with:\n          name: wheels-${{ matrix.target }}\n          path: dist\n\n  build-freebsd:\n    runs-on: ubuntu-22.04\n    needs: [lint]\n    timeout-minutes: 30\n    strategy:\n      matrix:\n        box:\n          - freebsd-14\n    steps:\n      - uses: actions/checkout@v5\n      - name: Display CPU info\n        run: lscpu\n      - name: Install VM tools\n        run: |\n          sudo apt-get update -qq\n          sudo apt-get install -qq -o=Dpkg::Use-Pty=0 moreutils\n          sudo chronic apt-get install -qq -o=Dpkg::Use-Pty=0 vagrant virtualbox qemu libvirt-daemon-system\n      - name: Set up VM\n        shell: sudo bash {0}\n        run: |\n          vagrant plugin install vagrant-libvirt\n          vagrant plugin install vagrant-scp\n          ln -sf ci/Vagrantfile Vagrantfile\n          vagrant status\n          vagrant up --no-tty --provider libvirt ${{ matrix.box }}\n      - name: Build and test\n        shell: sudo bash {0}\n        run: vagrant ssh ${{ matrix.box }} -- bash /vagrant/ci/test_freebsd.sh\n      - name: Retrieve build artifacts for caching purposes\n        shell: sudo bash {0}\n        run: |\n          vagrant scp ${{ matrix.box }}:/vagrant/build-artifacts.tar build-artifacts.tar\n          ls -ahl build-artifacts.tar\n      - name: Prepare binary for upload\n        run: |\n          tar xf build-artifacts.tar target/release/py-spy\n          mv target/release/py-spy py-spy-x86_64-unknown-freebsd\n      - name: Upload Binaries\n        uses: actions/upload-artifact@v4\n        with:\n          name: py-spy-x86_64-unknown-freebsd\n          path: py-spy-x86_64-unknown-freebsd\n\n  test-wheels:\n    name: Test Wheels\n    needs: [build, build-linux-cross]\n    runs-on: ${{ matrix.os }}\n    strategy:\n      fail-fast: false\n      # automatically generated by ci/update_python_test_versions.py\n      matrix:\n        python-version:\n          [\n            3.6.7,\n            3.6.15,\n            3.7.1,\n            3.7.17,\n            3.8.0,\n            3.8.18,\n            3.9.0,\n            3.9.23,\n            3.10.0,\n            3.10.18,\n            3.11.0,\n            3.11.13,\n            3.12.0,\n            3.12.1,\n            3.12.2,\n            3.12.3,\n            3.12.4,\n            3.12.5,\n            3.12.6,\n            3.12.7,\n            3.12.8,\n            3.12.9,\n            3.12.10,\n            3.12.11,\n            3.13.0,\n            3.13.1,\n            3.13.2,\n            3.13.3,\n            3.13.4,\n            3.13.5,\n            3.13.6,\n            3.13.7,\n          ]\n        os: [ubuntu-22.04, macos-13, windows-latest, ubuntu-22.04-arm]\n        # some versions of python can't be tested on GHA with osx because of SIP:\n        exclude:\n          - os: ubuntu-22.04\n            python-version: 3.6.7\n          - os: ubuntu-22.04-arm\n            python-version: 3.6.7\n          - os: windows-latest\n            python-version: 3.6.15\n          - os: ubuntu-22.04\n            python-version: 3.6.15\n          - os: ubuntu-22.04-arm\n            python-version: 3.6.15\n          - os: ubuntu-22.04\n            python-version: 3.7.1\n          - os: ubuntu-22.04-arm\n            python-version: 3.7.1\n          - os: windows-latest\n            python-version: 3.7.17\n          - os: ubuntu-22.04-arm\n            python-version: 3.7.17\n          - os: ubuntu-22.04\n            python-version: 3.8.0\n          - os: ubuntu-22.04-arm\n            python-version: 3.8.0\n          - os: windows-latest\n            python-version: 3.8.18\n          - os: ubuntu-22.04\n            python-version: 3.9.0\n          - os: ubuntu-22.04-arm\n            python-version: 3.9.0\n          - os: windows-latest\n            python-version: 3.9.23\n          - os: ubuntu-22.04\n            python-version: 3.10.0\n          - os: ubuntu-22.04-arm\n            python-version: 3.10.0\n          - os: windows-latest\n            python-version: 3.10.18\n          - os: macos-13\n            python-version: 3.11.13\n          - os: windows-latest\n            python-version: 3.11.13\n          - os: macos-13\n            python-version: 3.12.0\n          - os: macos-13\n            python-version: 3.12.1\n          - os: macos-13\n            python-version: 3.12.2\n          - os: macos-13\n            python-version: 3.12.3\n          - os: macos-13\n            python-version: 3.12.4\n          - os: macos-13\n            python-version: 3.12.5\n          - os: macos-13\n            python-version: 3.12.6\n          - os: macos-13\n            python-version: 3.12.7\n          - os: macos-13\n            python-version: 3.12.8\n          - os: macos-13\n            python-version: 3.12.9\n          - os: macos-13\n            python-version: 3.12.10\n          - os: macos-13\n            python-version: 3.12.11\n          - os: windows-latest\n            python-version: 3.12.11\n\n    steps:\n      - uses: actions/checkout@v5\n      - uses: actions/download-artifact@v5\n        with:\n          pattern: wheels-*\n          merge-multiple: true\n      - uses: actions/setup-python@v5\n        with:\n          python-version: ${{ matrix.python-version }}\n      - name: Install wheel\n        run: |\n          pip install --force-reinstall --no-index --find-links . py-spy\n      - name: Test Wheel\n        id: test\n        run: python tests/integration_test.py\n        if: runner.os != 'macOS'\n        continue-on-error: true\n      - name: Test Wheel (Retry#1)\n        id: test1\n        run: python tests/integration_test.py\n        if: steps.test.outcome=='failure'\n        continue-on-error: true\n      - name: Test Wheel (Retry#2)\n        id: test2\n        run: python tests/integration_test.py\n        if: steps.test1.outcome=='failure'\n      - name: Test macOS Wheel\n        id: osx_test\n        run: sudo \"PATH=$PATH\" python tests/integration_test.py\n        if: runner.os == 'macOS'\n        continue-on-error: true\n      - name: Test macOS Wheel (Retry#1)\n        id: osx_test1\n        run: sudo \"PATH=$PATH\" python tests/integration_test.py\n        if: steps.osx_test.outcome=='failure'\n        continue-on-error: true\n      - name: Test macOS Wheel (Retry#2)\n        id: osx_test2\n        run: sudo \"PATH=$PATH\" python tests/integration_test.py\n        if: steps.osx_test1.outcome=='failure'\n\n  release:\n    name: Release\n    runs-on: ubuntu-latest\n    if: \"startsWith(github.ref, 'refs/tags/')\"\n    needs: [test-wheels]\n    steps:\n      - uses: actions/download-artifact@v5\n        with:\n          pattern: wheels-*\n          merge-multiple: true\n      - name: Create GitHub Release\n        uses: fnkr/github-action-ghr@v1.3\n        env:\n          GHR_PATH: .\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Install Dependencies\n        run: sudo apt install libunwind-dev\n        if: runner.os == 'Linux'\n      - uses: actions/setup-python@v5\n        with:\n          python-version: 3.9\n      - name: Push to PyPi\n        env:\n          TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}\n          TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}\n        run: |\n          pip install --upgrade wheel pip setuptools twine\n          twine upload *\n          rm *\n      - uses: actions/checkout@v5\n      - name: Push to crates.io\n        env:\n          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}\n        run: cargo publish\n"
  },
  {
    "path": ".github/workflows/release-drafter.yml",
    "content": "# draft release notes with https://github.com/release-drafter/release-drafter\nname: Release Drafter\n\non:\n  push:\n    branches:\n      - master\n  workflow_dispatch:\n\njobs:\n  update_release_draft:\n    runs-on: ubuntu-latest\n    steps:\n      # Drafts your next Release notes as Pull Requests are merged into \"master\"\n      - uses: release-drafter/release-drafter@v6\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/update_python_test.yml",
    "content": "name: Update Python Test Versions\non:\n  workflow_dispatch:\n  schedule:\n    - cron: \"0 1 * * *\"\njobs:\n  update-dep:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v5\n        with:\n          ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}\n      - uses: actions/setup-python@v5\n        with:\n          python-version: 3.9\n      - name: Install\n        run: pip install --upgrade requests pyyaml\n      - name: Scan for new python versions\n        run: python ci/update_python_test_versions.py\n      - name: Format results\n        run: npx prettier --write \".github/workflows/update_python_test.yml\"\n      - name: Create Pull Request\n        uses: peter-evans/create-pull-request@v7\n        with:\n          commit-message: Update tested python versions\n          title: Update tested python versions\n          branch: update-python-versions\n          labels: |\n            skip-changelog\n            dependencies\n"
  },
  {
    "path": ".gitignore",
    "content": "/target\nremoteprocess/target\n**/*.rs.bk\n\n# Python Distribution / packaging\n.Python\nenv/\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\n*.egg-info/\n.installed.cfg\n*.egg\n\n.vscode/\n**/.vagrant\n*.log\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "repos:\n  - repo: https://github.com/codespell-project/codespell\n    rev: v2.2.4\n    hooks:\n      - id: codespell\n        additional_dependencies: [tomli]\n        args: [\"--toml\", \"pyproject.toml\"]\n        exclude: (?x)^(ci/testdata.*|images.*)$\n  - repo: https://github.com/doublify/pre-commit-rust\n    rev: v1.0\n    hooks:\n      - id: fmt\n      - id: cargo-check\n  - repo: https://github.com/rbubley/mirrors-prettier\n    rev: v3.3.3\n    hooks:\n      - id: prettier\n        types: [yaml]\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Release notes are now being hosted in Github Releases: https://github.com/benfred/py-spy/releases\n\n## v0.3.11\n\n* Update dependencies [#463](https://github.com/benfred/py-spy/pull/463), [#457](https://github.com/benfred/py-spy/pull/463)\n* Warn about SYS_PTRACE when running in docker [#459](https://github.com/benfred/py-spy/pull/459)\n* Fix spelling mistakes [#453](https://github.com/benfred/py-spy/pull/453)\n\n## v0.3.10\n* Add support for profiling Python v3.10 [#425](https://github.com/benfred/py-spy/pull/425)\n* Fix issue with native profiling on Linux with Anaconda [#447](https://github.com/benfred/py-spy/pull/447)\n\n## v0.3.9\n* Add a subcommand to generate shell completions [#427](https://github.com/benfred/py-spy/issues/427)\n* Allow attaching co_firstlineno to frame name [#428](https://github.com/benfred/py-spy/issues/428)\n* Fix speedscope time interval [#434](https://github.com/benfred/py-spy/issues/434)\n* Fix profiling on FreeBSD [#431](https://github.com/benfred/py-spy/issues/431)\n* Use GitHub actions for FreeBSD CI [#433](https://github.com/benfred/py-spy/issues/433)\n\n## v0.3.8\n* Add wheels for Apple Silicon [#419](https://github.com/benfred/py-spy/issues/419)\n* Add --gil and --idle options to top view [#406](https://github.com/benfred/py-spy/issues/406)\n* Fix errors parsing python binaries [#407](https://github.com/benfred/py-spy/issues/407)\n* Specify timeunit in speedscope profiles [#294](https://github.com/benfred/py-spy/issues/294)\n\n## v0.3.7\n* Fix error that sometimes left the profiled program suspended [#390](https://github.com/benfred/py-spy/issues/390)\n* Documentation fixes for README [#391](https://github.com/benfred/py-spy/issues/391), [#393](https://github.com/benfred/py-spy/issues/393)\n\n## v0.3.6\n* Fix profiling inside a venv on windows [#216](https://github.com/benfred/py-spy/issues/216)\n* Detect GIL on Python 3.9.3+, 3.8.9+ [#375](https://github.com/benfred/py-spy/issues/375)\n* Fix getting thread names on python 3.9 [#387](https://github.com/benfred/py-spy/issues/387)\n* Fix getting thread names on ARMv7 [#388](https://github.com/benfred/py-spy/issues/388)\n* Add python integration tests, and test wheels across a range of different python versions [#378](https://github.com/benfred/py-spy/pull/378)\n* Automatically add tests for new versions of python [#379](https://github.com/benfred/py-spy/pull/379)\n\n## v0.3.5\n* Handle case where linux kernel is compiled without ```process_vm_readv``` support  [#22](https://github.com/benfred/py-spy/issues/22)\n* Handle case where /proc/self/ns/mnt is missing [#326](https://github.com/benfred/py-spy/issues/326)\n* Allow attaching to processes where the python binary has been deleted [#109](https://github.com/benfred/py-spy/issues/109)\n* Make '--output' optional [#229](https://github.com/benfred/py-spy/issues/229)\n* Add --full-filenames to allow showing full Python filenames [#363](https://github.com/benfred/py-spy/issues/363)\n* Count \"samples\" as the number of recorded stacks (per thread) [#365](https://github.com/benfred/py-spy/issues/365)\n* Exit with an error if --gil but we failed to get necessary addrs/offsets [#361](https://github.com/benfred/py-spy/pull/361)\n* Include command/options used to run py-spy in flamegraph output [#293](https://github.com/benfred/py-spy/issues/293)\n* GIL Detection fixes for python 3.9.2/3.8.8 [#362](https://github.com/benfred/py-spy/pull/362)\n* Move to Github Actions for CI\n\n## v0.3.4\n* Build armv7/aarch64 wheels [#328](https://github.com/benfred/py-spy/issues/328)\n* Detect GIL on Python 3.9 / 3.7.7+ / 3.8.2+\n* Add option for more verbose local variables [#287](https://github.com/benfred/py-spy/issues/287)\n* Fix issues with profiling subprocesses [#265](https://github.com/benfred/py-spy/issues/265)\n* Include python thread names in record [#237](https://github.com/benfred/py-spy/issues/237)\n* Fix issue with threadids triggering differential flamegraphs [#234](https://github.com/benfred/py-spy/issues/234)\n\n## v0.3.3\n\n* Change to display stdout/stderr from profiled child process [#217](https://github.com/benfred/py-spy/issues/217)\n* Fix memory leak on OSX [#227](https://github.com/benfred/py-spy/issues/227)\n* Fix panic on dump --locals [#224](https://github.com/benfred/py-spy/issues/224)\n* Fix cross container short filename generation [#220](https://github.com/benfred/py-spy/issues/220)\n\n## v0.3.2\n\n* Fix line numbers on python 3.8+ [#190](https://github.com/benfred/py-spy/issues/190)\n* Fix profiling pyinstaller binaries on OSX [#207](https://github.com/benfred/py-spy/issues/207)\n* Support getting GIL from Python 3.8.1/3.7.6/3.7.5 [#211](https://github.com/benfred/py-spy/issues/211)\n\n## v0.3.1\n\n* Fix ptrace errors on linux kernel older than v4.7 [#83](https://github.com/benfred/py-spy/issues/83)\n* Fix for profiling docker containers from host os [#199](https://github.com/benfred/py-spy/issues/199)\n* Fix for speedscope profiles aggregated by function name [#201](https://github.com/benfred/py-spy/issues/201)\n* Use symbols from dynsym table of ELF binaries [#191](https://github.com/benfred/py-spy/pull/191)\n\n## v0.3.0\n\n* Add ability to profile subprocesses [#124](https://github.com/benfred/py-spy/issues/124)\n* Fix overflow issue with linux symbolication [#183](https://github.com/benfred/py-spy/issues/183)\n* Fixes for printing local variables [#180](https://github.com/benfred/py-spy/pull/180)\n\n## v0.2.2\n\n* Add ability to show local variables when dumping out stack traces [#77](https://github.com/benfred/py-spy/issues/77)\n* Show python thread names in dump [#47](https://github.com/benfred/py-spy/issues/47)\n* Fix issues with profiling python hosted by .NET exe [#171](https://github.com/benfred/py-spy/issues/171)\n\n## v0.2.1\n\n* Fix issue with profiling dockerized process from the host os [#168](https://github.com/benfred/py-spy/issues/168)\n\n## v0.2.0\n\n* Add ability to profile native python extensions [#2](https://github.com/benfred/py-spy/issues/2)\n* Add FreeBSD support [#112](https://github.com/benfred/py-spy/issues/112)\n* Relicense to MIT [#163](https://github.com/benfred/py-spy/issues/163)\n* Add option to write out Speedscope files [#115](https://github.com/benfred/py-spy/issues/115)\n* Add option to output raw call stack data [#35](https://github.com/benfred/py-spy/issues/35)\n* Get thread idle status from OS [#92](https://github.com/benfred/py-spy/issues/92)\n* Add 'unlimited' default option for the duration [#93](https://github.com/benfred/py-spy/issues/93)\n* Allow use as a library by other rust programs [#110](https://github.com/benfred/py-spy/issues/110)\n* Show OS threadids in dump [#57](https://github.com/benfred/py-spy/issues/57)\n* Drop root permissions when starting new process [#116](https://github.com/benfred/py-spy/issues/116)\n* Support building for ARM processors [#89](https://github.com/benfred/py-spy/issues/89)\n* Python 3.8 compatibility\n* Fix issues profiling functions with more than 4000 lines [#164](https://github.com/benfred/py-spy/issues/164)\n\n## v0.1.11\n\n* Fix to detect GIL status on Python 3.7+ [#104](https://github.com/benfred/py-spy/pull/104)\n* Generate flamegraphs without perl (using Inferno) [#38](https://github.com/benfred/py-spy/issues/38)\n* Use irregular sampling interval to avoid incorrect results [#94](https://github.com/benfred/py-spy/issues/94)\n* Detect python packages when generating short filenames [#75](https://github.com/benfred/py-spy/issues/75)\n* Fix issue with finding interpreter with Python 3.7 and 32bit Linux [#101](https://github.com/benfred/py-spy/issues/101)\n* Detect \"v2.7.15+\" as a valid version string [#81](https://github.com/benfred/py-spy/issues/81)\n* Fix to cleanup venv after failing to build with setup.py [#69](https://github.com/benfred/py-spy/issues/69)\n\n## v0.1.10\n\n* Fix running py-spy inside a docker container [#68](https://github.com/benfred/py-spy/issues/68)\n\n## v0.1.9\n\n* Fix partial stack traces from showing up, by pausing process while collecting samples [#56](https://github.com/benfred/py-spy/issues/56). Also add a ```--nonblocking``` option to use previous behaviour of not stopping process.\n* Allow sampling process running in a docker container from the host OS [#49](https://github.com/benfred/py-spy/issues/49)\n* Allow collecting data for flame graph until interrupted with Control-C  [#21](https://github.com/benfred/py-spy/issues/21)\n* Support 'legacy' strings in python 3 [#64](https://github.com/benfred/py-spy/issues/64)\n\n## v0.1.8\n\n* Support profiling pyinstaller binaries [#42](https://github.com/benfred/py-spy/issues/42)\n* Add fallback when failing to find exe in memory maps [#40](https://github.com/benfred/py-spy/issues/40)\n\n## v0.1.7\n\n* Console viewer improvements for Windows 7 [#37](https://github.com/benfred/py-spy/issues/37)\n\n## v0.1.6\n\n* Warn if we can't sample fast enough [#33](https://github.com/benfred/py-spy/issues/33)\n* Support embedded python interpreters like UWSGI [#25](https://github.com/benfred/py-spy/issues/25)\n* Better error message when failing with 32-bit python on windows\n\n## v0.1.5\n\n* Use musl libc for linux wheels [#5](https://github.com/benfred/py-spy/issues/5)\n* Fix for OSX python built with '--enable-framework' [#15](https://github.com/benfred/py-spy/issues/15)\n* Fix for running on Centos7\n\n## v0.1.4\n\n* Initial public release\n"
  },
  {
    "path": "Cargo.toml",
    "content": "[features]\nunwind = [\"remoteprocess/unwind\"]\n\n[package]\nname = \"py-spy\"\nversion = \"0.4.1\"\nauthors = [\"Ben Frederickson <github@benfrederickson.com>\"]\nrepository = \"https://github.com/benfred/py-spy\"\nhomepage = \"https://github.com/benfred/py-spy\"\ndescription = \"Sampling profiler for Python programs \"\nreadme = \"README.md\"\nexclude = [\"images/*\", \"test_programs/*\"]\nlicense = \"MIT\"\nbuild=\"build.rs\"\nedition=\"2021\"\n\n[dependencies]\nanyhow = \"1\"\nclap = {version=\"3.2\", features=[\"wrap_help\", \"cargo\", \"derive\"]}\nclap_complete=\"3.2\"\nconsole = \"0.16\"\nctrlc = \"3\"\nindicatif = \"0.18\"\nenv_logger = \"0.11\"\ngoblin = \"0.10.0\"\ninferno = \"0.12.3\"\nlazy_static = \"1.4.0\"\nlibc = \"0.2\"\nlog = \"0.4\"\nlru = \"0.10\"\nnum-traits = \"0.2\"\nregex = \">=1.6.0\"\ntempfile = \"3.6.0\"\npage_size = \"0.6.0\"\nproc-maps = \"0.4.0\"\nmemmap2 = \"0.9.4\"\ncpp_demangle = \"0.4\"\nserde = {version=\"1.0\", features=[\"rc\"]}\nserde_derive = \"1.0\"\nserde_json = \"1.0\"\nrand = \"0.8\"\nrand_distr = \"0.4\"\nremoteprocess = \"0.5.1\"\nchrono = \"0.4.26\"\n\n[dev-dependencies]\npy-spy-testdata = \"0.1.0\"\n\n[target.'cfg(unix)'.dependencies]\ntermios = \"0.3.3\"\n\n[target.'cfg(windows)'.dependencies]\nwinapi = {version = \"0.3\", features = [\"errhandlingapi\", \"winbase\", \"consoleapi\", \"wincon\", \"handleapi\", \"timeapi\", \"processenv\" ]}\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2018-2019 Ben Frederickson\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": "README.md",
    "content": "py-spy: Sampling profiler for Python programs\n=====\n[![Build Status](https://github.com/benfred/py-spy/workflows/Build/badge.svg?branch=master)](https://github.com/benfred/py-spy/actions?query=branch%3Amaster)\n[![FreeBSD Build Status](https://api.cirrus-ci.com/github/benfred/py-spy.svg)](https://cirrus-ci.com/github/benfred/py-spy)\n\npy-spy is a sampling profiler for Python programs. It lets you visualize what your Python\nprogram is spending time on without restarting the program or modifying the code in any way.\npy-spy is extremely low overhead: it is written in Rust for speed and doesn't run\nin the same process as the profiled Python program. This means py-spy is safe to use against production Python code.\n\npy-spy works on Linux, OSX, Windows and FreeBSD, and supports profiling all recent versions of the CPython\ninterpreter (versions 2.3-2.7 and 3.3-3.13).\n\n## Installation\n\nPrebuilt binary wheels can be installed from PyPI with:\n\n```\npip install py-spy\n```\n\nYou can also download prebuilt binaries from the [GitHub Releases\nPage](https://github.com/benfred/py-spy/releases).\n\nIf you're a Rust user, py-spy can also be installed with: ```cargo install py-spy```. Note this\nbuilds py-spy from source and requires `libunwind` on Linux and Window, e.g., \n`apt install libunwind-dev`.\n\nOn macOS, [py-spy is in Homebrew](https://formulae.brew.sh/formula/py-spy#default) and \ncan be installed with ```brew install py-spy```.\n\nOn Arch Linux, [py-spy is in AUR](https://aur.archlinux.org/packages/py-spy/) and can be\ninstalled with ```yay -S py-spy```.\n\nOn Alpine Linux, [py-spy is in testing repository](https://pkgs.alpinelinux.org/packages?name=py-spy&branch=edge&repo=testing) and\ncan be installed with ```apk add py-spy --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted```.\n\n## Usage\n\npy-spy works from the command line and takes either the PID of the program you want to sample from\nor the command line of the python program you want to run. py-spy has three subcommands\n```record```, ```top``` and ```dump```:\n\n### record\n\npy-spy supports recording profiles to a file using the ```record``` command. For example, you can\ngenerate a [flame graph](http://www.brendangregg.com/flamegraphs.html) of your python process by\ngoing:\n\n``` bash\npy-spy record -o profile.svg --pid 12345\n# OR\npy-spy record -o profile.svg -- python myprogram.py\n```\n\nWhich will generate an interactive SVG file looking like:\n\n![flame graph](./images/flamegraph.svg)\n\nYou can change the file format to generate\n[speedscope](https://github.com/jlfwong/speedscope) profiles or raw data with the ```--format``` parameter.\nSee ```py-spy record --help``` for information on other options including changing\nthe sampling rate, filtering to only include threads that hold the GIL, profiling native C extensions,\nshowing thread-ids, profiling subprocesses and more.\n\n### top\n\nTop shows a live view of what functions are taking the most time in your python program, similar\nto the Unix [top](https://linux.die.net/man/1/top) command. Running py-spy with:\n\n``` bash\npy-spy top --pid 12345\n# OR\npy-spy top -- python myprogram.py\n```\n\nwill bring up a live updating high level view of your python program:\n\n![console viewer demo](./images/console_viewer.gif)\n\n### dump\n\npy-spy can also display the current call stack for each python thread with the ```dump``` command:\n\n```bash\npy-spy dump --pid 12345\n```\n\nThis will dump out the call stacks for each thread, and some other basic process info to the\nconsole:\n\n![dump output](./images/dump.png)\n\nThis is useful for the case where you just need a single call stack to figure out where your\npython program is hung on. This command also has the ability to print out the local variables\nassociated with each stack frame by setting the ```--locals``` flag.\n\n## Frequently Asked Questions\n\n### Why do we need another Python profiler?\n\nThis project aims to let you profile and debug any running Python program, even if the program is\nserving production traffic.\n\nWhile there are many other python profiling projects, almost all of them require modifying\nthe profiled program in some way. Usually, the profiling code runs inside of the target python process,\nwhich will slow down and change how the program operates. This means it's not generally safe\nto use these profilers for debugging issues in production services since they will usually have\na noticeable impact on performance.\n\n### How does py-spy work?\n\npy-spy works by directly reading the memory of the python program using the\n[process_vm_readv](http://man7.org/linux/man-pages/man2/process_vm_readv.2.html) system call on Linux,\nthe [vm_read](https://developer.apple.com/documentation/kernel/1585350-vm_read?language=objc) call on OSX\nor the [ReadProcessMemory](https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspx) call\non Windows.\n\nFiguring out the call stack of the Python program is done by looking at the global PyInterpreterState variable\nto get all the Python threads running in the interpreter, and then iterating over each PyFrameObject in each thread\nto get the call stack. Since the Python ABI changes between versions, we use rust's [bindgen](https://github.com/rust-lang-nursery/rust-bindgen) to generate different rust structures for each Python interpreter\nclass we care about and use these generated structs to figure out the memory layout in the Python program.\n\nGetting the memory address of the Python Interpreter can be a little tricky due to [Address Space Layout Randomization](https://en.wikipedia.org/wiki/Address_space_layout_randomization). If the target python interpreter ships\nwith symbols it is pretty easy to figure out the memory address of the interpreter by dereferencing the\n```interp_head```  or ```_PyRuntime``` variables depending on the Python version. However, many Python\nversions are shipped with either stripped binaries or shipped without the corresponding PDB symbol files on Windows. In\nthese cases we scan through the BSS section for addresses that look like they may point to a valid PyInterpreterState\nand check if the layout of that address is what we expect.\n\n\n### Can py-spy profile native extensions?\n\nYes! py-spy supports profiling native python extensions written in languages like C/C++ or Cython,\non some platforms (see table below). You can enable this mode by passing ```--native``` on the\ncommand line. For best results, you should compile your Python extension with symbols. Also worth\nnoting for Cython programs is that py-spy needs the generated C or C++ file in order to return line\nnumbers of the original .pyx file.  Read the [blog post](https://www.benfrederickson.com/profiling-native-python-extensions-with-py-spy/)\nfor more information.\n\n|         | Linux | Windows | OSX | FreeBSD |\n|---------|-------|---------|-----|---------|\n| i686    |       |         |     |         |\n| x86-64  | yes   | yes     |     |         |\n| ARM     | yes   |         |     |         |\n| Aarch64 |       |         |     |         |\n\n### How can I profile subprocesses?\n\nBy passing in the ```--subprocesses``` flag to either the record or top view, py-spy will also include\nthe output from any python process that is a child process of the target program. This is useful\nfor profiling applications that use multiprocessing or gunicorn worker pools. py-spy will monitor\nfor new processes being created, and automatically attach to them and include samples from them in\nthe output. The record view will include the PID and cmdline of each program in the callstack,\nwith subprocesses appearing as children of their parent processes.\n\n### When do you need to run as sudo?\n\npy-spy works by reading memory from a different python process, and this might not be allowed for security reasons depending on\nyour OS and system settings. In many cases, running as a root user (with sudo or similar) gets around these security restrictions.\nOSX always requires running as root, but on Linux it depends on how you are launching py-spy and the system\nsecurity settings.\n\nOn Linux the default configuration is to require root permissions when attaching to a process that isn't a child.\nFor py-spy this means you can profile without root access by getting py-spy to create the process\n(```py-spy record  -- python myprogram.py```) but attaching to an existing process by specifying a\nPID will usually require root (```sudo py-spy record --pid 123456```).\nYou can remove this restriction on Linux by setting the [ptrace_scope sysctl variable](https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace_Protection).\n\n### How do you detect if a thread is idle or not?\n\npy-spy attempts to only include stack traces from threads that are actively running code, and exclude threads that\nare sleeping or otherwise idle. When possible, py-spy attempts to get this thread activity information\nfrom the OS: by reading in  ```/proc/PID/stat``` on Linux, by using the mach\n[thread_basic_info](https://opensource.apple.com/source/xnu/xnu-792/osfmk/mach/thread_info.h.auto.html)\ncall on OSX, and by looking if the current SysCall is [known to be\nidle](https://github.com/benfred/py-spy/blob/8326c6dbc6241d60125dfd4c01b70fed8b8b8138/remoteprocess/src/windows/mod.rs#L212-L229)\non Windows.\n\nThere are some limitations with this approach though that may cause idle threads to still be\nmarked as active. First off, we have to get this thread activity information before pausing the\nprogram, because getting this from a paused program will cause it to always return that this is\nidle. This means there is a potential race condition, where we get the thread activity and\nthen the thread is in a different state when we get the stack trace. Querying the OS for thread\nactivity also isn't implemented yet for FreeBSD and i686/ARM processors on Linux. On Windows,\ncalls that are blocked on IO also won't be marked as idle yet, for instance when reading input\nfrom stdin. Finally, on some Linux calls the ptrace attach that we are using may cause idle threads\nto wake up momentarily, causing false positives when reading from procfs. For these reasons, \nwe also have a heuristic fallback that marks known certain known calls in\npython as being idle. \n\nYou can disable this functionality by setting the ```--idle``` flag, which\nwill include frames that py-spy considers idle.  \n\n### How does GIL detection work?\n\nWe get GIL activity by looking at the threadid value pointed to by the ```_PyThreadState_Current``` symbol\nfor Python 3.6 and earlier and by figuring out the equivalent from the ```_PyRuntime``` struct in\nPython 3.7 and later. These symbols might not be included in your python distribution, which will\ncause resolving which thread holds on to the GIL to fail. Current GIL usage is also shown in the \n```top``` view as %GIL.\n\nPassing the ```--gil``` flag will only include traces for threads that are holding on to the\n[Global Interpreter Lock](https://wiki.python.org/moin/GlobalInterpreterLock). In some cases this\nmight be a more accurate view of how your python program is spending its time, though you should\nbe aware that this will miss activity in extensions that release the GIL while still active.\n\n### Why am I having issues profiling /usr/bin/python on OSX?\n\nOSX has a feature called [System Integrity Protection](https://en.wikipedia.org/wiki/System_Integrity_Protection) that prevents even the root user from reading memory from any binary located in /usr/bin. Unfortunately, this includes the python interpreter that ships with OSX.\n\nThere are a couple of different ways to deal with this:\n * You can install a different Python distribution. The built-in Python [will be removed](https://developer.apple.com/documentation/macos_release_notes/macos_catalina_10_15_release_notes) in a future OSX, and you probably want to migrate away from Python 2 anyways =).\n * You can use [virtualenv](https://virtualenv.pypa.io/en/stable/) to run the system python in an environment where SIP doesn't apply.\n * You can [disable System Integrity Protection](https://www.macworld.co.uk/how-to/mac/how-turn-off-mac-os-x-system-integrity-protection-rootless-3638975/).\n\n### How do I run py-spy in Docker?\n\nRunning py-spy inside of a docker container will also usually bring up a permissions denied error even when running as root.\n\nThis error is caused by docker restricting the process_vm_readv system call we are using. This can\nbe overridden by setting\n[```--cap-add SYS_PTRACE```](https://docs.docker.com/engine/security/seccomp/) when starting the docker container.\n\nAlternatively you can edit the docker-compose yaml file\n\n```\nyour_service:\n   cap_add:\n     - SYS_PTRACE\n```\n\nNote that you'll need to restart the docker container in order for this setting to take effect.\n\nYou can also use py-spy from the Host OS to profile a running process running inside the docker\ncontainer. \n\n### How do I run py-spy in Kubernetes?\n\npy-spy needs `SYS_PTRACE` to be able to read process memory. Kubernetes drops that capability by default, resulting in the error\n```\nPermission Denied: Try running again with elevated permissions by going 'sudo env \"PATH=$PATH\" !!'\n```\nThe recommended way to deal with this is to edit the spec and add that capability. For a Deployment, this is done by adding this to `Deployment.spec.template.spec.containers`\n```\nsecurityContext:\n  capabilities:\n    add:\n    - SYS_PTRACE\n```\nMore details on this here: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container\nNote that if you modify the Deployment resource, this will remove the existing Pods and create those again.\n\nYou can also create an **ephemeral container** to attach to a running Pod, targeting a specific **container** where your application is running.\nMake sure to use a `profile` that grants the `SYS_PTRACE` permission, for example:\n\n```sh\nkubectl debug --profile=general \\\n    -n your-namespace \\\n    --target=app-container-name \\\n    pod-name \\\n    --image=python:3.12-slim \\\n    -it -- bash\n```\n\n### How do I install py-spy on Alpine Linux?\n\nAlpine python opts out of the `manylinux` wheels: [pypa/pip#3969 (comment)](https://github.com/pypa/pip/issues/3969#issuecomment-247381915).\nYou can override this behaviour to use pip to install py-spy on Alpine by going:\n\n    echo 'manylinux1_compatible = True' > /usr/local/lib/python3.7/site-packages/_manylinux.py\n\nAlternatively you can download a musl binary from the [GitHub releases page](https://github.com/benfred/py-spy/releases).\n\n### How can I avoid pausing the Python program?\n\nBy setting the ```--nonblocking``` option, py-spy won't pause the target python you are profiling from. While\nthe performance impact of sampling from a process with py-spy is usually extremely low, setting this option\nwill totally avoid interrupting your running python program.\n\nWith this option set, py-spy will instead read the interpreter state from the python process as it is running.\nSince the calls we use to read memory from are not atomic, and we have to issue multiple calls to get a stack trace this\nmeans that occasionally we get errors when sampling. This can show up as an increased error rate when sampling, or as\npartial stack frames being included in the output.\n\n### Does py-spy support 32-bit Windows? Integrate with PyPy? Work with USC2 versions of Python2?\n\nNot yet =).\n\nIf there are features you'd like to see in py-spy either thumb up the [appropriate\nissue](https://github.com/benfred/py-spy/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) or create a new one that describes what functionality is missing.\n\n### How to force colored output when piping to a pager?\n\npy-spy follows the [CLICOLOR](https://bixense.com/clicolors/) specification, thus setting `CLICOLOR_FORCE=1` in your environment will have py-spy print colored output even when piped to a pager.\n\n## Credits\n\npy-spy is heavily inspired by [Julia Evans](https://github.com/jvns/) excellent work on [rbspy](http://github.com/rbspy/rbspy).\nIn particular, the code to generate flamegraph and speedscope files is taken directly from rbspy, and this project uses the\n[read-process-memory](https://github.com/luser/read-process-memory) and [proc-maps](https://github.com/benfred/proc-maps) crates that were spun off from rbspy.\n\n## License\n\npy-spy is released under the MIT License, see the [LICENSE](https://github.com/benfred/py-spy/blob/master/LICENSE) file for the full text.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Reporting a Vulnerability\n\nPlease email any security vulnerabilities to ben@benfrederickson.com.\n\n## Supported Versions\n\nOnly the most recent version of py-spy will get security updates.\n"
  },
  {
    "path": "build.rs",
    "content": "use std::env;\n\nfn main() {\n    let target_arch = env::var(\"CARGO_CFG_TARGET_ARCH\").unwrap();\n    let target_os = env::var(\"CARGO_CFG_TARGET_OS\").unwrap();\n    match (target_arch.as_ref(), target_os.as_ref()) {\n        (\"x86_64\", \"windows\") | (\"x86_64\", \"linux\") | (\"arm\", \"linux\") => {\n            println!(\"cargo:rustc-cfg=unwind\")\n        }\n        _ => {}\n    }\n}\n"
  },
  {
    "path": "ci/Vagrantfile",
    "content": "Vagrant.configure(\"2\") do |config|\n  config.vm.define \"freebsd-14\" do |c|\n    c.vm.box = \"roboxes/freebsd14\"\n  end\n\n  config.vm.boot_timeout = 600\n\n  config.vm.provider \"libvirt\" do |qe|\n    # https://vagrant-libvirt.github.io/vagrant-libvirt/configuration.html\n    qe.driver = \"kvm\"\n    qe.cpus = 3\n    qe.memory = 8192\n  end\n\n  config.vm.synced_folder \".\", \"/vagrant\", type: \"rsync\",\n    rsync__exclude: [\".git\", \".vagrant.d\"]\n\n  config.vm.provision \"shell\", inline: <<~SHELL\n    set -e\n    pkg install -y curl bash python llvm\n    chsh -s /usr/local/bin/bash vagrant\n    pw groupmod wheel -m vagrant\n    su -l vagrant <<'EOF'\n    curl https://sh.rustup.rs -sSf | sh -s -- -y --profile minimal --default-toolchain 1.88.0\n    EOF\n  SHELL\nend\n"
  },
  {
    "path": "ci/publish_freebsd.sh",
    "content": "#!/usr/bin/env bash\nset -ex\n\nif [[ \"$CIRRUS_RELEASE\" == \"\" ]]; then\n  echo \"Not a release. No need to deploy!\"\n  exit 0\nfi\n\nif [[ \"$GITHUB_TOKEN\" == \"\" ]]; then\n  echo \"Please provide GitHub access token via GITHUB_TOKEN environment variable!\"\n  exit 1\nfi\n\nfile_content_type=\"application/octet-stream\"\nfpath=py-spy-$CIRRUS_TAG-x86_64-freebsd.tar.gz\n\ntar -C ./target/release -czf $fpath py-spy\n\necho \"Uploading $fpath...\"\nname=$(basename \"$fpath\")\nurl_to_upload=\"https://uploads.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases/$CIRRUS_RELEASE/assets?name=$name\"\ncurl -X POST \\\n--data-binary @$fpath \\\n--header \"Authorization: token $GITHUB_TOKEN\" \\\n--header \"Content-Type: $file_content_type\" \\\n$url_to_upload\n"
  },
  {
    "path": "ci/test_freebsd.sh",
    "content": "#!/usr/bin/env bash\n\nsource \"$HOME/.cargo/env\"\n\nset -e\n\npython --version\ncargo --version\n\ncd /vagrant\n\nif [ -f build-artifacts.tar ]; then\n  echo \"Unpacking cached build artifacts...\"\n  tar xf build-artifacts.tar\n  rm -f build-artifacts.tar\nfi\n\ncargo build --release --workspace --all-targets\n\n# TODO: re-enable integration tests\n# cargo test --release\n\nset +e\ntar cf build-artifacts.tar target\ntar rf build-artifacts.tar \"$HOME/.cargo/git\"\ntar rf build-artifacts.tar \"$HOME/.cargo/registry\"\n\nexit 0\n"
  },
  {
    "path": "ci/testdata/cython_test.c",
    "content": "/* Generated by Cython 0.28.5 */\n\n#define PY_SSIZE_T_CLEAN\n#include \"Python.h\"\n#ifndef Py_PYTHON_H\n    #error Python headers needed to compile C extensions, please install development version of Python.\n#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03030000)\n    #error Cython requires Python 2.6+ or Python 3.3+.\n#else\n#define CYTHON_ABI \"0_28_5\"\n#define CYTHON_FUTURE_DIVISION 0\n#include <stddef.h>\n#ifndef offsetof\n  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )\n#endif\n#if !defined(WIN32) && !defined(MS_WINDOWS)\n  #ifndef __stdcall\n    #define __stdcall\n  #endif\n  #ifndef __cdecl\n    #define __cdecl\n  #endif\n  #ifndef __fastcall\n    #define __fastcall\n  #endif\n#endif\n#ifndef DL_IMPORT\n  #define DL_IMPORT(t) t\n#endif\n#ifndef DL_EXPORT\n  #define DL_EXPORT(t) t\n#endif\n#define __PYX_COMMA ,\n#ifndef HAVE_LONG_LONG\n  #if PY_VERSION_HEX >= 0x02070000\n    #define HAVE_LONG_LONG\n  #endif\n#endif\n#ifndef PY_LONG_LONG\n  #define PY_LONG_LONG LONG_LONG\n#endif\n#ifndef Py_HUGE_VAL\n  #define Py_HUGE_VAL HUGE_VAL\n#endif\n#ifdef PYPY_VERSION\n  #define CYTHON_COMPILING_IN_PYPY 1\n  #define CYTHON_COMPILING_IN_PYSTON 0\n  #define CYTHON_COMPILING_IN_CPYTHON 0\n  #undef CYTHON_USE_TYPE_SLOTS\n  #define CYTHON_USE_TYPE_SLOTS 0\n  #undef CYTHON_USE_PYTYPE_LOOKUP\n  #define CYTHON_USE_PYTYPE_LOOKUP 0\n  #if PY_VERSION_HEX < 0x03050000\n    #undef CYTHON_USE_ASYNC_SLOTS\n    #define CYTHON_USE_ASYNC_SLOTS 0\n  #elif !defined(CYTHON_USE_ASYNC_SLOTS)\n    #define CYTHON_USE_ASYNC_SLOTS 1\n  #endif\n  #undef CYTHON_USE_PYLIST_INTERNALS\n  #define CYTHON_USE_PYLIST_INTERNALS 0\n  #undef CYTHON_USE_UNICODE_INTERNALS\n  #define CYTHON_USE_UNICODE_INTERNALS 0\n  #undef CYTHON_USE_UNICODE_WRITER\n  #define CYTHON_USE_UNICODE_WRITER 0\n  #undef CYTHON_USE_PYLONG_INTERNALS\n  #define CYTHON_USE_PYLONG_INTERNALS 0\n  #undef CYTHON_AVOID_BORROWED_REFS\n  #define CYTHON_AVOID_BORROWED_REFS 1\n  #undef CYTHON_ASSUME_SAFE_MACROS\n  #define CYTHON_ASSUME_SAFE_MACROS 0\n  #undef CYTHON_UNPACK_METHODS\n  #define CYTHON_UNPACK_METHODS 0\n  #undef CYTHON_FAST_THREAD_STATE\n  #define CYTHON_FAST_THREAD_STATE 0\n  #undef CYTHON_FAST_PYCALL\n  #define CYTHON_FAST_PYCALL 0\n  #undef CYTHON_PEP489_MULTI_PHASE_INIT\n  #define CYTHON_PEP489_MULTI_PHASE_INIT 0\n  #undef CYTHON_USE_TP_FINALIZE\n  #define CYTHON_USE_TP_FINALIZE 0\n#elif defined(PYSTON_VERSION)\n  #define CYTHON_COMPILING_IN_PYPY 0\n  #define CYTHON_COMPILING_IN_PYSTON 1\n  #define CYTHON_COMPILING_IN_CPYTHON 0\n  #ifndef CYTHON_USE_TYPE_SLOTS\n    #define CYTHON_USE_TYPE_SLOTS 1\n  #endif\n  #undef CYTHON_USE_PYTYPE_LOOKUP\n  #define CYTHON_USE_PYTYPE_LOOKUP 0\n  #undef CYTHON_USE_ASYNC_SLOTS\n  #define CYTHON_USE_ASYNC_SLOTS 0\n  #undef CYTHON_USE_PYLIST_INTERNALS\n  #define CYTHON_USE_PYLIST_INTERNALS 0\n  #ifndef CYTHON_USE_UNICODE_INTERNALS\n    #define CYTHON_USE_UNICODE_INTERNALS 1\n  #endif\n  #undef CYTHON_USE_UNICODE_WRITER\n  #define CYTHON_USE_UNICODE_WRITER 0\n  #undef CYTHON_USE_PYLONG_INTERNALS\n  #define CYTHON_USE_PYLONG_INTERNALS 0\n  #ifndef CYTHON_AVOID_BORROWED_REFS\n    #define CYTHON_AVOID_BORROWED_REFS 0\n  #endif\n  #ifndef CYTHON_ASSUME_SAFE_MACROS\n    #define CYTHON_ASSUME_SAFE_MACROS 1\n  #endif\n  #ifndef CYTHON_UNPACK_METHODS\n    #define CYTHON_UNPACK_METHODS 1\n  #endif\n  #undef CYTHON_FAST_THREAD_STATE\n  #define CYTHON_FAST_THREAD_STATE 0\n  #undef CYTHON_FAST_PYCALL\n  #define CYTHON_FAST_PYCALL 0\n  #undef CYTHON_PEP489_MULTI_PHASE_INIT\n  #define CYTHON_PEP489_MULTI_PHASE_INIT 0\n  #undef CYTHON_USE_TP_FINALIZE\n  #define CYTHON_USE_TP_FINALIZE 0\n#else\n  #define CYTHON_COMPILING_IN_PYPY 0\n  #define CYTHON_COMPILING_IN_PYSTON 0\n  #define CYTHON_COMPILING_IN_CPYTHON 1\n  #ifndef CYTHON_USE_TYPE_SLOTS\n    #define CYTHON_USE_TYPE_SLOTS 1\n  #endif\n  #if PY_VERSION_HEX < 0x02070000\n    #undef CYTHON_USE_PYTYPE_LOOKUP\n    #define CYTHON_USE_PYTYPE_LOOKUP 0\n  #elif !defined(CYTHON_USE_PYTYPE_LOOKUP)\n    #define CYTHON_USE_PYTYPE_LOOKUP 1\n  #endif\n  #if PY_MAJOR_VERSION < 3\n    #undef CYTHON_USE_ASYNC_SLOTS\n    #define CYTHON_USE_ASYNC_SLOTS 0\n  #elif !defined(CYTHON_USE_ASYNC_SLOTS)\n    #define CYTHON_USE_ASYNC_SLOTS 1\n  #endif\n  #if PY_VERSION_HEX < 0x02070000\n    #undef CYTHON_USE_PYLONG_INTERNALS\n    #define CYTHON_USE_PYLONG_INTERNALS 0\n  #elif !defined(CYTHON_USE_PYLONG_INTERNALS)\n    #define CYTHON_USE_PYLONG_INTERNALS 1\n  #endif\n  #ifndef CYTHON_USE_PYLIST_INTERNALS\n    #define CYTHON_USE_PYLIST_INTERNALS 1\n  #endif\n  #ifndef CYTHON_USE_UNICODE_INTERNALS\n    #define CYTHON_USE_UNICODE_INTERNALS 1\n  #endif\n  #if PY_VERSION_HEX < 0x030300F0\n    #undef CYTHON_USE_UNICODE_WRITER\n    #define CYTHON_USE_UNICODE_WRITER 0\n  #elif !defined(CYTHON_USE_UNICODE_WRITER)\n    #define CYTHON_USE_UNICODE_WRITER 1\n  #endif\n  #ifndef CYTHON_AVOID_BORROWED_REFS\n    #define CYTHON_AVOID_BORROWED_REFS 0\n  #endif\n  #ifndef CYTHON_ASSUME_SAFE_MACROS\n    #define CYTHON_ASSUME_SAFE_MACROS 1\n  #endif\n  #ifndef CYTHON_UNPACK_METHODS\n    #define CYTHON_UNPACK_METHODS 1\n  #endif\n  #ifndef CYTHON_FAST_THREAD_STATE\n    #define CYTHON_FAST_THREAD_STATE 1\n  #endif\n  #ifndef CYTHON_FAST_PYCALL\n    #define CYTHON_FAST_PYCALL 1\n  #endif\n  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT\n    #define CYTHON_PEP489_MULTI_PHASE_INIT (0 && PY_VERSION_HEX >= 0x03050000)\n  #endif\n  #ifndef CYTHON_USE_TP_FINALIZE\n    #define CYTHON_USE_TP_FINALIZE (PY_VERSION_HEX >= 0x030400a1)\n  #endif\n#endif\n#if !defined(CYTHON_FAST_PYCCALL)\n#define CYTHON_FAST_PYCCALL  (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)\n#endif\n#if CYTHON_USE_PYLONG_INTERNALS\n  #include \"longintrepr.h\"\n  #undef SHIFT\n  #undef BASE\n  #undef MASK\n#endif\n#ifndef __has_attribute\n  #define __has_attribute(x) 0\n#endif\n#ifndef __has_cpp_attribute\n  #define __has_cpp_attribute(x) 0\n#endif\n#ifndef CYTHON_RESTRICT\n  #if defined(__GNUC__)\n    #define CYTHON_RESTRICT __restrict__\n  #elif defined(_MSC_VER) && _MSC_VER >= 1400\n    #define CYTHON_RESTRICT __restrict\n  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n    #define CYTHON_RESTRICT restrict\n  #else\n    #define CYTHON_RESTRICT\n  #endif\n#endif\n#ifndef CYTHON_UNUSED\n# if defined(__GNUC__)\n#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))\n#     define CYTHON_UNUSED __attribute__ ((__unused__))\n#   else\n#     define CYTHON_UNUSED\n#   endif\n# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))\n#   define CYTHON_UNUSED __attribute__ ((__unused__))\n# else\n#   define CYTHON_UNUSED\n# endif\n#endif\n#ifndef CYTHON_MAYBE_UNUSED_VAR\n#  if defined(__cplusplus)\n     template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }\n#  else\n#    define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)\n#  endif\n#endif\n#ifndef CYTHON_NCP_UNUSED\n# if CYTHON_COMPILING_IN_CPYTHON\n#  define CYTHON_NCP_UNUSED\n# else\n#  define CYTHON_NCP_UNUSED CYTHON_UNUSED\n# endif\n#endif\n#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)\n#ifdef _MSC_VER\n    #ifndef _MSC_STDINT_H_\n        #if _MSC_VER < 1300\n           typedef unsigned char     uint8_t;\n           typedef unsigned int      uint32_t;\n        #else\n           typedef unsigned __int8   uint8_t;\n           typedef unsigned __int32  uint32_t;\n        #endif\n    #endif\n#else\n   #include <stdint.h>\n#endif\n#ifndef CYTHON_FALLTHROUGH\n  #if defined(__cplusplus) && __cplusplus >= 201103L\n    #if __has_cpp_attribute(fallthrough)\n      #define CYTHON_FALLTHROUGH [[fallthrough]]\n    #elif __has_cpp_attribute(clang::fallthrough)\n      #define CYTHON_FALLTHROUGH [[clang::fallthrough]]\n    #elif __has_cpp_attribute(gnu::fallthrough)\n      #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]\n    #endif\n  #endif\n  #ifndef CYTHON_FALLTHROUGH\n    #if __has_attribute(fallthrough)\n      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))\n    #else\n      #define CYTHON_FALLTHROUGH\n    #endif\n  #endif\n  #if defined(__clang__ ) && defined(__apple_build_version__)\n    #if __apple_build_version__ < 7000000\n      #undef  CYTHON_FALLTHROUGH\n      #define CYTHON_FALLTHROUGH\n    #endif\n  #endif\n#endif\n\n#ifndef CYTHON_INLINE\n  #if defined(__clang__)\n    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))\n  #elif defined(__GNUC__)\n    #define CYTHON_INLINE __inline__\n  #elif defined(_MSC_VER)\n    #define CYTHON_INLINE __inline\n  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n    #define CYTHON_INLINE inline\n  #else\n    #define CYTHON_INLINE\n  #endif\n#endif\n\n#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)\n  #define Py_OptimizeFlag 0\n#endif\n#define __PYX_BUILD_PY_SSIZE_T \"n\"\n#define CYTHON_FORMAT_SSIZE_T \"z\"\n#if PY_MAJOR_VERSION < 3\n  #define __Pyx_BUILTIN_MODULE_NAME \"__builtin__\"\n  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\\\n          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\n  #define __Pyx_DefaultClassType PyClass_Type\n#else\n  #define __Pyx_BUILTIN_MODULE_NAME \"builtins\"\n  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\\\n          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\n  #define __Pyx_DefaultClassType PyType_Type\n#endif\n#ifndef Py_TPFLAGS_CHECKTYPES\n  #define Py_TPFLAGS_CHECKTYPES 0\n#endif\n#ifndef Py_TPFLAGS_HAVE_INDEX\n  #define Py_TPFLAGS_HAVE_INDEX 0\n#endif\n#ifndef Py_TPFLAGS_HAVE_NEWBUFFER\n  #define Py_TPFLAGS_HAVE_NEWBUFFER 0\n#endif\n#ifndef Py_TPFLAGS_HAVE_FINALIZE\n  #define Py_TPFLAGS_HAVE_FINALIZE 0\n#endif\n#if PY_VERSION_HEX <= 0x030700A3 || !defined(METH_FASTCALL)\n  #ifndef METH_FASTCALL\n     #define METH_FASTCALL 0x80\n  #endif\n  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);\n  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,\n                                                          Py_ssize_t nargs, PyObject *kwnames);\n#else\n  #define __Pyx_PyCFunctionFast _PyCFunctionFast\n  #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords\n#endif\n#if CYTHON_FAST_PYCCALL\n#define __Pyx_PyFastCFunction_Check(func)\\\n    ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))\n#else\n#define __Pyx_PyFastCFunction_Check(func) 0\n#endif\n#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)\n  #define PyObject_Malloc(s)   PyMem_Malloc(s)\n  #define PyObject_Free(p)     PyMem_Free(p)\n  #define PyObject_Realloc(p)  PyMem_Realloc(p)\n#endif\n#if CYTHON_COMPILING_IN_PYSTON\n  #define __Pyx_PyCode_HasFreeVars(co)  PyCode_HasFreeVars(co)\n  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)\n#else\n  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)\n  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)\n#endif\n#if !CYTHON_FAST_THREAD_STATE || PY_VERSION_HEX < 0x02070000\n  #define __Pyx_PyThreadState_Current PyThreadState_GET()\n#elif PY_VERSION_HEX >= 0x03060000\n  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()\n#elif PY_VERSION_HEX >= 0x03000000\n  #define __Pyx_PyThreadState_Current PyThreadState_GET()\n#else\n  #define __Pyx_PyThreadState_Current _PyThreadState_Current\n#endif\n#if PY_VERSION_HEX < 0x030700A2 && !defined(PyThread_tss_create) && !defined(Py_tss_NEEDS_INIT)\n#include \"pythread.h\"\n#define Py_tss_NEEDS_INIT 0\ntypedef int Py_tss_t;\nstatic CYTHON_INLINE int PyThread_tss_create(Py_tss_t *key) {\n  *key = PyThread_create_key();\n  return 0; // PyThread_create_key reports success always\n}\nstatic CYTHON_INLINE Py_tss_t * PyThread_tss_alloc(void) {\n  Py_tss_t *key = (Py_tss_t *)PyObject_Malloc(sizeof(Py_tss_t));\n  *key = Py_tss_NEEDS_INIT;\n  return key;\n}\nstatic CYTHON_INLINE void PyThread_tss_free(Py_tss_t *key) {\n  PyObject_Free(key);\n}\nstatic CYTHON_INLINE int PyThread_tss_is_created(Py_tss_t *key) {\n  return *key != Py_tss_NEEDS_INIT;\n}\nstatic CYTHON_INLINE void PyThread_tss_delete(Py_tss_t *key) {\n  PyThread_delete_key(*key);\n  *key = Py_tss_NEEDS_INIT;\n}\nstatic CYTHON_INLINE int PyThread_tss_set(Py_tss_t *key, void *value) {\n  return PyThread_set_key_value(*key, value);\n}\nstatic CYTHON_INLINE void * PyThread_tss_get(Py_tss_t *key) {\n  return PyThread_get_key_value(*key);\n}\n#endif // TSS (Thread Specific Storage) API\n#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)\n#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))\n#else\n#define __Pyx_PyDict_NewPresized(n)  PyDict_New()\n#endif\n#if PY_MAJOR_VERSION >= 3 || CYTHON_FUTURE_DIVISION\n  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)\n  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)\n#else\n  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)\n  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)\n#endif\n#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030500A1 && CYTHON_USE_UNICODE_INTERNALS\n#define __Pyx_PyDict_GetItemStr(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)\n#else\n#define __Pyx_PyDict_GetItemStr(dict, name)  PyDict_GetItem(dict, name)\n#endif\n#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)\n  #define CYTHON_PEP393_ENABLED 1\n  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\\\n                                              0 : _PyUnicode_Ready((PyObject *)(op)))\n  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)\n  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)\n  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)\n  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)\n  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)\n  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)\n  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, ch)\n  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))\n#else\n  #define CYTHON_PEP393_ENABLED 0\n  #define PyUnicode_1BYTE_KIND  1\n  #define PyUnicode_2BYTE_KIND  2\n  #define PyUnicode_4BYTE_KIND  4\n  #define __Pyx_PyUnicode_READY(op)       (0)\n  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)\n  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))\n  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111)\n  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))\n  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))\n  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))\n  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  (((void)(k)), ((Py_UNICODE*)d)[i] = ch)\n  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_SIZE(u))\n#endif\n#if CYTHON_COMPILING_IN_PYPY\n  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)\n  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)\n#else\n  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)\n  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\\\n      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))\n#endif\n#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)\n  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)\n#endif\n#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check)\n  #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)\n#endif\n#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format)\n  #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, \"__format__\", \"O\", fmt)\n#endif\n#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))\n#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))\n#if PY_MAJOR_VERSION >= 3\n  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)\n#else\n  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)\n#endif\n#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII)\n  #define PyObject_ASCII(o)            PyObject_Repr(o)\n#endif\n#if PY_MAJOR_VERSION >= 3\n  #define PyBaseString_Type            PyUnicode_Type\n  #define PyStringObject               PyUnicodeObject\n  #define PyString_Type                PyUnicode_Type\n  #define PyString_Check               PyUnicode_Check\n  #define PyString_CheckExact          PyUnicode_CheckExact\n  #define PyObject_Unicode             PyObject_Str\n#endif\n#if PY_MAJOR_VERSION >= 3\n  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)\n  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)\n#else\n  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))\n  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))\n#endif\n#ifndef PySet_CheckExact\n  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)\n#endif\n#if CYTHON_ASSUME_SAFE_MACROS\n  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)\n#else\n  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)\n#endif\n#if PY_MAJOR_VERSION >= 3\n  #define PyIntObject                  PyLongObject\n  #define PyInt_Type                   PyLong_Type\n  #define PyInt_Check(op)              PyLong_Check(op)\n  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)\n  #define PyInt_FromString             PyLong_FromString\n  #define PyInt_FromUnicode            PyLong_FromUnicode\n  #define PyInt_FromLong               PyLong_FromLong\n  #define PyInt_FromSize_t             PyLong_FromSize_t\n  #define PyInt_FromSsize_t            PyLong_FromSsize_t\n  #define PyInt_AsLong                 PyLong_AsLong\n  #define PyInt_AS_LONG                PyLong_AS_LONG\n  #define PyInt_AsSsize_t              PyLong_AsSsize_t\n  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask\n  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask\n  #define PyNumber_Int                 PyNumber_Long\n#endif\n#if PY_MAJOR_VERSION >= 3\n  #define PyBoolObject                 PyLongObject\n#endif\n#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY\n  #ifndef PyUnicode_InternFromString\n    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)\n  #endif\n#endif\n#if PY_VERSION_HEX < 0x030200A4\n  typedef long Py_hash_t;\n  #define __Pyx_PyInt_FromHash_t PyInt_FromLong\n  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong\n#else\n  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t\n  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t\n#endif\n#if PY_MAJOR_VERSION >= 3\n  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : (Py_INCREF(func), func))\n#else\n  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)\n#endif\n#if CYTHON_USE_ASYNC_SLOTS\n  #if PY_VERSION_HEX >= 0x030500B1\n    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods\n    #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)\n  #else\n    #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))\n  #endif\n#else\n  #define __Pyx_PyType_AsAsync(obj) NULL\n#endif\n#ifndef __Pyx_PyAsyncMethodsStruct\n    typedef struct {\n        unaryfunc am_await;\n        unaryfunc am_aiter;\n        unaryfunc am_anext;\n    } __Pyx_PyAsyncMethodsStruct;\n#endif\n\n#if defined(WIN32) || defined(MS_WINDOWS)\n  #define _USE_MATH_DEFINES\n#endif\n#include <math.h>\n#ifdef NAN\n#define __PYX_NAN() ((float) NAN)\n#else\nstatic CYTHON_INLINE float __PYX_NAN() {\n  float value;\n  memset(&value, 0xFF, sizeof(value));\n  return value;\n}\n#endif\n#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)\n#define __Pyx_truncl trunc\n#else\n#define __Pyx_truncl truncl\n#endif\n\n\n#define __PYX_ERR(f_index, lineno, Ln_error) \\\n{ \\\n  __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \\\n}\n\n#ifndef __PYX_EXTERN_C\n  #ifdef __cplusplus\n    #define __PYX_EXTERN_C extern \"C\"\n  #else\n    #define __PYX_EXTERN_C extern\n  #endif\n#endif\n\n#define __PYX_HAVE__cython_test\n#define __PYX_HAVE_API__cython_test\n/* Early includes */\n#ifdef _OPENMP\n#include <omp.h>\n#endif /* _OPENMP */\n\n#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)\n#define CYTHON_WITHOUT_ASSERTIONS\n#endif\n\ntypedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding;\n                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;\n\n#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0\n#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0\n#define __PYX_DEFAULT_STRING_ENCODING \"\"\n#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString\n#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize\n#define __Pyx_uchar_cast(c) ((unsigned char)c)\n#define __Pyx_long_cast(x) ((long)x)\n#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\\\n    (sizeof(type) < sizeof(Py_ssize_t))  ||\\\n    (sizeof(type) > sizeof(Py_ssize_t) &&\\\n          likely(v < (type)PY_SSIZE_T_MAX ||\\\n                 v == (type)PY_SSIZE_T_MAX)  &&\\\n          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\\\n                                v == (type)PY_SSIZE_T_MIN)))  ||\\\n    (sizeof(type) == sizeof(Py_ssize_t) &&\\\n          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\\\n                               v == (type)PY_SSIZE_T_MAX)))  )\n#if defined (__cplusplus) && __cplusplus >= 201103L\n    #include <cstdlib>\n    #define __Pyx_sst_abs(value) std::abs(value)\n#elif SIZEOF_INT >= SIZEOF_SIZE_T\n    #define __Pyx_sst_abs(value) abs(value)\n#elif SIZEOF_LONG >= SIZEOF_SIZE_T\n    #define __Pyx_sst_abs(value) labs(value)\n#elif defined (_MSC_VER)\n    #define __Pyx_sst_abs(value) ((Py_ssize_t)_abs64(value))\n#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L\n    #define __Pyx_sst_abs(value) llabs(value)\n#elif defined (__GNUC__)\n    #define __Pyx_sst_abs(value) __builtin_llabs(value)\n#else\n    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)\n#endif\nstatic CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);\nstatic CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);\n#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))\n#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)\n#define __Pyx_PyBytes_FromString        PyBytes_FromString\n#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize\nstatic CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);\n#if PY_MAJOR_VERSION < 3\n    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString\n    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize\n#else\n    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString\n    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize\n#endif\n#define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))\n#define __Pyx_PyObject_AsWritableString(s)    ((char*) __Pyx_PyObject_AsString(s))\n#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))\n#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))\n#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))\n#define __Pyx_PyObject_AsUString(s)    ((const unsigned char*) __Pyx_PyObject_AsString(s))\n#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)\n#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)\n#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)\n#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)\n#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)\nstatic CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u) {\n    const Py_UNICODE *u_end = u;\n    while (*u_end++) ;\n    return (size_t)(u_end - u - 1);\n}\n#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))\n#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode\n#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode\n#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)\n#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)\nstatic CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);\nstatic CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);\nstatic CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);\n#define __Pyx_PySequence_Tuple(obj)\\\n    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))\nstatic CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);\nstatic CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);\n#if CYTHON_ASSUME_SAFE_MACROS\n#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))\n#else\n#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)\n#endif\n#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))\n#if PY_MAJOR_VERSION >= 3\n#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))\n#else\n#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))\n#endif\n#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))\n#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII\nstatic int __Pyx_sys_getdefaultencoding_not_ascii;\nstatic int __Pyx_init_sys_getdefaultencoding_params(void) {\n    PyObject* sys;\n    PyObject* default_encoding = NULL;\n    PyObject* ascii_chars_u = NULL;\n    PyObject* ascii_chars_b = NULL;\n    const char* default_encoding_c;\n    sys = PyImport_ImportModule(\"sys\");\n    if (!sys) goto bad;\n    default_encoding = PyObject_CallMethod(sys, (char*) \"getdefaultencoding\", NULL);\n    Py_DECREF(sys);\n    if (!default_encoding) goto bad;\n    default_encoding_c = PyBytes_AsString(default_encoding);\n    if (!default_encoding_c) goto bad;\n    if (strcmp(default_encoding_c, \"ascii\") == 0) {\n        __Pyx_sys_getdefaultencoding_not_ascii = 0;\n    } else {\n        char ascii_chars[128];\n        int c;\n        for (c = 0; c < 128; c++) {\n            ascii_chars[c] = c;\n        }\n        __Pyx_sys_getdefaultencoding_not_ascii = 1;\n        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);\n        if (!ascii_chars_u) goto bad;\n        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);\n        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {\n            PyErr_Format(\n                PyExc_ValueError,\n                \"This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.\",\n                default_encoding_c);\n            goto bad;\n        }\n        Py_DECREF(ascii_chars_u);\n        Py_DECREF(ascii_chars_b);\n    }\n    Py_DECREF(default_encoding);\n    return 0;\nbad:\n    Py_XDECREF(default_encoding);\n    Py_XDECREF(ascii_chars_u);\n    Py_XDECREF(ascii_chars_b);\n    return -1;\n}\n#endif\n#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3\n#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)\n#else\n#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)\n#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT\nstatic char* __PYX_DEFAULT_STRING_ENCODING;\nstatic int __Pyx_init_sys_getdefaultencoding_params(void) {\n    PyObject* sys;\n    PyObject* default_encoding = NULL;\n    char* default_encoding_c;\n    sys = PyImport_ImportModule(\"sys\");\n    if (!sys) goto bad;\n    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) \"getdefaultencoding\", NULL);\n    Py_DECREF(sys);\n    if (!default_encoding) goto bad;\n    default_encoding_c = PyBytes_AsString(default_encoding);\n    if (!default_encoding_c) goto bad;\n    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));\n    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;\n    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);\n    Py_DECREF(default_encoding);\n    return 0;\nbad:\n    Py_XDECREF(default_encoding);\n    return -1;\n}\n#endif\n#endif\n\n\n/* Test for GCC > 2.95 */\n#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))\n  #define likely(x)   __builtin_expect(!!(x), 1)\n  #define unlikely(x) __builtin_expect(!!(x), 0)\n#else /* !__GNUC__ or GCC < 2.95 */\n  #define likely(x)   (x)\n  #define unlikely(x) (x)\n#endif /* __GNUC__ */\nstatic CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }\n\nstatic PyObject *__pyx_m = NULL;\nstatic PyObject *__pyx_d;\nstatic PyObject *__pyx_b;\nstatic PyObject *__pyx_cython_runtime = NULL;\nstatic PyObject *__pyx_empty_tuple;\nstatic PyObject *__pyx_empty_bytes;\nstatic PyObject *__pyx_empty_unicode;\nstatic int __pyx_lineno;\nstatic int __pyx_clineno = 0;\nstatic const char * __pyx_cfilenm= __FILE__;\nstatic const char *__pyx_filename;\n\n\nstatic const char *__pyx_f[] = {\n  \"cython_test.pyx\",\n};\n\n/*--- Type declarations ---*/\n\n/* --- Runtime support code (head) --- */\n/* Refnanny.proto */\n#ifndef CYTHON_REFNANNY\n  #define CYTHON_REFNANNY 0\n#endif\n#if CYTHON_REFNANNY\n  typedef struct {\n    void (*INCREF)(void*, PyObject*, int);\n    void (*DECREF)(void*, PyObject*, int);\n    void (*GOTREF)(void*, PyObject*, int);\n    void (*GIVEREF)(void*, PyObject*, int);\n    void* (*SetupContext)(const char*, int, const char*);\n    void (*FinishContext)(void**);\n  } __Pyx_RefNannyAPIStruct;\n  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;\n  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);\n  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;\n#ifdef WITH_THREAD\n  #define __Pyx_RefNannySetupContext(name, acquire_gil)\\\n          if (acquire_gil) {\\\n              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\\\n              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\\\n              PyGILState_Release(__pyx_gilstate_save);\\\n          } else {\\\n              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\\\n          }\n#else\n  #define __Pyx_RefNannySetupContext(name, acquire_gil)\\\n          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)\n#endif\n  #define __Pyx_RefNannyFinishContext()\\\n          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)\n  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)\n  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)\n  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)\n  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)\n  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)\n  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)\n  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)\n  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)\n#else\n  #define __Pyx_RefNannyDeclarations\n  #define __Pyx_RefNannySetupContext(name, acquire_gil)\n  #define __Pyx_RefNannyFinishContext()\n  #define __Pyx_INCREF(r) Py_INCREF(r)\n  #define __Pyx_DECREF(r) Py_DECREF(r)\n  #define __Pyx_GOTREF(r)\n  #define __Pyx_GIVEREF(r)\n  #define __Pyx_XINCREF(r) Py_XINCREF(r)\n  #define __Pyx_XDECREF(r) Py_XDECREF(r)\n  #define __Pyx_XGOTREF(r)\n  #define __Pyx_XGIVEREF(r)\n#endif\n#define __Pyx_XDECREF_SET(r, v) do {\\\n        PyObject *tmp = (PyObject *) r;\\\n        r = v; __Pyx_XDECREF(tmp);\\\n    } while (0)\n#define __Pyx_DECREF_SET(r, v) do {\\\n        PyObject *tmp = (PyObject *) r;\\\n        r = v; __Pyx_DECREF(tmp);\\\n    } while (0)\n#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)\n#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)\n\n/* PyObjectGetAttrStr.proto */\n#if CYTHON_USE_TYPE_SLOTS\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);\n#else\n#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)\n#endif\n\n/* GetBuiltinName.proto */\nstatic PyObject *__Pyx_GetBuiltinName(PyObject *name);\n\n/* RaiseArgTupleInvalid.proto */\nstatic void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,\n    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);\n\n/* RaiseDoubleKeywords.proto */\nstatic void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);\n\n/* ParseKeywords.proto */\nstatic int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\\\n    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\\\n    const char* function_name);\n\n/* GetItemInt.proto */\n#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\\\n    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\\\n    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\\\n    (is_list ? (PyErr_SetString(PyExc_IndexError, \"list index out of range\"), (PyObject*)NULL) :\\\n               __Pyx_GetItemInt_Generic(o, to_py_func(i))))\n#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\\\n    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\\\n    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\\\n    (PyErr_SetString(PyExc_IndexError, \"list index out of range\"), (PyObject*)NULL))\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,\n                                                              int wraparound, int boundscheck);\n#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\\\n    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\\\n    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\\\n    (PyErr_SetString(PyExc_IndexError, \"tuple index out of range\"), (PyObject*)NULL))\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,\n                                                              int wraparound, int boundscheck);\nstatic PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,\n                                                     int is_list, int wraparound, int boundscheck);\n\n/* PyDictContains.proto */\nstatic CYTHON_INLINE int __Pyx_PyDict_ContainsTF(PyObject* item, PyObject* dict, int eq) {\n    int result = PyDict_Contains(dict, item);\n    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));\n}\n\n/* DictGetItem.proto */\n#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY\nstatic PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key);\n#define __Pyx_PyObject_Dict_GetItem(obj, name)\\\n    (likely(PyDict_CheckExact(obj)) ?\\\n     __Pyx_PyDict_GetItem(obj, name) : PyObject_GetItem(obj, name))\n#else\n#define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)\n#define __Pyx_PyObject_Dict_GetItem(obj, name)  PyObject_GetItem(obj, name)\n#endif\n\n/* PyCFunctionFastCall.proto */\n#if CYTHON_FAST_PYCCALL\nstatic CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);\n#else\n#define __Pyx_PyCFunction_FastCall(func, args, nargs)  (assert(0), NULL)\n#endif\n\n/* PyFunctionFastCall.proto */\n#if CYTHON_FAST_PYCALL\n#define __Pyx_PyFunction_FastCall(func, args, nargs)\\\n    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)\n#if 1 || PY_VERSION_HEX < 0x030600B1\nstatic PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs);\n#else\n#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)\n#endif\n#endif\n\n/* PyObjectCall.proto */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);\n#else\n#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)\n#endif\n\n/* PyObjectCallMethO.proto */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);\n#endif\n\n/* PyObjectCallOneArg.proto */\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);\n\n/* PyThreadStateGet.proto */\n#if CYTHON_FAST_THREAD_STATE\n#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;\n#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;\n#define __Pyx_PyErr_Occurred()  __pyx_tstate->curexc_type\n#else\n#define __Pyx_PyThreadState_declare\n#define __Pyx_PyThreadState_assign\n#define __Pyx_PyErr_Occurred()  PyErr_Occurred()\n#endif\n\n/* PyErrFetchRestore.proto */\n#if CYTHON_FAST_THREAD_STATE\n#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)\n#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)\n#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)\n#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)\n#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)\nstatic CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);\nstatic CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);\n#if CYTHON_COMPILING_IN_CPYTHON\n#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))\n#else\n#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)\n#endif\n#else\n#define __Pyx_PyErr_Clear() PyErr_Clear()\n#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)\n#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)\n#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)\n#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)\n#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)\n#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)\n#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)\n#endif\n\n/* RaiseException.proto */\nstatic void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);\n\n/* SetItemInt.proto */\n#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\\\n    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\\\n    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\\\n    (is_list ? (PyErr_SetString(PyExc_IndexError, \"list assignment index out of range\"), -1) :\\\n               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))\nstatic int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);\nstatic CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,\n                                               int is_list, int wraparound, int boundscheck);\n\n/* IterFinish.proto */\nstatic CYTHON_INLINE int __Pyx_IterFinish(void);\n\n/* PyObjectCallNoArg.proto */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);\n#else\n#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)\n#endif\n\n/* PyObjectCallMethod0.proto */\nstatic PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);\n\n/* RaiseNeedMoreValuesToUnpack.proto */\nstatic CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);\n\n/* RaiseTooManyValuesToUnpack.proto */\nstatic CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);\n\n/* UnpackItemEndCheck.proto */\nstatic int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);\n\n/* RaiseNoneIterError.proto */\nstatic CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void);\n\n/* UnpackTupleError.proto */\nstatic void __Pyx_UnpackTupleError(PyObject *, Py_ssize_t index);\n\n/* UnpackTuple2.proto */\n#define __Pyx_unpack_tuple2(tuple, value1, value2, is_tuple, has_known_size, decref_tuple)\\\n    (likely(is_tuple || PyTuple_Check(tuple)) ?\\\n        (likely(has_known_size || PyTuple_GET_SIZE(tuple) == 2) ?\\\n            __Pyx_unpack_tuple2_exact(tuple, value1, value2, decref_tuple) :\\\n            (__Pyx_UnpackTupleError(tuple, 2), -1)) :\\\n        __Pyx_unpack_tuple2_generic(tuple, value1, value2, has_known_size, decref_tuple))\nstatic CYTHON_INLINE int __Pyx_unpack_tuple2_exact(\n    PyObject* tuple, PyObject** value1, PyObject** value2, int decref_tuple);\nstatic int __Pyx_unpack_tuple2_generic(\n    PyObject* tuple, PyObject** value1, PyObject** value2, int has_known_size, int decref_tuple);\n\n/* dict_iter.proto */\nstatic CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* dict, int is_dict, PyObject* method_name,\n                                                   Py_ssize_t* p_orig_length, int* p_is_dict);\nstatic CYTHON_INLINE int __Pyx_dict_iter_next(PyObject* dict_or_iter, Py_ssize_t orig_length, Py_ssize_t* ppos,\n                                              PyObject** pkey, PyObject** pvalue, PyObject** pitem, int is_dict);\n\n/* ListAppend.proto */\n#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS\nstatic CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {\n    PyListObject* L = (PyListObject*) list;\n    Py_ssize_t len = Py_SIZE(list);\n    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {\n        Py_INCREF(x);\n        PyList_SET_ITEM(list, len, x);\n        Py_SIZE(list) = len+1;\n        return 0;\n    }\n    return PyList_Append(list, x);\n}\n#else\n#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)\n#endif\n\n/* FetchCommonType.proto */\nstatic PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);\n\n/* CythonFunction.proto */\n#define __Pyx_CyFunction_USED 1\n#define __Pyx_CYFUNCTION_STATICMETHOD  0x01\n#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02\n#define __Pyx_CYFUNCTION_CCLASS        0x04\n#define __Pyx_CyFunction_GetClosure(f)\\\n    (((__pyx_CyFunctionObject *) (f))->func_closure)\n#define __Pyx_CyFunction_GetClassObj(f)\\\n    (((__pyx_CyFunctionObject *) (f))->func_classobj)\n#define __Pyx_CyFunction_Defaults(type, f)\\\n    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))\n#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\\\n    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)\ntypedef struct {\n    PyCFunctionObject func;\n#if PY_VERSION_HEX < 0x030500A0\n    PyObject *func_weakreflist;\n#endif\n    PyObject *func_dict;\n    PyObject *func_name;\n    PyObject *func_qualname;\n    PyObject *func_doc;\n    PyObject *func_globals;\n    PyObject *func_code;\n    PyObject *func_closure;\n    PyObject *func_classobj;\n    void *defaults;\n    int defaults_pyobjects;\n    int flags;\n    PyObject *defaults_tuple;\n    PyObject *defaults_kwdict;\n    PyObject *(*defaults_getter)(PyObject *);\n    PyObject *func_annotations;\n} __pyx_CyFunctionObject;\nstatic PyTypeObject *__pyx_CyFunctionType = 0;\n#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\\\n    __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)\nstatic PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,\n                                      int flags, PyObject* qualname,\n                                      PyObject *self,\n                                      PyObject *module, PyObject *globals,\n                                      PyObject* code);\nstatic CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,\n                                                         size_t size,\n                                                         int pyobjects);\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,\n                                                            PyObject *tuple);\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,\n                                                             PyObject *dict);\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,\n                                                              PyObject *dict);\nstatic int __pyx_CyFunction_init(void);\n\n/* FusedFunction.proto */\ntypedef struct {\n    __pyx_CyFunctionObject func;\n    PyObject *__signatures__;\n    PyObject *type;\n    PyObject *self;\n} __pyx_FusedFunctionObject;\n#define __pyx_FusedFunction_NewEx(ml, flags, qualname, self, module, globals, code)\\\n        __pyx_FusedFunction_New(__pyx_FusedFunctionType, ml, flags, qualname, self, module, globals, code)\nstatic PyObject *__pyx_FusedFunction_New(PyTypeObject *type,\n                                         PyMethodDef *ml, int flags,\n                                         PyObject *qualname, PyObject *self,\n                                         PyObject *module, PyObject *globals,\n                                         PyObject *code);\nstatic int __pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self);\nstatic PyTypeObject *__pyx_FusedFunctionType = NULL;\nstatic int __pyx_FusedFunction_init(void);\n#define __Pyx_FusedFunction_USED\n\n/* CLineInTraceback.proto */\n#ifdef CYTHON_CLINE_IN_TRACEBACK\n#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)\n#else\nstatic int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);\n#endif\n\n/* CodeObjectCache.proto */\ntypedef struct {\n    PyCodeObject* code_object;\n    int code_line;\n} __Pyx_CodeObjectCacheEntry;\nstruct __Pyx_CodeObjectCache {\n    int count;\n    int max_count;\n    __Pyx_CodeObjectCacheEntry* entries;\n};\nstatic struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};\nstatic int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);\nstatic PyCodeObject *__pyx_find_code_object(int code_line);\nstatic void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);\n\n/* AddTraceback.proto */\nstatic void __Pyx_AddTraceback(const char *funcname, int c_line,\n                               int py_line, const char *filename);\n\n/* CIntToPy.proto */\nstatic CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);\n\n/* Import.proto */\nstatic PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);\n\n/* CIntFromPy.proto */\nstatic CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);\n\n/* ImportNumPyArray.proto */\nstatic PyObject *__pyx_numpy_ndarray = NULL;\nstatic PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void);\n\n/* CIntFromPy.proto */\nstatic CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);\n\n/* FastTypeChecks.proto */\n#if CYTHON_COMPILING_IN_CPYTHON\n#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)\nstatic CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);\nstatic CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);\nstatic CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);\n#else\n#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)\n#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)\n#define __Pyx_PyErr_GivenExceptionMatches2(err, type1, type2) (PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2))\n#endif\n#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)\n\n/* CheckBinaryVersion.proto */\nstatic int __Pyx_check_binary_version(void);\n\n/* InitStrings.proto */\nstatic int __Pyx_InitStrings(__Pyx_StringTabEntry *t);\n\n\n/* Module declarations from 'cython' */\n\n/* Module declarations from 'cython_test' */\nstatic PyObject *__pyx_fuse_0__pyx_f_11cython_test_sqrt(float, int __pyx_skip_dispatch); /*proto*/\nstatic PyObject *__pyx_fuse_1__pyx_f_11cython_test_sqrt(double, int __pyx_skip_dispatch); /*proto*/\n#define __Pyx_MODULE_NAME \"cython_test\"\nextern int __pyx_module_is_main_cython_test;\nint __pyx_module_is_main_cython_test = 0;\n\n/* Implementation of 'cython_test' */\nstatic PyObject *__pyx_builtin_TypeError;\nstatic PyObject *__pyx_builtin_range;\nstatic const char __pyx_k_[] = \"\";\nstatic const char __pyx_k__2[] = \"()\";\nstatic const char __pyx_k__4[] = \"|\";\nstatic const char __pyx_k_args[] = \"args\";\nstatic const char __pyx_k_main[] = \"__main__\";\nstatic const char __pyx_k_name[] = \"__name__\";\nstatic const char __pyx_k_sqrt[] = \"sqrt\";\nstatic const char __pyx_k_test[] = \"__test__\";\nstatic const char __pyx_k_float[] = \"float\";\nstatic const char __pyx_k_numpy[] = \"numpy\";\nstatic const char __pyx_k_range[] = \"range\";\nstatic const char __pyx_k_split[] = \"split\";\nstatic const char __pyx_k_strip[] = \"strip\";\nstatic const char __pyx_k_value[] = \"value\";\nstatic const char __pyx_k_double[] = \"double\";\nstatic const char __pyx_k_import[] = \"__import__\";\nstatic const char __pyx_k_kwargs[] = \"kwargs\";\nstatic const char __pyx_k_defaults[] = \"defaults\";\nstatic const char __pyx_k_TypeError[] = \"TypeError\";\nstatic const char __pyx_k_signatures[] = \"signatures\";\nstatic const char __pyx_k_cython_test[] = \"cython_test\";\nstatic const char __pyx_k_pyx_fuse_0sqrt[] = \"__pyx_fuse_0sqrt\";\nstatic const char __pyx_k_pyx_fuse_1sqrt[] = \"__pyx_fuse_1sqrt\";\nstatic const char __pyx_k_cython_test_pyx[] = \"cython_test.pyx\";\nstatic const char __pyx_k_cline_in_traceback[] = \"cline_in_traceback\";\nstatic const char __pyx_k_No_matching_signature_found[] = \"No matching signature found\";\nstatic const char __pyx_k_simple_test_file_for_cython_sou[] = \" simple test file for cython source mapping: defines a function\\nthat uses newtowns method to compute the square root of a number \";\nstatic const char __pyx_k_Expected_at_least_d_argument_s_g[] = \"Expected at least %d argument%s, got %d\";\nstatic const char __pyx_k_Function_call_with_ambiguous_arg[] = \"Function call with ambiguous argument types\";\nstatic PyObject *__pyx_kp_s_;\nstatic PyObject *__pyx_kp_s_Expected_at_least_d_argument_s_g;\nstatic PyObject *__pyx_kp_s_Function_call_with_ambiguous_arg;\nstatic PyObject *__pyx_kp_s_No_matching_signature_found;\nstatic PyObject *__pyx_n_s_TypeError;\nstatic PyObject *__pyx_kp_s__2;\nstatic PyObject *__pyx_kp_s__4;\nstatic PyObject *__pyx_n_s_args;\nstatic PyObject *__pyx_n_s_cline_in_traceback;\nstatic PyObject *__pyx_n_s_cython_test;\nstatic PyObject *__pyx_kp_s_cython_test_pyx;\nstatic PyObject *__pyx_n_s_defaults;\nstatic PyObject *__pyx_n_s_double;\nstatic PyObject *__pyx_n_s_float;\nstatic PyObject *__pyx_n_s_import;\nstatic PyObject *__pyx_n_s_kwargs;\nstatic PyObject *__pyx_n_s_main;\nstatic PyObject *__pyx_n_s_name;\nstatic PyObject *__pyx_n_s_numpy;\nstatic PyObject *__pyx_n_s_pyx_fuse_0sqrt;\nstatic PyObject *__pyx_n_s_pyx_fuse_1sqrt;\nstatic PyObject *__pyx_n_s_range;\nstatic PyObject *__pyx_n_s_signatures;\nstatic PyObject *__pyx_n_s_split;\nstatic PyObject *__pyx_n_s_sqrt;\nstatic PyObject *__pyx_n_s_strip;\nstatic PyObject *__pyx_n_s_test;\nstatic PyObject *__pyx_n_s_value;\nstatic PyObject *__pyx_pf_11cython_test_sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults); /* proto */\nstatic PyObject *__pyx_pf_11cython_test_2__pyx_fuse_0sqrt(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_value); /* proto */\nstatic PyObject *__pyx_pf_11cython_test_4__pyx_fuse_1sqrt(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_value); /* proto */\nstatic PyObject *__pyx_int_1;\nstatic PyObject *__pyx_tuple__3;\nstatic PyObject *__pyx_tuple__5;\nstatic PyObject *__pyx_tuple__6;\nstatic PyObject *__pyx_tuple__7;\nstatic PyObject *__pyx_tuple__8;\nstatic PyObject *__pyx_codeobj__9;\n/* Late includes */\n\n/* \"cython_test.pyx\":6\n * from cython cimport floating\n * \n * cpdef sqrt(floating value):             # <<<<<<<<<<<<<<\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n */\n\n/* Python wrapper */\nstatic PyObject *__pyx_pw_11cython_test_1sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/\nstatic PyMethodDef __pyx_mdef_11cython_test_1sqrt = {\"sqrt\", (PyCFunction)__pyx_pw_11cython_test_1sqrt, METH_VARARGS|METH_KEYWORDS, 0};\nstatic PyObject *__pyx_pw_11cython_test_1sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {\n  PyObject *__pyx_v_signatures = 0;\n  PyObject *__pyx_v_args = 0;\n  PyObject *__pyx_v_kwargs = 0;\n  CYTHON_UNUSED PyObject *__pyx_v_defaults = 0;\n  PyObject *__pyx_r = 0;\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__pyx_fused_cpdef (wrapper)\", 0);\n  {\n    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_signatures,&__pyx_n_s_args,&__pyx_n_s_kwargs,&__pyx_n_s_defaults,0};\n    PyObject* values[4] = {0,0,0,0};\n    if (unlikely(__pyx_kwds)) {\n      Py_ssize_t kw_args;\n      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);\n      switch (pos_args) {\n        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);\n        CYTHON_FALLTHROUGH;\n        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);\n        CYTHON_FALLTHROUGH;\n        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);\n        CYTHON_FALLTHROUGH;\n        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);\n        CYTHON_FALLTHROUGH;\n        case  0: break;\n        default: goto __pyx_L5_argtuple_error;\n      }\n      kw_args = PyDict_Size(__pyx_kwds);\n      switch (pos_args) {\n        case  0:\n        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_signatures)) != 0)) kw_args--;\n        else goto __pyx_L5_argtuple_error;\n        CYTHON_FALLTHROUGH;\n        case  1:\n        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_args)) != 0)) kw_args--;\n        else {\n          __Pyx_RaiseArgtupleInvalid(\"__pyx_fused_cpdef\", 1, 4, 4, 1); __PYX_ERR(0, 6, __pyx_L3_error)\n        }\n        CYTHON_FALLTHROUGH;\n        case  2:\n        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_kwargs)) != 0)) kw_args--;\n        else {\n          __Pyx_RaiseArgtupleInvalid(\"__pyx_fused_cpdef\", 1, 4, 4, 2); __PYX_ERR(0, 6, __pyx_L3_error)\n        }\n        CYTHON_FALLTHROUGH;\n        case  3:\n        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_defaults)) != 0)) kw_args--;\n        else {\n          __Pyx_RaiseArgtupleInvalid(\"__pyx_fused_cpdef\", 1, 4, 4, 3); __PYX_ERR(0, 6, __pyx_L3_error)\n        }\n      }\n      if (unlikely(kw_args > 0)) {\n        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, \"__pyx_fused_cpdef\") < 0)) __PYX_ERR(0, 6, __pyx_L3_error)\n      }\n    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {\n      goto __pyx_L5_argtuple_error;\n    } else {\n      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);\n      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);\n      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);\n      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);\n    }\n    __pyx_v_signatures = values[0];\n    __pyx_v_args = values[1];\n    __pyx_v_kwargs = values[2];\n    __pyx_v_defaults = values[3];\n  }\n  goto __pyx_L4_argument_unpacking_done;\n  __pyx_L5_argtuple_error:;\n  __Pyx_RaiseArgtupleInvalid(\"__pyx_fused_cpdef\", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 6, __pyx_L3_error)\n  __pyx_L3_error:;\n  __Pyx_AddTraceback(\"cython_test.__pyx_fused_cpdef\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __Pyx_RefNannyFinishContext();\n  return NULL;\n  __pyx_L4_argument_unpacking_done:;\n  __pyx_r = __pyx_pf_11cython_test_sqrt(__pyx_self, __pyx_v_signatures, __pyx_v_args, __pyx_v_kwargs, __pyx_v_defaults);\n\n  /* function exit code */\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyObject *__pyx_pf_11cython_test_sqrt(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_signatures, PyObject *__pyx_v_args, PyObject *__pyx_v_kwargs, CYTHON_UNUSED PyObject *__pyx_v_defaults) {\n  PyObject *__pyx_v_dest_sig = NULL;\n  Py_ssize_t __pyx_v_i;\n  CYTHON_UNUSED PyTypeObject *__pyx_v_ndarray = 0;\n  CYTHON_UNUSED Py_ssize_t __pyx_v_itemsize;\n  PyObject *__pyx_v_arg = NULL;\n  PyObject *__pyx_v_candidates = NULL;\n  PyObject *__pyx_v_sig = NULL;\n  int __pyx_v_match_found;\n  PyObject *__pyx_v_src_sig = NULL;\n  PyObject *__pyx_v_dst_type = NULL;\n  PyObject *__pyx_r = NULL;\n  __Pyx_RefNannyDeclarations\n  PyObject *__pyx_t_1 = NULL;\n  int __pyx_t_2;\n  int __pyx_t_3;\n  int __pyx_t_4;\n  Py_ssize_t __pyx_t_5;\n  PyObject *__pyx_t_6 = NULL;\n  Py_ssize_t __pyx_t_7;\n  int __pyx_t_8;\n  int __pyx_t_9;\n  PyObject *__pyx_t_10 = NULL;\n  Py_ssize_t __pyx_t_11;\n  Py_ssize_t __pyx_t_12;\n  Py_ssize_t __pyx_t_13;\n  int __pyx_t_14;\n  __Pyx_RefNannySetupContext(\"sqrt\", 0);\n  __Pyx_INCREF(__pyx_v_kwargs);\n  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __Pyx_INCREF(Py_None);\n  __Pyx_GIVEREF(Py_None);\n  PyList_SET_ITEM(__pyx_t_1, 0, Py_None);\n  __pyx_v_dest_sig = ((PyObject*)__pyx_t_1);\n  __pyx_t_1 = 0;\n  __pyx_t_3 = (__pyx_v_kwargs != Py_None);\n  __pyx_t_4 = (__pyx_t_3 != 0);\n  if (__pyx_t_4) {\n  } else {\n    __pyx_t_2 = __pyx_t_4;\n    goto __pyx_L4_bool_binop_done;\n  }\n  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_kwargs); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __pyx_t_3 = ((!__pyx_t_4) != 0);\n  __pyx_t_2 = __pyx_t_3;\n  __pyx_L4_bool_binop_done:;\n  if (__pyx_t_2) {\n    __Pyx_INCREF(Py_None);\n    __Pyx_DECREF_SET(__pyx_v_kwargs, Py_None);\n  }\n  __pyx_t_1 = ((PyObject *)__Pyx_ImportNumPyArrayTypeIfAvailable()); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __pyx_v_ndarray = ((PyTypeObject*)__pyx_t_1);\n  __pyx_t_1 = 0;\n  __pyx_v_itemsize = -1L;\n  if (unlikely(__pyx_v_args == Py_None)) {\n    PyErr_SetString(PyExc_TypeError, \"object of type 'NoneType' has no len()\");\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6, __pyx_L1_error)\n  __pyx_t_2 = ((0 < __pyx_t_5) != 0);\n  if (__pyx_t_2) {\n    if (unlikely(__pyx_v_args == Py_None)) {\n      PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not subscriptable\");\n      __PYX_ERR(0, 6, __pyx_L1_error)\n    }\n    __pyx_t_1 = __Pyx_GetItemInt_Tuple(((PyObject*)__pyx_v_args), 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __pyx_v_arg = __pyx_t_1;\n    __pyx_t_1 = 0;\n    goto __pyx_L6;\n  }\n  __pyx_t_3 = (__pyx_v_kwargs != Py_None);\n  __pyx_t_4 = (__pyx_t_3 != 0);\n  if (__pyx_t_4) {\n  } else {\n    __pyx_t_2 = __pyx_t_4;\n    goto __pyx_L7_bool_binop_done;\n  }\n  if (unlikely(__pyx_v_kwargs == Py_None)) {\n    PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not iterable\");\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_n_s_value, ((PyObject*)__pyx_v_kwargs), Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __pyx_t_3 = (__pyx_t_4 != 0);\n  __pyx_t_2 = __pyx_t_3;\n  __pyx_L7_bool_binop_done:;\n  if (__pyx_t_2) {\n    if (unlikely(__pyx_v_kwargs == Py_None)) {\n      PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not subscriptable\");\n      __PYX_ERR(0, 6, __pyx_L1_error)\n    }\n    __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_kwargs), __pyx_n_s_value); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __pyx_v_arg = __pyx_t_1;\n    __pyx_t_1 = 0;\n    goto __pyx_L6;\n  }\n  /*else*/ {\n    if (unlikely(__pyx_v_args == Py_None)) {\n      PyErr_SetString(PyExc_TypeError, \"object of type 'NoneType' has no len()\");\n      __PYX_ERR(0, 6, __pyx_L1_error)\n    }\n    __pyx_t_5 = PyTuple_GET_SIZE(((PyObject*)__pyx_v_args)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6, __pyx_L1_error)\n    __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_6);\n    __Pyx_INCREF(__pyx_int_1);\n    __Pyx_GIVEREF(__pyx_int_1);\n    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_int_1);\n    __Pyx_INCREF(__pyx_kp_s_);\n    __Pyx_GIVEREF(__pyx_kp_s_);\n    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_kp_s_);\n    __Pyx_GIVEREF(__pyx_t_1);\n    PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_1);\n    __pyx_t_1 = 0;\n    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n    __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_6);\n    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n    __Pyx_Raise(__pyx_t_6, 0, 0, 0);\n    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  __pyx_L6:;\n  while (1) {\n    __pyx_t_2 = PyFloat_Check(__pyx_v_arg); \n    __pyx_t_3 = (__pyx_t_2 != 0);\n    if (__pyx_t_3) {\n      if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, __pyx_n_s_double, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 6, __pyx_L1_error)\n      goto __pyx_L10_break;\n    }\n    if (unlikely(__Pyx_SetItemInt(__pyx_v_dest_sig, 0, Py_None, long, 1, __Pyx_PyInt_From_long, 1, 0, 1) < 0)) __PYX_ERR(0, 6, __pyx_L1_error)\n    goto __pyx_L10_break;\n  }\n  __pyx_L10_break:;\n  __pyx_t_6 = PyList_New(0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_6);\n  __pyx_v_candidates = ((PyObject*)__pyx_t_6);\n  __pyx_t_6 = 0;\n  __pyx_t_5 = 0;\n  if (unlikely(__pyx_v_signatures == Py_None)) {\n    PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not iterable\");\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  __pyx_t_1 = __Pyx_dict_iterator(((PyObject*)__pyx_v_signatures), 1, ((PyObject *)NULL), (&__pyx_t_7), (&__pyx_t_8)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __Pyx_XDECREF(__pyx_t_6);\n  __pyx_t_6 = __pyx_t_1;\n  __pyx_t_1 = 0;\n  while (1) {\n    __pyx_t_9 = __Pyx_dict_iter_next(__pyx_t_6, __pyx_t_7, &__pyx_t_5, &__pyx_t_1, NULL, NULL, __pyx_t_8);\n    if (unlikely(__pyx_t_9 == 0)) break;\n    if (unlikely(__pyx_t_9 == -1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __Pyx_XDECREF_SET(__pyx_v_sig, __pyx_t_1);\n    __pyx_t_1 = 0;\n    __pyx_v_match_found = 0;\n    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_sig, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_10);\n    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;\n    __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__5, NULL); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_10);\n    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n    __Pyx_XDECREF_SET(__pyx_v_src_sig, __pyx_t_10);\n    __pyx_t_10 = 0;\n    __pyx_t_11 = PyList_GET_SIZE(__pyx_v_dest_sig); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6, __pyx_L1_error)\n    __pyx_t_12 = __pyx_t_11;\n    for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {\n      __pyx_v_i = __pyx_t_13;\n      __pyx_t_10 = __Pyx_GetItemInt_List(__pyx_v_dest_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 1, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6, __pyx_L1_error)\n      __Pyx_GOTREF(__pyx_t_10);\n      __Pyx_XDECREF_SET(__pyx_v_dst_type, __pyx_t_10);\n      __pyx_t_10 = 0;\n      __pyx_t_3 = (__pyx_v_dst_type != Py_None);\n      __pyx_t_2 = (__pyx_t_3 != 0);\n      if (__pyx_t_2) {\n        __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_src_sig, __pyx_v_i, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6, __pyx_L1_error)\n        __Pyx_GOTREF(__pyx_t_10);\n        __pyx_t_1 = PyObject_RichCompare(__pyx_t_10, __pyx_v_dst_type, Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;\n        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 6, __pyx_L1_error)\n        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;\n        if (__pyx_t_2) {\n          __pyx_v_match_found = 1;\n          goto __pyx_L17;\n        }\n        /*else*/ {\n          __pyx_v_match_found = 0;\n          goto __pyx_L15_break;\n        }\n        __pyx_L17:;\n      }\n    }\n    __pyx_L15_break:;\n    __pyx_t_2 = (__pyx_v_match_found != 0);\n    if (__pyx_t_2) {\n      __pyx_t_14 = __Pyx_PyList_Append(__pyx_v_candidates, __pyx_v_sig); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 6, __pyx_L1_error)\n    }\n  }\n  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n  __pyx_t_2 = (PyList_GET_SIZE(__pyx_v_candidates) != 0);\n  __pyx_t_3 = ((!__pyx_t_2) != 0);\n  if (__pyx_t_3) {\n    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_6);\n    __Pyx_Raise(__pyx_t_6, 0, 0, 0);\n    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  __pyx_t_7 = PyList_GET_SIZE(__pyx_v_candidates); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6, __pyx_L1_error)\n  __pyx_t_3 = ((__pyx_t_7 > 1) != 0);\n  if (__pyx_t_3) {\n    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_6);\n    __Pyx_Raise(__pyx_t_6, 0, 0, 0);\n    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n    __PYX_ERR(0, 6, __pyx_L1_error)\n  }\n  /*else*/ {\n    __Pyx_XDECREF(__pyx_r);\n    if (unlikely(__pyx_v_signatures == Py_None)) {\n      PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not subscriptable\");\n      __PYX_ERR(0, 6, __pyx_L1_error)\n    }\n    __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_candidates, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_6);\n    __pyx_t_1 = __Pyx_PyDict_GetItem(((PyObject*)__pyx_v_signatures), __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n    __Pyx_GOTREF(__pyx_t_1);\n    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;\n    __pyx_r = __pyx_t_1;\n    __pyx_t_1 = 0;\n    goto __pyx_L0;\n  }\n\n  /* function exit code */\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_1);\n  __Pyx_XDECREF(__pyx_t_6);\n  __Pyx_XDECREF(__pyx_t_10);\n  __Pyx_AddTraceback(\"cython_test.__pyx_fused_cpdef\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __pyx_r = NULL;\n  __pyx_L0:;\n  __Pyx_XDECREF(__pyx_v_dest_sig);\n  __Pyx_XDECREF(__pyx_v_ndarray);\n  __Pyx_XDECREF(__pyx_v_arg);\n  __Pyx_XDECREF(__pyx_v_candidates);\n  __Pyx_XDECREF(__pyx_v_sig);\n  __Pyx_XDECREF(__pyx_v_src_sig);\n  __Pyx_XDECREF(__pyx_v_dst_type);\n  __Pyx_XDECREF(__pyx_v_kwargs);\n  __Pyx_XGIVEREF(__pyx_r);\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyObject *__pyx_pw_11cython_test_3__pyx_fuse_0sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value); /*proto*/\nstatic PyObject *__pyx_pw_11cython_test_1sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/\nstatic PyObject *__pyx_fuse_0__pyx_f_11cython_test_sqrt(float __pyx_v_value, CYTHON_UNUSED int __pyx_skip_dispatch) {\n  double __pyx_v_x;\n  CYTHON_UNUSED long __pyx_v__;\n  PyObject *__pyx_r = NULL;\n  __Pyx_RefNannyDeclarations\n  long __pyx_t_1;\n  double __pyx_t_2;\n  double __pyx_t_3;\n  PyObject *__pyx_t_4 = NULL;\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_0sqrt\", 0);\n\n  /* \"cython_test.pyx\":9\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n *     cdef double x = value / 2             # <<<<<<<<<<<<<<\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)\n */\n  __pyx_v_x = (__pyx_v_value / 2.0);\n\n  /* \"cython_test.pyx\":10\n *     #   'x * x - value = 0' using newtons meethod\n *     cdef double x = value / 2\n *     for _ in range(8):             # <<<<<<<<<<<<<<\n *         x -= (x * x - value) / (2 * x)\n *     return x\n */\n  for (__pyx_t_1 = 0; __pyx_t_1 < 8; __pyx_t_1+=1) {\n    __pyx_v__ = __pyx_t_1;\n\n    /* \"cython_test.pyx\":11\n *     cdef double x = value / 2\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)             # <<<<<<<<<<<<<<\n *     return x\n */\n    __pyx_t_2 = ((__pyx_v_x * __pyx_v_x) - __pyx_v_value);\n    __pyx_t_3 = (2.0 * __pyx_v_x);\n    if (unlikely(__pyx_t_3 == 0)) {\n      PyErr_SetString(PyExc_ZeroDivisionError, \"float division\");\n      __PYX_ERR(0, 11, __pyx_L1_error)\n    }\n    __pyx_v_x = (__pyx_v_x - (__pyx_t_2 / __pyx_t_3));\n  }\n\n  /* \"cython_test.pyx\":12\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)\n *     return x             # <<<<<<<<<<<<<<\n */\n  __Pyx_XDECREF(__pyx_r);\n  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_4);\n  __pyx_r = __pyx_t_4;\n  __pyx_t_4 = 0;\n  goto __pyx_L0;\n\n  /* \"cython_test.pyx\":6\n * from cython cimport floating\n * \n * cpdef sqrt(floating value):             # <<<<<<<<<<<<<<\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n */\n\n  /* function exit code */\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_4);\n  __Pyx_AddTraceback(\"cython_test.sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __pyx_r = 0;\n  __pyx_L0:;\n  __Pyx_XGIVEREF(__pyx_r);\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\n/* Python wrapper */\nstatic PyObject *__pyx_pw_11cython_test_3__pyx_fuse_0sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value); /*proto*/\nstatic PyMethodDef __pyx_fuse_0__pyx_mdef_11cython_test_3__pyx_fuse_0sqrt = {\"__pyx_fuse_0sqrt\", (PyCFunction)__pyx_pw_11cython_test_3__pyx_fuse_0sqrt, METH_O, 0};\nstatic PyObject *__pyx_pw_11cython_test_3__pyx_fuse_0sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value) {\n  float __pyx_v_value;\n  PyObject *__pyx_r = 0;\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_0sqrt (wrapper)\", 0);\n  assert(__pyx_arg_value); {\n    __pyx_v_value = __pyx_PyFloat_AsFloat(__pyx_arg_value); if (unlikely((__pyx_v_value == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 6, __pyx_L3_error)\n  }\n  goto __pyx_L4_argument_unpacking_done;\n  __pyx_L3_error:;\n  __Pyx_AddTraceback(\"cython_test.__pyx_fuse_0sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __Pyx_RefNannyFinishContext();\n  return NULL;\n  __pyx_L4_argument_unpacking_done:;\n  __pyx_r = __pyx_pf_11cython_test_2__pyx_fuse_0sqrt(__pyx_self, ((float)__pyx_v_value));\n\n  /* function exit code */\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyObject *__pyx_pf_11cython_test_2__pyx_fuse_0sqrt(CYTHON_UNUSED PyObject *__pyx_self, float __pyx_v_value) {\n  PyObject *__pyx_r = NULL;\n  __Pyx_RefNannyDeclarations\n  PyObject *__pyx_t_1 = NULL;\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_0sqrt\", 0);\n  __Pyx_XDECREF(__pyx_r);\n  __pyx_t_1 = __pyx_fuse_0__pyx_f_11cython_test_sqrt(__pyx_v_value, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __pyx_r = __pyx_t_1;\n  __pyx_t_1 = 0;\n  goto __pyx_L0;\n\n  /* function exit code */\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_1);\n  __Pyx_AddTraceback(\"cython_test.__pyx_fuse_0sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __pyx_r = NULL;\n  __pyx_L0:;\n  __Pyx_XGIVEREF(__pyx_r);\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyObject *__pyx_pw_11cython_test_5__pyx_fuse_1sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value); /*proto*/\nstatic PyObject *__pyx_pw_11cython_test_1sqrt(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/\nstatic PyObject *__pyx_fuse_1__pyx_f_11cython_test_sqrt(double __pyx_v_value, CYTHON_UNUSED int __pyx_skip_dispatch) {\n  double __pyx_v_x;\n  CYTHON_UNUSED long __pyx_v__;\n  PyObject *__pyx_r = NULL;\n  __Pyx_RefNannyDeclarations\n  long __pyx_t_1;\n  double __pyx_t_2;\n  double __pyx_t_3;\n  PyObject *__pyx_t_4 = NULL;\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_1sqrt\", 0);\n\n  /* \"cython_test.pyx\":9\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n *     cdef double x = value / 2             # <<<<<<<<<<<<<<\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)\n */\n  __pyx_v_x = (__pyx_v_value / 2.0);\n\n  /* \"cython_test.pyx\":10\n *     #   'x * x - value = 0' using newtons meethod\n *     cdef double x = value / 2\n *     for _ in range(8):             # <<<<<<<<<<<<<<\n *         x -= (x * x - value) / (2 * x)\n *     return x\n */\n  for (__pyx_t_1 = 0; __pyx_t_1 < 8; __pyx_t_1+=1) {\n    __pyx_v__ = __pyx_t_1;\n\n    /* \"cython_test.pyx\":11\n *     cdef double x = value / 2\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)             # <<<<<<<<<<<<<<\n *     return x\n */\n    __pyx_t_2 = ((__pyx_v_x * __pyx_v_x) - __pyx_v_value);\n    __pyx_t_3 = (2.0 * __pyx_v_x);\n    if (unlikely(__pyx_t_3 == 0)) {\n      PyErr_SetString(PyExc_ZeroDivisionError, \"float division\");\n      __PYX_ERR(0, 11, __pyx_L1_error)\n    }\n    __pyx_v_x = (__pyx_v_x - (__pyx_t_2 / __pyx_t_3));\n  }\n\n  /* \"cython_test.pyx\":12\n *     for _ in range(8):\n *         x -= (x * x - value) / (2 * x)\n *     return x             # <<<<<<<<<<<<<<\n */\n  __Pyx_XDECREF(__pyx_r);\n  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_x); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 12, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_4);\n  __pyx_r = __pyx_t_4;\n  __pyx_t_4 = 0;\n  goto __pyx_L0;\n\n  /* \"cython_test.pyx\":6\n * from cython cimport floating\n * \n * cpdef sqrt(floating value):             # <<<<<<<<<<<<<<\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n */\n\n  /* function exit code */\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_4);\n  __Pyx_AddTraceback(\"cython_test.sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __pyx_r = 0;\n  __pyx_L0:;\n  __Pyx_XGIVEREF(__pyx_r);\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\n/* Python wrapper */\nstatic PyObject *__pyx_pw_11cython_test_5__pyx_fuse_1sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value); /*proto*/\nstatic PyMethodDef __pyx_fuse_1__pyx_mdef_11cython_test_5__pyx_fuse_1sqrt = {\"__pyx_fuse_1sqrt\", (PyCFunction)__pyx_pw_11cython_test_5__pyx_fuse_1sqrt, METH_O, 0};\nstatic PyObject *__pyx_pw_11cython_test_5__pyx_fuse_1sqrt(PyObject *__pyx_self, PyObject *__pyx_arg_value) {\n  double __pyx_v_value;\n  PyObject *__pyx_r = 0;\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_1sqrt (wrapper)\", 0);\n  assert(__pyx_arg_value); {\n    __pyx_v_value = __pyx_PyFloat_AsDouble(__pyx_arg_value); if (unlikely((__pyx_v_value == (double)-1) && PyErr_Occurred())) __PYX_ERR(0, 6, __pyx_L3_error)\n  }\n  goto __pyx_L4_argument_unpacking_done;\n  __pyx_L3_error:;\n  __Pyx_AddTraceback(\"cython_test.__pyx_fuse_1sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __Pyx_RefNannyFinishContext();\n  return NULL;\n  __pyx_L4_argument_unpacking_done:;\n  __pyx_r = __pyx_pf_11cython_test_4__pyx_fuse_1sqrt(__pyx_self, ((double)__pyx_v_value));\n\n  /* function exit code */\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyObject *__pyx_pf_11cython_test_4__pyx_fuse_1sqrt(CYTHON_UNUSED PyObject *__pyx_self, double __pyx_v_value) {\n  PyObject *__pyx_r = NULL;\n  __Pyx_RefNannyDeclarations\n  PyObject *__pyx_t_1 = NULL;\n  __Pyx_RefNannySetupContext(\"__pyx_fuse_1sqrt\", 0);\n  __Pyx_XDECREF(__pyx_r);\n  __pyx_t_1 = __pyx_fuse_1__pyx_f_11cython_test_sqrt(__pyx_v_value, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __pyx_r = __pyx_t_1;\n  __pyx_t_1 = 0;\n  goto __pyx_L0;\n\n  /* function exit code */\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_1);\n  __Pyx_AddTraceback(\"cython_test.__pyx_fuse_1sqrt\", __pyx_clineno, __pyx_lineno, __pyx_filename);\n  __pyx_r = NULL;\n  __pyx_L0:;\n  __Pyx_XGIVEREF(__pyx_r);\n  __Pyx_RefNannyFinishContext();\n  return __pyx_r;\n}\n\nstatic PyMethodDef __pyx_methods[] = {\n  {0, 0, 0, 0}\n};\n\n#if PY_MAJOR_VERSION >= 3\n#if CYTHON_PEP489_MULTI_PHASE_INIT\nstatic PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/\nstatic int __pyx_pymod_exec_cython_test(PyObject* module); /*proto*/\nstatic PyModuleDef_Slot __pyx_moduledef_slots[] = {\n  {Py_mod_create, (void*)__pyx_pymod_create},\n  {Py_mod_exec, (void*)__pyx_pymod_exec_cython_test},\n  {0, NULL}\n};\n#endif\n\nstatic struct PyModuleDef __pyx_moduledef = {\n    PyModuleDef_HEAD_INIT,\n    \"cython_test\",\n    __pyx_k_simple_test_file_for_cython_sou, /* m_doc */\n  #if CYTHON_PEP489_MULTI_PHASE_INIT\n    0, /* m_size */\n  #else\n    -1, /* m_size */\n  #endif\n    __pyx_methods /* m_methods */,\n  #if CYTHON_PEP489_MULTI_PHASE_INIT\n    __pyx_moduledef_slots, /* m_slots */\n  #else\n    NULL, /* m_reload */\n  #endif\n    NULL, /* m_traverse */\n    NULL, /* m_clear */\n    NULL /* m_free */\n};\n#endif\n\nstatic __Pyx_StringTabEntry __pyx_string_tab[] = {\n  {&__pyx_kp_s_, __pyx_k_, sizeof(__pyx_k_), 0, 0, 1, 0},\n  {&__pyx_kp_s_Expected_at_least_d_argument_s_g, __pyx_k_Expected_at_least_d_argument_s_g, sizeof(__pyx_k_Expected_at_least_d_argument_s_g), 0, 0, 1, 0},\n  {&__pyx_kp_s_Function_call_with_ambiguous_arg, __pyx_k_Function_call_with_ambiguous_arg, sizeof(__pyx_k_Function_call_with_ambiguous_arg), 0, 0, 1, 0},\n  {&__pyx_kp_s_No_matching_signature_found, __pyx_k_No_matching_signature_found, sizeof(__pyx_k_No_matching_signature_found), 0, 0, 1, 0},\n  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},\n  {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},\n  {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},\n  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},\n  {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},\n  {&__pyx_n_s_cython_test, __pyx_k_cython_test, sizeof(__pyx_k_cython_test), 0, 0, 1, 1},\n  {&__pyx_kp_s_cython_test_pyx, __pyx_k_cython_test_pyx, sizeof(__pyx_k_cython_test_pyx), 0, 0, 1, 0},\n  {&__pyx_n_s_defaults, __pyx_k_defaults, sizeof(__pyx_k_defaults), 0, 0, 1, 1},\n  {&__pyx_n_s_double, __pyx_k_double, sizeof(__pyx_k_double), 0, 0, 1, 1},\n  {&__pyx_n_s_float, __pyx_k_float, sizeof(__pyx_k_float), 0, 0, 1, 1},\n  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},\n  {&__pyx_n_s_kwargs, __pyx_k_kwargs, sizeof(__pyx_k_kwargs), 0, 0, 1, 1},\n  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},\n  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},\n  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},\n  {&__pyx_n_s_pyx_fuse_0sqrt, __pyx_k_pyx_fuse_0sqrt, sizeof(__pyx_k_pyx_fuse_0sqrt), 0, 0, 1, 1},\n  {&__pyx_n_s_pyx_fuse_1sqrt, __pyx_k_pyx_fuse_1sqrt, sizeof(__pyx_k_pyx_fuse_1sqrt), 0, 0, 1, 1},\n  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},\n  {&__pyx_n_s_signatures, __pyx_k_signatures, sizeof(__pyx_k_signatures), 0, 0, 1, 1},\n  {&__pyx_n_s_split, __pyx_k_split, sizeof(__pyx_k_split), 0, 0, 1, 1},\n  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},\n  {&__pyx_n_s_strip, __pyx_k_strip, sizeof(__pyx_k_strip), 0, 0, 1, 1},\n  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},\n  {&__pyx_n_s_value, __pyx_k_value, sizeof(__pyx_k_value), 0, 0, 1, 1},\n  {0, 0, 0, 0, 0, 0, 0}\n};\nstatic int __Pyx_InitCachedBuiltins(void) {\n  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(0, 6, __pyx_L1_error)\n  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) __PYX_ERR(0, 6, __pyx_L1_error)\n  return 0;\n  __pyx_L1_error:;\n  return -1;\n}\n\nstatic int __Pyx_InitCachedConstants(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_InitCachedConstants\", 0);\n\n  /* \"cython_test.pyx\":6\n * from cython cimport floating\n * \n * cpdef sqrt(floating value):             # <<<<<<<<<<<<<<\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n */\n  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s__2); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_tuple__3);\n  __Pyx_GIVEREF(__pyx_tuple__3);\n  __pyx_tuple__5 = PyTuple_Pack(1, __pyx_kp_s__4); if (unlikely(!__pyx_tuple__5)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_tuple__5);\n  __Pyx_GIVEREF(__pyx_tuple__5);\n  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_No_matching_signature_found); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_tuple__6);\n  __Pyx_GIVEREF(__pyx_tuple__6);\n  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_s_Function_call_with_ambiguous_arg); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_tuple__7);\n  __Pyx_GIVEREF(__pyx_tuple__7);\n  __pyx_tuple__8 = PyTuple_Pack(2, __pyx_n_s_value, __pyx_n_s_value); if (unlikely(!__pyx_tuple__8)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_tuple__8);\n  __Pyx_GIVEREF(__pyx_tuple__8);\n  __pyx_codeobj__9 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__8, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_cython_test_pyx, __pyx_n_s_pyx_fuse_0sqrt, 6, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__9)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_RefNannyFinishContext();\n  return 0;\n  __pyx_L1_error:;\n  __Pyx_RefNannyFinishContext();\n  return -1;\n}\n\nstatic int __Pyx_InitGlobals(void) {\n  if (__Pyx_InitStrings(__pyx_string_tab) < 0) __PYX_ERR(0, 1, __pyx_L1_error);\n  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)\n  return 0;\n  __pyx_L1_error:;\n  return -1;\n}\n\nstatic int __Pyx_modinit_global_init_code(void); /*proto*/\nstatic int __Pyx_modinit_variable_export_code(void); /*proto*/\nstatic int __Pyx_modinit_function_export_code(void); /*proto*/\nstatic int __Pyx_modinit_type_init_code(void); /*proto*/\nstatic int __Pyx_modinit_type_import_code(void); /*proto*/\nstatic int __Pyx_modinit_variable_import_code(void); /*proto*/\nstatic int __Pyx_modinit_function_import_code(void); /*proto*/\n\nstatic int __Pyx_modinit_global_init_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_global_init_code\", 0);\n  /*--- Global init code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_variable_export_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_variable_export_code\", 0);\n  /*--- Variable export code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_function_export_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_function_export_code\", 0);\n  /*--- Function export code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_type_init_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_type_init_code\", 0);\n  /*--- Type init code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_type_import_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_type_import_code\", 0);\n  /*--- Type import code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_variable_import_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_variable_import_code\", 0);\n  /*--- Variable import code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\nstatic int __Pyx_modinit_function_import_code(void) {\n  __Pyx_RefNannyDeclarations\n  __Pyx_RefNannySetupContext(\"__Pyx_modinit_function_import_code\", 0);\n  /*--- Function import code ---*/\n  __Pyx_RefNannyFinishContext();\n  return 0;\n}\n\n\n#if PY_MAJOR_VERSION < 3\n#ifdef CYTHON_NO_PYINIT_EXPORT\n#define __Pyx_PyMODINIT_FUNC void\n#else\n#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC\n#endif\n#else\n#ifdef CYTHON_NO_PYINIT_EXPORT\n#define __Pyx_PyMODINIT_FUNC PyObject *\n#else\n#define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC\n#endif\n#endif\n#ifndef CYTHON_SMALL_CODE\n#if defined(__clang__)\n    #define CYTHON_SMALL_CODE\n#elif defined(__GNUC__) && (!(defined(__cplusplus)) || (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 4)))\n    #define CYTHON_SMALL_CODE __attribute__((cold))\n#else\n    #define CYTHON_SMALL_CODE\n#endif\n#endif\n\n\n#if PY_MAJOR_VERSION < 3\n__Pyx_PyMODINIT_FUNC initcython_test(void) CYTHON_SMALL_CODE; /*proto*/\n__Pyx_PyMODINIT_FUNC initcython_test(void)\n#else\n__Pyx_PyMODINIT_FUNC PyInit_cython_test(void) CYTHON_SMALL_CODE; /*proto*/\n__Pyx_PyMODINIT_FUNC PyInit_cython_test(void)\n#if CYTHON_PEP489_MULTI_PHASE_INIT\n{\n  return PyModuleDef_Init(&__pyx_moduledef);\n}\nstatic int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name) {\n    PyObject *value = PyObject_GetAttrString(spec, from_name);\n    int result = 0;\n    if (likely(value)) {\n        result = PyDict_SetItemString(moddict, to_name, value);\n        Py_DECREF(value);\n    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {\n        PyErr_Clear();\n    } else {\n        result = -1;\n    }\n    return result;\n}\nstatic PyObject* __pyx_pymod_create(PyObject *spec, CYTHON_UNUSED PyModuleDef *def) {\n    PyObject *module = NULL, *moddict, *modname;\n    if (__pyx_m)\n        return __Pyx_NewRef(__pyx_m);\n    modname = PyObject_GetAttrString(spec, \"name\");\n    if (unlikely(!modname)) goto bad;\n    module = PyModule_NewObject(modname);\n    Py_DECREF(modname);\n    if (unlikely(!module)) goto bad;\n    moddict = PyModule_GetDict(module);\n    if (unlikely(!moddict)) goto bad;\n    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, \"loader\", \"__loader__\") < 0)) goto bad;\n    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, \"origin\", \"__file__\") < 0)) goto bad;\n    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, \"parent\", \"__package__\") < 0)) goto bad;\n    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, \"submodule_search_locations\", \"__path__\") < 0)) goto bad;\n    return module;\nbad:\n    Py_XDECREF(module);\n    return NULL;\n}\n\n\nstatic int __pyx_pymod_exec_cython_test(PyObject *__pyx_pyinit_module)\n#endif\n#endif\n{\n  PyObject *__pyx_t_1 = NULL;\n  PyObject *__pyx_t_2 = NULL;\n  PyObject *__pyx_t_3 = NULL;\n  __Pyx_RefNannyDeclarations\n  #if CYTHON_PEP489_MULTI_PHASE_INIT\n  if (__pyx_m && __pyx_m == __pyx_pyinit_module) return 0;\n  #elif PY_MAJOR_VERSION >= 3\n  if (__pyx_m) return __Pyx_NewRef(__pyx_m);\n  #endif\n  #if CYTHON_REFNANNY\n__Pyx_RefNanny = __Pyx_RefNannyImportAPI(\"refnanny\");\nif (!__Pyx_RefNanny) {\n  PyErr_Clear();\n  __Pyx_RefNanny = __Pyx_RefNannyImportAPI(\"Cython.Runtime.refnanny\");\n  if (!__Pyx_RefNanny)\n      Py_FatalError(\"failed to import 'refnanny' module\");\n}\n#endif\n  __Pyx_RefNannySetupContext(\"__Pyx_PyMODINIT_FUNC PyInit_cython_test(void)\", 0);\n  if (__Pyx_check_binary_version() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)\n  __pyx_empty_bytes = PyBytes_FromStringAndSize(\"\", 0); if (unlikely(!__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)\n  __pyx_empty_unicode = PyUnicode_FromStringAndSize(\"\", 0); if (unlikely(!__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)\n  #ifdef __Pyx_CyFunction_USED\n  if (__pyx_CyFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  #ifdef __Pyx_FusedFunction_USED\n  if (__pyx_FusedFunction_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  #ifdef __Pyx_Coroutine_USED\n  if (__pyx_Coroutine_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  #ifdef __Pyx_Generator_USED\n  if (__pyx_Generator_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  #ifdef __Pyx_AsyncGen_USED\n  if (__pyx_AsyncGen_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  #ifdef __Pyx_StopAsyncIteration_USED\n  if (__pyx_StopAsyncIteration_init() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  /*--- Library function declarations ---*/\n  /*--- Threads initialization code ---*/\n  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS\n  #ifdef WITH_THREAD /* Python build with threading support? */\n  PyEval_InitThreads();\n  #endif\n  #endif\n  /*--- Module creation code ---*/\n  #if CYTHON_PEP489_MULTI_PHASE_INIT\n  __pyx_m = __pyx_pyinit_module;\n  Py_INCREF(__pyx_m);\n  #else\n  #if PY_MAJOR_VERSION < 3\n  __pyx_m = Py_InitModule4(\"cython_test\", __pyx_methods, __pyx_k_simple_test_file_for_cython_sou, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);\n  #else\n  __pyx_m = PyModule_Create(&__pyx_moduledef);\n  #endif\n  if (unlikely(!__pyx_m)) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)\n  Py_INCREF(__pyx_d);\n  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)\n  __pyx_cython_runtime = PyImport_AddModule((char *) \"cython_runtime\"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)\n  #if CYTHON_COMPILING_IN_PYPY\n  Py_INCREF(__pyx_b);\n  #endif\n  if (PyObject_SetAttrString(__pyx_m, \"__builtins__\", __pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error);\n  /*--- Initialize various global constants etc. ---*/\n  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)\n  if (__Pyx_init_sys_getdefaultencoding_params() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n  if (__pyx_module_is_main_cython_test) {\n    if (PyObject_SetAttrString(__pyx_m, \"__name__\", __pyx_n_s_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  }\n  #if PY_MAJOR_VERSION >= 3\n  {\n    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)\n    if (!PyDict_GetItemString(modules, \"cython_test\")) {\n      if (unlikely(PyDict_SetItemString(modules, \"cython_test\", __pyx_m) < 0)) __PYX_ERR(0, 1, __pyx_L1_error)\n    }\n  }\n  #endif\n  /*--- Builtin init code ---*/\n  if (__Pyx_InitCachedBuiltins() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  /*--- Constants init code ---*/\n  if (__Pyx_InitCachedConstants() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  /*--- Global type/function init code ---*/\n  (void)__Pyx_modinit_global_init_code();\n  (void)__Pyx_modinit_variable_export_code();\n  (void)__Pyx_modinit_function_export_code();\n  (void)__Pyx_modinit_type_init_code();\n  (void)__Pyx_modinit_type_import_code();\n  (void)__Pyx_modinit_variable_import_code();\n  (void)__Pyx_modinit_function_import_code();\n  /*--- Execution code ---*/\n  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)\n  if (__Pyx_patch_abc() < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  #endif\n\n  /* \"cython_test.pyx\":6\n * from cython cimport floating\n * \n * cpdef sqrt(floating value):             # <<<<<<<<<<<<<<\n *     # solve for the square root of value by finding the zeros of\n *     #   'x * x - value = 0' using newtons meethod\n */\n  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_1);\n  __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_0__pyx_mdef_11cython_test_3__pyx_fuse_0sqrt, 0, __pyx_n_s_pyx_fuse_0sqrt, NULL, __pyx_n_s_cython_test, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_2);\n  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);\n  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_float, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n  __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_fuse_1__pyx_mdef_11cython_test_5__pyx_fuse_1sqrt, 0, __pyx_n_s_pyx_fuse_1sqrt, NULL, __pyx_n_s_cython_test, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_2);\n  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);\n  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_double, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n  __pyx_t_2 = __pyx_FusedFunction_NewEx(&__pyx_mdef_11cython_test_1sqrt, 0, __pyx_n_s_sqrt, NULL, __pyx_n_s_cython_test, __pyx_d, ((PyObject *)__pyx_codeobj__9)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_2);\n  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_empty_tuple);\n  ((__pyx_FusedFunctionObject *) __pyx_t_2)->__signatures__ = __pyx_t_1;\n  __Pyx_GIVEREF(__pyx_t_1);\n  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sqrt, __pyx_t_2) < 0) __PYX_ERR(0, 6, __pyx_L1_error)\n  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;\n\n  /* \"cython_test.pyx\":1\n * \"\"\" simple test file for cython source mapping: defines a function             # <<<<<<<<<<<<<<\n * that uses newtowns method to compute the square root of a number \"\"\"\n * \n */\n  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)\n  __Pyx_GOTREF(__pyx_t_3);\n  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)\n  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;\n\n  /*--- Wrapped vars code ---*/\n\n  goto __pyx_L0;\n  __pyx_L1_error:;\n  __Pyx_XDECREF(__pyx_t_1);\n  __Pyx_XDECREF(__pyx_t_2);\n  __Pyx_XDECREF(__pyx_t_3);\n  if (__pyx_m) {\n    if (__pyx_d) {\n      __Pyx_AddTraceback(\"init cython_test\", 0, __pyx_lineno, __pyx_filename);\n    }\n    Py_DECREF(__pyx_m); __pyx_m = 0;\n  } else if (!PyErr_Occurred()) {\n    PyErr_SetString(PyExc_ImportError, \"init cython_test\");\n  }\n  __pyx_L0:;\n  __Pyx_RefNannyFinishContext();\n  #if CYTHON_PEP489_MULTI_PHASE_INIT\n  return (__pyx_m != NULL) ? 0 : -1;\n  #elif PY_MAJOR_VERSION >= 3\n  return __pyx_m;\n  #else\n  return;\n  #endif\n}\n\n/* --- Runtime support code --- */\n/* Refnanny */\n#if CYTHON_REFNANNY\nstatic __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {\n    PyObject *m = NULL, *p = NULL;\n    void *r = NULL;\n    m = PyImport_ImportModule((char *)modname);\n    if (!m) goto end;\n    p = PyObject_GetAttrString(m, (char *)\"RefNannyAPI\");\n    if (!p) goto end;\n    r = PyLong_AsVoidPtr(p);\nend:\n    Py_XDECREF(p);\n    Py_XDECREF(m);\n    return (__Pyx_RefNannyAPIStruct *)r;\n}\n#endif\n\n/* PyObjectGetAttrStr */\n#if CYTHON_USE_TYPE_SLOTS\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {\n    PyTypeObject* tp = Py_TYPE(obj);\n    if (likely(tp->tp_getattro))\n        return tp->tp_getattro(obj, attr_name);\n#if PY_MAJOR_VERSION < 3\n    if (likely(tp->tp_getattr))\n        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));\n#endif\n    return PyObject_GetAttr(obj, attr_name);\n}\n#endif\n\n/* GetBuiltinName */\nstatic PyObject *__Pyx_GetBuiltinName(PyObject *name) {\n    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);\n    if (unlikely(!result)) {\n        PyErr_Format(PyExc_NameError,\n#if PY_MAJOR_VERSION >= 3\n            \"name '%U' is not defined\", name);\n#else\n            \"name '%.200s' is not defined\", PyString_AS_STRING(name));\n#endif\n    }\n    return result;\n}\n\n/* RaiseArgTupleInvalid */\nstatic void __Pyx_RaiseArgtupleInvalid(\n    const char* func_name,\n    int exact,\n    Py_ssize_t num_min,\n    Py_ssize_t num_max,\n    Py_ssize_t num_found)\n{\n    Py_ssize_t num_expected;\n    const char *more_or_less;\n    if (num_found < num_min) {\n        num_expected = num_min;\n        more_or_less = \"at least\";\n    } else {\n        num_expected = num_max;\n        more_or_less = \"at most\";\n    }\n    if (exact) {\n        more_or_less = \"exactly\";\n    }\n    PyErr_Format(PyExc_TypeError,\n                 \"%.200s() takes %.8s %\" CYTHON_FORMAT_SSIZE_T \"d positional argument%.1s (%\" CYTHON_FORMAT_SSIZE_T \"d given)\",\n                 func_name, more_or_less, num_expected,\n                 (num_expected == 1) ? \"\" : \"s\", num_found);\n}\n\n/* RaiseDoubleKeywords */\nstatic void __Pyx_RaiseDoubleKeywordsError(\n    const char* func_name,\n    PyObject* kw_name)\n{\n    PyErr_Format(PyExc_TypeError,\n        #if PY_MAJOR_VERSION >= 3\n        \"%s() got multiple values for keyword argument '%U'\", func_name, kw_name);\n        #else\n        \"%s() got multiple values for keyword argument '%s'\", func_name,\n        PyString_AsString(kw_name));\n        #endif\n}\n\n/* ParseKeywords */\nstatic int __Pyx_ParseOptionalKeywords(\n    PyObject *kwds,\n    PyObject **argnames[],\n    PyObject *kwds2,\n    PyObject *values[],\n    Py_ssize_t num_pos_args,\n    const char* function_name)\n{\n    PyObject *key = 0, *value = 0;\n    Py_ssize_t pos = 0;\n    PyObject*** name;\n    PyObject*** first_kw_arg = argnames + num_pos_args;\n    while (PyDict_Next(kwds, &pos, &key, &value)) {\n        name = first_kw_arg;\n        while (*name && (**name != key)) name++;\n        if (*name) {\n            values[name-argnames] = value;\n            continue;\n        }\n        name = first_kw_arg;\n        #if PY_MAJOR_VERSION < 3\n        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {\n            while (*name) {\n                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))\n                        && _PyString_Eq(**name, key)) {\n                    values[name-argnames] = value;\n                    break;\n                }\n                name++;\n            }\n            if (*name) continue;\n            else {\n                PyObject*** argname = argnames;\n                while (argname != first_kw_arg) {\n                    if ((**argname == key) || (\n                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))\n                             && _PyString_Eq(**argname, key))) {\n                        goto arg_passed_twice;\n                    }\n                    argname++;\n                }\n            }\n        } else\n        #endif\n        if (likely(PyUnicode_Check(key))) {\n            while (*name) {\n                int cmp = (**name == key) ? 0 :\n                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3\n                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :\n                #endif\n                    PyUnicode_Compare(**name, key);\n                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;\n                if (cmp == 0) {\n                    values[name-argnames] = value;\n                    break;\n                }\n                name++;\n            }\n            if (*name) continue;\n            else {\n                PyObject*** argname = argnames;\n                while (argname != first_kw_arg) {\n                    int cmp = (**argname == key) ? 0 :\n                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3\n                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :\n                    #endif\n                        PyUnicode_Compare(**argname, key);\n                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;\n                    if (cmp == 0) goto arg_passed_twice;\n                    argname++;\n                }\n            }\n        } else\n            goto invalid_keyword_type;\n        if (kwds2) {\n            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;\n        } else {\n            goto invalid_keyword;\n        }\n    }\n    return 0;\narg_passed_twice:\n    __Pyx_RaiseDoubleKeywordsError(function_name, key);\n    goto bad;\ninvalid_keyword_type:\n    PyErr_Format(PyExc_TypeError,\n        \"%.200s() keywords must be strings\", function_name);\n    goto bad;\ninvalid_keyword:\n    PyErr_Format(PyExc_TypeError,\n    #if PY_MAJOR_VERSION < 3\n        \"%.200s() got an unexpected keyword argument '%.200s'\",\n        function_name, PyString_AsString(key));\n    #else\n        \"%s() got an unexpected keyword argument '%U'\",\n        function_name, key);\n    #endif\nbad:\n    return -1;\n}\n\n/* GetItemInt */\nstatic PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {\n    PyObject *r;\n    if (!j) return NULL;\n    r = PyObject_GetItem(o, j);\n    Py_DECREF(j);\n    return r;\n}\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,\n                                                              CYTHON_NCP_UNUSED int wraparound,\n                                                              CYTHON_NCP_UNUSED int boundscheck) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n    Py_ssize_t wrapped_i = i;\n    if (wraparound & unlikely(i < 0)) {\n        wrapped_i += PyList_GET_SIZE(o);\n    }\n    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyList_GET_SIZE(o)))) {\n        PyObject *r = PyList_GET_ITEM(o, wrapped_i);\n        Py_INCREF(r);\n        return r;\n    }\n    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));\n#else\n    return PySequence_GetItem(o, i);\n#endif\n}\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,\n                                                              CYTHON_NCP_UNUSED int wraparound,\n                                                              CYTHON_NCP_UNUSED int boundscheck) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n    Py_ssize_t wrapped_i = i;\n    if (wraparound & unlikely(i < 0)) {\n        wrapped_i += PyTuple_GET_SIZE(o);\n    }\n    if ((!boundscheck) || likely((0 <= wrapped_i) & (wrapped_i < PyTuple_GET_SIZE(o)))) {\n        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);\n        Py_INCREF(r);\n        return r;\n    }\n    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));\n#else\n    return PySequence_GetItem(o, i);\n#endif\n}\nstatic CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,\n                                                     CYTHON_NCP_UNUSED int wraparound,\n                                                     CYTHON_NCP_UNUSED int boundscheck) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS\n    if (is_list || PyList_CheckExact(o)) {\n        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);\n        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {\n            PyObject *r = PyList_GET_ITEM(o, n);\n            Py_INCREF(r);\n            return r;\n        }\n    }\n    else if (PyTuple_CheckExact(o)) {\n        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);\n        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {\n            PyObject *r = PyTuple_GET_ITEM(o, n);\n            Py_INCREF(r);\n            return r;\n        }\n    } else {\n        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;\n        if (likely(m && m->sq_item)) {\n            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {\n                Py_ssize_t l = m->sq_length(o);\n                if (likely(l >= 0)) {\n                    i += l;\n                } else {\n                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))\n                        return NULL;\n                    PyErr_Clear();\n                }\n            }\n            return m->sq_item(o, i);\n        }\n    }\n#else\n    if (is_list || PySequence_Check(o)) {\n        return PySequence_GetItem(o, i);\n    }\n#endif\n    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));\n}\n\n/* DictGetItem */\n#if PY_MAJOR_VERSION >= 3 && !CYTHON_COMPILING_IN_PYPY\nstatic PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {\n    PyObject *value;\n    value = PyDict_GetItemWithError(d, key);\n    if (unlikely(!value)) {\n        if (!PyErr_Occurred()) {\n            PyObject* args = PyTuple_Pack(1, key);\n            if (likely(args))\n                PyErr_SetObject(PyExc_KeyError, args);\n            Py_XDECREF(args);\n        }\n        return NULL;\n    }\n    Py_INCREF(value);\n    return value;\n}\n#endif\n\n/* PyCFunctionFastCall */\n#if CYTHON_FAST_PYCCALL\nstatic CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) {\n    PyCFunctionObject *func = (PyCFunctionObject*)func_obj;\n    PyCFunction meth = PyCFunction_GET_FUNCTION(func);\n    PyObject *self = PyCFunction_GET_SELF(func);\n    int flags = PyCFunction_GET_FLAGS(func);\n    assert(PyCFunction_Check(func));\n    assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)));\n    assert(nargs >= 0);\n    assert(nargs == 0 || args != NULL);\n    /* _PyCFunction_FastCallDict() must not be called with an exception set,\n       because it may clear it (directly or indirectly) and so the\n       caller loses its exception */\n    assert(!PyErr_Occurred());\n    if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) {\n        return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL);\n    } else {\n        return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs);\n    }\n}\n#endif\n\n/* PyFunctionFastCall */\n#if CYTHON_FAST_PYCALL\n#include \"frameobject.h\"\nstatic PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na,\n                                               PyObject *globals) {\n    PyFrameObject *f;\n    PyThreadState *tstate = __Pyx_PyThreadState_Current;\n    PyObject **fastlocals;\n    Py_ssize_t i;\n    PyObject *result;\n    assert(globals != NULL);\n    /* XXX Perhaps we should create a specialized\n       PyFrame_New() that doesn't take locals, but does\n       take builtins without sanity checking them.\n       */\n    assert(tstate != NULL);\n    f = PyFrame_New(tstate, co, globals, NULL);\n    if (f == NULL) {\n        return NULL;\n    }\n    fastlocals = f->f_localsplus;\n    for (i = 0; i < na; i++) {\n        Py_INCREF(*args);\n        fastlocals[i] = *args++;\n    }\n    result = PyEval_EvalFrameEx(f,0);\n    ++tstate->recursion_depth;\n    Py_DECREF(f);\n    --tstate->recursion_depth;\n    return result;\n}\n#if 1 || PY_VERSION_HEX < 0x030600B1\nstatic PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) {\n    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);\n    PyObject *globals = PyFunction_GET_GLOBALS(func);\n    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);\n    PyObject *closure;\n#if PY_MAJOR_VERSION >= 3\n    PyObject *kwdefs;\n#endif\n    PyObject *kwtuple, **k;\n    PyObject **d;\n    Py_ssize_t nd;\n    Py_ssize_t nk;\n    PyObject *result;\n    assert(kwargs == NULL || PyDict_Check(kwargs));\n    nk = kwargs ? PyDict_Size(kwargs) : 0;\n    if (Py_EnterRecursiveCall((char*)\" while calling a Python object\")) {\n        return NULL;\n    }\n    if (\n#if PY_MAJOR_VERSION >= 3\n            co->co_kwonlyargcount == 0 &&\n#endif\n            likely(kwargs == NULL || nk == 0) &&\n            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {\n        if (argdefs == NULL && co->co_argcount == nargs) {\n            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);\n            goto done;\n        }\n        else if (nargs == 0 && argdefs != NULL\n                 && co->co_argcount == Py_SIZE(argdefs)) {\n            /* function called with no arguments, but all parameters have\n               a default value: use default values as arguments .*/\n            args = &PyTuple_GET_ITEM(argdefs, 0);\n            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);\n            goto done;\n        }\n    }\n    if (kwargs != NULL) {\n        Py_ssize_t pos, i;\n        kwtuple = PyTuple_New(2 * nk);\n        if (kwtuple == NULL) {\n            result = NULL;\n            goto done;\n        }\n        k = &PyTuple_GET_ITEM(kwtuple, 0);\n        pos = i = 0;\n        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {\n            Py_INCREF(k[i]);\n            Py_INCREF(k[i+1]);\n            i += 2;\n        }\n        nk = i / 2;\n    }\n    else {\n        kwtuple = NULL;\n        k = NULL;\n    }\n    closure = PyFunction_GET_CLOSURE(func);\n#if PY_MAJOR_VERSION >= 3\n    kwdefs = PyFunction_GET_KW_DEFAULTS(func);\n#endif\n    if (argdefs != NULL) {\n        d = &PyTuple_GET_ITEM(argdefs, 0);\n        nd = Py_SIZE(argdefs);\n    }\n    else {\n        d = NULL;\n        nd = 0;\n    }\n#if PY_MAJOR_VERSION >= 3\n    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,\n                               args, nargs,\n                               k, (int)nk,\n                               d, (int)nd, kwdefs, closure);\n#else\n    result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL,\n                               args, nargs,\n                               k, (int)nk,\n                               d, (int)nd, closure);\n#endif\n    Py_XDECREF(kwtuple);\ndone:\n    Py_LeaveRecursiveCall();\n    return result;\n}\n#endif\n#endif\n\n/* PyObjectCall */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {\n    PyObject *result;\n    ternaryfunc call = func->ob_type->tp_call;\n    if (unlikely(!call))\n        return PyObject_Call(func, arg, kw);\n    if (unlikely(Py_EnterRecursiveCall((char*)\" while calling a Python object\")))\n        return NULL;\n    result = (*call)(func, arg, kw);\n    Py_LeaveRecursiveCall();\n    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {\n        PyErr_SetString(\n            PyExc_SystemError,\n            \"NULL result without error in PyObject_Call\");\n    }\n    return result;\n}\n#endif\n\n/* PyObjectCallMethO */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {\n    PyObject *self, *result;\n    PyCFunction cfunc;\n    cfunc = PyCFunction_GET_FUNCTION(func);\n    self = PyCFunction_GET_SELF(func);\n    if (unlikely(Py_EnterRecursiveCall((char*)\" while calling a Python object\")))\n        return NULL;\n    result = cfunc(self, arg);\n    Py_LeaveRecursiveCall();\n    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {\n        PyErr_SetString(\n            PyExc_SystemError,\n            \"NULL result without error in PyObject_Call\");\n    }\n    return result;\n}\n#endif\n\n/* PyObjectCallOneArg */\n#if CYTHON_COMPILING_IN_CPYTHON\nstatic PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {\n    PyObject *result;\n    PyObject *args = PyTuple_New(1);\n    if (unlikely(!args)) return NULL;\n    Py_INCREF(arg);\n    PyTuple_SET_ITEM(args, 0, arg);\n    result = __Pyx_PyObject_Call(func, args, NULL);\n    Py_DECREF(args);\n    return result;\n}\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {\n#if CYTHON_FAST_PYCALL\n    if (PyFunction_Check(func)) {\n        return __Pyx_PyFunction_FastCall(func, &arg, 1);\n    }\n#endif\n    if (likely(PyCFunction_Check(func))) {\n        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {\n            return __Pyx_PyObject_CallMethO(func, arg);\n#if CYTHON_FAST_PYCCALL\n        } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) {\n            return __Pyx_PyCFunction_FastCall(func, &arg, 1);\n#endif\n        }\n    }\n    return __Pyx__PyObject_CallOneArg(func, arg);\n}\n#else\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {\n    PyObject *result;\n    PyObject *args = PyTuple_Pack(1, arg);\n    if (unlikely(!args)) return NULL;\n    result = __Pyx_PyObject_Call(func, args, NULL);\n    Py_DECREF(args);\n    return result;\n}\n#endif\n\n/* PyErrFetchRestore */\n#if CYTHON_FAST_THREAD_STATE\nstatic CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {\n    PyObject *tmp_type, *tmp_value, *tmp_tb;\n    tmp_type = tstate->curexc_type;\n    tmp_value = tstate->curexc_value;\n    tmp_tb = tstate->curexc_traceback;\n    tstate->curexc_type = type;\n    tstate->curexc_value = value;\n    tstate->curexc_traceback = tb;\n    Py_XDECREF(tmp_type);\n    Py_XDECREF(tmp_value);\n    Py_XDECREF(tmp_tb);\n}\nstatic CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {\n    *type = tstate->curexc_type;\n    *value = tstate->curexc_value;\n    *tb = tstate->curexc_traceback;\n    tstate->curexc_type = 0;\n    tstate->curexc_value = 0;\n    tstate->curexc_traceback = 0;\n}\n#endif\n\n/* RaiseException */\n#if PY_MAJOR_VERSION < 3\nstatic void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,\n                        CYTHON_UNUSED PyObject *cause) {\n    __Pyx_PyThreadState_declare\n    Py_XINCREF(type);\n    if (!value || value == Py_None)\n        value = NULL;\n    else\n        Py_INCREF(value);\n    if (!tb || tb == Py_None)\n        tb = NULL;\n    else {\n        Py_INCREF(tb);\n        if (!PyTraceBack_Check(tb)) {\n            PyErr_SetString(PyExc_TypeError,\n                \"raise: arg 3 must be a traceback or None\");\n            goto raise_error;\n        }\n    }\n    if (PyType_Check(type)) {\n#if CYTHON_COMPILING_IN_PYPY\n        if (!value) {\n            Py_INCREF(Py_None);\n            value = Py_None;\n        }\n#endif\n        PyErr_NormalizeException(&type, &value, &tb);\n    } else {\n        if (value) {\n            PyErr_SetString(PyExc_TypeError,\n                \"instance exception may not have a separate value\");\n            goto raise_error;\n        }\n        value = type;\n        type = (PyObject*) Py_TYPE(type);\n        Py_INCREF(type);\n        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {\n            PyErr_SetString(PyExc_TypeError,\n                \"raise: exception class must be a subclass of BaseException\");\n            goto raise_error;\n        }\n    }\n    __Pyx_PyThreadState_assign\n    __Pyx_ErrRestore(type, value, tb);\n    return;\nraise_error:\n    Py_XDECREF(value);\n    Py_XDECREF(type);\n    Py_XDECREF(tb);\n    return;\n}\n#else\nstatic void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {\n    PyObject* owned_instance = NULL;\n    if (tb == Py_None) {\n        tb = 0;\n    } else if (tb && !PyTraceBack_Check(tb)) {\n        PyErr_SetString(PyExc_TypeError,\n            \"raise: arg 3 must be a traceback or None\");\n        goto bad;\n    }\n    if (value == Py_None)\n        value = 0;\n    if (PyExceptionInstance_Check(type)) {\n        if (value) {\n            PyErr_SetString(PyExc_TypeError,\n                \"instance exception may not have a separate value\");\n            goto bad;\n        }\n        value = type;\n        type = (PyObject*) Py_TYPE(value);\n    } else if (PyExceptionClass_Check(type)) {\n        PyObject *instance_class = NULL;\n        if (value && PyExceptionInstance_Check(value)) {\n            instance_class = (PyObject*) Py_TYPE(value);\n            if (instance_class != type) {\n                int is_subclass = PyObject_IsSubclass(instance_class, type);\n                if (!is_subclass) {\n                    instance_class = NULL;\n                } else if (unlikely(is_subclass == -1)) {\n                    goto bad;\n                } else {\n                    type = instance_class;\n                }\n            }\n        }\n        if (!instance_class) {\n            PyObject *args;\n            if (!value)\n                args = PyTuple_New(0);\n            else if (PyTuple_Check(value)) {\n                Py_INCREF(value);\n                args = value;\n            } else\n                args = PyTuple_Pack(1, value);\n            if (!args)\n                goto bad;\n            owned_instance = PyObject_Call(type, args, NULL);\n            Py_DECREF(args);\n            if (!owned_instance)\n                goto bad;\n            value = owned_instance;\n            if (!PyExceptionInstance_Check(value)) {\n                PyErr_Format(PyExc_TypeError,\n                             \"calling %R should have returned an instance of \"\n                             \"BaseException, not %R\",\n                             type, Py_TYPE(value));\n                goto bad;\n            }\n        }\n    } else {\n        PyErr_SetString(PyExc_TypeError,\n            \"raise: exception class must be a subclass of BaseException\");\n        goto bad;\n    }\n    if (cause) {\n        PyObject *fixed_cause;\n        if (cause == Py_None) {\n            fixed_cause = NULL;\n        } else if (PyExceptionClass_Check(cause)) {\n            fixed_cause = PyObject_CallObject(cause, NULL);\n            if (fixed_cause == NULL)\n                goto bad;\n        } else if (PyExceptionInstance_Check(cause)) {\n            fixed_cause = cause;\n            Py_INCREF(fixed_cause);\n        } else {\n            PyErr_SetString(PyExc_TypeError,\n                            \"exception causes must derive from \"\n                            \"BaseException\");\n            goto bad;\n        }\n        PyException_SetCause(value, fixed_cause);\n    }\n    PyErr_SetObject(type, value);\n    if (tb) {\n#if CYTHON_COMPILING_IN_PYPY\n        PyObject *tmp_type, *tmp_value, *tmp_tb;\n        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);\n        Py_INCREF(tb);\n        PyErr_Restore(tmp_type, tmp_value, tb);\n        Py_XDECREF(tmp_tb);\n#else\n        PyThreadState *tstate = __Pyx_PyThreadState_Current;\n        PyObject* tmp_tb = tstate->curexc_traceback;\n        if (tb != tmp_tb) {\n            Py_INCREF(tb);\n            tstate->curexc_traceback = tb;\n            Py_XDECREF(tmp_tb);\n        }\n#endif\n    }\nbad:\n    Py_XDECREF(owned_instance);\n    return;\n}\n#endif\n\n/* SetItemInt */\nstatic int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {\n    int r;\n    if (!j) return -1;\n    r = PyObject_SetItem(o, j, v);\n    Py_DECREF(j);\n    return r;\n}\nstatic CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,\n                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS\n    if (is_list || PyList_CheckExact(o)) {\n        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));\n        if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {\n            PyObject* old = PyList_GET_ITEM(o, n);\n            Py_INCREF(v);\n            PyList_SET_ITEM(o, n, v);\n            Py_DECREF(old);\n            return 1;\n        }\n    } else {\n        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;\n        if (likely(m && m->sq_ass_item)) {\n            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {\n                Py_ssize_t l = m->sq_length(o);\n                if (likely(l >= 0)) {\n                    i += l;\n                } else {\n                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))\n                        return -1;\n                    PyErr_Clear();\n                }\n            }\n            return m->sq_ass_item(o, i, v);\n        }\n    }\n#else\n#if CYTHON_COMPILING_IN_PYPY\n    if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {\n#else\n    if (is_list || PySequence_Check(o)) {\n#endif\n        return PySequence_SetItem(o, i, v);\n    }\n#endif\n    return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);\n}\n\n/* IterFinish */\n  static CYTHON_INLINE int __Pyx_IterFinish(void) {\n#if CYTHON_FAST_THREAD_STATE\n    PyThreadState *tstate = __Pyx_PyThreadState_Current;\n    PyObject* exc_type = tstate->curexc_type;\n    if (unlikely(exc_type)) {\n        if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) {\n            PyObject *exc_value, *exc_tb;\n            exc_value = tstate->curexc_value;\n            exc_tb = tstate->curexc_traceback;\n            tstate->curexc_type = 0;\n            tstate->curexc_value = 0;\n            tstate->curexc_traceback = 0;\n            Py_DECREF(exc_type);\n            Py_XDECREF(exc_value);\n            Py_XDECREF(exc_tb);\n            return 0;\n        } else {\n            return -1;\n        }\n    }\n    return 0;\n#else\n    if (unlikely(PyErr_Occurred())) {\n        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {\n            PyErr_Clear();\n            return 0;\n        } else {\n            return -1;\n        }\n    }\n    return 0;\n#endif\n}\n\n/* PyObjectCallNoArg */\n  #if CYTHON_COMPILING_IN_CPYTHON\nstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {\n#if CYTHON_FAST_PYCALL\n    if (PyFunction_Check(func)) {\n        return __Pyx_PyFunction_FastCall(func, NULL, 0);\n    }\n#endif\n#ifdef __Pyx_CyFunction_USED\n    if (likely(PyCFunction_Check(func) || __Pyx_TypeCheck(func, __pyx_CyFunctionType))) {\n#else\n    if (likely(PyCFunction_Check(func))) {\n#endif\n        if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {\n            return __Pyx_PyObject_CallMethO(func, NULL);\n        }\n    }\n    return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);\n}\n#endif\n\n/* PyObjectCallMethod0 */\n    static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {\n    PyObject *method, *result = NULL;\n    method = __Pyx_PyObject_GetAttrStr(obj, method_name);\n    if (unlikely(!method)) goto bad;\n#if CYTHON_UNPACK_METHODS\n    if (likely(PyMethod_Check(method))) {\n        PyObject *self = PyMethod_GET_SELF(method);\n        if (likely(self)) {\n            PyObject *function = PyMethod_GET_FUNCTION(method);\n            result = __Pyx_PyObject_CallOneArg(function, self);\n            Py_DECREF(method);\n            return result;\n        }\n    }\n#endif\n    result = __Pyx_PyObject_CallNoArg(method);\n    Py_DECREF(method);\nbad:\n    return result;\n}\n\n/* RaiseNeedMoreValuesToUnpack */\n    static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {\n    PyErr_Format(PyExc_ValueError,\n                 \"need more than %\" CYTHON_FORMAT_SSIZE_T \"d value%.1s to unpack\",\n                 index, (index == 1) ? \"\" : \"s\");\n}\n\n/* RaiseTooManyValuesToUnpack */\n    static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {\n    PyErr_Format(PyExc_ValueError,\n                 \"too many values to unpack (expected %\" CYTHON_FORMAT_SSIZE_T \"d)\", expected);\n}\n\n/* UnpackItemEndCheck */\n    static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {\n    if (unlikely(retval)) {\n        Py_DECREF(retval);\n        __Pyx_RaiseTooManyValuesError(expected);\n        return -1;\n    } else {\n        return __Pyx_IterFinish();\n    }\n    return 0;\n}\n\n/* RaiseNoneIterError */\n    static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) {\n    PyErr_SetString(PyExc_TypeError, \"'NoneType' object is not iterable\");\n}\n\n/* UnpackTupleError */\n    static void __Pyx_UnpackTupleError(PyObject *t, Py_ssize_t index) {\n    if (t == Py_None) {\n      __Pyx_RaiseNoneNotIterableError();\n    } else if (PyTuple_GET_SIZE(t) < index) {\n      __Pyx_RaiseNeedMoreValuesError(PyTuple_GET_SIZE(t));\n    } else {\n      __Pyx_RaiseTooManyValuesError(index);\n    }\n}\n\n/* UnpackTuple2 */\n    static CYTHON_INLINE int __Pyx_unpack_tuple2_exact(\n        PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2, int decref_tuple) {\n    PyObject *value1 = NULL, *value2 = NULL;\n#if CYTHON_COMPILING_IN_PYPY\n    value1 = PySequence_ITEM(tuple, 0);  if (unlikely(!value1)) goto bad;\n    value2 = PySequence_ITEM(tuple, 1);  if (unlikely(!value2)) goto bad;\n#else\n    value1 = PyTuple_GET_ITEM(tuple, 0);  Py_INCREF(value1);\n    value2 = PyTuple_GET_ITEM(tuple, 1);  Py_INCREF(value2);\n#endif\n    if (decref_tuple) {\n        Py_DECREF(tuple);\n    }\n    *pvalue1 = value1;\n    *pvalue2 = value2;\n    return 0;\n#if CYTHON_COMPILING_IN_PYPY\nbad:\n    Py_XDECREF(value1);\n    Py_XDECREF(value2);\n    if (decref_tuple) { Py_XDECREF(tuple); }\n    return -1;\n#endif\n}\nstatic int __Pyx_unpack_tuple2_generic(PyObject* tuple, PyObject** pvalue1, PyObject** pvalue2,\n                                       int has_known_size, int decref_tuple) {\n    Py_ssize_t index;\n    PyObject *value1 = NULL, *value2 = NULL, *iter = NULL;\n    iternextfunc iternext;\n    iter = PyObject_GetIter(tuple);\n    if (unlikely(!iter)) goto bad;\n    if (decref_tuple) { Py_DECREF(tuple); tuple = NULL; }\n    iternext = Py_TYPE(iter)->tp_iternext;\n    value1 = iternext(iter); if (unlikely(!value1)) { index = 0; goto unpacking_failed; }\n    value2 = iternext(iter); if (unlikely(!value2)) { index = 1; goto unpacking_failed; }\n    if (!has_known_size && unlikely(__Pyx_IternextUnpackEndCheck(iternext(iter), 2))) goto bad;\n    Py_DECREF(iter);\n    *pvalue1 = value1;\n    *pvalue2 = value2;\n    return 0;\nunpacking_failed:\n    if (!has_known_size && __Pyx_IterFinish() == 0)\n        __Pyx_RaiseNeedMoreValuesError(index);\nbad:\n    Py_XDECREF(iter);\n    Py_XDECREF(value1);\n    Py_XDECREF(value2);\n    if (decref_tuple) { Py_XDECREF(tuple); }\n    return -1;\n}\n\n/* dict_iter */\n    static CYTHON_INLINE PyObject* __Pyx_dict_iterator(PyObject* iterable, int is_dict, PyObject* method_name,\n                                                   Py_ssize_t* p_orig_length, int* p_source_is_dict) {\n    is_dict = is_dict || likely(PyDict_CheckExact(iterable));\n    *p_source_is_dict = is_dict;\n    if (is_dict) {\n#if !CYTHON_COMPILING_IN_PYPY\n        *p_orig_length = PyDict_Size(iterable);\n        Py_INCREF(iterable);\n        return iterable;\n#elif PY_MAJOR_VERSION >= 3\n        static PyObject *py_items = NULL, *py_keys = NULL, *py_values = NULL;\n        PyObject **pp = NULL;\n        if (method_name) {\n            const char *name = PyUnicode_AsUTF8(method_name);\n            if (strcmp(name, \"iteritems\") == 0) pp = &py_items;\n            else if (strcmp(name, \"iterkeys\") == 0) pp = &py_keys;\n            else if (strcmp(name, \"itervalues\") == 0) pp = &py_values;\n            if (pp) {\n                if (!*pp) {\n                    *pp = PyUnicode_FromString(name + 4);\n                    if (!*pp)\n                        return NULL;\n                }\n                method_name = *pp;\n            }\n        }\n#endif\n    }\n    *p_orig_length = 0;\n    if (method_name) {\n        PyObject* iter;\n        iterable = __Pyx_PyObject_CallMethod0(iterable, method_name);\n        if (!iterable)\n            return NULL;\n#if !CYTHON_COMPILING_IN_PYPY\n        if (PyTuple_CheckExact(iterable) || PyList_CheckExact(iterable))\n            return iterable;\n#endif\n        iter = PyObject_GetIter(iterable);\n        Py_DECREF(iterable);\n        return iter;\n    }\n    return PyObject_GetIter(iterable);\n}\nstatic CYTHON_INLINE int __Pyx_dict_iter_next(\n        PyObject* iter_obj, CYTHON_NCP_UNUSED Py_ssize_t orig_length, CYTHON_NCP_UNUSED Py_ssize_t* ppos,\n        PyObject** pkey, PyObject** pvalue, PyObject** pitem, int source_is_dict) {\n    PyObject* next_item;\n#if !CYTHON_COMPILING_IN_PYPY\n    if (source_is_dict) {\n        PyObject *key, *value;\n        if (unlikely(orig_length != PyDict_Size(iter_obj))) {\n            PyErr_SetString(PyExc_RuntimeError, \"dictionary changed size during iteration\");\n            return -1;\n        }\n        if (unlikely(!PyDict_Next(iter_obj, ppos, &key, &value))) {\n            return 0;\n        }\n        if (pitem) {\n            PyObject* tuple = PyTuple_New(2);\n            if (unlikely(!tuple)) {\n                return -1;\n            }\n            Py_INCREF(key);\n            Py_INCREF(value);\n            PyTuple_SET_ITEM(tuple, 0, key);\n            PyTuple_SET_ITEM(tuple, 1, value);\n            *pitem = tuple;\n        } else {\n            if (pkey) {\n                Py_INCREF(key);\n                *pkey = key;\n            }\n            if (pvalue) {\n                Py_INCREF(value);\n                *pvalue = value;\n            }\n        }\n        return 1;\n    } else if (PyTuple_CheckExact(iter_obj)) {\n        Py_ssize_t pos = *ppos;\n        if (unlikely(pos >= PyTuple_GET_SIZE(iter_obj))) return 0;\n        *ppos = pos + 1;\n        next_item = PyTuple_GET_ITEM(iter_obj, pos);\n        Py_INCREF(next_item);\n    } else if (PyList_CheckExact(iter_obj)) {\n        Py_ssize_t pos = *ppos;\n        if (unlikely(pos >= PyList_GET_SIZE(iter_obj))) return 0;\n        *ppos = pos + 1;\n        next_item = PyList_GET_ITEM(iter_obj, pos);\n        Py_INCREF(next_item);\n    } else\n#endif\n    {\n        next_item = PyIter_Next(iter_obj);\n        if (unlikely(!next_item)) {\n            return __Pyx_IterFinish();\n        }\n    }\n    if (pitem) {\n        *pitem = next_item;\n    } else if (pkey && pvalue) {\n        if (__Pyx_unpack_tuple2(next_item, pkey, pvalue, source_is_dict, source_is_dict, 1))\n            return -1;\n    } else if (pkey) {\n        *pkey = next_item;\n    } else {\n        *pvalue = next_item;\n    }\n    return 1;\n}\n\n/* FetchCommonType */\n    static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {\n    PyObject* fake_module;\n    PyTypeObject* cached_type = NULL;\n    fake_module = PyImport_AddModule((char*) \"_cython_\" CYTHON_ABI);\n    if (!fake_module) return NULL;\n    Py_INCREF(fake_module);\n    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);\n    if (cached_type) {\n        if (!PyType_Check((PyObject*)cached_type)) {\n            PyErr_Format(PyExc_TypeError,\n                \"Shared Cython type %.200s is not a type object\",\n                type->tp_name);\n            goto bad;\n        }\n        if (cached_type->tp_basicsize != type->tp_basicsize) {\n            PyErr_Format(PyExc_TypeError,\n                \"Shared Cython type %.200s has the wrong size, try recompiling\",\n                type->tp_name);\n            goto bad;\n        }\n    } else {\n        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;\n        PyErr_Clear();\n        if (PyType_Ready(type) < 0) goto bad;\n        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)\n            goto bad;\n        Py_INCREF(type);\n        cached_type = type;\n    }\ndone:\n    Py_DECREF(fake_module);\n    return cached_type;\nbad:\n    Py_XDECREF(cached_type);\n    cached_type = NULL;\n    goto done;\n}\n\n/* CythonFunction */\n    #include <structmember.h>\nstatic PyObject *\n__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)\n{\n    if (unlikely(op->func_doc == NULL)) {\n        if (op->func.m_ml->ml_doc) {\n#if PY_MAJOR_VERSION >= 3\n            op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);\n#else\n            op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);\n#endif\n            if (unlikely(op->func_doc == NULL))\n                return NULL;\n        } else {\n            Py_INCREF(Py_None);\n            return Py_None;\n        }\n    }\n    Py_INCREF(op->func_doc);\n    return op->func_doc;\n}\nstatic int\n__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)\n{\n    PyObject *tmp = op->func_doc;\n    if (value == NULL) {\n        value = Py_None;\n    }\n    Py_INCREF(value);\n    op->func_doc = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)\n{\n    if (unlikely(op->func_name == NULL)) {\n#if PY_MAJOR_VERSION >= 3\n        op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);\n#else\n        op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);\n#endif\n        if (unlikely(op->func_name == NULL))\n            return NULL;\n    }\n    Py_INCREF(op->func_name);\n    return op->func_name;\n}\nstatic int\n__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)\n{\n    PyObject *tmp;\n#if PY_MAJOR_VERSION >= 3\n    if (unlikely(value == NULL || !PyUnicode_Check(value))) {\n#else\n    if (unlikely(value == NULL || !PyString_Check(value))) {\n#endif\n        PyErr_SetString(PyExc_TypeError,\n                        \"__name__ must be set to a string object\");\n        return -1;\n    }\n    tmp = op->func_name;\n    Py_INCREF(value);\n    op->func_name = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)\n{\n    Py_INCREF(op->func_qualname);\n    return op->func_qualname;\n}\nstatic int\n__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)\n{\n    PyObject *tmp;\n#if PY_MAJOR_VERSION >= 3\n    if (unlikely(value == NULL || !PyUnicode_Check(value))) {\n#else\n    if (unlikely(value == NULL || !PyString_Check(value))) {\n#endif\n        PyErr_SetString(PyExc_TypeError,\n                        \"__qualname__ must be set to a string object\");\n        return -1;\n    }\n    tmp = op->func_qualname;\n    Py_INCREF(value);\n    op->func_qualname = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)\n{\n    PyObject *self;\n    self = m->func_closure;\n    if (self == NULL)\n        self = Py_None;\n    Py_INCREF(self);\n    return self;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)\n{\n    if (unlikely(op->func_dict == NULL)) {\n        op->func_dict = PyDict_New();\n        if (unlikely(op->func_dict == NULL))\n            return NULL;\n    }\n    Py_INCREF(op->func_dict);\n    return op->func_dict;\n}\nstatic int\n__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)\n{\n    PyObject *tmp;\n    if (unlikely(value == NULL)) {\n        PyErr_SetString(PyExc_TypeError,\n               \"function's dictionary may not be deleted\");\n        return -1;\n    }\n    if (unlikely(!PyDict_Check(value))) {\n        PyErr_SetString(PyExc_TypeError,\n               \"setting function's dictionary to a non-dict\");\n        return -1;\n    }\n    tmp = op->func_dict;\n    Py_INCREF(value);\n    op->func_dict = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)\n{\n    Py_INCREF(op->func_globals);\n    return op->func_globals;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)\n{\n    Py_INCREF(Py_None);\n    return Py_None;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)\n{\n    PyObject* result = (op->func_code) ? op->func_code : Py_None;\n    Py_INCREF(result);\n    return result;\n}\nstatic int\n__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {\n    int result = 0;\n    PyObject *res = op->defaults_getter((PyObject *) op);\n    if (unlikely(!res))\n        return -1;\n    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);\n    Py_INCREF(op->defaults_tuple);\n    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);\n    Py_INCREF(op->defaults_kwdict);\n    #else\n    op->defaults_tuple = PySequence_ITEM(res, 0);\n    if (unlikely(!op->defaults_tuple)) result = -1;\n    else {\n        op->defaults_kwdict = PySequence_ITEM(res, 1);\n        if (unlikely(!op->defaults_kwdict)) result = -1;\n    }\n    #endif\n    Py_DECREF(res);\n    return result;\n}\nstatic int\n__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {\n    PyObject* tmp;\n    if (!value) {\n        value = Py_None;\n    } else if (value != Py_None && !PyTuple_Check(value)) {\n        PyErr_SetString(PyExc_TypeError,\n                        \"__defaults__ must be set to a tuple object\");\n        return -1;\n    }\n    Py_INCREF(value);\n    tmp = op->defaults_tuple;\n    op->defaults_tuple = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {\n    PyObject* result = op->defaults_tuple;\n    if (unlikely(!result)) {\n        if (op->defaults_getter) {\n            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;\n            result = op->defaults_tuple;\n        } else {\n            result = Py_None;\n        }\n    }\n    Py_INCREF(result);\n    return result;\n}\nstatic int\n__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {\n    PyObject* tmp;\n    if (!value) {\n        value = Py_None;\n    } else if (value != Py_None && !PyDict_Check(value)) {\n        PyErr_SetString(PyExc_TypeError,\n                        \"__kwdefaults__ must be set to a dict object\");\n        return -1;\n    }\n    Py_INCREF(value);\n    tmp = op->defaults_kwdict;\n    op->defaults_kwdict = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {\n    PyObject* result = op->defaults_kwdict;\n    if (unlikely(!result)) {\n        if (op->defaults_getter) {\n            if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;\n            result = op->defaults_kwdict;\n        } else {\n            result = Py_None;\n        }\n    }\n    Py_INCREF(result);\n    return result;\n}\nstatic int\n__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {\n    PyObject* tmp;\n    if (!value || value == Py_None) {\n        value = NULL;\n    } else if (!PyDict_Check(value)) {\n        PyErr_SetString(PyExc_TypeError,\n                        \"__annotations__ must be set to a dict object\");\n        return -1;\n    }\n    Py_XINCREF(value);\n    tmp = op->func_annotations;\n    op->func_annotations = value;\n    Py_XDECREF(tmp);\n    return 0;\n}\nstatic PyObject *\n__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {\n    PyObject* result = op->func_annotations;\n    if (unlikely(!result)) {\n        result = PyDict_New();\n        if (unlikely(!result)) return NULL;\n        op->func_annotations = result;\n    }\n    Py_INCREF(result);\n    return result;\n}\nstatic PyGetSetDef __pyx_CyFunction_getsets[] = {\n    {(char *) \"func_doc\", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},\n    {(char *) \"__doc__\",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},\n    {(char *) \"func_name\", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},\n    {(char *) \"__name__\", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},\n    {(char *) \"__qualname__\", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},\n    {(char *) \"__self__\", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},\n    {(char *) \"func_dict\", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},\n    {(char *) \"__dict__\", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},\n    {(char *) \"func_globals\", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},\n    {(char *) \"__globals__\", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},\n    {(char *) \"func_closure\", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},\n    {(char *) \"__closure__\", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},\n    {(char *) \"func_code\", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},\n    {(char *) \"__code__\", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},\n    {(char *) \"func_defaults\", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},\n    {(char *) \"__defaults__\", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},\n    {(char *) \"__kwdefaults__\", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},\n    {(char *) \"__annotations__\", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},\n    {0, 0, 0, 0, 0}\n};\nstatic PyMemberDef __pyx_CyFunction_members[] = {\n    {(char *) \"__module__\", T_OBJECT, offsetof(PyCFunctionObject, m_module), PY_WRITE_RESTRICTED, 0},\n    {0, 0, 0,  0, 0}\n};\nstatic PyObject *\n__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)\n{\n#if PY_MAJOR_VERSION >= 3\n    return PyUnicode_FromString(m->func.m_ml->ml_name);\n#else\n    return PyString_FromString(m->func.m_ml->ml_name);\n#endif\n}\nstatic PyMethodDef __pyx_CyFunction_methods[] = {\n    {\"__reduce__\", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},\n    {0, 0, 0, 0}\n};\n#if PY_VERSION_HEX < 0x030500A0\n#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)\n#else\n#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)\n#endif\nstatic PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,\n                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {\n    __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);\n    if (op == NULL)\n        return NULL;\n    op->flags = flags;\n    __Pyx_CyFunction_weakreflist(op) = NULL;\n    op->func.m_ml = ml;\n    op->func.m_self = (PyObject *) op;\n    Py_XINCREF(closure);\n    op->func_closure = closure;\n    Py_XINCREF(module);\n    op->func.m_module = module;\n    op->func_dict = NULL;\n    op->func_name = NULL;\n    Py_INCREF(qualname);\n    op->func_qualname = qualname;\n    op->func_doc = NULL;\n    op->func_classobj = NULL;\n    op->func_globals = globals;\n    Py_INCREF(op->func_globals);\n    Py_XINCREF(code);\n    op->func_code = code;\n    op->defaults_pyobjects = 0;\n    op->defaults = NULL;\n    op->defaults_tuple = NULL;\n    op->defaults_kwdict = NULL;\n    op->defaults_getter = NULL;\n    op->func_annotations = NULL;\n    PyObject_GC_Track(op);\n    return (PyObject *) op;\n}\nstatic int\n__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)\n{\n    Py_CLEAR(m->func_closure);\n    Py_CLEAR(m->func.m_module);\n    Py_CLEAR(m->func_dict);\n    Py_CLEAR(m->func_name);\n    Py_CLEAR(m->func_qualname);\n    Py_CLEAR(m->func_doc);\n    Py_CLEAR(m->func_globals);\n    Py_CLEAR(m->func_code);\n    Py_CLEAR(m->func_classobj);\n    Py_CLEAR(m->defaults_tuple);\n    Py_CLEAR(m->defaults_kwdict);\n    Py_CLEAR(m->func_annotations);\n    if (m->defaults) {\n        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);\n        int i;\n        for (i = 0; i < m->defaults_pyobjects; i++)\n            Py_XDECREF(pydefaults[i]);\n        PyObject_Free(m->defaults);\n        m->defaults = NULL;\n    }\n    return 0;\n}\nstatic void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)\n{\n    if (__Pyx_CyFunction_weakreflist(m) != NULL)\n        PyObject_ClearWeakRefs((PyObject *) m);\n    __Pyx_CyFunction_clear(m);\n    PyObject_GC_Del(m);\n}\nstatic void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)\n{\n    PyObject_GC_UnTrack(m);\n    __Pyx__CyFunction_dealloc(m);\n}\nstatic int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)\n{\n    Py_VISIT(m->func_closure);\n    Py_VISIT(m->func.m_module);\n    Py_VISIT(m->func_dict);\n    Py_VISIT(m->func_name);\n    Py_VISIT(m->func_qualname);\n    Py_VISIT(m->func_doc);\n    Py_VISIT(m->func_globals);\n    Py_VISIT(m->func_code);\n    Py_VISIT(m->func_classobj);\n    Py_VISIT(m->defaults_tuple);\n    Py_VISIT(m->defaults_kwdict);\n    if (m->defaults) {\n        PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);\n        int i;\n        for (i = 0; i < m->defaults_pyobjects; i++)\n            Py_VISIT(pydefaults[i]);\n    }\n    return 0;\n}\nstatic PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)\n{\n    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;\n    if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {\n        Py_INCREF(func);\n        return func;\n    }\n    if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {\n        if (type == NULL)\n            type = (PyObject *)(Py_TYPE(obj));\n        return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));\n    }\n    if (obj == Py_None)\n        obj = NULL;\n    return __Pyx_PyMethod_New(func, obj, type);\n}\nstatic PyObject*\n__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)\n{\n#if PY_MAJOR_VERSION >= 3\n    return PyUnicode_FromFormat(\"<cyfunction %U at %p>\",\n                                op->func_qualname, (void *)op);\n#else\n    return PyString_FromFormat(\"<cyfunction %s at %p>\",\n                               PyString_AsString(op->func_qualname), (void *)op);\n#endif\n}\nstatic PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {\n    PyCFunctionObject* f = (PyCFunctionObject*)func;\n    PyCFunction meth = f->m_ml->ml_meth;\n    Py_ssize_t size;\n    switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {\n    case METH_VARARGS:\n        if (likely(kw == NULL || PyDict_Size(kw) == 0))\n            return (*meth)(self, arg);\n        break;\n    case METH_VARARGS | METH_KEYWORDS:\n        return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);\n    case METH_NOARGS:\n        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {\n            size = PyTuple_GET_SIZE(arg);\n            if (likely(size == 0))\n                return (*meth)(self, NULL);\n            PyErr_Format(PyExc_TypeError,\n                \"%.200s() takes no arguments (%\" CYTHON_FORMAT_SSIZE_T \"d given)\",\n                f->m_ml->ml_name, size);\n            return NULL;\n        }\n        break;\n    case METH_O:\n        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {\n            size = PyTuple_GET_SIZE(arg);\n            if (likely(size == 1)) {\n                PyObject *result, *arg0;\n                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n                arg0 = PyTuple_GET_ITEM(arg, 0);\n                #else\n                arg0 = PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;\n                #endif\n                result = (*meth)(self, arg0);\n                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)\n                Py_DECREF(arg0);\n                #endif\n                return result;\n            }\n            PyErr_Format(PyExc_TypeError,\n                \"%.200s() takes exactly one argument (%\" CYTHON_FORMAT_SSIZE_T \"d given)\",\n                f->m_ml->ml_name, size);\n            return NULL;\n        }\n        break;\n    default:\n        PyErr_SetString(PyExc_SystemError, \"Bad call flags in \"\n                        \"__Pyx_CyFunction_Call. METH_OLDARGS is no \"\n                        \"longer supported!\");\n        return NULL;\n    }\n    PyErr_Format(PyExc_TypeError, \"%.200s() takes no keyword arguments\",\n                 f->m_ml->ml_name);\n    return NULL;\n}\nstatic CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {\n    return __Pyx_CyFunction_CallMethod(func, ((PyCFunctionObject*)func)->m_self, arg, kw);\n}\nstatic PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {\n    PyObject *result;\n    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;\n    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {\n        Py_ssize_t argc;\n        PyObject *new_args;\n        PyObject *self;\n        argc = PyTuple_GET_SIZE(args);\n        new_args = PyTuple_GetSlice(args, 1, argc);\n        if (unlikely(!new_args))\n            return NULL;\n        self = PyTuple_GetItem(args, 0);\n        if (unlikely(!self)) {\n            Py_DECREF(new_args);\n            return NULL;\n        }\n        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);\n        Py_DECREF(new_args);\n    } else {\n        result = __Pyx_CyFunction_Call(func, args, kw);\n    }\n    return result;\n}\nstatic PyTypeObject __pyx_CyFunctionType_type = {\n    PyVarObject_HEAD_INIT(0, 0)\n    \"cython_function_or_method\",\n    sizeof(__pyx_CyFunctionObject),\n    0,\n    (destructor) __Pyx_CyFunction_dealloc,\n    0,\n    0,\n    0,\n#if PY_MAJOR_VERSION < 3\n    0,\n#else\n    0,\n#endif\n    (reprfunc) __Pyx_CyFunction_repr,\n    0,\n    0,\n    0,\n    0,\n    __Pyx_CyFunction_CallAsMethod,\n    0,\n    0,\n    0,\n    0,\n    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,\n    0,\n    (traverseproc) __Pyx_CyFunction_traverse,\n    (inquiry) __Pyx_CyFunction_clear,\n    0,\n#if PY_VERSION_HEX < 0x030500A0\n    offsetof(__pyx_CyFunctionObject, func_weakreflist),\n#else\n    offsetof(PyCFunctionObject, m_weakreflist),\n#endif\n    0,\n    0,\n    __pyx_CyFunction_methods,\n    __pyx_CyFunction_members,\n    __pyx_CyFunction_getsets,\n    0,\n    0,\n    __Pyx_CyFunction_descr_get,\n    0,\n    offsetof(__pyx_CyFunctionObject, func_dict),\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n#if PY_VERSION_HEX >= 0x030400a1\n    0,\n#endif\n};\nstatic int __pyx_CyFunction_init(void) {\n    __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);\n    if (unlikely(__pyx_CyFunctionType == NULL)) {\n        return -1;\n    }\n    return 0;\n}\nstatic CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {\n    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;\n    m->defaults = PyObject_Malloc(size);\n    if (unlikely(!m->defaults))\n        return PyErr_NoMemory();\n    memset(m->defaults, 0, size);\n    m->defaults_pyobjects = pyobjects;\n    return m->defaults;\n}\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {\n    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;\n    m->defaults_tuple = tuple;\n    Py_INCREF(tuple);\n}\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {\n    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;\n    m->defaults_kwdict = dict;\n    Py_INCREF(dict);\n}\nstatic CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {\n    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;\n    m->func_annotations = dict;\n    Py_INCREF(dict);\n}\n\n/* FusedFunction */\n        static PyObject *\n__pyx_FusedFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags,\n                        PyObject *qualname, PyObject *self,\n                        PyObject *module, PyObject *globals,\n                        PyObject *code)\n{\n    __pyx_FusedFunctionObject *fusedfunc =\n        (__pyx_FusedFunctionObject *) __Pyx_CyFunction_New(type, ml, flags, qualname,\n                                                           self, module, globals, code);\n    if (!fusedfunc)\n        return NULL;\n    fusedfunc->__signatures__ = NULL;\n    fusedfunc->type = NULL;\n    fusedfunc->self = NULL;\n    return (PyObject *) fusedfunc;\n}\nstatic void\n__pyx_FusedFunction_dealloc(__pyx_FusedFunctionObject *self)\n{\n    PyObject_GC_UnTrack(self);\n    Py_CLEAR(self->self);\n    Py_CLEAR(self->type);\n    Py_CLEAR(self->__signatures__);\n    __Pyx__CyFunction_dealloc((__pyx_CyFunctionObject *) self);\n}\nstatic int\n__pyx_FusedFunction_traverse(__pyx_FusedFunctionObject *self,\n                             visitproc visit,\n                             void *arg)\n{\n    Py_VISIT(self->self);\n    Py_VISIT(self->type);\n    Py_VISIT(self->__signatures__);\n    return __Pyx_CyFunction_traverse((__pyx_CyFunctionObject *) self, visit, arg);\n}\nstatic int\n__pyx_FusedFunction_clear(__pyx_FusedFunctionObject *self)\n{\n    Py_CLEAR(self->self);\n    Py_CLEAR(self->type);\n    Py_CLEAR(self->__signatures__);\n    return __Pyx_CyFunction_clear((__pyx_CyFunctionObject *) self);\n}\nstatic PyObject *\n__pyx_FusedFunction_descr_get(PyObject *self, PyObject *obj, PyObject *type)\n{\n    __pyx_FusedFunctionObject *func, *meth;\n    func = (__pyx_FusedFunctionObject *) self;\n    if (func->self || func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD) {\n        Py_INCREF(self);\n        return self;\n    }\n    if (obj == Py_None)\n        obj = NULL;\n    meth = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_NewEx(\n                    ((PyCFunctionObject *) func)->m_ml,\n                    ((__pyx_CyFunctionObject *) func)->flags,\n                    ((__pyx_CyFunctionObject *) func)->func_qualname,\n                    ((__pyx_CyFunctionObject *) func)->func_closure,\n                    ((PyCFunctionObject *) func)->m_module,\n                    ((__pyx_CyFunctionObject *) func)->func_globals,\n                    ((__pyx_CyFunctionObject *) func)->func_code);\n    if (!meth)\n        return NULL;\n    Py_XINCREF(func->func.func_classobj);\n    meth->func.func_classobj = func->func.func_classobj;\n    Py_XINCREF(func->__signatures__);\n    meth->__signatures__ = func->__signatures__;\n    Py_XINCREF(type);\n    meth->type = type;\n    Py_XINCREF(func->func.defaults_tuple);\n    meth->func.defaults_tuple = func->func.defaults_tuple;\n    if (func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD)\n        obj = type;\n    Py_XINCREF(obj);\n    meth->self = obj;\n    return (PyObject *) meth;\n}\nstatic PyObject *\n_obj_to_str(PyObject *obj)\n{\n    if (PyType_Check(obj))\n        return PyObject_GetAttr(obj, __pyx_n_s_name);\n    else\n        return PyObject_Str(obj);\n}\nstatic PyObject *\n__pyx_FusedFunction_getitem(__pyx_FusedFunctionObject *self, PyObject *idx)\n{\n    PyObject *signature = NULL;\n    PyObject *unbound_result_func;\n    PyObject *result_func = NULL;\n    if (self->__signatures__ == NULL) {\n        PyErr_SetString(PyExc_TypeError, \"Function is not fused\");\n        return NULL;\n    }\n    if (PyTuple_Check(idx)) {\n        PyObject *list = PyList_New(0);\n        Py_ssize_t n = PyTuple_GET_SIZE(idx);\n        PyObject *string = NULL;\n        PyObject *sep = NULL;\n        int i;\n        if (!list)\n            return NULL;\n        for (i = 0; i < n; i++) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n            PyObject *item = PyTuple_GET_ITEM(idx, i);\n#else\n            PyObject *item = PySequence_ITEM(idx, i);\n#endif\n            string = _obj_to_str(item);\n#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)\n            Py_DECREF(item);\n#endif\n            if (!string || PyList_Append(list, string) < 0)\n                goto __pyx_err;\n            Py_DECREF(string);\n        }\n        sep = PyUnicode_FromString(\"|\");\n        if (sep)\n            signature = PyUnicode_Join(sep, list);\n__pyx_err:\n;\n        Py_DECREF(list);\n        Py_XDECREF(sep);\n    } else {\n        signature = _obj_to_str(idx);\n    }\n    if (!signature)\n        return NULL;\n    unbound_result_func = PyObject_GetItem(self->__signatures__, signature);\n    if (unbound_result_func) {\n        if (self->self || self->type) {\n            __pyx_FusedFunctionObject *unbound = (__pyx_FusedFunctionObject *) unbound_result_func;\n            Py_CLEAR(unbound->func.func_classobj);\n            Py_XINCREF(self->func.func_classobj);\n            unbound->func.func_classobj = self->func.func_classobj;\n            result_func = __pyx_FusedFunction_descr_get(unbound_result_func,\n                                                        self->self, self->type);\n        } else {\n            result_func = unbound_result_func;\n            Py_INCREF(result_func);\n        }\n    }\n    Py_DECREF(signature);\n    Py_XDECREF(unbound_result_func);\n    return result_func;\n}\nstatic PyObject *\n__pyx_FusedFunction_callfunction(PyObject *func, PyObject *args, PyObject *kw)\n{\n     __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;\n    int static_specialized = (cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD &&\n                              !((__pyx_FusedFunctionObject *) func)->__signatures__);\n    if (cyfunc->flags & __Pyx_CYFUNCTION_CCLASS && !static_specialized) {\n        return __Pyx_CyFunction_CallAsMethod(func, args, kw);\n    } else {\n        return __Pyx_CyFunction_Call(func, args, kw);\n    }\n}\nstatic PyObject *\n__pyx_FusedFunction_call(PyObject *func, PyObject *args, PyObject *kw)\n{\n    __pyx_FusedFunctionObject *binding_func = (__pyx_FusedFunctionObject *) func;\n    Py_ssize_t argc = PyTuple_GET_SIZE(args);\n    PyObject *new_args = NULL;\n    __pyx_FusedFunctionObject *new_func = NULL;\n    PyObject *result = NULL;\n    PyObject *self = NULL;\n    int is_staticmethod = binding_func->func.flags & __Pyx_CYFUNCTION_STATICMETHOD;\n    int is_classmethod = binding_func->func.flags & __Pyx_CYFUNCTION_CLASSMETHOD;\n    if (binding_func->self) {\n        Py_ssize_t i;\n        new_args = PyTuple_New(argc + 1);\n        if (!new_args)\n            return NULL;\n        self = binding_func->self;\n#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)\n        Py_INCREF(self);\n#endif\n        Py_INCREF(self);\n        PyTuple_SET_ITEM(new_args, 0, self);\n        for (i = 0; i < argc; i++) {\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n            PyObject *item = PyTuple_GET_ITEM(args, i);\n            Py_INCREF(item);\n#else\n            PyObject *item = PySequence_ITEM(args, i);  if (unlikely(!item)) goto bad;\n#endif\n            PyTuple_SET_ITEM(new_args, i + 1, item);\n        }\n        args = new_args;\n    } else if (binding_func->type) {\n        if (argc < 1) {\n            PyErr_SetString(PyExc_TypeError, \"Need at least one argument, 0 given.\");\n            return NULL;\n        }\n#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS\n        self = PyTuple_GET_ITEM(args, 0);\n#else\n        self = PySequence_ITEM(args, 0);  if (unlikely(!self)) return NULL;\n#endif\n    }\n    if (self && !is_classmethod && !is_staticmethod) {\n        int is_instance = PyObject_IsInstance(self, binding_func->type);\n        if (unlikely(!is_instance)) {\n            PyErr_Format(PyExc_TypeError,\n                         \"First argument should be of type %.200s, got %.200s.\",\n                         ((PyTypeObject *) binding_func->type)->tp_name,\n                         self->ob_type->tp_name);\n            goto bad;\n        } else if (unlikely(is_instance == -1)) {\n            goto bad;\n        }\n    }\n#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)\n    Py_XDECREF(self);\n    self = NULL;\n#endif\n    if (binding_func->__signatures__) {\n        PyObject *tup;\n        if (is_staticmethod && binding_func->func.flags & __Pyx_CYFUNCTION_CCLASS) {\n            tup = PyTuple_Pack(3, args,\n                               kw == NULL ? Py_None : kw,\n                               binding_func->func.defaults_tuple);\n            if (unlikely(!tup)) goto bad;\n            new_func = (__pyx_FusedFunctionObject *) __Pyx_CyFunction_CallMethod(\n                func, binding_func->__signatures__, tup, NULL);\n        } else {\n            tup = PyTuple_Pack(4, binding_func->__signatures__, args,\n                               kw == NULL ? Py_None : kw,\n                               binding_func->func.defaults_tuple);\n            if (unlikely(!tup)) goto bad;\n            new_func = (__pyx_FusedFunctionObject *) __pyx_FusedFunction_callfunction(func, tup, NULL);\n        }\n        Py_DECREF(tup);\n        if (unlikely(!new_func))\n            goto bad;\n        Py_XINCREF(binding_func->func.func_classobj);\n        Py_CLEAR(new_func->func.func_classobj);\n        new_func->func.func_classobj = binding_func->func.func_classobj;\n        func = (PyObject *) new_func;\n    }\n    result = __pyx_FusedFunction_callfunction(func, args, kw);\nbad:\n#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)\n    Py_XDECREF(self);\n#endif\n    Py_XDECREF(new_args);\n    Py_XDECREF((PyObject *) new_func);\n    return result;\n}\nstatic PyMemberDef __pyx_FusedFunction_members[] = {\n    {(char *) \"__signatures__\",\n     T_OBJECT,\n     offsetof(__pyx_FusedFunctionObject, __signatures__),\n     READONLY,\n     0},\n    {0, 0, 0, 0, 0},\n};\nstatic PyMappingMethods __pyx_FusedFunction_mapping_methods = {\n    0,\n    (binaryfunc) __pyx_FusedFunction_getitem,\n    0,\n};\nstatic PyTypeObject __pyx_FusedFunctionType_type = {\n    PyVarObject_HEAD_INIT(0, 0)\n    \"fused_cython_function\",\n    sizeof(__pyx_FusedFunctionObject),\n    0,\n    (destructor) __pyx_FusedFunction_dealloc,\n    0,\n    0,\n    0,\n#if PY_MAJOR_VERSION < 3\n    0,\n#else\n    0,\n#endif\n    0,\n    0,\n    0,\n    &__pyx_FusedFunction_mapping_methods,\n    0,\n    (ternaryfunc) __pyx_FusedFunction_call,\n    0,\n    0,\n    0,\n    0,\n    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,\n    0,\n    (traverseproc) __pyx_FusedFunction_traverse,\n    (inquiry) __pyx_FusedFunction_clear,\n    0,\n    0,\n    0,\n    0,\n    0,\n    __pyx_FusedFunction_members,\n    __pyx_CyFunction_getsets,\n    &__pyx_CyFunctionType_type,\n    0,\n    __pyx_FusedFunction_descr_get,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n#if PY_VERSION_HEX >= 0x030400a1\n    0,\n#endif\n};\nstatic int __pyx_FusedFunction_init(void) {\n    __pyx_FusedFunctionType = __Pyx_FetchCommonType(&__pyx_FusedFunctionType_type);\n    if (__pyx_FusedFunctionType == NULL) {\n        return -1;\n    }\n    return 0;\n}\n\n/* CLineInTraceback */\n        #ifndef CYTHON_CLINE_IN_TRACEBACK\nstatic int __Pyx_CLineForTraceback(CYTHON_UNUSED PyThreadState *tstate, int c_line) {\n    PyObject *use_cline;\n    PyObject *ptype, *pvalue, *ptraceback;\n#if CYTHON_COMPILING_IN_CPYTHON\n    PyObject **cython_runtime_dict;\n#endif\n    if (unlikely(!__pyx_cython_runtime)) {\n        return c_line;\n    }\n    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);\n#if CYTHON_COMPILING_IN_CPYTHON\n    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime);\n    if (likely(cython_runtime_dict)) {\n      use_cline = __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_n_s_cline_in_traceback);\n    } else\n#endif\n    {\n      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback);\n      if (use_cline_obj) {\n        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;\n        Py_DECREF(use_cline_obj);\n      } else {\n        PyErr_Clear();\n        use_cline = NULL;\n      }\n    }\n    if (!use_cline) {\n        c_line = 0;\n        PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False);\n    }\n    else if (PyObject_Not(use_cline) != 0) {\n        c_line = 0;\n    }\n    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);\n    return c_line;\n}\n#endif\n\n/* CodeObjectCache */\n        static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {\n    int start = 0, mid = 0, end = count - 1;\n    if (end >= 0 && code_line > entries[end].code_line) {\n        return count;\n    }\n    while (start < end) {\n        mid = start + (end - start) / 2;\n        if (code_line < entries[mid].code_line) {\n            end = mid;\n        } else if (code_line > entries[mid].code_line) {\n             start = mid + 1;\n        } else {\n            return mid;\n        }\n    }\n    if (code_line <= entries[mid].code_line) {\n        return mid;\n    } else {\n        return mid + 1;\n    }\n}\nstatic PyCodeObject *__pyx_find_code_object(int code_line) {\n    PyCodeObject* code_object;\n    int pos;\n    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {\n        return NULL;\n    }\n    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);\n    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {\n        return NULL;\n    }\n    code_object = __pyx_code_cache.entries[pos].code_object;\n    Py_INCREF(code_object);\n    return code_object;\n}\nstatic void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {\n    int pos, i;\n    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;\n    if (unlikely(!code_line)) {\n        return;\n    }\n    if (unlikely(!entries)) {\n        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));\n        if (likely(entries)) {\n            __pyx_code_cache.entries = entries;\n            __pyx_code_cache.max_count = 64;\n            __pyx_code_cache.count = 1;\n            entries[0].code_line = code_line;\n            entries[0].code_object = code_object;\n            Py_INCREF(code_object);\n        }\n        return;\n    }\n    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);\n    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {\n        PyCodeObject* tmp = entries[pos].code_object;\n        entries[pos].code_object = code_object;\n        Py_DECREF(tmp);\n        return;\n    }\n    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {\n        int new_max = __pyx_code_cache.max_count + 64;\n        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(\n            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));\n        if (unlikely(!entries)) {\n            return;\n        }\n        __pyx_code_cache.entries = entries;\n        __pyx_code_cache.max_count = new_max;\n    }\n    for (i=__pyx_code_cache.count; i>pos; i--) {\n        entries[i] = entries[i-1];\n    }\n    entries[pos].code_line = code_line;\n    entries[pos].code_object = code_object;\n    __pyx_code_cache.count++;\n    Py_INCREF(code_object);\n}\n\n/* AddTraceback */\n        #include \"compile.h\"\n#include \"frameobject.h\"\n#include \"traceback.h\"\nstatic PyCodeObject* __Pyx_CreateCodeObjectForTraceback(\n            const char *funcname, int c_line,\n            int py_line, const char *filename) {\n    PyCodeObject *py_code = 0;\n    PyObject *py_srcfile = 0;\n    PyObject *py_funcname = 0;\n    #if PY_MAJOR_VERSION < 3\n    py_srcfile = PyString_FromString(filename);\n    #else\n    py_srcfile = PyUnicode_FromString(filename);\n    #endif\n    if (!py_srcfile) goto bad;\n    if (c_line) {\n        #if PY_MAJOR_VERSION < 3\n        py_funcname = PyString_FromFormat( \"%s (%s:%d)\", funcname, __pyx_cfilenm, c_line);\n        #else\n        py_funcname = PyUnicode_FromFormat( \"%s (%s:%d)\", funcname, __pyx_cfilenm, c_line);\n        #endif\n    }\n    else {\n        #if PY_MAJOR_VERSION < 3\n        py_funcname = PyString_FromString(funcname);\n        #else\n        py_funcname = PyUnicode_FromString(funcname);\n        #endif\n    }\n    if (!py_funcname) goto bad;\n    py_code = __Pyx_PyCode_New(\n        0,\n        0,\n        0,\n        0,\n        0,\n        __pyx_empty_bytes, /*PyObject *code,*/\n        __pyx_empty_tuple, /*PyObject *consts,*/\n        __pyx_empty_tuple, /*PyObject *names,*/\n        __pyx_empty_tuple, /*PyObject *varnames,*/\n        __pyx_empty_tuple, /*PyObject *freevars,*/\n        __pyx_empty_tuple, /*PyObject *cellvars,*/\n        py_srcfile,   /*PyObject *filename,*/\n        py_funcname,  /*PyObject *name,*/\n        py_line,\n        __pyx_empty_bytes  /*PyObject *lnotab*/\n    );\n    Py_DECREF(py_srcfile);\n    Py_DECREF(py_funcname);\n    return py_code;\nbad:\n    Py_XDECREF(py_srcfile);\n    Py_XDECREF(py_funcname);\n    return NULL;\n}\nstatic void __Pyx_AddTraceback(const char *funcname, int c_line,\n                               int py_line, const char *filename) {\n    PyCodeObject *py_code = 0;\n    PyFrameObject *py_frame = 0;\n    PyThreadState *tstate = __Pyx_PyThreadState_Current;\n    if (c_line) {\n        c_line = __Pyx_CLineForTraceback(tstate, c_line);\n    }\n    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);\n    if (!py_code) {\n        py_code = __Pyx_CreateCodeObjectForTraceback(\n            funcname, c_line, py_line, filename);\n        if (!py_code) goto bad;\n        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);\n    }\n    py_frame = PyFrame_New(\n        tstate,            /*PyThreadState *tstate,*/\n        py_code,           /*PyCodeObject *code,*/\n        __pyx_d,    /*PyObject *globals,*/\n        0                  /*PyObject *locals*/\n    );\n    if (!py_frame) goto bad;\n    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);\n    PyTraceBack_Here(py_frame);\nbad:\n    Py_XDECREF(py_code);\n    Py_XDECREF(py_frame);\n}\n\n/* CIntToPy */\n        static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {\n    const long neg_one = (long) -1, const_zero = (long) 0;\n    const int is_unsigned = neg_one > const_zero;\n    if (is_unsigned) {\n        if (sizeof(long) < sizeof(long)) {\n            return PyInt_FromLong((long) value);\n        } else if (sizeof(long) <= sizeof(unsigned long)) {\n            return PyLong_FromUnsignedLong((unsigned long) value);\n#ifdef HAVE_LONG_LONG\n        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {\n            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);\n#endif\n        }\n    } else {\n        if (sizeof(long) <= sizeof(long)) {\n            return PyInt_FromLong((long) value);\n#ifdef HAVE_LONG_LONG\n        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {\n            return PyLong_FromLongLong((PY_LONG_LONG) value);\n#endif\n        }\n    }\n    {\n        int one = 1; int little = (int)*(unsigned char *)&one;\n        unsigned char *bytes = (unsigned char *)&value;\n        return _PyLong_FromByteArray(bytes, sizeof(long),\n                                     little, !is_unsigned);\n    }\n}\n\n/* CIntFromPyVerify */\n        #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\\\n    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)\n#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\\\n    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)\n#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\\\n    {\\\n        func_type value = func_value;\\\n        if (sizeof(target_type) < sizeof(func_type)) {\\\n            if (unlikely(value != (func_type) (target_type) value)) {\\\n                func_type zero = 0;\\\n                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\\\n                    return (target_type) -1;\\\n                if (is_unsigned && unlikely(value < zero))\\\n                    goto raise_neg_overflow;\\\n                else\\\n                    goto raise_overflow;\\\n            }\\\n        }\\\n        return (target_type) value;\\\n    }\n\n/* Import */\n        static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {\n    PyObject *empty_list = 0;\n    PyObject *module = 0;\n    PyObject *global_dict = 0;\n    PyObject *empty_dict = 0;\n    PyObject *list;\n    #if PY_MAJOR_VERSION < 3\n    PyObject *py_import;\n    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);\n    if (!py_import)\n        goto bad;\n    #endif\n    if (from_list)\n        list = from_list;\n    else {\n        empty_list = PyList_New(0);\n        if (!empty_list)\n            goto bad;\n        list = empty_list;\n    }\n    global_dict = PyModule_GetDict(__pyx_m);\n    if (!global_dict)\n        goto bad;\n    empty_dict = PyDict_New();\n    if (!empty_dict)\n        goto bad;\n    {\n        #if PY_MAJOR_VERSION >= 3\n        if (level == -1) {\n            if (strchr(__Pyx_MODULE_NAME, '.')) {\n                module = PyImport_ImportModuleLevelObject(\n                    name, global_dict, empty_dict, list, 1);\n                if (!module) {\n                    if (!PyErr_ExceptionMatches(PyExc_ImportError))\n                        goto bad;\n                    PyErr_Clear();\n                }\n            }\n            level = 0;\n        }\n        #endif\n        if (!module) {\n            #if PY_MAJOR_VERSION < 3\n            PyObject *py_level = PyInt_FromLong(level);\n            if (!py_level)\n                goto bad;\n            module = PyObject_CallFunctionObjArgs(py_import,\n                name, global_dict, empty_dict, list, py_level, NULL);\n            Py_DECREF(py_level);\n            #else\n            module = PyImport_ImportModuleLevelObject(\n                name, global_dict, empty_dict, list, level);\n            #endif\n        }\n    }\nbad:\n    #if PY_MAJOR_VERSION < 3\n    Py_XDECREF(py_import);\n    #endif\n    Py_XDECREF(empty_list);\n    Py_XDECREF(empty_dict);\n    return module;\n}\n\n/* CIntFromPy */\n        static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {\n    const long neg_one = (long) -1, const_zero = (long) 0;\n    const int is_unsigned = neg_one > const_zero;\n#if PY_MAJOR_VERSION < 3\n    if (likely(PyInt_Check(x))) {\n        if (sizeof(long) < sizeof(long)) {\n            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))\n        } else {\n            long val = PyInt_AS_LONG(x);\n            if (is_unsigned && unlikely(val < 0)) {\n                goto raise_neg_overflow;\n            }\n            return (long) val;\n        }\n    } else\n#endif\n    if (likely(PyLong_Check(x))) {\n        if (is_unsigned) {\n#if CYTHON_USE_PYLONG_INTERNALS\n            const digit* digits = ((PyLongObject*)x)->ob_digit;\n            switch (Py_SIZE(x)) {\n                case  0: return (long) 0;\n                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])\n                case 2:\n                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {\n                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));\n                        }\n                    }\n                    break;\n                case 3:\n                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {\n                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));\n                        }\n                    }\n                    break;\n                case 4:\n                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {\n                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));\n                        }\n                    }\n                    break;\n            }\n#endif\n#if CYTHON_COMPILING_IN_CPYTHON\n            if (unlikely(Py_SIZE(x) < 0)) {\n                goto raise_neg_overflow;\n            }\n#else\n            {\n                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);\n                if (unlikely(result < 0))\n                    return (long) -1;\n                if (unlikely(result == 1))\n                    goto raise_neg_overflow;\n            }\n#endif\n            if (sizeof(long) <= sizeof(unsigned long)) {\n                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))\n#ifdef HAVE_LONG_LONG\n            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {\n                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))\n#endif\n            }\n        } else {\n#if CYTHON_USE_PYLONG_INTERNALS\n            const digit* digits = ((PyLongObject*)x)->ob_digit;\n            switch (Py_SIZE(x)) {\n                case  0: return (long) 0;\n                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, (sdigit) (-(sdigit)digits[0]))\n                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])\n                case -2:\n                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {\n                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n                case 2:\n                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {\n                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n                case -3:\n                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {\n                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n                case 3:\n                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {\n                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n                case -4:\n                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {\n                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n                case 4:\n                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {\n                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));\n                        }\n                    }\n                    break;\n            }\n#endif\n            if (sizeof(long) <= sizeof(long)) {\n                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))\n#ifdef HAVE_LONG_LONG\n            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {\n                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))\n#endif\n            }\n        }\n        {\n#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)\n            PyErr_SetString(PyExc_RuntimeError,\n                            \"_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers\");\n#else\n            long val;\n            PyObject *v = __Pyx_PyNumber_IntOrLong(x);\n #if PY_MAJOR_VERSION < 3\n            if (likely(v) && !PyLong_Check(v)) {\n                PyObject *tmp = v;\n                v = PyNumber_Long(tmp);\n                Py_DECREF(tmp);\n            }\n #endif\n            if (likely(v)) {\n                int one = 1; int is_little = (int)*(unsigned char *)&one;\n                unsigned char *bytes = (unsigned char *)&val;\n                int ret = _PyLong_AsByteArray((PyLongObject *)v,\n                                              bytes, sizeof(val),\n                                              is_little, !is_unsigned);\n                Py_DECREF(v);\n                if (likely(!ret))\n                    return val;\n            }\n#endif\n            return (long) -1;\n        }\n    } else {\n        long val;\n        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);\n        if (!tmp) return (long) -1;\n        val = __Pyx_PyInt_As_long(tmp);\n        Py_DECREF(tmp);\n        return val;\n    }\nraise_overflow:\n    PyErr_SetString(PyExc_OverflowError,\n        \"value too large to convert to long\");\n    return (long) -1;\nraise_neg_overflow:\n    PyErr_SetString(PyExc_OverflowError,\n        \"can't convert negative value to long\");\n    return (long) -1;\n}\n\n/* ImportNumPyArray */\n        static PyObject* __Pyx__ImportNumPyArray(void) {\n    PyObject *numpy_module, *ndarray_object = NULL;\n    numpy_module = __Pyx_Import(__pyx_n_s_numpy, NULL, 0);\n    if (likely(numpy_module)) {\n        ndarray_object = PyObject_GetAttrString(numpy_module, \"ndarray\");\n        Py_DECREF(numpy_module);\n    }\n    if (unlikely(!ndarray_object)) {\n        PyErr_Clear();\n    }\n    if (unlikely(!ndarray_object || !PyObject_TypeCheck(ndarray_object, &PyType_Type))) {\n        Py_XDECREF(ndarray_object);\n        Py_INCREF(Py_None);\n        ndarray_object = Py_None;\n    }\n    return ndarray_object;\n}\nstatic CYTHON_INLINE PyObject* __Pyx_ImportNumPyArrayTypeIfAvailable(void) {\n    if (unlikely(!__pyx_numpy_ndarray)) {\n        __pyx_numpy_ndarray = __Pyx__ImportNumPyArray();\n    }\n    Py_INCREF(__pyx_numpy_ndarray);\n    return __pyx_numpy_ndarray;\n}\n\n/* CIntFromPy */\n        static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {\n    const int neg_one = (int) -1, const_zero = (int) 0;\n    const int is_unsigned = neg_one > const_zero;\n#if PY_MAJOR_VERSION < 3\n    if (likely(PyInt_Check(x))) {\n        if (sizeof(int) < sizeof(long)) {\n            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))\n        } else {\n            long val = PyInt_AS_LONG(x);\n            if (is_unsigned && unlikely(val < 0)) {\n                goto raise_neg_overflow;\n            }\n            return (int) val;\n        }\n    } else\n#endif\n    if (likely(PyLong_Check(x))) {\n        if (is_unsigned) {\n#if CYTHON_USE_PYLONG_INTERNALS\n            const digit* digits = ((PyLongObject*)x)->ob_digit;\n            switch (Py_SIZE(x)) {\n                case  0: return (int) 0;\n                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])\n                case 2:\n                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {\n                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));\n                        }\n                    }\n                    break;\n                case 3:\n                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {\n                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));\n                        }\n                    }\n                    break;\n                case 4:\n                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {\n                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));\n                        }\n                    }\n                    break;\n            }\n#endif\n#if CYTHON_COMPILING_IN_CPYTHON\n            if (unlikely(Py_SIZE(x) < 0)) {\n                goto raise_neg_overflow;\n            }\n#else\n            {\n                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);\n                if (unlikely(result < 0))\n                    return (int) -1;\n                if (unlikely(result == 1))\n                    goto raise_neg_overflow;\n            }\n#endif\n            if (sizeof(int) <= sizeof(unsigned long)) {\n                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))\n#ifdef HAVE_LONG_LONG\n            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {\n                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))\n#endif\n            }\n        } else {\n#if CYTHON_USE_PYLONG_INTERNALS\n            const digit* digits = ((PyLongObject*)x)->ob_digit;\n            switch (Py_SIZE(x)) {\n                case  0: return (int) 0;\n                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, (sdigit) (-(sdigit)digits[0]))\n                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])\n                case -2:\n                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {\n                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n                case 2:\n                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {\n                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n                case -3:\n                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {\n                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n                case 3:\n                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {\n                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n                case -4:\n                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {\n                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n                case 4:\n                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {\n                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {\n                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))\n                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {\n                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));\n                        }\n                    }\n                    break;\n            }\n#endif\n            if (sizeof(int) <= sizeof(long)) {\n                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))\n#ifdef HAVE_LONG_LONG\n            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {\n                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))\n#endif\n            }\n        }\n        {\n#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)\n            PyErr_SetString(PyExc_RuntimeError,\n                            \"_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers\");\n#else\n            int val;\n            PyObject *v = __Pyx_PyNumber_IntOrLong(x);\n #if PY_MAJOR_VERSION < 3\n            if (likely(v) && !PyLong_Check(v)) {\n                PyObject *tmp = v;\n                v = PyNumber_Long(tmp);\n                Py_DECREF(tmp);\n            }\n #endif\n            if (likely(v)) {\n                int one = 1; int is_little = (int)*(unsigned char *)&one;\n                unsigned char *bytes = (unsigned char *)&val;\n                int ret = _PyLong_AsByteArray((PyLongObject *)v,\n                                              bytes, sizeof(val),\n                                              is_little, !is_unsigned);\n                Py_DECREF(v);\n                if (likely(!ret))\n                    return val;\n            }\n#endif\n            return (int) -1;\n        }\n    } else {\n        int val;\n        PyObject *tmp = __Pyx_PyNumber_IntOrLong(x);\n        if (!tmp) return (int) -1;\n        val = __Pyx_PyInt_As_int(tmp);\n        Py_DECREF(tmp);\n        return val;\n    }\nraise_overflow:\n    PyErr_SetString(PyExc_OverflowError,\n        \"value too large to convert to int\");\n    return (int) -1;\nraise_neg_overflow:\n    PyErr_SetString(PyExc_OverflowError,\n        \"can't convert negative value to int\");\n    return (int) -1;\n}\n\n/* FastTypeChecks */\n        #if CYTHON_COMPILING_IN_CPYTHON\nstatic int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {\n    while (a) {\n        a = a->tp_base;\n        if (a == b)\n            return 1;\n    }\n    return b == &PyBaseObject_Type;\n}\nstatic CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {\n    PyObject *mro;\n    if (a == b) return 1;\n    mro = a->tp_mro;\n    if (likely(mro)) {\n        Py_ssize_t i, n;\n        n = PyTuple_GET_SIZE(mro);\n        for (i = 0; i < n; i++) {\n            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)\n                return 1;\n        }\n        return 0;\n    }\n    return __Pyx_InBases(a, b);\n}\n#if PY_MAJOR_VERSION == 2\nstatic int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject* exc_type2) {\n    PyObject *exception, *value, *tb;\n    int res;\n    __Pyx_PyThreadState_declare\n    __Pyx_PyThreadState_assign\n    __Pyx_ErrFetch(&exception, &value, &tb);\n    res = exc_type1 ? PyObject_IsSubclass(err, exc_type1) : 0;\n    if (unlikely(res == -1)) {\n        PyErr_WriteUnraisable(err);\n        res = 0;\n    }\n    if (!res) {\n        res = PyObject_IsSubclass(err, exc_type2);\n        if (unlikely(res == -1)) {\n            PyErr_WriteUnraisable(err);\n            res = 0;\n        }\n    }\n    __Pyx_ErrRestore(exception, value, tb);\n    return res;\n}\n#else\nstatic CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {\n    int res = exc_type1 ? __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type1) : 0;\n    if (!res) {\n        res = __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);\n    }\n    return res;\n}\n#endif\nstatic int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {\n    Py_ssize_t i, n;\n    assert(PyExceptionClass_Check(exc_type));\n    n = PyTuple_GET_SIZE(tuple);\n#if PY_MAJOR_VERSION >= 3\n    for (i=0; i<n; i++) {\n        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;\n    }\n#endif\n    for (i=0; i<n; i++) {\n        PyObject *t = PyTuple_GET_ITEM(tuple, i);\n        #if PY_MAJOR_VERSION < 3\n        if (likely(exc_type == t)) return 1;\n        #endif\n        if (likely(PyExceptionClass_Check(t))) {\n            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;\n        } else {\n        }\n    }\n    return 0;\n}\nstatic CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {\n    if (likely(err == exc_type)) return 1;\n    if (likely(PyExceptionClass_Check(err))) {\n        if (likely(PyExceptionClass_Check(exc_type))) {\n            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);\n        } else if (likely(PyTuple_Check(exc_type))) {\n            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);\n        } else {\n        }\n    }\n    return PyErr_GivenExceptionMatches(err, exc_type);\n}\nstatic CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {\n    assert(PyExceptionClass_Check(exc_type1));\n    assert(PyExceptionClass_Check(exc_type2));\n    if (likely(err == exc_type1 || err == exc_type2)) return 1;\n    if (likely(PyExceptionClass_Check(err))) {\n        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);\n    }\n    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));\n}\n#endif\n\n/* CheckBinaryVersion */\n        static int __Pyx_check_binary_version(void) {\n    char ctversion[4], rtversion[4];\n    PyOS_snprintf(ctversion, 4, \"%d.%d\", PY_MAJOR_VERSION, PY_MINOR_VERSION);\n    PyOS_snprintf(rtversion, 4, \"%s\", Py_GetVersion());\n    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {\n        char message[200];\n        PyOS_snprintf(message, sizeof(message),\n                      \"compile time version %s of module '%.100s' \"\n                      \"does not match runtime version %s\",\n                      ctversion, __Pyx_MODULE_NAME, rtversion);\n        return PyErr_WarnEx(NULL, message, 1);\n    }\n    return 0;\n}\n\n/* InitStrings */\n        static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {\n    while (t->p) {\n        #if PY_MAJOR_VERSION < 3\n        if (t->is_unicode) {\n            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);\n        } else if (t->intern) {\n            *t->p = PyString_InternFromString(t->s);\n        } else {\n            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);\n        }\n        #else\n        if (t->is_unicode | t->is_str) {\n            if (t->intern) {\n                *t->p = PyUnicode_InternFromString(t->s);\n            } else if (t->encoding) {\n                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);\n            } else {\n                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);\n            }\n        } else {\n            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);\n        }\n        #endif\n        if (!*t->p)\n            return -1;\n        if (PyObject_Hash(*t->p) == -1)\n            return -1;\n        ++t;\n    }\n    return 0;\n}\n\nstatic CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {\n    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));\n}\nstatic CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {\n    Py_ssize_t ignore;\n    return __Pyx_PyObject_AsStringAndSize(o, &ignore);\n}\n#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT\n#if !CYTHON_PEP393_ENABLED\nstatic const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {\n    char* defenc_c;\n    PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);\n    if (!defenc) return NULL;\n    defenc_c = PyBytes_AS_STRING(defenc);\n#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII\n    {\n        char* end = defenc_c + PyBytes_GET_SIZE(defenc);\n        char* c;\n        for (c = defenc_c; c < end; c++) {\n            if ((unsigned char) (*c) >= 128) {\n                PyUnicode_AsASCIIString(o);\n                return NULL;\n            }\n        }\n    }\n#endif\n    *length = PyBytes_GET_SIZE(defenc);\n    return defenc_c;\n}\n#else\nstatic CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {\n    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;\n#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII\n    if (likely(PyUnicode_IS_ASCII(o))) {\n        *length = PyUnicode_GET_LENGTH(o);\n        return PyUnicode_AsUTF8(o);\n    } else {\n        PyUnicode_AsASCIIString(o);\n        return NULL;\n    }\n#else\n    return PyUnicode_AsUTF8AndSize(o, length);\n#endif\n}\n#endif\n#endif\nstatic CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {\n#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT\n    if (\n#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII\n            __Pyx_sys_getdefaultencoding_not_ascii &&\n#endif\n            PyUnicode_Check(o)) {\n        return __Pyx_PyUnicode_AsStringAndSize(o, length);\n    } else\n#endif\n#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))\n    if (PyByteArray_Check(o)) {\n        *length = PyByteArray_GET_SIZE(o);\n        return PyByteArray_AS_STRING(o);\n    } else\n#endif\n    {\n        char* result;\n        int r = PyBytes_AsStringAndSize(o, &result, length);\n        if (unlikely(r < 0)) {\n            return NULL;\n        } else {\n            return result;\n        }\n    }\n}\nstatic CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {\n   int is_true = x == Py_True;\n   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;\n   else return PyObject_IsTrue(x);\n}\nstatic PyObject* __Pyx_PyNumber_IntOrLongWrongResultType(PyObject* result, const char* type_name) {\n#if PY_MAJOR_VERSION >= 3\n    if (PyLong_Check(result)) {\n        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,\n                \"__int__ returned non-int (type %.200s).  \"\n                \"The ability to return an instance of a strict subclass of int \"\n                \"is deprecated, and may be removed in a future version of Python.\",\n                Py_TYPE(result)->tp_name)) {\n            Py_DECREF(result);\n            return NULL;\n        }\n        return result;\n    }\n#endif\n    PyErr_Format(PyExc_TypeError,\n                 \"__%.4s__ returned non-%.4s (type %.200s)\",\n                 type_name, type_name, Py_TYPE(result)->tp_name);\n    Py_DECREF(result);\n    return NULL;\n}\nstatic CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x) {\n#if CYTHON_USE_TYPE_SLOTS\n  PyNumberMethods *m;\n#endif\n  const char *name = NULL;\n  PyObject *res = NULL;\n#if PY_MAJOR_VERSION < 3\n  if (likely(PyInt_Check(x) || PyLong_Check(x)))\n#else\n  if (likely(PyLong_Check(x)))\n#endif\n    return __Pyx_NewRef(x);\n#if CYTHON_USE_TYPE_SLOTS\n  m = Py_TYPE(x)->tp_as_number;\n  #if PY_MAJOR_VERSION < 3\n  if (m && m->nb_int) {\n    name = \"int\";\n    res = m->nb_int(x);\n  }\n  else if (m && m->nb_long) {\n    name = \"long\";\n    res = m->nb_long(x);\n  }\n  #else\n  if (likely(m && m->nb_int)) {\n    name = \"int\";\n    res = m->nb_int(x);\n  }\n  #endif\n#else\n  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {\n    res = PyNumber_Int(x);\n  }\n#endif\n  if (likely(res)) {\n#if PY_MAJOR_VERSION < 3\n    if (unlikely(!PyInt_Check(res) && !PyLong_Check(res))) {\n#else\n    if (unlikely(!PyLong_CheckExact(res))) {\n#endif\n        return __Pyx_PyNumber_IntOrLongWrongResultType(res, name);\n    }\n  }\n  else if (!PyErr_Occurred()) {\n    PyErr_SetString(PyExc_TypeError,\n                    \"an integer is required\");\n  }\n  return res;\n}\nstatic CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {\n  Py_ssize_t ival;\n  PyObject *x;\n#if PY_MAJOR_VERSION < 3\n  if (likely(PyInt_CheckExact(b))) {\n    if (sizeof(Py_ssize_t) >= sizeof(long))\n        return PyInt_AS_LONG(b);\n    else\n        return PyInt_AsSsize_t(x);\n  }\n#endif\n  if (likely(PyLong_CheckExact(b))) {\n    #if CYTHON_USE_PYLONG_INTERNALS\n    const digit* digits = ((PyLongObject*)b)->ob_digit;\n    const Py_ssize_t size = Py_SIZE(b);\n    if (likely(__Pyx_sst_abs(size) <= 1)) {\n        ival = likely(size) ? digits[0] : 0;\n        if (size == -1) ival = -ival;\n        return ival;\n    } else {\n      switch (size) {\n         case 2:\n           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {\n             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n         case -2:\n           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {\n             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n         case 3:\n           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {\n             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n         case -3:\n           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {\n             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n         case 4:\n           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {\n             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n         case -4:\n           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {\n             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));\n           }\n           break;\n      }\n    }\n    #endif\n    return PyLong_AsSsize_t(b);\n  }\n  x = PyNumber_Index(b);\n  if (!x) return -1;\n  ival = PyInt_AsSsize_t(x);\n  Py_DECREF(x);\n  return ival;\n}\nstatic CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {\n  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);\n}\nstatic CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {\n    return PyInt_FromSize_t(ival);\n}\n\n\n#endif /* Py_PYTHON_H */\n"
  },
  {
    "path": "ci/testdata/cython_test.pyx",
    "content": "\"\"\" simple test file for cython source mapping: defines a function\nthat uses newtowns method to compute the square root of a number \"\"\"\n\nfrom cython cimport floating\n\ncpdef sqrt(floating value):\n    # solve for the square root of value by finding the zeros of\n    #   'x * x - value = 0' using newtons method\n    cdef double x = value / 2\n    for _ in range(8):\n        x -= (x * x - value) / (2 * x)\n    return x\n"
  },
  {
    "path": "ci/update_python_test_versions.py",
    "content": "from collections import defaultdict\nimport requests\nimport pathlib\nimport yaml\nimport re\n\n\n_VERSIONS_URL = \"https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json\"  # noqa\n\n\ndef parse_version(v):\n    return tuple(int(part) for part in re.split(r\"\\W\", v)[:3])\n\n\ndef get_github_python_versions():\n    versions_json = requests.get(_VERSIONS_URL).json()\n\n    # windows platform support isn't great for older versions of python\n    # get a map of version: platform/arch so we can exclude here\n    platforms = {}\n    for v in versions_json:\n        version_platforms = set()\n        for f in v[\"files\"]:\n            platform, arch = f[\"platform\"], f[\"arch\"]\n            if platform == \"linux\" and f.get(\"platform_version\") != \"22.04\":\n                continue\n            version_platforms.add((platform, arch))\n        platforms[v[\"version\"]] = version_platforms\n\n    raw_versions = [v[\"version\"] for v in versions_json]\n    minor_versions = defaultdict(list)\n\n    for version_str in raw_versions:\n        if \"-\" in version_str:\n            continue\n\n        major, minor, patch = parse_version(version_str)\n        if major == 3 and minor < 6:\n            # we don't support python 3.0/3.1/3.2 , and don't bother testing 3.3/3.4/3.5\n            continue\n\n        elif major == 2 and minor < 7:\n            # we don't test python support before 2.7\n            continue\n        minor_versions[(major, minor)].append(patch)\n\n    versions = []\n    for (major, minor), patches in minor_versions.items():\n        patches.sort()\n\n        # for older versions of python, don't test all patches\n        # (just test first and last) to keep the test matrix down\n        if major == 2 or minor <= 11:\n            patches = [patches[0], patches[-1]]\n\n        if major == 3 and minor > 13:\n            continue\n\n        versions.extend(f\"{major}.{minor}.{patch}\" for patch in patches)\n\n    return versions, platforms\n\n\ndef update_python_test_versions():\n    versions, platforms = get_github_python_versions()\n    versions = sorted(versions, key=parse_version)\n\n    build_yml_path = (\n        pathlib.Path(__file__).parent.parent / \".github\" / \"workflows\" / \"build.yml\"\n    )\n\n    build_yml = yaml.safe_load(open(build_yml_path))\n    test_matrix = build_yml[\"jobs\"][\"test-wheels\"][\"strategy\"][\"matrix\"]\n    existing_python_versions = test_matrix[\"python-version\"]\n    if versions == existing_python_versions:\n        return\n\n    print(\"Adding new versions\")\n    print(\"Old:\", existing_python_versions)\n    print(\"New:\", versions)\n\n    # we can't use the yaml package to update the GHA script, since\n    # the data in build_yml is treated as an unordered dictionary.\n    # instead modify the file in place\n    lines = list(open(build_yml_path))\n    first_line = lines.index(\n        \"      # automatically generated by ci/update_python_test_versions.py\\n\"\n    )\n\n    first_version_line = lines.index(\"          [\\n\", first_line)\n    last_version_line = lines.index(\"          ]\\n\", first_version_line)\n    new_versions = [f\"            {v},\\n\" for v in versions]\n    lines = lines[: first_version_line + 1] + new_versions + lines[last_version_line:]\n\n    # also automatically exclude >= v3.11.* from running on OSX,\n    # since it currently fails in GHA on SIP errors\n    exclusions = []\n    for v in versions:\n        # if we don't have a python version for osx/windows skip\n        if (\"darwin\", \"x64\") not in platforms[v] or v.startswith(\"3.12\"):\n            exclusions.append(\"          - os: macos-13\\n\")\n            exclusions.append(f\"            python-version: {v}\\n\")\n\n        if (\"win32\", \"x64\") not in platforms[v]:\n            exclusions.append(\"          - os: windows-latest\\n\")\n            exclusions.append(f\"            python-version: {v}\\n\")\n\n        if (\"linux\", \"x64\") not in platforms[v]:\n            exclusions.append(\"          - os: ubuntu-22.04\\n\")\n            exclusions.append(f\"            python-version: {v}\\n\")\n\n        if (\"linux\", \"arm64\") not in platforms[v]:\n            exclusions.append(\"          - os: ubuntu-22.04-arm\\n\")\n            exclusions.append(f\"            python-version: {v}\\n\")\n\n    first_exclude_line = lines.index(\"        exclude:\\n\", first_line)\n    last_exclude_line = lines.index(\"\\n\", first_exclude_line)\n    lines = lines[: first_exclude_line + 1] + exclusions + lines[last_exclude_line:]\n\n    with open(build_yml_path, \"w\") as o:\n        o.write(\"\".join(lines))\n\n\nif __name__ == \"__main__\":\n    update_python_test_versions()\n"
  },
  {
    "path": "examples/dump_traces.rs",
    "content": "use log::error;\n\n// Simple example of showing how to use the rust API to\n// print out stack traces from a python program\n\nfn print_python_stacks(pid: remoteprocess::Pid) -> Result<(), anyhow::Error> {\n    // Create a new PythonSpy object with the default config options\n    let config = py_spy::Config::default();\n    let mut process = py_spy::PythonSpy::new(pid, &config)?;\n\n    // get stack traces for each thread in the process\n    let traces = process.get_stack_traces()?;\n\n    // Print out the python stack for each thread\n    for trace in traces {\n        println!(\"Thread {:#X} ({})\", trace.thread_id, trace.status_str());\n        for frame in &trace.frames {\n            println!(\"\\t {} ({}:{})\", frame.name, frame.filename, frame.line);\n        }\n    }\n    Ok(())\n}\n\nfn main() {\n    env_logger::init();\n    let args: Vec<String> = std::env::args().collect();\n    let pid = if args.len() > 1 {\n        args[1].parse().expect(\"invalid pid\")\n    } else {\n        error!(\"you must specify a pid!\");\n        return;\n    };\n\n    if let Err(e) = print_python_stacks(pid) {\n        error!(\"failed to print stack traces: {:?}\", e);\n    }\n}\n"
  },
  {
    "path": "generate_bindings.py",
    "content": "\"\"\" Scripts to generate bindings of different python interpreter versions\n\nRequires bindgen to be installed (cargo install bindgen), and probably needs a nightly\ncompiler with rustfmt-nightly.\n\nAlso requires a git repo of cpython to be checked out somewhere. As a hack, this can\nalso build different versions of cpython for testing out\n\"\"\"\nimport argparse\nimport os\nimport sys\nimport tempfile\n\n\ndef build_python(cpython_path, version):\n    # TODO: probably easier to use pyenv for this?\n    print(\"Compiling python %s from repo at %s\" % (version, cpython_path))\n    install_path = os.path.abspath(os.path.join(cpython_path, version))\n\n    ret = os.system(\n        f\"\"\"\n        cd {cpython_path}\n        git checkout {version}\n\n        # build in a subdirectory\n        mkdir -p build_{version}\n        cd build_{version}\n        ../configure prefix={install_path}\n        make\n        make install\n    \"\"\"\n    )\n    if ret:\n        return ret\n\n    # also install setuptools_rust/wheel here for building packages\n    pip = os.path.join(install_path, \"bin\", \"pip3\" if version.startswith(\"v3\") else \"pip\")\n    return os.system(f\"{pip} install setuptools_rust wheel\")\n\n\ndef calculate_pyruntime_offsets(cpython_path, version, configure=False):\n    ret = os.system(f\"\"\"cd {cpython_path} && git checkout {version}\"\"\")\n    if ret:\n        return ret\n\n    if configure:\n        os.system(f\"cd {cpython_path} && ./configure prefix=\" + os.path.abspath(os.path.join(cpython_path, version)))\n\n    # simple little c program to get the offsets we need from the pyruntime struct\n    # (using rust bindgen here is more complicated than necessary)\n    program = r\"\"\"\n        #include <stddef.h>\n        #include <stdio.h>\n        #define Py_BUILD_CORE 1\n        #include \"Include/Python.h\"\n        #include \"Include/internal/pystate.h\"\n\n        int main(int argc, const char * argv[]) {\n            size_t interp_head = offsetof(_PyRuntimeState, interpreters.head);\n            printf(\"pub static INTERP_HEAD_OFFSET: usize = %i;\\n\", interp_head);\n\n            // tstate_current has been replaced by a thread-local variable in python 3.12\n            // size_t tstate_current = offsetof(_PyRuntimeState, gilstate.tstate_current);\n            // printf(\"pub static TSTATE_CURRENT: usize = %i;\\n\", tstate_current);\n        }\n    \"\"\"\n\n    if not os.path.isfile(os.path.join(cpython_path, \"Include\", \"internal\", \"pystate.h\")):\n        if os.path.isfile(os.path.join(cpython_path, \"Include\", \"internal\", \"pycore_pystate.h\")):\n            program = program.replace(\"pystate.h\", \"pycore_pystate.h\")\n        else:\n            print(\"failed to find Include/internal/pystate.h in cpython directory =(\")\n            return\n\n    with tempfile.TemporaryDirectory() as path:\n        if sys.platform.startswith(\"win\"):\n            source_filename = os.path.join(path, \"pyruntime_offsets.cpp\")\n            exe = os.path.join(\"pyruntime_offsets.exe\")\n        else:\n            source_filename = os.path.join(path, \"pyruntime_offsets.c\")\n            exe = os.path.join(path, \"pyruntime_offsets\")\n\n        with open(source_filename, \"w\") as o:\n            o.write(program)\n        if sys.platform.startswith(\"win\"):\n            # this requires a 'x64 Native Tools Command Prompt' to work out properly for 64 bit installs\n            # also expects that you have run something like 'PCBuild\\build.bat' first\n            ret = os.system(f\"cl {source_filename} /I {cpython_path} /I {cpython_path}\\PC /I {cpython_path}\\Include\")\n        elif sys.platform.startswith(\"freebsd\"):\n            ret = os.system(f\"\"\"cc {source_filename} -I {cpython_path} -I {cpython_path}/Include -o {exe}\"\"\")\n        else:\n            ret = os.system(f\"\"\"gcc {source_filename} -I {cpython_path} -I {cpython_path}/Include -o {exe}\"\"\")\n        if ret:\n            print(\"Failed to compile\")\n            return ret\n\n        ret = os.system(exe)\n        if ret:\n            print(\"Failed to run pyruntime file\")\n            return ret\n\n\ndef extract_bindings(cpython_path, version, configure=False):\n    print(\"Generating bindings for python %s from repo at %s\" % (version, cpython_path))\n\n    ret = os.system(\n        f\"\"\"\n        cd {cpython_path}\n        git checkout {version}\n\n        # need to run configure on the current branch to generate pyconfig.h sometimes\n        {(\"./configure prefix=\" + os.path.abspath(os.path.join(cpython_path, version))) if configure else \"\"}\n\n\n        echo \"// autogenerated by generate_bindings.py \" > bindgen_input.h\n        echo '#define Py_BUILD_CORE 1\\n' >> bindgen_input.h\n        cat Include/Python.h >> bindgen_input.h\n        echo '#undef HAVE_STD_ATOMIC' >> bindgen_input.h\n        cat Include/frameobject.h >> bindgen_input.h\n        cat Include/internal/pycore_interp.h >> bindgen_input.h\n        cat Include/internal/pycore_dict.h >> bindgen_input.h\n        cat Include/internal/pycore_frame.h >> bindgen_input.h\n\n        bindgen  bindgen_input.h -o bindgen_output.rs \\\n            --with-derive-default \\\n            --no-layout-tests --no-doc-comments \\\n            --allowlist-type PyInterpreterState \\\n            --allowlist-type PyFrameObject \\\n            --allowlist-type PyThreadState \\\n            --allowlist-type PyCodeObject \\\n            --allowlist-type PyVarObject \\\n            --allowlist-type PyBytesObject \\\n            --allowlist-type PyASCIIObject \\\n            --allowlist-type PyUnicodeObject \\\n            --allowlist-type PyCompactUnicodeObject \\\n            --allowlist-type PyTupleObject \\\n            --allowlist-type PyListObject \\\n            --allowlist-type PyLongObject \\\n            --allowlist-type PyFloatObject \\\n            --allowlist-type PyDictObject \\\n            --allowlist-type PyDictKeysObject \\\n            --allowlist-type PyDictUnicodeEntry \\\n            --allowlist-type PyObject \\\n            --allowlist-type PyTypeObject \\\n            --allowlist-type PyHeapTypeObject \\\n            --allowlist-type PyInterpreterFrame \\\n             -- -I . -I ./Include -I ./Include/internal\n    \"\"\"\n    )\n    if ret:\n        return ret\n\n    # write the file out to the appropriate place, disabling some warnings\n    with open(os.path.join(\"src\", \"python_bindings\", version.replace(\".\", \"_\") + \".rs\"), \"w\") as o:\n        o.write(f\"// Generated bindings for python {version}\\n\")\n        o.write(\"#![allow(dead_code)]\\n\")\n        o.write(\"#![allow(non_upper_case_globals)]\\n\")\n        o.write(\"#![allow(non_camel_case_types)]\\n\")\n        o.write(\"#![allow(non_snake_case)]\\n\")\n        o.write(\"#![allow(clippy::useless_transmute)]\\n\")\n        o.write(\"#![allow(clippy::default_trait_access)]\\n\")\n        o.write(\"#![allow(clippy::cast_lossless)]\\n\")\n        o.write(\"#![allow(clippy::trivially_copy_pass_by_ref)]\\n\")\n        o.write(\"#![allow(clippy::upper_case_acronyms)]\\n\")\n        o.write(\"#![allow(clippy::too_many_arguments)]\\n\\n\")\n\n        o.write(open(os.path.join(cpython_path, \"bindgen_output.rs\")).read())\n\n\nif __name__ == \"__main__\":\n    if sys.platform.startswith(\"win\"):\n        default_cpython_path = os.path.join(os.getenv(\"userprofile\"), \"code\", \"cpython\")\n    else:\n        default_cpython_path = os.path.join(os.getenv(\"HOME\"), \"code\", \"cpython\")\n\n    parser = argparse.ArgumentParser(\n        description=\"runs bindgen on cpython version\",\n        formatter_class=argparse.ArgumentDefaultsHelpFormatter,\n    )\n    parser.add_argument(\n        \"--cpython\",\n        type=str,\n        default=default_cpython_path,\n        dest=\"cpython\",\n        help=\"path to cpython repo\",\n    )\n    parser.add_argument(\n        \"--configure\",\n        help=\"Run configure script prior to generating bindings\",\n        action=\"store_true\",\n    )\n    parser.add_argument(\"--pyruntime\", help=\"generate offsets for pyruntime\", action=\"store_true\")\n    parser.add_argument(\"--build\", help=\"Build python for this version\", action=\"store_true\")\n    parser.add_argument(\"--all\", help=\"Build all versions\", action=\"store_true\")\n\n    parser.add_argument(\"versions\", type=str, nargs=\"*\", help=\"versions to extract\")\n\n    args = parser.parse_args()\n\n    if not os.path.isdir(args.cpython):\n        print(f\"Directory '{args.cpython}' doesn't exist!\")\n        print(\"Pass a valid cpython path in with --cpython <pathname>\")\n        sys.exit(1)\n\n    if args.all:\n        versions = [\n            \"v3.13.0\",\n            \"v3.12.0\",\n            \"v3.11.0\",\n            \"v3.10.0\",\n            \"v3.9.0\",\n            \"v3.8.0\",\n            \"v3.7.0\",\n            \"v3.6.6\",\n            \"v3.5.5\",\n            \"v3.4.8\",\n            \"v3.3.7\",\n            \"v3.2.6\",\n            \"v2.7.15\",\n        ]\n    else:\n        versions = args.versions\n        if not versions:\n            print(\"You must specify versions of cpython to generate bindings for, or --all\\n\")\n            parser.print_help()\n\n    for version in versions:\n        if args.build:\n            # todo: this probably should be a separate script\n            if build_python(args.cpython, version):\n                print(\"Failed to build python\")\n        elif args.pyruntime:\n            calculate_pyruntime_offsets(args.cpython, version, configure=args.configure)\n\n        else:\n            if extract_bindings(args.cpython, version, configure=args.configure):\n                print(\"Failed to generate bindings\")\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"maturin>=1.0,<2.0\"]\nbuild-backend = \"maturin\"\n\n[project]\nname = \"py-spy\"\nclassifiers = [\n\t\"Development Status :: 5 - Production/Stable\",\n\t\"Programming Language :: Python :: 3\",\n\t\"Programming Language :: Python :: 2\",\n\t\"Intended Audience :: Developers\",\n\t\"License :: OSI Approved :: MIT License\",\n\t\"Topic :: Software Development :: Libraries\",\n\t\"Topic :: Utilities\"\n]\ndynamic = [\"version\"]\n\n[project.optional-dependencies]\ntest = [\"numpy\"]\n\n[tool.maturin]\nbindings = \"bin\"\n\n[tool.codespell]\nignore-words-list = \"crate\"\nskip = \"./.git,./.github,./target,./ci/testdata,./images/\"\n"
  },
  {
    "path": "setup.cfg",
    "content": "[bumpversion]\ncurrent_version = 0.4.1\ncommit = True\ntag = True\nparse = (?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)((?P<release>(a|b|rc|\\.dev)\\d+))?\nserialize = \n\t{major}.{minor}.{patch}{release}\n\t{major}.{minor}.{patch}\n\n[bumpversion:file:Cargo.toml]\nsearch = name = \"py-spy\"\n\tversion = \"{current_version}\"\nreplace = name = \"py-spy\"\n\tversion = \"{new_version}\"\n\n[bumpversion:file:Cargo.lock]\nsearch = name = \"py-spy\"\n\tversion = \"{current_version}\"\nreplace = name = \"py-spy\"\n\tversion = \"{new_version}\"\n\n[flake8]\nmax-line-length = 100\nexclude = build,.eggs,.tox\n"
  },
  {
    "path": "src/binary_parser.rs",
    "content": "use std::collections::HashMap;\nuse std::fs::File;\nuse std::path::Path;\n\nuse anyhow::Error;\nuse goblin::Object;\nuse memmap2::Mmap;\n\nuse crate::utils::is_subrange;\n\npub struct BinaryInfo {\n    pub symbols: HashMap<String, u64>,\n    pub bss_addr: u64,\n    pub bss_size: u64,\n    pub pyruntime_addr: u64,\n    pub pyruntime_size: u64,\n    #[allow(dead_code)]\n    pub addr: u64,\n    #[allow(dead_code)]\n    pub size: u64,\n}\n\nimpl BinaryInfo {\n    #[cfg(feature = \"unwind\")]\n    pub fn contains(&self, addr: u64) -> bool {\n        addr >= self.addr && addr < (self.addr + self.size)\n    }\n}\n\n/// Uses goblin to parse a binary file, returns information on symbols/bss/adjusted offset etc\npub fn parse_binary(filename: &Path, addr: u64, size: u64) -> Result<BinaryInfo, Error> {\n    let offset = addr;\n\n    let mut symbols = HashMap::new();\n\n    // Read in the filename\n    let file = File::open(filename)?;\n    let buffer = unsafe { Mmap::map(&file)? };\n\n    // Use goblin to parse the binary\n    match Object::parse(&buffer)? {\n        Object::Mach(mach) => {\n            // Get the mach binary from the archive\n            let mach = match mach {\n                goblin::mach::Mach::Binary(mach) => mach,\n                goblin::mach::Mach::Fat(fat) => {\n                    let arch = fat\n                        .iter_arches()\n                        .find(|arch| match arch {\n                            Ok(arch) => arch.is_64(),\n                            Err(_) => false,\n                        })\n                        .ok_or_else(|| {\n                            format_err!(\n                                \"Failed to find 64 bit arch in FAT archive in {}\",\n                                filename.display()\n                            )\n                        })??;\n                    if !is_subrange(0, buffer.len(), arch.offset as usize, arch.size as usize) {\n                        return Err(format_err!(\n                            \"Invalid offset/size in FAT archive in {}\",\n                            filename.display()\n                        ));\n                    }\n                    let bytes = &buffer[arch.offset as usize..][..arch.size as usize];\n                    goblin::mach::MachO::parse(bytes, 0)?\n                }\n            };\n\n            let mut pyruntime_addr = 0;\n            let mut pyruntime_size = 0;\n            let mut bss_addr = 0;\n            let mut bss_size = 0;\n            for segment in mach.segments.iter() {\n                for (section, _) in &segment.sections()? {\n                    let name = section.name()?;\n                    if name == \"PyRuntime\" {\n                        if let Some(addr) = section.addr.checked_add(offset) {\n                            if addr.checked_add(section.size).is_some() {\n                                pyruntime_addr = addr;\n                                pyruntime_size = section.size;\n                            }\n                        }\n                    }\n\n                    if name == \"__bss\" {\n                        if let Some(addr) = section.addr.checked_add(offset) {\n                            if addr.checked_add(section.size).is_some() {\n                                bss_addr = addr;\n                                bss_size = section.size;\n                            }\n                        }\n                    }\n                }\n            }\n\n            if let Some(syms) = mach.symbols {\n                for symbol in syms.iter() {\n                    let (name, value) = symbol?;\n                    // almost every symbol we care about starts with an extra _, remove to normalize\n                    // with the entries seen on linux/windows\n                    if let Some(stripped_name) = name.strip_prefix('_') {\n                        symbols.insert(stripped_name.to_string(), value.n_value + offset);\n                    }\n                }\n            }\n            Ok(BinaryInfo {\n                symbols,\n                bss_addr,\n                bss_size,\n                pyruntime_addr,\n                pyruntime_size,\n                addr,\n                size,\n            })\n        }\n\n        Object::Elf(elf) => {\n            let strtab = elf.shdr_strtab;\n            let bss_header = elf\n                .section_headers\n                .iter()\n                // filter down to things that are both NOBITS sections and are named .bss\n                .filter(|header| header.sh_type == goblin::elf::section_header::SHT_NOBITS)\n                .filter(|header| {\n                    strtab\n                        .get_at(header.sh_name)\n                        .is_none_or(|name| name == \".bss\")\n                })\n                // if we have multiple sections here, take the largest\n                .max_by_key(|header| header.sh_size)\n                .ok_or_else(|| {\n                    format_err!(\n                        \"Failed to find BSS section header in {}\",\n                        filename.display()\n                    )\n                })?;\n\n            let program_header = elf\n                .program_headers\n                .iter()\n                .find(|header| {\n                    header.p_type == goblin::elf::program_header::PT_LOAD\n                        && header.p_flags & goblin::elf::program_header::PF_X != 0\n                })\n                .ok_or_else(|| {\n                    format_err!(\n                        \"Failed to find executable PT_LOAD program header in {}\",\n                        filename.display()\n                    )\n                })?;\n\n            // Align the virtual address offset, then subtract it from the offset\n            // to get real offset for symbol addresses in the file.\n            let aligned_vaddr =\n                program_header.p_vaddr - (program_header.p_vaddr % page_size::get() as u64);\n            let offset = offset.saturating_sub(aligned_vaddr);\n\n            let mut bss_addr = 0;\n            let mut bss_size = 0;\n            let mut bss_end = 0;\n            if let Some(addr) = bss_header.sh_addr.checked_add(offset) {\n                if bss_header.sh_size.checked_add(addr).is_none() {\n                    return Err(format_err!(\n                        \"Invalid bss address/size in {}\",\n                        filename.display()\n                    ));\n                }\n                bss_addr = addr;\n                bss_size = bss_header.sh_size;\n                bss_end = bss_header.sh_addr + bss_header.sh_size;\n            }\n\n            let pyruntime_header = elf\n                .section_headers\n                .iter()\n                .find(|header| strtab.get_at(header.sh_name) == Some(\".PyRuntime\"));\n\n            let mut pyruntime_addr = 0;\n            let mut pyruntime_size = 0;\n            if let Some(header) = pyruntime_header {\n                if let Some(addr) = header.sh_addr.checked_add(offset) {\n                    pyruntime_addr = addr;\n                    pyruntime_size = header.sh_size;\n                }\n            }\n\n            for sym in elf.syms.iter() {\n                // Skip undefined symbols.\n                if sym.st_shndx == goblin::elf::section_header::SHN_UNDEF as usize {\n                    continue;\n                }\n                // Skip imported symbols\n                if sym.is_import()\n                    || (bss_end != 0\n                        && sym.st_size != 0\n                        && !is_subrange(0u64, bss_end, sym.st_value, sym.st_size))\n                {\n                    continue;\n                }\n                if let Some(pos) = sym.st_value.checked_add(offset) {\n                    if sym.is_function() && !is_subrange(addr, size, pos, sym.st_size) {\n                        continue;\n                    }\n                    if let Some(name) = elf.strtab.get_unsafe(sym.st_name) {\n                        symbols.insert(name.to_string(), pos);\n                    }\n                }\n            }\n            for dynsym in elf.dynsyms.iter() {\n                // Skip undefined symbols.\n                if dynsym.st_shndx == goblin::elf::section_header::SHN_UNDEF as usize {\n                    continue;\n                }\n                // Skip imported symbols\n                if dynsym.is_import()\n                    || (bss_end != 0\n                        && dynsym.st_size != 0\n                        && !is_subrange(0u64, bss_end, dynsym.st_value, dynsym.st_size))\n                {\n                    continue;\n                }\n                if let Some(pos) = dynsym.st_value.checked_add(offset) {\n                    if dynsym.is_function() && !is_subrange(addr, size, pos, dynsym.st_size) {\n                        continue;\n                    }\n                    if let Some(name) = elf.dynstrtab.get_unsafe(dynsym.st_name) {\n                        symbols.insert(name.to_string(), pos);\n                    }\n                }\n            }\n\n            Ok(BinaryInfo {\n                symbols,\n                bss_addr,\n                bss_size,\n                pyruntime_addr,\n                pyruntime_size,\n                addr,\n                size,\n            })\n        }\n        Object::PE(pe) => {\n            for export in pe.exports {\n                if let Some(name) = export.name {\n                    if let Some(addr) = offset.checked_add(export.rva as u64) {\n                        symbols.insert(name.to_string(), addr);\n                    }\n                }\n            }\n\n            let mut bss_addr = 0;\n            let mut bss_size = 0;\n            let mut pyruntime_addr = 0;\n            let mut pyruntime_size = 0;\n            let mut found_data = false;\n            for section in pe.sections.iter() {\n                if section.name.starts_with(b\".data\") {\n                    found_data = true;\n                    if let Some(addr) = offset.checked_add(section.virtual_address as u64) {\n                        if addr.checked_add(section.virtual_size as u64).is_some() {\n                            bss_addr = addr;\n                            bss_size = u64::from(section.virtual_size);\n                        }\n                    }\n                } else if section.name.starts_with(b\"PyRuntim\") {\n                    // note that the name is only 8 chars here, so we don't check for\n                    // trailing 'e' in PyRuntime\n                    if let Some(addr) = offset.checked_add(section.virtual_address as u64) {\n                        if addr.checked_add(section.virtual_size as u64).is_some() {\n                            pyruntime_addr = addr;\n                            pyruntime_size = u64::from(section.virtual_size);\n                        }\n                    }\n                }\n            }\n\n            if !found_data {\n                return Err(format_err!(\n                    \"Failed to find .data section in PE binary of {}\",\n                    filename.display()\n                ));\n            }\n\n            Ok(BinaryInfo {\n                symbols,\n                bss_addr,\n                bss_size,\n                pyruntime_size,\n                pyruntime_addr,\n                addr,\n                size,\n            })\n        }\n        _ => Err(format_err!(\"Unhandled binary type\")),\n    }\n}\n"
  },
  {
    "path": "src/chrometrace.rs",
    "content": "use std::cmp::min;\nuse std::collections::HashMap;\nuse std::io::Write;\nuse std::time::Instant;\n\nuse anyhow::Error;\nuse serde_derive::Serialize;\n\nuse crate::stack_trace::Frame;\nuse crate::stack_trace::StackTrace;\n\n#[derive(Clone, Debug, Serialize)]\nstruct Args {\n    pub filename: String,\n    pub line: Option<u32>,\n}\n\n#[derive(Clone, Debug, Serialize)]\nstruct Event {\n    pub args: Args,\n    pub cat: String,\n    pub name: String,\n    pub ph: String,\n    pub pid: u64,\n    pub tid: u64,\n    pub ts: u64,\n}\n\npub struct Chrometrace {\n    events: Vec<Event>,\n    start_ts: Instant,\n    prev_traces: HashMap<u64, StackTrace>,\n    show_linenumbers: bool,\n}\n\nimpl Chrometrace {\n    pub fn new(show_linenumbers: bool) -> Chrometrace {\n        Chrometrace {\n            events: Vec::new(),\n            start_ts: Instant::now(),\n            prev_traces: HashMap::new(),\n            show_linenumbers,\n        }\n    }\n\n    // Return whether these frames are similar enough such that we should merge\n    // them, instead of creating separate events for them.\n    fn should_merge_frames(&self, a: &Frame, b: &Frame) -> bool {\n        a.name == b.name && a.filename == b.filename && (!self.show_linenumbers || a.line == b.line)\n    }\n\n    fn event(&self, trace: &StackTrace, frame: &Frame, phase: &str, ts: u64) -> Event {\n        Event {\n            tid: trace.thread_id,\n            pid: trace.pid as u64,\n            name: frame.name.to_string(),\n            cat: \"py-spy\".to_owned(),\n            ph: phase.to_owned(),\n            ts,\n            args: Args {\n                filename: frame.filename.to_string(),\n                line: if self.show_linenumbers {\n                    Some(frame.line as u32)\n                } else {\n                    None\n                },\n            },\n        }\n    }\n\n    pub fn increment(&mut self, trace: &StackTrace) -> std::io::Result<()> {\n        let now = self.start_ts.elapsed().as_micros() as u64;\n\n        // Load the previous frames for this thread.\n        let prev_frames = self\n            .prev_traces\n            .remove(&trace.thread_id)\n            .map(|t| t.frames)\n            .unwrap_or_default();\n\n        // Find the index where we first see new frames.\n        let new_idx = prev_frames\n            .iter()\n            .rev()\n            .zip(trace.frames.iter().rev())\n            .position(|(a, b)| !self.should_merge_frames(a, b))\n            .unwrap_or(min(prev_frames.len(), trace.frames.len()));\n\n        // Publish end events for the previous frames that got dropped in the\n        // most recent trace.\n        for frame in prev_frames.iter().rev().skip(new_idx).rev() {\n            self.events.push(self.event(trace, frame, \"E\", now));\n        }\n\n        // Publish start events for frames that got added in the most recent\n        // trace.\n        for frame in trace.frames.iter().rev().skip(new_idx) {\n            self.events.push(self.event(trace, frame, \"B\", now));\n        }\n\n        // Save this stack trace for the next iteration.\n        self.prev_traces.insert(trace.thread_id, trace.clone());\n\n        Ok(())\n    }\n\n    pub fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        let mut events = Vec::new();\n        events.extend(self.events.to_vec());\n\n        // Add end events for any unfinished slices.\n        let now = self.start_ts.elapsed().as_micros() as u64;\n        for trace in self.prev_traces.values() {\n            for frame in &trace.frames {\n                events.push(self.event(trace, frame, \"E\", now));\n            }\n        }\n\n        writeln!(w, \"{}\", serde_json::to_string(&events)?)?;\n        Ok(())\n    }\n}\n"
  },
  {
    "path": "src/config.rs",
    "content": "use clap::{\n    crate_description, crate_name, crate_version, value_parser, Arg, ArgEnum, Command,\n    PossibleValue,\n};\nuse remoteprocess::Pid;\n\n/// Options on how to collect samples from a python process\n#[derive(Debug, Clone, PartialEq)]\npub struct Config {\n    /// Whether or not we should stop the python process when taking samples.\n    /// Setting this to false will reduce the performance impact on the target\n    /// python process, but can lead to incorrect results like partial stack\n    /// traces being returned or a higher sampling error rate\n    pub blocking: LockingStrategy,\n\n    /// Whether or not to profile native extensions. Note: this option can not be\n    /// used with the nonblocking option, as we have to pause the process to collect\n    /// the native stack traces\n    pub native: bool,\n\n    // The following config options only apply when using py-spy as an application\n    #[doc(hidden)]\n    pub command: String,\n    #[doc(hidden)]\n    pub pid: Option<Pid>,\n    #[doc(hidden)]\n    pub python_program: Option<Vec<String>>,\n    #[doc(hidden)]\n    pub sampling_rate: u64,\n    #[doc(hidden)]\n    pub filename: Option<String>,\n    #[doc(hidden)]\n    pub format: Option<FileFormat>,\n    #[doc(hidden)]\n    pub show_line_numbers: bool,\n    #[doc(hidden)]\n    pub duration: RecordDuration,\n    #[doc(hidden)]\n    pub include_idle: bool,\n    #[doc(hidden)]\n    pub include_thread_ids: bool,\n    #[doc(hidden)]\n    pub subprocesses: bool,\n    #[doc(hidden)]\n    pub gil_only: bool,\n    #[doc(hidden)]\n    pub hide_progress: bool,\n    #[doc(hidden)]\n    pub capture_output: bool,\n    #[doc(hidden)]\n    pub dump_json: bool,\n    #[doc(hidden)]\n    pub dump_locals: u64,\n    #[doc(hidden)]\n    pub full_filenames: bool,\n    #[doc(hidden)]\n    pub lineno: LineNo,\n    #[doc(hidden)]\n    pub refresh_seconds: f64,\n    #[doc(hidden)]\n    pub core_filename: Option<String>,\n}\n\n#[allow(non_camel_case_types)]\n#[derive(ArgEnum, Debug, Copy, Clone, Eq, PartialEq)]\npub enum FileFormat {\n    flamegraph,\n    raw,\n    speedscope,\n    chrometrace,\n}\n\nimpl FileFormat {\n    pub fn possible_values() -> impl Iterator<Item = PossibleValue<'static>> {\n        FileFormat::value_variants()\n            .iter()\n            .filter_map(ArgEnum::to_possible_value)\n    }\n}\n\nimpl std::str::FromStr for FileFormat {\n    type Err = String;\n\n    fn from_str(s: &str) -> Result<Self, Self::Err> {\n        for variant in Self::value_variants() {\n            if variant.to_possible_value().unwrap().matches(s, false) {\n                return Ok(*variant);\n            }\n        }\n        Err(format!(\"Invalid fileformat: {s}\"))\n    }\n}\n\n#[derive(Debug, Clone, Eq, PartialEq)]\npub enum LockingStrategy {\n    NonBlocking,\n    #[allow(dead_code)]\n    AlreadyLocked,\n    Lock,\n}\n\n#[derive(Debug, Clone, Eq, PartialEq)]\npub enum RecordDuration {\n    Unlimited,\n    Seconds(u64),\n}\n\n#[derive(Debug, Clone, Eq, PartialEq, Copy)]\npub enum LineNo {\n    NoLine,\n    First,\n    LastInstruction,\n}\n\nimpl Default for Config {\n    /// Initializes a new Config object with default parameters\n    #[allow(dead_code)]\n    fn default() -> Config {\n        Config {\n            pid: None,\n            python_program: None,\n            filename: None,\n            format: None,\n            command: String::from(\"top\"),\n            blocking: LockingStrategy::Lock,\n            show_line_numbers: false,\n            sampling_rate: 100,\n            duration: RecordDuration::Unlimited,\n            native: false,\n            gil_only: false,\n            include_idle: false,\n            include_thread_ids: false,\n            hide_progress: false,\n            capture_output: true,\n            dump_json: false,\n            dump_locals: 0,\n            subprocesses: false,\n            full_filenames: false,\n            lineno: LineNo::LastInstruction,\n            refresh_seconds: 1.0,\n            core_filename: None,\n        }\n    }\n}\n\nimpl Config {\n    /// Uses clap to set config options from commandline arguments\n    pub fn from_commandline() -> Config {\n        let args: Vec<String> = std::env::args().collect();\n        Config::from_args(&args).unwrap_or_else(|e| e.exit())\n    }\n\n    pub fn from_args(args: &[String]) -> clap::Result<Config> {\n        // pid/native/nonblocking/rate/python_program/subprocesses/full_filenames arguments can be\n        // used across various subcommand - define once here\n        let pid = Arg::new(\"pid\")\n            .short('p')\n            .long(\"pid\")\n            .value_name(\"pid\")\n            .help(\"PID of a running python program to spy on, in decimal or hex\")\n            .takes_value(true);\n\n        let mut native = Arg::new(\"native\")\n            .short('n')\n            .long(\"native\")\n            .help(\"Collect stack traces from native extensions written in Cython, C or C++\");\n\n        // Only show `--native` on platforms where it's supported\n        if !cfg!(feature = \"unwind\") {\n            native = native.hide(true);\n        }\n\n        #[cfg(not(target_os=\"freebsd\"))]\n        let nonblocking = Arg::new(\"nonblocking\")\n                    .long(\"nonblocking\")\n                    .help(\"Don't pause the python process when collecting samples. Setting this option will reduce \\\n                          the performance impact of sampling, but may lead to inaccurate results\");\n\n        let rate = Arg::new(\"rate\")\n            .short('r')\n            .long(\"rate\")\n            .value_name(\"rate\")\n            .help(\"The number of samples to collect per second\")\n            .default_value(\"100\")\n            .takes_value(true);\n\n        let subprocesses = Arg::new(\"subprocesses\")\n            .short('s')\n            .long(\"subprocesses\")\n            .help(\"Profile subprocesses of the original process\");\n\n        let full_filenames = Arg::new(\"full_filenames\").long(\"full-filenames\").help(\n            \"Show full Python filenames, instead of shortening to show only the package part\",\n        );\n        let program = Arg::new(\"python_program\")\n            .help(\"commandline of a python program to run\")\n            .multiple_values(true);\n\n        let idle = Arg::new(\"idle\")\n            .short('i')\n            .long(\"idle\")\n            .help(\"Include stack traces for idle threads\");\n\n        let gil = Arg::new(\"gil\")\n            .short('g')\n            .long(\"gil\")\n            .help(\"Only include traces that are holding on to the GIL\");\n\n        let top_delay = Arg::new(\"delay\")\n            .long(\"delay\")\n            .value_name(\"seconds\")\n            .help(\"Delay between 'top' refreshes.\")\n            .default_value(\"1.0\")\n            .value_parser(clap::value_parser!(f64))\n            .takes_value(true);\n\n        let record = Command::new(\"record\")\n            .about(\"Records stack trace information to a flamegraph, speedscope or raw file\")\n            .arg(program.clone())\n            .arg(pid.clone().required_unless_present(\"python_program\"))\n            .arg(full_filenames.clone())\n            .arg(\n                Arg::new(\"output\")\n                    .short('o')\n                    .long(\"output\")\n                    .value_name(\"filename\")\n                    .help(\"Output filename\")\n                    .takes_value(true)\n                    .required(false),\n            )\n            .arg(\n                Arg::new(\"format\")\n                    .short('f')\n                    .long(\"format\")\n                    .value_name(\"format\")\n                    .help(\"Output file format\")\n                    .takes_value(true)\n                    .possible_values(FileFormat::possible_values())\n                    .ignore_case(true)\n                    .default_value(\"flamegraph\"),\n            )\n            .arg(\n                Arg::new(\"duration\")\n                    .short('d')\n                    .long(\"duration\")\n                    .value_name(\"duration\")\n                    .help(\"The number of seconds to sample for\")\n                    .default_value(\"unlimited\")\n                    .takes_value(true),\n            )\n            .arg(rate.clone())\n            .arg(subprocesses.clone())\n            .arg(Arg::new(\"function\").short('F').long(\"function\").help(\n                \"Aggregate samples by function's first line number, instead of current line number\",\n            ))\n            .arg(\n                Arg::new(\"nolineno\")\n                    .long(\"nolineno\")\n                    .help(\"Do not show line numbers\"),\n            )\n            .arg(\n                Arg::new(\"threads\")\n                    .short('t')\n                    .long(\"threads\")\n                    .help(\"Show thread ids in the output\"),\n            )\n            .arg(gil.clone())\n            .arg(idle.clone())\n            .arg(\n                Arg::new(\"capture\")\n                    .long(\"capture\")\n                    .hide(true)\n                    .help(\"Captures output from child process\"),\n            )\n            .arg(\n                Arg::new(\"hideprogress\")\n                    .long(\"hideprogress\")\n                    .hide(true)\n                    .help(\"Hides progress bar (useful for showing error output on record)\"),\n            );\n\n        let top = Command::new(\"top\")\n            .about(\"Displays a top like view of functions consuming CPU\")\n            .arg(program.clone())\n            .arg(pid.clone().required_unless_present(\"python_program\"))\n            .arg(rate.clone())\n            .arg(subprocesses.clone())\n            .arg(full_filenames.clone())\n            .arg(gil.clone())\n            .arg(idle.clone())\n            .arg(top_delay.clone());\n\n        #[cfg(target_os = \"linux\")]\n        let dump_pid = pid.clone().required_unless_present(\"core\");\n\n        #[cfg(not(target_os = \"linux\"))]\n        let dump_pid = pid.clone().required(true);\n\n        let dump = Command::new(\"dump\")\n            .about(\"Dumps stack traces for a target program to stdout\")\n            .arg(dump_pid);\n\n        #[cfg(target_os = \"linux\")]\n        let dump = dump.arg(\n            Arg::new(\"core\")\n                .short('c')\n                .long(\"core\")\n                .help(\"Filename of coredump to display python stack traces from\")\n                .value_name(\"core\")\n                .takes_value(true),\n        );\n\n        let dump = dump.arg(full_filenames.clone())\n            .arg(Arg::new(\"locals\")\n                .short('l')\n                .long(\"locals\")\n                .multiple_occurrences(true)\n                .help(\"Show local variables for each frame. Passing multiple times (-ll) increases verbosity\"))\n            .arg(Arg::new(\"json\")\n                .short('j')\n                .long(\"json\")\n                .help(\"Format output as JSON\"))\n            .arg(subprocesses.clone());\n\n        let completions = Command::new(\"completions\")\n            .about(\"Generate shell completions\")\n            .hide(true)\n            .arg(\n                Arg::new(\"shell\")\n                    .value_parser(value_parser!(clap_complete::Shell))\n                    .help(\"Shell type\"),\n            );\n\n        let record = record.arg(native.clone());\n        let top = top.arg(native.clone());\n        let dump = dump.arg(native.clone());\n\n        // Nonblocking isn't an option for freebsd, remove\n        #[cfg(not(target_os = \"freebsd\"))]\n        let record = record.arg(nonblocking.clone());\n        #[cfg(not(target_os = \"freebsd\"))]\n        let top = top.arg(nonblocking.clone());\n        #[cfg(not(target_os = \"freebsd\"))]\n        let dump = dump.arg(nonblocking.clone());\n\n        let mut app = Command::new(crate_name!())\n            .version(crate_version!())\n            .about(crate_description!())\n            .subcommand_required(true)\n            .infer_subcommands(true)\n            .arg_required_else_help(true)\n            .global_setting(clap::AppSettings::DeriveDisplayOrder)\n            .subcommand(record)\n            .subcommand(top)\n            .subcommand(dump)\n            .subcommand(completions);\n        let matches = app.clone().try_get_matches_from(args)?;\n        info!(\"Command line args: {:?}\", matches);\n\n        let mut config = Config::default();\n\n        let (subcommand, matches) = matches.subcommand().unwrap();\n\n        // Check if `--native` was used on an unsupported platform\n        if !cfg!(feature = \"unwind\") && matches.contains_id(\"native\") {\n            eprintln!(\n                \"Collecting stack traces from native extensions (`--native`) is not supported on your platform.\"\n            );\n            std::process::exit(1);\n        }\n\n        match subcommand {\n            \"record\" => {\n                config.sampling_rate = matches.value_of_t(\"rate\")?;\n                config.duration = match matches.value_of(\"duration\") {\n                    Some(\"unlimited\") | None => RecordDuration::Unlimited,\n                    Some(seconds) => {\n                        RecordDuration::Seconds(seconds.parse().expect(\"invalid duration\"))\n                    }\n                };\n                config.format = Some(matches.value_of_t(\"format\")?);\n                config.filename = matches.value_of(\"output\").map(|f| f.to_owned());\n                config.show_line_numbers = matches.occurrences_of(\"nolineno\") == 0;\n                config.lineno = if matches.occurrences_of(\"nolineno\") > 0 {\n                    LineNo::NoLine\n                } else if matches.occurrences_of(\"function\") > 0 {\n                    LineNo::First\n                } else {\n                    LineNo::LastInstruction\n                };\n                config.include_thread_ids = matches.occurrences_of(\"threads\") > 0;\n                if matches.occurrences_of(\"nolineno\") > 0 && matches.occurrences_of(\"function\") > 0\n                {\n                    eprintln!(\"--function & --nolinenos can't be used together\");\n                    std::process::exit(1);\n                }\n                config.hide_progress = matches.occurrences_of(\"hideprogress\") > 0;\n            }\n            \"top\" => {\n                config.sampling_rate = matches.value_of_t(\"rate\")?;\n                config.refresh_seconds = *matches.get_one::<f64>(\"delay\").unwrap();\n            }\n            \"dump\" => {\n                config.dump_json = matches.occurrences_of(\"json\") > 0;\n                config.dump_locals = matches.occurrences_of(\"locals\");\n\n                #[cfg(target_os = \"linux\")]\n                {\n                    config.core_filename = matches.value_of(\"core\").map(|f| f.to_owned());\n                }\n            }\n            \"completions\" => {\n                let shell = matches.get_one::<clap_complete::Shell>(\"shell\").unwrap();\n                let app_name = app.get_name().to_string();\n                clap_complete::generate(*shell, &mut app, app_name, &mut std::io::stdout());\n                std::process::exit(0);\n            }\n            _ => {}\n        }\n\n        match subcommand {\n            \"record\" | \"top\" => {\n                config.python_program = matches\n                    .values_of(\"python_program\")\n                    .map(|vals| vals.map(|v| v.to_owned()).collect());\n                config.gil_only = matches.occurrences_of(\"gil\") > 0;\n                config.include_idle = matches.occurrences_of(\"idle\") > 0;\n            }\n            _ => {}\n        }\n\n        config.subprocesses = matches.occurrences_of(\"subprocesses\") > 0;\n        config.command = subcommand.to_owned();\n\n        // options that can be shared between subcommands\n        config.pid = matches.value_of(\"pid\").map(|p| {\n            // allow pid to be specified as a hexadecimal value\n            match p.to_lowercase().strip_prefix(\"0x\") {\n                Some(prefix) => Pid::from_str_radix(prefix, 16).expect(\"invalid pid\"),\n                None => p.parse().expect(\"invalid pid\"),\n            }\n        });\n\n        config.full_filenames = matches.occurrences_of(\"full_filenames\") > 0;\n        if cfg!(feature = \"unwind\") {\n            config.native = matches.occurrences_of(\"native\") > 0;\n        }\n\n        config.capture_output = config.command != \"record\" || matches.occurrences_of(\"capture\") > 0;\n        if !config.capture_output {\n            config.hide_progress = true;\n        }\n\n        if matches.occurrences_of(\"nonblocking\") > 0 {\n            // disable native profiling if invalidly asked for\n            if config.native {\n                eprintln!(\"Can't get native stack traces with the --nonblocking option.\");\n                std::process::exit(1);\n            }\n            config.blocking = LockingStrategy::NonBlocking;\n        }\n\n        #[cfg(windows)]\n        {\n            if config.native && config.subprocesses {\n                // the native extension profiling code relies on dbghelp library, which doesn't\n                // seem to work when connecting to multiple processes. disallow\n                eprintln!(\n                    \"Can't get native stack traces with the ---subprocesses option on windows.\"\n                );\n                std::process::exit(1);\n            }\n        }\n\n        #[cfg(target_os = \"freebsd\")]\n        {\n            if config.pid.is_some() {\n                if std::env::var(\"PYSPY_ALLOW_FREEBSD_ATTACH\").is_err() {\n                    eprintln!(\"On FreeBSD, running py-spy can cause an exception in the profiled process if the process \\\n                        is calling 'socket.connect'.\");\n                    eprintln!(\"While this is fixed in recent versions of python, you need to acknowledge the risk here by \\\n                        setting an environment variable PYSPY_ALLOW_FREEBSD_ATTACH to run this command.\");\n                    eprintln!(\n                        \"\\nSee https://github.com/benfred/py-spy/issues/147 for more information\"\n                    );\n                    std::process::exit(-1);\n                }\n            }\n        }\n        Ok(config)\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    fn get_config(cmd: &str) -> clap::Result<Config> {\n        #[cfg(target_os = \"freebsd\")]\n        std::env::set_var(\"PYSPY_ALLOW_FREEBSD_ATTACH\", \"1\");\n        let args: Vec<String> = cmd.split_whitespace().map(|x| x.to_owned()).collect();\n        Config::from_args(&args)\n    }\n\n    #[test]\n    fn test_parse_record_args() {\n        // basic use case\n        let config = get_config(\"py-spy record --pid 1234 --output foo\").unwrap();\n        assert_eq!(config.pid, Some(1234));\n        assert_eq!(config.filename, Some(String::from(\"foo\")));\n        assert_eq!(config.format, Some(FileFormat::flamegraph));\n        assert_eq!(config.command, String::from(\"record\"));\n\n        // same command using short versions of everything\n        let short_config = get_config(\"py-spy r -p 1234 -o foo\").unwrap();\n        assert_eq!(config, short_config);\n\n        // missing the --pid argument should fail\n        assert_eq!(\n            get_config(\"py-spy record -o foo\").unwrap_err().kind,\n            clap::ErrorKind::MissingRequiredArgument\n        );\n\n        // but should work when passed a python program\n        let program_config = get_config(\"py-spy r -o foo -- python test.py\").unwrap();\n        assert_eq!(\n            program_config.python_program,\n            Some(vec![String::from(\"python\"), String::from(\"test.py\")])\n        );\n        assert_eq!(program_config.pid, None);\n\n        // passing an invalid file format should fail\n        assert_eq!(\n            get_config(\"py-spy r -p 1234 -o foo -f unknown\")\n                .unwrap_err()\n                .kind,\n            clap::ErrorKind::InvalidValue\n        );\n\n        // test out overriding these params by setting flags\n        assert_eq!(config.include_idle, false);\n        assert_eq!(config.gil_only, false);\n        assert_eq!(config.include_thread_ids, false);\n\n        let config_flags = get_config(\"py-spy r -p 1234 -o foo --idle --gil --threads\").unwrap();\n        assert_eq!(config_flags.include_idle, true);\n        assert_eq!(config_flags.gil_only, true);\n        assert_eq!(config_flags.include_thread_ids, true);\n    }\n\n    #[test]\n    fn test_parse_dump_args() {\n        // basic use case\n        let config = get_config(\"py-spy dump --pid 1234\").unwrap();\n        assert_eq!(config.pid, Some(1234));\n        assert_eq!(config.command, String::from(\"dump\"));\n\n        // short version\n        let short_config = get_config(\"py-spy d -p 1234\").unwrap();\n        assert_eq!(config, short_config);\n\n        // missing the --pid argument should fail\n        assert_eq!(\n            get_config(\"py-spy dump\").unwrap_err().kind,\n            clap::ErrorKind::MissingRequiredArgument\n        );\n    }\n\n    #[test]\n    fn test_parse_top_args() {\n        // basic use case\n        let config = get_config(\"py-spy top --pid 1234\").unwrap();\n        assert_eq!(config.pid, Some(1234));\n        assert_eq!(config.command, String::from(\"top\"));\n\n        // short version\n        let short_config = get_config(\"py-spy t -p 1234\").unwrap();\n        assert_eq!(config, short_config);\n    }\n\n    #[test]\n    fn test_parse_args() {\n        assert_eq!(\n            get_config(\"py-spy dude\").unwrap_err().kind,\n            clap::ErrorKind::UnrecognizedSubcommand\n        );\n    }\n}\n"
  },
  {
    "path": "src/console_viewer.rs",
    "content": "use std::collections::HashMap;\nuse std::io;\nuse std::io::{BufReader, Read, Write};\nuse std::sync::{atomic, Arc, Mutex};\nuse std::thread;\nuse std::vec::Vec;\n\nuse anyhow::Error;\nuse console::{style, Term};\n\nuse crate::config::Config;\nuse crate::stack_trace::{Frame, StackTrace};\nuse crate::version::Version;\n\npub struct ConsoleViewer {\n    #[allow(dead_code)]\n    console_config: os_impl::ConsoleConfig,\n    version: Option<Version>,\n    command: String,\n    sampling_rate: f64,\n    running: Arc<atomic::AtomicBool>,\n    options: Arc<Mutex<Options>>,\n    stats: Stats,\n    subprocesses: bool,\n    config: Config,\n}\n\nimpl ConsoleViewer {\n    pub fn new(\n        show_linenumbers: bool,\n        python_command: &str,\n        version: &Option<Version>,\n        config: &Config,\n    ) -> io::Result<ConsoleViewer> {\n        let sampling_rate = 1.0 / (config.sampling_rate as f64);\n        let running = Arc::new(atomic::AtomicBool::new(true));\n        let options = Arc::new(Mutex::new(Options::new(show_linenumbers)));\n\n        // listen for keyboard events in a separate thread to avoid blocking here\n        let input_running = running.clone();\n        let input_options = options.clone();\n        thread::spawn(move || {\n            let stdin = std::io::stdin();\n            let mut buf_reader = BufReader::new(stdin);\n            let mut buffer = [0u8; 1];\n            while input_running.load(atomic::Ordering::Relaxed) {\n                // TODO: there isn't a non-blocking version of stdin, so this will capture the\n                // next keystroke after the ConsoleViewer object has been destroyed =(\n                if buf_reader.read_exact(&mut buffer).is_ok() {\n                    let mut options = input_options.lock().unwrap();\n                    options.dirty = true;\n                    let previous_usage = options.usage;\n                    match buffer[0] as char {\n                        'R' | 'r' => options.reset = true,\n                        'L' | 'l' => options.show_linenumbers = !options.show_linenumbers,\n                        'X' | 'x' => options.usage = false,\n                        '?' => options.usage = true,\n                        '1' => options.sort_column = 1,\n                        '2' => options.sort_column = 2,\n                        '3' => options.sort_column = 3,\n                        '4' => options.sort_column = 4,\n                        _ => {}\n                    }\n\n                    options.reset_style = previous_usage != options.usage;\n                }\n            }\n        });\n\n        Ok(ConsoleViewer {\n            console_config: os_impl::ConsoleConfig::new()?,\n            version: version.clone(),\n            command: python_command.to_owned(),\n            running,\n            options,\n            sampling_rate,\n            subprocesses: config.subprocesses,\n            stats: Stats::new(),\n            config: config.clone(),\n        })\n    }\n\n    pub fn increment(&mut self, traces: &[StackTrace]) -> Result<(), Error> {\n        self.maybe_reset();\n        self.stats.threads = 0;\n        self.stats.processes = 0;\n        let mut last_pid = None;\n        for trace in traces {\n            self.stats.threads += 1;\n            if last_pid != Some(trace.pid) {\n                self.stats.processes += 1;\n                last_pid = Some(trace.pid);\n            }\n\n            if !(self.config.include_idle || trace.active) {\n                continue;\n            }\n\n            if self.config.gil_only && !trace.owns_gil {\n                continue;\n            }\n\n            if trace.owns_gil {\n                self.stats.gil += 1\n            }\n\n            if trace.active {\n                self.stats.active += 1\n            }\n\n            update_function_statistics(&mut self.stats.line_counts, trace, |frame| {\n                let filename = match &frame.short_filename {\n                    Some(f) => f,\n                    None => &frame.filename,\n                };\n                if frame.line != 0 {\n                    format!(\"{} ({}:{})\", frame.name, filename, frame.line)\n                } else {\n                    format!(\"{} ({})\", frame.name, filename)\n                }\n            });\n\n            update_function_statistics(&mut self.stats.function_counts, trace, |frame| {\n                let filename = match &frame.short_filename {\n                    Some(f) => f,\n                    None => &frame.filename,\n                };\n                format!(\"{} ({})\", frame.name, filename)\n            });\n        }\n        self.increment_common()?;\n        Ok(())\n    }\n\n    pub fn display(&self) -> std::io::Result<()> {\n        // Get the top aggregate function calls (either by line or by function as )\n        let mut options = self.options.lock().unwrap();\n        options.dirty = false;\n        let counts = if options.show_linenumbers {\n            &self.stats.line_counts\n        } else {\n            &self.stats.function_counts\n        };\n        let mut counts: Vec<(&FunctionStatistics, &str)> =\n            counts.iter().map(|(x, y)| (y, x.as_ref())).collect();\n\n        // TODO: subsort ?\n        match options.sort_column {\n            1 => counts.sort_unstable_by(|a, b| b.0.current_own.cmp(&a.0.current_own)),\n            2 => counts.sort_unstable_by(|a, b| b.0.current_total.cmp(&a.0.current_total)),\n            3 => counts.sort_unstable_by(|a, b| b.0.overall_own.cmp(&a.0.overall_own)),\n            4 => counts.sort_unstable_by(|a, b| b.0.overall_total.cmp(&a.0.overall_total)),\n            _ => panic!(\"unknown sort column. this really shouldn't happen\"),\n        }\n        let term = Term::stdout();\n        let (height, width) = term.size();\n        let width = width as usize;\n\n        // this macro acts like println but also clears the rest of the line if there is already text\n        // written there. This is to avoid flickering on redraw, and lets us update just by moving the cursor\n        // position to the top left.\n        macro_rules! out {\n            () => (term.clear_line()?; term.write_line(\"\")?);\n            ($($arg:tt)*) => { term.clear_line()?; term.write_line(&format!($($arg)*))?; }\n        }\n\n        if options.reset_style {\n            #[cfg(windows)]\n            self.console_config.reset_styles()?;\n            options.reset_style = false;\n        }\n\n        self.console_config.reset_cursor()?;\n        let mut header_lines = if options.usage { 18 } else { 8 };\n\n        if let Some(delay) = self.stats.last_delay {\n            let late_rate = self.stats.late_samples as f64 / self.stats.overall_samples as f64;\n            if late_rate > 0.10 && delay > std::time::Duration::from_secs(1) {\n                let msg = format!(\"{delay:.2?} behind in sampling, results may be inaccurate. Try reducing the sampling rate.\");\n                out!(\"{}\", style(msg).red());\n                header_lines += 1;\n            }\n        }\n\n        if self.subprocesses {\n            out!(\n                \"Collecting samples from '{}' and subprocesses\",\n                style(&self.command).green()\n            );\n        } else {\n            out!(\n                \"Collecting samples from '{}' (python v{})\",\n                style(&self.command).green(),\n                self.version.as_ref().unwrap()\n            );\n        }\n\n        let error_rate = self.stats.errors as f64 / self.stats.overall_samples as f64;\n        if error_rate >= 0.01 && self.stats.overall_samples > 100 {\n            let error_string = self.stats.last_error.as_ref().unwrap();\n            out!(\n                \"Total Samples {}, Error Rate {:.2}% ({})\",\n                style(self.stats.overall_samples).bold(),\n                style(error_rate * 100.0).bold().red(),\n                style(error_string).bold()\n            );\n        } else {\n            out!(\"Total Samples {}\", style(self.stats.overall_samples).bold());\n        }\n\n        out!(\n            \"GIL: {:.2}%, Active: {:>.2}%, Threads: {}{}\",\n            style(100.0 * self.stats.gil as f64 / self.stats.current_samples as f64).bold(),\n            style(100.0 * self.stats.active as f64 / self.stats.current_samples as f64).bold(),\n            style(self.stats.threads).bold(),\n            if self.subprocesses {\n                format!(\", Processes {}\", style(self.stats.processes).bold())\n            } else {\n                \"\".to_owned()\n            }\n        );\n\n        out!();\n\n        // Build up the header for the table\n        let mut percent_own_header = style(\"%Own \").reverse();\n        let mut percent_total_header = style(\"%Total\").reverse();\n        let mut time_own_header = style(\"OwnTime\").reverse();\n        let mut time_total_header = style(\"TotalTime\").reverse();\n        match options.sort_column {\n            1 => percent_own_header = percent_own_header.bold(),\n            2 => percent_total_header = percent_total_header.bold(),\n            3 => time_own_header = time_own_header.bold(),\n            4 => time_total_header = time_total_header.bold(),\n            _ => {}\n        }\n\n        let function_header = if options.show_linenumbers {\n            style(\"  Function (filename:line)\").reverse()\n        } else {\n            style(\"  Function (filename)\").reverse()\n        };\n\n        // If we aren't at least 50 characters wide, lets use two lines per entry\n        // Otherwise, truncate the filename so that it doesn't wrap around to the next line\n        let header_lines = if width > 50 {\n            header_lines\n        } else {\n            header_lines + height as usize / 2\n        };\n        let max_function_width = if width > 50 { width - 35 } else { width };\n\n        out!(\n            \"{:>7}{:>8}{:>9}{:>11}{:width$}\",\n            percent_own_header,\n            percent_total_header,\n            time_own_header,\n            time_total_header,\n            function_header,\n            width = max_function_width\n        );\n\n        let mut written = 0;\n        for (samples, label) in counts.iter().take(height as usize - header_lines) {\n            out!(\n                \"{:>6.2}% {:>6.2}% {:>7}s {:>8}s   {:.width$}\",\n                100.0 * samples.current_own as f64 / (self.stats.current_samples as f64),\n                100.0 * samples.current_total as f64 / (self.stats.current_samples as f64),\n                display_time(samples.overall_own as f64 * self.sampling_rate),\n                display_time(samples.overall_total as f64 * self.sampling_rate),\n                label,\n                width = max_function_width - 2\n            );\n            written += 1;\n        }\n        for _ in written..height as usize - header_lines {\n            out!();\n        }\n\n        out!();\n        if options.usage {\n            out!(\n                \"{:width$}\",\n                style(\" Keyboard Shortcuts \").reverse(),\n                width = width\n            );\n            out!();\n            out!(\"{:^12}{:<}\", style(\"key\").green(), style(\"action\").green());\n            out!(\n                \"{:^12}{:<}\",\n                \"1\",\n                \"Sort by %Own (% of time currently spent in the function)\"\n            );\n            out!(\n                \"{:^12}{:<}\",\n                \"2\",\n                \"Sort by %Total (% of time currently in the function and its children)\"\n            );\n            out!(\n                \"{:^12}{:<}\",\n                \"3\",\n                \"Sort by OwnTime (Overall time spent in the function)\"\n            );\n            out!(\n                \"{:^12}{:<}\",\n                \"4\",\n                \"Sort by TotalTime (Overall time spent in the function and its children)\"\n            );\n            out!(\n                \"{:^12}{:<}\",\n                \"L,l\",\n                \"Toggle between aggregating by line number or by function\"\n            );\n            out!(\"{:^12}{:<}\", \"R,r\", \"Reset statistics\");\n            out!(\"{:^12}{:<}\", \"X,x\", \"Exit this help screen\");\n            out!();\n            //println!(\"{:^12}{:<}\", \"Control-C\", \"Quit py-spy\");\n        } else {\n            out!(\n                \"Press {} to quit, or {} for help.\",\n                style(\"Control-C\").bold().reverse(),\n                style(\"?\").bold().reverse()\n            );\n        }\n        std::io::stdout().flush()?;\n\n        Ok(())\n    }\n\n    pub fn increment_error(&mut self, err: &Error) -> Result<(), Error> {\n        self.maybe_reset();\n        self.stats.errors += 1;\n        self.stats.last_error = Some(format!(\"{err}\"));\n        self.increment_common()\n    }\n\n    pub fn increment_late_sample(&mut self, delay: std::time::Duration) {\n        self.stats.late_samples += 1;\n        self.stats.last_delay = Some(delay);\n    }\n\n    pub fn should_refresh(&self) -> bool {\n        // update faster if we only have a few samples, or if we changed options\n        match self.stats.overall_samples {\n            10 | 100 | 500 => true,\n            _ => {\n                self.options.lock().unwrap().dirty\n                    || self.stats.elapsed >= self.config.refresh_seconds\n            }\n        }\n    }\n\n    // shared code between increment and increment_error\n    fn increment_common(&mut self) -> Result<(), Error> {\n        self.stats.current_samples += 1;\n        self.stats.overall_samples += 1;\n        self.stats.elapsed += self.sampling_rate;\n\n        if self.should_refresh() {\n            self.display()?;\n            self.stats.reset_current();\n        }\n        Ok(())\n    }\n\n    fn maybe_reset(&mut self) {\n        let mut options = self.options.lock().unwrap();\n        if options.reset {\n            self.stats = Stats::new();\n            options.reset = false;\n        }\n    }\n}\n\nimpl Drop for ConsoleViewer {\n    fn drop(&mut self) {\n        self.running.store(false, atomic::Ordering::Relaxed);\n    }\n}\n\n#[derive(Eq, PartialEq, Ord, PartialOrd, Debug)]\nstruct FunctionStatistics {\n    current_own: u64,\n    current_total: u64,\n    overall_own: u64,\n    overall_total: u64,\n}\n\nfn update_function_statistics<K>(\n    counts: &mut HashMap<String, FunctionStatistics>,\n    trace: &StackTrace,\n    key_func: K,\n) where\n    K: Fn(&Frame) -> String,\n{\n    // we need to deduplicate (so we don't overcount cumulative stats with recursive function calls)\n    let mut current = HashMap::new();\n    for (i, frame) in trace.frames.iter().enumerate() {\n        let key = key_func(frame);\n        current.entry(key).or_insert(i);\n    }\n\n    for (key, order) in current {\n        let entry = counts.entry(key).or_insert_with(|| FunctionStatistics {\n            current_own: 0,\n            current_total: 0,\n            overall_own: 0,\n            overall_total: 0,\n        });\n        entry.current_total += 1;\n        entry.overall_total += 1;\n\n        if order == 0 {\n            entry.current_own += 1;\n            entry.overall_own += 1;\n        }\n    }\n}\n\nstruct Options {\n    dirty: bool,\n    usage: bool,\n    reset_style: bool,\n    sort_column: i32,\n    show_linenumbers: bool,\n    reset: bool,\n}\n\nstruct Stats {\n    current_samples: u64,\n    overall_samples: u64,\n    elapsed: f64,\n    errors: u64,\n    late_samples: u64,\n    threads: u64,\n    processes: u64,\n    active: u64,\n    gil: u64,\n    function_counts: HashMap<String, FunctionStatistics>,\n    line_counts: HashMap<String, FunctionStatistics>,\n    last_error: Option<String>,\n    last_delay: Option<std::time::Duration>,\n}\n\nimpl Options {\n    fn new(show_linenumbers: bool) -> Options {\n        Options {\n            dirty: false,\n            usage: false,\n            reset: false,\n            sort_column: 3,\n            show_linenumbers,\n            reset_style: false,\n        }\n    }\n}\n\nimpl Stats {\n    fn new() -> Stats {\n        Stats {\n            current_samples: 0,\n            overall_samples: 0,\n            elapsed: 0.,\n            errors: 0,\n            late_samples: 0,\n            threads: 0,\n            processes: 0,\n            gil: 0,\n            active: 0,\n            line_counts: HashMap::new(),\n            function_counts: HashMap::new(),\n            last_error: None,\n            last_delay: None,\n        }\n    }\n\n    pub fn reset_current(&mut self) {\n        // reset current statistics\n        for val in self.line_counts.values_mut() {\n            val.current_total = 0;\n            val.current_own = 0;\n        }\n\n        for val in self.function_counts.values_mut() {\n            val.current_total = 0;\n            val.current_own = 0;\n        }\n        self.gil = 0;\n        self.active = 0;\n        self.current_samples = 0;\n        self.elapsed = 0.;\n    }\n}\n\n// helper function for formatting time values (hide decimals for larger values)\nfn display_time(val: f64) -> String {\n    if val > 1000.0 {\n        format!(\"{val:.0}\")\n    } else if val >= 100.0 {\n        format!(\"{val:.1}\")\n    } else if val >= 1.0 {\n        format!(\"{val:.2}\")\n    } else {\n        format!(\"{val:.3}\")\n    }\n}\n\n/*\nThis rest of this code is OS specific functions for setting up keyboard input appropriately\n(don't wait for a newline, and disable echo), and clearing the terminal window.\n\nThis is all relatively low level, but there doesn't seem to be any great libraries out there\nfor doing this:\n    https://github.com/redox-os/termion doesn't work on windows\n    https://github.com/gyscos/Cursive requires ncurses installed\n    https://github.com/ihalila/pancurses requires ncurses installed\n */\n\n// operating system specific details on setting up console to receive single characters without displaying\n#[cfg(unix)]\nmod os_impl {\n    use super::*;\n    use termios::{tcsetattr, Termios, ECHO, ICANON, TCSANOW};\n\n    pub struct ConsoleConfig {\n        termios: Termios,\n        stdin: i32,\n    }\n\n    impl ConsoleConfig {\n        pub fn new() -> io::Result<ConsoleConfig> {\n            // Set up stdin to not echo the input, and not wait for a return\n            let stdin = 0;\n            let termios = Termios::from_fd(stdin)?;\n            {\n                let mut termios = termios;\n                termios.c_lflag &= !(ICANON | ECHO);\n                tcsetattr(stdin, TCSANOW, &termios)?;\n            }\n\n            // flush current screen so that when we clear, we don't overwrite history\n            let height = Term::stdout().size().0;\n            for _ in 0..=height {\n                println!();\n            }\n\n            Ok(ConsoleConfig { termios, stdin })\n        }\n\n        pub fn reset_cursor(&self) -> io::Result<()> {\n            // reset cursor to top left position https://en.wikipedia.org/wiki/ANSI_escape_code\n            print!(\"\\x1B[H\");\n            Ok(())\n        }\n    }\n\n    impl Drop for ConsoleConfig {\n        fn drop(&mut self) {\n            tcsetattr(self.stdin, TCSANOW, &self.termios).unwrap();\n        }\n    }\n}\n\n// operating system specific details on setting up console to receive single characters\n#[cfg(windows)]\nmod os_impl {\n    use super::*;\n    use winapi::shared::minwindef::DWORD;\n    use winapi::um::consoleapi::{GetConsoleMode, SetConsoleMode};\n    use winapi::um::handleapi::INVALID_HANDLE_VALUE;\n    use winapi::um::processenv::GetStdHandle;\n    use winapi::um::winbase::{STD_INPUT_HANDLE, STD_OUTPUT_HANDLE};\n    use winapi::um::wincon::{\n        FillConsoleOutputAttribute, GetConsoleScreenBufferInfo, SetConsoleCursorPosition,\n        CONSOLE_SCREEN_BUFFER_INFO, COORD, ENABLE_ECHO_INPUT, ENABLE_LINE_INPUT,\n    };\n    use winapi::um::winnt::HANDLE;\n\n    pub struct ConsoleConfig {\n        stdin: HANDLE,\n        mode: DWORD,\n        top_left: COORD,\n    }\n\n    impl ConsoleConfig {\n        pub fn new() -> io::Result<ConsoleConfig> {\n            unsafe {\n                let stdin = GetStdHandle(STD_INPUT_HANDLE);\n                if stdin == INVALID_HANDLE_VALUE {\n                    return Err(io::Error::last_os_error());\n                }\n\n                let mut mode: DWORD = 0;\n                if GetConsoleMode(stdin, &mut mode) == 0 {\n                    return Err(io::Error::last_os_error());\n                }\n\n                if SetConsoleMode(stdin, mode & !(ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT)) == 0 {\n                    return Err(io::Error::last_os_error());\n                }\n\n                let stdout = GetStdHandle(STD_OUTPUT_HANDLE);\n\n                // flush current screen so that when we clear, we don't overwrite history\n                let height = Term::stdout().size().0 as i16;\n                for _ in 0..height + 1 {\n                    println!();\n                }\n\n                // Get information about the current console (size/background etc)\n                let mut csbi = CONSOLE_SCREEN_BUFFER_INFO::default();\n                if GetConsoleScreenBufferInfo(stdout, &mut csbi) == 0 {\n                    return Err(io::Error::last_os_error());\n                }\n\n                // Figure out a consistent spot in the terminal buffer to write output to\n                let mut top_left = csbi.dwCursorPosition;\n                top_left.X = 0;\n                top_left.Y = if top_left.Y > height {\n                    top_left.Y - height\n                } else {\n                    0\n                };\n\n                Ok(ConsoleConfig {\n                    stdin,\n                    mode,\n                    top_left,\n                })\n            }\n        }\n\n        pub fn reset_cursor(&self) -> io::Result<()> {\n            unsafe {\n                // Set cursor to top-left using the win32 api.\n                // (this works better than moving the cursor using ANSI escape codes in the\n                // case when the user is scrolling the terminal window)\n                let stdout = GetStdHandle(STD_OUTPUT_HANDLE);\n                if SetConsoleCursorPosition(stdout, self.top_left) == 0 {\n                    return Err(io::Error::last_os_error());\n                }\n                Ok(())\n            }\n        }\n\n        pub fn reset_styles(&self) -> io::Result<()> {\n            unsafe {\n                let stdout = GetStdHandle(STD_OUTPUT_HANDLE);\n                let mut csbi = CONSOLE_SCREEN_BUFFER_INFO::default();\n                if GetConsoleScreenBufferInfo(stdout, &mut csbi) == 0 {\n                    return Err(io::Error::last_os_error());\n                }\n\n                let mut written: DWORD = 0;\n                let console_size = ((1 + csbi.srWindow.Bottom - csbi.srWindow.Top)\n                    * (csbi.srWindow.Right - csbi.srWindow.Left))\n                    as DWORD;\n                if FillConsoleOutputAttribute(\n                    stdout,\n                    csbi.wAttributes,\n                    console_size,\n                    self.top_left,\n                    &mut written,\n                ) == 0\n                {\n                    return Err(io::Error::last_os_error());\n                }\n                Ok(())\n            }\n        }\n    }\n\n    impl Drop for ConsoleConfig {\n        fn drop(&mut self) {\n            unsafe {\n                SetConsoleMode(self.stdin, self.mode);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/coredump.rs",
    "content": "use std::collections::HashMap;\nuse std::ffi::OsStr;\nuse std::fs::File;\nuse std::io::Read;\nuse std::os::unix::ffi::OsStrExt;\nuse std::path::Path;\nuse std::path::PathBuf;\n\nuse anyhow::{Context, Error, Result};\nuse console::style;\nuse log::info;\nuse remoteprocess::ProcessMemory;\n\nuse crate::binary_parser::{parse_binary, BinaryInfo};\nuse crate::config::Config;\nuse crate::dump::print_trace;\nuse crate::python_bindings::{\n    v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_13_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5,\n};\nuse crate::python_data_access::format_variable;\nuse crate::python_interpreters::InterpreterState;\nuse crate::python_process_info::{\n    get_interpreter_address, get_python_version, get_threadstate_address, is_python_lib,\n    ContainsAddr, PythonProcessInfo,\n};\nuse crate::python_threading::thread_names_from_interpreter;\nuse crate::stack_trace::{get_stack_traces, StackTrace};\nuse crate::version::Version;\n\n#[derive(Debug, Clone)]\npub struct CoreMapRange {\n    pub pathname: Option<PathBuf>,\n    pub segment: goblin::elf::ProgramHeader,\n}\n\n// Defines accessors to match those in proc_maps. However, can't use the\n// proc_maps trait since is private\nimpl CoreMapRange {\n    pub fn size(&self) -> usize {\n        self.segment.p_memsz as usize\n    }\n    pub fn start(&self) -> usize {\n        self.segment.p_vaddr as usize\n    }\n    pub fn filename(&self) -> Option<&Path> {\n        self.pathname.as_deref()\n    }\n    pub fn is_exec(&self) -> bool {\n        self.segment.is_executable()\n    }\n    pub fn is_write(&self) -> bool {\n        self.segment.is_write()\n    }\n    pub fn is_read(&self) -> bool {\n        self.segment.is_read()\n    }\n}\n\nimpl ContainsAddr for Vec<CoreMapRange> {\n    fn contains_addr(&self, addr: usize) -> bool {\n        self.iter()\n            .any(|map| (addr >= map.start()) && (addr < (map.start() + map.size())))\n    }\n}\n\npub struct CoreDump {\n    filename: PathBuf,\n    contents: Vec<u8>,\n    maps: Vec<CoreMapRange>,\n    psinfo: Option<elfcore::elf_prpsinfo>,\n    status: Vec<elfcore::elf_prstatus>,\n}\n\nimpl CoreDump {\n    pub fn new<P: AsRef<Path>>(filename: P) -> Result<CoreDump, Error> {\n        let filename = filename.as_ref();\n        let mut file = File::open(filename)?;\n        let mut contents = Vec::new();\n        file.read_to_end(&mut contents)?;\n        let elf = goblin::elf::Elf::parse(&contents)?;\n\n        let notes = elf\n            .iter_note_headers(&contents)\n            .ok_or_else(|| format_err!(\"no note segment found\"))?;\n\n        let mut filenames = HashMap::new();\n        let mut psinfo = None;\n        let mut status = Vec::new();\n        for note in notes.flatten() {\n            if note.n_type == goblin::elf::note::NT_PRPSINFO {\n                psinfo = Some(unsafe {\n                    std::ptr::read_unaligned(note.desc.as_ptr() as *const elfcore::elf_prpsinfo)\n                });\n            } else if note.n_type == goblin::elf::note::NT_PRSTATUS {\n                let thread_status: elfcore::elf_prstatus = unsafe {\n                    std::ptr::read_unaligned(note.desc.as_ptr() as *const elfcore::elf_prstatus)\n                };\n                status.push(thread_status);\n            } else if note.n_type == goblin::elf::note::NT_FILE {\n                let data = note.desc;\n                let ptrs = data.as_ptr() as *const usize;\n\n                let count = unsafe { std::ptr::read_unaligned(ptrs) };\n                let _page_size = unsafe { std::ptr::read_unaligned(ptrs.offset(1)) };\n\n                let string_table = &data[(std::mem::size_of::<usize>() * (2 + count * 3))..];\n\n                for (i, filename) in string_table.split(|chr| *chr == 0).enumerate() {\n                    if i < count {\n                        let i = i as isize;\n                        let start = unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 2)) };\n                        let _end = unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 3)) };\n                        let _page_offset =\n                            unsafe { std::ptr::read_unaligned(ptrs.offset(i * 3 + 4)) };\n\n                        let pathname = Path::new(&OsStr::from_bytes(filename)).to_path_buf();\n                        filenames.insert(start, pathname);\n                    }\n                }\n            }\n        }\n\n        let mut maps = Vec::new();\n        for ph in elf.program_headers {\n            if ph.p_type == goblin::elf::program_header::PT_LOAD {\n                let pathname = filenames.get(&(ph.p_vaddr as _));\n                let map = CoreMapRange {\n                    pathname: pathname.cloned(),\n                    segment: ph,\n                };\n                info!(\n                    \"map: {:016x}-{:016x} {}{}{} {}\",\n                    map.start(),\n                    map.start() + map.size(),\n                    if map.is_read() { 'r' } else { '-' },\n                    if map.is_write() { 'w' } else { '-' },\n                    if map.is_exec() { 'x' } else { '-' },\n                    map.filename()\n                        .unwrap_or(&std::path::PathBuf::from(\"\"))\n                        .display()\n                );\n\n                maps.push(map);\n            }\n        }\n\n        Ok(CoreDump {\n            filename: filename.to_owned(),\n            contents,\n            maps,\n            psinfo,\n            status,\n        })\n    }\n}\n\nimpl ProcessMemory for CoreDump {\n    fn read(&self, addr: usize, buf: &mut [u8]) -> Result<(), remoteprocess::Error> {\n        let start = addr as u64;\n        let _end = (addr + buf.len()) as u64;\n\n        for map in &self.maps {\n            // TODO: one issue here is the bss addr spans multiple mmap segments - so checking the 'end'\n            // here means we skip it. Instead we're just checking if the start address exists in\n            // the segment\n            let ph = &map.segment;\n            if start >= ph.p_vaddr && start <= (ph.p_vaddr + ph.p_memsz) {\n                let offset = (start - ph.p_vaddr + ph.p_offset) as usize;\n                buf.copy_from_slice(&self.contents[offset..(offset + buf.len())]);\n                return Ok(());\n            }\n        }\n\n        let io_error = std::io::Error::from_raw_os_error(libc::EFAULT);\n        Err(remoteprocess::Error::IOError(io_error))\n    }\n}\n\npub struct PythonCoreDump {\n    core: CoreDump,\n    version: Version,\n    interpreter_address: usize,\n    threadstate_address: usize,\n}\n\nimpl PythonCoreDump {\n    pub fn new<P: AsRef<Path>>(filename: P) -> Result<PythonCoreDump, Error> {\n        let core = CoreDump::new(filename)?;\n        let maps = &core.maps;\n\n        // Get the python binary from the maps, and parse it\n        let (python_filename, python_binary) = {\n            let map = maps\n                .iter()\n                .find(|m| m.filename().is_some() & m.is_exec())\n                .ok_or_else(|| format_err!(\"Failed to get binary from coredump\"))?;\n            let python_filename = map.filename().unwrap();\n            let python_binary = parse_binary(python_filename, map.start() as _, map.size() as _);\n            info!(\"Found python binary @ {}\", python_filename.display());\n            (python_filename.to_owned(), python_binary)\n        };\n\n        // get the libpython binary (if any) from maps\n        let libpython_binary = {\n            let libmap = maps.iter().find(|m| {\n                if let Some(pathname) = m.filename() {\n                    if let Some(pathname) = pathname.to_str() {\n                        return is_python_lib(pathname) && m.is_exec();\n                    }\n                }\n                false\n            });\n\n            let mut libpython_binary: Option<BinaryInfo> = None;\n            if let Some(libpython) = libmap {\n                if let Some(filename) = &libpython.filename() {\n                    info!(\"Found libpython binary @ {}\", filename.display());\n                    let parsed =\n                        parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?;\n                    libpython_binary = Some(parsed);\n                }\n            }\n            libpython_binary\n        };\n\n        // If we have a libpython binary - we can tolerate failures on parsing the main python binary.\n        let python_binary = match libpython_binary {\n            None => Some(python_binary.context(\"Failed to parse python binary\")?),\n            _ => python_binary.ok(),\n        };\n\n        let python_info = PythonProcessInfo {\n            python_binary,\n            libpython_binary,\n            maps: Box::new(core.maps.clone()),\n            python_filename,\n            dockerized: false,\n        };\n\n        let version =\n            get_python_version(&python_info, &core).context(\"failed to get python version\")?;\n        info!(\"Got python version {}\", version);\n\n        let interpreter_address = get_interpreter_address(&python_info, &core, &version)?;\n        info!(\"Found interpreter at 0x{:016x}\", interpreter_address);\n\n        // lets us figure out which thread has the GIL\n        let config = Config::default();\n        let threadstate_address =\n            get_threadstate_address(interpreter_address, &python_info, &core, &version, &config)?;\n        info!(\"found threadstate at 0x{:016x}\", threadstate_address);\n\n        Ok(PythonCoreDump {\n            core,\n            version,\n            interpreter_address,\n            threadstate_address,\n        })\n    }\n\n    pub fn get_stack(&self, config: &Config) -> Result<Vec<StackTrace>, Error> {\n        if config.native {\n            return Err(format_err!(\n                \"Native unwinding isn't yet supported with coredumps\"\n            ));\n        }\n\n        if config.subprocesses {\n            return Err(format_err!(\n                \"Subprocesses can't be used for getting stacktraces from coredumps\"\n            ));\n        }\n\n        // different versions have different layouts, check as appropriate\n        match self.version {\n            Version {\n                major: 2,\n                minor: 3..=7,\n                ..\n            } => self._get_stack::<v2_7_15::_is>(config),\n            Version {\n                major: 3, minor: 3, ..\n            } => self._get_stack::<v3_3_7::_is>(config),\n            Version {\n                major: 3,\n                minor: 4..=5,\n                ..\n            } => self._get_stack::<v3_5_5::_is>(config),\n            Version {\n                major: 3, minor: 6, ..\n            } => self._get_stack::<v3_6_6::_is>(config),\n            Version {\n                major: 3, minor: 7, ..\n            } => self._get_stack::<v3_7_0::_is>(config),\n            Version {\n                major: 3, minor: 8, ..\n            } => self._get_stack::<v3_8_0::_is>(config),\n            Version {\n                major: 3, minor: 9, ..\n            } => self._get_stack::<v3_9_5::_is>(config),\n            Version {\n                major: 3,\n                minor: 10,\n                ..\n            } => self._get_stack::<v3_10_0::_is>(config),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => self._get_stack::<v3_11_0::_is>(config),\n            Version {\n                major: 3,\n                minor: 12,\n                ..\n            } => self._get_stack::<v3_12_0::_is>(config),\n            Version {\n                major: 3,\n                minor: 13,\n                ..\n            } => self._get_stack::<v3_13_0::_is>(config),\n            _ => Err(format_err!(\n                \"Unsupported version of Python: {}\",\n                self.version\n            )),\n        }\n    }\n\n    fn _get_stack<I: InterpreterState>(&self, config: &Config) -> Result<Vec<StackTrace>, Error> {\n        let mut traces = get_stack_traces::<I, CoreDump>(\n            self.interpreter_address,\n            &self.core,\n            self.threadstate_address,\n            Some(config),\n        )?;\n        let thread_names = thread_names_from_interpreter::<I, CoreDump>(\n            self.interpreter_address,\n            &self.core,\n            &self.version,\n        )\n        .ok();\n\n        for trace in &mut traces {\n            if let Some(ref thread_names) = thread_names {\n                trace.thread_name = thread_names.get(&trace.thread_id).cloned();\n            }\n\n            for frame in &mut trace.frames {\n                if let Some(locals) = frame.locals.as_mut() {\n                    let max_length = (128 * config.dump_locals) as isize;\n                    for local in locals {\n                        let repr = format_variable::<I, CoreDump>(\n                            &self.core,\n                            &self.version,\n                            local.addr,\n                            max_length,\n                        );\n                        local.repr = Some(repr.unwrap_or_else(|_| \"?\".to_owned()));\n                    }\n                }\n            }\n        }\n        Ok(traces)\n    }\n\n    pub fn print_traces(&self, traces: &Vec<StackTrace>, config: &Config) -> Result<(), Error> {\n        if config.dump_json {\n            println!(\"{}\", serde_json::to_string_pretty(&traces)?);\n            return Ok(());\n        }\n\n        if let Some(status) = self.core.status.first() {\n            println!(\n                \"Signal {}: {}\",\n                style(status.pr_cursig).bold().yellow(),\n                self.core.filename.display()\n            );\n        }\n\n        if let Some(psinfo) = self.core.psinfo {\n            println!(\n                \"Process {}: {}\",\n                style(psinfo.pr_pid).bold().yellow(),\n                OsStr::from_bytes(&psinfo.pr_psargs).to_string_lossy()\n            );\n        }\n        println!(\"Python v{}\", style(&self.version).bold());\n        println!();\n        for trace in traces.iter().rev() {\n            print_trace(trace, false);\n        }\n        Ok(())\n    }\n}\n\nmod elfcore {\n    #[repr(C)]\n    #[derive(Debug, Copy, Clone)]\n    pub struct elf_siginfo {\n        pub si_signo: ::std::os::raw::c_int,\n        pub si_code: ::std::os::raw::c_int,\n        pub si_errno: ::std::os::raw::c_int,\n    }\n\n    #[repr(C)]\n    #[derive(Debug, Copy, Clone)]\n    pub struct timeval {\n        pub tv_sec: ::std::os::raw::c_long,\n        pub tv_usec: ::std::os::raw::c_long,\n    }\n\n    #[repr(C)]\n    #[derive(Debug, Copy, Clone)]\n    pub struct elf_prstatus {\n        pub pr_info: elf_siginfo,\n        pub pr_cursig: ::std::os::raw::c_short,\n        pub pr_sigpend: ::std::os::raw::c_ulong,\n        pub pr_sighold: ::std::os::raw::c_ulong,\n        pub pr_pid: ::std::os::raw::c_int,\n        pub pr_ppid: ::std::os::raw::c_int,\n        pub pr_pgrp: ::std::os::raw::c_int,\n        pub pr_sid: ::std::os::raw::c_int,\n        pub pr_utime: timeval,\n        pub pr_stime: timeval,\n        pub pr_cutime: timeval,\n        pub pr_cstime: timeval,\n        // TODO: has registers next for thread next - don't need them right now, but if we want to do\n        // unwinding we will\n    }\n\n    #[repr(C)]\n    #[derive(Debug, Copy, Clone)]\n    pub struct elf_prpsinfo {\n        pub pr_state: ::std::os::raw::c_char,\n        pub pr_sname: ::std::os::raw::c_char,\n        pub pr_zomb: ::std::os::raw::c_char,\n        pub pr_nice: ::std::os::raw::c_char,\n        pub pr_flag: ::std::os::raw::c_ulong,\n        pub pr_uid: ::std::os::raw::c_uint,\n        pub pr_gid: ::std::os::raw::c_uint,\n        pub pr_pid: ::std::os::raw::c_int,\n        pub pr_ppid: ::std::os::raw::c_int,\n        pub pr_pgrp: ::std::os::raw::c_int,\n        pub pr_sid: ::std::os::raw::c_int,\n        pub pr_fname: [::std::os::raw::c_uchar; 16usize],\n        pub pr_psargs: [::std::os::raw::c_uchar; 80usize],\n    }\n}\n\n#[cfg(test)]\nmod test {\n    use super::*;\n    use py_spy_testdata::get_coredump_path;\n\n    #[cfg(target_pointer_width = \"64\")]\n    #[test]\n    fn test_coredump() {\n        // we won't have the python binary for the core dump here,\n        // so we can't (yet) figure out the interpreter address & version.\n        // Manually specify here to test out instead\n        let core = CoreDump::new(&get_coredump_path(\"python_3_9_threads\")).unwrap();\n        let version = Version {\n            major: 3,\n            minor: 9,\n            patch: 13,\n            release_flags: \"\".to_owned(),\n            build_metadata: None,\n        };\n        let python_core = PythonCoreDump {\n            core,\n            version,\n            interpreter_address: 0x000055a8293dbe20,\n            threadstate_address: 0x000055a82745fe18,\n        };\n\n        let config = Config::default();\n        let traces = python_core.get_stack(&config).unwrap();\n\n        // should have two threads\n        assert_eq!(traces.len(), 2);\n\n        let main_thread = &traces[1];\n        assert_eq!(main_thread.frames.len(), 1);\n        assert_eq!(main_thread.frames[0].name, \"<module>\");\n        assert_eq!(main_thread.thread_name, Some(\"MainThread\".to_owned()));\n\n        let child_thread = &traces[0];\n        assert_eq!(child_thread.frames.len(), 5);\n        assert_eq!(child_thread.frames[0].name, \"dump_sum\");\n        assert_eq!(child_thread.frames[0].line, 16);\n        assert_eq!(child_thread.thread_name, Some(\"child_thread\".to_owned()));\n    }\n}\n"
  },
  {
    "path": "src/cython.rs",
    "content": "use regex::Regex;\nuse std::collections::{BTreeMap, HashMap};\n\nuse anyhow::Error;\nuse lazy_static::lazy_static;\n\nuse crate::stack_trace::Frame;\nuse crate::utils::resolve_filename;\n\npub struct SourceMaps {\n    maps: HashMap<String, Option<SourceMap>>,\n}\n\nimpl SourceMaps {\n    pub fn new() -> SourceMaps {\n        let maps = HashMap::new();\n        SourceMaps { maps }\n    }\n\n    pub fn translate(&mut self, frame: &mut Frame) {\n        if self.translate_frame(frame) {\n            self.load_map(frame);\n            self.translate_frame(frame);\n        }\n    }\n\n    // tries to replace the frame using a cython sourcemap if possible\n    // returns true if the corresponding cython sourcemap hasn't been loaded yet\n    fn translate_frame(&mut self, frame: &mut Frame) -> bool {\n        let line = frame.line as u32;\n        if line == 0 {\n            return false;\n        }\n        if let Some(map) = self.maps.get(&frame.filename) {\n            if let Some(map) = map {\n                if let Some((file, line)) = map.lookup(line) {\n                    frame.filename = file.clone();\n                    frame.line = *line as i32;\n                }\n            }\n            return false;\n        }\n        true\n    }\n\n    // loads the corresponding cython source map for the frame\n    fn load_map(&mut self, frame: &Frame) {\n        if !(frame.filename.ends_with(\".cpp\") || frame.filename.ends_with(\".c\")) {\n            self.maps.insert(frame.filename.clone(), None);\n            return;\n        }\n\n        let map = match SourceMap::new(&frame.filename, &frame.module) {\n            Ok(map) => map,\n            Err(e) => {\n                info!(\"Failed to load cython file {}: {:?}\", &frame.filename, e);\n                self.maps.insert(frame.filename.clone(), None);\n                return;\n            }\n        };\n\n        self.maps.insert(frame.filename.clone(), Some(map));\n    }\n}\n\nstruct SourceMap {\n    lookup: BTreeMap<u32, (String, u32)>,\n}\n\nimpl SourceMap {\n    pub fn new(filename: &str, module: &Option<String>) -> Result<SourceMap, Error> {\n        let contents = std::fs::read_to_string(filename)?;\n        SourceMap::from_contents(&contents, filename, module)\n    }\n\n    pub fn from_contents(\n        contents: &str,\n        cpp_filename: &str,\n        module: &Option<String>,\n    ) -> Result<SourceMap, Error> {\n        lazy_static! {\n            static ref RE: Regex = Regex::new(r#\"^\\s*/\\* \"(.+\\..+)\":([0-9]+)\"#).unwrap();\n        }\n\n        let mut lookup = BTreeMap::new();\n        let mut resolved: HashMap<String, String> = HashMap::new();\n\n        let mut line_count = 0;\n        for (lineno, line) in contents.lines().enumerate() {\n            if let Some(captures) = RE.captures(line) {\n                let cython_file = captures.get(1).map_or(\"\", |m| m.as_str());\n                let cython_line = captures.get(2).map_or(\"\", |m| m.as_str());\n\n                if let Ok(cython_line) = cython_line.parse::<u32>() {\n                    // try resolving the cython filename\n                    let filename = match resolved.get(cython_file) {\n                        Some(filename) => filename.clone(),\n                        None => {\n                            let filename = resolve_cython_file(cpp_filename, cython_file, module);\n                            resolved.insert(cython_file.to_string(), filename.clone());\n                            filename\n                        }\n                    };\n\n                    lookup.insert(lineno as u32, (filename, cython_line));\n                }\n            }\n            line_count += 1;\n        }\n\n        lookup.insert(line_count + 1, (\"\".to_owned(), 0));\n        Ok(SourceMap { lookup })\n    }\n\n    pub fn lookup(&self, lineno: u32) -> Option<&(String, u32)> {\n        match self.lookup.range(..lineno).next_back() {\n            // handle EOF\n            Some((_, (_, 0))) => None,\n            Some((_, val)) => Some(val),\n            None => None,\n        }\n    }\n}\n\npub fn ignore_frame(name: &str) -> bool {\n    let ignorable = [\n        \"__Pyx_PyFunction_FastCallDict\",\n        \"__Pyx_PyObject_CallOneArg\",\n        \"__Pyx_PyObject_Call\",\n        \"__pyx_FusedFunction_call\",\n    ];\n\n    ignorable.iter().any(|&f| f == name)\n}\n\npub fn demangle(name: &str) -> &str {\n    // slice off any leading cython prefix.\n    let prefixes = [\n        \"__pyx_fuse_1_0__pyx_pw\",\n        \"__pyx_fuse_0__pyx_f\",\n        \"__pyx_fuse_1__pyx_f\",\n        \"__pyx_pf\",\n        \"__pyx_pw\",\n        \"__pyx_f\",\n        \"___pyx_f\",\n        \"___pyx_pw\",\n    ];\n    let mut current = match prefixes.iter().find(|&prefix| name.starts_with(prefix)) {\n        Some(prefix) => &name[prefix.len()..],\n        None => return name,\n    };\n\n    let mut next = current;\n\n    // get the function name from the cython mangled string (removing module/file/class\n    // prefixes)\n    loop {\n        let mut chars = next.chars();\n        if chars.next() != Some('_') {\n            break;\n        }\n\n        let mut digit_index = 1;\n        for ch in chars {\n            if !ch.is_ascii_digit() {\n                break;\n            }\n            digit_index += 1;\n        }\n\n        if digit_index == 1 {\n            break;\n        }\n\n        match &next[1..digit_index].parse::<usize>() {\n            Ok(digits) => {\n                current = &next[digit_index..];\n                if digits + digit_index >= current.len() {\n                    break;\n                }\n                next = &next[digits + digit_index..];\n            }\n            Err(_) => break,\n        };\n    }\n    debug!(\"cython_demangle(\\\"{}\\\") -> \\\"{}\\\"\", name, current);\n\n    current\n}\n\nfn resolve_cython_file(\n    cpp_filename: &str,\n    cython_filename: &str,\n    module: &Option<String>,\n) -> String {\n    let cython_path = std::path::PathBuf::from(cython_filename);\n    if let Some(ext) = cython_path.extension() {\n        let mut path_buf = std::path::PathBuf::from(cpp_filename);\n        path_buf.set_extension(ext);\n        if path_buf.ends_with(&cython_path) && path_buf.exists() {\n            return path_buf.to_string_lossy().to_string();\n        }\n    }\n\n    match module {\n        Some(module) => {\n            resolve_filename(cython_filename, module).unwrap_or_else(|| cython_filename.to_owned())\n        }\n        None => cython_filename.to_owned(),\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    #[test]\n    fn test_demangle() {\n        // all of these were wrong at certain points when writing cython_demangle =(\n        assert_eq!(\n            demangle(\"__pyx_pf_8implicit_4_als_30_least_squares_cg\"),\n            \"_least_squares_cg\"\n        );\n        assert_eq!(\n            demangle(\"__pyx_pw_8implicit_4_als_5least_squares_cg\"),\n            \"least_squares_cg\"\n        );\n        assert_eq!(\n            demangle(\"__pyx_fuse_1_0__pyx_pw_8implicit_4_als_31_least_squares_cg\"),\n            \"_least_squares_cg\"\n        );\n        assert_eq!(\n            demangle(\"__pyx_f_6mtrand_cont0_array\"),\n            \"mtrand_cont0_array\"\n        );\n        // in both of these cases we should ideally slice off the module (_als/bpr), but it gets tricky\n        // implementation wise\n        assert_eq!(\n            demangle(\"__pyx_fuse_0__pyx_f_8implicit_4_als_axpy\"),\n            \"_als_axpy\"\n        );\n        assert_eq!(\n            demangle(\"__pyx_fuse_1__pyx_f_8implicit_3bpr_has_non_zero\"),\n            \"bpr_has_non_zero\"\n        );\n    }\n\n    #[test]\n    fn test_source_map() {\n        let map = SourceMap::from_contents(\n            include_str!(\"../ci/testdata/cython_test.c\"),\n            \"cython_test.c\",\n            &None,\n        )\n        .unwrap();\n\n        // we don't have info on cython line numbers until line 1261\n        assert_eq!(map.lookup(1000), None);\n        // past the end of the file should also return none\n        assert_eq!(map.lookup(10000), None);\n\n        let lookup = |lineno: u32, cython_file: &str, cython_line: u32| match map.lookup(lineno) {\n            Some((file, line)) => {\n                assert_eq!(file, cython_file);\n                assert_eq!(line, &cython_line);\n            }\n            None => {\n                panic!(\n                    \"Failed to lookup line {} (expected {}:{})\",\n                    lineno, cython_file, cython_line\n                );\n            }\n        };\n        lookup(1298, \"cython_test.pyx\", 6);\n        lookup(1647, \"cython_test.pyx\", 10);\n        lookup(1763, \"cython_test.pyx\", 9);\n    }\n}\n"
  },
  {
    "path": "src/dump.rs",
    "content": "use anyhow::Error;\nuse console::{style, Term};\n\nuse crate::config::Config;\nuse crate::python_spy::PythonSpy;\nuse crate::stack_trace::StackTrace;\n\nuse remoteprocess::Pid;\n\npub fn print_traces(pid: Pid, config: &Config, parent: Option<Pid>) -> Result<(), Error> {\n    let mut process = PythonSpy::new(pid, config)?;\n    if config.dump_json {\n        let traces = process.get_stack_traces()?;\n        println!(\"{}\", serde_json::to_string_pretty(&traces)?);\n        return Ok(());\n    }\n\n    println!(\n        \"Process {}: {}\",\n        style(process.pid).bold().yellow(),\n        process.process.cmdline()?.join(\" \")\n    );\n\n    println!(\n        \"Python v{} ({})\",\n        style(&process.version).bold(),\n        style(process.process.exe()?).dim()\n    );\n\n    if let Some(parentpid) = parent {\n        let parentprocess = remoteprocess::Process::new(parentpid)?;\n        println!(\n            \"Parent Process {}: {}\",\n            style(parentpid).bold().yellow(),\n            parentprocess.cmdline()?.join(\" \")\n        );\n    }\n    println!();\n    let traces = process.get_stack_traces()?;\n    for trace in traces.iter().rev() {\n        print_trace(trace, true);\n        if config.subprocesses {\n            for (childpid, parentpid) in process\n                .process\n                .child_processes()\n                .expect(\"failed to get subprocesses\")\n            {\n                let term = Term::stdout();\n                let (_, width) = term.size();\n\n                println!(\"\\n{}\", &style(\"-\".repeat(width as usize)).dim());\n                // child_processes() returns the whole process tree, since we're recursing here\n                // though we could end up printing grandchild processes multiple times. Limit down\n                // to just once\n                if parentpid == pid {\n                    print_traces(childpid, config, Some(parentpid))?;\n                }\n            }\n        }\n    }\n    Ok(())\n}\n\npub fn print_trace(trace: &StackTrace, include_activity: bool) {\n    let thread_id = trace.format_threadid();\n\n    let status = if include_activity {\n        format!(\" ({})\", trace.status_str())\n    } else if trace.owns_gil {\n        \" (gil)\".to_owned()\n    } else {\n        \"\".to_owned()\n    };\n\n    match trace.thread_name.as_ref() {\n        Some(name) => {\n            println!(\n                \"Thread {}{}: \\\"{}\\\"\",\n                style(thread_id).bold().yellow(),\n                status,\n                name\n            );\n        }\n        None => {\n            println!(\"Thread {}{}\", style(thread_id).bold().yellow(), status);\n        }\n    };\n\n    for frame in &trace.frames {\n        let filename = match &frame.short_filename {\n            Some(f) => f,\n            None => &frame.filename,\n        };\n        if frame.line != 0 {\n            println!(\n                \"    {} ({}:{})\",\n                style(&frame.name).green(),\n                style(&filename).cyan(),\n                style(frame.line).dim()\n            );\n        } else {\n            println!(\n                \"    {} ({})\",\n                style(&frame.name).green(),\n                style(&filename).cyan()\n            );\n        }\n\n        if let Some(locals) = &frame.locals {\n            let mut shown_args = false;\n            let mut shown_locals = false;\n            for local in locals {\n                if local.arg && !shown_args {\n                    println!(\"        {}\", style(\"Arguments:\").dim());\n                    shown_args = true;\n                } else if !local.arg && !shown_locals {\n                    println!(\"        {}\", style(\"Locals:\").dim());\n                    shown_locals = true;\n                }\n\n                let repr = local.repr.as_deref().unwrap_or(\"?\");\n                println!(\"            {}: {}\", local.name, repr);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "src/flamegraph.rs",
    "content": "// This code is taken from the flamegraph.rs from rbspy\n// https://github.com/rbspy/rbspy/tree/master/src/ui/flamegraph.rs\n// licensed under the MIT License:\n/*\nMIT License\n\nCopyright (c) 2016 Julia Evans, Kamal Marhubi\nPortions (continuous integration setup) Copyright (c) 2016 Jorge Aparicio\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*/\n\nuse std::collections::HashMap;\nuse std::io::Write;\n\nuse anyhow::Error;\nuse inferno::flamegraph::{Direction, Options};\n\nuse crate::stack_trace::StackTrace;\n\npub struct Flamegraph {\n    pub counts: HashMap<String, usize>,\n    pub show_linenumbers: bool,\n}\n\nimpl Flamegraph {\n    pub fn new(show_linenumbers: bool) -> Flamegraph {\n        Flamegraph {\n            counts: HashMap::new(),\n            show_linenumbers,\n        }\n    }\n\n    pub fn increment(&mut self, trace: &StackTrace) -> std::io::Result<()> {\n        // convert the frame into a single ';' delimited String\n        let frame = trace\n            .frames\n            .iter()\n            .rev()\n            .map(|frame| {\n                let filename = match &frame.short_filename {\n                    Some(f) => f,\n                    None => &frame.filename,\n                };\n                if self.show_linenumbers && frame.line != 0 {\n                    format!(\"{} ({}:{})\", frame.name, filename, frame.line)\n                } else if !filename.is_empty() {\n                    format!(\"{} ({})\", frame.name, filename)\n                } else {\n                    frame.name.clone()\n                }\n            })\n            .collect::<Vec<String>>()\n            .join(\";\");\n        // update counts for that frame\n        *self.counts.entry(frame).or_insert(0) += 1;\n        Ok(())\n    }\n\n    fn get_lines(&self) -> Vec<String> {\n        self.counts\n            .iter()\n            .map(|(k, v)| format!(\"{k} {v}\"))\n            .collect()\n    }\n\n    pub fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        let mut opts = Options::default();\n        opts.direction = Direction::Inverted;\n        opts.min_width = 0.1;\n        opts.title = std::env::args().collect::<Vec<String>>().join(\" \");\n\n        let lines = self.get_lines();\n        inferno::flamegraph::from_lines(&mut opts, lines.iter().map(|x| x.as_str()), w)\n            .map_err(|e| format_err!(\"Failed to write flamegraph: {}\", e))?;\n        Ok(())\n    }\n\n    pub fn write_raw(&self, w: &mut dyn Write) -> Result<(), Error> {\n        for line in self.get_lines() {\n            w.write_all(line.as_bytes())?;\n            w.write_all(b\"\\n\")?;\n        }\n        Ok(())\n    }\n}\n"
  },
  {
    "path": "src/lib.rs",
    "content": "//! py-spy: a sampling profiler for python programs\n//!\n//! This crate lets you use py-spy as a rust library, and gather stack traces from\n//! your python process programmatically.\n//!\n//! # Example:\n//!\n//! ```rust,no_run\n//! fn print_python_stacks(pid: py_spy::Pid) -> Result<(), anyhow::Error> {\n//!     // Create a new PythonSpy object with the default config options\n//!     let config = py_spy::Config::default();\n//!     let mut process = py_spy::PythonSpy::new(pid, &config)?;\n//!\n//!     // get stack traces for each thread in the process\n//!     let traces = process.get_stack_traces()?;\n//!\n//!     // Print out the python stack for each thread\n//!     for trace in traces {\n//!         println!(\"Thread {:#X} ({})\", trace.thread_id, trace.status_str());\n//!         for frame in &trace.frames {\n//!             println!(\"\\t {} ({}:{})\", frame.name, frame.filename, frame.line);\n//!         }\n//!     }\n//!     Ok(())\n//! }\n//! ```\n#[macro_use]\nextern crate anyhow;\n#[macro_use]\nextern crate log;\n\npub mod binary_parser;\npub mod config;\n#[cfg(target_os = \"linux\")]\npub mod coredump;\n#[cfg(feature = \"unwind\")]\nmod cython;\npub mod dump;\n#[cfg(feature = \"unwind\")]\nmod native_stack_trace;\nmod python_bindings;\nmod python_data_access;\nmod python_interpreters;\npub mod python_process_info;\npub mod python_spy;\nmod python_threading;\npub mod sampler;\npub mod stack_trace;\npub mod timer;\nmod utils;\nmod version;\n\npub use config::Config;\npub use python_spy::PythonSpy;\npub use remoteprocess::Pid;\npub use stack_trace::Frame;\npub use stack_trace::StackTrace;\n"
  },
  {
    "path": "src/main.rs",
    "content": "#[macro_use]\nextern crate anyhow;\n#[macro_use]\nextern crate log;\n\nmod binary_parser;\nmod chrometrace;\nmod config;\nmod console_viewer;\n#[cfg(target_os = \"linux\")]\nmod coredump;\n#[cfg(feature = \"unwind\")]\nmod cython;\nmod dump;\nmod flamegraph;\n#[cfg(feature = \"unwind\")]\nmod native_stack_trace;\nmod python_bindings;\nmod python_data_access;\nmod python_interpreters;\nmod python_process_info;\nmod python_spy;\nmod python_threading;\nmod sampler;\nmod speedscope;\nmod stack_trace;\nmod timer;\nmod utils;\nmod version;\n\nuse std::io::{Read, Write};\nuse std::sync::atomic::{AtomicBool, Ordering};\nuse std::sync::Arc;\nuse std::time::Duration;\n\nuse anyhow::Error;\nuse console::style;\n\nuse config::{Config, FileFormat, RecordDuration};\nuse console_viewer::ConsoleViewer;\nuse stack_trace::{Frame, StackTrace};\n\nuse chrono::{Local, SecondsFormat};\n\n#[cfg(unix)]\nfn permission_denied(err: &Error) -> bool {\n    err.chain().any(|cause| {\n        if let Some(ioerror) = cause.downcast_ref::<std::io::Error>() {\n            ioerror.kind() == std::io::ErrorKind::PermissionDenied\n        } else if let Some(remoteprocess::Error::IOError(ioerror)) =\n            cause.downcast_ref::<remoteprocess::Error>()\n        {\n            ioerror.kind() == std::io::ErrorKind::PermissionDenied\n        } else {\n            false\n        }\n    })\n}\n\nfn sample_console(pid: remoteprocess::Pid, config: &Config) -> Result<(), Error> {\n    let sampler = sampler::Sampler::new(pid, config)?;\n\n    let display = match remoteprocess::Process::new(pid)?.cmdline() {\n        Ok(cmdline) => cmdline.join(\" \"),\n        Err(_) => format!(\"Pid {pid}\"),\n    };\n\n    let mut console =\n        ConsoleViewer::new(config.show_line_numbers, &display, &sampler.version, config)?;\n    for sample in sampler {\n        if let Some(elapsed) = sample.late {\n            console.increment_late_sample(elapsed);\n        }\n\n        if let Some(errors) = sample.sampling_errors {\n            for (_, error) in errors {\n                console.increment_error(&error)?\n            }\n        }\n        console.increment(&sample.traces)?;\n    }\n\n    if !config.subprocesses {\n        println!(\"\\nprocess {pid} ended\");\n    }\n    Ok(())\n}\n\npub trait Recorder {\n    fn increment(&mut self, trace: &StackTrace) -> Result<(), Error>;\n    fn write(&self, w: &mut dyn Write) -> Result<(), Error>;\n}\n\nimpl Recorder for speedscope::Stats {\n    fn increment(&mut self, trace: &StackTrace) -> Result<(), Error> {\n        Ok(self.record(trace)?)\n    }\n    fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        self.write(w)\n    }\n}\n\nimpl Recorder for flamegraph::Flamegraph {\n    fn increment(&mut self, trace: &StackTrace) -> Result<(), Error> {\n        Ok(self.increment(trace)?)\n    }\n    fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        self.write(w)\n    }\n}\n\nimpl Recorder for chrometrace::Chrometrace {\n    fn increment(&mut self, trace: &StackTrace) -> Result<(), Error> {\n        Ok(self.increment(trace)?)\n    }\n    fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        self.write(w)\n    }\n}\n\npub struct RawFlamegraph(flamegraph::Flamegraph);\n\nimpl Recorder for RawFlamegraph {\n    fn increment(&mut self, trace: &StackTrace) -> Result<(), Error> {\n        Ok(self.0.increment(trace)?)\n    }\n\n    fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        self.0.write_raw(w)\n    }\n}\n\nfn record_samples(pid: remoteprocess::Pid, config: &Config) -> Result<(), Error> {\n    let mut output: Box<dyn Recorder> = match config.format {\n        Some(FileFormat::flamegraph) => {\n            Box::new(flamegraph::Flamegraph::new(config.show_line_numbers))\n        }\n        Some(FileFormat::speedscope) => Box::new(speedscope::Stats::new(config)),\n        Some(FileFormat::raw) => Box::new(RawFlamegraph(flamegraph::Flamegraph::new(\n            config.show_line_numbers,\n        ))),\n        Some(FileFormat::chrometrace) => {\n            Box::new(chrometrace::Chrometrace::new(config.show_line_numbers))\n        }\n        None => return Err(format_err!(\"A file format is required to record samples\")),\n    };\n\n    let filename = match config.filename.clone() {\n        Some(filename) => filename,\n        None => {\n            let ext = match config.format.as_ref() {\n                Some(FileFormat::flamegraph) => \"svg\",\n                Some(FileFormat::speedscope) => \"json\",\n                Some(FileFormat::raw) => \"txt\",\n                Some(FileFormat::chrometrace) => \"json\",\n                None => return Err(format_err!(\"A file format is required to record samples\")),\n            };\n            let local_time = Local::now().to_rfc3339_opts(SecondsFormat::Secs, true);\n            let name = match config.python_program.as_ref() {\n                Some(prog) => prog[0].to_string(),\n                None => match config.pid.as_ref() {\n                    Some(pid) => pid.to_string(),\n                    None => String::from(\"unknown\"),\n                },\n            };\n            format!(\"{name}-{local_time}.{ext}\")\n        }\n    };\n\n    let sampler = sampler::Sampler::new(pid, config)?;\n\n    // if we're not showing a progress bar, it's probably because we've spawned the process and\n    // are displaying its stderr/stdout. In that case add a prefix to our println messages so\n    // that we can distinguish\n    let lede = if config.hide_progress {\n        format!(\"{}{} \", style(\"py-spy\").bold().green(), style(\">\").dim())\n    } else {\n        \"\".to_owned()\n    };\n\n    let max_intervals = match &config.duration {\n        RecordDuration::Unlimited => {\n            println!(\n                \"{}Sampling process {} times a second. Press Control-C to exit.\",\n                lede, config.sampling_rate\n            );\n            None\n        }\n        RecordDuration::Seconds(sec) => {\n            println!(\n                \"{}Sampling process {} times a second for {} seconds. Press Control-C to exit.\",\n                lede, config.sampling_rate, sec\n            );\n            Some(sec * config.sampling_rate)\n        }\n    };\n\n    use indicatif::ProgressBar;\n    let progress = match (config.hide_progress, &config.duration) {\n        (true, _) => ProgressBar::hidden(),\n        (false, RecordDuration::Seconds(samples)) => ProgressBar::new(*samples),\n        (false, RecordDuration::Unlimited) => {\n            #[allow(clippy::let_and_return)]\n            let progress = ProgressBar::new_spinner();\n\n            // The spinner on windows doesn't look great: was replaced by a [?] character at least on\n            // my system. Replace unicode spinners with just how many seconds have elapsed\n            #[cfg(windows)]\n            progress.set_style(\n                indicatif::ProgressStyle::default_spinner()\n                    .template(\"[{elapsed}] {msg}\")\n                    .unwrap(),\n            );\n            progress\n        }\n    };\n\n    let mut errors = 0;\n    let mut intervals = 0;\n    let mut samples = 0;\n    println!();\n\n    let running = Arc::new(AtomicBool::new(true));\n    let r = running.clone();\n    ctrlc::set_handler(move || {\n        r.store(false, Ordering::SeqCst);\n    })?;\n\n    let mut exit_message = \"Stopped sampling because process exited\";\n    let mut last_late_message = std::time::Instant::now();\n\n    for mut sample in sampler {\n        if let Some(delay) = sample.late {\n            if delay > Duration::from_secs(1) {\n                if config.hide_progress {\n                    // display a message if we're late, but don't spam the log\n                    let now = std::time::Instant::now();\n                    if now - last_late_message > Duration::from_secs(1) {\n                        last_late_message = now;\n                        println!(\"{lede}{delay:.2?} behind in sampling, results may be inaccurate. Try reducing the sampling rate\")\n                    }\n                } else {\n                    let term = console::Term::stdout();\n                    term.move_cursor_up(2)?;\n                    println!(\"{delay:.2?} behind in sampling, results may be inaccurate. Try reducing the sampling rate.\");\n                    term.move_cursor_down(1)?;\n                }\n            }\n        }\n\n        if !running.load(Ordering::SeqCst) {\n            exit_message = \"Stopped sampling because Control-C pressed\";\n            break;\n        }\n\n        intervals += 1;\n        if let Some(max_intervals) = max_intervals {\n            if intervals >= max_intervals {\n                exit_message = \"\";\n                break;\n            }\n        }\n\n        for trace in sample.traces.iter_mut() {\n            if !(config.include_idle || trace.active) {\n                continue;\n            }\n\n            if config.gil_only && !trace.owns_gil {\n                continue;\n            }\n\n            if config.include_thread_ids {\n                let threadid = trace.format_threadid();\n                let thread_fmt = if let Some(thread_name) = &trace.thread_name {\n                    format!(\"thread ({threadid}): {thread_name}\")\n                } else {\n                    format!(\"thread ({threadid})\")\n                };\n                trace.frames.push(Frame {\n                    name: thread_fmt,\n                    filename: String::from(\"\"),\n                    module: None,\n                    short_filename: None,\n                    line: 0,\n                    locals: None,\n                    is_entry: true,\n                    is_shim_entry: true,\n                });\n            }\n\n            if let Some(process_info) = trace.process_info.as_ref() {\n                trace.frames.push(process_info.to_frame());\n                let mut parent = process_info.parent.as_ref();\n                while parent.is_some() {\n                    if let Some(process_info) = parent {\n                        trace.frames.push(process_info.to_frame());\n                        parent = process_info.parent.as_ref();\n                    }\n                }\n            }\n\n            samples += 1;\n            output.increment(trace)?;\n        }\n\n        if let Some(sampling_errors) = sample.sampling_errors {\n            for (pid, e) in sampling_errors {\n                warn!(\"Failed to get stack trace from {}: {}\", pid, e);\n                errors += 1;\n            }\n        }\n\n        if config.duration == RecordDuration::Unlimited {\n            let msg = if errors > 0 {\n                format!(\"Collected {samples} samples ({errors} errors)\")\n            } else {\n                format!(\"Collected {samples} samples\")\n            };\n            progress.set_message(msg);\n        }\n        progress.inc(1);\n    }\n    progress.finish();\n    // write out a message here (so as not to interfere with progress bar) if we ended earlier\n    if !exit_message.is_empty() {\n        println!(\"\\n{lede}{exit_message}\");\n    }\n\n    {\n        let mut out_file = std::fs::File::create(&filename)?;\n        output.write(&mut out_file)?;\n    }\n\n    match config.format.as_ref().unwrap() {\n        FileFormat::flamegraph => {\n            println!(\n                \"{lede}Wrote flamegraph data to '{filename}'. Samples: {samples} Errors: {errors}\"\n            );\n            // open generated flame graph in the browser on OSX (theory being that on linux\n            // you might be SSH'ed into a server somewhere and this isn't desired, but on\n            // that is pretty unlikely for osx) (note to self: xdg-open will open on linux)\n            #[cfg(target_os = \"macos\")]\n            std::process::Command::new(\"open\").arg(&filename).spawn()?;\n        }\n        FileFormat::speedscope => {\n            println!(\n                \"{lede}Wrote speedscope file to '{filename}'. Samples: {samples} Errors: {errors}\"\n            );\n            println!(\"{lede}Visit https://www.speedscope.app/ to view\");\n        }\n        FileFormat::raw => {\n            println!(\n                \"{lede}Wrote raw flamegraph data to '{filename}'. Samples: {samples} Errors: {errors}\"\n            );\n            println!(\"{lede}You can use the flamegraph.pl script from https://github.com/brendangregg/flamegraph to generate a SVG\");\n        }\n        FileFormat::chrometrace => {\n            println!(\n                \"{lede}Wrote chrome trace to '{filename}'. Samples: {samples} Errors: {errors}\"\n            );\n            println!(\"{lede}Visit chrome://tracing or https://ui.perfetto.dev/ to view\");\n        }\n    };\n\n    Ok(())\n}\n\nfn run_spy_command(pid: remoteprocess::Pid, config: &config::Config) -> Result<(), Error> {\n    match config.command.as_ref() {\n        \"dump\" => {\n            dump::print_traces(pid, config, None)?;\n        }\n        \"record\" => {\n            record_samples(pid, config)?;\n        }\n        \"top\" => {\n            sample_console(pid, config)?;\n        }\n        _ => {\n            // shouldn't happen\n            return Err(format_err!(\"Unknown command {}\", config.command));\n        }\n    }\n    Ok(())\n}\n\nfn pyspy_main() -> Result<(), Error> {\n    let config = config::Config::from_commandline();\n\n    #[cfg(target_os = \"macos\")]\n    {\n        if unsafe { libc::geteuid() } != 0 {\n            eprintln!(\"This program requires root on OSX.\");\n            eprintln!(\"Try running again with elevated permissions by going 'sudo !!'\");\n            std::process::exit(1)\n        }\n    }\n\n    #[cfg(target_os = \"linux\")]\n    {\n        if let Some(ref core_filename) = config.core_filename {\n            let core = coredump::PythonCoreDump::new(std::path::Path::new(&core_filename))?;\n            let traces = core.get_stack(&config)?;\n            return core.print_traces(&traces, &config);\n        }\n    }\n\n    if let Some(pid) = config.pid {\n        run_spy_command(pid, &config)?;\n    } else if let Some(ref subprocess) = config.python_program {\n        // Dump out stdout/stderr from the process to a temp file, so we can view it later if needed\n        let mut process_output = tempfile::NamedTempFile::new()?;\n\n        let mut command = std::process::Command::new(&subprocess[0]);\n        #[cfg(unix)]\n        {\n            // Drop root permissions if possible: https://github.com/benfred/py-spy/issues/116\n            if unsafe { libc::geteuid() } == 0 {\n                if let Ok(sudo_uid) = std::env::var(\"SUDO_UID\") {\n                    use std::os::unix::process::CommandExt;\n                    info!(\n                        \"Dropping root and running python command as {}\",\n                        std::env::var(\"SUDO_USER\")?\n                    );\n                    command.uid(sudo_uid.parse::<u32>()?);\n                }\n            }\n        }\n\n        let mut command = command.args(&subprocess[1..]);\n\n        if config.capture_output {\n            command = command\n                .stdin(std::process::Stdio::null())\n                .stdout(process_output.reopen()?)\n                .stderr(process_output.reopen()?)\n        }\n\n        let mut command = command\n            .spawn()\n            .map_err(|e| format_err!(\"Failed to create process '{}': {}\", subprocess[0], e))?;\n\n        #[cfg(target_os = \"macos\")]\n        {\n            // sleep just in case: https://jvns.ca/blog/2018/01/28/mac-freeze/\n            std::thread::sleep(Duration::from_millis(50));\n        }\n        let result = run_spy_command(command.id() as _, &config);\n\n        // check exit code of subprocess\n        std::thread::sleep(Duration::from_millis(1));\n        let success = match command.try_wait()? {\n            Some(exit) => exit.success(),\n            // if process hasn't finished, assume success\n            None => true,\n        };\n\n        // if we failed for any reason, dump out stderr from child process here\n        // (could have useful error message)\n        if config.capture_output && (!success || result.is_err()) {\n            let mut buffer = String::new();\n            if process_output.read_to_string(&mut buffer).is_ok() {\n                eprintln!(\"{buffer}\");\n            }\n        }\n\n        // kill it so we don't have dangling processes\n        if command.kill().is_err() {\n            // I don't actually care if we failed to kill ... most times process is already done\n            // eprintln!(\"Error killing child process {}\", e);\n        }\n        return result;\n    }\n\n    Ok(())\n}\n\nfn main() {\n    env_logger::builder()\n        .format_timestamp_nanos()\n        .try_init()\n        .unwrap();\n\n    if let Err(err) = pyspy_main() {\n        #[cfg(unix)]\n        {\n            if permission_denied(&err) {\n                // Got a permission denied error, if we're not running as root - ask to use sudo\n                if unsafe { libc::geteuid() } != 0 {\n                    eprintln!(\"Permission Denied: Try running again with elevated permissions by going 'sudo env \\\"PATH=$PATH\\\" !!'\");\n                    std::process::exit(1);\n                }\n\n                // We got a permission denied error running as root, check to see if we're running\n                // as docker, and if so ask the user to check the SYS_PTRACE capability is added\n                // Otherwise, fall through to the generic error handling\n                #[cfg(target_os = \"linux\")]\n                if let Ok(cgroups) = std::fs::read_to_string(\"/proc/self/cgroup\") {\n                    if cgroups.contains(\"/docker/\") {\n                        eprintln!(\"Permission Denied\");\n                        eprintln!(\"\\nIt looks like you are running in a docker container. Please make sure \\\n                        you started your container with the SYS_PTRACE capability. See \\\n                        https://github.com/benfred/py-spy#how-do-i-run-py-spy-in-docker for \\\n                        more details\");\n                        std::process::exit(1);\n                    }\n                }\n            }\n        }\n\n        eprintln!(\"Error: {err}\");\n        for (i, suberror) in err.chain().enumerate() {\n            if i > 0 {\n                eprintln!(\"Reason: {suberror}\");\n            }\n        }\n        std::process::exit(1);\n    }\n}\n"
  },
  {
    "path": "src/native_stack_trace.rs",
    "content": "use anyhow::Error;\nuse std::collections::HashSet;\nuse std::num::NonZeroUsize;\n\nuse cpp_demangle::{BorrowedSymbol, DemangleOptions};\nuse lazy_static::lazy_static;\nuse lru::LruCache;\nuse remoteprocess::{self, Pid};\n\nuse crate::binary_parser::BinaryInfo;\nuse crate::cython;\nuse crate::stack_trace::Frame;\nuse crate::utils::resolve_filename;\n\npub struct NativeStack {\n    should_reload: bool,\n    python: Option<BinaryInfo>,\n    libpython: Option<BinaryInfo>,\n    cython_maps: cython::SourceMaps,\n    unwinder: remoteprocess::Unwinder,\n    symbolicator: remoteprocess::Symbolicator,\n    // TODO: right now on windows if we don't hold on the process handle unwinding will fail\n    #[allow(dead_code)]\n    process: remoteprocess::Process,\n    symbol_cache: LruCache<u64, remoteprocess::StackFrame>,\n}\n\nimpl NativeStack {\n    pub fn new(\n        pid: Pid,\n        python: Option<BinaryInfo>,\n        libpython: Option<BinaryInfo>,\n    ) -> Result<NativeStack, Error> {\n        let cython_maps = cython::SourceMaps::new();\n\n        let process = remoteprocess::Process::new(pid)?;\n        let unwinder = process.unwinder()?;\n        let symbolicator = process.symbolicator()?;\n\n        Ok(NativeStack {\n            cython_maps,\n            unwinder,\n            symbolicator,\n            should_reload: false,\n            python,\n            libpython,\n            process,\n            symbol_cache: LruCache::new(NonZeroUsize::new(65536).unwrap()),\n        })\n    }\n\n    pub fn merge_native_thread(\n        &mut self,\n        frames: &Vec<Frame>,\n        thread: &remoteprocess::Thread,\n    ) -> Result<Vec<Frame>, Error> {\n        if self.should_reload {\n            self.symbolicator.reload()?;\n            self.should_reload = false;\n        }\n\n        // get the native stack from the thread\n        let native_stack = self.get_thread(thread)?;\n\n        // TODO: merging the two stack together could happen outside of thread lock\n        self.merge_native_stack(frames, native_stack)\n    }\n    pub fn merge_native_stack(\n        &mut self,\n        frames: &Vec<Frame>,\n        native_stack: Vec<u64>,\n    ) -> Result<Vec<Frame>, Error> {\n        let mut python_frame_index = 0;\n        let mut merged = Vec::new();\n\n        // merge the native_stack and python stack together\n        for addr in native_stack {\n            // check in the symbol cache if we have looked up this symbol yet\n            let cached_symbol = self.symbol_cache.get(&addr).cloned();\n\n            // merges a remoteprocess::StackFrame into the current merged vec\n            let is_python_addr = self.python.as_ref().map_or(false, |m| m.contains(addr))\n                || self.libpython.as_ref().map_or(false, |m| m.contains(addr));\n            let merge_frame = &mut |frame: &remoteprocess::StackFrame| {\n                match self.get_merge_strategy(is_python_addr, frame) {\n                    MergeType::Ignore => {}\n                    MergeType::MergeNativeFrame => {\n                        if let Some(python_frame) = self.translate_native_frame(frame) {\n                            merged.push(python_frame);\n                        }\n                    }\n                    MergeType::MergePythonFrame => {\n                        // if we have a corresponding python frame for the evalframe\n                        // merge it into the stack. (if we're out of bounds a later\n                        // check will pick up - and report overall totals mismatch)\n\n                        // Merge all python frames until we hit one with `is_entry` (py 3.11)\n                        // or `is_entry_shim` (py 3.12+)\n                        while python_frame_index < frames.len() {\n                            merged.push(frames[python_frame_index].clone());\n\n                            if frames[python_frame_index].is_entry\n                                || frames[python_frame_index].is_shim_entry\n                            {\n                                break;\n                            }\n\n                            python_frame_index += 1;\n                        }\n                        python_frame_index += 1;\n                    }\n                }\n            };\n\n            if let Some(frame) = cached_symbol {\n                merge_frame(&frame);\n                continue;\n            }\n\n            // Keep track of the first symbolicated frame for caching. We don't cache anything (yet) where\n            // symoblicationg returns multiple frames for an address, like in the case of inlined function calls.\n            // so track how many frames we get for the address, and only update cache in the happy case\n            // of 1 frame\n            let mut symbolicated_count = 0;\n            let mut first_frame = None;\n\n            self.symbolicator\n                .symbolicate(\n                    addr,\n                    !is_python_addr,\n                    &mut |frame: &remoteprocess::StackFrame| {\n                        symbolicated_count += 1;\n                        if symbolicated_count == 1 {\n                            first_frame = Some(frame.clone());\n                        }\n                        merge_frame(frame);\n                    },\n                )\n                .unwrap_or_else(|e| {\n                    if let remoteprocess::Error::NoBinaryForAddress(_) = e {\n                        debug!(\n                            \"don't have a binary for symbols at 0x{:x} - reloading\",\n                            addr\n                        );\n                        self.should_reload = true;\n                    }\n                    // if we can't symbolicate, just insert a stub here.\n                    merged.push(Frame {\n                        filename: \"?\".to_owned(),\n                        name: format!(\"0x{:x}\", addr),\n                        line: 0,\n                        short_filename: None,\n                        module: None,\n                        locals: None,\n                        is_entry: true,\n                        is_shim_entry: true,\n                    });\n                });\n\n            if symbolicated_count == 1 {\n                self.symbol_cache.put(addr, first_frame.unwrap());\n            }\n        }\n\n        if python_frame_index != frames.len() {\n            if python_frame_index == 0 {\n                // I've seen a problem come up a bunch where we only get 1-2 native stack traces and then it fails\n                // (with a valid python stack trace on top of that). both the gimli and libunwind unwinder don't\n                // return the full stack, and connecting up to the process with GDB brings a corrupt stack error:\n                //    from /home/ben/anaconda3/lib/python3.7/site-packages/numpy/core/../../../../libmkl_avx512.so\n                //    Backtrace stopped: previous frame inner to this frame (corrupt stack?)\n                //\n                // rather than fail here, lets just insert the python frames after the native frames\n                for frame in frames {\n                    merged.push(frame.clone());\n                }\n            } else if python_frame_index == frames.len() + 1 {\n                // if we have seen exactly one more python frame in the native stack than the python stack - let it go.\n                // (can happen when the python stack has been unwound, but haven't exited the PyEvalFrame function\n                // yet)\n                info!(\n                    \"Have {} native and {} python threads in stack - allowing for now\",\n                    python_frame_index,\n                    frames.len()\n                );\n            } else {\n                return Err(format_err!(\n                    \"Failed to merge native and python frames (Have {} native and {} python)\",\n                    python_frame_index,\n                    frames.len()\n                ));\n            }\n        }\n\n        // TODO: can this by merged into translate_frame?\n        for frame in merged.iter_mut() {\n            self.cython_maps.translate(frame);\n        }\n\n        Ok(merged)\n    }\n\n    fn get_merge_strategy(\n        &self,\n        check_python: bool,\n        frame: &remoteprocess::StackFrame,\n    ) -> MergeType {\n        if check_python {\n            if let Some(ref function) = frame.function {\n                // We want to include some internal python functions. For example, calls like time.sleep\n                // or os.kill etc are implemented as builtins in the interpreter and filtering them out\n                // is misleading. Create a set of whitelisted python function prefixes to include\n                lazy_static! {\n                    static ref WHITELISTED_PREFIXES: HashSet<&'static str> = {\n                        let mut prefixes = HashSet::new();\n                        prefixes.insert(\"time\");\n                        prefixes.insert(\"sys\");\n                        prefixes.insert(\"gc\");\n                        prefixes.insert(\"os\");\n                        prefixes.insert(\"unicode\");\n                        prefixes.insert(\"thread\");\n                        prefixes.insert(\"stringio\");\n                        prefixes.insert(\"sre\");\n                        // likewise reasoning about lock contention inside python is also useful\n                        prefixes.insert(\"PyGilState\");\n                        prefixes.insert(\"PyThread\");\n                        prefixes.insert(\"lock\");\n                        prefixes\n                    };\n                }\n\n                // Figure out the merge type by looking at the function name, frames that\n                // are used in evaluating python code are ignored, aside from PyEval_EvalFrame*\n                // which is replaced by the function from the python stack\n                // note: we're splitting on both _ and . to handle symbols like\n                // _PyEval_EvalFrameDefault.cold.2962\n                let mut tokens = function.split(&['_', '.'][..]).filter(|&x| !x.is_empty());\n                match tokens.next() {\n                    Some(\"PyEval\") => match tokens.next() {\n                        Some(\"EvalFrameDefault\") => MergeType::MergePythonFrame,\n                        Some(\"EvalFrameEx\") => MergeType::MergePythonFrame,\n                        _ => MergeType::Ignore,\n                    },\n                    Some(prefix) if WHITELISTED_PREFIXES.contains(prefix) => {\n                        MergeType::MergeNativeFrame\n                    }\n                    _ => MergeType::Ignore,\n                }\n            } else {\n                // is this correct? if we don't have a function name and in python binary should ignore?\n                MergeType::Ignore\n            }\n        } else {\n            MergeType::MergeNativeFrame\n        }\n    }\n\n    /// translates a native frame into a optional frame. none indicates we should ignore this frame\n    fn translate_native_frame(&self, frame: &remoteprocess::StackFrame) -> Option<Frame> {\n        match &frame.function {\n            Some(func) => {\n                if ignore_frame(func, &frame.module) {\n                    return None;\n                }\n\n                // Get the filename/line/function name here\n                let line = frame.line.unwrap_or(0) as i32;\n\n                // try to resolve the filename relative to the module if given\n                let filename = match frame.filename.as_ref() {\n                    Some(filename) => resolve_filename(filename, &frame.module)\n                        .unwrap_or_else(|| filename.clone()),\n                    None => frame.module.clone(),\n                };\n\n                let mut demangled = None;\n                if func.starts_with('_') {\n                    if let Ok((sym, _)) = BorrowedSymbol::with_tail(func.as_bytes()) {\n                        let options = DemangleOptions::new().no_params().no_return_type();\n                        if let Ok(sym) = sym.demangle(&options) {\n                            demangled = Some(sym);\n                        }\n                    }\n                }\n                let name = demangled.as_ref().unwrap_or(func);\n                if cython::ignore_frame(name) {\n                    return None;\n                }\n                let name = cython::demangle(name).to_owned();\n                Some(Frame {\n                    filename,\n                    line,\n                    name,\n                    short_filename: None,\n                    module: Some(frame.module.clone()),\n                    locals: None,\n                    is_entry: true,\n                    is_shim_entry: true,\n                })\n            }\n            None => Some(Frame {\n                filename: frame.module.clone(),\n                name: format!(\"0x{:x}\", frame.addr),\n                locals: None,\n                line: 0,\n                short_filename: None,\n                module: Some(frame.module.clone()),\n                is_entry: true,\n                is_shim_entry: true,\n            }),\n        }\n    }\n\n    fn get_thread(&mut self, thread: &remoteprocess::Thread) -> Result<Vec<u64>, Error> {\n        let mut stack = Vec::new();\n        for ip in self.unwinder.cursor(thread)? {\n            stack.push(ip?);\n        }\n        Ok(stack)\n    }\n}\n\n#[derive(Debug)]\nenum MergeType {\n    Ignore,\n    MergePythonFrame,\n    MergeNativeFrame,\n}\n\n// the intent here is to remove top-level libc or pthreads calls\n// from the stack traces. This almost certainly can be done better\n#[cfg(target_os = \"linux\")]\nfn ignore_frame(function: &str, module: &str) -> bool {\n    if function == \"__libc_start_main\" && module.contains(\"/libc\") {\n        return true;\n    }\n\n    if function == \"__clone\" && module.contains(\"/libc\") {\n        return true;\n    }\n\n    if function == \"start_thread\" && module.contains(\"/libpthread\") {\n        return true;\n    }\n\n    false\n}\n\n#[cfg(target_os = \"macos\")]\nfn ignore_frame(function: &str, module: &str) -> bool {\n    if function == \"_start\" && module.contains(\"/libdyld.dylib\") {\n        return true;\n    }\n\n    if function == \"__pthread_body\" && module.contains(\"/libsystem_pthread\") {\n        return true;\n    }\n\n    if function == \"_thread_start\" && module.contains(\"/libsystem_pthread\") {\n        return true;\n    }\n\n    false\n}\n\n#[cfg(windows)]\nfn ignore_frame(function: &str, module: &str) -> bool {\n    if function == \"RtlUserThreadStart\" && module.to_lowercase().ends_with(\"ntdll.dll\") {\n        return true;\n    }\n\n    if function == \"BaseThreadInitThunk\" && module.to_lowercase().ends_with(\"kernel32.dll\") {\n        return true;\n    }\n\n    false\n}\n"
  },
  {
    "path": "src/python_bindings/mod.rs",
    "content": "pub mod v2_7_15;\npub mod v3_10_0;\npub mod v3_11_0;\npub mod v3_12_0;\npub mod v3_13_0;\npub mod v3_3_7;\npub mod v3_5_5;\npub mod v3_6_6;\npub mod v3_7_0;\npub mod v3_8_0;\npub mod v3_9_5;\n\n// currently the PyRuntime struct used from Python 3.7 on really can't be\n// exposed in a cross platform way using bindgen. PyRuntime has several mutex's\n// as member variables, and these have different sizes depending on the operating\n// system and system architecture.\n// Instead we will define some constants here that define valid offsets for the\n// member variables we care about here\n// (note 'generate_bindings.py' has code to figure out these offsets)\npub mod pyruntime {\n    use crate::version::Version;\n\n    // There aren't any OS specific members of PyRuntime before pyinterpreters.head,\n    // so these offsets should be valid for all OS'es\n    #[cfg(target_arch = \"x86\")]\n    pub fn get_interp_head_offset(version: &Version) -> usize {\n        match version {\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" | \"a2\" => 16,\n                \"a3\" | \"a4\" => 20,\n                _ => 24,\n            },\n            Version {\n                major: 3,\n                minor: 8..=10,\n                ..\n            } => 24,\n            _ => 16,\n        }\n    }\n\n    #[cfg(target_arch = \"arm\")]\n    pub fn get_interp_head_offset(version: &Version) -> usize {\n        match version {\n            Version {\n                major: 3, minor: 7, ..\n            } => 20,\n            _ => 28,\n        }\n    }\n\n    #[cfg(target_pointer_width = \"64\")]\n    pub fn get_interp_head_offset(version: &Version) -> usize {\n        match version {\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" | \"a2\" => 24,\n                _ => 32,\n            },\n            Version {\n                major: 3,\n                minor: 8..=10,\n                ..\n            } => 32,\n            Version {\n                major: 3,\n                minor: 11..=12,\n                ..\n            } => 40,\n            _ => 24,\n        }\n    }\n\n    // getting gilstate.tstate_current is different for all OS\n    // and is also different for each python version, and even\n    // between v3.8.0a1 and v3.8.0a2 =(\n    #[cfg(target_os = \"macos\")]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0..=3,\n                ..\n            } => Some(1440),\n            Version {\n                major: 3, minor: 7, ..\n            } => Some(1528),\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" => Some(1432),\n                \"a2\" => Some(888),\n                \"a3\" | \"a4\" => Some(1448),\n                _ => Some(1416),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(1416),\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(616),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => Some(624),\n            _ => None,\n        }\n    }\n\n    #[cfg(all(target_os = \"linux\", target_arch = \"x86\"))]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3, minor: 7, ..\n            } => Some(796),\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" => Some(792),\n                \"a2\" => Some(512),\n                \"a3\" | \"a4\" => Some(800),\n                _ => Some(788),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(788),\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(352),\n            _ => None,\n        }\n    }\n\n    #[cfg(all(target_os = \"linux\", target_arch = \"arm\"))]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3, minor: 7, ..\n            } => Some(828),\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(804),\n            Version {\n                major: 3,\n                minor: 9..=11,\n                ..\n            } => Some(364),\n            _ => None,\n        }\n    }\n\n    #[cfg(all(target_os = \"linux\", target_arch = \"aarch64\"))]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0..=3,\n                ..\n            } => Some(1408),\n            Version {\n                major: 3, minor: 7, ..\n            } => Some(1496),\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(1384),\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(584),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => Some(592),\n            _ => None,\n        }\n    }\n\n    #[cfg(all(target_os = \"linux\", target_arch = \"x86_64\"))]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0..=3,\n                ..\n            } => Some(1392),\n            Version {\n                major: 3, minor: 7, ..\n            } => Some(1480),\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" => Some(1384),\n                \"a2\" => Some(840),\n                \"a3\" | \"a4\" => Some(1400),\n                _ => Some(1368),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => match version.build_metadata.as_deref() {\n                Some(\"cinder\") => Some(1384),\n                _ => Some(1368),\n            },\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(568),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => Some(576),\n            _ => None,\n        }\n    }\n\n    #[cfg(all(\n        target_os = \"linux\",\n        any(\n            target_arch = \"powerpc64\",\n            target_arch = \"powerpc\",\n            target_arch = \"mips\"\n        )\n    ))]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        None\n    }\n\n    #[cfg(windows)]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0..=3,\n                ..\n            } => Some(1320),\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" => Some(1312),\n                \"a2\" => Some(768),\n                \"a3\" | \"a4\" => Some(1328),\n                _ => Some(1296),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(1296),\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(496),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => Some(504),\n            _ => None,\n        }\n    }\n\n    #[cfg(target_os = \"freebsd\")]\n    pub fn get_tstate_current_offset(version: &Version) -> Option<usize> {\n        match version {\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0..=3,\n                ..\n            } => Some(1248),\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 4..=7,\n                ..\n            } => Some(1336),\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match version.release_flags.as_ref() {\n                \"a1\" => Some(1240),\n                \"a2\" => Some(696),\n                \"a3\" | \"a4\" => Some(1256),\n                _ => Some(1224),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => Some(1224),\n            Version {\n                major: 3,\n                minor: 9..=10,\n                ..\n            } => Some(424),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => Some(432),\n            _ => None,\n        }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v2_7_15.rs",
    "content": "// Generated bindings for python v2.7.15\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type Py_ssize_t = isize;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type coercion = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut *mut PyObject,\n        arg2: *mut *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizessizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t, arg3: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type ssizessizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: Py_ssize_t,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type readbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut *mut ::std::os::raw::c_void,\n    ) -> Py_ssize_t,\n>;\npub type writebufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut *mut ::std::os::raw::c_void,\n    ) -> Py_ssize_t,\n>;\npub type segcountproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_ssize_t) -> Py_ssize_t,\n>;\npub type charbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut *mut ::std::os::raw::c_char,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub smalltable: [Py_ssize_t; 2usize],\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_divide: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_nonzero: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_coerce: coercion,\n    pub nb_int: unaryfunc,\n    pub nb_long: unaryfunc,\n    pub nb_float: unaryfunc,\n    pub nb_oct: unaryfunc,\n    pub nb_hex: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_divide: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub sq_slice: ssizessizeargfunc,\n    pub sq_ass_item: ssizeobjargproc,\n    pub sq_ass_slice: ssizessizeobjargproc,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getreadbuffer: readbufferproc,\n    pub bf_getwritebuffer: writebufferproc,\n    pub bf_getsegcount: segcountproc,\n    pub bf_getcharbuffer: charbufferproc,\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type cmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_long>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_compare: cmpfunc,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_long,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyIntObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_ival: ::std::os::raw::c_long,\n}\nimpl Default for PyIntObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    _unused: [u8; 0],\n}\npub type PyLongObject = _longobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyStringObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n    pub ob_shash: ::std::os::raw::c_long,\n    pub ob_sstate: ::std::os::raw::c_int,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyStringObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictEntry {\n    pub me_hash: Py_ssize_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictObject = _dictobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictobject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ma_fill: Py_ssize_t,\n    pub ma_used: Py_ssize_t,\n    pub ma_mask: Py_ssize_t,\n    pub ma_table: *mut PyDictEntry,\n    pub ma_lookup: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            mp: *mut PyDictObject,\n            key: *mut PyObject,\n            hash: ::std::os::raw::c_long,\n        ) -> *mut PyDictEntry,\n    >,\n    pub ma_smalltable: [PyDictEntry; 8usize],\n}\nimpl Default for _dictobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *mut ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *mut ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub modules: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub modules_reloading: *mut PyObject,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub dlopenflags: ::std::os::raw::c_int,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub dict: *mut PyObject,\n    pub tick_counter: ::std::os::raw::c_int,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_long,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n    pub ob_size: Py_ssize_t,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_exc_type: *mut PyObject,\n    pub f_exc_value: *mut PyObject,\n    pub f_exc_traceback: *mut PyObject,\n    pub f_tstate: *mut PyThreadState,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyMemberDef {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_10_0.rs",
    "content": "// Generated bindings for python v3.10.0rc1\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        byte & mask == mask\n    }\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            self.set_bit(index + bit_offset, val_bit_is_set);\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData, [])\n    }\n    #[inline]\n    pub unsafe fn as_ptr(&self) -> *const T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\nimpl<T> ::std::clone::Clone for __IncompleteArrayField<T> {\n    #[inline]\n    fn clone(&self) -> Self {\n        Self::new()\n    }\n}\npub type __uint8_t = ::std::os::raw::c_uchar;\npub type __uint16_t = ::std::os::raw::c_ushort;\npub type __uint32_t = ::std::os::raw::c_uint;\npub type __int64_t = ::std::os::raw::c_long;\npub type __uint64_t = ::std::os::raw::c_ulong;\npub type __ssize_t = ::std::os::raw::c_long;\npub type wchar_t = ::std::os::raw::c_int;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_internal_list {\n    pub __prev: *mut __pthread_internal_list,\n    pub __next: *mut __pthread_internal_list,\n}\nimpl Default for __pthread_internal_list {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type __pthread_list_t = __pthread_internal_list;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_mutex_s {\n    pub __lock: ::std::os::raw::c_int,\n    pub __count: ::std::os::raw::c_uint,\n    pub __owner: ::std::os::raw::c_int,\n    pub __nusers: ::std::os::raw::c_uint,\n    pub __kind: ::std::os::raw::c_int,\n    pub __spins: ::std::os::raw::c_short,\n    pub __elision: ::std::os::raw::c_short,\n    pub __list: __pthread_list_t,\n}\nimpl Default for __pthread_mutex_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct __pthread_cond_s {\n    pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,\n    pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,\n    pub __g_refs: [::std::os::raw::c_uint; 2usize],\n    pub __g_size: [::std::os::raw::c_uint; 2usize],\n    pub __g1_orig_size: ::std::os::raw::c_uint,\n    pub __wrefs: ::std::os::raw::c_uint,\n    pub __g_signals: [::std::os::raw::c_uint; 2usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __pthread_cond_s__bindgen_ty_1 {\n    pub __wseq: ::std::os::raw::c_ulonglong,\n    pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1,\n    _bindgen_union_align: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __pthread_cond_s__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __pthread_cond_s__bindgen_ty_2 {\n    pub __g1_start: ::std::os::raw::c_ulonglong,\n    pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1,\n    _bindgen_union_align: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __pthread_cond_s__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for __pthread_cond_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type pthread_key_t = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_mutex_t {\n    pub __data: __pthread_mutex_s,\n    pub __size: [::std::os::raw::c_char; 40usize],\n    pub __align: ::std::os::raw::c_long,\n    _bindgen_union_align: [u64; 5usize],\n}\nimpl Default for pthread_mutex_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_cond_t {\n    pub __data: __pthread_cond_s,\n    pub __size: [::std::os::raw::c_char; 48usize],\n    pub __align: ::std::os::raw::c_longlong,\n    _bindgen_union_align: [u64; 6usize],\n}\nimpl Default for pthread_cond_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut PyTypeObject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyTypeObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub const PySendResult_PYGEN_RETURN: PySendResult = 0;\npub const PySendResult_PYGEN_ERROR: PySendResult = -1;\npub const PySendResult_PYGEN_NEXT: PySendResult = 1;\npub type PySendResult = i32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type sendfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        iter: *mut PyObject,\n        value: *mut PyObject,\n        result: *mut *mut PyObject,\n    ) -> PySendResult,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n    pub am_send: sendfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_OpenCodeHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyOpcache {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut Py_ssize_t,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_linetable: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_opcache_map: *mut ::std::os::raw::c_uchar,\n    pub co_opcache: *mut _PyOpcache,\n    pub co_opcache_flag: ::std::os::raw::c_int,\n    pub co_opcache_size: ::std::os::raw::c_uchar,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySliceObject {\n    pub ob_base: PyObject,\n    pub start: *mut PyObject,\n    pub stop: *mut PyObject,\n    pub step: *mut PyObject,\n}\nimpl Default for PySliceObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyPreConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub configure_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale_warn: ::std::os::raw::c_int,\n    pub utf8_mode: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub allocator: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub orig_argv: PyWideStringList,\n    pub argv: PyWideStringList,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub warn_default_encoding: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub program_name: *mut wchar_t,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub platlibdir: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n    pub _isolated_interpreter: ::std::os::raw::c_int,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyFrameObject,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _cframe {\n    pub use_tracing: ::std::os::raw::c_int,\n    pub previous: *mut _cframe,\n}\nimpl Default for _cframe {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type CFrame = _cframe;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut PyFrameObject,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub recursion_headroom: ::std::os::raw::c_int,\n    pub stackcheck_counter: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub cframe: *mut CFrame,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n    pub root_cframe: CFrame,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut PyFrameObject,\n        arg2: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xid {\n    pub data: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub interp: i64,\n    pub new_object: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut _xid) -> *mut PyObject>,\n    pub free: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n}\nimpl Default for _xid {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type crossinterpdatafunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut _xid) -> ::std::os::raw::c_int,\n>;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBaseExceptionObject {\n    pub ob_base: PyObject,\n    pub dict: *mut PyObject,\n    pub args: *mut PyObject,\n    pub traceback: *mut PyObject,\n    pub context: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub suppress_context: ::std::os::raw::c_char,\n}\nimpl Default for PyBaseExceptionObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type Py_tss_t = _Py_tss_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tss_t {\n    pub _is_initialized: ::std::os::raw::c_int,\n    pub _key: pthread_key_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pycontextobject {\n    _unused: [u8; 0],\n}\npub type PyContext = _pycontextobject;\npub type Py_AuditHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *const ::std::os::raw::c_char,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = u32;\npub type PyFrameState = ::std::os::raw::c_schar;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_stackdepth: ::std::os::raw::c_int,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_state: PyFrameState,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut PyObject,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Debug)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>,\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type atomic_int = u32;\npub type atomic_uintptr_t = usize;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_address {\n    pub _value: atomic_uintptr_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_int {\n    pub _value: atomic_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _gil_runtime_state {\n    pub interval: ::std::os::raw::c_ulong,\n    pub last_holder: _Py_atomic_address,\n    pub locked: _Py_atomic_int,\n    pub switch_number: ::std::os::raw::c_ulong,\n    pub cond: pthread_cond_t,\n    pub mutex: pthread_mutex_t,\n    pub switch_cond: pthread_cond_t,\n    pub switch_mutex: pthread_mutex_t,\n}\nimpl Default for _gil_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _ceval_runtime_state {\n    pub signals_pending: _Py_atomic_int,\n    pub gil: _gil_runtime_state,\n}\nimpl Default for _ceval_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gilstate_runtime_state {\n    pub check_enabled: ::std::os::raw::c_int,\n    pub tstate_current: _Py_atomic_address,\n    pub autoInterpreterState: *mut PyInterpreterState,\n    pub autoTSSkey: Py_tss_t,\n}\nimpl Default for _gilstate_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_AuditHookEntry {\n    pub next: *mut _Py_AuditHookEntry,\n    pub hookCFunction: Py_AuditHookFunction,\n    pub userData: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_AuditHookEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_runtime_ids {\n    pub lock: PyThread_type_lock,\n    pub next_index: Py_ssize_t,\n}\nimpl Default for _Py_unicode_runtime_ids {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pyruntimestate {\n    pub preinitializing: ::std::os::raw::c_int,\n    pub preinitialized: ::std::os::raw::c_int,\n    pub core_initialized: ::std::os::raw::c_int,\n    pub initialized: ::std::os::raw::c_int,\n    pub _finalizing: _Py_atomic_address,\n    pub interpreters: pyruntimestate_pyinterpreters,\n    pub xidregistry: pyruntimestate__xidregistry,\n    pub main_thread: ::std::os::raw::c_ulong,\n    pub exitfuncs: [::std::option::Option<unsafe extern \"C\" fn()>; 32usize],\n    pub nexitfuncs: ::std::os::raw::c_int,\n    pub ceval: _ceval_runtime_state,\n    pub gilstate: _gilstate_runtime_state,\n    pub preconfig: PyPreConfig,\n    pub open_code_hook: Py_OpenCodeHookFunction,\n    pub open_code_userdata: *mut ::std::os::raw::c_void,\n    pub audit_hook_head: *mut _Py_AuditHookEntry,\n    pub unicode_ids: _Py_unicode_runtime_ids,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate_pyinterpreters {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut PyInterpreterState,\n    pub main: *mut PyInterpreterState,\n    pub next_id: i64,\n}\nimpl Default for pyruntimestate_pyinterpreters {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate__xidregistry {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut _xidregitem,\n}\nimpl Default for pyruntimestate__xidregistry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for pyruntimestate {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct ast_state {\n    pub initialized: ::std::os::raw::c_int,\n    pub AST_type: *mut PyObject,\n    pub Add_singleton: *mut PyObject,\n    pub Add_type: *mut PyObject,\n    pub And_singleton: *mut PyObject,\n    pub And_type: *mut PyObject,\n    pub AnnAssign_type: *mut PyObject,\n    pub Assert_type: *mut PyObject,\n    pub Assign_type: *mut PyObject,\n    pub AsyncFor_type: *mut PyObject,\n    pub AsyncFunctionDef_type: *mut PyObject,\n    pub AsyncWith_type: *mut PyObject,\n    pub Attribute_type: *mut PyObject,\n    pub AugAssign_type: *mut PyObject,\n    pub Await_type: *mut PyObject,\n    pub BinOp_type: *mut PyObject,\n    pub BitAnd_singleton: *mut PyObject,\n    pub BitAnd_type: *mut PyObject,\n    pub BitOr_singleton: *mut PyObject,\n    pub BitOr_type: *mut PyObject,\n    pub BitXor_singleton: *mut PyObject,\n    pub BitXor_type: *mut PyObject,\n    pub BoolOp_type: *mut PyObject,\n    pub Break_type: *mut PyObject,\n    pub Call_type: *mut PyObject,\n    pub ClassDef_type: *mut PyObject,\n    pub Compare_type: *mut PyObject,\n    pub Constant_type: *mut PyObject,\n    pub Continue_type: *mut PyObject,\n    pub Del_singleton: *mut PyObject,\n    pub Del_type: *mut PyObject,\n    pub Delete_type: *mut PyObject,\n    pub DictComp_type: *mut PyObject,\n    pub Dict_type: *mut PyObject,\n    pub Div_singleton: *mut PyObject,\n    pub Div_type: *mut PyObject,\n    pub Eq_singleton: *mut PyObject,\n    pub Eq_type: *mut PyObject,\n    pub ExceptHandler_type: *mut PyObject,\n    pub Expr_type: *mut PyObject,\n    pub Expression_type: *mut PyObject,\n    pub FloorDiv_singleton: *mut PyObject,\n    pub FloorDiv_type: *mut PyObject,\n    pub For_type: *mut PyObject,\n    pub FormattedValue_type: *mut PyObject,\n    pub FunctionDef_type: *mut PyObject,\n    pub FunctionType_type: *mut PyObject,\n    pub GeneratorExp_type: *mut PyObject,\n    pub Global_type: *mut PyObject,\n    pub GtE_singleton: *mut PyObject,\n    pub GtE_type: *mut PyObject,\n    pub Gt_singleton: *mut PyObject,\n    pub Gt_type: *mut PyObject,\n    pub IfExp_type: *mut PyObject,\n    pub If_type: *mut PyObject,\n    pub ImportFrom_type: *mut PyObject,\n    pub Import_type: *mut PyObject,\n    pub In_singleton: *mut PyObject,\n    pub In_type: *mut PyObject,\n    pub Interactive_type: *mut PyObject,\n    pub Invert_singleton: *mut PyObject,\n    pub Invert_type: *mut PyObject,\n    pub IsNot_singleton: *mut PyObject,\n    pub IsNot_type: *mut PyObject,\n    pub Is_singleton: *mut PyObject,\n    pub Is_type: *mut PyObject,\n    pub JoinedStr_type: *mut PyObject,\n    pub LShift_singleton: *mut PyObject,\n    pub LShift_type: *mut PyObject,\n    pub Lambda_type: *mut PyObject,\n    pub ListComp_type: *mut PyObject,\n    pub List_type: *mut PyObject,\n    pub Load_singleton: *mut PyObject,\n    pub Load_type: *mut PyObject,\n    pub LtE_singleton: *mut PyObject,\n    pub LtE_type: *mut PyObject,\n    pub Lt_singleton: *mut PyObject,\n    pub Lt_type: *mut PyObject,\n    pub MatMult_singleton: *mut PyObject,\n    pub MatMult_type: *mut PyObject,\n    pub MatchAs_type: *mut PyObject,\n    pub MatchClass_type: *mut PyObject,\n    pub MatchMapping_type: *mut PyObject,\n    pub MatchOr_type: *mut PyObject,\n    pub MatchSequence_type: *mut PyObject,\n    pub MatchSingleton_type: *mut PyObject,\n    pub MatchStar_type: *mut PyObject,\n    pub MatchValue_type: *mut PyObject,\n    pub Match_type: *mut PyObject,\n    pub Mod_singleton: *mut PyObject,\n    pub Mod_type: *mut PyObject,\n    pub Module_type: *mut PyObject,\n    pub Mult_singleton: *mut PyObject,\n    pub Mult_type: *mut PyObject,\n    pub Name_type: *mut PyObject,\n    pub NamedExpr_type: *mut PyObject,\n    pub Nonlocal_type: *mut PyObject,\n    pub NotEq_singleton: *mut PyObject,\n    pub NotEq_type: *mut PyObject,\n    pub NotIn_singleton: *mut PyObject,\n    pub NotIn_type: *mut PyObject,\n    pub Not_singleton: *mut PyObject,\n    pub Not_type: *mut PyObject,\n    pub Or_singleton: *mut PyObject,\n    pub Or_type: *mut PyObject,\n    pub Pass_type: *mut PyObject,\n    pub Pow_singleton: *mut PyObject,\n    pub Pow_type: *mut PyObject,\n    pub RShift_singleton: *mut PyObject,\n    pub RShift_type: *mut PyObject,\n    pub Raise_type: *mut PyObject,\n    pub Return_type: *mut PyObject,\n    pub SetComp_type: *mut PyObject,\n    pub Set_type: *mut PyObject,\n    pub Slice_type: *mut PyObject,\n    pub Starred_type: *mut PyObject,\n    pub Store_singleton: *mut PyObject,\n    pub Store_type: *mut PyObject,\n    pub Sub_singleton: *mut PyObject,\n    pub Sub_type: *mut PyObject,\n    pub Subscript_type: *mut PyObject,\n    pub Try_type: *mut PyObject,\n    pub Tuple_type: *mut PyObject,\n    pub TypeIgnore_type: *mut PyObject,\n    pub UAdd_singleton: *mut PyObject,\n    pub UAdd_type: *mut PyObject,\n    pub USub_singleton: *mut PyObject,\n    pub USub_type: *mut PyObject,\n    pub UnaryOp_type: *mut PyObject,\n    pub While_type: *mut PyObject,\n    pub With_type: *mut PyObject,\n    pub YieldFrom_type: *mut PyObject,\n    pub Yield_type: *mut PyObject,\n    pub __dict__: *mut PyObject,\n    pub __doc__: *mut PyObject,\n    pub __match_args__: *mut PyObject,\n    pub __module__: *mut PyObject,\n    pub _attributes: *mut PyObject,\n    pub _fields: *mut PyObject,\n    pub alias_type: *mut PyObject,\n    pub annotation: *mut PyObject,\n    pub arg: *mut PyObject,\n    pub arg_type: *mut PyObject,\n    pub args: *mut PyObject,\n    pub argtypes: *mut PyObject,\n    pub arguments_type: *mut PyObject,\n    pub asname: *mut PyObject,\n    pub ast: *mut PyObject,\n    pub attr: *mut PyObject,\n    pub bases: *mut PyObject,\n    pub body: *mut PyObject,\n    pub boolop_type: *mut PyObject,\n    pub cases: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub cls: *mut PyObject,\n    pub cmpop_type: *mut PyObject,\n    pub col_offset: *mut PyObject,\n    pub comparators: *mut PyObject,\n    pub comprehension_type: *mut PyObject,\n    pub context_expr: *mut PyObject,\n    pub conversion: *mut PyObject,\n    pub ctx: *mut PyObject,\n    pub decorator_list: *mut PyObject,\n    pub defaults: *mut PyObject,\n    pub elt: *mut PyObject,\n    pub elts: *mut PyObject,\n    pub end_col_offset: *mut PyObject,\n    pub end_lineno: *mut PyObject,\n    pub exc: *mut PyObject,\n    pub excepthandler_type: *mut PyObject,\n    pub expr_context_type: *mut PyObject,\n    pub expr_type: *mut PyObject,\n    pub finalbody: *mut PyObject,\n    pub format_spec: *mut PyObject,\n    pub func: *mut PyObject,\n    pub generators: *mut PyObject,\n    pub guard: *mut PyObject,\n    pub handlers: *mut PyObject,\n    pub id: *mut PyObject,\n    pub ifs: *mut PyObject,\n    pub is_async: *mut PyObject,\n    pub items: *mut PyObject,\n    pub iter: *mut PyObject,\n    pub key: *mut PyObject,\n    pub keys: *mut PyObject,\n    pub keyword_type: *mut PyObject,\n    pub keywords: *mut PyObject,\n    pub kind: *mut PyObject,\n    pub kw_defaults: *mut PyObject,\n    pub kwarg: *mut PyObject,\n    pub kwd_attrs: *mut PyObject,\n    pub kwd_patterns: *mut PyObject,\n    pub kwonlyargs: *mut PyObject,\n    pub left: *mut PyObject,\n    pub level: *mut PyObject,\n    pub lineno: *mut PyObject,\n    pub lower: *mut PyObject,\n    pub match_case_type: *mut PyObject,\n    pub mod_type: *mut PyObject,\n    pub module: *mut PyObject,\n    pub msg: *mut PyObject,\n    pub name: *mut PyObject,\n    pub names: *mut PyObject,\n    pub op: *mut PyObject,\n    pub operand: *mut PyObject,\n    pub operator_type: *mut PyObject,\n    pub ops: *mut PyObject,\n    pub optional_vars: *mut PyObject,\n    pub orelse: *mut PyObject,\n    pub pattern: *mut PyObject,\n    pub pattern_type: *mut PyObject,\n    pub patterns: *mut PyObject,\n    pub posonlyargs: *mut PyObject,\n    pub rest: *mut PyObject,\n    pub returns: *mut PyObject,\n    pub right: *mut PyObject,\n    pub simple: *mut PyObject,\n    pub slice: *mut PyObject,\n    pub step: *mut PyObject,\n    pub stmt_type: *mut PyObject,\n    pub subject: *mut PyObject,\n    pub tag: *mut PyObject,\n    pub target: *mut PyObject,\n    pub targets: *mut PyObject,\n    pub test: *mut PyObject,\n    pub type_: *mut PyObject,\n    pub type_comment: *mut PyObject,\n    pub type_ignore_type: *mut PyObject,\n    pub type_ignores: *mut PyObject,\n    pub unaryop_type: *mut PyObject,\n    pub upper: *mut PyObject,\n    pub value: *mut PyObject,\n    pub values: *mut PyObject,\n    pub vararg: *mut PyObject,\n    pub withitem_type: *mut PyObject,\n}\nimpl Default for ast_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyGC_Head {\n    pub _gc_next: usize,\n    pub _gc_prev: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation {\n    pub head: PyGC_Head,\n    pub threshold: ::std::os::raw::c_int,\n    pub count: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation_stats {\n    pub collections: Py_ssize_t,\n    pub collected: Py_ssize_t,\n    pub uncollectable: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gc_runtime_state {\n    pub trash_delete_later: *mut PyObject,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub enabled: ::std::os::raw::c_int,\n    pub debug: ::std::os::raw::c_int,\n    pub generations: [gc_generation; 3usize],\n    pub generation0: *mut PyGC_Head,\n    pub permanent_generation: gc_generation,\n    pub generation_stats: [gc_generation_stats; 3usize],\n    pub collecting: ::std::os::raw::c_int,\n    pub garbage: *mut PyObject,\n    pub callbacks: *mut PyObject,\n    pub long_lived_total: Py_ssize_t,\n    pub long_lived_pending: Py_ssize_t,\n}\nimpl Default for _gc_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls {\n    pub lock: PyThread_type_lock,\n    pub calls_to_do: _Py_atomic_int,\n    pub async_exc: ::std::os::raw::c_int,\n    pub calls: [_pending_calls__bindgen_ty_1; 32usize],\n    pub first: ::std::os::raw::c_int,\n    pub last: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls__bindgen_ty_1 {\n    pub func: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub arg: *mut ::std::os::raw::c_void,\n}\nimpl Default for _pending_calls__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _pending_calls {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ceval_state {\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub eval_breaker: _Py_atomic_int,\n    pub gil_drop_request: _Py_atomic_int,\n    pub pending: _pending_calls,\n}\nimpl Default for _ceval_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_fs_codec {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub utf8: ::std::os::raw::c_int,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _Py_unicode_fs_codec {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_bytes_state {\n    pub empty_string: *mut PyObject,\n    pub characters: [*mut PyBytesObject; 256usize],\n}\nimpl Default for _Py_bytes_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_ids {\n    pub size: Py_ssize_t,\n    pub array: *mut *mut PyObject,\n}\nimpl Default for _Py_unicode_ids {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_unicode_state {\n    pub empty_string: *mut PyObject,\n    pub latin1: [*mut PyObject; 256usize],\n    pub fs_codec: _Py_unicode_fs_codec,\n    pub interned: *mut PyObject,\n    pub ids: _Py_unicode_ids,\n}\nimpl Default for _Py_unicode_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_float_state {\n    pub numfree: ::std::os::raw::c_int,\n    pub free_list: *mut PyFloatObject,\n}\nimpl Default for _Py_float_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_tuple_state {\n    pub free_list: [*mut PyTupleObject; 20usize],\n    pub numfree: [::std::os::raw::c_int; 20usize],\n}\nimpl Default for _Py_tuple_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_list_state {\n    pub free_list: [*mut PyListObject; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_list_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_dict_state {\n    pub free_list: [*mut PyDictObject; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n    pub keys_free_list: [*mut PyDictKeysObject; 80usize],\n    pub keys_numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_dict_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_frame_state {\n    pub free_list: *mut PyFrameObject,\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_frame_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_async_gen_state {\n    pub value_freelist: [*mut _PyAsyncGenWrappedValue; 80usize],\n    pub value_numfree: ::std::os::raw::c_int,\n    pub asend_freelist: [*mut PyAsyncGenASend; 80usize],\n    pub asend_numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_async_gen_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_context_state {\n    pub freelist: *mut PyContext,\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_context_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_exc_state {\n    pub errnomap: *mut PyObject,\n    pub memerrors_freelist: *mut PyBaseExceptionObject,\n    pub memerrors_numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_exc_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_callback {\n    pub func: *mut PyObject,\n    pub args: *mut PyObject,\n    pub kwargs: *mut PyObject,\n}\nimpl Default for atexit_callback {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_state {\n    pub callbacks: *mut *mut atexit_callback,\n    pub ncallbacks: ::std::os::raw::c_int,\n    pub callback_len: ::std::os::raw::c_int,\n}\nimpl Default for atexit_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache_entry {\n    pub version: ::std::os::raw::c_uint,\n    pub name: *mut PyObject,\n    pub value: *mut PyObject,\n}\nimpl Default for type_cache_entry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct type_cache {\n    pub hashtable: [type_cache_entry; 4096usize],\n}\nimpl Default for type_cache {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub runtime: *mut pyruntimestate,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub finalizing: ::std::os::raw::c_int,\n    pub ceval: _ceval_state,\n    pub gc: _gc_runtime_state,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub num_threads: ::std::os::raw::c_long,\n    pub pythread_stacksize: usize,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub config: PyConfig,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub dict: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub tstate_next_unique_id: u64,\n    pub warnings: _warnings_runtime_state,\n    pub atexit: atexit_state,\n    pub audit_hooks: *mut PyObject,\n    pub small_ints: [*mut PyLongObject; 262usize],\n    pub bytes: _Py_bytes_state,\n    pub unicode: _Py_unicode_state,\n    pub float_state: _Py_float_state,\n    pub slice_cache: *mut PySliceObject,\n    pub tuple: _Py_tuple_state,\n    pub list: _Py_list_state,\n    pub dict_state: _Py_dict_state,\n    pub frame: _Py_frame_state,\n    pub async_gen: _Py_async_gen_state,\n    pub context: _Py_context_state,\n    pub exc_state: _Py_exc_state,\n    pub ast: ast_state,\n    pub type_cache: type_cache,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xidregitem {\n    pub cls: *mut PyTypeObject,\n    pub getdata: crossinterpdatafunc,\n    pub next: *mut _xidregitem,\n}\nimpl Default for _xidregitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyAsyncGenWrappedValue {\n    pub _address: u8,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyAsyncGenASend {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_11_0.rs",
    "content": "// Generated bindings for python v3.11.0\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n#![allow(clippy::too_many_arguments)]\n\n/* automatically generated by rust-bindgen 0.72.0 */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage> {\n    storage: Storage,\n}\nimpl<Storage> __BindgenBitfieldUnit<Storage> {\n    #[inline]\n    pub const fn new(storage: Storage) -> Self {\n        Self { storage }\n    }\n}\nimpl<Storage> __BindgenBitfieldUnit<Storage>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    fn extract_bit(byte: u8, index: usize) -> bool {\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        byte & mask == mask\n    }\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n        Self::extract_bit(byte, index)\n    }\n    #[inline]\n    pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {\n        debug_assert!(index / 8 < core::mem::size_of::<Storage>());\n        let byte_index = index / 8;\n        let byte = unsafe { *(core::ptr::addr_of!((*this).storage) as *const u8).add(byte_index) };\n        Self::extract_bit(byte, index)\n    }\n    #[inline]\n    fn change_bit(byte: u8, index: usize, val: bool) -> u8 {\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        if val {\n            byte | mask\n        } else {\n            byte & !mask\n        }\n    }\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n        *byte = Self::change_bit(*byte, index, val);\n    }\n    #[inline]\n    pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {\n        debug_assert!(index / 8 < core::mem::size_of::<Storage>());\n        let byte_index = index / 8;\n        let byte = unsafe { (core::ptr::addr_of_mut!((*this).storage) as *mut u8).add(byte_index) };\n        unsafe { *byte = Self::change_bit(*byte, index, val) };\n    }\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if unsafe { Self::raw_get_bit(this, i + bit_offset) } {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            self.set_bit(index + bit_offset, val_bit_is_set);\n        }\n    }\n    #[inline]\n    pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            unsafe { Self::raw_set_bit(this, index + bit_offset, val_bit_is_set) };\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub const fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData, [])\n    }\n    #[inline]\n    pub fn as_ptr(&self) -> *const T {\n        self as *const _ as *const T\n    }\n    #[inline]\n    pub fn as_mut_ptr(&mut self) -> *mut T {\n        self as *mut _ as *mut T\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\npub type wchar_t = ::std::os::raw::c_int;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\npub type PyObject = _object;\npub type PyLongObject = _longobject;\npub type PyTypeObject = _typeobject;\npub type PyFrameObject = _frame;\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct Py_buffer {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for Py_buffer {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut PyTypeObject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyTypeObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub const PySendResult_PYGEN_RETURN: PySendResult = 0;\npub const PySendResult_PYGEN_ERROR: PySendResult = -1;\npub const PySendResult_PYGEN_NEXT: PySendResult = 1;\npub type PySendResult = ::std::os::raw::c_int;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\npub type sendfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        iter: *mut PyObject,\n        value: *mut PyObject,\n        result: *mut *mut PyObject,\n    ) -> PySendResult,\n>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n    pub am_send: sendfunc,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut PyTypeObject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _specialization_cache {\n    pub getitem: *mut PyObject,\n}\nimpl Default for _specialization_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _heaptypeobject {\n    pub ht_type: PyTypeObject,\n    pub as_async: PyAsyncMethods,\n    pub as_number: PyNumberMethods,\n    pub as_mapping: PyMappingMethods,\n    pub as_sequence: PySequenceMethods,\n    pub as_buffer: PyBufferProcs,\n    pub ht_name: *mut PyObject,\n    pub ht_slots: *mut PyObject,\n    pub ht_qualname: *mut PyObject,\n    pub ht_cached_keys: *mut _dictkeysobject,\n    pub ht_module: *mut PyObject,\n    pub _ht_tpname: *mut ::std::os::raw::c_char,\n    pub _spec_cache: _specialization_cache,\n}\nimpl Default for _heaptypeobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyHeapTypeObject = _heaptypeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_align_1: [u8; 0],\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn interned_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                0usize,\n                2u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_interned_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                0usize,\n                2u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn kind_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                2usize,\n                3u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_kind_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                2usize,\n                3u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn compact_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                5usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_compact_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                5usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn ascii_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                6usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_ascii_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                6usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn ready_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                7usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_ready_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                7usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\npub type PyDictValues = _dictvalues;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut PyDictValues,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFunctionObject {\n    pub ob_base: PyObject,\n    pub func_globals: *mut PyObject,\n    pub func_builtins: *mut PyObject,\n    pub func_name: *mut PyObject,\n    pub func_qualname: *mut PyObject,\n    pub func_code: *mut PyObject,\n    pub func_defaults: *mut PyObject,\n    pub func_kwdefaults: *mut PyObject,\n    pub func_closure: *mut PyObject,\n    pub func_doc: *mut PyObject,\n    pub func_dict: *mut PyObject,\n    pub func_weakreflist: *mut PyObject,\n    pub func_module: *mut PyObject,\n    pub func_annotations: *mut PyObject,\n    pub vectorcall: vectorcallfunc,\n    pub func_version: u32,\n}\nimpl Default for PyFunctionObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _Py_CODEUNIT = u16;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyVarObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_exceptiontable: *mut PyObject,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_warmup: ::std::os::raw::c_short,\n    pub _co_linearray_entry_size: ::std::os::raw::c_short,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_nlocalsplus: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_nplaincellvars: ::std::os::raw::c_int,\n    pub co_ncellvars: ::std::os::raw::c_int,\n    pub co_nfreevars: ::std::os::raw::c_int,\n    pub co_localsplusnames: *mut PyObject,\n    pub co_localspluskinds: *mut PyObject,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_qualname: *mut PyObject,\n    pub co_linetable: *mut PyObject,\n    pub co_weakreflist: *mut PyObject,\n    pub _co_code: *mut PyObject,\n    pub _co_linearray: *mut ::std::os::raw::c_char,\n    pub _co_firsttraceable: ::std::os::raw::c_int,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_code_adaptive: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _opaque {\n    pub computed_line: ::std::os::raw::c_int,\n    pub lo_next: *const u8,\n    pub limit: *const u8,\n}\nimpl Default for _opaque {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _line_offsets {\n    pub ar_start: ::std::os::raw::c_int,\n    pub ar_end: ::std::os::raw::c_int,\n    pub ar_line: ::std::os::raw::c_int,\n    pub opaque: _opaque,\n}\nimpl Default for _line_offsets {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyCodeAddressRange = _line_offsets;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySliceObject {\n    pub ob_base: PyObject,\n    pub start: *mut PyObject,\n    pub stop: *mut PyObject,\n    pub step: *mut PyObject,\n}\nimpl Default for PySliceObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub code_debug_ranges: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub dump_refs_file: *mut wchar_t,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub orig_argv: PyWideStringList,\n    pub argv: PyWideStringList,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub warn_default_encoding: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub use_frozen_modules: ::std::os::raw::c_int,\n    pub safe_path: ::std::os::raw::c_int,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub program_name: *mut wchar_t,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub platlibdir: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub stdlib_dir: *mut wchar_t,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n    pub _isolated_interpreter: ::std::os::raw::c_int,\n    pub _is_python_build: ::std::os::raw::c_int,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyFrameObject,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTraceInfo {\n    pub code: *mut PyCodeObject,\n    pub bounds: PyCodeAddressRange,\n}\nimpl Default for PyTraceInfo {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCFrame {\n    pub use_tracing: u8,\n    pub current_frame: *mut _PyInterpreterFrame,\n    pub previous: *mut _PyCFrame,\n}\nimpl Default for _PyCFrame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_value: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _stack_chunk {\n    pub previous: *mut _stack_chunk,\n    pub size: usize,\n    pub top: usize,\n    pub data: [*mut PyObject; 1usize],\n}\nimpl Default for _stack_chunk {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyStackChunk = _stack_chunk;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut PyThreadState,\n    pub next: *mut PyThreadState,\n    pub interp: *mut PyInterpreterState,\n    pub _initialized: ::std::os::raw::c_int,\n    pub _static: ::std::os::raw::c_int,\n    pub recursion_remaining: ::std::os::raw::c_int,\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub recursion_headroom: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub tracing_what: ::std::os::raw::c_int,\n    pub cframe: *mut _PyCFrame,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub native_thread_id: ::std::os::raw::c_ulong,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n    pub trace_info: PyTraceInfo,\n    pub datastack_chunk: *mut _PyStackChunk,\n    pub datastack_top: *mut *mut PyObject,\n    pub datastack_limit: *mut *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub root_cframe: _PyCFrame,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut _PyInterpreterFrame,\n        arg2: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBaseExceptionObject {\n    pub ob_base: PyObject,\n    pub dict: *mut PyObject,\n    pub args: *mut PyObject,\n    pub notes: *mut PyObject,\n    pub traceback: *mut PyObject,\n    pub context: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub suppress_context: ::std::os::raw::c_char,\n}\nimpl Default for PyBaseExceptionObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_int {\n    pub _value: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct ast_state {\n    pub initialized: ::std::os::raw::c_int,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub AST_type: *mut PyObject,\n    pub Add_singleton: *mut PyObject,\n    pub Add_type: *mut PyObject,\n    pub And_singleton: *mut PyObject,\n    pub And_type: *mut PyObject,\n    pub AnnAssign_type: *mut PyObject,\n    pub Assert_type: *mut PyObject,\n    pub Assign_type: *mut PyObject,\n    pub AsyncFor_type: *mut PyObject,\n    pub AsyncFunctionDef_type: *mut PyObject,\n    pub AsyncWith_type: *mut PyObject,\n    pub Attribute_type: *mut PyObject,\n    pub AugAssign_type: *mut PyObject,\n    pub Await_type: *mut PyObject,\n    pub BinOp_type: *mut PyObject,\n    pub BitAnd_singleton: *mut PyObject,\n    pub BitAnd_type: *mut PyObject,\n    pub BitOr_singleton: *mut PyObject,\n    pub BitOr_type: *mut PyObject,\n    pub BitXor_singleton: *mut PyObject,\n    pub BitXor_type: *mut PyObject,\n    pub BoolOp_type: *mut PyObject,\n    pub Break_type: *mut PyObject,\n    pub Call_type: *mut PyObject,\n    pub ClassDef_type: *mut PyObject,\n    pub Compare_type: *mut PyObject,\n    pub Constant_type: *mut PyObject,\n    pub Continue_type: *mut PyObject,\n    pub Del_singleton: *mut PyObject,\n    pub Del_type: *mut PyObject,\n    pub Delete_type: *mut PyObject,\n    pub DictComp_type: *mut PyObject,\n    pub Dict_type: *mut PyObject,\n    pub Div_singleton: *mut PyObject,\n    pub Div_type: *mut PyObject,\n    pub Eq_singleton: *mut PyObject,\n    pub Eq_type: *mut PyObject,\n    pub ExceptHandler_type: *mut PyObject,\n    pub Expr_type: *mut PyObject,\n    pub Expression_type: *mut PyObject,\n    pub FloorDiv_singleton: *mut PyObject,\n    pub FloorDiv_type: *mut PyObject,\n    pub For_type: *mut PyObject,\n    pub FormattedValue_type: *mut PyObject,\n    pub FunctionDef_type: *mut PyObject,\n    pub FunctionType_type: *mut PyObject,\n    pub GeneratorExp_type: *mut PyObject,\n    pub Global_type: *mut PyObject,\n    pub GtE_singleton: *mut PyObject,\n    pub GtE_type: *mut PyObject,\n    pub Gt_singleton: *mut PyObject,\n    pub Gt_type: *mut PyObject,\n    pub IfExp_type: *mut PyObject,\n    pub If_type: *mut PyObject,\n    pub ImportFrom_type: *mut PyObject,\n    pub Import_type: *mut PyObject,\n    pub In_singleton: *mut PyObject,\n    pub In_type: *mut PyObject,\n    pub Interactive_type: *mut PyObject,\n    pub Invert_singleton: *mut PyObject,\n    pub Invert_type: *mut PyObject,\n    pub IsNot_singleton: *mut PyObject,\n    pub IsNot_type: *mut PyObject,\n    pub Is_singleton: *mut PyObject,\n    pub Is_type: *mut PyObject,\n    pub JoinedStr_type: *mut PyObject,\n    pub LShift_singleton: *mut PyObject,\n    pub LShift_type: *mut PyObject,\n    pub Lambda_type: *mut PyObject,\n    pub ListComp_type: *mut PyObject,\n    pub List_type: *mut PyObject,\n    pub Load_singleton: *mut PyObject,\n    pub Load_type: *mut PyObject,\n    pub LtE_singleton: *mut PyObject,\n    pub LtE_type: *mut PyObject,\n    pub Lt_singleton: *mut PyObject,\n    pub Lt_type: *mut PyObject,\n    pub MatMult_singleton: *mut PyObject,\n    pub MatMult_type: *mut PyObject,\n    pub MatchAs_type: *mut PyObject,\n    pub MatchClass_type: *mut PyObject,\n    pub MatchMapping_type: *mut PyObject,\n    pub MatchOr_type: *mut PyObject,\n    pub MatchSequence_type: *mut PyObject,\n    pub MatchSingleton_type: *mut PyObject,\n    pub MatchStar_type: *mut PyObject,\n    pub MatchValue_type: *mut PyObject,\n    pub Match_type: *mut PyObject,\n    pub Mod_singleton: *mut PyObject,\n    pub Mod_type: *mut PyObject,\n    pub Module_type: *mut PyObject,\n    pub Mult_singleton: *mut PyObject,\n    pub Mult_type: *mut PyObject,\n    pub Name_type: *mut PyObject,\n    pub NamedExpr_type: *mut PyObject,\n    pub Nonlocal_type: *mut PyObject,\n    pub NotEq_singleton: *mut PyObject,\n    pub NotEq_type: *mut PyObject,\n    pub NotIn_singleton: *mut PyObject,\n    pub NotIn_type: *mut PyObject,\n    pub Not_singleton: *mut PyObject,\n    pub Not_type: *mut PyObject,\n    pub Or_singleton: *mut PyObject,\n    pub Or_type: *mut PyObject,\n    pub Pass_type: *mut PyObject,\n    pub Pow_singleton: *mut PyObject,\n    pub Pow_type: *mut PyObject,\n    pub RShift_singleton: *mut PyObject,\n    pub RShift_type: *mut PyObject,\n    pub Raise_type: *mut PyObject,\n    pub Return_type: *mut PyObject,\n    pub SetComp_type: *mut PyObject,\n    pub Set_type: *mut PyObject,\n    pub Slice_type: *mut PyObject,\n    pub Starred_type: *mut PyObject,\n    pub Store_singleton: *mut PyObject,\n    pub Store_type: *mut PyObject,\n    pub Sub_singleton: *mut PyObject,\n    pub Sub_type: *mut PyObject,\n    pub Subscript_type: *mut PyObject,\n    pub TryStar_type: *mut PyObject,\n    pub Try_type: *mut PyObject,\n    pub Tuple_type: *mut PyObject,\n    pub TypeIgnore_type: *mut PyObject,\n    pub UAdd_singleton: *mut PyObject,\n    pub UAdd_type: *mut PyObject,\n    pub USub_singleton: *mut PyObject,\n    pub USub_type: *mut PyObject,\n    pub UnaryOp_type: *mut PyObject,\n    pub While_type: *mut PyObject,\n    pub With_type: *mut PyObject,\n    pub YieldFrom_type: *mut PyObject,\n    pub Yield_type: *mut PyObject,\n    pub __dict__: *mut PyObject,\n    pub __doc__: *mut PyObject,\n    pub __match_args__: *mut PyObject,\n    pub __module__: *mut PyObject,\n    pub _attributes: *mut PyObject,\n    pub _fields: *mut PyObject,\n    pub alias_type: *mut PyObject,\n    pub annotation: *mut PyObject,\n    pub arg: *mut PyObject,\n    pub arg_type: *mut PyObject,\n    pub args: *mut PyObject,\n    pub argtypes: *mut PyObject,\n    pub arguments_type: *mut PyObject,\n    pub asname: *mut PyObject,\n    pub ast: *mut PyObject,\n    pub attr: *mut PyObject,\n    pub bases: *mut PyObject,\n    pub body: *mut PyObject,\n    pub boolop_type: *mut PyObject,\n    pub cases: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub cls: *mut PyObject,\n    pub cmpop_type: *mut PyObject,\n    pub col_offset: *mut PyObject,\n    pub comparators: *mut PyObject,\n    pub comprehension_type: *mut PyObject,\n    pub context_expr: *mut PyObject,\n    pub conversion: *mut PyObject,\n    pub ctx: *mut PyObject,\n    pub decorator_list: *mut PyObject,\n    pub defaults: *mut PyObject,\n    pub elt: *mut PyObject,\n    pub elts: *mut PyObject,\n    pub end_col_offset: *mut PyObject,\n    pub end_lineno: *mut PyObject,\n    pub exc: *mut PyObject,\n    pub excepthandler_type: *mut PyObject,\n    pub expr_context_type: *mut PyObject,\n    pub expr_type: *mut PyObject,\n    pub finalbody: *mut PyObject,\n    pub format_spec: *mut PyObject,\n    pub func: *mut PyObject,\n    pub generators: *mut PyObject,\n    pub guard: *mut PyObject,\n    pub handlers: *mut PyObject,\n    pub id: *mut PyObject,\n    pub ifs: *mut PyObject,\n    pub is_async: *mut PyObject,\n    pub items: *mut PyObject,\n    pub iter: *mut PyObject,\n    pub key: *mut PyObject,\n    pub keys: *mut PyObject,\n    pub keyword_type: *mut PyObject,\n    pub keywords: *mut PyObject,\n    pub kind: *mut PyObject,\n    pub kw_defaults: *mut PyObject,\n    pub kwarg: *mut PyObject,\n    pub kwd_attrs: *mut PyObject,\n    pub kwd_patterns: *mut PyObject,\n    pub kwonlyargs: *mut PyObject,\n    pub left: *mut PyObject,\n    pub level: *mut PyObject,\n    pub lineno: *mut PyObject,\n    pub lower: *mut PyObject,\n    pub match_case_type: *mut PyObject,\n    pub mod_type: *mut PyObject,\n    pub module: *mut PyObject,\n    pub msg: *mut PyObject,\n    pub name: *mut PyObject,\n    pub names: *mut PyObject,\n    pub op: *mut PyObject,\n    pub operand: *mut PyObject,\n    pub operator_type: *mut PyObject,\n    pub ops: *mut PyObject,\n    pub optional_vars: *mut PyObject,\n    pub orelse: *mut PyObject,\n    pub pattern: *mut PyObject,\n    pub pattern_type: *mut PyObject,\n    pub patterns: *mut PyObject,\n    pub posonlyargs: *mut PyObject,\n    pub rest: *mut PyObject,\n    pub returns: *mut PyObject,\n    pub right: *mut PyObject,\n    pub simple: *mut PyObject,\n    pub slice: *mut PyObject,\n    pub step: *mut PyObject,\n    pub stmt_type: *mut PyObject,\n    pub subject: *mut PyObject,\n    pub tag: *mut PyObject,\n    pub target: *mut PyObject,\n    pub targets: *mut PyObject,\n    pub test: *mut PyObject,\n    pub type_: *mut PyObject,\n    pub type_comment: *mut PyObject,\n    pub type_ignore_type: *mut PyObject,\n    pub type_ignores: *mut PyObject,\n    pub unaryop_type: *mut PyObject,\n    pub upper: *mut PyObject,\n    pub value: *mut PyObject,\n    pub values: *mut PyObject,\n    pub vararg: *mut PyObject,\n    pub withitem_type: *mut PyObject,\n}\nimpl Default for ast_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct callable_cache {\n    pub isinstance: *mut PyObject,\n    pub len: *mut PyObject,\n    pub list_append: *mut PyObject,\n}\nimpl Default for callable_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_context_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_dict_state {}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictUnicodeEntry {\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictUnicodeEntry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_log2_size: u8,\n    pub dk_log2_index_bytes: u8,\n    pub dk_kind: u8,\n    pub dk_version: u32,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: [std::os::raw::c_char; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictvalues {\n    pub values: [*mut PyObject; 1usize],\n}\nimpl Default for _dictvalues {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_exc_state {\n    pub errnomap: *mut PyObject,\n    pub memerrors_freelist: *mut PyBaseExceptionObject,\n    pub memerrors_numfree: ::std::os::raw::c_int,\n    pub PyExc_ExceptionGroup: *mut PyObject,\n}\nimpl Default for _Py_exc_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_float_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_async_gen_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyGC_Head {\n    pub _gc_next: usize,\n    pub _gc_prev: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation {\n    pub head: PyGC_Head,\n    pub threshold: ::std::os::raw::c_int,\n    pub count: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation_stats {\n    pub collections: Py_ssize_t,\n    pub collected: Py_ssize_t,\n    pub uncollectable: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gc_runtime_state {\n    pub trash_delete_later: *mut PyObject,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub enabled: ::std::os::raw::c_int,\n    pub debug: ::std::os::raw::c_int,\n    pub generations: [gc_generation; 3usize],\n    pub generation0: *mut PyGC_Head,\n    pub permanent_generation: gc_generation,\n    pub generation_stats: [gc_generation_stats; 3usize],\n    pub collecting: ::std::os::raw::c_int,\n    pub garbage: *mut PyObject,\n    pub callbacks: *mut PyObject,\n    pub long_lived_total: Py_ssize_t,\n    pub long_lived_pending: Py_ssize_t,\n}\nimpl Default for _gc_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_list_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tuple_state {\n    pub _unused: ::std::os::raw::c_char,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache_entry {\n    pub version: ::std::os::raw::c_uint,\n    pub name: *mut PyObject,\n    pub value: *mut PyObject,\n}\nimpl Default for type_cache_entry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache {\n    pub hashtable: [type_cache_entry; 4096usize],\n}\nimpl Default for type_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_fs_codec {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub utf8: ::std::os::raw::c_int,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _Py_unicode_fs_codec {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_ids {\n    pub size: Py_ssize_t,\n    pub array: *mut *mut PyObject,\n}\nimpl Default for _Py_unicode_ids {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_state {\n    pub fs_codec: _Py_unicode_fs_codec,\n    pub ids: _Py_unicode_ids,\n}\nimpl Default for _Py_unicode_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls {\n    pub lock: PyThread_type_lock,\n    pub calls_to_do: _Py_atomic_int,\n    pub async_exc: ::std::os::raw::c_int,\n    pub calls: [_pending_calls__bindgen_ty_1; 32usize],\n    pub first: ::std::os::raw::c_int,\n    pub last: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls__bindgen_ty_1 {\n    pub func: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub arg: *mut ::std::os::raw::c_void,\n}\nimpl Default for _pending_calls__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _pending_calls {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ceval_state {\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub eval_breaker: _Py_atomic_int,\n    pub gil_drop_request: _Py_atomic_int,\n    pub pending: _pending_calls,\n}\nimpl Default for _ceval_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_callback {\n    pub func: *mut PyObject,\n    pub args: *mut PyObject,\n    pub kwargs: *mut PyObject,\n}\nimpl Default for atexit_callback {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_state {\n    pub callbacks: *mut *mut atexit_callback,\n    pub ncallbacks: ::std::os::raw::c_int,\n    pub callback_len: ::std::os::raw::c_int,\n}\nimpl Default for atexit_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut PyInterpreterState,\n    pub threads: _is_pythreads,\n    pub runtime: *mut pyruntimestate,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub _initialized: ::std::os::raw::c_int,\n    pub finalizing: ::std::os::raw::c_int,\n    pub _static: bool,\n    pub ceval: _ceval_state,\n    pub gc: _gc_runtime_state,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub override_frozen_modules: ::std::os::raw::c_int,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub config: PyConfig,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub dict: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub warnings: _warnings_runtime_state,\n    pub atexit: atexit_state,\n    pub audit_hooks: *mut PyObject,\n    pub unicode: _Py_unicode_state,\n    pub float_state: _Py_float_state,\n    pub slice_cache: *mut PySliceObject,\n    pub tuple: _Py_tuple_state,\n    pub list: _Py_list_state,\n    pub dict_state: _Py_dict_state,\n    pub async_gen: _Py_async_gen_state,\n    pub context: _Py_context_state,\n    pub exc_state: _Py_exc_state,\n    pub ast: ast_state,\n    pub type_cache: type_cache,\n    pub callable_cache: callable_cache,\n    pub int_max_str_digits: ::std::os::raw::c_int,\n    pub _initial_thread: PyThreadState,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is_pythreads {\n    pub next_unique_id: u64,\n    pub head: *mut PyThreadState,\n    pub count: ::std::os::raw::c_long,\n    pub stacksize: usize,\n}\nimpl Default for _is_pythreads {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _is {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyObject,\n    pub f_back: *mut PyFrameObject,\n    pub f_frame: *mut _PyInterpreterFrame,\n    pub f_trace: *mut PyObject,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_fast_as_locals: ::std::os::raw::c_char,\n    pub _f_frame_data: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyInterpreterFrame {\n    pub f_func: *mut PyFunctionObject,\n    pub f_globals: *mut PyObject,\n    pub f_builtins: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_code: *mut PyCodeObject,\n    pub frame_obj: *mut PyFrameObject,\n    pub previous: *mut _PyInterpreterFrame,\n    pub prev_instr: *mut _Py_CODEUNIT,\n    pub stacktop: ::std::os::raw::c_int,\n    pub is_entry: bool,\n    pub owner: ::std::os::raw::c_char,\n    pub localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _PyInterpreterFrame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct pyruntimestate {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_12_0.rs",
    "content": "// Generated bindings for python v3.12.0\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n#![allow(clippy::too_many_arguments)]\n\n/* automatically generated by rust-bindgen 0.72.0 */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage> {\n    storage: Storage,\n}\nimpl<Storage> __BindgenBitfieldUnit<Storage> {\n    #[inline]\n    pub const fn new(storage: Storage) -> Self {\n        Self { storage }\n    }\n}\nimpl<Storage> __BindgenBitfieldUnit<Storage>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    fn extract_bit(byte: u8, index: usize) -> bool {\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        byte & mask == mask\n    }\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n        Self::extract_bit(byte, index)\n    }\n    #[inline]\n    pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {\n        debug_assert!(index / 8 < core::mem::size_of::<Storage>());\n        let byte_index = index / 8;\n        let byte = unsafe { *(core::ptr::addr_of!((*this).storage) as *const u8).add(byte_index) };\n        Self::extract_bit(byte, index)\n    }\n    #[inline]\n    fn change_bit(byte: u8, index: usize, val: bool) -> u8 {\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        if val {\n            byte | mask\n        } else {\n            byte & !mask\n        }\n    }\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n        *byte = Self::change_bit(*byte, index, val);\n    }\n    #[inline]\n    pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {\n        debug_assert!(index / 8 < core::mem::size_of::<Storage>());\n        let byte_index = index / 8;\n        let byte = unsafe { (core::ptr::addr_of_mut!((*this).storage) as *mut u8).add(byte_index) };\n        unsafe { *byte = Self::change_bit(*byte, index, val) };\n    }\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if unsafe { Self::raw_get_bit(this, i + bit_offset) } {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            self.set_bit(index + bit_offset, val_bit_is_set);\n        }\n    }\n    #[inline]\n    pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= core::mem::size_of::<Storage>());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            unsafe { Self::raw_set_bit(this, index + bit_offset, val_bit_is_set) };\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub const fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData, [])\n    }\n    #[inline]\n    pub fn as_ptr(&self) -> *const T {\n        self as *const _ as *const T\n    }\n    #[inline]\n    pub fn as_mut_ptr(&mut self) -> *mut T {\n        self as *mut _ as *mut T\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\npub type wchar_t = ::std::os::raw::c_int;\npub type __uint32_t = ::std::os::raw::c_uint;\npub type __dev_t = ::std::os::raw::c_ulong;\npub type __uid_t = ::std::os::raw::c_uint;\npub type __ino64_t = ::std::os::raw::c_ulong;\npub type __pid_t = ::std::os::raw::c_int;\npub type __clock_t = ::std::os::raw::c_long;\npub type __sig_atomic_t = ::std::os::raw::c_int;\npub type ino_t = __ino64_t;\npub type dev_t = __dev_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __sigset_t {\n    pub __val: [::std::os::raw::c_ulong; 16usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __atomic_wide_counter {\n    pub __value64: ::std::os::raw::c_ulonglong,\n    pub __value32: __atomic_wide_counter__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __atomic_wide_counter__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __atomic_wide_counter {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_internal_list {\n    pub __prev: *mut __pthread_internal_list,\n    pub __next: *mut __pthread_internal_list,\n}\nimpl Default for __pthread_internal_list {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type __pthread_list_t = __pthread_internal_list;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_mutex_s {\n    pub __lock: ::std::os::raw::c_int,\n    pub __count: ::std::os::raw::c_uint,\n    pub __owner: ::std::os::raw::c_int,\n    pub __nusers: ::std::os::raw::c_uint,\n    pub __kind: ::std::os::raw::c_int,\n    pub __spins: ::std::os::raw::c_short,\n    pub __elision: ::std::os::raw::c_short,\n    pub __list: __pthread_list_t,\n}\nimpl Default for __pthread_mutex_s {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct __pthread_cond_s {\n    pub __wseq: __atomic_wide_counter,\n    pub __g1_start: __atomic_wide_counter,\n    pub __g_refs: [::std::os::raw::c_uint; 2usize],\n    pub __g_size: [::std::os::raw::c_uint; 2usize],\n    pub __g1_orig_size: ::std::os::raw::c_uint,\n    pub __wrefs: ::std::os::raw::c_uint,\n    pub __g_signals: [::std::os::raw::c_uint; 2usize],\n}\nimpl Default for __pthread_cond_s {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_condattr_t {\n    pub __size: [::std::os::raw::c_char; 4usize],\n    pub __align: ::std::os::raw::c_int,\n}\nimpl Default for pthread_condattr_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type pthread_key_t = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_mutex_t {\n    pub __data: __pthread_mutex_s,\n    pub __size: [::std::os::raw::c_char; 40usize],\n    pub __align: ::std::os::raw::c_long,\n}\nimpl Default for pthread_mutex_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_cond_t {\n    pub __data: __pthread_cond_s,\n    pub __size: [::std::os::raw::c_char; 48usize],\n    pub __align: ::std::os::raw::c_longlong,\n}\nimpl Default for pthread_cond_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\npub type Py_uhash_t = usize;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemAllocatorEx {\n    pub ctx: *mut ::std::os::raw::c_void,\n    pub malloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub calloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            nelem: usize,\n            elsize: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub realloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            ptr: *mut ::std::os::raw::c_void,\n            new_size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub free: ::std::option::Option<\n        unsafe extern \"C\" fn(ctx: *mut ::std::os::raw::c_void, ptr: *mut ::std::os::raw::c_void),\n    >,\n}\nimpl Default for PyMemAllocatorEx {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyObject = _object;\npub type PyLongObject = _longobject;\npub type PyTypeObject = _typeobject;\npub type PyFrameObject = _frame;\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct Py_buffer {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for Py_buffer {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _object {\n    pub __bindgen_anon_1: _object__bindgen_ty_1,\n    pub ob_type: *mut PyTypeObject,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _object__bindgen_ty_1 {\n    pub ob_refcnt: Py_ssize_t,\n    // line manually added, see https://github.com/benfred/py-spy/issues/753\n    #[cfg(target_pointer_width = \"64\")]\n    pub ob_refcnt_split: [u32; 2usize],\n    // line manually added, see https://github.com/benfred/py-spy/issues/753\n    #[cfg(target_pointer_width = \"64\")]\n    _bindgen_union_align: u64,\n}\nimpl Default for _object__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _object {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyTypeObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub const PySendResult_PYGEN_RETURN: PySendResult = 0;\npub const PySendResult_PYGEN_ERROR: PySendResult = -1;\npub const PySendResult_PYGEN_NEXT: PySendResult = 1;\npub type PySendResult = ::std::os::raw::c_int;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\npub type sendfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        iter: *mut PyObject,\n        value: *mut PyObject,\n        result: *mut *mut PyObject,\n    ) -> PySendResult,\n>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n    pub am_send: sendfunc,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut PyTypeObject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut ::std::os::raw::c_void,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n    pub tp_watched: ::std::os::raw::c_uchar,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _specialization_cache {\n    pub getitem: *mut PyObject,\n    pub getitem_version: u32,\n}\nimpl Default for _specialization_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _heaptypeobject {\n    pub ht_type: PyTypeObject,\n    pub as_async: PyAsyncMethods,\n    pub as_number: PyNumberMethods,\n    pub as_mapping: PyMappingMethods,\n    pub as_sequence: PySequenceMethods,\n    pub as_buffer: PyBufferProcs,\n    pub ht_name: *mut PyObject,\n    pub ht_slots: *mut PyObject,\n    pub ht_qualname: *mut PyObject,\n    pub ht_cached_keys: *mut _dictkeysobject,\n    pub ht_module: *mut PyObject,\n    pub _ht_tpname: *mut ::std::os::raw::c_char,\n    pub _spec_cache: _specialization_cache,\n}\nimpl Default for _heaptypeobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyHeapTypeObject = _heaptypeobject;\npub type PyType_WatchCallback =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyTypeObject) -> ::std::os::raw::c_int>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyObjectArenaAllocator {\n    pub ctx: *mut ::std::os::raw::c_void,\n    pub alloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub free: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            ptr: *mut ::std::os::raw::c_void,\n            size: usize,\n        ),\n    >,\n}\nimpl Default for PyObjectArenaAllocator {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_align_1: [u8; 0],\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn interned_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                0usize,\n                2u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_interned_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                0usize,\n                2u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn kind_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                2usize,\n                3u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_kind_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                2usize,\n                3u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn compact_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                5usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_compact_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                5usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn ascii_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                6usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_ascii_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                6usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyLongValue {\n    pub lv_tag: usize,\n    pub ob_digit: [digit; 1usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyObject,\n    pub long_value: _PyLongValue,\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\npub type PyDictValues = _dictvalues;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut PyDictValues,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const PyDict_WatchEvent_PyDict_EVENT_ADDED: PyDict_WatchEvent = 0;\npub const PyDict_WatchEvent_PyDict_EVENT_MODIFIED: PyDict_WatchEvent = 1;\npub const PyDict_WatchEvent_PyDict_EVENT_DELETED: PyDict_WatchEvent = 2;\npub const PyDict_WatchEvent_PyDict_EVENT_CLONED: PyDict_WatchEvent = 3;\npub const PyDict_WatchEvent_PyDict_EVENT_CLEARED: PyDict_WatchEvent = 4;\npub const PyDict_WatchEvent_PyDict_EVENT_DEALLOCATED: PyDict_WatchEvent = 5;\npub type PyDict_WatchEvent = ::std::os::raw::c_uint;\npub type PyDict_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        event: PyDict_WatchEvent,\n        dict: *mut PyObject,\n        key: *mut PyObject,\n        new_value: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyFunctionObject {\n    pub ob_base: PyObject,\n    pub func_globals: *mut PyObject,\n    pub func_builtins: *mut PyObject,\n    pub func_name: *mut PyObject,\n    pub func_qualname: *mut PyObject,\n    pub func_code: *mut PyObject,\n    pub func_defaults: *mut PyObject,\n    pub func_kwdefaults: *mut PyObject,\n    pub func_closure: *mut PyObject,\n    pub func_doc: *mut PyObject,\n    pub func_dict: *mut PyObject,\n    pub func_weakreflist: *mut PyObject,\n    pub func_module: *mut PyObject,\n    pub func_annotations: *mut PyObject,\n    pub func_typeparams: *mut PyObject,\n    pub vectorcall: vectorcallfunc,\n    pub func_version: u32,\n}\nimpl Default for PyFunctionObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const PyFunction_WatchEvent_PyFunction_EVENT_CREATE: PyFunction_WatchEvent = 0;\npub const PyFunction_WatchEvent_PyFunction_EVENT_DESTROY: PyFunction_WatchEvent = 1;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_CODE: PyFunction_WatchEvent = 2;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_DEFAULTS: PyFunction_WatchEvent = 3;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_KWDEFAULTS: PyFunction_WatchEvent = 4;\npub type PyFunction_WatchEvent = ::std::os::raw::c_uint;\npub type PyFunction_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        event: PyFunction_WatchEvent,\n        func: *mut PyFunctionObject,\n        new_value: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type Py_OpenCodeHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_LocalMonitors {\n    pub tools: [u8; 15usize],\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_GlobalMonitors {\n    pub tools: [u8; 15usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _Py_CODEUNIT {\n    pub cache: u16,\n    pub op: _Py_CODEUNIT__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_CODEUNIT__bindgen_ty_1 {\n    pub code: u8,\n    pub arg: u8,\n}\nimpl Default for _Py_CODEUNIT {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCoCached {\n    pub _co_code: *mut PyObject,\n    pub _co_varnames: *mut PyObject,\n    pub _co_cellvars: *mut PyObject,\n    pub _co_freevars: *mut PyObject,\n}\nimpl Default for _PyCoCached {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyCoLineInstrumentationData {\n    pub original_opcode: u8,\n    pub line_delta: i8,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCoMonitoringData {\n    pub local_monitors: _Py_LocalMonitors,\n    pub active_monitors: _Py_LocalMonitors,\n    pub tools: *mut u8,\n    pub lines: *mut _PyCoLineInstrumentationData,\n    pub line_tools: *mut u8,\n    pub per_instruction_opcodes: *mut u8,\n    pub per_instruction_tools: *mut u8,\n}\nimpl Default for _PyCoMonitoringData {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyVarObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_exceptiontable: *mut PyObject,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_nlocalsplus: ::std::os::raw::c_int,\n    pub co_framesize: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_ncellvars: ::std::os::raw::c_int,\n    pub co_nfreevars: ::std::os::raw::c_int,\n    pub co_version: u32,\n    pub co_localsplusnames: *mut PyObject,\n    pub co_localspluskinds: *mut PyObject,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_qualname: *mut PyObject,\n    pub co_linetable: *mut PyObject,\n    pub co_weakreflist: *mut PyObject,\n    pub _co_cached: *mut _PyCoCached,\n    pub _co_instrumentation_version: u64,\n    pub _co_monitoring: *mut _PyCoMonitoringData,\n    pub _co_firsttraceable: ::std::os::raw::c_int,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_code_adaptive: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const PyCodeEvent_PY_CODE_EVENT_CREATE: PyCodeEvent = 0;\npub const PyCodeEvent_PY_CODE_EVENT_DESTROY: PyCodeEvent = 1;\npub type PyCodeEvent = ::std::os::raw::c_uint;\npub type PyCode_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(event: PyCodeEvent, co: *mut PyCodeObject) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PySliceObject {\n    pub ob_base: PyObject,\n    pub start: *mut PyObject,\n    pub stop: *mut PyObject,\n    pub step: *mut PyObject,\n}\nimpl Default for PySliceObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyPreConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub configure_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale_warn: ::std::os::raw::c_int,\n    pub utf8_mode: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub allocator: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub perf_profiling: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub code_debug_ranges: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub dump_refs_file: *mut wchar_t,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub orig_argv: PyWideStringList,\n    pub argv: PyWideStringList,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub warn_default_encoding: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub use_frozen_modules: ::std::os::raw::c_int,\n    pub safe_path: ::std::os::raw::c_int,\n    pub int_max_str_digits: ::std::os::raw::c_int,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub program_name: *mut wchar_t,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub platlibdir: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub stdlib_dir: *mut wchar_t,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n    pub _is_python_build: ::std::os::raw::c_int,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyFrameObject,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCFrame {\n    pub current_frame: *mut _PyInterpreterFrame,\n    pub previous: *mut _PyCFrame,\n}\nimpl Default for _PyCFrame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_value: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _stack_chunk {\n    pub previous: *mut _stack_chunk,\n    pub size: usize,\n    pub top: usize,\n    pub data: [*mut PyObject; 1usize],\n}\nimpl Default for _stack_chunk {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyStackChunk = _stack_chunk;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _py_trashcan {\n    pub delete_nesting: ::std::os::raw::c_int,\n    pub delete_later: *mut PyObject,\n}\nimpl Default for _py_trashcan {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut PyThreadState,\n    pub next: *mut PyThreadState,\n    pub interp: *mut PyInterpreterState,\n    pub _status: _ts__bindgen_ty_1,\n    pub py_recursion_remaining: ::std::os::raw::c_int,\n    pub py_recursion_limit: ::std::os::raw::c_int,\n    pub c_recursion_remaining: ::std::os::raw::c_int,\n    pub recursion_headroom: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub what_event: ::std::os::raw::c_int,\n    pub cframe: *mut _PyCFrame,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub current_exception: *mut PyObject,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub native_thread_id: ::std::os::raw::c_ulong,\n    pub trash: _py_trashcan,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n    pub datastack_chunk: *mut _PyStackChunk,\n    pub datastack_top: *mut *mut PyObject,\n    pub datastack_limit: *mut *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub root_cframe: _PyCFrame,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _ts__bindgen_ty_1 {\n    pub _bitfield_align_1: [u8; 0],\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,\n}\nimpl _ts__bindgen_ty_1 {\n    #[inline]\n    pub fn initialized(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_initialized(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn initialized_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                0usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_initialized_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                0usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn bound(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_bound(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(1usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn bound_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                1usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_bound_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                1usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn unbound(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_unbound(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn unbound_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                2usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_unbound_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                2usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn bound_gilstate(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_bound_gilstate(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(3usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn bound_gilstate_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                3usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_bound_gilstate_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                3usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn active(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_active(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(4usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn active_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                4usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_active_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                4usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn finalizing(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_finalizing(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn finalizing_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                5usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_finalizing_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                5usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn cleared(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_cleared(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn cleared_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                6usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_cleared_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                6usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn finalized(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_finalized(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub unsafe fn finalized_raw(this: *const Self) -> ::std::os::raw::c_uint {\n        unsafe {\n            ::std::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get(\n                ::std::ptr::addr_of!((*this)._bitfield_1),\n                7usize,\n                1u8,\n            ) as u32)\n        }\n    }\n    #[inline]\n    pub unsafe fn set_finalized_raw(this: *mut Self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set(\n                ::std::ptr::addr_of_mut!((*this)._bitfield_1),\n                7usize,\n                1u8,\n                val as u64,\n            )\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        initialized: ::std::os::raw::c_uint,\n        bound: ::std::os::raw::c_uint,\n        unbound: ::std::os::raw::c_uint,\n        bound_gilstate: ::std::os::raw::c_uint,\n        active: ::std::os::raw::c_uint,\n        finalizing: ::std::os::raw::c_uint,\n        cleared: ::std::os::raw::c_uint,\n        finalized: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();\n        __bindgen_bitfield_unit.set(0usize, 1u8, {\n            let initialized: u32 = unsafe { ::std::mem::transmute(initialized) };\n            initialized as u64\n        });\n        __bindgen_bitfield_unit.set(1usize, 1u8, {\n            let bound: u32 = unsafe { ::std::mem::transmute(bound) };\n            bound as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 1u8, {\n            let unbound: u32 = unsafe { ::std::mem::transmute(unbound) };\n            unbound as u64\n        });\n        __bindgen_bitfield_unit.set(3usize, 1u8, {\n            let bound_gilstate: u32 = unsafe { ::std::mem::transmute(bound_gilstate) };\n            bound_gilstate as u64\n        });\n        __bindgen_bitfield_unit.set(4usize, 1u8, {\n            let active: u32 = unsafe { ::std::mem::transmute(active) };\n            active as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let finalizing: u32 = unsafe { ::std::mem::transmute(finalizing) };\n            finalizing as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let cleared: u32 = unsafe { ::std::mem::transmute(cleared) };\n            cleared as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let finalized: u32 = unsafe { ::std::mem::transmute(finalized) };\n            finalized as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut _PyInterpreterFrame,\n        arg2: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type _PyCrossInterpreterData = _xid;\npub type xid_newobjectfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _PyCrossInterpreterData) -> *mut PyObject,\n>;\npub type xid_freefunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xid {\n    pub data: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub interp: i64,\n    pub new_object: xid_newobjectfunc,\n    pub free: xid_freefunc,\n}\nimpl Default for _xid {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type crossinterpdatafunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut PyObject,\n        arg2: *mut _PyCrossInterpreterData,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub type_: ::std::os::raw::c_int,\n    pub offset: Py_ssize_t,\n    pub flags: ::std::os::raw::c_int,\n    pub doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMemberDef {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type wrapperfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        self_: *mut PyObject,\n        args: *mut PyObject,\n        wrapped: *mut ::std::os::raw::c_void,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct wrapperbase {\n    pub name: *const ::std::os::raw::c_char,\n    pub offset: ::std::os::raw::c_int,\n    pub function: *mut ::std::os::raw::c_void,\n    pub wrapper: wrapperfunc,\n    pub doc: *const ::std::os::raw::c_char,\n    pub flags: ::std::os::raw::c_int,\n    pub name_strobj: *mut PyObject,\n}\nimpl Default for wrapperbase {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _PyTime_t = i64;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyBaseExceptionObject {\n    pub ob_base: PyObject,\n    pub dict: *mut PyObject,\n    pub args: *mut PyObject,\n    pub notes: *mut PyObject,\n    pub traceback: *mut PyObject,\n    pub context: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub suppress_context: ::std::os::raw::c_char,\n}\nimpl Default for PyBaseExceptionObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type Py_tss_t = _Py_tss_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tss_t {\n    pub _is_initialized: ::std::os::raw::c_int,\n    pub _key: pthread_key_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyArg_Parser {\n    pub initialized: ::std::os::raw::c_int,\n    pub format: *const ::std::os::raw::c_char,\n    pub keywords: *const *const ::std::os::raw::c_char,\n    pub fname: *const ::std::os::raw::c_char,\n    pub custom_msg: *const ::std::os::raw::c_char,\n    pub pos: ::std::os::raw::c_int,\n    pub min: ::std::os::raw::c_int,\n    pub max: ::std::os::raw::c_int,\n    pub kwtuple: *mut PyObject,\n    pub next: *mut _PyArg_Parser,\n}\nimpl Default for _PyArg_Parser {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type atexit_datacallbackfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type Py_AuditHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *const ::std::os::raw::c_char,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _inittab {\n    pub name: *const ::std::os::raw::c_char,\n    pub initfunc: ::std::option::Option<unsafe extern \"C\" fn() -> *mut PyObject>,\n}\nimpl Default for _inittab {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct ast_state {\n    pub initialized: ::std::os::raw::c_int,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub AST_type: *mut PyObject,\n    pub Add_singleton: *mut PyObject,\n    pub Add_type: *mut PyObject,\n    pub And_singleton: *mut PyObject,\n    pub And_type: *mut PyObject,\n    pub AnnAssign_type: *mut PyObject,\n    pub Assert_type: *mut PyObject,\n    pub Assign_type: *mut PyObject,\n    pub AsyncFor_type: *mut PyObject,\n    pub AsyncFunctionDef_type: *mut PyObject,\n    pub AsyncWith_type: *mut PyObject,\n    pub Attribute_type: *mut PyObject,\n    pub AugAssign_type: *mut PyObject,\n    pub Await_type: *mut PyObject,\n    pub BinOp_type: *mut PyObject,\n    pub BitAnd_singleton: *mut PyObject,\n    pub BitAnd_type: *mut PyObject,\n    pub BitOr_singleton: *mut PyObject,\n    pub BitOr_type: *mut PyObject,\n    pub BitXor_singleton: *mut PyObject,\n    pub BitXor_type: *mut PyObject,\n    pub BoolOp_type: *mut PyObject,\n    pub Break_type: *mut PyObject,\n    pub Call_type: *mut PyObject,\n    pub ClassDef_type: *mut PyObject,\n    pub Compare_type: *mut PyObject,\n    pub Constant_type: *mut PyObject,\n    pub Continue_type: *mut PyObject,\n    pub Del_singleton: *mut PyObject,\n    pub Del_type: *mut PyObject,\n    pub Delete_type: *mut PyObject,\n    pub DictComp_type: *mut PyObject,\n    pub Dict_type: *mut PyObject,\n    pub Div_singleton: *mut PyObject,\n    pub Div_type: *mut PyObject,\n    pub Eq_singleton: *mut PyObject,\n    pub Eq_type: *mut PyObject,\n    pub ExceptHandler_type: *mut PyObject,\n    pub Expr_type: *mut PyObject,\n    pub Expression_type: *mut PyObject,\n    pub FloorDiv_singleton: *mut PyObject,\n    pub FloorDiv_type: *mut PyObject,\n    pub For_type: *mut PyObject,\n    pub FormattedValue_type: *mut PyObject,\n    pub FunctionDef_type: *mut PyObject,\n    pub FunctionType_type: *mut PyObject,\n    pub GeneratorExp_type: *mut PyObject,\n    pub Global_type: *mut PyObject,\n    pub GtE_singleton: *mut PyObject,\n    pub GtE_type: *mut PyObject,\n    pub Gt_singleton: *mut PyObject,\n    pub Gt_type: *mut PyObject,\n    pub IfExp_type: *mut PyObject,\n    pub If_type: *mut PyObject,\n    pub ImportFrom_type: *mut PyObject,\n    pub Import_type: *mut PyObject,\n    pub In_singleton: *mut PyObject,\n    pub In_type: *mut PyObject,\n    pub Interactive_type: *mut PyObject,\n    pub Invert_singleton: *mut PyObject,\n    pub Invert_type: *mut PyObject,\n    pub IsNot_singleton: *mut PyObject,\n    pub IsNot_type: *mut PyObject,\n    pub Is_singleton: *mut PyObject,\n    pub Is_type: *mut PyObject,\n    pub JoinedStr_type: *mut PyObject,\n    pub LShift_singleton: *mut PyObject,\n    pub LShift_type: *mut PyObject,\n    pub Lambda_type: *mut PyObject,\n    pub ListComp_type: *mut PyObject,\n    pub List_type: *mut PyObject,\n    pub Load_singleton: *mut PyObject,\n    pub Load_type: *mut PyObject,\n    pub LtE_singleton: *mut PyObject,\n    pub LtE_type: *mut PyObject,\n    pub Lt_singleton: *mut PyObject,\n    pub Lt_type: *mut PyObject,\n    pub MatMult_singleton: *mut PyObject,\n    pub MatMult_type: *mut PyObject,\n    pub MatchAs_type: *mut PyObject,\n    pub MatchClass_type: *mut PyObject,\n    pub MatchMapping_type: *mut PyObject,\n    pub MatchOr_type: *mut PyObject,\n    pub MatchSequence_type: *mut PyObject,\n    pub MatchSingleton_type: *mut PyObject,\n    pub MatchStar_type: *mut PyObject,\n    pub MatchValue_type: *mut PyObject,\n    pub Match_type: *mut PyObject,\n    pub Mod_singleton: *mut PyObject,\n    pub Mod_type: *mut PyObject,\n    pub Module_type: *mut PyObject,\n    pub Mult_singleton: *mut PyObject,\n    pub Mult_type: *mut PyObject,\n    pub Name_type: *mut PyObject,\n    pub NamedExpr_type: *mut PyObject,\n    pub Nonlocal_type: *mut PyObject,\n    pub NotEq_singleton: *mut PyObject,\n    pub NotEq_type: *mut PyObject,\n    pub NotIn_singleton: *mut PyObject,\n    pub NotIn_type: *mut PyObject,\n    pub Not_singleton: *mut PyObject,\n    pub Not_type: *mut PyObject,\n    pub Or_singleton: *mut PyObject,\n    pub Or_type: *mut PyObject,\n    pub ParamSpec_type: *mut PyObject,\n    pub Pass_type: *mut PyObject,\n    pub Pow_singleton: *mut PyObject,\n    pub Pow_type: *mut PyObject,\n    pub RShift_singleton: *mut PyObject,\n    pub RShift_type: *mut PyObject,\n    pub Raise_type: *mut PyObject,\n    pub Return_type: *mut PyObject,\n    pub SetComp_type: *mut PyObject,\n    pub Set_type: *mut PyObject,\n    pub Slice_type: *mut PyObject,\n    pub Starred_type: *mut PyObject,\n    pub Store_singleton: *mut PyObject,\n    pub Store_type: *mut PyObject,\n    pub Sub_singleton: *mut PyObject,\n    pub Sub_type: *mut PyObject,\n    pub Subscript_type: *mut PyObject,\n    pub TryStar_type: *mut PyObject,\n    pub Try_type: *mut PyObject,\n    pub Tuple_type: *mut PyObject,\n    pub TypeAlias_type: *mut PyObject,\n    pub TypeIgnore_type: *mut PyObject,\n    pub TypeVarTuple_type: *mut PyObject,\n    pub TypeVar_type: *mut PyObject,\n    pub UAdd_singleton: *mut PyObject,\n    pub UAdd_type: *mut PyObject,\n    pub USub_singleton: *mut PyObject,\n    pub USub_type: *mut PyObject,\n    pub UnaryOp_type: *mut PyObject,\n    pub While_type: *mut PyObject,\n    pub With_type: *mut PyObject,\n    pub YieldFrom_type: *mut PyObject,\n    pub Yield_type: *mut PyObject,\n    pub __dict__: *mut PyObject,\n    pub __doc__: *mut PyObject,\n    pub __match_args__: *mut PyObject,\n    pub __module__: *mut PyObject,\n    pub _attributes: *mut PyObject,\n    pub _fields: *mut PyObject,\n    pub alias_type: *mut PyObject,\n    pub annotation: *mut PyObject,\n    pub arg: *mut PyObject,\n    pub arg_type: *mut PyObject,\n    pub args: *mut PyObject,\n    pub argtypes: *mut PyObject,\n    pub arguments_type: *mut PyObject,\n    pub asname: *mut PyObject,\n    pub ast: *mut PyObject,\n    pub attr: *mut PyObject,\n    pub bases: *mut PyObject,\n    pub body: *mut PyObject,\n    pub boolop_type: *mut PyObject,\n    pub bound: *mut PyObject,\n    pub cases: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub cls: *mut PyObject,\n    pub cmpop_type: *mut PyObject,\n    pub col_offset: *mut PyObject,\n    pub comparators: *mut PyObject,\n    pub comprehension_type: *mut PyObject,\n    pub context_expr: *mut PyObject,\n    pub conversion: *mut PyObject,\n    pub ctx: *mut PyObject,\n    pub decorator_list: *mut PyObject,\n    pub defaults: *mut PyObject,\n    pub elt: *mut PyObject,\n    pub elts: *mut PyObject,\n    pub end_col_offset: *mut PyObject,\n    pub end_lineno: *mut PyObject,\n    pub exc: *mut PyObject,\n    pub excepthandler_type: *mut PyObject,\n    pub expr_context_type: *mut PyObject,\n    pub expr_type: *mut PyObject,\n    pub finalbody: *mut PyObject,\n    pub format_spec: *mut PyObject,\n    pub func: *mut PyObject,\n    pub generators: *mut PyObject,\n    pub guard: *mut PyObject,\n    pub handlers: *mut PyObject,\n    pub id: *mut PyObject,\n    pub ifs: *mut PyObject,\n    pub is_async: *mut PyObject,\n    pub items: *mut PyObject,\n    pub iter: *mut PyObject,\n    pub key: *mut PyObject,\n    pub keys: *mut PyObject,\n    pub keyword_type: *mut PyObject,\n    pub keywords: *mut PyObject,\n    pub kind: *mut PyObject,\n    pub kw_defaults: *mut PyObject,\n    pub kwarg: *mut PyObject,\n    pub kwd_attrs: *mut PyObject,\n    pub kwd_patterns: *mut PyObject,\n    pub kwonlyargs: *mut PyObject,\n    pub left: *mut PyObject,\n    pub level: *mut PyObject,\n    pub lineno: *mut PyObject,\n    pub lower: *mut PyObject,\n    pub match_case_type: *mut PyObject,\n    pub mod_type: *mut PyObject,\n    pub module: *mut PyObject,\n    pub msg: *mut PyObject,\n    pub name: *mut PyObject,\n    pub names: *mut PyObject,\n    pub op: *mut PyObject,\n    pub operand: *mut PyObject,\n    pub operator_type: *mut PyObject,\n    pub ops: *mut PyObject,\n    pub optional_vars: *mut PyObject,\n    pub orelse: *mut PyObject,\n    pub pattern: *mut PyObject,\n    pub pattern_type: *mut PyObject,\n    pub patterns: *mut PyObject,\n    pub posonlyargs: *mut PyObject,\n    pub rest: *mut PyObject,\n    pub returns: *mut PyObject,\n    pub right: *mut PyObject,\n    pub simple: *mut PyObject,\n    pub slice: *mut PyObject,\n    pub step: *mut PyObject,\n    pub stmt_type: *mut PyObject,\n    pub subject: *mut PyObject,\n    pub tag: *mut PyObject,\n    pub target: *mut PyObject,\n    pub targets: *mut PyObject,\n    pub test: *mut PyObject,\n    pub type_: *mut PyObject,\n    pub type_comment: *mut PyObject,\n    pub type_ignore_type: *mut PyObject,\n    pub type_ignores: *mut PyObject,\n    pub type_param_type: *mut PyObject,\n    pub type_params: *mut PyObject,\n    pub unaryop_type: *mut PyObject,\n    pub upper: *mut PyObject,\n    pub value: *mut PyObject,\n    pub values: *mut PyObject,\n    pub vararg: *mut PyObject,\n    pub withitem_type: *mut PyObject,\n}\nimpl Default for ast_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type atexit_callbackfunc = ::std::option::Option<unsafe extern \"C\" fn()>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _atexit_runtime_state {\n    pub mutex: PyThread_type_lock,\n    pub callbacks: [atexit_callbackfunc; 32usize],\n    pub ncallbacks: ::std::os::raw::c_int,\n}\nimpl Default for _atexit_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_callback {\n    pub func: atexit_datacallbackfunc,\n    pub data: *mut ::std::os::raw::c_void,\n    pub next: *mut atexit_callback,\n}\nimpl Default for atexit_callback {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_py_callback {\n    pub func: *mut PyObject,\n    pub args: *mut PyObject,\n    pub kwargs: *mut PyObject,\n}\nimpl Default for atexit_py_callback {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_state {\n    pub ll_callbacks: *mut atexit_callback,\n    pub last_ll_callback: *mut atexit_callback,\n    pub callbacks: *mut *mut atexit_py_callback,\n    pub ncallbacks: ::std::os::raw::c_int,\n    pub callback_len: ::std::os::raw::c_int,\n}\nimpl Default for atexit_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_address {\n    pub _value: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_int {\n    pub _value: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _gil_runtime_state {\n    pub interval: ::std::os::raw::c_ulong,\n    pub last_holder: _Py_atomic_address,\n    pub locked: _Py_atomic_int,\n    pub switch_number: ::std::os::raw::c_ulong,\n    pub cond: pthread_cond_t,\n    pub mutex: pthread_mutex_t,\n    pub switch_cond: pthread_cond_t,\n    pub switch_mutex: pthread_mutex_t,\n}\nimpl Default for _gil_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls {\n    pub busy: ::std::os::raw::c_int,\n    pub lock: PyThread_type_lock,\n    pub calls_to_do: _Py_atomic_int,\n    pub async_exc: ::std::os::raw::c_int,\n    pub calls: [_pending_calls__pending_call; 32usize],\n    pub first: ::std::os::raw::c_int,\n    pub last: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls__pending_call {\n    pub func: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub arg: *mut ::std::os::raw::c_void,\n}\nimpl Default for _pending_calls__pending_call {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _pending_calls {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ceval_runtime_state {\n    pub perf: _ceval_runtime_state__bindgen_ty_1,\n    pub signals_pending: _Py_atomic_int,\n    pub pending_mainthread: _pending_calls,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _ceval_runtime_state__bindgen_ty_1 {\n    pub _not_used: ::std::os::raw::c_int,\n}\nimpl Default for _ceval_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ceval_state {\n    pub eval_breaker: _Py_atomic_int,\n    pub gil_drop_request: _Py_atomic_int,\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub gil: *mut _gil_runtime_state,\n    pub own_gil: ::std::os::raw::c_int,\n    pub gc_scheduled: _Py_atomic_int,\n    pub pending: _pending_calls,\n}\nimpl Default for _ceval_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct callable_cache {\n    pub isinstance: *mut PyObject,\n    pub len: *mut PyObject,\n    pub list_append: *mut PyObject,\n    pub object__getattribute__: *mut PyObject,\n}\nimpl Default for callable_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtNode {\n    pub ob_base: PyObject,\n}\nimpl Default for PyHamtNode {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtObject {\n    pub ob_base: PyObject,\n    pub h_root: *mut PyHamtNode,\n    pub h_weakreflist: *mut PyObject,\n    pub h_count: Py_ssize_t,\n}\nimpl Default for PyHamtObject {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtNode_Bitmap {\n    pub ob_base: PyVarObject,\n    pub b_bitmap: u32,\n    pub b_array: [*mut PyObject; 1usize],\n}\nimpl Default for PyHamtNode_Bitmap {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyContextTokenMissing {\n    pub ob_base: PyObject,\n}\nimpl Default for _PyContextTokenMissing {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_context_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_dict_state {\n    pub global_version: u64,\n    pub next_keys_version: u32,\n    pub watchers: [PyDict_WatchCallback; 8usize],\n}\npub type ULong = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct Bigint {\n    pub next: *mut Bigint,\n    pub k: ::std::os::raw::c_int,\n    pub maxwds: ::std::os::raw::c_int,\n    pub sign: ::std::os::raw::c_int,\n    pub wds: ::std::os::raw::c_int,\n    pub x: [ULong; 1usize],\n}\nimpl Default for Bigint {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dtoa_state {\n    pub p5s: *mut Bigint,\n    pub freelist: [*mut Bigint; 8usize],\n    pub preallocated: [f64; 288usize],\n    pub preallocated_next: *mut f64,\n}\nimpl Default for _dtoa_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_exc_state {\n    pub errnomap: *mut PyObject,\n    pub memerrors_freelist: *mut PyBaseExceptionObject,\n    pub memerrors_numfree: ::std::os::raw::c_int,\n    pub PyExc_ExceptionGroup: *mut PyObject,\n}\nimpl Default for _Py_exc_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const _py_float_format_type__py_float_format_unknown: _py_float_format_type = 0;\npub const _py_float_format_type__py_float_format_ieee_big_endian: _py_float_format_type = 1;\npub const _py_float_format_type__py_float_format_ieee_little_endian: _py_float_format_type = 2;\npub type _py_float_format_type = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_float_runtime_state {\n    pub float_format: _py_float_format_type,\n    pub double_format: _py_float_format_type,\n}\nimpl Default for _Py_float_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_float_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _py_func_state {\n    pub next_version: u32,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_async_gen_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyGC_Head {\n    pub _gc_next: usize,\n    pub _gc_prev: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation {\n    pub head: PyGC_Head,\n    pub threshold: ::std::os::raw::c_int,\n    pub count: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation_stats {\n    pub collections: Py_ssize_t,\n    pub collected: Py_ssize_t,\n    pub uncollectable: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gc_runtime_state {\n    pub trash_delete_later: *mut PyObject,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub enabled: ::std::os::raw::c_int,\n    pub debug: ::std::os::raw::c_int,\n    pub generations: [gc_generation; 3usize],\n    pub generation0: *mut PyGC_Head,\n    pub permanent_generation: gc_generation,\n    pub generation_stats: [gc_generation_stats; 3usize],\n    pub collecting: ::std::os::raw::c_int,\n    pub garbage: *mut PyObject,\n    pub callbacks: *mut PyObject,\n    pub long_lived_total: Py_ssize_t,\n    pub long_lived_pending: Py_ssize_t,\n}\nimpl Default for _gc_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings {\n    pub literals: _Py_global_strings__bindgen_ty_1,\n    pub identifiers: _Py_global_strings__bindgen_ty_2,\n    pub ascii: [_Py_global_strings__bindgen_ty_3; 128usize],\n    pub latin1: [_Py_global_strings__bindgen_ty_4; 128usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1 {\n    pub _py_anon_dictcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_1,\n    pub _py_anon_genexpr: _Py_global_strings__bindgen_ty_1__bindgen_ty_2,\n    pub _py_anon_lambda: _Py_global_strings__bindgen_ty_1__bindgen_ty_3,\n    pub _py_anon_listcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_4,\n    pub _py_anon_module: _Py_global_strings__bindgen_ty_1__bindgen_ty_5,\n    pub _py_anon_setcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_6,\n    pub _py_anon_string: _Py_global_strings__bindgen_ty_1__bindgen_ty_7,\n    pub _py_anon_unknown: _Py_global_strings__bindgen_ty_1__bindgen_ty_8,\n    pub _py_close_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_9,\n    pub _py_dbl_close_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_10,\n    pub _py_dbl_open_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_11,\n    pub _py_dbl_percent: _Py_global_strings__bindgen_ty_1__bindgen_ty_12,\n    pub _py_defaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_13,\n    pub _py_dot: _Py_global_strings__bindgen_ty_1__bindgen_ty_14,\n    pub _py_dot_locals: _Py_global_strings__bindgen_ty_1__bindgen_ty_15,\n    pub _py_empty: _Py_global_strings__bindgen_ty_1__bindgen_ty_16,\n    pub _py_generic_base: _Py_global_strings__bindgen_ty_1__bindgen_ty_17,\n    pub _py_json_decoder: _Py_global_strings__bindgen_ty_1__bindgen_ty_18,\n    pub _py_kwdefaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_19,\n    pub _py_list_err: _Py_global_strings__bindgen_ty_1__bindgen_ty_20,\n    pub _py_newline: _Py_global_strings__bindgen_ty_1__bindgen_ty_21,\n    pub _py_open_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_22,\n    pub _py_percent: _Py_global_strings__bindgen_ty_1__bindgen_ty_23,\n    pub _py_shim_name: _Py_global_strings__bindgen_ty_1__bindgen_ty_24,\n    pub _py_type_params: _Py_global_strings__bindgen_ty_1__bindgen_ty_25,\n    pub _py_utf_8: _Py_global_strings__bindgen_ty_1__bindgen_ty_26,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_1 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_2 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_4 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_4 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_5 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_6 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_6 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_7 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_8 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_8 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_9 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_9 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_10 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_10 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_11 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_11 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_12 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_12 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_13 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_13 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_14 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_14 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_15 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_15 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_16 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 1usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_16 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_17 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_17 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_18 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_18 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_19 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_19 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_20 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 24usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_20 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_21 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_21 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_22 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_22 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_23 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_23 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_24 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_24 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_25 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_25 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_26 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_26 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_global_strings__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2 {\n    pub _py_CANCELLED: _Py_global_strings__bindgen_ty_2__bindgen_ty_1,\n    pub _py_FINISHED: _Py_global_strings__bindgen_ty_2__bindgen_ty_2,\n    pub _py_False: _Py_global_strings__bindgen_ty_2__bindgen_ty_3,\n    pub _py_JSONDecodeError: _Py_global_strings__bindgen_ty_2__bindgen_ty_4,\n    pub _py_PENDING: _Py_global_strings__bindgen_ty_2__bindgen_ty_5,\n    pub _py_Py_Repr: _Py_global_strings__bindgen_ty_2__bindgen_ty_6,\n    pub _py_TextIOWrapper: _Py_global_strings__bindgen_ty_2__bindgen_ty_7,\n    pub _py_True: _Py_global_strings__bindgen_ty_2__bindgen_ty_8,\n    pub _py_WarningMessage: _Py_global_strings__bindgen_ty_2__bindgen_ty_9,\n    pub _py__: _Py_global_strings__bindgen_ty_2__bindgen_ty_10,\n    pub _py__WindowsConsoleIO: _Py_global_strings__bindgen_ty_2__bindgen_ty_11,\n    pub _py___IOBase_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_12,\n    pub _py___abc_tpflags__: _Py_global_strings__bindgen_ty_2__bindgen_ty_13,\n    pub _py___abs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_14,\n    pub _py___abstractmethods__: _Py_global_strings__bindgen_ty_2__bindgen_ty_15,\n    pub _py___add__: _Py_global_strings__bindgen_ty_2__bindgen_ty_16,\n    pub _py___aenter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_17,\n    pub _py___aexit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_18,\n    pub _py___aiter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_19,\n    pub _py___all__: _Py_global_strings__bindgen_ty_2__bindgen_ty_20,\n    pub _py___and__: _Py_global_strings__bindgen_ty_2__bindgen_ty_21,\n    pub _py___anext__: _Py_global_strings__bindgen_ty_2__bindgen_ty_22,\n    pub _py___annotations__: _Py_global_strings__bindgen_ty_2__bindgen_ty_23,\n    pub _py___args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_24,\n    pub _py___asyncio_running_event_loop__: _Py_global_strings__bindgen_ty_2__bindgen_ty_25,\n    pub _py___await__: _Py_global_strings__bindgen_ty_2__bindgen_ty_26,\n    pub _py___bases__: _Py_global_strings__bindgen_ty_2__bindgen_ty_27,\n    pub _py___bool__: _Py_global_strings__bindgen_ty_2__bindgen_ty_28,\n    pub _py___buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_29,\n    pub _py___build_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_30,\n    pub _py___builtins__: _Py_global_strings__bindgen_ty_2__bindgen_ty_31,\n    pub _py___bytes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_32,\n    pub _py___call__: _Py_global_strings__bindgen_ty_2__bindgen_ty_33,\n    pub _py___cantrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_34,\n    pub _py___class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_35,\n    pub _py___class_getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_36,\n    pub _py___classcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_37,\n    pub _py___classdict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_38,\n    pub _py___classdictcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_39,\n    pub _py___complex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_40,\n    pub _py___contains__: _Py_global_strings__bindgen_ty_2__bindgen_ty_41,\n    pub _py___copy__: _Py_global_strings__bindgen_ty_2__bindgen_ty_42,\n    pub _py___ctypes_from_outparam__: _Py_global_strings__bindgen_ty_2__bindgen_ty_43,\n    pub _py___del__: _Py_global_strings__bindgen_ty_2__bindgen_ty_44,\n    pub _py___delattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_45,\n    pub _py___delete__: _Py_global_strings__bindgen_ty_2__bindgen_ty_46,\n    pub _py___delitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_47,\n    pub _py___dict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_48,\n    pub _py___dictoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_49,\n    pub _py___dir__: _Py_global_strings__bindgen_ty_2__bindgen_ty_50,\n    pub _py___divmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_51,\n    pub _py___doc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_52,\n    pub _py___enter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_53,\n    pub _py___eq__: _Py_global_strings__bindgen_ty_2__bindgen_ty_54,\n    pub _py___exit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_55,\n    pub _py___file__: _Py_global_strings__bindgen_ty_2__bindgen_ty_56,\n    pub _py___float__: _Py_global_strings__bindgen_ty_2__bindgen_ty_57,\n    pub _py___floordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_58,\n    pub _py___format__: _Py_global_strings__bindgen_ty_2__bindgen_ty_59,\n    pub _py___fspath__: _Py_global_strings__bindgen_ty_2__bindgen_ty_60,\n    pub _py___ge__: _Py_global_strings__bindgen_ty_2__bindgen_ty_61,\n    pub _py___get__: _Py_global_strings__bindgen_ty_2__bindgen_ty_62,\n    pub _py___getattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_63,\n    pub _py___getattribute__: _Py_global_strings__bindgen_ty_2__bindgen_ty_64,\n    pub _py___getinitargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_65,\n    pub _py___getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_66,\n    pub _py___getnewargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_67,\n    pub _py___getnewargs_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_68,\n    pub _py___getstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_69,\n    pub _py___gt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_70,\n    pub _py___hash__: _Py_global_strings__bindgen_ty_2__bindgen_ty_71,\n    pub _py___iadd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_72,\n    pub _py___iand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_73,\n    pub _py___ifloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_74,\n    pub _py___ilshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_75,\n    pub _py___imatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_76,\n    pub _py___imod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_77,\n    pub _py___import__: _Py_global_strings__bindgen_ty_2__bindgen_ty_78,\n    pub _py___imul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_79,\n    pub _py___index__: _Py_global_strings__bindgen_ty_2__bindgen_ty_80,\n    pub _py___init__: _Py_global_strings__bindgen_ty_2__bindgen_ty_81,\n    pub _py___init_subclass__: _Py_global_strings__bindgen_ty_2__bindgen_ty_82,\n    pub _py___instancecheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_83,\n    pub _py___int__: _Py_global_strings__bindgen_ty_2__bindgen_ty_84,\n    pub _py___invert__: _Py_global_strings__bindgen_ty_2__bindgen_ty_85,\n    pub _py___ior__: _Py_global_strings__bindgen_ty_2__bindgen_ty_86,\n    pub _py___ipow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_87,\n    pub _py___irshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_88,\n    pub _py___isabstractmethod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_89,\n    pub _py___isub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_90,\n    pub _py___iter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_91,\n    pub _py___itruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_92,\n    pub _py___ixor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_93,\n    pub _py___le__: _Py_global_strings__bindgen_ty_2__bindgen_ty_94,\n    pub _py___len__: _Py_global_strings__bindgen_ty_2__bindgen_ty_95,\n    pub _py___length_hint__: _Py_global_strings__bindgen_ty_2__bindgen_ty_96,\n    pub _py___lltrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_97,\n    pub _py___loader__: _Py_global_strings__bindgen_ty_2__bindgen_ty_98,\n    pub _py___lshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_99,\n    pub _py___lt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_100,\n    pub _py___main__: _Py_global_strings__bindgen_ty_2__bindgen_ty_101,\n    pub _py___matmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_102,\n    pub _py___missing__: _Py_global_strings__bindgen_ty_2__bindgen_ty_103,\n    pub _py___mod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_104,\n    pub _py___module__: _Py_global_strings__bindgen_ty_2__bindgen_ty_105,\n    pub _py___mro_entries__: _Py_global_strings__bindgen_ty_2__bindgen_ty_106,\n    pub _py___mul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_107,\n    pub _py___name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_108,\n    pub _py___ne__: _Py_global_strings__bindgen_ty_2__bindgen_ty_109,\n    pub _py___neg__: _Py_global_strings__bindgen_ty_2__bindgen_ty_110,\n    pub _py___new__: _Py_global_strings__bindgen_ty_2__bindgen_ty_111,\n    pub _py___newobj__: _Py_global_strings__bindgen_ty_2__bindgen_ty_112,\n    pub _py___newobj_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_113,\n    pub _py___next__: _Py_global_strings__bindgen_ty_2__bindgen_ty_114,\n    pub _py___notes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_115,\n    pub _py___or__: _Py_global_strings__bindgen_ty_2__bindgen_ty_116,\n    pub _py___orig_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_117,\n    pub _py___origin__: _Py_global_strings__bindgen_ty_2__bindgen_ty_118,\n    pub _py___package__: _Py_global_strings__bindgen_ty_2__bindgen_ty_119,\n    pub _py___parameters__: _Py_global_strings__bindgen_ty_2__bindgen_ty_120,\n    pub _py___path__: _Py_global_strings__bindgen_ty_2__bindgen_ty_121,\n    pub _py___pos__: _Py_global_strings__bindgen_ty_2__bindgen_ty_122,\n    pub _py___pow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_123,\n    pub _py___prepare__: _Py_global_strings__bindgen_ty_2__bindgen_ty_124,\n    pub _py___qualname__: _Py_global_strings__bindgen_ty_2__bindgen_ty_125,\n    pub _py___radd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_126,\n    pub _py___rand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_127,\n    pub _py___rdivmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_128,\n    pub _py___reduce__: _Py_global_strings__bindgen_ty_2__bindgen_ty_129,\n    pub _py___reduce_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_130,\n    pub _py___release_buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_131,\n    pub _py___repr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_132,\n    pub _py___reversed__: _Py_global_strings__bindgen_ty_2__bindgen_ty_133,\n    pub _py___rfloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_134,\n    pub _py___rlshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_135,\n    pub _py___rmatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_136,\n    pub _py___rmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_137,\n    pub _py___rmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_138,\n    pub _py___ror__: _Py_global_strings__bindgen_ty_2__bindgen_ty_139,\n    pub _py___round__: _Py_global_strings__bindgen_ty_2__bindgen_ty_140,\n    pub _py___rpow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_141,\n    pub _py___rrshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_142,\n    pub _py___rshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_143,\n    pub _py___rsub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_144,\n    pub _py___rtruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_145,\n    pub _py___rxor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_146,\n    pub _py___set__: _Py_global_strings__bindgen_ty_2__bindgen_ty_147,\n    pub _py___set_name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_148,\n    pub _py___setattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_149,\n    pub _py___setitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_150,\n    pub _py___setstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_151,\n    pub _py___sizeof__: _Py_global_strings__bindgen_ty_2__bindgen_ty_152,\n    pub _py___slotnames__: _Py_global_strings__bindgen_ty_2__bindgen_ty_153,\n    pub _py___slots__: _Py_global_strings__bindgen_ty_2__bindgen_ty_154,\n    pub _py___spec__: _Py_global_strings__bindgen_ty_2__bindgen_ty_155,\n    pub _py___str__: _Py_global_strings__bindgen_ty_2__bindgen_ty_156,\n    pub _py___sub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_157,\n    pub _py___subclasscheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_158,\n    pub _py___subclasshook__: _Py_global_strings__bindgen_ty_2__bindgen_ty_159,\n    pub _py___truediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_160,\n    pub _py___trunc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_161,\n    pub _py___type_params__: _Py_global_strings__bindgen_ty_2__bindgen_ty_162,\n    pub _py___typing_is_unpacked_typevartuple__: _Py_global_strings__bindgen_ty_2__bindgen_ty_163,\n    pub _py___typing_prepare_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_164,\n    pub _py___typing_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_165,\n    pub _py___typing_unpacked_tuple_args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_166,\n    pub _py___warningregistry__: _Py_global_strings__bindgen_ty_2__bindgen_ty_167,\n    pub _py___weaklistoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_168,\n    pub _py___weakref__: _Py_global_strings__bindgen_ty_2__bindgen_ty_169,\n    pub _py___xor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_170,\n    pub _py__abc_impl: _Py_global_strings__bindgen_ty_2__bindgen_ty_171,\n    pub _py__abstract_: _Py_global_strings__bindgen_ty_2__bindgen_ty_172,\n    pub _py__active: _Py_global_strings__bindgen_ty_2__bindgen_ty_173,\n    pub _py__annotation: _Py_global_strings__bindgen_ty_2__bindgen_ty_174,\n    pub _py__anonymous_: _Py_global_strings__bindgen_ty_2__bindgen_ty_175,\n    pub _py__argtypes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_176,\n    pub _py__as_parameter_: _Py_global_strings__bindgen_ty_2__bindgen_ty_177,\n    pub _py__asyncio_future_blocking: _Py_global_strings__bindgen_ty_2__bindgen_ty_178,\n    pub _py__blksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_179,\n    pub _py__bootstrap: _Py_global_strings__bindgen_ty_2__bindgen_ty_180,\n    pub _py__check_retval_: _Py_global_strings__bindgen_ty_2__bindgen_ty_181,\n    pub _py__dealloc_warn: _Py_global_strings__bindgen_ty_2__bindgen_ty_182,\n    pub _py__feature_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_183,\n    pub _py__fields_: _Py_global_strings__bindgen_ty_2__bindgen_ty_184,\n    pub _py__finalizing: _Py_global_strings__bindgen_ty_2__bindgen_ty_185,\n    pub _py__find_and_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_186,\n    pub _py__fix_up_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_187,\n    pub _py__flags_: _Py_global_strings__bindgen_ty_2__bindgen_ty_188,\n    pub _py__get_sourcefile: _Py_global_strings__bindgen_ty_2__bindgen_ty_189,\n    pub _py__handle_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_190,\n    pub _py__initializing: _Py_global_strings__bindgen_ty_2__bindgen_ty_191,\n    pub _py__io: _Py_global_strings__bindgen_ty_2__bindgen_ty_192,\n    pub _py__is_text_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_193,\n    pub _py__length_: _Py_global_strings__bindgen_ty_2__bindgen_ty_194,\n    pub _py__limbo: _Py_global_strings__bindgen_ty_2__bindgen_ty_195,\n    pub _py__lock_unlock_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_196,\n    pub _py__loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_197,\n    pub _py__needs_com_addref_: _Py_global_strings__bindgen_ty_2__bindgen_ty_198,\n    pub _py__pack_: _Py_global_strings__bindgen_ty_2__bindgen_ty_199,\n    pub _py__restype_: _Py_global_strings__bindgen_ty_2__bindgen_ty_200,\n    pub _py__showwarnmsg: _Py_global_strings__bindgen_ty_2__bindgen_ty_201,\n    pub _py__shutdown: _Py_global_strings__bindgen_ty_2__bindgen_ty_202,\n    pub _py__slotnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_203,\n    pub _py__strptime_datetime: _Py_global_strings__bindgen_ty_2__bindgen_ty_204,\n    pub _py__swappedbytes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_205,\n    pub _py__type_: _Py_global_strings__bindgen_ty_2__bindgen_ty_206,\n    pub _py__uninitialized_submodules: _Py_global_strings__bindgen_ty_2__bindgen_ty_207,\n    pub _py__warn_unawaited_coroutine: _Py_global_strings__bindgen_ty_2__bindgen_ty_208,\n    pub _py__xoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_209,\n    pub _py_a: _Py_global_strings__bindgen_ty_2__bindgen_ty_210,\n    pub _py_abs_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_211,\n    pub _py_access: _Py_global_strings__bindgen_ty_2__bindgen_ty_212,\n    pub _py_add: _Py_global_strings__bindgen_ty_2__bindgen_ty_213,\n    pub _py_add_done_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_214,\n    pub _py_after_in_child: _Py_global_strings__bindgen_ty_2__bindgen_ty_215,\n    pub _py_after_in_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_216,\n    pub _py_aggregate_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_217,\n    pub _py_alias: _Py_global_strings__bindgen_ty_2__bindgen_ty_218,\n    pub _py_append: _Py_global_strings__bindgen_ty_2__bindgen_ty_219,\n    pub _py_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_220,\n    pub _py_argdefs: _Py_global_strings__bindgen_ty_2__bindgen_ty_221,\n    pub _py_args: _Py_global_strings__bindgen_ty_2__bindgen_ty_222,\n    pub _py_arguments: _Py_global_strings__bindgen_ty_2__bindgen_ty_223,\n    pub _py_argv: _Py_global_strings__bindgen_ty_2__bindgen_ty_224,\n    pub _py_as_integer_ratio: _Py_global_strings__bindgen_ty_2__bindgen_ty_225,\n    pub _py_ast: _Py_global_strings__bindgen_ty_2__bindgen_ty_226,\n    pub _py_attribute: _Py_global_strings__bindgen_ty_2__bindgen_ty_227,\n    pub _py_authorizer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_228,\n    pub _py_autocommit: _Py_global_strings__bindgen_ty_2__bindgen_ty_229,\n    pub _py_b: _Py_global_strings__bindgen_ty_2__bindgen_ty_230,\n    pub _py_backtick: _Py_global_strings__bindgen_ty_2__bindgen_ty_231,\n    pub _py_base: _Py_global_strings__bindgen_ty_2__bindgen_ty_232,\n    pub _py_before: _Py_global_strings__bindgen_ty_2__bindgen_ty_233,\n    pub _py_big: _Py_global_strings__bindgen_ty_2__bindgen_ty_234,\n    pub _py_binary_form: _Py_global_strings__bindgen_ty_2__bindgen_ty_235,\n    pub _py_block: _Py_global_strings__bindgen_ty_2__bindgen_ty_236,\n    pub _py_bound: _Py_global_strings__bindgen_ty_2__bindgen_ty_237,\n    pub _py_buffer: _Py_global_strings__bindgen_ty_2__bindgen_ty_238,\n    pub _py_buffer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_239,\n    pub _py_buffer_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_240,\n    pub _py_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_241,\n    pub _py_buffers: _Py_global_strings__bindgen_ty_2__bindgen_ty_242,\n    pub _py_bufsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_243,\n    pub _py_builtins: _Py_global_strings__bindgen_ty_2__bindgen_ty_244,\n    pub _py_byteorder: _Py_global_strings__bindgen_ty_2__bindgen_ty_245,\n    pub _py_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_246,\n    pub _py_bytes_per_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_247,\n    pub _py_c: _Py_global_strings__bindgen_ty_2__bindgen_ty_248,\n    pub _py_c_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_249,\n    pub _py_c_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_250,\n    pub _py_c_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_251,\n    pub _py_cached_statements: _Py_global_strings__bindgen_ty_2__bindgen_ty_252,\n    pub _py_cadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_253,\n    pub _py_cafile: _Py_global_strings__bindgen_ty_2__bindgen_ty_254,\n    pub _py_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_255,\n    pub _py_call_exception_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_256,\n    pub _py_call_soon: _Py_global_strings__bindgen_ty_2__bindgen_ty_257,\n    pub _py_cancel: _Py_global_strings__bindgen_ty_2__bindgen_ty_258,\n    pub _py_capath: _Py_global_strings__bindgen_ty_2__bindgen_ty_259,\n    pub _py_category: _Py_global_strings__bindgen_ty_2__bindgen_ty_260,\n    pub _py_cb_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_261,\n    pub _py_certfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_262,\n    pub _py_check_same_thread: _Py_global_strings__bindgen_ty_2__bindgen_ty_263,\n    pub _py_clear: _Py_global_strings__bindgen_ty_2__bindgen_ty_264,\n    pub _py_close: _Py_global_strings__bindgen_ty_2__bindgen_ty_265,\n    pub _py_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_266,\n    pub _py_closefd: _Py_global_strings__bindgen_ty_2__bindgen_ty_267,\n    pub _py_closure: _Py_global_strings__bindgen_ty_2__bindgen_ty_268,\n    pub _py_co_argcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_269,\n    pub _py_co_cellvars: _Py_global_strings__bindgen_ty_2__bindgen_ty_270,\n    pub _py_co_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_271,\n    pub _py_co_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_272,\n    pub _py_co_exceptiontable: _Py_global_strings__bindgen_ty_2__bindgen_ty_273,\n    pub _py_co_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_274,\n    pub _py_co_firstlineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_275,\n    pub _py_co_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_276,\n    pub _py_co_freevars: _Py_global_strings__bindgen_ty_2__bindgen_ty_277,\n    pub _py_co_kwonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_278,\n    pub _py_co_linetable: _Py_global_strings__bindgen_ty_2__bindgen_ty_279,\n    pub _py_co_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_280,\n    pub _py_co_names: _Py_global_strings__bindgen_ty_2__bindgen_ty_281,\n    pub _py_co_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_282,\n    pub _py_co_posonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_283,\n    pub _py_co_qualname: _Py_global_strings__bindgen_ty_2__bindgen_ty_284,\n    pub _py_co_stacksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_285,\n    pub _py_co_varnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_286,\n    pub _py_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_287,\n    pub _py_command: _Py_global_strings__bindgen_ty_2__bindgen_ty_288,\n    pub _py_comment_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_289,\n    pub _py_compile_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_290,\n    pub _py_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_291,\n    pub _py_context: _Py_global_strings__bindgen_ty_2__bindgen_ty_292,\n    pub _py_contravariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_293,\n    pub _py_cookie: _Py_global_strings__bindgen_ty_2__bindgen_ty_294,\n    pub _py_copy: _Py_global_strings__bindgen_ty_2__bindgen_ty_295,\n    pub _py_copyreg: _Py_global_strings__bindgen_ty_2__bindgen_ty_296,\n    pub _py_coro: _Py_global_strings__bindgen_ty_2__bindgen_ty_297,\n    pub _py_count: _Py_global_strings__bindgen_ty_2__bindgen_ty_298,\n    pub _py_covariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_299,\n    pub _py_cwd: _Py_global_strings__bindgen_ty_2__bindgen_ty_300,\n    pub _py_d: _Py_global_strings__bindgen_ty_2__bindgen_ty_301,\n    pub _py_data: _Py_global_strings__bindgen_ty_2__bindgen_ty_302,\n    pub _py_database: _Py_global_strings__bindgen_ty_2__bindgen_ty_303,\n    pub _py_decode: _Py_global_strings__bindgen_ty_2__bindgen_ty_304,\n    pub _py_decoder: _Py_global_strings__bindgen_ty_2__bindgen_ty_305,\n    pub _py_default: _Py_global_strings__bindgen_ty_2__bindgen_ty_306,\n    pub _py_defaultaction: _Py_global_strings__bindgen_ty_2__bindgen_ty_307,\n    pub _py_delete: _Py_global_strings__bindgen_ty_2__bindgen_ty_308,\n    pub _py_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_309,\n    pub _py_detect_types: _Py_global_strings__bindgen_ty_2__bindgen_ty_310,\n    pub _py_deterministic: _Py_global_strings__bindgen_ty_2__bindgen_ty_311,\n    pub _py_device: _Py_global_strings__bindgen_ty_2__bindgen_ty_312,\n    pub _py_dict: _Py_global_strings__bindgen_ty_2__bindgen_ty_313,\n    pub _py_dictcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_314,\n    pub _py_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_315,\n    pub _py_digest: _Py_global_strings__bindgen_ty_2__bindgen_ty_316,\n    pub _py_digest_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_317,\n    pub _py_digestmod: _Py_global_strings__bindgen_ty_2__bindgen_ty_318,\n    pub _py_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_319,\n    pub _py_discard: _Py_global_strings__bindgen_ty_2__bindgen_ty_320,\n    pub _py_dispatch_table: _Py_global_strings__bindgen_ty_2__bindgen_ty_321,\n    pub _py_displayhook: _Py_global_strings__bindgen_ty_2__bindgen_ty_322,\n    pub _py_dklen: _Py_global_strings__bindgen_ty_2__bindgen_ty_323,\n    pub _py_doc: _Py_global_strings__bindgen_ty_2__bindgen_ty_324,\n    pub _py_dont_inherit: _Py_global_strings__bindgen_ty_2__bindgen_ty_325,\n    pub _py_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_326,\n    pub _py_dst_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_327,\n    pub _py_duration: _Py_global_strings__bindgen_ty_2__bindgen_ty_328,\n    pub _py_e: _Py_global_strings__bindgen_ty_2__bindgen_ty_329,\n    pub _py_eager_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_330,\n    pub _py_effective_ids: _Py_global_strings__bindgen_ty_2__bindgen_ty_331,\n    pub _py_element_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_332,\n    pub _py_encode: _Py_global_strings__bindgen_ty_2__bindgen_ty_333,\n    pub _py_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_334,\n    pub _py_end: _Py_global_strings__bindgen_ty_2__bindgen_ty_335,\n    pub _py_end_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_336,\n    pub _py_end_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_337,\n    pub _py_endpos: _Py_global_strings__bindgen_ty_2__bindgen_ty_338,\n    pub _py_entrypoint: _Py_global_strings__bindgen_ty_2__bindgen_ty_339,\n    pub _py_env: _Py_global_strings__bindgen_ty_2__bindgen_ty_340,\n    pub _py_errors: _Py_global_strings__bindgen_ty_2__bindgen_ty_341,\n    pub _py_event: _Py_global_strings__bindgen_ty_2__bindgen_ty_342,\n    pub _py_eventmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_343,\n    pub _py_exc_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_344,\n    pub _py_exc_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_345,\n    pub _py_excepthook: _Py_global_strings__bindgen_ty_2__bindgen_ty_346,\n    pub _py_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_347,\n    pub _py_existing_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_348,\n    pub _py_exp: _Py_global_strings__bindgen_ty_2__bindgen_ty_349,\n    pub _py_extend: _Py_global_strings__bindgen_ty_2__bindgen_ty_350,\n    pub _py_extra_tokens: _Py_global_strings__bindgen_ty_2__bindgen_ty_351,\n    pub _py_facility: _Py_global_strings__bindgen_ty_2__bindgen_ty_352,\n    pub _py_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_353,\n    pub _py_false: _Py_global_strings__bindgen_ty_2__bindgen_ty_354,\n    pub _py_family: _Py_global_strings__bindgen_ty_2__bindgen_ty_355,\n    pub _py_fanout: _Py_global_strings__bindgen_ty_2__bindgen_ty_356,\n    pub _py_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_357,\n    pub _py_fd2: _Py_global_strings__bindgen_ty_2__bindgen_ty_358,\n    pub _py_fdel: _Py_global_strings__bindgen_ty_2__bindgen_ty_359,\n    pub _py_fget: _Py_global_strings__bindgen_ty_2__bindgen_ty_360,\n    pub _py_file: _Py_global_strings__bindgen_ty_2__bindgen_ty_361,\n    pub _py_file_actions: _Py_global_strings__bindgen_ty_2__bindgen_ty_362,\n    pub _py_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_363,\n    pub _py_fileno: _Py_global_strings__bindgen_ty_2__bindgen_ty_364,\n    pub _py_filepath: _Py_global_strings__bindgen_ty_2__bindgen_ty_365,\n    pub _py_fillvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_366,\n    pub _py_filters: _Py_global_strings__bindgen_ty_2__bindgen_ty_367,\n    pub _py_final: _Py_global_strings__bindgen_ty_2__bindgen_ty_368,\n    pub _py_find_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_369,\n    pub _py_fix_imports: _Py_global_strings__bindgen_ty_2__bindgen_ty_370,\n    pub _py_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_371,\n    pub _py_flush: _Py_global_strings__bindgen_ty_2__bindgen_ty_372,\n    pub _py_follow_symlinks: _Py_global_strings__bindgen_ty_2__bindgen_ty_373,\n    pub _py_format: _Py_global_strings__bindgen_ty_2__bindgen_ty_374,\n    pub _py_frequency: _Py_global_strings__bindgen_ty_2__bindgen_ty_375,\n    pub _py_from_param: _Py_global_strings__bindgen_ty_2__bindgen_ty_376,\n    pub _py_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_377,\n    pub _py_fromtimestamp: _Py_global_strings__bindgen_ty_2__bindgen_ty_378,\n    pub _py_fromutc: _Py_global_strings__bindgen_ty_2__bindgen_ty_379,\n    pub _py_fset: _Py_global_strings__bindgen_ty_2__bindgen_ty_380,\n    pub _py_func: _Py_global_strings__bindgen_ty_2__bindgen_ty_381,\n    pub _py_future: _Py_global_strings__bindgen_ty_2__bindgen_ty_382,\n    pub _py_generation: _Py_global_strings__bindgen_ty_2__bindgen_ty_383,\n    pub _py_genexpr: _Py_global_strings__bindgen_ty_2__bindgen_ty_384,\n    pub _py_get: _Py_global_strings__bindgen_ty_2__bindgen_ty_385,\n    pub _py_get_debug: _Py_global_strings__bindgen_ty_2__bindgen_ty_386,\n    pub _py_get_event_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_387,\n    pub _py_get_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_388,\n    pub _py_get_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_389,\n    pub _py_getattr: _Py_global_strings__bindgen_ty_2__bindgen_ty_390,\n    pub _py_getstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_391,\n    pub _py_gid: _Py_global_strings__bindgen_ty_2__bindgen_ty_392,\n    pub _py_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_393,\n    pub _py_groupindex: _Py_global_strings__bindgen_ty_2__bindgen_ty_394,\n    pub _py_groups: _Py_global_strings__bindgen_ty_2__bindgen_ty_395,\n    pub _py_handle: _Py_global_strings__bindgen_ty_2__bindgen_ty_396,\n    pub _py_hash_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_397,\n    pub _py_header: _Py_global_strings__bindgen_ty_2__bindgen_ty_398,\n    pub _py_headers: _Py_global_strings__bindgen_ty_2__bindgen_ty_399,\n    pub _py_hi: _Py_global_strings__bindgen_ty_2__bindgen_ty_400,\n    pub _py_hook: _Py_global_strings__bindgen_ty_2__bindgen_ty_401,\n    pub _py_id: _Py_global_strings__bindgen_ty_2__bindgen_ty_402,\n    pub _py_ident: _Py_global_strings__bindgen_ty_2__bindgen_ty_403,\n    pub _py_ignore: _Py_global_strings__bindgen_ty_2__bindgen_ty_404,\n    pub _py_imag: _Py_global_strings__bindgen_ty_2__bindgen_ty_405,\n    pub _py_importlib: _Py_global_strings__bindgen_ty_2__bindgen_ty_406,\n    pub _py_in_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_407,\n    pub _py_incoming: _Py_global_strings__bindgen_ty_2__bindgen_ty_408,\n    pub _py_indexgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_409,\n    pub _py_inf: _Py_global_strings__bindgen_ty_2__bindgen_ty_410,\n    pub _py_infer_variance: _Py_global_strings__bindgen_ty_2__bindgen_ty_411,\n    pub _py_inheritable: _Py_global_strings__bindgen_ty_2__bindgen_ty_412,\n    pub _py_initial: _Py_global_strings__bindgen_ty_2__bindgen_ty_413,\n    pub _py_initial_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_414,\n    pub _py_initial_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_415,\n    pub _py_initval: _Py_global_strings__bindgen_ty_2__bindgen_ty_416,\n    pub _py_inner_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_417,\n    pub _py_input: _Py_global_strings__bindgen_ty_2__bindgen_ty_418,\n    pub _py_insert_comments: _Py_global_strings__bindgen_ty_2__bindgen_ty_419,\n    pub _py_insert_pis: _Py_global_strings__bindgen_ty_2__bindgen_ty_420,\n    pub _py_instructions: _Py_global_strings__bindgen_ty_2__bindgen_ty_421,\n    pub _py_intern: _Py_global_strings__bindgen_ty_2__bindgen_ty_422,\n    pub _py_intersection: _Py_global_strings__bindgen_ty_2__bindgen_ty_423,\n    pub _py_is_running: _Py_global_strings__bindgen_ty_2__bindgen_ty_424,\n    pub _py_isatty: _Py_global_strings__bindgen_ty_2__bindgen_ty_425,\n    pub _py_isinstance: _Py_global_strings__bindgen_ty_2__bindgen_ty_426,\n    pub _py_isoformat: _Py_global_strings__bindgen_ty_2__bindgen_ty_427,\n    pub _py_isolation_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_428,\n    pub _py_istext: _Py_global_strings__bindgen_ty_2__bindgen_ty_429,\n    pub _py_item: _Py_global_strings__bindgen_ty_2__bindgen_ty_430,\n    pub _py_items: _Py_global_strings__bindgen_ty_2__bindgen_ty_431,\n    pub _py_iter: _Py_global_strings__bindgen_ty_2__bindgen_ty_432,\n    pub _py_iterable: _Py_global_strings__bindgen_ty_2__bindgen_ty_433,\n    pub _py_iterations: _Py_global_strings__bindgen_ty_2__bindgen_ty_434,\n    pub _py_join: _Py_global_strings__bindgen_ty_2__bindgen_ty_435,\n    pub _py_jump: _Py_global_strings__bindgen_ty_2__bindgen_ty_436,\n    pub _py_keepends: _Py_global_strings__bindgen_ty_2__bindgen_ty_437,\n    pub _py_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_438,\n    pub _py_keyfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_439,\n    pub _py_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_440,\n    pub _py_kind: _Py_global_strings__bindgen_ty_2__bindgen_ty_441,\n    pub _py_kw: _Py_global_strings__bindgen_ty_2__bindgen_ty_442,\n    pub _py_kw1: _Py_global_strings__bindgen_ty_2__bindgen_ty_443,\n    pub _py_kw2: _Py_global_strings__bindgen_ty_2__bindgen_ty_444,\n    pub _py_lambda: _Py_global_strings__bindgen_ty_2__bindgen_ty_445,\n    pub _py_last: _Py_global_strings__bindgen_ty_2__bindgen_ty_446,\n    pub _py_last_exc: _Py_global_strings__bindgen_ty_2__bindgen_ty_447,\n    pub _py_last_node: _Py_global_strings__bindgen_ty_2__bindgen_ty_448,\n    pub _py_last_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_449,\n    pub _py_last_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_450,\n    pub _py_last_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_451,\n    pub _py_latin1: _Py_global_strings__bindgen_ty_2__bindgen_ty_452,\n    pub _py_leaf_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_453,\n    pub _py_len: _Py_global_strings__bindgen_ty_2__bindgen_ty_454,\n    pub _py_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_455,\n    pub _py_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_456,\n    pub _py_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_457,\n    pub _py_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_458,\n    pub _py_line_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_459,\n    pub _py_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_460,\n    pub _py_listcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_461,\n    pub _py_little: _Py_global_strings__bindgen_ty_2__bindgen_ty_462,\n    pub _py_lo: _Py_global_strings__bindgen_ty_2__bindgen_ty_463,\n    pub _py_locale: _Py_global_strings__bindgen_ty_2__bindgen_ty_464,\n    pub _py_locals: _Py_global_strings__bindgen_ty_2__bindgen_ty_465,\n    pub _py_logoption: _Py_global_strings__bindgen_ty_2__bindgen_ty_466,\n    pub _py_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_467,\n    pub _py_mapping: _Py_global_strings__bindgen_ty_2__bindgen_ty_468,\n    pub _py_match: _Py_global_strings__bindgen_ty_2__bindgen_ty_469,\n    pub _py_max_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_470,\n    pub _py_maxdigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_471,\n    pub _py_maxevents: _Py_global_strings__bindgen_ty_2__bindgen_ty_472,\n    pub _py_maxmem: _Py_global_strings__bindgen_ty_2__bindgen_ty_473,\n    pub _py_maxsplit: _Py_global_strings__bindgen_ty_2__bindgen_ty_474,\n    pub _py_maxvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_475,\n    pub _py_memLevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_476,\n    pub _py_memlimit: _Py_global_strings__bindgen_ty_2__bindgen_ty_477,\n    pub _py_message: _Py_global_strings__bindgen_ty_2__bindgen_ty_478,\n    pub _py_metaclass: _Py_global_strings__bindgen_ty_2__bindgen_ty_479,\n    pub _py_metadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_480,\n    pub _py_method: _Py_global_strings__bindgen_ty_2__bindgen_ty_481,\n    pub _py_mod: _Py_global_strings__bindgen_ty_2__bindgen_ty_482,\n    pub _py_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_483,\n    pub _py_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_484,\n    pub _py_module_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_485,\n    pub _py_modules: _Py_global_strings__bindgen_ty_2__bindgen_ty_486,\n    pub _py_mro: _Py_global_strings__bindgen_ty_2__bindgen_ty_487,\n    pub _py_msg: _Py_global_strings__bindgen_ty_2__bindgen_ty_488,\n    pub _py_mycmp: _Py_global_strings__bindgen_ty_2__bindgen_ty_489,\n    pub _py_n: _Py_global_strings__bindgen_ty_2__bindgen_ty_490,\n    pub _py_n_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_491,\n    pub _py_n_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_492,\n    pub _py_n_sequence_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_493,\n    pub _py_n_unnamed_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_494,\n    pub _py_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_495,\n    pub _py_name_from: _Py_global_strings__bindgen_ty_2__bindgen_ty_496,\n    pub _py_namespace_separator: _Py_global_strings__bindgen_ty_2__bindgen_ty_497,\n    pub _py_namespaces: _Py_global_strings__bindgen_ty_2__bindgen_ty_498,\n    pub _py_narg: _Py_global_strings__bindgen_ty_2__bindgen_ty_499,\n    pub _py_ndigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_500,\n    pub _py_new_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_501,\n    pub _py_new_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_502,\n    pub _py_newline: _Py_global_strings__bindgen_ty_2__bindgen_ty_503,\n    pub _py_newlines: _Py_global_strings__bindgen_ty_2__bindgen_ty_504,\n    pub _py_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_505,\n    pub _py_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_506,\n    pub _py_node_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_507,\n    pub _py_node_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_508,\n    pub _py_ns: _Py_global_strings__bindgen_ty_2__bindgen_ty_509,\n    pub _py_nstype: _Py_global_strings__bindgen_ty_2__bindgen_ty_510,\n    pub _py_nt: _Py_global_strings__bindgen_ty_2__bindgen_ty_511,\n    pub _py_null: _Py_global_strings__bindgen_ty_2__bindgen_ty_512,\n    pub _py_number: _Py_global_strings__bindgen_ty_2__bindgen_ty_513,\n    pub _py_obj: _Py_global_strings__bindgen_ty_2__bindgen_ty_514,\n    pub _py_object: _Py_global_strings__bindgen_ty_2__bindgen_ty_515,\n    pub _py_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_516,\n    pub _py_offset_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_517,\n    pub _py_offset_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_518,\n    pub _py_on_type_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_519,\n    pub _py_onceregistry: _Py_global_strings__bindgen_ty_2__bindgen_ty_520,\n    pub _py_only_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_521,\n    pub _py_oparg: _Py_global_strings__bindgen_ty_2__bindgen_ty_522,\n    pub _py_opcode: _Py_global_strings__bindgen_ty_2__bindgen_ty_523,\n    pub _py_open: _Py_global_strings__bindgen_ty_2__bindgen_ty_524,\n    pub _py_opener: _Py_global_strings__bindgen_ty_2__bindgen_ty_525,\n    pub _py_operation: _Py_global_strings__bindgen_ty_2__bindgen_ty_526,\n    pub _py_optimize: _Py_global_strings__bindgen_ty_2__bindgen_ty_527,\n    pub _py_options: _Py_global_strings__bindgen_ty_2__bindgen_ty_528,\n    pub _py_order: _Py_global_strings__bindgen_ty_2__bindgen_ty_529,\n    pub _py_origin: _Py_global_strings__bindgen_ty_2__bindgen_ty_530,\n    pub _py_out_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_531,\n    pub _py_outgoing: _Py_global_strings__bindgen_ty_2__bindgen_ty_532,\n    pub _py_overlapped: _Py_global_strings__bindgen_ty_2__bindgen_ty_533,\n    pub _py_owner: _Py_global_strings__bindgen_ty_2__bindgen_ty_534,\n    pub _py_p: _Py_global_strings__bindgen_ty_2__bindgen_ty_535,\n    pub _py_pages: _Py_global_strings__bindgen_ty_2__bindgen_ty_536,\n    pub _py_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_537,\n    pub _py_password: _Py_global_strings__bindgen_ty_2__bindgen_ty_538,\n    pub _py_path: _Py_global_strings__bindgen_ty_2__bindgen_ty_539,\n    pub _py_pattern: _Py_global_strings__bindgen_ty_2__bindgen_ty_540,\n    pub _py_peek: _Py_global_strings__bindgen_ty_2__bindgen_ty_541,\n    pub _py_persistent_id: _Py_global_strings__bindgen_ty_2__bindgen_ty_542,\n    pub _py_persistent_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_543,\n    pub _py_person: _Py_global_strings__bindgen_ty_2__bindgen_ty_544,\n    pub _py_pi_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_545,\n    pub _py_pid: _Py_global_strings__bindgen_ty_2__bindgen_ty_546,\n    pub _py_policy: _Py_global_strings__bindgen_ty_2__bindgen_ty_547,\n    pub _py_pos: _Py_global_strings__bindgen_ty_2__bindgen_ty_548,\n    pub _py_pos1: _Py_global_strings__bindgen_ty_2__bindgen_ty_549,\n    pub _py_pos2: _Py_global_strings__bindgen_ty_2__bindgen_ty_550,\n    pub _py_posix: _Py_global_strings__bindgen_ty_2__bindgen_ty_551,\n    pub _py_print_file_and_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_552,\n    pub _py_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_553,\n    pub _py_progress: _Py_global_strings__bindgen_ty_2__bindgen_ty_554,\n    pub _py_progress_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_555,\n    pub _py_progress_routine: _Py_global_strings__bindgen_ty_2__bindgen_ty_556,\n    pub _py_proto: _Py_global_strings__bindgen_ty_2__bindgen_ty_557,\n    pub _py_protocol: _Py_global_strings__bindgen_ty_2__bindgen_ty_558,\n    pub _py_ps1: _Py_global_strings__bindgen_ty_2__bindgen_ty_559,\n    pub _py_ps2: _Py_global_strings__bindgen_ty_2__bindgen_ty_560,\n    pub _py_query: _Py_global_strings__bindgen_ty_2__bindgen_ty_561,\n    pub _py_quotetabs: _Py_global_strings__bindgen_ty_2__bindgen_ty_562,\n    pub _py_r: _Py_global_strings__bindgen_ty_2__bindgen_ty_563,\n    pub _py_raw: _Py_global_strings__bindgen_ty_2__bindgen_ty_564,\n    pub _py_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_565,\n    pub _py_read1: _Py_global_strings__bindgen_ty_2__bindgen_ty_566,\n    pub _py_readable: _Py_global_strings__bindgen_ty_2__bindgen_ty_567,\n    pub _py_readall: _Py_global_strings__bindgen_ty_2__bindgen_ty_568,\n    pub _py_readinto: _Py_global_strings__bindgen_ty_2__bindgen_ty_569,\n    pub _py_readinto1: _Py_global_strings__bindgen_ty_2__bindgen_ty_570,\n    pub _py_readline: _Py_global_strings__bindgen_ty_2__bindgen_ty_571,\n    pub _py_readonly: _Py_global_strings__bindgen_ty_2__bindgen_ty_572,\n    pub _py_real: _Py_global_strings__bindgen_ty_2__bindgen_ty_573,\n    pub _py_reducer_override: _Py_global_strings__bindgen_ty_2__bindgen_ty_574,\n    pub _py_registry: _Py_global_strings__bindgen_ty_2__bindgen_ty_575,\n    pub _py_rel_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_576,\n    pub _py_release: _Py_global_strings__bindgen_ty_2__bindgen_ty_577,\n    pub _py_reload: _Py_global_strings__bindgen_ty_2__bindgen_ty_578,\n    pub _py_repl: _Py_global_strings__bindgen_ty_2__bindgen_ty_579,\n    pub _py_replace: _Py_global_strings__bindgen_ty_2__bindgen_ty_580,\n    pub _py_reserved: _Py_global_strings__bindgen_ty_2__bindgen_ty_581,\n    pub _py_reset: _Py_global_strings__bindgen_ty_2__bindgen_ty_582,\n    pub _py_resetids: _Py_global_strings__bindgen_ty_2__bindgen_ty_583,\n    pub _py_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_584,\n    pub _py_reverse: _Py_global_strings__bindgen_ty_2__bindgen_ty_585,\n    pub _py_reversed: _Py_global_strings__bindgen_ty_2__bindgen_ty_586,\n    pub _py_s: _Py_global_strings__bindgen_ty_2__bindgen_ty_587,\n    pub _py_salt: _Py_global_strings__bindgen_ty_2__bindgen_ty_588,\n    pub _py_sched_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_589,\n    pub _py_scheduler: _Py_global_strings__bindgen_ty_2__bindgen_ty_590,\n    pub _py_seek: _Py_global_strings__bindgen_ty_2__bindgen_ty_591,\n    pub _py_seekable: _Py_global_strings__bindgen_ty_2__bindgen_ty_592,\n    pub _py_selectors: _Py_global_strings__bindgen_ty_2__bindgen_ty_593,\n    pub _py_self: _Py_global_strings__bindgen_ty_2__bindgen_ty_594,\n    pub _py_send: _Py_global_strings__bindgen_ty_2__bindgen_ty_595,\n    pub _py_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_596,\n    pub _py_sequence: _Py_global_strings__bindgen_ty_2__bindgen_ty_597,\n    pub _py_server_hostname: _Py_global_strings__bindgen_ty_2__bindgen_ty_598,\n    pub _py_server_side: _Py_global_strings__bindgen_ty_2__bindgen_ty_599,\n    pub _py_session: _Py_global_strings__bindgen_ty_2__bindgen_ty_600,\n    pub _py_setcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_601,\n    pub _py_setpgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_602,\n    pub _py_setsid: _Py_global_strings__bindgen_ty_2__bindgen_ty_603,\n    pub _py_setsigdef: _Py_global_strings__bindgen_ty_2__bindgen_ty_604,\n    pub _py_setsigmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_605,\n    pub _py_setstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_606,\n    pub _py_shape: _Py_global_strings__bindgen_ty_2__bindgen_ty_607,\n    pub _py_show_cmd: _Py_global_strings__bindgen_ty_2__bindgen_ty_608,\n    pub _py_signed: _Py_global_strings__bindgen_ty_2__bindgen_ty_609,\n    pub _py_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_610,\n    pub _py_sizehint: _Py_global_strings__bindgen_ty_2__bindgen_ty_611,\n    pub _py_skip_file_prefixes: _Py_global_strings__bindgen_ty_2__bindgen_ty_612,\n    pub _py_sleep: _Py_global_strings__bindgen_ty_2__bindgen_ty_613,\n    pub _py_sock: _Py_global_strings__bindgen_ty_2__bindgen_ty_614,\n    pub _py_sort: _Py_global_strings__bindgen_ty_2__bindgen_ty_615,\n    pub _py_sound: _Py_global_strings__bindgen_ty_2__bindgen_ty_616,\n    pub _py_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_617,\n    pub _py_source_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_618,\n    pub _py_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_619,\n    pub _py_src_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_620,\n    pub _py_stacklevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_621,\n    pub _py_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_622,\n    pub _py_statement: _Py_global_strings__bindgen_ty_2__bindgen_ty_623,\n    pub _py_status: _Py_global_strings__bindgen_ty_2__bindgen_ty_624,\n    pub _py_stderr: _Py_global_strings__bindgen_ty_2__bindgen_ty_625,\n    pub _py_stdin: _Py_global_strings__bindgen_ty_2__bindgen_ty_626,\n    pub _py_stdout: _Py_global_strings__bindgen_ty_2__bindgen_ty_627,\n    pub _py_step: _Py_global_strings__bindgen_ty_2__bindgen_ty_628,\n    pub _py_steps: _Py_global_strings__bindgen_ty_2__bindgen_ty_629,\n    pub _py_store_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_630,\n    pub _py_strategy: _Py_global_strings__bindgen_ty_2__bindgen_ty_631,\n    pub _py_strftime: _Py_global_strings__bindgen_ty_2__bindgen_ty_632,\n    pub _py_strict: _Py_global_strings__bindgen_ty_2__bindgen_ty_633,\n    pub _py_strict_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_634,\n    pub _py_string: _Py_global_strings__bindgen_ty_2__bindgen_ty_635,\n    pub _py_sub_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_636,\n    pub _py_symmetric_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_637,\n    pub _py_tabsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_638,\n    pub _py_tag: _Py_global_strings__bindgen_ty_2__bindgen_ty_639,\n    pub _py_target: _Py_global_strings__bindgen_ty_2__bindgen_ty_640,\n    pub _py_target_is_directory: _Py_global_strings__bindgen_ty_2__bindgen_ty_641,\n    pub _py_task: _Py_global_strings__bindgen_ty_2__bindgen_ty_642,\n    pub _py_tb_frame: _Py_global_strings__bindgen_ty_2__bindgen_ty_643,\n    pub _py_tb_lasti: _Py_global_strings__bindgen_ty_2__bindgen_ty_644,\n    pub _py_tb_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_645,\n    pub _py_tb_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_646,\n    pub _py_tell: _Py_global_strings__bindgen_ty_2__bindgen_ty_647,\n    pub _py_template: _Py_global_strings__bindgen_ty_2__bindgen_ty_648,\n    pub _py_term: _Py_global_strings__bindgen_ty_2__bindgen_ty_649,\n    pub _py_text: _Py_global_strings__bindgen_ty_2__bindgen_ty_650,\n    pub _py_threading: _Py_global_strings__bindgen_ty_2__bindgen_ty_651,\n    pub _py_throw: _Py_global_strings__bindgen_ty_2__bindgen_ty_652,\n    pub _py_timeout: _Py_global_strings__bindgen_ty_2__bindgen_ty_653,\n    pub _py_times: _Py_global_strings__bindgen_ty_2__bindgen_ty_654,\n    pub _py_timetuple: _Py_global_strings__bindgen_ty_2__bindgen_ty_655,\n    pub _py_top: _Py_global_strings__bindgen_ty_2__bindgen_ty_656,\n    pub _py_trace_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_657,\n    pub _py_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_658,\n    pub _py_trailers: _Py_global_strings__bindgen_ty_2__bindgen_ty_659,\n    pub _py_translate: _Py_global_strings__bindgen_ty_2__bindgen_ty_660,\n    pub _py_true: _Py_global_strings__bindgen_ty_2__bindgen_ty_661,\n    pub _py_truncate: _Py_global_strings__bindgen_ty_2__bindgen_ty_662,\n    pub _py_twice: _Py_global_strings__bindgen_ty_2__bindgen_ty_663,\n    pub _py_txt: _Py_global_strings__bindgen_ty_2__bindgen_ty_664,\n    pub _py_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_665,\n    pub _py_type_params: _Py_global_strings__bindgen_ty_2__bindgen_ty_666,\n    pub _py_tz: _Py_global_strings__bindgen_ty_2__bindgen_ty_667,\n    pub _py_tzname: _Py_global_strings__bindgen_ty_2__bindgen_ty_668,\n    pub _py_uid: _Py_global_strings__bindgen_ty_2__bindgen_ty_669,\n    pub _py_unlink: _Py_global_strings__bindgen_ty_2__bindgen_ty_670,\n    pub _py_unraisablehook: _Py_global_strings__bindgen_ty_2__bindgen_ty_671,\n    pub _py_uri: _Py_global_strings__bindgen_ty_2__bindgen_ty_672,\n    pub _py_usedforsecurity: _Py_global_strings__bindgen_ty_2__bindgen_ty_673,\n    pub _py_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_674,\n    pub _py_values: _Py_global_strings__bindgen_ty_2__bindgen_ty_675,\n    pub _py_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_676,\n    pub _py_volume: _Py_global_strings__bindgen_ty_2__bindgen_ty_677,\n    pub _py_warnings: _Py_global_strings__bindgen_ty_2__bindgen_ty_678,\n    pub _py_warnoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_679,\n    pub _py_wbits: _Py_global_strings__bindgen_ty_2__bindgen_ty_680,\n    pub _py_week: _Py_global_strings__bindgen_ty_2__bindgen_ty_681,\n    pub _py_weekday: _Py_global_strings__bindgen_ty_2__bindgen_ty_682,\n    pub _py_which: _Py_global_strings__bindgen_ty_2__bindgen_ty_683,\n    pub _py_who: _Py_global_strings__bindgen_ty_2__bindgen_ty_684,\n    pub _py_withdata: _Py_global_strings__bindgen_ty_2__bindgen_ty_685,\n    pub _py_writable: _Py_global_strings__bindgen_ty_2__bindgen_ty_686,\n    pub _py_write: _Py_global_strings__bindgen_ty_2__bindgen_ty_687,\n    pub _py_write_through: _Py_global_strings__bindgen_ty_2__bindgen_ty_688,\n    pub _py_x: _Py_global_strings__bindgen_ty_2__bindgen_ty_689,\n    pub _py_year: _Py_global_strings__bindgen_ty_2__bindgen_ty_690,\n    pub _py_zdict: _Py_global_strings__bindgen_ty_2__bindgen_ty_691,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_1 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_2 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_3 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_4 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_4 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_5 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_5 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_6 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_6 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_7 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_7 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_8 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_8 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_9 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_9 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_10 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_10 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_11 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_11 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_12 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_12 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_13 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_13 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_14 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_14 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_15 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_15 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_16 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_16 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_17 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_17 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_18 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_18 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_19 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_19 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_20 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_20 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_21 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_21 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_22 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_22 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_23 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_23 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_24 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_24 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_25 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 31usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_25 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_26 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_26 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_27 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_27 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_28 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_28 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_29 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_29 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_30 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_30 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_31 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_31 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_32 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_32 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_33 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_33 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_34 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_34 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_35 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_35 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_36 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_36 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_37 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_37 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_38 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_38 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_39 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_39 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_40 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_40 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_41 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_41 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_42 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_42 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_43 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_43 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_44 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_44 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_45 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_45 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_46 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_46 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_47 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_47 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_48 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_48 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_49 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_49 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_50 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_50 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_51 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_51 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_52 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_52 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_53 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_53 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_54 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_54 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_55 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_55 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_56 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_56 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_57 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_57 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_58 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_58 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_59 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_59 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_60 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_60 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_61 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_61 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_62 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_62 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_63 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_63 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_64 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_64 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_65 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_65 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_66 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_66 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_67 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_67 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_68 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_68 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_69 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_69 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_70 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_70 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_71 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_71 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_72 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_72 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_73 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_73 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_74 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_74 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_75 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_75 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_76 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_76 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_77 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_77 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_78 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_78 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_79 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_79 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_80 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_80 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_81 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_81 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_82 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_82 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_83 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_83 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_84 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_84 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_85 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_85 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_86 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_86 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_87 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_87 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_88 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_88 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_89 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 21usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_89 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_90 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_90 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_91 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_91 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_92 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_92 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_93 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_93 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_94 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_94 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_95 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_95 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_96 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_96 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_97 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_97 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_98 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_98 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_99 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_99 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_100 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_100 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_101 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_101 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_102 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_102 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_103 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_103 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_104 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_104 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_105 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_105 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_106 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_106 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_107 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_107 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_108 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_108 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_109 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_109 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_110 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_110 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_111 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_111 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_112 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_112 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_113 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_113 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_114 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_114 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_115 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_115 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_116 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_116 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_117 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_117 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_118 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_118 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_119 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_119 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_120 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_120 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_121 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_121 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_122 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_122 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_123 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_123 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_124 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_124 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_125 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_125 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_126 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_126 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_127 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_127 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_128 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_128 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_129 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_129 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_130 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_130 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_131 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_131 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_132 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_132 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_133 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_133 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_134 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_134 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_135 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_135 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_136 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_136 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_137 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_137 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_138 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_138 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_139 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_139 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_140 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_140 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_141 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_141 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_142 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_142 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_143 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_143 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_144 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_144 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_145 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_145 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_146 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_146 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_147 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_147 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_148 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_148 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_149 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_149 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_150 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_150 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_151 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_151 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_152 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_152 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_153 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_153 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_154 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_154 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_155 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_155 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_156 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_156 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_157 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_157 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_158 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_158 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_159 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_159 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_160 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_160 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_161 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_161 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_162 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_162 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_163 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 36usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_163 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_164 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_164 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_165 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_165 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_166 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 31usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_166 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_167 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_167 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_168 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_168 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_169 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_169 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_170 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_170 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_171 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_171 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_172 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_172 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_173 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_173 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_174 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_174 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_175 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_175 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_176 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_176 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_177 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_177 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_178 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_178 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_179 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_179 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_180 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_180 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_181 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_181 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_182 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_182 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_183 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_183 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_184 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_184 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_185 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_185 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_186 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_186 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_187 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_187 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_188 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_188 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_189 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_189 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_190 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_190 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_191 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_191 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_192 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_192 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_193 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_193 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_194 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_194 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_195 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_195 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_196 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_196 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_197 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_197 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_198 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_198 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_199 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_199 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_200 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_200 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_201 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_201 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_202 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_202 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_203 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_203 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_204 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_204 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_205 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_205 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_206 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_206 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_207 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 26usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_207 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_208 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 26usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_208 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_209 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_209 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_210 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_210 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_211 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_211 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_212 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_212 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_213 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_213 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_214 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_214 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_215 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_215 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_216 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_216 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_217 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_217 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_218 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_218 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_219 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_219 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_220 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_220 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_221 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_221 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_222 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_222 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_223 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_223 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_224 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_224 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_225 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_225 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_226 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_226 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_227 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_227 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_228 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_228 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_229 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_229 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_230 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_230 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_231 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_231 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_232 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_232 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_233 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_233 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_234 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_234 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_235 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_235 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_236 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_236 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_237 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_237 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_238 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_238 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_239 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_239 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_240 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_240 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_241 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_241 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_242 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_242 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_243 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_243 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_244 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_244 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_245 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_245 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_246 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_246 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_247 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_247 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_248 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_248 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_249 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_249 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_250 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_250 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_251 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_251 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_252 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_252 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_253 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_253 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_254 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_254 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_255 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_255 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_256 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 23usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_256 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_257 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_257 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_258 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_258 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_259 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_259 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_260 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_260 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_261 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_261 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_262 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_262 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_263 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_263 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_264 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_264 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_265 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_265 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_266 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_266 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_267 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_267 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_268 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_268 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_269 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_269 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_270 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_270 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_271 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_271 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_272 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_272 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_273 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_273 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_274 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_274 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_275 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_275 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_276 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_276 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_277 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_277 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_278 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_278 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_279 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_279 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_280 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_280 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_281 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_281 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_282 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_282 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_283 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_283 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_284 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_284 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_285 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_285 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_286 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_286 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_287 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_287 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_288 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_288 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_289 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_289 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_290 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_290 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_291 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_291 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_292 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_292 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_293 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_293 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_294 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_294 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_295 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_295 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_296 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_296 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_297 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_297 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_298 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_298 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_299 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_299 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_300 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_300 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_301 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_301 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_302 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_302 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_303 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_303 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_304 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_304 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_305 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_305 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_306 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_306 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_307 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_307 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_308 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_308 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_309 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_309 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_310 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_310 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_311 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_311 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_312 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_312 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_313 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_313 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_314 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_314 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_315 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_315 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_316 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_316 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_317 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_317 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_318 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_318 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_319 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_319 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_320 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_320 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_321 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_321 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_322 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_322 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_323 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_323 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_324 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_324 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_325 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_325 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_326 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_326 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_327 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_327 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_328 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_328 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_329 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_329 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_330 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_330 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_331 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_331 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_332 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_332 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_333 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_333 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_334 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_334 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_335 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_335 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_336 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_336 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_337 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_337 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_338 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_338 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_339 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_339 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_340 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_340 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_341 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_341 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_342 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_342 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_343 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_343 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_344 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_344 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_345 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_345 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_346 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_346 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_347 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_347 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_348 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_348 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_349 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_349 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_350 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_350 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_351 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_351 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_352 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_352 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_353 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_353 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_354 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_354 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_355 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_355 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_356 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_356 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_357 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_357 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_358 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_358 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_359 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_359 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_360 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_360 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_361 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_361 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_362 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_362 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_363 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_363 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_364 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_364 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_365 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_365 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_366 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_366 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_367 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_367 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_368 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_368 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_369 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_369 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_370 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_370 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_371 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_371 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_372 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_372 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_373 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_373 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_374 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_374 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_375 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_375 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_376 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_376 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_377 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_377 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_378 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_378 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_379 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_379 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_380 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_380 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_381 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_381 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_382 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_382 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_383 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_383 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_384 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_384 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_385 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_385 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_386 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_386 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_387 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_387 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_388 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_388 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_389 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_389 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_390 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_390 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_391 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_391 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_392 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_392 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_393 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_393 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_394 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_394 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_395 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_395 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_396 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_396 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_397 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_397 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_398 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_398 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_399 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_399 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_400 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_400 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_401 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_401 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_402 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_402 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_403 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_403 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_404 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_404 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_405 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_405 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_406 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_406 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_407 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_407 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_408 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_408 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_409 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_409 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_410 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_410 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_411 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_411 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_412 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_412 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_413 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_413 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_414 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_414 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_415 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_415 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_416 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_416 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_417 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_417 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_418 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_418 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_419 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_419 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_420 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_420 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_421 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_421 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_422 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_422 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_423 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_423 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_424 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_424 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_425 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_425 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_426 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_426 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_427 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_427 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_428 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_428 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_429 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_429 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_430 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_430 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_431 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_431 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_432 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_432 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_433 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_433 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_434 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_434 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_435 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_435 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_436 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_436 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_437 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_437 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_438 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_438 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_439 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_439 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_440 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_440 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_441 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_441 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_442 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_442 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_443 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_443 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_444 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_444 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_445 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_445 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_446 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_446 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_447 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_447 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_448 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_448 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_449 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_449 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_450 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_450 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_451 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_451 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_452 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_452 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_453 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_453 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_454 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_454 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_455 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_455 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_456 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_456 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_457 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_457 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_458 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_458 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_459 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_459 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_460 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_460 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_461 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_461 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_462 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_462 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_463 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_463 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_464 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_464 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_465 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_465 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_466 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_466 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_467 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_467 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_468 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_468 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_469 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_469 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_470 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_470 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_471 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_471 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_472 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_472 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_473 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_473 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_474 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_474 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_475 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_475 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_476 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_476 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_477 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_477 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_478 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_478 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_479 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_479 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_480 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_480 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_481 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_481 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_482 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_482 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_483 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_483 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_484 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_484 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_485 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_485 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_486 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_486 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_487 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_487 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_488 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_488 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_489 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_489 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_490 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_490 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_491 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_491 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_492 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_492 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_493 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_493 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_494 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_494 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_495 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_495 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_496 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_496 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_497 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_497 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_498 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_498 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_499 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_499 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_500 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_500 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_501 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_501 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_502 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_502 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_503 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_503 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_504 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_504 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_505 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_505 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_506 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_506 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_507 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_507 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_508 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_508 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_509 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_509 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_510 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_510 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_511 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_511 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_512 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_512 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_513 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_513 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_514 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_514 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_515 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_515 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_516 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_516 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_517 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_517 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_518 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_518 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_519 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_519 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_520 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_520 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_521 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_521 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_522 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_522 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_523 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_523 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_524 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_524 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_525 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_525 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_526 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_526 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_527 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_527 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_528 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_528 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_529 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_529 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_530 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_530 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_531 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_531 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_532 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_532 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_533 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_533 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_534 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_534 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_535 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_535 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_536 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_536 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_537 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_537 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_538 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_538 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_539 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_539 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_540 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_540 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_541 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_541 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_542 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_542 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_543 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_543 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_544 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_544 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_545 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_545 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_546 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_546 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_547 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_547 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_548 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_548 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_549 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_549 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_550 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_550 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_551 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_551 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_552 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_552 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_553 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_553 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_554 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_554 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_555 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_555 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_556 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_556 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_557 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_557 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_558 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_558 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_559 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_559 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_560 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_560 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_561 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_561 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_562 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_562 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_563 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_563 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_564 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_564 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_565 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_565 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_566 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_566 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_567 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_567 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_568 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_568 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_569 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_569 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_570 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_570 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_571 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_571 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_572 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_572 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_573 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_573 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_574 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_574 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_575 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_575 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_576 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_576 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_577 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_577 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_578 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_578 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_579 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_579 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_580 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_580 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_581 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_581 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_582 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_582 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_583 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_583 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_584 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_584 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_585 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_585 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_586 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_586 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_587 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_587 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_588 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_588 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_589 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_589 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_590 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_590 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_591 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_591 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_592 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_592 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_593 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_593 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_594 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_594 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_595 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_595 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_596 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_596 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_597 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_597 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_598 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_598 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_599 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_599 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_600 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_600 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_601 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_601 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_602 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_602 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_603 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_603 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_604 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_604 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_605 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_605 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_606 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_606 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_607 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_607 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_608 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_608 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_609 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_609 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_610 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_610 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_611 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_611 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_612 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_612 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_613 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_613 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_614 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_614 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_615 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_615 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_616 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_616 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_617 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_617 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_618 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_618 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_619 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_619 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_620 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_620 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_621 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_621 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_622 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_622 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_623 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_623 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_624 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_624 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_625 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_625 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_626 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_626 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_627 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_627 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_628 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_628 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_629 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_629 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_630 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_630 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_631 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_631 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_632 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_632 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_633 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_633 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_634 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_634 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_635 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_635 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_636 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_636 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_637 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 28usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_637 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_638 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_638 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_639 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_639 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_640 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_640 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_641 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_641 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_642 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_642 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_643 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_643 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_644 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_644 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_645 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_645 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_646 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_646 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_647 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_647 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_648 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_648 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_649 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_649 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_650 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_650 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_651 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_651 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_652 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_652 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_653 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_653 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_654 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_654 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_655 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_655 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_656 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_656 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_657 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_657 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_658 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_658 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_659 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_659 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_660 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_660 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_661 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_661 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_662 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_662 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_663 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_663 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_664 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_664 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_665 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_665 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_666 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_666 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_667 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_667 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_668 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_668 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_669 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_669 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_670 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_670 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_671 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_671 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_672 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_672 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_673 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_673 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_674 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_674 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_675 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_675 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_676 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_676 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_677 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_677 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_678 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_678 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_679 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_679 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_680 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_680 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_681 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_681 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_682 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_682 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_683 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_683 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_684 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_684 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_685 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_685 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_686 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_686 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_687 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_687 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_688 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_688 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_689 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_689 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_690 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_690 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_691 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_691 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_global_strings__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_3 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_4 {\n    pub _latin1: PyCompactUnicodeObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_4 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_global_strings {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _types_runtime_state {\n    pub next_version_tag: ::std::os::raw::c_uint,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache_entry {\n    pub version: ::std::os::raw::c_uint,\n    pub name: *mut PyObject,\n    pub value: *mut PyObject,\n}\nimpl Default for type_cache_entry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache {\n    pub hashtable: [type_cache_entry; 4096usize],\n}\nimpl Default for type_cache {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct static_builtin_state {\n    pub type_: *mut PyTypeObject,\n    pub readying: ::std::os::raw::c_int,\n    pub ready: ::std::os::raw::c_int,\n    pub tp_dict: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n}\nimpl Default for static_builtin_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct types_state {\n    pub next_version_tag: ::std::os::raw::c_uint,\n    pub type_cache: type_cache,\n    pub num_builtins_initialized: usize,\n    pub builtins: [static_builtin_state; 200usize],\n}\nimpl Default for types_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type pytype_slotdef = wrapperbase;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects {\n    pub singletons: _Py_static_objects__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects__bindgen_ty_1 {\n    pub small_ints: [PyLongObject; 262usize],\n    pub bytes_empty: PyBytesObject,\n    pub bytes_characters: [_Py_static_objects__bindgen_ty_1__bindgen_ty_1; 256usize],\n    pub strings: _Py_global_strings,\n    pub _tuple_empty_gc_not_used: PyGC_Head,\n    pub tuple_empty: PyTupleObject,\n    pub _hamt_bitmap_node_empty_gc_not_used: PyGC_Head,\n    pub hamt_bitmap_node_empty: PyHamtNode_Bitmap,\n    pub context_token_missing: _PyContextTokenMissing,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects__bindgen_ty_1__bindgen_ty_1 {\n    pub ob: PyBytesObject,\n    pub eos: ::std::os::raw::c_char,\n}\nimpl Default for _Py_static_objects__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_static_objects__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_static_objects {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_interp_cached_objects {\n    pub interned_strings: *mut PyObject,\n    pub str_replace_inf: *mut PyObject,\n    pub objreduce: *mut PyObject,\n    pub type_slots_pname: *mut PyObject,\n    pub type_slots_ptrs: [*mut pytype_slotdef; 10usize],\n    pub generic_type: *mut PyTypeObject,\n    pub typevar_type: *mut PyTypeObject,\n    pub typevartuple_type: *mut PyTypeObject,\n    pub paramspec_type: *mut PyTypeObject,\n    pub paramspecargs_type: *mut PyTypeObject,\n    pub paramspeckwargs_type: *mut PyTypeObject,\n}\nimpl Default for _Py_interp_cached_objects {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_interp_static_objects {\n    pub singletons: _Py_interp_static_objects__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_interp_static_objects__bindgen_ty_1 {\n    pub _not_used: ::std::os::raw::c_int,\n    pub _hamt_empty_gc_not_used: PyGC_Head,\n    pub hamt_empty: PyHamtObject,\n    pub last_resort_memory_error: PyBaseExceptionObject,\n}\nimpl Default for _Py_interp_static_objects__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _Py_interp_static_objects {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_slist_item_s {\n    pub next: *mut _Py_slist_item_s,\n}\nimpl Default for _Py_slist_item_s {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _Py_slist_item_t = _Py_slist_item_s;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_slist_t {\n    pub head: *mut _Py_slist_item_t,\n}\nimpl Default for _Py_slist_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_hashtable_entry_t {\n    pub _Py_slist_item: _Py_slist_item_t,\n    pub key_hash: Py_uhash_t,\n    pub key: *mut ::std::os::raw::c_void,\n    pub value: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_hashtable_entry_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _Py_hashtable_hash_func =\n    ::std::option::Option<unsafe extern \"C\" fn(key: *const ::std::os::raw::c_void) -> Py_uhash_t>;\npub type _Py_hashtable_compare_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        key1: *const ::std::os::raw::c_void,\n        key2: *const ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type _Py_hashtable_destroy_func =\n    ::std::option::Option<unsafe extern \"C\" fn(key: *mut ::std::os::raw::c_void)>;\npub type _Py_hashtable_get_entry_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        ht: *mut _Py_hashtable_t,\n        key: *const ::std::os::raw::c_void,\n    ) -> *mut _Py_hashtable_entry_t,\n>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_hashtable_allocator_t {\n    pub malloc:\n        ::std::option::Option<unsafe extern \"C\" fn(size: usize) -> *mut ::std::os::raw::c_void>,\n    pub free: ::std::option::Option<unsafe extern \"C\" fn(ptr: *mut ::std::os::raw::c_void)>,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_hashtable_t {\n    pub nentries: usize,\n    pub nbuckets: usize,\n    pub buckets: *mut _Py_slist_t,\n    pub get_entry_func: _Py_hashtable_get_entry_func,\n    pub hash_func: _Py_hashtable_hash_func,\n    pub compare_func: _Py_hashtable_compare_func,\n    pub key_destroy_func: _Py_hashtable_destroy_func,\n    pub value_destroy_func: _Py_hashtable_destroy_func,\n    pub alloc: _Py_hashtable_allocator_t,\n}\nimpl Default for _Py_hashtable_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _time_runtime_state {\n    pub ticks_per_second_initialized: ::std::os::raw::c_int,\n    pub ticks_per_second: ::std::os::raw::c_long,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_runtime_state {\n    pub inittab: *mut _inittab,\n    pub last_module_index: Py_ssize_t,\n    pub extensions: _import_runtime_state__bindgen_ty_1,\n    pub pkgcontext: *const ::std::os::raw::c_char,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_runtime_state__bindgen_ty_1 {\n    pub mutex: PyThread_type_lock,\n    pub hashtable: *mut _Py_hashtable_t,\n}\nimpl Default for _import_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _import_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_state {\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub override_frozen_modules: ::std::os::raw::c_int,\n    pub override_multi_interp_extensions_check: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub import_func: *mut PyObject,\n    pub lock: _import_state__bindgen_ty_1,\n    pub find_and_load: _import_state__bindgen_ty_2,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_state__bindgen_ty_1 {\n    pub mutex: PyThread_type_lock,\n    pub thread: ::std::os::raw::c_ulong,\n    pub level: ::std::os::raw::c_int,\n}\nimpl Default for _import_state__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _import_state__bindgen_ty_2 {\n    pub import_level: ::std::os::raw::c_int,\n    pub accumulated: _PyTime_t,\n    pub header: ::std::os::raw::c_int,\n}\nimpl Default for _import_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyObject,\n    pub f_back: *mut PyFrameObject,\n    pub f_frame: *mut _PyInterpreterFrame,\n    pub f_trace: *mut PyObject,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_fast_as_locals: ::std::os::raw::c_char,\n    pub _f_frame_data: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyInterpreterFrame {\n    pub f_code: *mut PyCodeObject,\n    pub previous: *mut _PyInterpreterFrame,\n    pub f_funcobj: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_builtins: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub frame_obj: *mut PyFrameObject,\n    pub prev_instr: *mut _Py_CODEUNIT,\n    pub stacktop: ::std::os::raw::c_int,\n    pub return_offset: u16,\n    pub owner: ::std::os::raw::c_char,\n    pub localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _PyInterpreterFrame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_list_state {}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _py_object_runtime_state {\n    pub _not_used: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _py_object_state {\n    pub _not_used: ::std::os::raw::c_int,\n}\npub type pymem_uint = ::std::os::raw::c_uint;\npub type pymem_block = u8;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pool_header {\n    pub ref_: pool_header__bindgen_ty_1,\n    pub freeblock: *mut pymem_block,\n    pub nextpool: *mut pool_header,\n    pub prevpool: *mut pool_header,\n    pub arenaindex: pymem_uint,\n    pub szidx: pymem_uint,\n    pub nextoffset: pymem_uint,\n    pub maxnextoffset: pymem_uint,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pool_header__bindgen_ty_1 {\n    pub _padding: *mut pymem_block,\n    pub count: pymem_uint,\n}\nimpl Default for pool_header__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for pool_header {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type poolp = *mut pool_header;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct arena_object {\n    pub address: usize,\n    pub pool_address: *mut pymem_block,\n    pub nfreepools: pymem_uint,\n    pub ntotalpools: pymem_uint,\n    pub freepools: *mut pool_header,\n    pub nextarena: *mut arena_object,\n    pub prevarena: *mut arena_object,\n}\nimpl Default for arena_object {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _obmalloc_pools {\n    pub used: [poolp; 64usize],\n}\nimpl Default for _obmalloc_pools {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _obmalloc_mgmt {\n    pub arenas: *mut arena_object,\n    pub maxarenas: pymem_uint,\n    pub unused_arena_objects: *mut arena_object,\n    pub usable_arenas: *mut arena_object,\n    pub nfp2lasta: [*mut arena_object; 65usize],\n    pub narenas_currently_allocated: usize,\n    pub ntimes_arena_allocated: usize,\n    pub narenas_highwater: usize,\n    pub raw_allocated_blocks: Py_ssize_t,\n}\nimpl Default for _obmalloc_mgmt {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct arena_coverage_t {\n    pub tail_hi: i32,\n    pub tail_lo: i32,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct arena_map_bot {\n    pub arenas: [arena_coverage_t; 16384usize],\n}\nimpl Default for arena_map_bot {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct arena_map_mid {\n    pub ptrs: [*mut arena_map_bot; 32768usize],\n}\nimpl Default for arena_map_mid {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct arena_map_top {\n    pub ptrs: [*mut arena_map_mid; 32768usize],\n}\nimpl Default for arena_map_top {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type arena_map_top_t = arena_map_top;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _obmalloc_usage {\n    pub arena_map_root: arena_map_top_t,\n    pub arena_map_mid_count: ::std::os::raw::c_int,\n    pub arena_map_bot_count: ::std::os::raw::c_int,\n}\nimpl Default for _obmalloc_usage {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _obmalloc_global_state {\n    pub dump_debug_stats: ::std::os::raw::c_int,\n    pub interpreter_leaks: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _obmalloc_state {\n    pub pools: _obmalloc_pools,\n    pub mgmt: _obmalloc_mgmt,\n    pub usage: _obmalloc_usage,\n}\nimpl Default for _obmalloc_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tuple_state {\n    pub _unused: ::std::os::raw::c_char,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _fileutils_state {\n    pub force_ascii: ::std::os::raw::c_int,\n}\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyUnicode_Name_CAPI {\n    pub getname: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            code: Py_UCS4,\n            buffer: *mut ::std::os::raw::c_char,\n            buflen: ::std::os::raw::c_int,\n            with_alias_and_seq: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub getcode: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            name: *const ::std::os::raw::c_char,\n            namelen: ::std::os::raw::c_int,\n            code: *mut Py_UCS4,\n            with_named_seq: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_runtime_ids {\n    pub lock: PyThread_type_lock,\n    pub next_index: Py_ssize_t,\n}\nimpl Default for _Py_unicode_runtime_ids {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_runtime_state {\n    pub ids: _Py_unicode_runtime_ids,\n}\nimpl Default for _Py_unicode_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_fs_codec {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub utf8: ::std::os::raw::c_int,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _Py_unicode_fs_codec {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_ids {\n    pub size: Py_ssize_t,\n    pub array: *mut *mut PyObject,\n}\nimpl Default for _Py_unicode_ids {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_state {\n    pub fs_codec: _Py_unicode_fs_codec,\n    pub ucnhash_capi: *mut _PyUnicode_Name_CAPI,\n    pub ids: _Py_unicode_ids,\n}\nimpl Default for _Py_unicode_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_long_state {\n    pub max_str_digits: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub next: *mut PyInterpreterState,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub _initialized: ::std::os::raw::c_int,\n    pub finalizing: ::std::os::raw::c_int,\n    pub monitoring_version: u64,\n    pub last_restart_version: u64,\n    pub threads: _is_pythreads,\n    pub runtime: *mut pyruntimestate,\n    pub _finalizing: _Py_atomic_address,\n    pub gc: _gc_runtime_state,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub ceval: _ceval_state,\n    pub imports: _import_state,\n    pub _gil: _gil_runtime_state,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub config: PyConfig,\n    pub feature_flags: ::std::os::raw::c_ulong,\n    pub dict: *mut PyObject,\n    pub sysdict_copy: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub func_watchers: [PyFunction_WatchCallback; 8usize],\n    pub active_func_watchers: u8,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub warnings: _warnings_runtime_state,\n    pub atexit: atexit_state,\n    pub obmalloc: _obmalloc_state,\n    pub audit_hooks: *mut PyObject,\n    pub type_watchers: [PyType_WatchCallback; 8usize],\n    pub code_watchers: [PyCode_WatchCallback; 8usize],\n    pub active_code_watchers: u8,\n    pub object_state: _py_object_state,\n    pub unicode: _Py_unicode_state,\n    pub float_state: _Py_float_state,\n    pub long_state: _Py_long_state,\n    pub dtoa: _dtoa_state,\n    pub func_state: _py_func_state,\n    pub slice_cache: *mut PySliceObject,\n    pub tuple: _Py_tuple_state,\n    pub list: _Py_list_state,\n    pub dict_state: _Py_dict_state,\n    pub async_gen: _Py_async_gen_state,\n    pub context: _Py_context_state,\n    pub exc_state: _Py_exc_state,\n    pub ast: ast_state,\n    pub types: types_state,\n    pub callable_cache: callable_cache,\n    pub interpreter_trampoline: *mut PyCodeObject,\n    pub monitors: _Py_GlobalMonitors,\n    pub f_opcode_trace_set: bool,\n    pub sys_profile_initialized: bool,\n    pub sys_trace_initialized: bool,\n    pub sys_profiling_threads: Py_ssize_t,\n    pub sys_tracing_threads: Py_ssize_t,\n    pub monitoring_callables: [[*mut PyObject; 17usize]; 8usize],\n    pub monitoring_tool_names: [*mut PyObject; 8usize],\n    pub cached_objects: _Py_interp_cached_objects,\n    pub static_objects: _Py_interp_static_objects,\n    pub _initial_thread: PyThreadState,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is_pythreads {\n    pub next_unique_id: u64,\n    pub head: *mut PyThreadState,\n    pub count: ::std::os::raw::c_long,\n    pub stacksize: usize,\n}\nimpl Default for _is_pythreads {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _is {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xidregitem {\n    pub prev: *mut _xidregitem,\n    pub next: *mut _xidregitem,\n    pub cls: *mut PyObject,\n    pub getdata: crossinterpdatafunc,\n}\nimpl Default for _xidregitem {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type sig_atomic_t = __sig_atomic_t;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union sigval {\n    pub sival_int: ::std::os::raw::c_int,\n    pub sival_ptr: *mut ::std::os::raw::c_void,\n}\nimpl Default for sigval {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type __sigval_t = sigval;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t {\n    pub si_signo: ::std::os::raw::c_int,\n    pub si_errno: ::std::os::raw::c_int,\n    pub si_code: ::std::os::raw::c_int,\n    pub __pad0: ::std::os::raw::c_int,\n    pub _sifields: siginfo_t__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union siginfo_t__bindgen_ty_1 {\n    pub _pad: [::std::os::raw::c_int; 28usize],\n    pub _kill: siginfo_t__bindgen_ty_1__bindgen_ty_1,\n    pub _timer: siginfo_t__bindgen_ty_1__bindgen_ty_2,\n    pub _rt: siginfo_t__bindgen_ty_1__bindgen_ty_3,\n    pub _sigchld: siginfo_t__bindgen_ty_1__bindgen_ty_4,\n    pub _sigfault: siginfo_t__bindgen_ty_1__bindgen_ty_5,\n    pub _sigpoll: siginfo_t__bindgen_ty_1__bindgen_ty_6,\n    pub _sigsys: siginfo_t__bindgen_ty_1__bindgen_ty_7,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {\n    pub si_tid: ::std::os::raw::c_int,\n    pub si_overrun: ::std::os::raw::c_int,\n    pub si_sigval: __sigval_t,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n    pub si_sigval: __sigval_t,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n    pub si_status: ::std::os::raw::c_int,\n    pub si_utime: __clock_t,\n    pub si_stime: __clock_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {\n    pub si_addr: *mut ::std::os::raw::c_void,\n    pub si_addr_lsb: ::std::os::raw::c_short,\n    pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 {\n    pub _addr_bnd: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,\n    pub _pkey: __uint32_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {\n    pub _lower: *mut ::std::os::raw::c_void,\n    pub _upper: *mut ::std::os::raw::c_void,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {\n    pub si_band: ::std::os::raw::c_long,\n    pub si_fd: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {\n    pub _call_addr: *mut ::std::os::raw::c_void,\n    pub _syscall: ::std::os::raw::c_int,\n    pub _arch: ::std::os::raw::c_uint,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for siginfo_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type __sighandler_t = ::std::option::Option<unsafe extern \"C\" fn(arg1: ::std::os::raw::c_int)>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct sigaction {\n    pub __sigaction_handler: sigaction__bindgen_ty_1,\n    pub sa_mask: __sigset_t,\n    pub sa_flags: ::std::os::raw::c_int,\n    pub sa_restorer: ::std::option::Option<unsafe extern \"C\" fn()>,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union sigaction__bindgen_ty_1 {\n    pub sa_handler: __sighandler_t,\n    pub sa_sigaction: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: ::std::os::raw::c_int,\n            arg2: *mut siginfo_t,\n            arg3: *mut ::std::os::raw::c_void,\n        ),\n    >,\n}\nimpl Default for sigaction__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for sigaction {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct stack_t {\n    pub ss_sp: *mut ::std::os::raw::c_void,\n    pub ss_flags: ::std::os::raw::c_int,\n    pub ss_size: usize,\n}\nimpl Default for stack_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type _Py_sighandler_t = sigaction;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct faulthandler_user_signal {\n    pub enabled: ::std::os::raw::c_int,\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub all_threads: ::std::os::raw::c_int,\n    pub chain: ::std::os::raw::c_int,\n    pub previous: _Py_sighandler_t,\n    pub interp: *mut PyInterpreterState,\n}\nimpl Default for faulthandler_user_signal {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state {\n    pub fatal_error: _faulthandler_runtime_state__bindgen_ty_1,\n    pub thread: _faulthandler_runtime_state__bindgen_ty_2,\n    pub user_signals: *mut faulthandler_user_signal,\n    pub stack: stack_t,\n    pub old_stack: stack_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state__bindgen_ty_1 {\n    pub enabled: ::std::os::raw::c_int,\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub all_threads: ::std::os::raw::c_int,\n    pub interp: *mut PyInterpreterState,\n}\nimpl Default for _faulthandler_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state__bindgen_ty_2 {\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub timeout_us: ::std::os::raw::c_longlong,\n    pub repeat: ::std::os::raw::c_int,\n    pub interp: *mut PyInterpreterState,\n    pub exit: ::std::os::raw::c_int,\n    pub header: *mut ::std::os::raw::c_char,\n    pub header_len: usize,\n    pub cancel_event: PyThread_type_lock,\n    pub running: PyThread_type_lock,\n}\nimpl Default for _faulthandler_runtime_state__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _faulthandler_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type identifier = *mut PyObject;\npub type string = *mut PyObject;\npub type constant = *mut PyObject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_int_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [::std::os::raw::c_int; 1usize],\n}\nimpl Default for asdl_int_seq {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub type expr_ty = *mut _expr;\npub const _expr_context_Load: _expr_context = 1;\npub const _expr_context_Store: _expr_context = 2;\npub const _expr_context_Del: _expr_context = 3;\npub type _expr_context = ::std::os::raw::c_uint;\npub use self::_expr_context as expr_context_ty;\npub const _boolop_And: _boolop = 1;\npub const _boolop_Or: _boolop = 2;\npub type _boolop = ::std::os::raw::c_uint;\npub use self::_boolop as boolop_ty;\npub const _operator_Add: _operator = 1;\npub const _operator_Sub: _operator = 2;\npub const _operator_Mult: _operator = 3;\npub const _operator_MatMult: _operator = 4;\npub const _operator_Div: _operator = 5;\npub const _operator_Mod: _operator = 6;\npub const _operator_Pow: _operator = 7;\npub const _operator_LShift: _operator = 8;\npub const _operator_RShift: _operator = 9;\npub const _operator_BitOr: _operator = 10;\npub const _operator_BitXor: _operator = 11;\npub const _operator_BitAnd: _operator = 12;\npub const _operator_FloorDiv: _operator = 13;\npub type _operator = ::std::os::raw::c_uint;\npub use self::_operator as operator_ty;\npub const _unaryop_Invert: _unaryop = 1;\npub const _unaryop_Not: _unaryop = 2;\npub const _unaryop_UAdd: _unaryop = 3;\npub const _unaryop_USub: _unaryop = 4;\npub type _unaryop = ::std::os::raw::c_uint;\npub use self::_unaryop as unaryop_ty;\npub type comprehension_ty = *mut _comprehension;\npub type arguments_ty = *mut _arguments;\npub type arg_ty = *mut _arg;\npub type keyword_ty = *mut _keyword;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_expr_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [expr_ty; 1usize],\n}\nimpl Default for asdl_expr_seq {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_comprehension_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [comprehension_ty; 1usize],\n}\nimpl Default for asdl_comprehension_seq {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_arg_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [arg_ty; 1usize],\n}\nimpl Default for asdl_arg_seq {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_keyword_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [keyword_ty; 1usize],\n}\nimpl Default for asdl_keyword_seq {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\npub const _expr_kind_BoolOp_kind: _expr_kind = 1;\npub const _expr_kind_NamedExpr_kind: _expr_kind = 2;\npub const _expr_kind_BinOp_kind: _expr_kind = 3;\npub const _expr_kind_UnaryOp_kind: _expr_kind = 4;\npub const _expr_kind_Lambda_kind: _expr_kind = 5;\npub const _expr_kind_IfExp_kind: _expr_kind = 6;\npub const _expr_kind_Dict_kind: _expr_kind = 7;\npub const _expr_kind_Set_kind: _expr_kind = 8;\npub const _expr_kind_ListComp_kind: _expr_kind = 9;\npub const _expr_kind_SetComp_kind: _expr_kind = 10;\npub const _expr_kind_DictComp_kind: _expr_kind = 11;\npub const _expr_kind_GeneratorExp_kind: _expr_kind = 12;\npub const _expr_kind_Await_kind: _expr_kind = 13;\npub const _expr_kind_Yield_kind: _expr_kind = 14;\npub const _expr_kind_YieldFrom_kind: _expr_kind = 15;\npub const _expr_kind_Compare_kind: _expr_kind = 16;\npub const _expr_kind_Call_kind: _expr_kind = 17;\npub const _expr_kind_FormattedValue_kind: _expr_kind = 18;\npub const _expr_kind_JoinedStr_kind: _expr_kind = 19;\npub const _expr_kind_Constant_kind: _expr_kind = 20;\npub const _expr_kind_Attribute_kind: _expr_kind = 21;\npub const _expr_kind_Subscript_kind: _expr_kind = 22;\npub const _expr_kind_Starred_kind: _expr_kind = 23;\npub const _expr_kind_Name_kind: _expr_kind = 24;\npub const _expr_kind_List_kind: _expr_kind = 25;\npub const _expr_kind_Tuple_kind: _expr_kind = 26;\npub const _expr_kind_Slice_kind: _expr_kind = 27;\npub type _expr_kind = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _expr {\n    pub kind: _expr_kind,\n    pub v: _expr__bindgen_ty_1,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _expr__bindgen_ty_1 {\n    pub BoolOp: _expr__bindgen_ty_1__bindgen_ty_1,\n    pub NamedExpr: _expr__bindgen_ty_1__bindgen_ty_2,\n    pub BinOp: _expr__bindgen_ty_1__bindgen_ty_3,\n    pub UnaryOp: _expr__bindgen_ty_1__bindgen_ty_4,\n    pub Lambda: _expr__bindgen_ty_1__bindgen_ty_5,\n    pub IfExp: _expr__bindgen_ty_1__bindgen_ty_6,\n    pub Dict: _expr__bindgen_ty_1__bindgen_ty_7,\n    pub Set: _expr__bindgen_ty_1__bindgen_ty_8,\n    pub ListComp: _expr__bindgen_ty_1__bindgen_ty_9,\n    pub SetComp: _expr__bindgen_ty_1__bindgen_ty_10,\n    pub DictComp: _expr__bindgen_ty_1__bindgen_ty_11,\n    pub GeneratorExp: _expr__bindgen_ty_1__bindgen_ty_12,\n    pub Await: _expr__bindgen_ty_1__bindgen_ty_13,\n    pub Yield: _expr__bindgen_ty_1__bindgen_ty_14,\n    pub YieldFrom: _expr__bindgen_ty_1__bindgen_ty_15,\n    pub Compare: _expr__bindgen_ty_1__bindgen_ty_16,\n    pub Call: _expr__bindgen_ty_1__bindgen_ty_17,\n    pub FormattedValue: _expr__bindgen_ty_1__bindgen_ty_18,\n    pub JoinedStr: _expr__bindgen_ty_1__bindgen_ty_19,\n    pub Constant: _expr__bindgen_ty_1__bindgen_ty_20,\n    pub Attribute: _expr__bindgen_ty_1__bindgen_ty_21,\n    pub Subscript: _expr__bindgen_ty_1__bindgen_ty_22,\n    pub Starred: _expr__bindgen_ty_1__bindgen_ty_23,\n    pub Name: _expr__bindgen_ty_1__bindgen_ty_24,\n    pub List: _expr__bindgen_ty_1__bindgen_ty_25,\n    pub Tuple: _expr__bindgen_ty_1__bindgen_ty_26,\n    pub Slice: _expr__bindgen_ty_1__bindgen_ty_27,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_1 {\n    pub op: boolop_ty,\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_2 {\n    pub target: expr_ty,\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_3 {\n    pub left: expr_ty,\n    pub op: operator_ty,\n    pub right: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_4 {\n    pub op: unaryop_ty,\n    pub operand: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_4 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_5 {\n    pub args: arguments_ty,\n    pub body: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_6 {\n    pub test: expr_ty,\n    pub body: expr_ty,\n    pub orelse: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_6 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_7 {\n    pub keys: *mut asdl_expr_seq,\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_8 {\n    pub elts: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_8 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_9 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_9 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_10 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_10 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_11 {\n    pub key: expr_ty,\n    pub value: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_11 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_12 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_12 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_13 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_13 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_14 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_14 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_15 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_15 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_16 {\n    pub left: expr_ty,\n    pub ops: *mut asdl_int_seq,\n    pub comparators: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_16 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_17 {\n    pub func: expr_ty,\n    pub args: *mut asdl_expr_seq,\n    pub keywords: *mut asdl_keyword_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_17 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_18 {\n    pub value: expr_ty,\n    pub conversion: ::std::os::raw::c_int,\n    pub format_spec: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_18 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_19 {\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_19 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_20 {\n    pub value: constant,\n    pub kind: string,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_20 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_21 {\n    pub value: expr_ty,\n    pub attr: identifier,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_21 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_22 {\n    pub value: expr_ty,\n    pub slice: expr_ty,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_22 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_23 {\n    pub value: expr_ty,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_23 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_24 {\n    pub id: identifier,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_24 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_25 {\n    pub elts: *mut asdl_expr_seq,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_25 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_26 {\n    pub elts: *mut asdl_expr_seq,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_26 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_27 {\n    pub lower: expr_ty,\n    pub upper: expr_ty,\n    pub step: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_27 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _expr__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _expr {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _comprehension {\n    pub target: expr_ty,\n    pub iter: expr_ty,\n    pub ifs: *mut asdl_expr_seq,\n    pub is_async: ::std::os::raw::c_int,\n}\nimpl Default for _comprehension {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _arguments {\n    pub posonlyargs: *mut asdl_arg_seq,\n    pub args: *mut asdl_arg_seq,\n    pub vararg: arg_ty,\n    pub kwonlyargs: *mut asdl_arg_seq,\n    pub kw_defaults: *mut asdl_expr_seq,\n    pub kwarg: arg_ty,\n    pub defaults: *mut asdl_expr_seq,\n}\nimpl Default for _arguments {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _arg {\n    pub arg: identifier,\n    pub annotation: expr_ty,\n    pub type_comment: string,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\nimpl Default for _arg {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _keyword {\n    pub arg: identifier,\n    pub value: expr_ty,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\nimpl Default for _keyword {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _parser_runtime_state {\n    pub _not_used: ::std::os::raw::c_int,\n    pub dummy_name: _expr,\n}\nimpl Default for _parser_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct debug_alloc_api_t {\n    pub api_id: ::std::os::raw::c_char,\n    pub alloc: PyMemAllocatorEx,\n}\nimpl Default for debug_alloc_api_t {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators {\n    pub mutex: PyThread_type_lock,\n    pub standard: _pymem_allocators__bindgen_ty_1,\n    pub debug: _pymem_allocators__bindgen_ty_2,\n    pub obj_arena: PyObjectArenaAllocator,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators__bindgen_ty_1 {\n    pub raw: PyMemAllocatorEx,\n    pub mem: PyMemAllocatorEx,\n    pub obj: PyMemAllocatorEx,\n}\nimpl Default for _pymem_allocators__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators__bindgen_ty_2 {\n    pub raw: debug_alloc_api_t,\n    pub mem: debug_alloc_api_t,\n    pub obj: debug_alloc_api_t,\n}\nimpl Default for _pymem_allocators__bindgen_ty_2 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _pymem_allocators {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct pyhash_runtime_state {\n    pub urandom_cache: pyhash_runtime_state__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct pyhash_runtime_state__bindgen_ty_1 {\n    pub fd: ::std::os::raw::c_int,\n    pub st_dev: dev_t,\n    pub st_ino: ino_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pythread_runtime_state {\n    pub initialized: ::std::os::raw::c_int,\n    pub _condattr_monotonic: _pythread_runtime_state__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pythread_runtime_state__bindgen_ty_1 {\n    pub ptr: *mut pthread_condattr_t,\n    pub val: pthread_condattr_t,\n}\nimpl Default for _pythread_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _pythread_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _signals_runtime_state {\n    pub handlers: [_signals_runtime_state__bindgen_ty_1; 65usize],\n    pub wakeup: _signals_runtime_state__bindgen_ty_2,\n    pub is_tripped: _Py_atomic_int,\n    pub default_handler: *mut PyObject,\n    pub ignore_handler: *mut PyObject,\n    pub unhandled_keyboard_interrupt: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _signals_runtime_state__bindgen_ty_1 {\n    pub tripped: _Py_atomic_int,\n    pub func: _Py_atomic_address,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _signals_runtime_state__bindgen_ty_2 {\n    pub fd: sig_atomic_t,\n    pub warn_on_full_buffer: ::std::os::raw::c_int,\n}\nimpl Default for _signals_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyTraceMalloc_Config {\n    pub initialized: _PyTraceMalloc_Config__bindgen_ty_1,\n    pub tracing: ::std::os::raw::c_int,\n    pub max_nframe: ::std::os::raw::c_int,\n}\npub const _PyTraceMalloc_Config_TRACEMALLOC_NOT_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 =\n    0;\npub const _PyTraceMalloc_Config_TRACEMALLOC_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 1;\npub const _PyTraceMalloc_Config_TRACEMALLOC_FINALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 2;\npub type _PyTraceMalloc_Config__bindgen_ty_1 = ::std::os::raw::c_uint;\nimpl Default for _PyTraceMalloc_Config {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C, packed)]\n#[derive(Debug, Copy, Clone)]\npub struct tracemalloc_frame {\n    pub filename: *mut PyObject,\n    pub lineno: ::std::os::raw::c_uint,\n}\nimpl Default for tracemalloc_frame {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct tracemalloc_traceback {\n    pub hash: Py_uhash_t,\n    pub nframe: u16,\n    pub total_nframe: u16,\n    pub frames: [tracemalloc_frame; 1usize],\n}\nimpl Default for tracemalloc_traceback {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _tracemalloc_runtime_state {\n    pub config: _PyTraceMalloc_Config,\n    pub allocators: _tracemalloc_runtime_state__bindgen_ty_1,\n    pub tables_lock: PyThread_type_lock,\n    pub traced_memory: usize,\n    pub peak_traced_memory: usize,\n    pub filenames: *mut _Py_hashtable_t,\n    pub traceback: *mut tracemalloc_traceback,\n    pub tracebacks: *mut _Py_hashtable_t,\n    pub traces: *mut _Py_hashtable_t,\n    pub domains: *mut _Py_hashtable_t,\n    pub empty_traceback: tracemalloc_traceback,\n    pub reentrant_key: Py_tss_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _tracemalloc_runtime_state__bindgen_ty_1 {\n    pub mem: PyMemAllocatorEx,\n    pub raw: PyMemAllocatorEx,\n    pub obj: PyMemAllocatorEx,\n}\nimpl Default for _tracemalloc_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for _tracemalloc_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _getargs_runtime_state {\n    pub mutex: PyThread_type_lock,\n    pub static_parsers: *mut _PyArg_Parser,\n}\nimpl Default for _getargs_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gilstate_runtime_state {\n    pub check_enabled: ::std::os::raw::c_int,\n    pub autoInterpreterState: *mut PyInterpreterState,\n}\nimpl Default for _gilstate_runtime_state {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_AuditHookEntry {\n    pub next: *mut _Py_AuditHookEntry,\n    pub hookCFunction: Py_AuditHookFunction,\n    pub userData: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_AuditHookEntry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pyruntimestate {\n    pub _initialized: ::std::os::raw::c_int,\n    pub preinitializing: ::std::os::raw::c_int,\n    pub preinitialized: ::std::os::raw::c_int,\n    pub core_initialized: ::std::os::raw::c_int,\n    pub initialized: ::std::os::raw::c_int,\n    pub _finalizing: _Py_atomic_address,\n    pub interpreters: pyruntimestate_pyinterpreters,\n    pub main_thread: ::std::os::raw::c_ulong,\n    pub xidregistry: pyruntimestate__xidregistry,\n    pub allocators: _pymem_allocators,\n    pub obmalloc: _obmalloc_global_state,\n    pub pyhash_state: pyhash_runtime_state,\n    pub time: _time_runtime_state,\n    pub threads: _pythread_runtime_state,\n    pub signals: _signals_runtime_state,\n    pub autoTSSkey: Py_tss_t,\n    pub trashTSSkey: Py_tss_t,\n    pub orig_argv: PyWideStringList,\n    pub parser: _parser_runtime_state,\n    pub atexit: _atexit_runtime_state,\n    pub imports: _import_runtime_state,\n    pub ceval: _ceval_runtime_state,\n    pub gilstate: _gilstate_runtime_state,\n    pub getargs: _getargs_runtime_state,\n    pub fileutils: _fileutils_state,\n    pub faulthandler: _faulthandler_runtime_state,\n    pub tracemalloc: _tracemalloc_runtime_state,\n    pub preconfig: PyPreConfig,\n    pub open_code_hook: Py_OpenCodeHookFunction,\n    pub open_code_userdata: *mut ::std::os::raw::c_void,\n    pub audit_hooks: pyruntimestate__bindgen_ty_1,\n    pub object_state: _py_object_runtime_state,\n    pub float_state: _Py_float_runtime_state,\n    pub unicode_state: _Py_unicode_runtime_state,\n    pub types: _types_runtime_state,\n    pub static_objects: _Py_static_objects,\n    pub _main_interpreter: PyInterpreterState,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate_pyinterpreters {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut PyInterpreterState,\n    pub main: *mut PyInterpreterState,\n    pub next_id: i64,\n}\nimpl Default for pyruntimestate_pyinterpreters {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate__xidregistry {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut _xidregitem,\n}\nimpl Default for pyruntimestate__xidregistry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate__bindgen_ty_1 {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut _Py_AuditHookEntry,\n}\nimpl Default for pyruntimestate__bindgen_ty_1 {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\nimpl Default for pyruntimestate {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictUnicodeEntry {\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictUnicodeEntry {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_log2_size: u8,\n    pub dk_log2_index_bytes: u8,\n    pub dk_kind: u8,\n    pub dk_version: u32,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: [std::os::raw::c_char; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictvalues {\n    pub values: [*mut PyObject; 1usize],\n}\nimpl Default for _dictvalues {\n    fn default() -> Self {\n        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();\n        unsafe {\n            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);\n            s.assume_init()\n        }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v3_13_0.rs",
    "content": "// Generated bindings for python v3.13.0\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n#![allow(clippy::too_many_arguments)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        byte & mask == mask\n    }\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            self.set_bit(index + bit_offset, val_bit_is_set);\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData, [])\n    }\n    #[inline]\n    pub unsafe fn as_ptr(&self) -> *const T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\nimpl<T> ::std::clone::Clone for __IncompleteArrayField<T> {\n    #[inline]\n    fn clone(&self) -> Self {\n        Self::new()\n    }\n}\npub type __int8_t = ::std::os::raw::c_schar;\npub type __uint8_t = ::std::os::raw::c_uchar;\npub type __uint16_t = ::std::os::raw::c_ushort;\npub type __int32_t = ::std::os::raw::c_int;\npub type __uint32_t = ::std::os::raw::c_uint;\npub type __int64_t = ::std::os::raw::c_long;\npub type __uint64_t = ::std::os::raw::c_ulong;\npub type __dev_t = ::std::os::raw::c_ulong;\npub type __uid_t = ::std::os::raw::c_uint;\npub type __ino64_t = ::std::os::raw::c_ulong;\npub type __pid_t = ::std::os::raw::c_int;\npub type __clock_t = ::std::os::raw::c_long;\npub type __ssize_t = ::std::os::raw::c_long;\npub type __sig_atomic_t = ::std::os::raw::c_int;\npub type wchar_t = ::std::os::raw::c_int;\npub type ino_t = __ino64_t;\npub type dev_t = __dev_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __sigset_t {\n    pub __val: [::std::os::raw::c_ulong; 16usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __atomic_wide_counter {\n    pub __value64: ::std::os::raw::c_ulonglong,\n    pub __value32: __atomic_wide_counter__bindgen_ty_1,\n    _bindgen_union_align: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __atomic_wide_counter__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __atomic_wide_counter {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_internal_list {\n    pub __prev: *mut __pthread_internal_list,\n    pub __next: *mut __pthread_internal_list,\n}\nimpl Default for __pthread_internal_list {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type __pthread_list_t = __pthread_internal_list;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_mutex_s {\n    pub __lock: ::std::os::raw::c_int,\n    pub __count: ::std::os::raw::c_uint,\n    pub __owner: ::std::os::raw::c_int,\n    pub __nusers: ::std::os::raw::c_uint,\n    pub __kind: ::std::os::raw::c_int,\n    pub __spins: ::std::os::raw::c_short,\n    pub __elision: ::std::os::raw::c_short,\n    pub __list: __pthread_list_t,\n}\nimpl Default for __pthread_mutex_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct __pthread_cond_s {\n    pub __wseq: __atomic_wide_counter,\n    pub __g1_start: __atomic_wide_counter,\n    pub __g_refs: [::std::os::raw::c_uint; 2usize],\n    pub __g_size: [::std::os::raw::c_uint; 2usize],\n    pub __g1_orig_size: ::std::os::raw::c_uint,\n    pub __wrefs: ::std::os::raw::c_uint,\n    pub __g_signals: [::std::os::raw::c_uint; 2usize],\n}\nimpl Default for __pthread_cond_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_condattr_t {\n    pub __size: [::std::os::raw::c_char; 4usize],\n    pub __align: ::std::os::raw::c_int,\n    _bindgen_union_align: u32,\n}\nimpl Default for pthread_condattr_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type pthread_key_t = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_mutex_t {\n    pub __data: __pthread_mutex_s,\n    pub __size: [::std::os::raw::c_char; 40usize],\n    pub __align: ::std::os::raw::c_long,\n    _bindgen_union_align: [u64; 5usize],\n}\nimpl Default for pthread_mutex_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_cond_t {\n    pub __data: __pthread_cond_s,\n    pub __size: [::std::os::raw::c_char; 48usize],\n    pub __align: ::std::os::raw::c_longlong,\n    _bindgen_union_align: [u64; 6usize],\n}\nimpl Default for pthread_cond_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\npub type Py_uhash_t = usize;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemAllocatorEx {\n    pub ctx: *mut ::std::os::raw::c_void,\n    pub malloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub calloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            nelem: usize,\n            elsize: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub realloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            ptr: *mut ::std::os::raw::c_void,\n            new_size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub free: ::std::option::Option<\n        unsafe extern \"C\" fn(ctx: *mut ::std::os::raw::c_void, ptr: *mut ::std::os::raw::c_void),\n    >,\n}\nimpl Default for PyMemAllocatorEx {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\npub type PyLongObject = _longobject;\npub type PyTypeObject = _typeobject;\npub type PyFrameObject = _frame;\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct Py_buffer {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for Py_buffer {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyMutex {\n    pub _bits: u8,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _object {\n    pub __bindgen_anon_1: _object__bindgen_ty_1,\n    pub ob_type: *mut PyTypeObject,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _object__bindgen_ty_1 {\n    pub ob_refcnt: Py_ssize_t,\n    // line manually added, see https://github.com/benfred/py-spy/issues/753\n    #[cfg(target_pointer_width = \"64\")]\n    pub ob_refcnt_split: [u32; 2usize],\n    // line manually added, see https://github.com/benfred/py-spy/issues/753\n    #[cfg(target_pointer_width = \"64\")]\n    _bindgen_union_align: u64,\n}\nimpl Default for _object__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyTypeObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub const PySendResult_PYGEN_RETURN: PySendResult = 0;\npub const PySendResult_PYGEN_ERROR: PySendResult = -1;\npub const PySendResult_PYGEN_NEXT: PySendResult = 1;\npub type PySendResult = i32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type sendfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        iter: *mut PyObject,\n        value: *mut PyObject,\n        result: *mut *mut PyObject,\n    ) -> PySendResult,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n    pub am_send: sendfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut PyTypeObject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut ::std::os::raw::c_void,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n    pub tp_watched: ::std::os::raw::c_uchar,\n    pub tp_versions_used: u16,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _specialization_cache {\n    pub getitem: *mut PyObject,\n    pub getitem_version: u32,\n    pub init: *mut PyObject,\n}\nimpl Default for _specialization_cache {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _heaptypeobject {\n    pub ht_type: PyTypeObject,\n    pub as_async: PyAsyncMethods,\n    pub as_number: PyNumberMethods,\n    pub as_mapping: PyMappingMethods,\n    pub as_sequence: PySequenceMethods,\n    pub as_buffer: PyBufferProcs,\n    pub ht_name: *mut PyObject,\n    pub ht_slots: *mut PyObject,\n    pub ht_qualname: *mut PyObject,\n    pub ht_cached_keys: *mut _dictkeysobject,\n    pub ht_module: *mut PyObject,\n    pub _ht_tpname: *mut ::std::os::raw::c_char,\n    pub _spec_cache: _specialization_cache,\n}\nimpl Default for _heaptypeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyHeapTypeObject = _heaptypeobject;\npub type PyType_WatchCallback =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyTypeObject) -> ::std::os::raw::c_int>;\npub const PyRefTracerEvent_PyRefTracer_CREATE: PyRefTracerEvent = 0;\npub const PyRefTracerEvent_PyRefTracer_DESTROY: PyRefTracerEvent = 1;\npub type PyRefTracerEvent = u32;\npub type PyRefTracer = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        event: PyRefTracerEvent,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyObjectArenaAllocator {\n    pub ctx: *mut ::std::os::raw::c_void,\n    pub alloc: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            size: usize,\n        ) -> *mut ::std::os::raw::c_void,\n    >,\n    pub free: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            ctx: *mut ::std::os::raw::c_void,\n            ptr: *mut ::std::os::raw::c_void,\n            size: usize,\n        ),\n    >,\n}\nimpl Default for PyObjectArenaAllocator {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn statically_allocated(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_statically_allocated(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        statically_allocated: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let statically_allocated: u32 = unsafe { ::std::mem::transmute(statically_allocated) };\n            statically_allocated as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyBaseExceptionObject {\n    pub ob_base: PyObject,\n    pub dict: *mut PyObject,\n    pub args: *mut PyObject,\n    pub notes: *mut PyObject,\n    pub traceback: *mut PyObject,\n    pub context: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub suppress_context: ::std::os::raw::c_char,\n}\nimpl Default for PyBaseExceptionObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyLongValue {\n    pub lv_tag: usize,\n    pub ob_digit: [digit; 1usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyObject,\n    pub long_value: _PyLongValue,\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\npub type PyDictValues = _dictvalues;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut PyDictValues,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const PyDict_WatchEvent_PyDict_EVENT_ADDED: PyDict_WatchEvent = 0;\npub const PyDict_WatchEvent_PyDict_EVENT_MODIFIED: PyDict_WatchEvent = 1;\npub const PyDict_WatchEvent_PyDict_EVENT_DELETED: PyDict_WatchEvent = 2;\npub const PyDict_WatchEvent_PyDict_EVENT_CLONED: PyDict_WatchEvent = 3;\npub const PyDict_WatchEvent_PyDict_EVENT_CLEARED: PyDict_WatchEvent = 4;\npub const PyDict_WatchEvent_PyDict_EVENT_DEALLOCATED: PyDict_WatchEvent = 5;\npub type PyDict_WatchEvent = u32;\npub type PyDict_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        event: PyDict_WatchEvent,\n        dict: *mut PyObject,\n        key: *mut PyObject,\n        new_value: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyFunctionObject {\n    pub ob_base: PyObject,\n    pub func_globals: *mut PyObject,\n    pub func_builtins: *mut PyObject,\n    pub func_name: *mut PyObject,\n    pub func_qualname: *mut PyObject,\n    pub func_code: *mut PyObject,\n    pub func_defaults: *mut PyObject,\n    pub func_kwdefaults: *mut PyObject,\n    pub func_closure: *mut PyObject,\n    pub func_doc: *mut PyObject,\n    pub func_dict: *mut PyObject,\n    pub func_weakreflist: *mut PyObject,\n    pub func_module: *mut PyObject,\n    pub func_annotations: *mut PyObject,\n    pub func_typeparams: *mut PyObject,\n    pub vectorcall: vectorcallfunc,\n    pub func_version: u32,\n}\nimpl Default for PyFunctionObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const PyFunction_WatchEvent_PyFunction_EVENT_CREATE: PyFunction_WatchEvent = 0;\npub const PyFunction_WatchEvent_PyFunction_EVENT_DESTROY: PyFunction_WatchEvent = 1;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_CODE: PyFunction_WatchEvent = 2;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_DEFAULTS: PyFunction_WatchEvent = 3;\npub const PyFunction_WatchEvent_PyFunction_EVENT_MODIFY_KWDEFAULTS: PyFunction_WatchEvent = 4;\npub type PyFunction_WatchEvent = u32;\npub type PyFunction_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        event: PyFunction_WatchEvent,\n        func: *mut PyFunctionObject,\n        new_value: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type Py_OpenCodeHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_LocalMonitors {\n    pub tools: [u8; 10usize],\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_GlobalMonitors {\n    pub tools: [u8; 15usize],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCoCached {\n    pub _co_code: *mut PyObject,\n    pub _co_varnames: *mut PyObject,\n    pub _co_cellvars: *mut PyObject,\n    pub _co_freevars: *mut PyObject,\n}\nimpl Default for _PyCoCached {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyCoLineInstrumentationData {\n    pub original_opcode: u8,\n    pub line_delta: i8,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyExecutorArray {\n    pub size: ::std::os::raw::c_int,\n    pub capacity: ::std::os::raw::c_int,\n    pub executors: [*mut _PyExecutorObject; 1usize],\n}\nimpl Default for _PyExecutorArray {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCoMonitoringData {\n    pub local_monitors: _Py_LocalMonitors,\n    pub active_monitors: _Py_LocalMonitors,\n    pub tools: *mut u8,\n    pub lines: *mut _PyCoLineInstrumentationData,\n    pub line_tools: *mut u8,\n    pub per_instruction_opcodes: *mut u8,\n    pub per_instruction_tools: *mut u8,\n}\nimpl Default for _PyCoMonitoringData {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyVarObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_exceptiontable: *mut PyObject,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_nlocalsplus: ::std::os::raw::c_int,\n    pub co_framesize: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_ncellvars: ::std::os::raw::c_int,\n    pub co_nfreevars: ::std::os::raw::c_int,\n    pub co_version: u32,\n    pub co_localsplusnames: *mut PyObject,\n    pub co_localspluskinds: *mut PyObject,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_qualname: *mut PyObject,\n    pub co_linetable: *mut PyObject,\n    pub co_weakreflist: *mut PyObject,\n    pub co_executors: *mut _PyExecutorArray,\n    pub _co_cached: *mut _PyCoCached,\n    pub _co_instrumentation_version: usize,\n    pub _co_monitoring: *mut _PyCoMonitoringData,\n    pub _co_firsttraceable: ::std::os::raw::c_int,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_code_adaptive: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const PyCodeEvent_PY_CODE_EVENT_CREATE: PyCodeEvent = 0;\npub const PyCodeEvent_PY_CODE_EVENT_DESTROY: PyCodeEvent = 1;\npub type PyCodeEvent = u32;\npub type PyCode_WatchCallback = ::std::option::Option<\n    unsafe extern \"C\" fn(event: PyCodeEvent, co: *mut PyCodeObject) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PySliceObject {\n    pub ob_base: PyObject,\n    pub start: *mut PyObject,\n    pub stop: *mut PyObject,\n    pub step: *mut PyObject,\n}\nimpl Default for PySliceObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyPreConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub configure_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale_warn: ::std::os::raw::c_int,\n    pub utf8_mode: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub allocator: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub perf_profiling: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub code_debug_ranges: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub dump_refs_file: *mut wchar_t,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub orig_argv: PyWideStringList,\n    pub argv: PyWideStringList,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub warn_default_encoding: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub use_frozen_modules: ::std::os::raw::c_int,\n    pub safe_path: ::std::os::raw::c_int,\n    pub int_max_str_digits: ::std::os::raw::c_int,\n    pub cpu_count: ::std::os::raw::c_int,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub program_name: *mut wchar_t,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub platlibdir: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub stdlib_dir: *mut wchar_t,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub sys_path_0: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n    pub _is_python_build: ::std::os::raw::c_int,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyFrameObject,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_value: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _stack_chunk {\n    pub previous: *mut _stack_chunk,\n    pub size: usize,\n    pub top: usize,\n    pub data: [*mut PyObject; 1usize],\n}\nimpl Default for _stack_chunk {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyStackChunk = _stack_chunk;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut PyThreadState,\n    pub next: *mut PyThreadState,\n    pub interp: *mut PyInterpreterState,\n    pub eval_breaker: usize,\n    pub _status: _ts__bindgen_ty_1,\n    pub _whence: ::std::os::raw::c_int,\n    pub state: ::std::os::raw::c_int,\n    pub py_recursion_remaining: ::std::os::raw::c_int,\n    pub py_recursion_limit: ::std::os::raw::c_int,\n    pub c_recursion_remaining: ::std::os::raw::c_int,\n    pub recursion_headroom: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub what_event: ::std::os::raw::c_int,\n    pub current_frame: *mut _PyInterpreterFrame,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub current_exception: *mut PyObject,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub native_thread_id: ::std::os::raw::c_ulong,\n    pub delete_later: *mut PyObject,\n    pub critical_section: usize,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n    pub datastack_chunk: *mut _PyStackChunk,\n    pub datastack_top: *mut *mut PyObject,\n    pub datastack_limit: *mut *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub previous_executor: *mut PyObject,\n    pub dict_global_version: u64,\n    pub threading_local_key: *mut PyObject,\n    pub threading_local_sentinel: *mut PyObject,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _ts__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n}\nimpl _ts__bindgen_ty_1 {\n    #[inline]\n    pub fn initialized(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_initialized(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn bound(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_bound(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(1usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn unbound(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_unbound(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn bound_gilstate(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_bound_gilstate(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(3usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn active(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_active(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(4usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn holds_gil(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_holds_gil(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn finalizing(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_finalizing(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn cleared(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_cleared(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn finalized(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_finalized(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(8usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        initialized: ::std::os::raw::c_uint,\n        bound: ::std::os::raw::c_uint,\n        unbound: ::std::os::raw::c_uint,\n        bound_gilstate: ::std::os::raw::c_uint,\n        active: ::std::os::raw::c_uint,\n        holds_gil: ::std::os::raw::c_uint,\n        finalizing: ::std::os::raw::c_uint,\n        cleared: ::std::os::raw::c_uint,\n        finalized: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 1u8, {\n            let initialized: u32 = unsafe { ::std::mem::transmute(initialized) };\n            initialized as u64\n        });\n        __bindgen_bitfield_unit.set(1usize, 1u8, {\n            let bound: u32 = unsafe { ::std::mem::transmute(bound) };\n            bound as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 1u8, {\n            let unbound: u32 = unsafe { ::std::mem::transmute(unbound) };\n            unbound as u64\n        });\n        __bindgen_bitfield_unit.set(3usize, 1u8, {\n            let bound_gilstate: u32 = unsafe { ::std::mem::transmute(bound_gilstate) };\n            bound_gilstate as u64\n        });\n        __bindgen_bitfield_unit.set(4usize, 1u8, {\n            let active: u32 = unsafe { ::std::mem::transmute(active) };\n            active as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let holds_gil: u32 = unsafe { ::std::mem::transmute(holds_gil) };\n            holds_gil as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let finalizing: u32 = unsafe { ::std::mem::transmute(finalizing) };\n            finalizing as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let cleared: u32 = unsafe { ::std::mem::transmute(cleared) };\n            cleared as u64\n        });\n        __bindgen_bitfield_unit.set(8usize, 1u8, {\n            let finalized: u32 = unsafe { ::std::mem::transmute(finalized) };\n            finalized as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut _PyInterpreterFrame,\n        arg2: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub type_: ::std::os::raw::c_int,\n    pub offset: Py_ssize_t,\n    pub flags: ::std::os::raw::c_int,\n    pub doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMemberDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type wrapperfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        self_: *mut PyObject,\n        args: *mut PyObject,\n        wrapped: *mut ::std::os::raw::c_void,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct wrapperbase {\n    pub name: *const ::std::os::raw::c_char,\n    pub offset: ::std::os::raw::c_int,\n    pub function: *mut ::std::os::raw::c_void,\n    pub wrapper: wrapperfunc,\n    pub doc: *const ::std::os::raw::c_char,\n    pub flags: ::std::os::raw::c_int,\n    pub name_strobj: *mut PyObject,\n}\nimpl Default for wrapperbase {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTime_t = i64;\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type Py_tss_t = _Py_tss_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tss_t {\n    pub _is_initialized: ::std::os::raw::c_int,\n    pub _key: pthread_key_t,\n}\npub type PyContext = _pycontextobject;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyOnceFlag {\n    pub v: u8,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyArg_Parser {\n    pub format: *const ::std::os::raw::c_char,\n    pub keywords: *const *const ::std::os::raw::c_char,\n    pub fname: *const ::std::os::raw::c_char,\n    pub custom_msg: *const ::std::os::raw::c_char,\n    pub once: _PyOnceFlag,\n    pub is_kwtuple_owned: ::std::os::raw::c_int,\n    pub pos: ::std::os::raw::c_int,\n    pub min: ::std::os::raw::c_int,\n    pub max: ::std::os::raw::c_int,\n    pub kwtuple: *mut PyObject,\n    pub next: *mut _PyArg_Parser,\n}\nimpl Default for _PyArg_Parser {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type atexit_datacallbackfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type Py_AuditHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *const ::std::os::raw::c_char,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _inittab {\n    pub name: *const ::std::os::raw::c_char,\n    pub initfunc: ::std::option::Option<unsafe extern \"C\" fn() -> *mut PyObject>,\n}\nimpl Default for _inittab {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyEvent {\n    pub v: u8,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyRecursiveMutex {\n    pub mutex: PyMutex,\n    pub thread: ::std::os::raw::c_ulonglong,\n    pub level: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyRWMutex {\n    pub bits: usize,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct ast_state {\n    pub once: _PyOnceFlag,\n    pub finalized: ::std::os::raw::c_int,\n    pub AST_type: *mut PyObject,\n    pub Add_singleton: *mut PyObject,\n    pub Add_type: *mut PyObject,\n    pub And_singleton: *mut PyObject,\n    pub And_type: *mut PyObject,\n    pub AnnAssign_type: *mut PyObject,\n    pub Assert_type: *mut PyObject,\n    pub Assign_type: *mut PyObject,\n    pub AsyncFor_type: *mut PyObject,\n    pub AsyncFunctionDef_type: *mut PyObject,\n    pub AsyncWith_type: *mut PyObject,\n    pub Attribute_type: *mut PyObject,\n    pub AugAssign_type: *mut PyObject,\n    pub Await_type: *mut PyObject,\n    pub BinOp_type: *mut PyObject,\n    pub BitAnd_singleton: *mut PyObject,\n    pub BitAnd_type: *mut PyObject,\n    pub BitOr_singleton: *mut PyObject,\n    pub BitOr_type: *mut PyObject,\n    pub BitXor_singleton: *mut PyObject,\n    pub BitXor_type: *mut PyObject,\n    pub BoolOp_type: *mut PyObject,\n    pub Break_type: *mut PyObject,\n    pub Call_type: *mut PyObject,\n    pub ClassDef_type: *mut PyObject,\n    pub Compare_type: *mut PyObject,\n    pub Constant_type: *mut PyObject,\n    pub Continue_type: *mut PyObject,\n    pub Del_singleton: *mut PyObject,\n    pub Del_type: *mut PyObject,\n    pub Delete_type: *mut PyObject,\n    pub DictComp_type: *mut PyObject,\n    pub Dict_type: *mut PyObject,\n    pub Div_singleton: *mut PyObject,\n    pub Div_type: *mut PyObject,\n    pub Eq_singleton: *mut PyObject,\n    pub Eq_type: *mut PyObject,\n    pub ExceptHandler_type: *mut PyObject,\n    pub Expr_type: *mut PyObject,\n    pub Expression_type: *mut PyObject,\n    pub FloorDiv_singleton: *mut PyObject,\n    pub FloorDiv_type: *mut PyObject,\n    pub For_type: *mut PyObject,\n    pub FormattedValue_type: *mut PyObject,\n    pub FunctionDef_type: *mut PyObject,\n    pub FunctionType_type: *mut PyObject,\n    pub GeneratorExp_type: *mut PyObject,\n    pub Global_type: *mut PyObject,\n    pub GtE_singleton: *mut PyObject,\n    pub GtE_type: *mut PyObject,\n    pub Gt_singleton: *mut PyObject,\n    pub Gt_type: *mut PyObject,\n    pub IfExp_type: *mut PyObject,\n    pub If_type: *mut PyObject,\n    pub ImportFrom_type: *mut PyObject,\n    pub Import_type: *mut PyObject,\n    pub In_singleton: *mut PyObject,\n    pub In_type: *mut PyObject,\n    pub Interactive_type: *mut PyObject,\n    pub Invert_singleton: *mut PyObject,\n    pub Invert_type: *mut PyObject,\n    pub IsNot_singleton: *mut PyObject,\n    pub IsNot_type: *mut PyObject,\n    pub Is_singleton: *mut PyObject,\n    pub Is_type: *mut PyObject,\n    pub JoinedStr_type: *mut PyObject,\n    pub LShift_singleton: *mut PyObject,\n    pub LShift_type: *mut PyObject,\n    pub Lambda_type: *mut PyObject,\n    pub ListComp_type: *mut PyObject,\n    pub List_type: *mut PyObject,\n    pub Load_singleton: *mut PyObject,\n    pub Load_type: *mut PyObject,\n    pub LtE_singleton: *mut PyObject,\n    pub LtE_type: *mut PyObject,\n    pub Lt_singleton: *mut PyObject,\n    pub Lt_type: *mut PyObject,\n    pub MatMult_singleton: *mut PyObject,\n    pub MatMult_type: *mut PyObject,\n    pub MatchAs_type: *mut PyObject,\n    pub MatchClass_type: *mut PyObject,\n    pub MatchMapping_type: *mut PyObject,\n    pub MatchOr_type: *mut PyObject,\n    pub MatchSequence_type: *mut PyObject,\n    pub MatchSingleton_type: *mut PyObject,\n    pub MatchStar_type: *mut PyObject,\n    pub MatchValue_type: *mut PyObject,\n    pub Match_type: *mut PyObject,\n    pub Mod_singleton: *mut PyObject,\n    pub Mod_type: *mut PyObject,\n    pub Module_type: *mut PyObject,\n    pub Mult_singleton: *mut PyObject,\n    pub Mult_type: *mut PyObject,\n    pub Name_type: *mut PyObject,\n    pub NamedExpr_type: *mut PyObject,\n    pub Nonlocal_type: *mut PyObject,\n    pub NotEq_singleton: *mut PyObject,\n    pub NotEq_type: *mut PyObject,\n    pub NotIn_singleton: *mut PyObject,\n    pub NotIn_type: *mut PyObject,\n    pub Not_singleton: *mut PyObject,\n    pub Not_type: *mut PyObject,\n    pub Or_singleton: *mut PyObject,\n    pub Or_type: *mut PyObject,\n    pub ParamSpec_type: *mut PyObject,\n    pub Pass_type: *mut PyObject,\n    pub Pow_singleton: *mut PyObject,\n    pub Pow_type: *mut PyObject,\n    pub RShift_singleton: *mut PyObject,\n    pub RShift_type: *mut PyObject,\n    pub Raise_type: *mut PyObject,\n    pub Return_type: *mut PyObject,\n    pub SetComp_type: *mut PyObject,\n    pub Set_type: *mut PyObject,\n    pub Slice_type: *mut PyObject,\n    pub Starred_type: *mut PyObject,\n    pub Store_singleton: *mut PyObject,\n    pub Store_type: *mut PyObject,\n    pub Sub_singleton: *mut PyObject,\n    pub Sub_type: *mut PyObject,\n    pub Subscript_type: *mut PyObject,\n    pub TryStar_type: *mut PyObject,\n    pub Try_type: *mut PyObject,\n    pub Tuple_type: *mut PyObject,\n    pub TypeAlias_type: *mut PyObject,\n    pub TypeIgnore_type: *mut PyObject,\n    pub TypeVarTuple_type: *mut PyObject,\n    pub TypeVar_type: *mut PyObject,\n    pub UAdd_singleton: *mut PyObject,\n    pub UAdd_type: *mut PyObject,\n    pub USub_singleton: *mut PyObject,\n    pub USub_type: *mut PyObject,\n    pub UnaryOp_type: *mut PyObject,\n    pub While_type: *mut PyObject,\n    pub With_type: *mut PyObject,\n    pub YieldFrom_type: *mut PyObject,\n    pub Yield_type: *mut PyObject,\n    pub __dict__: *mut PyObject,\n    pub __doc__: *mut PyObject,\n    pub __match_args__: *mut PyObject,\n    pub __module__: *mut PyObject,\n    pub _attributes: *mut PyObject,\n    pub _fields: *mut PyObject,\n    pub alias_type: *mut PyObject,\n    pub annotation: *mut PyObject,\n    pub arg: *mut PyObject,\n    pub arg_type: *mut PyObject,\n    pub args: *mut PyObject,\n    pub argtypes: *mut PyObject,\n    pub arguments_type: *mut PyObject,\n    pub asname: *mut PyObject,\n    pub ast: *mut PyObject,\n    pub attr: *mut PyObject,\n    pub bases: *mut PyObject,\n    pub body: *mut PyObject,\n    pub boolop_type: *mut PyObject,\n    pub bound: *mut PyObject,\n    pub cases: *mut PyObject,\n    pub cause: *mut PyObject,\n    pub cls: *mut PyObject,\n    pub cmpop_type: *mut PyObject,\n    pub col_offset: *mut PyObject,\n    pub comparators: *mut PyObject,\n    pub comprehension_type: *mut PyObject,\n    pub context_expr: *mut PyObject,\n    pub conversion: *mut PyObject,\n    pub ctx: *mut PyObject,\n    pub decorator_list: *mut PyObject,\n    pub default_value: *mut PyObject,\n    pub defaults: *mut PyObject,\n    pub elt: *mut PyObject,\n    pub elts: *mut PyObject,\n    pub end_col_offset: *mut PyObject,\n    pub end_lineno: *mut PyObject,\n    pub exc: *mut PyObject,\n    pub excepthandler_type: *mut PyObject,\n    pub expr_context_type: *mut PyObject,\n    pub expr_type: *mut PyObject,\n    pub finalbody: *mut PyObject,\n    pub format_spec: *mut PyObject,\n    pub func: *mut PyObject,\n    pub generators: *mut PyObject,\n    pub guard: *mut PyObject,\n    pub handlers: *mut PyObject,\n    pub id: *mut PyObject,\n    pub ifs: *mut PyObject,\n    pub is_async: *mut PyObject,\n    pub items: *mut PyObject,\n    pub iter: *mut PyObject,\n    pub key: *mut PyObject,\n    pub keys: *mut PyObject,\n    pub keyword_type: *mut PyObject,\n    pub keywords: *mut PyObject,\n    pub kind: *mut PyObject,\n    pub kw_defaults: *mut PyObject,\n    pub kwarg: *mut PyObject,\n    pub kwd_attrs: *mut PyObject,\n    pub kwd_patterns: *mut PyObject,\n    pub kwonlyargs: *mut PyObject,\n    pub left: *mut PyObject,\n    pub level: *mut PyObject,\n    pub lineno: *mut PyObject,\n    pub lower: *mut PyObject,\n    pub match_case_type: *mut PyObject,\n    pub mod_type: *mut PyObject,\n    pub module: *mut PyObject,\n    pub msg: *mut PyObject,\n    pub name: *mut PyObject,\n    pub names: *mut PyObject,\n    pub op: *mut PyObject,\n    pub operand: *mut PyObject,\n    pub operator_type: *mut PyObject,\n    pub ops: *mut PyObject,\n    pub optional_vars: *mut PyObject,\n    pub orelse: *mut PyObject,\n    pub pattern: *mut PyObject,\n    pub pattern_type: *mut PyObject,\n    pub patterns: *mut PyObject,\n    pub posonlyargs: *mut PyObject,\n    pub rest: *mut PyObject,\n    pub returns: *mut PyObject,\n    pub right: *mut PyObject,\n    pub simple: *mut PyObject,\n    pub slice: *mut PyObject,\n    pub step: *mut PyObject,\n    pub stmt_type: *mut PyObject,\n    pub subject: *mut PyObject,\n    pub tag: *mut PyObject,\n    pub target: *mut PyObject,\n    pub targets: *mut PyObject,\n    pub test: *mut PyObject,\n    pub type_: *mut PyObject,\n    pub type_comment: *mut PyObject,\n    pub type_ignore_type: *mut PyObject,\n    pub type_ignores: *mut PyObject,\n    pub type_param_type: *mut PyObject,\n    pub type_params: *mut PyObject,\n    pub unaryop_type: *mut PyObject,\n    pub upper: *mut PyObject,\n    pub value: *mut PyObject,\n    pub values: *mut PyObject,\n    pub vararg: *mut PyObject,\n    pub withitem_type: *mut PyObject,\n}\nimpl Default for ast_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type atexit_callbackfunc = ::std::option::Option<unsafe extern \"C\" fn()>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _atexit_runtime_state {\n    pub mutex: PyMutex,\n    pub callbacks: [atexit_callbackfunc; 32usize],\n    pub ncallbacks: ::std::os::raw::c_int,\n}\nimpl Default for _atexit_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_callback {\n    pub func: atexit_datacallbackfunc,\n    pub data: *mut ::std::os::raw::c_void,\n    pub next: *mut atexit_callback,\n}\nimpl Default for atexit_callback {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_py_callback {\n    pub func: *mut PyObject,\n    pub args: *mut PyObject,\n    pub kwargs: *mut PyObject,\n}\nimpl Default for atexit_py_callback {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct atexit_state {\n    pub ll_callbacks: *mut atexit_callback,\n    pub last_ll_callback: *mut atexit_callback,\n    pub callbacks: *mut *mut atexit_py_callback,\n    pub ncallbacks: ::std::os::raw::c_int,\n    pub callback_len: ::std::os::raw::c_int,\n}\nimpl Default for atexit_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct llist_node {\n    pub next: *mut llist_node,\n    pub prev: *mut llist_node,\n}\nimpl Default for llist_node {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pythread_runtime_state {\n    pub initialized: ::std::os::raw::c_int,\n    pub _condattr_monotonic: _pythread_runtime_state__bindgen_ty_1,\n    pub handles: llist_node,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pythread_runtime_state__bindgen_ty_1 {\n    pub ptr: *mut pthread_condattr_t,\n    pub val: pthread_condattr_t,\n}\nimpl Default for _pythread_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _pythread_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _gil_runtime_state {\n    pub interval: ::std::os::raw::c_ulong,\n    pub last_holder: *mut PyThreadState,\n    pub locked: ::std::os::raw::c_int,\n    pub switch_number: ::std::os::raw::c_ulong,\n    pub cond: pthread_cond_t,\n    pub mutex: pthread_mutex_t,\n    pub switch_cond: pthread_cond_t,\n    pub switch_mutex: pthread_mutex_t,\n}\nimpl Default for _gil_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _Py_pending_call_func = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_call {\n    pub func: _Py_pending_call_func,\n    pub arg: *mut ::std::os::raw::c_void,\n    pub flags: ::std::os::raw::c_int,\n}\nimpl Default for _pending_call {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pending_calls {\n    pub handling_thread: *mut PyThreadState,\n    pub mutex: PyMutex,\n    pub npending: i32,\n    pub max: i32,\n    pub maxloop: i32,\n    pub calls: [_pending_call; 300usize],\n    pub first: ::std::os::raw::c_int,\n    pub next: ::std::os::raw::c_int,\n}\nimpl Default for _pending_calls {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _ceval_runtime_state {\n    pub perf: _ceval_runtime_state__bindgen_ty_1,\n    pub pending_mainthread: _pending_calls,\n    pub sys_trace_profile_mutex: PyMutex,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _ceval_runtime_state__bindgen_ty_1 {\n    pub _not_used: ::std::os::raw::c_int,\n}\nimpl Default for _ceval_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _ceval_state {\n    pub instrumentation_version: usize,\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub gil: *mut _gil_runtime_state,\n    pub own_gil: ::std::os::raw::c_int,\n    pub pending: _pending_calls,\n}\nimpl Default for _ceval_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_BackoffCounter {\n    pub __bindgen_anon_1: _Py_BackoffCounter__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _Py_BackoffCounter__bindgen_ty_1 {\n    pub __bindgen_anon_1: _Py_BackoffCounter__bindgen_ty_1__bindgen_ty_1,\n    pub as_counter: u16,\n    _bindgen_union_align: u16,\n}\n#[repr(C)]\n#[repr(align(2))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_BackoffCounter__bindgen_ty_1__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize], u16>,\n}\nimpl _Py_BackoffCounter__bindgen_ty_1__bindgen_ty_1 {\n    #[inline]\n    pub fn backoff(&self) -> u16 {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 4u8) as u16) }\n    }\n    #[inline]\n    pub fn set_backoff(&mut self, val: u16) {\n        unsafe {\n            let val: u16 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 4u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn value(&self) -> u16 {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 12u8) as u16) }\n    }\n    #[inline]\n    pub fn set_value(&mut self, val: u16) {\n        unsafe {\n            let val: u16 = ::std::mem::transmute(val);\n            self._bitfield_1.set(4usize, 12u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(backoff: u16, value: u16) -> __BindgenBitfieldUnit<[u8; 2usize], u16> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize], u16> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 4u8, {\n            let backoff: u16 = unsafe { ::std::mem::transmute(backoff) };\n            backoff as u64\n        });\n        __bindgen_bitfield_unit.set(4usize, 12u8, {\n            let value: u16 = unsafe { ::std::mem::transmute(value) };\n            value as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for _Py_BackoffCounter__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_BackoffCounter {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _Py_CODEUNIT {\n    pub cache: u16,\n    pub op: _Py_CODEUNIT__bindgen_ty_1,\n    pub counter: _Py_BackoffCounter,\n    _bindgen_union_align: u16,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_CODEUNIT__bindgen_ty_1 {\n    pub code: u8,\n    pub arg: u8,\n}\nimpl Default for _Py_CODEUNIT {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _py_code_state {\n    pub mutex: PyMutex,\n    pub constants: *mut _Py_hashtable_t,\n}\nimpl Default for _py_code_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct callable_cache {\n    pub isinstance: *mut PyObject,\n    pub len: *mut PyObject,\n    pub list_append: *mut PyObject,\n    pub object__getattribute__: *mut PyObject,\n}\nimpl Default for callable_cache {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct codecs_state {\n    pub search_path: *mut PyObject,\n    pub search_cache: *mut PyObject,\n    pub error_registry: *mut PyObject,\n    pub initialized: ::std::os::raw::c_int,\n}\nimpl Default for codecs_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_list_freelist {\n    pub items: [*mut PyListObject; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_list_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_tuple_freelist {\n    pub items: [*mut PyTupleObject; 20usize],\n    pub numfree: [::std::os::raw::c_int; 20usize],\n}\nimpl Default for _Py_tuple_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_float_freelist {\n    pub numfree: ::std::os::raw::c_int,\n    pub items: *mut PyFloatObject,\n}\nimpl Default for _Py_float_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_dict_freelist {\n    pub items: [*mut PyDictObject; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_dict_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_dictkeys_freelist {\n    pub items: [*mut PyDictKeysObject; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_dictkeys_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_slice_freelist {\n    pub slice_cache: *mut PySliceObject,\n}\nimpl Default for _Py_slice_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_context_freelist {\n    pub items: *mut PyContext,\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_context_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_async_gen_freelist {\n    pub items: [*mut _PyAsyncGenWrappedValue; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_async_gen_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_async_gen_asend_freelist {\n    pub items: [*mut PyAsyncGenASend; 80usize],\n    pub numfree: ::std::os::raw::c_int,\n}\nimpl Default for _Py_async_gen_asend_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_object_stack_freelist {\n    pub items: *mut _PyObjectStackChunk,\n    pub numfree: Py_ssize_t,\n}\nimpl Default for _Py_object_stack_freelist {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_object_freelists {\n    pub floats: _Py_float_freelist,\n    pub tuples: _Py_tuple_freelist,\n    pub lists: _Py_list_freelist,\n    pub dicts: _Py_dict_freelist,\n    pub dictkeys: _Py_dictkeys_freelist,\n    pub slices: _Py_slice_freelist,\n    pub contexts: _Py_context_freelist,\n    pub async_gens: _Py_async_gen_freelist,\n    pub async_gen_asends: _Py_async_gen_asend_freelist,\n    pub object_stacks: _Py_object_stack_freelist,\n}\nimpl Default for _Py_object_freelists {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtNode {\n    pub ob_base: PyObject,\n}\nimpl Default for PyHamtNode {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtObject {\n    pub ob_base: PyObject,\n    pub h_root: *mut PyHamtNode,\n    pub h_weakreflist: *mut PyObject,\n    pub h_count: Py_ssize_t,\n}\nimpl Default for PyHamtObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyHamtNode_Bitmap {\n    pub ob_base: PyVarObject,\n    pub b_bitmap: u32,\n    pub b_array: [*mut PyObject; 1usize],\n}\nimpl Default for PyHamtNode_Bitmap {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyContextTokenMissing {\n    pub ob_base: PyObject,\n}\nimpl Default for _PyContextTokenMissing {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _pycontextobject {\n    pub ob_base: PyObject,\n    pub ctx_prev: *mut PyContext,\n    pub ctx_vars: *mut PyHamtObject,\n    pub ctx_weakreflist: *mut PyObject,\n    pub ctx_entered: ::std::os::raw::c_int,\n}\nimpl Default for _pycontextobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyCrossInterpreterData = _xid;\npub type xid_newobjectfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _PyCrossInterpreterData) -> *mut PyObject,\n>;\npub type xid_freefunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xid {\n    pub data: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub interpid: i64,\n    pub new_object: xid_newobjectfunc,\n    pub free: xid_freefunc,\n}\nimpl Default for _xid {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type crossinterpdatafunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut PyObject,\n        arg2: *mut _PyCrossInterpreterData,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xidregitem {\n    pub prev: *mut _xidregitem,\n    pub next: *mut _xidregitem,\n    pub cls: *mut PyTypeObject,\n    pub weakref: *mut PyObject,\n    pub refcount: usize,\n    pub getdata: crossinterpdatafunc,\n}\nimpl Default for _xidregitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xidregistry {\n    pub global: ::std::os::raw::c_int,\n    pub initialized: ::std::os::raw::c_int,\n    pub mutex: PyMutex,\n    pub head: *mut _xidregitem,\n}\nimpl Default for _xidregistry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xi_runtime_state {\n    pub registry: _xidregistry,\n}\nimpl Default for _xi_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xi_state {\n    pub registry: _xidregistry,\n    pub PyExc_NotShareableError: *mut PyObject,\n}\nimpl Default for _xi_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_dict_state {\n    pub global_version: u64,\n    pub next_keys_version: u32,\n    pub watchers: [PyDict_WatchCallback; 8usize],\n}\nimpl Default for _Py_dict_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type ULong = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct Bigint {\n    pub next: *mut Bigint,\n    pub k: ::std::os::raw::c_int,\n    pub maxwds: ::std::os::raw::c_int,\n    pub sign: ::std::os::raw::c_int,\n    pub wds: ::std::os::raw::c_int,\n    pub x: [ULong; 1usize],\n}\nimpl Default for Bigint {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _dtoa_state {\n    pub p5s: [*mut Bigint; 8usize],\n    pub freelist: [*mut Bigint; 8usize],\n    pub preallocated: [f64; 288usize],\n    pub preallocated_next: *mut f64,\n}\nimpl Default for _dtoa_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_exc_state {\n    pub errnomap: *mut PyObject,\n    pub memerrors_freelist: *mut PyBaseExceptionObject,\n    pub memerrors_numfree: ::std::os::raw::c_int,\n    pub PyExc_ExceptionGroup: *mut PyObject,\n}\nimpl Default for _Py_exc_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _fileutils_state {\n    pub force_ascii: ::std::os::raw::c_int,\n}\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyUnicode_Name_CAPI {\n    pub getname: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            code: Py_UCS4,\n            buffer: *mut ::std::os::raw::c_char,\n            buflen: ::std::os::raw::c_int,\n            with_alias_and_seq: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub getcode: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            name: *const ::std::os::raw::c_char,\n            namelen: ::std::os::raw::c_int,\n            code: *mut Py_UCS4,\n            with_named_seq: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n}\nimpl Default for _PyUnicode_Name_CAPI {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyGC_Head {\n    pub _gc_next: usize,\n    pub _gc_prev: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation {\n    pub head: PyGC_Head,\n    pub threshold: ::std::os::raw::c_int,\n    pub count: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation_stats {\n    pub collections: Py_ssize_t,\n    pub collected: Py_ssize_t,\n    pub uncollectable: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gc_runtime_state {\n    pub trash_delete_later: *mut PyObject,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub enabled: ::std::os::raw::c_int,\n    pub debug: ::std::os::raw::c_int,\n    pub generations: [gc_generation; 3usize],\n    pub generation0: *mut PyGC_Head,\n    pub permanent_generation: gc_generation,\n    pub generation_stats: [gc_generation_stats; 3usize],\n    pub collecting: ::std::os::raw::c_int,\n    pub garbage: *mut PyObject,\n    pub callbacks: *mut PyObject,\n    pub long_lived_total: Py_ssize_t,\n    pub long_lived_pending: Py_ssize_t,\n}\nimpl Default for _gc_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings {\n    pub literals: _Py_global_strings__bindgen_ty_1,\n    pub identifiers: _Py_global_strings__bindgen_ty_2,\n    pub ascii: [_Py_global_strings__bindgen_ty_3; 128usize],\n    pub latin1: [_Py_global_strings__bindgen_ty_4; 128usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1 {\n    pub _py_anon_dictcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_1,\n    pub _py_anon_genexpr: _Py_global_strings__bindgen_ty_1__bindgen_ty_2,\n    pub _py_anon_lambda: _Py_global_strings__bindgen_ty_1__bindgen_ty_3,\n    pub _py_anon_listcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_4,\n    pub _py_anon_module: _Py_global_strings__bindgen_ty_1__bindgen_ty_5,\n    pub _py_anon_null: _Py_global_strings__bindgen_ty_1__bindgen_ty_6,\n    pub _py_anon_setcomp: _Py_global_strings__bindgen_ty_1__bindgen_ty_7,\n    pub _py_anon_string: _Py_global_strings__bindgen_ty_1__bindgen_ty_8,\n    pub _py_anon_unknown: _Py_global_strings__bindgen_ty_1__bindgen_ty_9,\n    pub _py_dbl_close_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_10,\n    pub _py_dbl_open_br: _Py_global_strings__bindgen_ty_1__bindgen_ty_11,\n    pub _py_dbl_percent: _Py_global_strings__bindgen_ty_1__bindgen_ty_12,\n    pub _py_defaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_13,\n    pub _py_dot_locals: _Py_global_strings__bindgen_ty_1__bindgen_ty_14,\n    pub _py_empty: _Py_global_strings__bindgen_ty_1__bindgen_ty_15,\n    pub _py_generic_base: _Py_global_strings__bindgen_ty_1__bindgen_ty_16,\n    pub _py_json_decoder: _Py_global_strings__bindgen_ty_1__bindgen_ty_17,\n    pub _py_kwdefaults: _Py_global_strings__bindgen_ty_1__bindgen_ty_18,\n    pub _py_list_err: _Py_global_strings__bindgen_ty_1__bindgen_ty_19,\n    pub _py_type_params: _Py_global_strings__bindgen_ty_1__bindgen_ty_20,\n    pub _py_utf_8: _Py_global_strings__bindgen_ty_1__bindgen_ty_21,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_1 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_2 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_4 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_4 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_5 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_6 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_6 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_7 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_8 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_8 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_9 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_9 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_10 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_10 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_11 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_11 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_12 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_12 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_13 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_13 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_14 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_14 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_15 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 1usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_15 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_16 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_16 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_17 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_17 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_18 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_18 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_19 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 24usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_19 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_20 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_20 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_1__bindgen_ty_21 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_1__bindgen_ty_21 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_global_strings__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2 {\n    pub _py_CANCELLED: _Py_global_strings__bindgen_ty_2__bindgen_ty_1,\n    pub _py_FINISHED: _Py_global_strings__bindgen_ty_2__bindgen_ty_2,\n    pub _py_False: _Py_global_strings__bindgen_ty_2__bindgen_ty_3,\n    pub _py_JSONDecodeError: _Py_global_strings__bindgen_ty_2__bindgen_ty_4,\n    pub _py_PENDING: _Py_global_strings__bindgen_ty_2__bindgen_ty_5,\n    pub _py_Py_Repr: _Py_global_strings__bindgen_ty_2__bindgen_ty_6,\n    pub _py_TextIOWrapper: _Py_global_strings__bindgen_ty_2__bindgen_ty_7,\n    pub _py_True: _Py_global_strings__bindgen_ty_2__bindgen_ty_8,\n    pub _py_WarningMessage: _Py_global_strings__bindgen_ty_2__bindgen_ty_9,\n    pub _py__WindowsConsoleIO: _Py_global_strings__bindgen_ty_2__bindgen_ty_10,\n    pub _py___IOBase_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_11,\n    pub _py___abc_tpflags__: _Py_global_strings__bindgen_ty_2__bindgen_ty_12,\n    pub _py___abs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_13,\n    pub _py___abstractmethods__: _Py_global_strings__bindgen_ty_2__bindgen_ty_14,\n    pub _py___add__: _Py_global_strings__bindgen_ty_2__bindgen_ty_15,\n    pub _py___aenter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_16,\n    pub _py___aexit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_17,\n    pub _py___aiter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_18,\n    pub _py___all__: _Py_global_strings__bindgen_ty_2__bindgen_ty_19,\n    pub _py___and__: _Py_global_strings__bindgen_ty_2__bindgen_ty_20,\n    pub _py___anext__: _Py_global_strings__bindgen_ty_2__bindgen_ty_21,\n    pub _py___annotations__: _Py_global_strings__bindgen_ty_2__bindgen_ty_22,\n    pub _py___args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_23,\n    pub _py___await__: _Py_global_strings__bindgen_ty_2__bindgen_ty_24,\n    pub _py___bases__: _Py_global_strings__bindgen_ty_2__bindgen_ty_25,\n    pub _py___bool__: _Py_global_strings__bindgen_ty_2__bindgen_ty_26,\n    pub _py___buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_27,\n    pub _py___build_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_28,\n    pub _py___builtins__: _Py_global_strings__bindgen_ty_2__bindgen_ty_29,\n    pub _py___bytes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_30,\n    pub _py___call__: _Py_global_strings__bindgen_ty_2__bindgen_ty_31,\n    pub _py___cantrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_32,\n    pub _py___class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_33,\n    pub _py___class_getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_34,\n    pub _py___classcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_35,\n    pub _py___classdict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_36,\n    pub _py___classdictcell__: _Py_global_strings__bindgen_ty_2__bindgen_ty_37,\n    pub _py___complex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_38,\n    pub _py___contains__: _Py_global_strings__bindgen_ty_2__bindgen_ty_39,\n    pub _py___copy__: _Py_global_strings__bindgen_ty_2__bindgen_ty_40,\n    pub _py___ctypes_from_outparam__: _Py_global_strings__bindgen_ty_2__bindgen_ty_41,\n    pub _py___del__: _Py_global_strings__bindgen_ty_2__bindgen_ty_42,\n    pub _py___delattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_43,\n    pub _py___delete__: _Py_global_strings__bindgen_ty_2__bindgen_ty_44,\n    pub _py___delitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_45,\n    pub _py___dict__: _Py_global_strings__bindgen_ty_2__bindgen_ty_46,\n    pub _py___dictoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_47,\n    pub _py___dir__: _Py_global_strings__bindgen_ty_2__bindgen_ty_48,\n    pub _py___divmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_49,\n    pub _py___doc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_50,\n    pub _py___enter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_51,\n    pub _py___eq__: _Py_global_strings__bindgen_ty_2__bindgen_ty_52,\n    pub _py___exit__: _Py_global_strings__bindgen_ty_2__bindgen_ty_53,\n    pub _py___file__: _Py_global_strings__bindgen_ty_2__bindgen_ty_54,\n    pub _py___firstlineno__: _Py_global_strings__bindgen_ty_2__bindgen_ty_55,\n    pub _py___float__: _Py_global_strings__bindgen_ty_2__bindgen_ty_56,\n    pub _py___floordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_57,\n    pub _py___format__: _Py_global_strings__bindgen_ty_2__bindgen_ty_58,\n    pub _py___fspath__: _Py_global_strings__bindgen_ty_2__bindgen_ty_59,\n    pub _py___ge__: _Py_global_strings__bindgen_ty_2__bindgen_ty_60,\n    pub _py___get__: _Py_global_strings__bindgen_ty_2__bindgen_ty_61,\n    pub _py___getattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_62,\n    pub _py___getattribute__: _Py_global_strings__bindgen_ty_2__bindgen_ty_63,\n    pub _py___getinitargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_64,\n    pub _py___getitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_65,\n    pub _py___getnewargs__: _Py_global_strings__bindgen_ty_2__bindgen_ty_66,\n    pub _py___getnewargs_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_67,\n    pub _py___getstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_68,\n    pub _py___gt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_69,\n    pub _py___hash__: _Py_global_strings__bindgen_ty_2__bindgen_ty_70,\n    pub _py___iadd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_71,\n    pub _py___iand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_72,\n    pub _py___ifloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_73,\n    pub _py___ilshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_74,\n    pub _py___imatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_75,\n    pub _py___imod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_76,\n    pub _py___import__: _Py_global_strings__bindgen_ty_2__bindgen_ty_77,\n    pub _py___imul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_78,\n    pub _py___index__: _Py_global_strings__bindgen_ty_2__bindgen_ty_79,\n    pub _py___init__: _Py_global_strings__bindgen_ty_2__bindgen_ty_80,\n    pub _py___init_subclass__: _Py_global_strings__bindgen_ty_2__bindgen_ty_81,\n    pub _py___instancecheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_82,\n    pub _py___int__: _Py_global_strings__bindgen_ty_2__bindgen_ty_83,\n    pub _py___invert__: _Py_global_strings__bindgen_ty_2__bindgen_ty_84,\n    pub _py___ior__: _Py_global_strings__bindgen_ty_2__bindgen_ty_85,\n    pub _py___ipow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_86,\n    pub _py___irshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_87,\n    pub _py___isabstractmethod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_88,\n    pub _py___isub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_89,\n    pub _py___iter__: _Py_global_strings__bindgen_ty_2__bindgen_ty_90,\n    pub _py___itruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_91,\n    pub _py___ixor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_92,\n    pub _py___le__: _Py_global_strings__bindgen_ty_2__bindgen_ty_93,\n    pub _py___len__: _Py_global_strings__bindgen_ty_2__bindgen_ty_94,\n    pub _py___length_hint__: _Py_global_strings__bindgen_ty_2__bindgen_ty_95,\n    pub _py___lltrace__: _Py_global_strings__bindgen_ty_2__bindgen_ty_96,\n    pub _py___loader__: _Py_global_strings__bindgen_ty_2__bindgen_ty_97,\n    pub _py___lshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_98,\n    pub _py___lt__: _Py_global_strings__bindgen_ty_2__bindgen_ty_99,\n    pub _py___main__: _Py_global_strings__bindgen_ty_2__bindgen_ty_100,\n    pub _py___match_args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_101,\n    pub _py___matmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_102,\n    pub _py___missing__: _Py_global_strings__bindgen_ty_2__bindgen_ty_103,\n    pub _py___mod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_104,\n    pub _py___module__: _Py_global_strings__bindgen_ty_2__bindgen_ty_105,\n    pub _py___mro_entries__: _Py_global_strings__bindgen_ty_2__bindgen_ty_106,\n    pub _py___mul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_107,\n    pub _py___name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_108,\n    pub _py___ne__: _Py_global_strings__bindgen_ty_2__bindgen_ty_109,\n    pub _py___neg__: _Py_global_strings__bindgen_ty_2__bindgen_ty_110,\n    pub _py___new__: _Py_global_strings__bindgen_ty_2__bindgen_ty_111,\n    pub _py___newobj__: _Py_global_strings__bindgen_ty_2__bindgen_ty_112,\n    pub _py___newobj_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_113,\n    pub _py___next__: _Py_global_strings__bindgen_ty_2__bindgen_ty_114,\n    pub _py___notes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_115,\n    pub _py___or__: _Py_global_strings__bindgen_ty_2__bindgen_ty_116,\n    pub _py___orig_class__: _Py_global_strings__bindgen_ty_2__bindgen_ty_117,\n    pub _py___origin__: _Py_global_strings__bindgen_ty_2__bindgen_ty_118,\n    pub _py___package__: _Py_global_strings__bindgen_ty_2__bindgen_ty_119,\n    pub _py___parameters__: _Py_global_strings__bindgen_ty_2__bindgen_ty_120,\n    pub _py___path__: _Py_global_strings__bindgen_ty_2__bindgen_ty_121,\n    pub _py___pos__: _Py_global_strings__bindgen_ty_2__bindgen_ty_122,\n    pub _py___pow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_123,\n    pub _py___prepare__: _Py_global_strings__bindgen_ty_2__bindgen_ty_124,\n    pub _py___qualname__: _Py_global_strings__bindgen_ty_2__bindgen_ty_125,\n    pub _py___radd__: _Py_global_strings__bindgen_ty_2__bindgen_ty_126,\n    pub _py___rand__: _Py_global_strings__bindgen_ty_2__bindgen_ty_127,\n    pub _py___rdivmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_128,\n    pub _py___reduce__: _Py_global_strings__bindgen_ty_2__bindgen_ty_129,\n    pub _py___reduce_ex__: _Py_global_strings__bindgen_ty_2__bindgen_ty_130,\n    pub _py___release_buffer__: _Py_global_strings__bindgen_ty_2__bindgen_ty_131,\n    pub _py___repr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_132,\n    pub _py___reversed__: _Py_global_strings__bindgen_ty_2__bindgen_ty_133,\n    pub _py___rfloordiv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_134,\n    pub _py___rlshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_135,\n    pub _py___rmatmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_136,\n    pub _py___rmod__: _Py_global_strings__bindgen_ty_2__bindgen_ty_137,\n    pub _py___rmul__: _Py_global_strings__bindgen_ty_2__bindgen_ty_138,\n    pub _py___ror__: _Py_global_strings__bindgen_ty_2__bindgen_ty_139,\n    pub _py___round__: _Py_global_strings__bindgen_ty_2__bindgen_ty_140,\n    pub _py___rpow__: _Py_global_strings__bindgen_ty_2__bindgen_ty_141,\n    pub _py___rrshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_142,\n    pub _py___rshift__: _Py_global_strings__bindgen_ty_2__bindgen_ty_143,\n    pub _py___rsub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_144,\n    pub _py___rtruediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_145,\n    pub _py___rxor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_146,\n    pub _py___set__: _Py_global_strings__bindgen_ty_2__bindgen_ty_147,\n    pub _py___set_name__: _Py_global_strings__bindgen_ty_2__bindgen_ty_148,\n    pub _py___setattr__: _Py_global_strings__bindgen_ty_2__bindgen_ty_149,\n    pub _py___setitem__: _Py_global_strings__bindgen_ty_2__bindgen_ty_150,\n    pub _py___setstate__: _Py_global_strings__bindgen_ty_2__bindgen_ty_151,\n    pub _py___sizeof__: _Py_global_strings__bindgen_ty_2__bindgen_ty_152,\n    pub _py___slotnames__: _Py_global_strings__bindgen_ty_2__bindgen_ty_153,\n    pub _py___slots__: _Py_global_strings__bindgen_ty_2__bindgen_ty_154,\n    pub _py___spec__: _Py_global_strings__bindgen_ty_2__bindgen_ty_155,\n    pub _py___static_attributes__: _Py_global_strings__bindgen_ty_2__bindgen_ty_156,\n    pub _py___str__: _Py_global_strings__bindgen_ty_2__bindgen_ty_157,\n    pub _py___sub__: _Py_global_strings__bindgen_ty_2__bindgen_ty_158,\n    pub _py___subclasscheck__: _Py_global_strings__bindgen_ty_2__bindgen_ty_159,\n    pub _py___subclasshook__: _Py_global_strings__bindgen_ty_2__bindgen_ty_160,\n    pub _py___truediv__: _Py_global_strings__bindgen_ty_2__bindgen_ty_161,\n    pub _py___trunc__: _Py_global_strings__bindgen_ty_2__bindgen_ty_162,\n    pub _py___type_params__: _Py_global_strings__bindgen_ty_2__bindgen_ty_163,\n    pub _py___typing_is_unpacked_typevartuple__: _Py_global_strings__bindgen_ty_2__bindgen_ty_164,\n    pub _py___typing_prepare_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_165,\n    pub _py___typing_subst__: _Py_global_strings__bindgen_ty_2__bindgen_ty_166,\n    pub _py___typing_unpacked_tuple_args__: _Py_global_strings__bindgen_ty_2__bindgen_ty_167,\n    pub _py___warningregistry__: _Py_global_strings__bindgen_ty_2__bindgen_ty_168,\n    pub _py___weaklistoffset__: _Py_global_strings__bindgen_ty_2__bindgen_ty_169,\n    pub _py___weakref__: _Py_global_strings__bindgen_ty_2__bindgen_ty_170,\n    pub _py___xor__: _Py_global_strings__bindgen_ty_2__bindgen_ty_171,\n    pub _py__abc_impl: _Py_global_strings__bindgen_ty_2__bindgen_ty_172,\n    pub _py__abstract_: _Py_global_strings__bindgen_ty_2__bindgen_ty_173,\n    pub _py__active: _Py_global_strings__bindgen_ty_2__bindgen_ty_174,\n    pub _py__align_: _Py_global_strings__bindgen_ty_2__bindgen_ty_175,\n    pub _py__annotation: _Py_global_strings__bindgen_ty_2__bindgen_ty_176,\n    pub _py__anonymous_: _Py_global_strings__bindgen_ty_2__bindgen_ty_177,\n    pub _py__argtypes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_178,\n    pub _py__as_parameter_: _Py_global_strings__bindgen_ty_2__bindgen_ty_179,\n    pub _py__asyncio_future_blocking: _Py_global_strings__bindgen_ty_2__bindgen_ty_180,\n    pub _py__blksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_181,\n    pub _py__bootstrap: _Py_global_strings__bindgen_ty_2__bindgen_ty_182,\n    pub _py__check_retval_: _Py_global_strings__bindgen_ty_2__bindgen_ty_183,\n    pub _py__dealloc_warn: _Py_global_strings__bindgen_ty_2__bindgen_ty_184,\n    pub _py__feature_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_185,\n    pub _py__field_types: _Py_global_strings__bindgen_ty_2__bindgen_ty_186,\n    pub _py__fields_: _Py_global_strings__bindgen_ty_2__bindgen_ty_187,\n    pub _py__finalizing: _Py_global_strings__bindgen_ty_2__bindgen_ty_188,\n    pub _py__find_and_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_189,\n    pub _py__fix_up_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_190,\n    pub _py__flags_: _Py_global_strings__bindgen_ty_2__bindgen_ty_191,\n    pub _py__get_sourcefile: _Py_global_strings__bindgen_ty_2__bindgen_ty_192,\n    pub _py__handle_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_193,\n    pub _py__initializing: _Py_global_strings__bindgen_ty_2__bindgen_ty_194,\n    pub _py__io: _Py_global_strings__bindgen_ty_2__bindgen_ty_195,\n    pub _py__is_text_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_196,\n    pub _py__length_: _Py_global_strings__bindgen_ty_2__bindgen_ty_197,\n    pub _py__limbo: _Py_global_strings__bindgen_ty_2__bindgen_ty_198,\n    pub _py__lock_unlock_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_199,\n    pub _py__loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_200,\n    pub _py__needs_com_addref_: _Py_global_strings__bindgen_ty_2__bindgen_ty_201,\n    pub _py__only_immortal: _Py_global_strings__bindgen_ty_2__bindgen_ty_202,\n    pub _py__pack_: _Py_global_strings__bindgen_ty_2__bindgen_ty_203,\n    pub _py__restype_: _Py_global_strings__bindgen_ty_2__bindgen_ty_204,\n    pub _py__showwarnmsg: _Py_global_strings__bindgen_ty_2__bindgen_ty_205,\n    pub _py__shutdown: _Py_global_strings__bindgen_ty_2__bindgen_ty_206,\n    pub _py__slotnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_207,\n    pub _py__strptime: _Py_global_strings__bindgen_ty_2__bindgen_ty_208,\n    pub _py__strptime_datetime: _Py_global_strings__bindgen_ty_2__bindgen_ty_209,\n    pub _py__swappedbytes_: _Py_global_strings__bindgen_ty_2__bindgen_ty_210,\n    pub _py__type_: _Py_global_strings__bindgen_ty_2__bindgen_ty_211,\n    pub _py__uninitialized_submodules: _Py_global_strings__bindgen_ty_2__bindgen_ty_212,\n    pub _py__warn_unawaited_coroutine: _Py_global_strings__bindgen_ty_2__bindgen_ty_213,\n    pub _py__xoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_214,\n    pub _py_abs_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_215,\n    pub _py_access: _Py_global_strings__bindgen_ty_2__bindgen_ty_216,\n    pub _py_aclose: _Py_global_strings__bindgen_ty_2__bindgen_ty_217,\n    pub _py_add: _Py_global_strings__bindgen_ty_2__bindgen_ty_218,\n    pub _py_add_done_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_219,\n    pub _py_after_in_child: _Py_global_strings__bindgen_ty_2__bindgen_ty_220,\n    pub _py_after_in_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_221,\n    pub _py_aggregate_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_222,\n    pub _py_alias: _Py_global_strings__bindgen_ty_2__bindgen_ty_223,\n    pub _py_allow_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_224,\n    pub _py_append: _Py_global_strings__bindgen_ty_2__bindgen_ty_225,\n    pub _py_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_226,\n    pub _py_argdefs: _Py_global_strings__bindgen_ty_2__bindgen_ty_227,\n    pub _py_args: _Py_global_strings__bindgen_ty_2__bindgen_ty_228,\n    pub _py_arguments: _Py_global_strings__bindgen_ty_2__bindgen_ty_229,\n    pub _py_argv: _Py_global_strings__bindgen_ty_2__bindgen_ty_230,\n    pub _py_as_integer_ratio: _Py_global_strings__bindgen_ty_2__bindgen_ty_231,\n    pub _py_asend: _Py_global_strings__bindgen_ty_2__bindgen_ty_232,\n    pub _py_ast: _Py_global_strings__bindgen_ty_2__bindgen_ty_233,\n    pub _py_athrow: _Py_global_strings__bindgen_ty_2__bindgen_ty_234,\n    pub _py_attribute: _Py_global_strings__bindgen_ty_2__bindgen_ty_235,\n    pub _py_authorizer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_236,\n    pub _py_autocommit: _Py_global_strings__bindgen_ty_2__bindgen_ty_237,\n    pub _py_backtick: _Py_global_strings__bindgen_ty_2__bindgen_ty_238,\n    pub _py_base: _Py_global_strings__bindgen_ty_2__bindgen_ty_239,\n    pub _py_before: _Py_global_strings__bindgen_ty_2__bindgen_ty_240,\n    pub _py_big: _Py_global_strings__bindgen_ty_2__bindgen_ty_241,\n    pub _py_binary_form: _Py_global_strings__bindgen_ty_2__bindgen_ty_242,\n    pub _py_block: _Py_global_strings__bindgen_ty_2__bindgen_ty_243,\n    pub _py_bound: _Py_global_strings__bindgen_ty_2__bindgen_ty_244,\n    pub _py_buffer: _Py_global_strings__bindgen_ty_2__bindgen_ty_245,\n    pub _py_buffer_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_246,\n    pub _py_buffer_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_247,\n    pub _py_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_248,\n    pub _py_buffers: _Py_global_strings__bindgen_ty_2__bindgen_ty_249,\n    pub _py_bufsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_250,\n    pub _py_builtins: _Py_global_strings__bindgen_ty_2__bindgen_ty_251,\n    pub _py_byteorder: _Py_global_strings__bindgen_ty_2__bindgen_ty_252,\n    pub _py_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_253,\n    pub _py_bytes_per_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_254,\n    pub _py_c_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_255,\n    pub _py_c_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_256,\n    pub _py_c_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_257,\n    pub _py_cached_datetime_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_258,\n    pub _py_cached_statements: _Py_global_strings__bindgen_ty_2__bindgen_ty_259,\n    pub _py_cadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_260,\n    pub _py_cafile: _Py_global_strings__bindgen_ty_2__bindgen_ty_261,\n    pub _py_call: _Py_global_strings__bindgen_ty_2__bindgen_ty_262,\n    pub _py_call_exception_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_263,\n    pub _py_call_soon: _Py_global_strings__bindgen_ty_2__bindgen_ty_264,\n    pub _py_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_265,\n    pub _py_cancel: _Py_global_strings__bindgen_ty_2__bindgen_ty_266,\n    pub _py_capath: _Py_global_strings__bindgen_ty_2__bindgen_ty_267,\n    pub _py_category: _Py_global_strings__bindgen_ty_2__bindgen_ty_268,\n    pub _py_cb_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_269,\n    pub _py_certfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_270,\n    pub _py_check_same_thread: _Py_global_strings__bindgen_ty_2__bindgen_ty_271,\n    pub _py_clear: _Py_global_strings__bindgen_ty_2__bindgen_ty_272,\n    pub _py_close: _Py_global_strings__bindgen_ty_2__bindgen_ty_273,\n    pub _py_closed: _Py_global_strings__bindgen_ty_2__bindgen_ty_274,\n    pub _py_closefd: _Py_global_strings__bindgen_ty_2__bindgen_ty_275,\n    pub _py_closure: _Py_global_strings__bindgen_ty_2__bindgen_ty_276,\n    pub _py_co_argcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_277,\n    pub _py_co_cellvars: _Py_global_strings__bindgen_ty_2__bindgen_ty_278,\n    pub _py_co_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_279,\n    pub _py_co_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_280,\n    pub _py_co_exceptiontable: _Py_global_strings__bindgen_ty_2__bindgen_ty_281,\n    pub _py_co_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_282,\n    pub _py_co_firstlineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_283,\n    pub _py_co_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_284,\n    pub _py_co_freevars: _Py_global_strings__bindgen_ty_2__bindgen_ty_285,\n    pub _py_co_kwonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_286,\n    pub _py_co_linetable: _Py_global_strings__bindgen_ty_2__bindgen_ty_287,\n    pub _py_co_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_288,\n    pub _py_co_names: _Py_global_strings__bindgen_ty_2__bindgen_ty_289,\n    pub _py_co_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_290,\n    pub _py_co_posonlyargcount: _Py_global_strings__bindgen_ty_2__bindgen_ty_291,\n    pub _py_co_qualname: _Py_global_strings__bindgen_ty_2__bindgen_ty_292,\n    pub _py_co_stacksize: _Py_global_strings__bindgen_ty_2__bindgen_ty_293,\n    pub _py_co_varnames: _Py_global_strings__bindgen_ty_2__bindgen_ty_294,\n    pub _py_code: _Py_global_strings__bindgen_ty_2__bindgen_ty_295,\n    pub _py_col_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_296,\n    pub _py_command: _Py_global_strings__bindgen_ty_2__bindgen_ty_297,\n    pub _py_comment_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_298,\n    pub _py_compile_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_299,\n    pub _py_consts: _Py_global_strings__bindgen_ty_2__bindgen_ty_300,\n    pub _py_context: _Py_global_strings__bindgen_ty_2__bindgen_ty_301,\n    pub _py_contravariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_302,\n    pub _py_cookie: _Py_global_strings__bindgen_ty_2__bindgen_ty_303,\n    pub _py_copy: _Py_global_strings__bindgen_ty_2__bindgen_ty_304,\n    pub _py_copyreg: _Py_global_strings__bindgen_ty_2__bindgen_ty_305,\n    pub _py_coro: _Py_global_strings__bindgen_ty_2__bindgen_ty_306,\n    pub _py_count: _Py_global_strings__bindgen_ty_2__bindgen_ty_307,\n    pub _py_covariant: _Py_global_strings__bindgen_ty_2__bindgen_ty_308,\n    pub _py_cwd: _Py_global_strings__bindgen_ty_2__bindgen_ty_309,\n    pub _py_data: _Py_global_strings__bindgen_ty_2__bindgen_ty_310,\n    pub _py_database: _Py_global_strings__bindgen_ty_2__bindgen_ty_311,\n    pub _py_day: _Py_global_strings__bindgen_ty_2__bindgen_ty_312,\n    pub _py_decode: _Py_global_strings__bindgen_ty_2__bindgen_ty_313,\n    pub _py_decoder: _Py_global_strings__bindgen_ty_2__bindgen_ty_314,\n    pub _py_default: _Py_global_strings__bindgen_ty_2__bindgen_ty_315,\n    pub _py_defaultaction: _Py_global_strings__bindgen_ty_2__bindgen_ty_316,\n    pub _py_delete: _Py_global_strings__bindgen_ty_2__bindgen_ty_317,\n    pub _py_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_318,\n    pub _py_desired_access: _Py_global_strings__bindgen_ty_2__bindgen_ty_319,\n    pub _py_detect_types: _Py_global_strings__bindgen_ty_2__bindgen_ty_320,\n    pub _py_deterministic: _Py_global_strings__bindgen_ty_2__bindgen_ty_321,\n    pub _py_device: _Py_global_strings__bindgen_ty_2__bindgen_ty_322,\n    pub _py_dict: _Py_global_strings__bindgen_ty_2__bindgen_ty_323,\n    pub _py_dictcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_324,\n    pub _py_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_325,\n    pub _py_digest: _Py_global_strings__bindgen_ty_2__bindgen_ty_326,\n    pub _py_digest_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_327,\n    pub _py_digestmod: _Py_global_strings__bindgen_ty_2__bindgen_ty_328,\n    pub _py_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_329,\n    pub _py_discard: _Py_global_strings__bindgen_ty_2__bindgen_ty_330,\n    pub _py_dispatch_table: _Py_global_strings__bindgen_ty_2__bindgen_ty_331,\n    pub _py_displayhook: _Py_global_strings__bindgen_ty_2__bindgen_ty_332,\n    pub _py_dklen: _Py_global_strings__bindgen_ty_2__bindgen_ty_333,\n    pub _py_doc: _Py_global_strings__bindgen_ty_2__bindgen_ty_334,\n    pub _py_dont_inherit: _Py_global_strings__bindgen_ty_2__bindgen_ty_335,\n    pub _py_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_336,\n    pub _py_dst_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_337,\n    pub _py_eager_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_338,\n    pub _py_effective_ids: _Py_global_strings__bindgen_ty_2__bindgen_ty_339,\n    pub _py_element_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_340,\n    pub _py_encode: _Py_global_strings__bindgen_ty_2__bindgen_ty_341,\n    pub _py_encoding: _Py_global_strings__bindgen_ty_2__bindgen_ty_342,\n    pub _py_end: _Py_global_strings__bindgen_ty_2__bindgen_ty_343,\n    pub _py_end_col_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_344,\n    pub _py_end_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_345,\n    pub _py_end_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_346,\n    pub _py_endpos: _Py_global_strings__bindgen_ty_2__bindgen_ty_347,\n    pub _py_entrypoint: _Py_global_strings__bindgen_ty_2__bindgen_ty_348,\n    pub _py_env: _Py_global_strings__bindgen_ty_2__bindgen_ty_349,\n    pub _py_errors: _Py_global_strings__bindgen_ty_2__bindgen_ty_350,\n    pub _py_event: _Py_global_strings__bindgen_ty_2__bindgen_ty_351,\n    pub _py_eventmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_352,\n    pub _py_exc_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_353,\n    pub _py_exc_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_354,\n    pub _py_excepthook: _Py_global_strings__bindgen_ty_2__bindgen_ty_355,\n    pub _py_exception: _Py_global_strings__bindgen_ty_2__bindgen_ty_356,\n    pub _py_existing_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_357,\n    pub _py_exp: _Py_global_strings__bindgen_ty_2__bindgen_ty_358,\n    pub _py_extend: _Py_global_strings__bindgen_ty_2__bindgen_ty_359,\n    pub _py_extra_tokens: _Py_global_strings__bindgen_ty_2__bindgen_ty_360,\n    pub _py_facility: _Py_global_strings__bindgen_ty_2__bindgen_ty_361,\n    pub _py_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_362,\n    pub _py_false: _Py_global_strings__bindgen_ty_2__bindgen_ty_363,\n    pub _py_family: _Py_global_strings__bindgen_ty_2__bindgen_ty_364,\n    pub _py_fanout: _Py_global_strings__bindgen_ty_2__bindgen_ty_365,\n    pub _py_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_366,\n    pub _py_fd2: _Py_global_strings__bindgen_ty_2__bindgen_ty_367,\n    pub _py_fdel: _Py_global_strings__bindgen_ty_2__bindgen_ty_368,\n    pub _py_fget: _Py_global_strings__bindgen_ty_2__bindgen_ty_369,\n    pub _py_file: _Py_global_strings__bindgen_ty_2__bindgen_ty_370,\n    pub _py_file_actions: _Py_global_strings__bindgen_ty_2__bindgen_ty_371,\n    pub _py_filename: _Py_global_strings__bindgen_ty_2__bindgen_ty_372,\n    pub _py_fileno: _Py_global_strings__bindgen_ty_2__bindgen_ty_373,\n    pub _py_filepath: _Py_global_strings__bindgen_ty_2__bindgen_ty_374,\n    pub _py_fillvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_375,\n    pub _py_filter: _Py_global_strings__bindgen_ty_2__bindgen_ty_376,\n    pub _py_filters: _Py_global_strings__bindgen_ty_2__bindgen_ty_377,\n    pub _py_final: _Py_global_strings__bindgen_ty_2__bindgen_ty_378,\n    pub _py_find_class: _Py_global_strings__bindgen_ty_2__bindgen_ty_379,\n    pub _py_fix_imports: _Py_global_strings__bindgen_ty_2__bindgen_ty_380,\n    pub _py_flags: _Py_global_strings__bindgen_ty_2__bindgen_ty_381,\n    pub _py_flush: _Py_global_strings__bindgen_ty_2__bindgen_ty_382,\n    pub _py_fold: _Py_global_strings__bindgen_ty_2__bindgen_ty_383,\n    pub _py_follow_symlinks: _Py_global_strings__bindgen_ty_2__bindgen_ty_384,\n    pub _py_format: _Py_global_strings__bindgen_ty_2__bindgen_ty_385,\n    pub _py_from_param: _Py_global_strings__bindgen_ty_2__bindgen_ty_386,\n    pub _py_fromlist: _Py_global_strings__bindgen_ty_2__bindgen_ty_387,\n    pub _py_fromtimestamp: _Py_global_strings__bindgen_ty_2__bindgen_ty_388,\n    pub _py_fromutc: _Py_global_strings__bindgen_ty_2__bindgen_ty_389,\n    pub _py_fset: _Py_global_strings__bindgen_ty_2__bindgen_ty_390,\n    pub _py_func: _Py_global_strings__bindgen_ty_2__bindgen_ty_391,\n    pub _py_future: _Py_global_strings__bindgen_ty_2__bindgen_ty_392,\n    pub _py_generation: _Py_global_strings__bindgen_ty_2__bindgen_ty_393,\n    pub _py_genexpr: _Py_global_strings__bindgen_ty_2__bindgen_ty_394,\n    pub _py_get: _Py_global_strings__bindgen_ty_2__bindgen_ty_395,\n    pub _py_get_debug: _Py_global_strings__bindgen_ty_2__bindgen_ty_396,\n    pub _py_get_event_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_397,\n    pub _py_get_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_398,\n    pub _py_get_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_399,\n    pub _py_getattr: _Py_global_strings__bindgen_ty_2__bindgen_ty_400,\n    pub _py_getstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_401,\n    pub _py_gid: _Py_global_strings__bindgen_ty_2__bindgen_ty_402,\n    pub _py_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_403,\n    pub _py_groupindex: _Py_global_strings__bindgen_ty_2__bindgen_ty_404,\n    pub _py_groups: _Py_global_strings__bindgen_ty_2__bindgen_ty_405,\n    pub _py_handle: _Py_global_strings__bindgen_ty_2__bindgen_ty_406,\n    pub _py_handle_seq: _Py_global_strings__bindgen_ty_2__bindgen_ty_407,\n    pub _py_has_location: _Py_global_strings__bindgen_ty_2__bindgen_ty_408,\n    pub _py_hash_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_409,\n    pub _py_header: _Py_global_strings__bindgen_ty_2__bindgen_ty_410,\n    pub _py_headers: _Py_global_strings__bindgen_ty_2__bindgen_ty_411,\n    pub _py_hi: _Py_global_strings__bindgen_ty_2__bindgen_ty_412,\n    pub _py_hook: _Py_global_strings__bindgen_ty_2__bindgen_ty_413,\n    pub _py_hour: _Py_global_strings__bindgen_ty_2__bindgen_ty_414,\n    pub _py_ident: _Py_global_strings__bindgen_ty_2__bindgen_ty_415,\n    pub _py_identity_hint: _Py_global_strings__bindgen_ty_2__bindgen_ty_416,\n    pub _py_ignore: _Py_global_strings__bindgen_ty_2__bindgen_ty_417,\n    pub _py_imag: _Py_global_strings__bindgen_ty_2__bindgen_ty_418,\n    pub _py_importlib: _Py_global_strings__bindgen_ty_2__bindgen_ty_419,\n    pub _py_in_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_420,\n    pub _py_incoming: _Py_global_strings__bindgen_ty_2__bindgen_ty_421,\n    pub _py_indexgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_422,\n    pub _py_inf: _Py_global_strings__bindgen_ty_2__bindgen_ty_423,\n    pub _py_infer_variance: _Py_global_strings__bindgen_ty_2__bindgen_ty_424,\n    pub _py_inherit_handle: _Py_global_strings__bindgen_ty_2__bindgen_ty_425,\n    pub _py_inheritable: _Py_global_strings__bindgen_ty_2__bindgen_ty_426,\n    pub _py_initial: _Py_global_strings__bindgen_ty_2__bindgen_ty_427,\n    pub _py_initial_bytes: _Py_global_strings__bindgen_ty_2__bindgen_ty_428,\n    pub _py_initial_owner: _Py_global_strings__bindgen_ty_2__bindgen_ty_429,\n    pub _py_initial_state: _Py_global_strings__bindgen_ty_2__bindgen_ty_430,\n    pub _py_initial_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_431,\n    pub _py_initval: _Py_global_strings__bindgen_ty_2__bindgen_ty_432,\n    pub _py_inner_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_433,\n    pub _py_input: _Py_global_strings__bindgen_ty_2__bindgen_ty_434,\n    pub _py_insert_comments: _Py_global_strings__bindgen_ty_2__bindgen_ty_435,\n    pub _py_insert_pis: _Py_global_strings__bindgen_ty_2__bindgen_ty_436,\n    pub _py_instructions: _Py_global_strings__bindgen_ty_2__bindgen_ty_437,\n    pub _py_intern: _Py_global_strings__bindgen_ty_2__bindgen_ty_438,\n    pub _py_intersection: _Py_global_strings__bindgen_ty_2__bindgen_ty_439,\n    pub _py_interval: _Py_global_strings__bindgen_ty_2__bindgen_ty_440,\n    pub _py_is_running: _Py_global_strings__bindgen_ty_2__bindgen_ty_441,\n    pub _py_isatty: _Py_global_strings__bindgen_ty_2__bindgen_ty_442,\n    pub _py_isinstance: _Py_global_strings__bindgen_ty_2__bindgen_ty_443,\n    pub _py_isoformat: _Py_global_strings__bindgen_ty_2__bindgen_ty_444,\n    pub _py_isolation_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_445,\n    pub _py_istext: _Py_global_strings__bindgen_ty_2__bindgen_ty_446,\n    pub _py_item: _Py_global_strings__bindgen_ty_2__bindgen_ty_447,\n    pub _py_items: _Py_global_strings__bindgen_ty_2__bindgen_ty_448,\n    pub _py_iter: _Py_global_strings__bindgen_ty_2__bindgen_ty_449,\n    pub _py_iterable: _Py_global_strings__bindgen_ty_2__bindgen_ty_450,\n    pub _py_iterations: _Py_global_strings__bindgen_ty_2__bindgen_ty_451,\n    pub _py_join: _Py_global_strings__bindgen_ty_2__bindgen_ty_452,\n    pub _py_jump: _Py_global_strings__bindgen_ty_2__bindgen_ty_453,\n    pub _py_keepends: _Py_global_strings__bindgen_ty_2__bindgen_ty_454,\n    pub _py_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_455,\n    pub _py_keyfile: _Py_global_strings__bindgen_ty_2__bindgen_ty_456,\n    pub _py_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_457,\n    pub _py_kind: _Py_global_strings__bindgen_ty_2__bindgen_ty_458,\n    pub _py_kw: _Py_global_strings__bindgen_ty_2__bindgen_ty_459,\n    pub _py_kw1: _Py_global_strings__bindgen_ty_2__bindgen_ty_460,\n    pub _py_kw2: _Py_global_strings__bindgen_ty_2__bindgen_ty_461,\n    pub _py_kwdefaults: _Py_global_strings__bindgen_ty_2__bindgen_ty_462,\n    pub _py_label: _Py_global_strings__bindgen_ty_2__bindgen_ty_463,\n    pub _py_lambda: _Py_global_strings__bindgen_ty_2__bindgen_ty_464,\n    pub _py_last: _Py_global_strings__bindgen_ty_2__bindgen_ty_465,\n    pub _py_last_exc: _Py_global_strings__bindgen_ty_2__bindgen_ty_466,\n    pub _py_last_node: _Py_global_strings__bindgen_ty_2__bindgen_ty_467,\n    pub _py_last_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_468,\n    pub _py_last_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_469,\n    pub _py_last_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_470,\n    pub _py_latin1: _Py_global_strings__bindgen_ty_2__bindgen_ty_471,\n    pub _py_leaf_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_472,\n    pub _py_len: _Py_global_strings__bindgen_ty_2__bindgen_ty_473,\n    pub _py_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_474,\n    pub _py_level: _Py_global_strings__bindgen_ty_2__bindgen_ty_475,\n    pub _py_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_476,\n    pub _py_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_477,\n    pub _py_line_buffering: _Py_global_strings__bindgen_ty_2__bindgen_ty_478,\n    pub _py_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_479,\n    pub _py_listcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_480,\n    pub _py_little: _Py_global_strings__bindgen_ty_2__bindgen_ty_481,\n    pub _py_lo: _Py_global_strings__bindgen_ty_2__bindgen_ty_482,\n    pub _py_locale: _Py_global_strings__bindgen_ty_2__bindgen_ty_483,\n    pub _py_locals: _Py_global_strings__bindgen_ty_2__bindgen_ty_484,\n    pub _py_logoption: _Py_global_strings__bindgen_ty_2__bindgen_ty_485,\n    pub _py_loop: _Py_global_strings__bindgen_ty_2__bindgen_ty_486,\n    pub _py_manual_reset: _Py_global_strings__bindgen_ty_2__bindgen_ty_487,\n    pub _py_mapping: _Py_global_strings__bindgen_ty_2__bindgen_ty_488,\n    pub _py_match: _Py_global_strings__bindgen_ty_2__bindgen_ty_489,\n    pub _py_max_length: _Py_global_strings__bindgen_ty_2__bindgen_ty_490,\n    pub _py_maxdigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_491,\n    pub _py_maxevents: _Py_global_strings__bindgen_ty_2__bindgen_ty_492,\n    pub _py_maxlen: _Py_global_strings__bindgen_ty_2__bindgen_ty_493,\n    pub _py_maxmem: _Py_global_strings__bindgen_ty_2__bindgen_ty_494,\n    pub _py_maxsplit: _Py_global_strings__bindgen_ty_2__bindgen_ty_495,\n    pub _py_maxvalue: _Py_global_strings__bindgen_ty_2__bindgen_ty_496,\n    pub _py_memLevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_497,\n    pub _py_memlimit: _Py_global_strings__bindgen_ty_2__bindgen_ty_498,\n    pub _py_message: _Py_global_strings__bindgen_ty_2__bindgen_ty_499,\n    pub _py_metaclass: _Py_global_strings__bindgen_ty_2__bindgen_ty_500,\n    pub _py_metadata: _Py_global_strings__bindgen_ty_2__bindgen_ty_501,\n    pub _py_method: _Py_global_strings__bindgen_ty_2__bindgen_ty_502,\n    pub _py_microsecond: _Py_global_strings__bindgen_ty_2__bindgen_ty_503,\n    pub _py_milliseconds: _Py_global_strings__bindgen_ty_2__bindgen_ty_504,\n    pub _py_minute: _Py_global_strings__bindgen_ty_2__bindgen_ty_505,\n    pub _py_mod: _Py_global_strings__bindgen_ty_2__bindgen_ty_506,\n    pub _py_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_507,\n    pub _py_module: _Py_global_strings__bindgen_ty_2__bindgen_ty_508,\n    pub _py_module_globals: _Py_global_strings__bindgen_ty_2__bindgen_ty_509,\n    pub _py_modules: _Py_global_strings__bindgen_ty_2__bindgen_ty_510,\n    pub _py_month: _Py_global_strings__bindgen_ty_2__bindgen_ty_511,\n    pub _py_mro: _Py_global_strings__bindgen_ty_2__bindgen_ty_512,\n    pub _py_msg: _Py_global_strings__bindgen_ty_2__bindgen_ty_513,\n    pub _py_mutex: _Py_global_strings__bindgen_ty_2__bindgen_ty_514,\n    pub _py_mycmp: _Py_global_strings__bindgen_ty_2__bindgen_ty_515,\n    pub _py_n_arg: _Py_global_strings__bindgen_ty_2__bindgen_ty_516,\n    pub _py_n_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_517,\n    pub _py_n_sequence_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_518,\n    pub _py_n_unnamed_fields: _Py_global_strings__bindgen_ty_2__bindgen_ty_519,\n    pub _py_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_520,\n    pub _py_name_from: _Py_global_strings__bindgen_ty_2__bindgen_ty_521,\n    pub _py_namespace_separator: _Py_global_strings__bindgen_ty_2__bindgen_ty_522,\n    pub _py_namespaces: _Py_global_strings__bindgen_ty_2__bindgen_ty_523,\n    pub _py_narg: _Py_global_strings__bindgen_ty_2__bindgen_ty_524,\n    pub _py_ndigits: _Py_global_strings__bindgen_ty_2__bindgen_ty_525,\n    pub _py_nested: _Py_global_strings__bindgen_ty_2__bindgen_ty_526,\n    pub _py_new_file_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_527,\n    pub _py_new_limit: _Py_global_strings__bindgen_ty_2__bindgen_ty_528,\n    pub _py_newline: _Py_global_strings__bindgen_ty_2__bindgen_ty_529,\n    pub _py_newlines: _Py_global_strings__bindgen_ty_2__bindgen_ty_530,\n    pub _py_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_531,\n    pub _py_nlocals: _Py_global_strings__bindgen_ty_2__bindgen_ty_532,\n    pub _py_node_depth: _Py_global_strings__bindgen_ty_2__bindgen_ty_533,\n    pub _py_node_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_534,\n    pub _py_ns: _Py_global_strings__bindgen_ty_2__bindgen_ty_535,\n    pub _py_nstype: _Py_global_strings__bindgen_ty_2__bindgen_ty_536,\n    pub _py_nt: _Py_global_strings__bindgen_ty_2__bindgen_ty_537,\n    pub _py_null: _Py_global_strings__bindgen_ty_2__bindgen_ty_538,\n    pub _py_number: _Py_global_strings__bindgen_ty_2__bindgen_ty_539,\n    pub _py_obj: _Py_global_strings__bindgen_ty_2__bindgen_ty_540,\n    pub _py_object: _Py_global_strings__bindgen_ty_2__bindgen_ty_541,\n    pub _py_offset: _Py_global_strings__bindgen_ty_2__bindgen_ty_542,\n    pub _py_offset_dst: _Py_global_strings__bindgen_ty_2__bindgen_ty_543,\n    pub _py_offset_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_544,\n    pub _py_on_type_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_545,\n    pub _py_onceregistry: _Py_global_strings__bindgen_ty_2__bindgen_ty_546,\n    pub _py_only_keys: _Py_global_strings__bindgen_ty_2__bindgen_ty_547,\n    pub _py_oparg: _Py_global_strings__bindgen_ty_2__bindgen_ty_548,\n    pub _py_opcode: _Py_global_strings__bindgen_ty_2__bindgen_ty_549,\n    pub _py_open: _Py_global_strings__bindgen_ty_2__bindgen_ty_550,\n    pub _py_opener: _Py_global_strings__bindgen_ty_2__bindgen_ty_551,\n    pub _py_operation: _Py_global_strings__bindgen_ty_2__bindgen_ty_552,\n    pub _py_optimize: _Py_global_strings__bindgen_ty_2__bindgen_ty_553,\n    pub _py_options: _Py_global_strings__bindgen_ty_2__bindgen_ty_554,\n    pub _py_order: _Py_global_strings__bindgen_ty_2__bindgen_ty_555,\n    pub _py_origin: _Py_global_strings__bindgen_ty_2__bindgen_ty_556,\n    pub _py_out_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_557,\n    pub _py_outgoing: _Py_global_strings__bindgen_ty_2__bindgen_ty_558,\n    pub _py_overlapped: _Py_global_strings__bindgen_ty_2__bindgen_ty_559,\n    pub _py_owner: _Py_global_strings__bindgen_ty_2__bindgen_ty_560,\n    pub _py_pages: _Py_global_strings__bindgen_ty_2__bindgen_ty_561,\n    pub _py_parent: _Py_global_strings__bindgen_ty_2__bindgen_ty_562,\n    pub _py_password: _Py_global_strings__bindgen_ty_2__bindgen_ty_563,\n    pub _py_path: _Py_global_strings__bindgen_ty_2__bindgen_ty_564,\n    pub _py_pattern: _Py_global_strings__bindgen_ty_2__bindgen_ty_565,\n    pub _py_peek: _Py_global_strings__bindgen_ty_2__bindgen_ty_566,\n    pub _py_persistent_id: _Py_global_strings__bindgen_ty_2__bindgen_ty_567,\n    pub _py_persistent_load: _Py_global_strings__bindgen_ty_2__bindgen_ty_568,\n    pub _py_person: _Py_global_strings__bindgen_ty_2__bindgen_ty_569,\n    pub _py_pi_factory: _Py_global_strings__bindgen_ty_2__bindgen_ty_570,\n    pub _py_pid: _Py_global_strings__bindgen_ty_2__bindgen_ty_571,\n    pub _py_policy: _Py_global_strings__bindgen_ty_2__bindgen_ty_572,\n    pub _py_pos: _Py_global_strings__bindgen_ty_2__bindgen_ty_573,\n    pub _py_pos1: _Py_global_strings__bindgen_ty_2__bindgen_ty_574,\n    pub _py_pos2: _Py_global_strings__bindgen_ty_2__bindgen_ty_575,\n    pub _py_posix: _Py_global_strings__bindgen_ty_2__bindgen_ty_576,\n    pub _py_print_file_and_line: _Py_global_strings__bindgen_ty_2__bindgen_ty_577,\n    pub _py_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_578,\n    pub _py_progress: _Py_global_strings__bindgen_ty_2__bindgen_ty_579,\n    pub _py_progress_handler: _Py_global_strings__bindgen_ty_2__bindgen_ty_580,\n    pub _py_progress_routine: _Py_global_strings__bindgen_ty_2__bindgen_ty_581,\n    pub _py_proto: _Py_global_strings__bindgen_ty_2__bindgen_ty_582,\n    pub _py_protocol: _Py_global_strings__bindgen_ty_2__bindgen_ty_583,\n    pub _py_ps1: _Py_global_strings__bindgen_ty_2__bindgen_ty_584,\n    pub _py_ps2: _Py_global_strings__bindgen_ty_2__bindgen_ty_585,\n    pub _py_query: _Py_global_strings__bindgen_ty_2__bindgen_ty_586,\n    pub _py_quotetabs: _Py_global_strings__bindgen_ty_2__bindgen_ty_587,\n    pub _py_raw: _Py_global_strings__bindgen_ty_2__bindgen_ty_588,\n    pub _py_read: _Py_global_strings__bindgen_ty_2__bindgen_ty_589,\n    pub _py_read1: _Py_global_strings__bindgen_ty_2__bindgen_ty_590,\n    pub _py_readable: _Py_global_strings__bindgen_ty_2__bindgen_ty_591,\n    pub _py_readall: _Py_global_strings__bindgen_ty_2__bindgen_ty_592,\n    pub _py_readinto: _Py_global_strings__bindgen_ty_2__bindgen_ty_593,\n    pub _py_readinto1: _Py_global_strings__bindgen_ty_2__bindgen_ty_594,\n    pub _py_readline: _Py_global_strings__bindgen_ty_2__bindgen_ty_595,\n    pub _py_readonly: _Py_global_strings__bindgen_ty_2__bindgen_ty_596,\n    pub _py_real: _Py_global_strings__bindgen_ty_2__bindgen_ty_597,\n    pub _py_reducer_override: _Py_global_strings__bindgen_ty_2__bindgen_ty_598,\n    pub _py_registry: _Py_global_strings__bindgen_ty_2__bindgen_ty_599,\n    pub _py_rel_tol: _Py_global_strings__bindgen_ty_2__bindgen_ty_600,\n    pub _py_release: _Py_global_strings__bindgen_ty_2__bindgen_ty_601,\n    pub _py_reload: _Py_global_strings__bindgen_ty_2__bindgen_ty_602,\n    pub _py_repl: _Py_global_strings__bindgen_ty_2__bindgen_ty_603,\n    pub _py_replace: _Py_global_strings__bindgen_ty_2__bindgen_ty_604,\n    pub _py_reserved: _Py_global_strings__bindgen_ty_2__bindgen_ty_605,\n    pub _py_reset: _Py_global_strings__bindgen_ty_2__bindgen_ty_606,\n    pub _py_resetids: _Py_global_strings__bindgen_ty_2__bindgen_ty_607,\n    pub _py_return: _Py_global_strings__bindgen_ty_2__bindgen_ty_608,\n    pub _py_reverse: _Py_global_strings__bindgen_ty_2__bindgen_ty_609,\n    pub _py_reversed: _Py_global_strings__bindgen_ty_2__bindgen_ty_610,\n    pub _py_salt: _Py_global_strings__bindgen_ty_2__bindgen_ty_611,\n    pub _py_sched_priority: _Py_global_strings__bindgen_ty_2__bindgen_ty_612,\n    pub _py_scheduler: _Py_global_strings__bindgen_ty_2__bindgen_ty_613,\n    pub _py_second: _Py_global_strings__bindgen_ty_2__bindgen_ty_614,\n    pub _py_security_attributes: _Py_global_strings__bindgen_ty_2__bindgen_ty_615,\n    pub _py_seek: _Py_global_strings__bindgen_ty_2__bindgen_ty_616,\n    pub _py_seekable: _Py_global_strings__bindgen_ty_2__bindgen_ty_617,\n    pub _py_selectors: _Py_global_strings__bindgen_ty_2__bindgen_ty_618,\n    pub _py_self: _Py_global_strings__bindgen_ty_2__bindgen_ty_619,\n    pub _py_send: _Py_global_strings__bindgen_ty_2__bindgen_ty_620,\n    pub _py_sep: _Py_global_strings__bindgen_ty_2__bindgen_ty_621,\n    pub _py_sequence: _Py_global_strings__bindgen_ty_2__bindgen_ty_622,\n    pub _py_server_hostname: _Py_global_strings__bindgen_ty_2__bindgen_ty_623,\n    pub _py_server_side: _Py_global_strings__bindgen_ty_2__bindgen_ty_624,\n    pub _py_session: _Py_global_strings__bindgen_ty_2__bindgen_ty_625,\n    pub _py_setcomp: _Py_global_strings__bindgen_ty_2__bindgen_ty_626,\n    pub _py_setpgroup: _Py_global_strings__bindgen_ty_2__bindgen_ty_627,\n    pub _py_setsid: _Py_global_strings__bindgen_ty_2__bindgen_ty_628,\n    pub _py_setsigdef: _Py_global_strings__bindgen_ty_2__bindgen_ty_629,\n    pub _py_setsigmask: _Py_global_strings__bindgen_ty_2__bindgen_ty_630,\n    pub _py_setstate: _Py_global_strings__bindgen_ty_2__bindgen_ty_631,\n    pub _py_shape: _Py_global_strings__bindgen_ty_2__bindgen_ty_632,\n    pub _py_show_cmd: _Py_global_strings__bindgen_ty_2__bindgen_ty_633,\n    pub _py_signed: _Py_global_strings__bindgen_ty_2__bindgen_ty_634,\n    pub _py_size: _Py_global_strings__bindgen_ty_2__bindgen_ty_635,\n    pub _py_sizehint: _Py_global_strings__bindgen_ty_2__bindgen_ty_636,\n    pub _py_skip_file_prefixes: _Py_global_strings__bindgen_ty_2__bindgen_ty_637,\n    pub _py_sleep: _Py_global_strings__bindgen_ty_2__bindgen_ty_638,\n    pub _py_sock: _Py_global_strings__bindgen_ty_2__bindgen_ty_639,\n    pub _py_sort: _Py_global_strings__bindgen_ty_2__bindgen_ty_640,\n    pub _py_source: _Py_global_strings__bindgen_ty_2__bindgen_ty_641,\n    pub _py_source_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_642,\n    pub _py_spam: _Py_global_strings__bindgen_ty_2__bindgen_ty_643,\n    pub _py_src: _Py_global_strings__bindgen_ty_2__bindgen_ty_644,\n    pub _py_src_dir_fd: _Py_global_strings__bindgen_ty_2__bindgen_ty_645,\n    pub _py_stacklevel: _Py_global_strings__bindgen_ty_2__bindgen_ty_646,\n    pub _py_start: _Py_global_strings__bindgen_ty_2__bindgen_ty_647,\n    pub _py_statement: _Py_global_strings__bindgen_ty_2__bindgen_ty_648,\n    pub _py_status: _Py_global_strings__bindgen_ty_2__bindgen_ty_649,\n    pub _py_stderr: _Py_global_strings__bindgen_ty_2__bindgen_ty_650,\n    pub _py_stdin: _Py_global_strings__bindgen_ty_2__bindgen_ty_651,\n    pub _py_stdout: _Py_global_strings__bindgen_ty_2__bindgen_ty_652,\n    pub _py_step: _Py_global_strings__bindgen_ty_2__bindgen_ty_653,\n    pub _py_steps: _Py_global_strings__bindgen_ty_2__bindgen_ty_654,\n    pub _py_store_name: _Py_global_strings__bindgen_ty_2__bindgen_ty_655,\n    pub _py_strategy: _Py_global_strings__bindgen_ty_2__bindgen_ty_656,\n    pub _py_strftime: _Py_global_strings__bindgen_ty_2__bindgen_ty_657,\n    pub _py_strict: _Py_global_strings__bindgen_ty_2__bindgen_ty_658,\n    pub _py_strict_mode: _Py_global_strings__bindgen_ty_2__bindgen_ty_659,\n    pub _py_string: _Py_global_strings__bindgen_ty_2__bindgen_ty_660,\n    pub _py_sub_key: _Py_global_strings__bindgen_ty_2__bindgen_ty_661,\n    pub _py_symmetric_difference_update: _Py_global_strings__bindgen_ty_2__bindgen_ty_662,\n    pub _py_tabsize: _Py_global_strings__bindgen_ty_2__bindgen_ty_663,\n    pub _py_tag: _Py_global_strings__bindgen_ty_2__bindgen_ty_664,\n    pub _py_target: _Py_global_strings__bindgen_ty_2__bindgen_ty_665,\n    pub _py_target_is_directory: _Py_global_strings__bindgen_ty_2__bindgen_ty_666,\n    pub _py_task: _Py_global_strings__bindgen_ty_2__bindgen_ty_667,\n    pub _py_tb_frame: _Py_global_strings__bindgen_ty_2__bindgen_ty_668,\n    pub _py_tb_lasti: _Py_global_strings__bindgen_ty_2__bindgen_ty_669,\n    pub _py_tb_lineno: _Py_global_strings__bindgen_ty_2__bindgen_ty_670,\n    pub _py_tb_next: _Py_global_strings__bindgen_ty_2__bindgen_ty_671,\n    pub _py_tell: _Py_global_strings__bindgen_ty_2__bindgen_ty_672,\n    pub _py_template: _Py_global_strings__bindgen_ty_2__bindgen_ty_673,\n    pub _py_term: _Py_global_strings__bindgen_ty_2__bindgen_ty_674,\n    pub _py_text: _Py_global_strings__bindgen_ty_2__bindgen_ty_675,\n    pub _py_threading: _Py_global_strings__bindgen_ty_2__bindgen_ty_676,\n    pub _py_throw: _Py_global_strings__bindgen_ty_2__bindgen_ty_677,\n    pub _py_timeout: _Py_global_strings__bindgen_ty_2__bindgen_ty_678,\n    pub _py_times: _Py_global_strings__bindgen_ty_2__bindgen_ty_679,\n    pub _py_timetuple: _Py_global_strings__bindgen_ty_2__bindgen_ty_680,\n    pub _py_top: _Py_global_strings__bindgen_ty_2__bindgen_ty_681,\n    pub _py_trace_callback: _Py_global_strings__bindgen_ty_2__bindgen_ty_682,\n    pub _py_traceback: _Py_global_strings__bindgen_ty_2__bindgen_ty_683,\n    pub _py_trailers: _Py_global_strings__bindgen_ty_2__bindgen_ty_684,\n    pub _py_translate: _Py_global_strings__bindgen_ty_2__bindgen_ty_685,\n    pub _py_true: _Py_global_strings__bindgen_ty_2__bindgen_ty_686,\n    pub _py_truncate: _Py_global_strings__bindgen_ty_2__bindgen_ty_687,\n    pub _py_twice: _Py_global_strings__bindgen_ty_2__bindgen_ty_688,\n    pub _py_txt: _Py_global_strings__bindgen_ty_2__bindgen_ty_689,\n    pub _py_type: _Py_global_strings__bindgen_ty_2__bindgen_ty_690,\n    pub _py_type_params: _Py_global_strings__bindgen_ty_2__bindgen_ty_691,\n    pub _py_tz: _Py_global_strings__bindgen_ty_2__bindgen_ty_692,\n    pub _py_tzinfo: _Py_global_strings__bindgen_ty_2__bindgen_ty_693,\n    pub _py_tzname: _Py_global_strings__bindgen_ty_2__bindgen_ty_694,\n    pub _py_uid: _Py_global_strings__bindgen_ty_2__bindgen_ty_695,\n    pub _py_unlink: _Py_global_strings__bindgen_ty_2__bindgen_ty_696,\n    pub _py_unraisablehook: _Py_global_strings__bindgen_ty_2__bindgen_ty_697,\n    pub _py_uri: _Py_global_strings__bindgen_ty_2__bindgen_ty_698,\n    pub _py_usedforsecurity: _Py_global_strings__bindgen_ty_2__bindgen_ty_699,\n    pub _py_value: _Py_global_strings__bindgen_ty_2__bindgen_ty_700,\n    pub _py_values: _Py_global_strings__bindgen_ty_2__bindgen_ty_701,\n    pub _py_version: _Py_global_strings__bindgen_ty_2__bindgen_ty_702,\n    pub _py_volume: _Py_global_strings__bindgen_ty_2__bindgen_ty_703,\n    pub _py_wait_all: _Py_global_strings__bindgen_ty_2__bindgen_ty_704,\n    pub _py_warn_on_full_buffer: _Py_global_strings__bindgen_ty_2__bindgen_ty_705,\n    pub _py_warnings: _Py_global_strings__bindgen_ty_2__bindgen_ty_706,\n    pub _py_warnoptions: _Py_global_strings__bindgen_ty_2__bindgen_ty_707,\n    pub _py_wbits: _Py_global_strings__bindgen_ty_2__bindgen_ty_708,\n    pub _py_week: _Py_global_strings__bindgen_ty_2__bindgen_ty_709,\n    pub _py_weekday: _Py_global_strings__bindgen_ty_2__bindgen_ty_710,\n    pub _py_which: _Py_global_strings__bindgen_ty_2__bindgen_ty_711,\n    pub _py_who: _Py_global_strings__bindgen_ty_2__bindgen_ty_712,\n    pub _py_withdata: _Py_global_strings__bindgen_ty_2__bindgen_ty_713,\n    pub _py_writable: _Py_global_strings__bindgen_ty_2__bindgen_ty_714,\n    pub _py_write: _Py_global_strings__bindgen_ty_2__bindgen_ty_715,\n    pub _py_write_through: _Py_global_strings__bindgen_ty_2__bindgen_ty_716,\n    pub _py_year: _Py_global_strings__bindgen_ty_2__bindgen_ty_717,\n    pub _py_zdict: _Py_global_strings__bindgen_ty_2__bindgen_ty_718,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_1 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_2 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_3 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_4 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_4 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_5 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_5 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_6 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_6 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_7 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_7 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_8 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_8 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_9 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_9 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_10 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_10 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_11 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_11 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_12 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_12 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_13 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_13 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_14 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_14 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_15 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_15 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_16 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_16 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_17 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_17 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_18 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_18 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_19 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_19 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_20 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_20 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_21 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_21 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_22 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_22 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_23 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_23 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_24 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_24 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_25 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_25 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_26 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_26 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_27 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_27 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_28 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_28 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_29 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_29 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_30 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_30 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_31 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_31 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_32 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_32 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_33 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_33 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_34 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_34 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_35 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_35 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_36 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_36 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_37 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_37 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_38 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_38 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_39 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_39 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_40 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_40 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_41 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_41 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_42 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_42 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_43 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_43 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_44 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_44 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_45 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_45 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_46 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_46 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_47 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_47 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_48 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_48 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_49 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_49 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_50 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_50 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_51 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_51 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_52 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_52 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_53 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_53 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_54 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_54 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_55 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_55 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_56 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_56 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_57 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_57 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_58 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_58 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_59 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_59 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_60 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_60 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_61 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_61 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_62 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_62 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_63 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_63 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_64 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_64 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_65 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_65 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_66 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_66 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_67 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_67 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_68 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_68 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_69 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_69 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_70 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_70 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_71 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_71 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_72 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_72 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_73 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_73 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_74 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_74 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_75 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_75 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_76 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_76 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_77 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_77 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_78 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_78 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_79 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_79 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_80 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_80 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_81 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_81 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_82 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_82 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_83 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_83 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_84 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_84 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_85 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_85 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_86 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_86 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_87 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_87 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_88 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 21usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_88 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_89 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_89 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_90 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_90 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_91 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_91 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_92 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_92 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_93 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_93 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_94 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_94 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_95 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_95 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_96 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_96 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_97 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_97 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_98 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_98 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_99 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_99 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_100 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_100 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_101 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_101 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_102 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_102 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_103 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_103 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_104 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_104 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_105 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_105 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_106 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_106 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_107 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_107 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_108 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_108 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_109 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_109 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_110 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_110 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_111 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_111 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_112 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_112 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_113 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_113 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_114 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_114 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_115 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_115 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_116 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_116 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_117 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_117 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_118 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_118 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_119 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_119 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_120 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_120 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_121 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_121 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_122 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_122 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_123 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_123 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_124 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_124 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_125 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_125 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_126 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_126 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_127 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_127 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_128 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_128 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_129 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_129 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_130 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_130 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_131 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_131 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_132 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_132 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_133 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_133 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_134 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_134 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_135 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_135 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_136 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_136 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_137 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_137 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_138 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_138 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_139 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_139 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_140 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_140 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_141 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_141 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_142 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_142 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_143 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_143 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_144 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_144 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_145 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_145 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_146 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_146 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_147 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_147 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_148 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_148 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_149 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_149 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_150 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_150 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_151 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_151 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_152 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_152 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_153 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_153 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_154 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_154 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_155 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_155 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_156 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 22usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_156 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_157 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_157 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_158 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_158 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_159 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_159 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_160 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_160 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_161 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_161 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_162 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_162 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_163 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_163 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_164 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 36usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_164 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_165 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_165 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_166 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_166 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_167 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 31usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_167 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_168 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_168 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_169 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_169 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_170 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_170 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_171 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_171 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_172 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_172 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_173 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_173 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_174 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_174 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_175 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_175 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_176 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_176 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_177 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_177 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_178 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_178 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_179 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_179 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_180 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 25usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_180 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_181 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_181 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_182 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_182 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_183 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_183 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_184 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_184 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_185 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_185 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_186 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_186 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_187 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_187 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_188 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_188 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_189 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_189 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_190 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_190 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_191 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_191 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_192 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_192 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_193 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_193 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_194 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_194 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_195 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_195 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_196 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_196 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_197 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_197 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_198 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_198 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_199 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_199 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_200 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_200 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_201 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_201 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_202 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_202 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_203 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_203 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_204 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_204 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_205 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_205 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_206 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_206 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_207 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_207 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_208 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_208 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_209 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_209 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_210 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_210 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_211 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_211 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_212 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 26usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_212 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_213 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 26usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_213 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_214 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_214 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_215 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_215 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_216 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_216 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_217 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_217 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_218 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_218 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_219 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_219 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_220 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_220 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_221 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_221 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_222 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_222 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_223 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_223 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_224 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_224 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_225 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_225 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_226 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_226 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_227 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_227 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_228 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_228 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_229 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_229 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_230 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_230 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_231 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_231 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_232 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_232 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_233 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_233 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_234 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_234 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_235 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_235 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_236 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_236 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_237 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_237 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_238 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_238 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_239 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_239 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_240 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_240 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_241 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_241 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_242 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_242 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_243 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_243 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_244 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_244 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_245 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_245 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_246 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_246 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_247 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_247 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_248 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_248 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_249 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_249 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_250 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_250 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_251 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_251 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_252 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_252 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_253 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_253 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_254 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_254 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_255 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_255 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_256 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_256 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_257 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_257 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_258 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 23usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_258 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_259 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_259 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_260 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_260 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_261 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_261 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_262 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_262 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_263 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 23usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_263 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_264 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_264 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_265 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_265 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_266 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_266 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_267 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_267 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_268 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_268 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_269 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_269 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_270 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_270 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_271 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_271 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_272 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_272 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_273 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_273 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_274 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_274 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_275 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_275 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_276 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_276 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_277 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_277 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_278 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_278 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_279 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_279 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_280 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_280 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_281 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_281 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_282 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_282 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_283 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_283 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_284 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_284 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_285 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_285 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_286 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_286 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_287 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_287 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_288 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_288 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_289 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_289 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_290 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_290 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_291 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_291 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_292 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_292 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_293 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_293 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_294 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_294 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_295 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_295 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_296 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_296 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_297 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_297 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_298 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_298 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_299 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_299 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_300 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_300 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_301 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_301 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_302 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_302 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_303 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_303 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_304 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_304 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_305 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_305 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_306 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_306 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_307 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_307 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_308 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_308 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_309 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_309 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_310 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_310 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_311 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_311 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_312 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_312 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_313 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_313 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_314 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_314 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_315 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_315 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_316 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_316 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_317 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_317 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_318 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_318 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_319 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_319 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_320 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_320 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_321 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_321 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_322 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_322 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_323 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_323 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_324 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_324 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_325 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_325 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_326 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_326 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_327 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_327 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_328 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_328 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_329 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_329 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_330 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_330 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_331 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_331 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_332 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_332 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_333 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_333 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_334 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_334 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_335 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_335 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_336 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_336 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_337 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_337 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_338 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_338 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_339 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_339 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_340 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_340 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_341 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_341 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_342 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_342 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_343 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_343 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_344 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_344 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_345 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_345 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_346 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_346 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_347 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_347 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_348 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_348 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_349 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_349 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_350 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_350 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_351 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_351 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_352 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_352 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_353 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_353 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_354 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_354 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_355 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_355 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_356 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_356 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_357 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_357 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_358 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_358 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_359 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_359 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_360 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_360 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_361 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_361 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_362 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_362 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_363 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_363 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_364 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_364 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_365 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_365 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_366 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_366 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_367 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_367 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_368 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_368 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_369 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_369 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_370 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_370 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_371 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_371 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_372 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_372 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_373 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_373 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_374 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_374 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_375 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_375 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_376 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_376 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_377 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_377 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_378 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_378 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_379 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_379 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_380 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_380 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_381 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_381 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_382 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_382 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_383 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_383 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_384 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_384 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_385 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_385 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_386 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_386 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_387 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_387 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_388 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_388 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_389 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_389 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_390 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_390 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_391 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_391 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_392 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_392 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_393 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_393 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_394 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_394 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_395 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_395 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_396 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_396 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_397 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_397 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_398 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_398 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_399 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_399 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_400 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_400 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_401 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_401 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_402 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_402 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_403 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_403 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_404 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_404 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_405 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_405 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_406 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_406 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_407 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_407 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_408 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_408 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_409 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_409 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_410 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_410 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_411 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_411 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_412 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_412 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_413 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_413 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_414 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_414 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_415 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_415 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_416 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_416 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_417 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_417 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_418 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_418 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_419 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_419 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_420 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_420 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_421 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_421 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_422 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_422 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_423 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_423 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_424 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_424 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_425 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_425 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_426 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_426 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_427 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_427 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_428 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_428 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_429 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_429 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_430 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_430 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_431 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_431 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_432 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_432 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_433 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_433 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_434 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_434 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_435 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_435 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_436 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_436 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_437 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_437 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_438 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_438 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_439 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_439 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_440 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_440 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_441 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_441 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_442 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_442 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_443 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_443 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_444 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_444 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_445 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_445 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_446 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_446 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_447 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_447 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_448 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_448 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_449 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_449 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_450 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_450 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_451 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_451 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_452 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_452 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_453 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_453 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_454 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_454 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_455 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_455 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_456 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_456 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_457 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_457 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_458 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_458 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_459 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_459 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_460 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_460 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_461 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_461 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_462 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_462 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_463 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_463 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_464 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_464 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_465 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_465 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_466 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_466 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_467 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_467 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_468 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_468 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_469 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_469 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_470 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_470 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_471 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_471 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_472 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_472 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_473 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_473 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_474 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_474 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_475 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_475 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_476 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_476 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_477 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_477 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_478 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_478 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_479 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_479 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_480 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_480 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_481 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_481 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_482 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_482 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_483 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_483 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_484 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_484 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_485 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_485 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_486 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_486 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_487 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_487 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_488 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_488 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_489 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_489 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_490 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_490 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_491 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_491 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_492 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_492 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_493 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_493 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_494 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_494 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_495 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_495 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_496 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_496 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_497 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_497 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_498 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_498 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_499 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_499 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_500 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_500 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_501 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_501 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_502 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_502 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_503 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_503 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_504 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_504 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_505 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_505 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_506 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_506 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_507 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_507 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_508 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_508 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_509 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_509 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_510 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_510 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_511 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_511 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_512 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_512 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_513 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_513 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_514 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_514 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_515 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_515 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_516 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_516 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_517 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_517 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_518 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 18usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_518 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_519 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_519 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_520 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_520 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_521 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_521 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_522 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_522 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_523 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_523 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_524 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_524 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_525 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_525 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_526 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_526 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_527 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_527 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_528 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_528 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_529 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_529 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_530 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_530 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_531 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_531 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_532 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_532 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_533 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_533 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_534 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_534 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_535 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_535 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_536 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_536 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_537 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_537 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_538 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_538 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_539 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_539 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_540 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_540 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_541 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_541 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_542 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_542 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_543 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_543 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_544 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_544 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_545 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_545 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_546 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 13usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_546 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_547 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_547 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_548 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_548 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_549 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_549 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_550 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_550 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_551 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_551 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_552 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_552 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_553 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_553 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_554 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_554 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_555 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_555 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_556 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_556 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_557 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_557 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_558 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_558 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_559 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_559 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_560 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_560 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_561 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_561 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_562 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_562 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_563 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_563 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_564 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_564 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_565 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_565 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_566 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_566 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_567 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_567 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_568 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_568 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_569 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_569 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_570 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_570 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_571 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_571 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_572 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_572 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_573 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_573 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_574 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_574 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_575 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_575 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_576 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_576 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_577 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_577 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_578 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_578 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_579 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_579 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_580 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_580 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_581 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_581 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_582 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_582 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_583 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_583 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_584 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_584 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_585 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_585 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_586 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_586 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_587 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_587 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_588 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_588 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_589 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_589 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_590 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_590 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_591 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_591 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_592 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_592 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_593 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_593 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_594 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_594 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_595 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_595 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_596 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_596 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_597 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_597 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_598 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_598 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_599 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_599 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_600 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_600 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_601 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_601 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_602 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_602 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_603 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_603 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_604 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_604 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_605 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_605 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_606 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_606 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_607 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_607 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_608 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_608 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_609 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_609 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_610 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_610 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_611 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_611 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_612 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_612 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_613 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_613 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_614 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_614 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_615 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_615 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_616 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_616 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_617 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_617 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_618 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_618 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_619 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_619 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_620 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_620 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_621 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_621 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_622 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_622 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_623 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_623 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_624 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_624 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_625 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_625 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_626 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_626 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_627 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_627 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_628 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_628 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_629 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_629 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_630 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_630 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_631 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_631 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_632 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_632 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_633 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_633 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_634 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_634 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_635 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_635 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_636 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_636 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_637 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 19usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_637 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_638 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_638 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_639 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_639 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_640 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_640 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_641 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_641 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_642 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 17usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_642 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_643 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_643 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_644 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_644 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_645 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_645 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_646 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_646 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_647 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_647 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_648 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_648 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_649 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_649 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_650 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_650 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_651 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_651 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_652 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_652 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_653 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_653 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_654 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_654 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_655 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 11usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_655 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_656 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_656 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_657 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_657 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_658 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_658 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_659 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_659 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_660 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_660 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_661 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_661 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_662 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 28usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_662 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_663 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_663 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_664 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_664 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_665 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_665 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_666 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_666 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_667 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_667 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_668 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_668 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_669 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_669 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_670 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_670 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_671 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_671 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_672 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_672 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_673 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_673 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_674 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_674 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_675 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_675 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_676 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_676 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_677 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_677 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_678 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_678 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_679 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_679 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_680 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_680 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_681 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_681 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_682 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_682 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_683 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_683 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_684 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_684 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_685 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 10usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_685 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_686 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_686 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_687 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_687 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_688 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_688 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_689 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_689 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_690 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_690 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_691 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_691 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_692 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 3usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_692 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_693 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_693 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_694 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_694 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_695 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_695 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_696 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_696 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_697 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 15usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_697 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_698 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_698 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_699 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 16usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_699 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_700 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_700 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_701 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_701 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_702 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_702 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_703 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 7usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_703 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_704 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_704 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_705 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 20usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_705 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_706 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_706 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_707 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 12usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_707 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_708 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_708 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_709 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_709 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_710 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 8usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_710 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_711 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_711 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_712 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 4usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_712 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_713 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_713 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_714 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 9usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_714 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_715 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_715 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_716 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 14usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_716 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_717 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 5usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_717 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_2__bindgen_ty_718 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 6usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_2__bindgen_ty_718 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_global_strings__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_3 {\n    pub _ascii: PyASCIIObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_3 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_global_strings__bindgen_ty_4 {\n    pub _latin1: PyCompactUnicodeObject,\n    pub _data: [u8; 2usize],\n}\nimpl Default for _Py_global_strings__bindgen_ty_4 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_global_strings {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_slist_item_s {\n    pub next: *mut _Py_slist_item_s,\n}\nimpl Default for _Py_slist_item_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _Py_slist_item_t = _Py_slist_item_s;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_slist_t {\n    pub head: *mut _Py_slist_item_t,\n}\nimpl Default for _Py_slist_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_hashtable_entry_t {\n    pub _Py_slist_item: _Py_slist_item_t,\n    pub key_hash: Py_uhash_t,\n    pub key: *mut ::std::os::raw::c_void,\n    pub value: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_hashtable_entry_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _Py_hashtable_hash_func =\n    ::std::option::Option<unsafe extern \"C\" fn(key: *const ::std::os::raw::c_void) -> Py_uhash_t>;\npub type _Py_hashtable_compare_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        key1: *const ::std::os::raw::c_void,\n        key2: *const ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type _Py_hashtable_destroy_func =\n    ::std::option::Option<unsafe extern \"C\" fn(key: *mut ::std::os::raw::c_void)>;\npub type _Py_hashtable_get_entry_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        ht: *mut _Py_hashtable_t,\n        key: *const ::std::os::raw::c_void,\n    ) -> *mut _Py_hashtable_entry_t,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_hashtable_allocator_t {\n    pub malloc:\n        ::std::option::Option<unsafe extern \"C\" fn(size: usize) -> *mut ::std::os::raw::c_void>,\n    pub free: ::std::option::Option<unsafe extern \"C\" fn(ptr: *mut ::std::os::raw::c_void)>,\n}\nimpl Default for _Py_hashtable_allocator_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_hashtable_t {\n    pub nentries: usize,\n    pub nbuckets: usize,\n    pub buckets: *mut _Py_slist_t,\n    pub get_entry_func: _Py_hashtable_get_entry_func,\n    pub hash_func: _Py_hashtable_hash_func,\n    pub compare_func: _Py_hashtable_compare_func,\n    pub key_destroy_func: _Py_hashtable_destroy_func,\n    pub value_destroy_func: _Py_hashtable_destroy_func,\n    pub alloc: _Py_hashtable_allocator_t,\n}\nimpl Default for _Py_hashtable_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _types_runtime_state {\n    pub next_version_tag: ::std::os::raw::c_uint,\n    pub managed_static: _types_runtime_state__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _types_runtime_state__bindgen_ty_1 {\n    pub types: [_types_runtime_state__bindgen_ty_1__bindgen_ty_1; 210usize],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _types_runtime_state__bindgen_ty_1__bindgen_ty_1 {\n    pub type_: *mut PyTypeObject,\n    pub interp_count: i64,\n}\nimpl Default for _types_runtime_state__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _types_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _types_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct type_cache_entry {\n    pub version: ::std::os::raw::c_uint,\n    pub name: *mut PyObject,\n    pub value: *mut PyObject,\n}\nimpl Default for type_cache_entry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct type_cache {\n    pub hashtable: [type_cache_entry; 4096usize],\n}\nimpl Default for type_cache {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct managed_static_type_state {\n    pub type_: *mut PyTypeObject,\n    pub isbuiltin: ::std::os::raw::c_int,\n    pub readying: ::std::os::raw::c_int,\n    pub ready: ::std::os::raw::c_int,\n    pub tp_dict: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n}\nimpl Default for managed_static_type_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct types_state {\n    pub next_version_tag: ::std::os::raw::c_uint,\n    pub type_cache: type_cache,\n    pub builtins: types_state__bindgen_ty_1,\n    pub for_extensions: types_state__bindgen_ty_2,\n    pub mutex: PyMutex,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct types_state__bindgen_ty_1 {\n    pub num_initialized: usize,\n    pub initialized: [managed_static_type_state; 200usize],\n}\nimpl Default for types_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct types_state__bindgen_ty_2 {\n    pub num_initialized: usize,\n    pub next_index: usize,\n    pub initialized: [managed_static_type_state; 10usize],\n}\nimpl Default for types_state__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for types_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type pytype_slotdef = wrapperbase;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_cached_objects {\n    pub interned_strings: *mut _Py_hashtable_t,\n}\nimpl Default for _Py_cached_objects {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects {\n    pub singletons: _Py_static_objects__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects__bindgen_ty_1 {\n    pub small_ints: [PyLongObject; 262usize],\n    pub bytes_empty: PyBytesObject,\n    pub bytes_characters: [_Py_static_objects__bindgen_ty_1__bindgen_ty_1; 256usize],\n    pub strings: _Py_global_strings,\n    pub _tuple_empty_gc_not_used: PyGC_Head,\n    pub tuple_empty: PyTupleObject,\n    pub _hamt_bitmap_node_empty_gc_not_used: PyGC_Head,\n    pub hamt_bitmap_node_empty: PyHamtNode_Bitmap,\n    pub context_token_missing: _PyContextTokenMissing,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_static_objects__bindgen_ty_1__bindgen_ty_1 {\n    pub ob: PyBytesObject,\n    pub eos: ::std::os::raw::c_char,\n}\nimpl Default for _Py_static_objects__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_static_objects__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_static_objects {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_interp_cached_objects {\n    pub interned_strings: *mut PyObject,\n    pub str_replace_inf: *mut PyObject,\n    pub objreduce: *mut PyObject,\n    pub type_slots_pname: *mut PyObject,\n    pub type_slots_ptrs: [*mut pytype_slotdef; 10usize],\n    pub generic_type: *mut PyTypeObject,\n    pub typevar_type: *mut PyTypeObject,\n    pub typevartuple_type: *mut PyTypeObject,\n    pub paramspec_type: *mut PyTypeObject,\n    pub paramspecargs_type: *mut PyTypeObject,\n    pub paramspeckwargs_type: *mut PyTypeObject,\n}\nimpl Default for _Py_interp_cached_objects {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_interp_static_objects {\n    pub singletons: _Py_interp_static_objects__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _Py_interp_static_objects__bindgen_ty_1 {\n    pub _not_used: ::std::os::raw::c_int,\n    pub _hamt_empty_gc_not_used: PyGC_Head,\n    pub hamt_empty: PyHamtObject,\n    pub last_resort_memory_error: PyBaseExceptionObject,\n}\nimpl Default for _Py_interp_static_objects__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _Py_interp_static_objects {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_unicode_runtime_ids {\n    pub mutex: PyMutex,\n    pub next_index: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_unicode_runtime_state {\n    pub ids: _Py_unicode_runtime_ids,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_fs_codec {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub utf8: ::std::os::raw::c_int,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _Py_unicode_fs_codec {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_ids {\n    pub size: Py_ssize_t,\n    pub array: *mut *mut PyObject,\n}\nimpl Default for _Py_unicode_ids {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_state {\n    pub fs_codec: _Py_unicode_fs_codec,\n    pub ucnhash_capi: *mut _PyUnicode_Name_CAPI,\n    pub ids: _Py_unicode_ids,\n}\nimpl Default for _Py_unicode_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const _py_float_format_type__py_float_format_unknown: _py_float_format_type = 0;\npub const _py_float_format_type__py_float_format_ieee_big_endian: _py_float_format_type = 1;\npub const _py_float_format_type__py_float_format_ieee_little_endian: _py_float_format_type = 2;\npub type _py_float_format_type = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_float_runtime_state {\n    pub float_format: _py_float_format_type,\n    pub double_format: _py_float_format_type,\n}\nimpl Default for _Py_float_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _func_version_cache_item {\n    pub func: *mut PyFunctionObject,\n    pub code: *mut PyObject,\n}\nimpl Default for _func_version_cache_item {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _py_func_state {\n    pub next_version: u32,\n    pub func_version_cache: [_func_version_cache_item; 4096usize],\n}\nimpl Default for _py_func_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_runtime_state {\n    pub inittab: *mut _inittab,\n    pub last_module_index: Py_ssize_t,\n    pub extensions: _import_runtime_state__bindgen_ty_1,\n    pub pkgcontext: *const ::std::os::raw::c_char,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_runtime_state__bindgen_ty_1 {\n    pub mutex: PyMutex,\n    pub hashtable: *mut _Py_hashtable_t,\n}\nimpl Default for _import_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _import_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _import_state {\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub override_frozen_modules: ::std::os::raw::c_int,\n    pub override_multi_interp_extensions_check: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub import_func: *mut PyObject,\n    pub lock: _PyRecursiveMutex,\n    pub find_and_load: _import_state__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _import_state__bindgen_ty_1 {\n    pub import_level: ::std::os::raw::c_int,\n    pub accumulated: PyTime_t,\n    pub header: ::std::os::raw::c_int,\n}\nimpl Default for _import_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyObject,\n    pub f_back: *mut PyFrameObject,\n    pub f_frame: *mut _PyInterpreterFrame,\n    pub f_trace: *mut PyObject,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_extra_locals: *mut PyObject,\n    pub f_locals_cache: *mut PyObject,\n    pub _f_frame_data: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyInterpreterFrame {\n    pub f_executable: *mut PyObject,\n    pub previous: *mut _PyInterpreterFrame,\n    pub f_funcobj: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_builtins: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub frame_obj: *mut PyFrameObject,\n    pub instr_ptr: *mut _Py_CODEUNIT,\n    pub stacktop: ::std::os::raw::c_int,\n    pub return_offset: u16,\n    pub owner: ::std::os::raw::c_char,\n    pub localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _PyInterpreterFrame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct debug_alloc_api_t {\n    pub api_id: ::std::os::raw::c_char,\n    pub alloc: PyMemAllocatorEx,\n}\nimpl Default for debug_alloc_api_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators {\n    pub mutex: PyMutex,\n    pub standard: _pymem_allocators__bindgen_ty_1,\n    pub debug: _pymem_allocators__bindgen_ty_2,\n    pub is_debug_enabled: ::std::os::raw::c_int,\n    pub obj_arena: PyObjectArenaAllocator,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators__bindgen_ty_1 {\n    pub raw: PyMemAllocatorEx,\n    pub mem: PyMemAllocatorEx,\n    pub obj: PyMemAllocatorEx,\n}\nimpl Default for _pymem_allocators__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pymem_allocators__bindgen_ty_2 {\n    pub raw: debug_alloc_api_t,\n    pub mem: debug_alloc_api_t,\n    pub obj: debug_alloc_api_t,\n}\nimpl Default for _pymem_allocators__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _pymem_allocators {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_mem_interp_free_queue {\n    pub has_work: ::std::os::raw::c_int,\n    pub mutex: PyMutex,\n    pub head: llist_node,\n}\nimpl Default for _Py_mem_interp_free_queue {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _py_object_runtime_state {\n    pub _not_used: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _py_object_state {\n    pub freelists: _Py_object_freelists,\n    pub _not_used: ::std::os::raw::c_int,\n}\nimpl Default for _py_object_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyExecutorLinkListNode {\n    pub next: *mut _PyExecutorObject,\n    pub previous: *mut _PyExecutorObject,\n}\nimpl Default for _PyExecutorLinkListNode {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _bloom_filter {\n    pub bits: [u32; 8usize],\n}\npub type _PyBloomFilter = _bloom_filter;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyVMData {\n    pub opcode: u8,\n    pub oparg: u8,\n    pub valid: u8,\n    pub linked: u8,\n    pub index: ::std::os::raw::c_int,\n    pub bloom: _PyBloomFilter,\n    pub links: _PyExecutorLinkListNode,\n    pub code: *mut PyCodeObject,\n}\nimpl Default for _PyVMData {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyUOpInstruction {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize], u16>,\n    pub oparg: u16,\n    pub __bindgen_anon_1: _PyUOpInstruction__bindgen_ty_1,\n    pub operand: u64,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _PyUOpInstruction__bindgen_ty_1 {\n    pub target: u32,\n    pub __bindgen_anon_1: _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1,\n    _bindgen_union_align: u32,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1 {\n    pub __bindgen_anon_1: _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,\n    pub error_target: u16,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {\n    pub exit_index: u16,\n    pub jump_target: u16,\n    _bindgen_union_align: u16,\n}\nimpl Default for _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _PyUOpInstruction__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _PyUOpInstruction__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _PyUOpInstruction {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl _PyUOpInstruction {\n    #[inline]\n    pub fn opcode(&self) -> u16 {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 14u8) as u16) }\n    }\n    #[inline]\n    pub fn set_opcode(&mut self, val: u16) {\n        unsafe {\n            let val: u16 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 14u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn format(&self) -> u16 {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(14usize, 2u8) as u16) }\n    }\n    #[inline]\n    pub fn set_format(&mut self, val: u16) {\n        unsafe {\n            let val: u16 = ::std::mem::transmute(val);\n            self._bitfield_1.set(14usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(opcode: u16, format: u16) -> __BindgenBitfieldUnit<[u8; 2usize], u16> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 2usize], u16> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 14u8, {\n            let opcode: u16 = unsafe { ::std::mem::transmute(opcode) };\n            opcode as u64\n        });\n        __bindgen_bitfield_unit.set(14usize, 2u8, {\n            let format: u16 = unsafe { ::std::mem::transmute(format) };\n            format as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _exit_data {\n    pub target: u32,\n    pub temperature: _Py_BackoffCounter,\n    pub executor: *const _PyExecutorObject,\n}\nimpl Default for _exit_data {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyExitData = _exit_data;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyExecutorObject {\n    pub ob_base: PyVarObject,\n    pub trace: *const _PyUOpInstruction,\n    pub vm_data: _PyVMData,\n    pub exit_count: u32,\n    pub code_size: u32,\n    pub jit_size: usize,\n    pub jit_code: *mut ::std::os::raw::c_void,\n    pub jit_side_entry: *mut ::std::os::raw::c_void,\n    pub exits: [_PyExitData; 1usize],\n}\nimpl Default for _PyExecutorObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type optimize_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        self_: *mut _PyOptimizerObject,\n        frame: *mut _PyInterpreterFrame,\n        instr: *mut _Py_CODEUNIT,\n        exec_ptr: *mut *mut _PyExecutorObject,\n        curr_stackentries: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyOptimizerObject {\n    pub ob_base: PyObject,\n    pub optimize: optimize_func,\n}\nimpl Default for _PyOptimizerObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type pymem_uint = ::std::os::raw::c_uint;\npub type pymem_block = u8;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pool_header {\n    pub ref_: pool_header__bindgen_ty_1,\n    pub freeblock: *mut pymem_block,\n    pub nextpool: *mut pool_header,\n    pub prevpool: *mut pool_header,\n    pub arenaindex: pymem_uint,\n    pub szidx: pymem_uint,\n    pub nextoffset: pymem_uint,\n    pub maxnextoffset: pymem_uint,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pool_header__bindgen_ty_1 {\n    pub _padding: *mut pymem_block,\n    pub count: pymem_uint,\n    _bindgen_union_align: u64,\n}\nimpl Default for pool_header__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for pool_header {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type poolp = *mut pool_header;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct arena_object {\n    pub address: usize,\n    pub pool_address: *mut pymem_block,\n    pub nfreepools: pymem_uint,\n    pub ntotalpools: pymem_uint,\n    pub freepools: *mut pool_header,\n    pub nextarena: *mut arena_object,\n    pub prevarena: *mut arena_object,\n}\nimpl Default for arena_object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _obmalloc_pools {\n    pub used: [poolp; 64usize],\n}\nimpl Default for _obmalloc_pools {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _obmalloc_mgmt {\n    pub arenas: *mut arena_object,\n    pub maxarenas: pymem_uint,\n    pub unused_arena_objects: *mut arena_object,\n    pub usable_arenas: *mut arena_object,\n    pub nfp2lasta: [*mut arena_object; 65usize],\n    pub narenas_currently_allocated: usize,\n    pub ntimes_arena_allocated: usize,\n    pub narenas_highwater: usize,\n    pub raw_allocated_blocks: Py_ssize_t,\n}\nimpl Default for _obmalloc_mgmt {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct arena_coverage_t {\n    pub tail_hi: i32,\n    pub tail_lo: i32,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct arena_map_bot {\n    pub arenas: [arena_coverage_t; 16384usize],\n}\nimpl Default for arena_map_bot {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct arena_map_mid {\n    pub ptrs: [*mut arena_map_bot; 32768usize],\n}\nimpl Default for arena_map_mid {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct arena_map_top {\n    pub ptrs: [*mut arena_map_mid; 32768usize],\n}\nimpl Default for arena_map_top {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type arena_map_top_t = arena_map_top;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _obmalloc_usage {\n    pub arena_map_root: arena_map_top_t,\n    pub arena_map_mid_count: ::std::os::raw::c_int,\n    pub arena_map_bot_count: ::std::os::raw::c_int,\n}\nimpl Default for _obmalloc_usage {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _obmalloc_global_state {\n    pub dump_debug_stats: ::std::os::raw::c_int,\n    pub interpreter_leaks: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _obmalloc_state {\n    pub pools: _obmalloc_pools,\n    pub mgmt: _obmalloc_mgmt,\n    pub usage: _obmalloc_usage,\n}\nimpl Default for _obmalloc_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _qsbr_thread_state {\n    pub seq: u64,\n    pub shared: *mut _qsbr_shared,\n    pub tstate: *mut PyThreadState,\n    pub deferrals: ::std::os::raw::c_int,\n    pub allocated: bool,\n    pub freelist_next: *mut _qsbr_thread_state,\n}\nimpl Default for _qsbr_thread_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _qsbr_pad {\n    pub qsbr: _qsbr_thread_state,\n    pub __padding: [::std::os::raw::c_char; 24usize],\n}\nimpl Default for _qsbr_pad {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _qsbr_shared {\n    pub wr_seq: u64,\n    pub rd_seq: u64,\n    pub array: *mut _qsbr_pad,\n    pub size: Py_ssize_t,\n    pub mutex: PyMutex,\n    pub freelist: *mut _qsbr_thread_state,\n}\nimpl Default for _qsbr_shared {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _PyObjectStackChunk {\n    pub prev: *mut _PyObjectStackChunk,\n    pub n: Py_ssize_t,\n    pub objs: [*mut PyObject; 254usize],\n}\nimpl Default for _PyObjectStackChunk {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyThreadStateImpl {\n    pub base: PyThreadState,\n    pub asyncio_running_loop: *mut PyObject,\n    pub qsbr: *mut _qsbr_thread_state,\n    pub mem_free_queue: llist_node,\n}\nimpl Default for _PyThreadStateImpl {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub mutex: PyMutex,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_long_state {\n    pub max_str_digits: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _stoptheworld_state {\n    pub mutex: PyMutex,\n    pub requested: bool,\n    pub world_stopped: bool,\n    pub is_global: bool,\n    pub stop_event: PyEvent,\n    pub thread_countdown: Py_ssize_t,\n    pub requester: *mut PyThreadState,\n}\nimpl Default for _stoptheworld_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _rare_events {\n    pub set_class: u8,\n    pub set_bases: u8,\n    pub set_eval_frame_func: u8,\n    pub builtin_dict: u8,\n    pub func_modification: u8,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub ceval: _ceval_state,\n    pub next: *mut PyInterpreterState,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub _whence: ::std::os::raw::c_long,\n    pub _initialized: ::std::os::raw::c_int,\n    pub _ready: ::std::os::raw::c_int,\n    pub finalizing: ::std::os::raw::c_int,\n    pub last_restart_version: usize,\n    pub threads: _is_pythreads,\n    pub runtime: *mut pyruntimestate,\n    pub _finalizing: *mut PyThreadState,\n    pub _finalizing_id: ::std::os::raw::c_ulong,\n    pub gc: _gc_runtime_state,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub imports: _import_state,\n    pub _gil: _gil_runtime_state,\n    pub codecs: codecs_state,\n    pub config: PyConfig,\n    pub feature_flags: ::std::os::raw::c_ulong,\n    pub dict: *mut PyObject,\n    pub sysdict_copy: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub func_watchers: [PyFunction_WatchCallback; 8usize],\n    pub active_func_watchers: u8,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub xi: _xi_state,\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub warnings: _warnings_runtime_state,\n    pub atexit: atexit_state,\n    pub stoptheworld: _stoptheworld_state,\n    pub qsbr: _qsbr_shared,\n    pub obmalloc: *mut _obmalloc_state,\n    pub audit_hooks: *mut PyObject,\n    pub type_watchers: [PyType_WatchCallback; 8usize],\n    pub code_watchers: [PyCode_WatchCallback; 8usize],\n    pub active_code_watchers: u8,\n    pub object_state: _py_object_state,\n    pub unicode: _Py_unicode_state,\n    pub long_state: _Py_long_state,\n    pub dtoa: _dtoa_state,\n    pub func_state: _py_func_state,\n    pub code_state: _py_code_state,\n    pub dict_state: _Py_dict_state,\n    pub exc_state: _Py_exc_state,\n    pub mem_free_queue: _Py_mem_interp_free_queue,\n    pub ast: ast_state,\n    pub types: types_state,\n    pub callable_cache: callable_cache,\n    pub optimizer: *mut _PyOptimizerObject,\n    pub executor_list_head: *mut _PyExecutorObject,\n    pub rare_events: _rare_events,\n    pub builtins_dict_watcher: PyDict_WatchCallback,\n    pub monitors: _Py_GlobalMonitors,\n    pub sys_profile_initialized: bool,\n    pub sys_trace_initialized: bool,\n    pub sys_profiling_threads: Py_ssize_t,\n    pub sys_tracing_threads: Py_ssize_t,\n    pub monitoring_callables: [[*mut PyObject; 17usize]; 8usize],\n    pub monitoring_tool_names: [*mut PyObject; 8usize],\n    pub cached_objects: _Py_interp_cached_objects,\n    pub static_objects: _Py_interp_static_objects,\n    pub _initial_thread: _PyThreadStateImpl,\n    pub _interactive_src_count: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is_pythreads {\n    pub next_unique_id: u64,\n    pub head: *mut PyThreadState,\n    pub main: *mut PyThreadState,\n    pub count: Py_ssize_t,\n    pub stacksize: usize,\n}\nimpl Default for _is_pythreads {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type sig_atomic_t = __sig_atomic_t;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union sigval {\n    pub sival_int: ::std::os::raw::c_int,\n    pub sival_ptr: *mut ::std::os::raw::c_void,\n    _bindgen_union_align: u64,\n}\nimpl Default for sigval {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type __sigval_t = sigval;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t {\n    pub si_signo: ::std::os::raw::c_int,\n    pub si_errno: ::std::os::raw::c_int,\n    pub si_code: ::std::os::raw::c_int,\n    pub __pad0: ::std::os::raw::c_int,\n    pub _sifields: siginfo_t__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union siginfo_t__bindgen_ty_1 {\n    pub _pad: [::std::os::raw::c_int; 28usize],\n    pub _kill: siginfo_t__bindgen_ty_1__bindgen_ty_1,\n    pub _timer: siginfo_t__bindgen_ty_1__bindgen_ty_2,\n    pub _rt: siginfo_t__bindgen_ty_1__bindgen_ty_3,\n    pub _sigchld: siginfo_t__bindgen_ty_1__bindgen_ty_4,\n    pub _sigfault: siginfo_t__bindgen_ty_1__bindgen_ty_5,\n    pub _sigpoll: siginfo_t__bindgen_ty_1__bindgen_ty_6,\n    pub _sigsys: siginfo_t__bindgen_ty_1__bindgen_ty_7,\n    _bindgen_union_align: [u64; 14usize],\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_1 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_2 {\n    pub si_tid: ::std::os::raw::c_int,\n    pub si_overrun: ::std::os::raw::c_int,\n    pub si_sigval: __sigval_t,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_3 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n    pub si_sigval: __sigval_t,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_4 {\n    pub si_pid: __pid_t,\n    pub si_uid: __uid_t,\n    pub si_status: ::std::os::raw::c_int,\n    pub si_utime: __clock_t,\n    pub si_stime: __clock_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_5 {\n    pub si_addr: *mut ::std::os::raw::c_void,\n    pub si_addr_lsb: ::std::os::raw::c_short,\n    pub _bounds: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 {\n    pub _addr_bnd: siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1,\n    pub _pkey: __uint32_t,\n    _bindgen_union_align: [u64; 2usize],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {\n    pub _lower: *mut ::std::os::raw::c_void,\n    pub _upper: *mut ::std::os::raw::c_void,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_6 {\n    pub si_band: ::std::os::raw::c_long,\n    pub si_fd: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct siginfo_t__bindgen_ty_1__bindgen_ty_7 {\n    pub _call_addr: *mut ::std::os::raw::c_void,\n    pub _syscall: ::std::os::raw::c_int,\n    pub _arch: ::std::os::raw::c_uint,\n}\nimpl Default for siginfo_t__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for siginfo_t__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for siginfo_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type __sighandler_t = ::std::option::Option<unsafe extern \"C\" fn(arg1: ::std::os::raw::c_int)>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct sigaction {\n    pub __sigaction_handler: sigaction__bindgen_ty_1,\n    pub sa_mask: __sigset_t,\n    pub sa_flags: ::std::os::raw::c_int,\n    pub sa_restorer: ::std::option::Option<unsafe extern \"C\" fn()>,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union sigaction__bindgen_ty_1 {\n    pub sa_handler: __sighandler_t,\n    pub sa_sigaction: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: ::std::os::raw::c_int,\n            arg2: *mut siginfo_t,\n            arg3: *mut ::std::os::raw::c_void,\n        ),\n    >,\n    _bindgen_union_align: u64,\n}\nimpl Default for sigaction__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for sigaction {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct stack_t {\n    pub ss_sp: *mut ::std::os::raw::c_void,\n    pub ss_flags: ::std::os::raw::c_int,\n    pub ss_size: usize,\n}\nimpl Default for stack_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _Py_sighandler_t = sigaction;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct faulthandler_user_signal {\n    pub enabled: ::std::os::raw::c_int,\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub all_threads: ::std::os::raw::c_int,\n    pub chain: ::std::os::raw::c_int,\n    pub previous: _Py_sighandler_t,\n    pub interp: *mut PyInterpreterState,\n}\nimpl Default for faulthandler_user_signal {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state {\n    pub fatal_error: _faulthandler_runtime_state__bindgen_ty_1,\n    pub thread: _faulthandler_runtime_state__bindgen_ty_2,\n    pub user_signals: *mut faulthandler_user_signal,\n    pub stack: stack_t,\n    pub old_stack: stack_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state__bindgen_ty_1 {\n    pub enabled: ::std::os::raw::c_int,\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub all_threads: ::std::os::raw::c_int,\n    pub interp: *mut PyInterpreterState,\n}\nimpl Default for _faulthandler_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _faulthandler_runtime_state__bindgen_ty_2 {\n    pub file: *mut PyObject,\n    pub fd: ::std::os::raw::c_int,\n    pub timeout_us: ::std::os::raw::c_longlong,\n    pub repeat: ::std::os::raw::c_int,\n    pub interp: *mut PyInterpreterState,\n    pub exit: ::std::os::raw::c_int,\n    pub header: *mut ::std::os::raw::c_char,\n    pub header_len: usize,\n    pub cancel_event: PyThread_type_lock,\n    pub running: PyThread_type_lock,\n}\nimpl Default for _faulthandler_runtime_state__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _faulthandler_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type identifier = *mut PyObject;\npub type string = *mut PyObject;\npub type constant = *mut PyObject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_int_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [::std::os::raw::c_int; 1usize],\n}\nimpl Default for asdl_int_seq {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type expr_ty = *mut _expr;\npub const _expr_context_Load: _expr_context = 1;\npub const _expr_context_Store: _expr_context = 2;\npub const _expr_context_Del: _expr_context = 3;\npub type _expr_context = u32;\npub use self::_expr_context as expr_context_ty;\npub const _boolop_And: _boolop = 1;\npub const _boolop_Or: _boolop = 2;\npub type _boolop = u32;\npub use self::_boolop as boolop_ty;\npub const _operator_Add: _operator = 1;\npub const _operator_Sub: _operator = 2;\npub const _operator_Mult: _operator = 3;\npub const _operator_MatMult: _operator = 4;\npub const _operator_Div: _operator = 5;\npub const _operator_Mod: _operator = 6;\npub const _operator_Pow: _operator = 7;\npub const _operator_LShift: _operator = 8;\npub const _operator_RShift: _operator = 9;\npub const _operator_BitOr: _operator = 10;\npub const _operator_BitXor: _operator = 11;\npub const _operator_BitAnd: _operator = 12;\npub const _operator_FloorDiv: _operator = 13;\npub type _operator = u32;\npub use self::_operator as operator_ty;\npub const _unaryop_Invert: _unaryop = 1;\npub const _unaryop_Not: _unaryop = 2;\npub const _unaryop_UAdd: _unaryop = 3;\npub const _unaryop_USub: _unaryop = 4;\npub type _unaryop = u32;\npub use self::_unaryop as unaryop_ty;\npub type comprehension_ty = *mut _comprehension;\npub type arguments_ty = *mut _arguments;\npub type arg_ty = *mut _arg;\npub type keyword_ty = *mut _keyword;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_expr_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [expr_ty; 1usize],\n}\nimpl Default for asdl_expr_seq {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_comprehension_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [comprehension_ty; 1usize],\n}\nimpl Default for asdl_comprehension_seq {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_arg_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [arg_ty; 1usize],\n}\nimpl Default for asdl_arg_seq {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct asdl_keyword_seq {\n    pub size: Py_ssize_t,\n    pub elements: *mut *mut ::std::os::raw::c_void,\n    pub typed_elements: [keyword_ty; 1usize],\n}\nimpl Default for asdl_keyword_seq {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const _expr_kind_BoolOp_kind: _expr_kind = 1;\npub const _expr_kind_NamedExpr_kind: _expr_kind = 2;\npub const _expr_kind_BinOp_kind: _expr_kind = 3;\npub const _expr_kind_UnaryOp_kind: _expr_kind = 4;\npub const _expr_kind_Lambda_kind: _expr_kind = 5;\npub const _expr_kind_IfExp_kind: _expr_kind = 6;\npub const _expr_kind_Dict_kind: _expr_kind = 7;\npub const _expr_kind_Set_kind: _expr_kind = 8;\npub const _expr_kind_ListComp_kind: _expr_kind = 9;\npub const _expr_kind_SetComp_kind: _expr_kind = 10;\npub const _expr_kind_DictComp_kind: _expr_kind = 11;\npub const _expr_kind_GeneratorExp_kind: _expr_kind = 12;\npub const _expr_kind_Await_kind: _expr_kind = 13;\npub const _expr_kind_Yield_kind: _expr_kind = 14;\npub const _expr_kind_YieldFrom_kind: _expr_kind = 15;\npub const _expr_kind_Compare_kind: _expr_kind = 16;\npub const _expr_kind_Call_kind: _expr_kind = 17;\npub const _expr_kind_FormattedValue_kind: _expr_kind = 18;\npub const _expr_kind_JoinedStr_kind: _expr_kind = 19;\npub const _expr_kind_Constant_kind: _expr_kind = 20;\npub const _expr_kind_Attribute_kind: _expr_kind = 21;\npub const _expr_kind_Subscript_kind: _expr_kind = 22;\npub const _expr_kind_Starred_kind: _expr_kind = 23;\npub const _expr_kind_Name_kind: _expr_kind = 24;\npub const _expr_kind_List_kind: _expr_kind = 25;\npub const _expr_kind_Tuple_kind: _expr_kind = 26;\npub const _expr_kind_Slice_kind: _expr_kind = 27;\npub type _expr_kind = u32;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _expr {\n    pub kind: _expr_kind,\n    pub v: _expr__bindgen_ty_1,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _expr__bindgen_ty_1 {\n    pub BoolOp: _expr__bindgen_ty_1__bindgen_ty_1,\n    pub NamedExpr: _expr__bindgen_ty_1__bindgen_ty_2,\n    pub BinOp: _expr__bindgen_ty_1__bindgen_ty_3,\n    pub UnaryOp: _expr__bindgen_ty_1__bindgen_ty_4,\n    pub Lambda: _expr__bindgen_ty_1__bindgen_ty_5,\n    pub IfExp: _expr__bindgen_ty_1__bindgen_ty_6,\n    pub Dict: _expr__bindgen_ty_1__bindgen_ty_7,\n    pub Set: _expr__bindgen_ty_1__bindgen_ty_8,\n    pub ListComp: _expr__bindgen_ty_1__bindgen_ty_9,\n    pub SetComp: _expr__bindgen_ty_1__bindgen_ty_10,\n    pub DictComp: _expr__bindgen_ty_1__bindgen_ty_11,\n    pub GeneratorExp: _expr__bindgen_ty_1__bindgen_ty_12,\n    pub Await: _expr__bindgen_ty_1__bindgen_ty_13,\n    pub Yield: _expr__bindgen_ty_1__bindgen_ty_14,\n    pub YieldFrom: _expr__bindgen_ty_1__bindgen_ty_15,\n    pub Compare: _expr__bindgen_ty_1__bindgen_ty_16,\n    pub Call: _expr__bindgen_ty_1__bindgen_ty_17,\n    pub FormattedValue: _expr__bindgen_ty_1__bindgen_ty_18,\n    pub JoinedStr: _expr__bindgen_ty_1__bindgen_ty_19,\n    pub Constant: _expr__bindgen_ty_1__bindgen_ty_20,\n    pub Attribute: _expr__bindgen_ty_1__bindgen_ty_21,\n    pub Subscript: _expr__bindgen_ty_1__bindgen_ty_22,\n    pub Starred: _expr__bindgen_ty_1__bindgen_ty_23,\n    pub Name: _expr__bindgen_ty_1__bindgen_ty_24,\n    pub List: _expr__bindgen_ty_1__bindgen_ty_25,\n    pub Tuple: _expr__bindgen_ty_1__bindgen_ty_26,\n    pub Slice: _expr__bindgen_ty_1__bindgen_ty_27,\n    _bindgen_union_align: [u64; 3usize],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_1 {\n    pub op: boolop_ty,\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_2 {\n    pub target: expr_ty,\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_3 {\n    pub left: expr_ty,\n    pub op: operator_ty,\n    pub right: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_3 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_4 {\n    pub op: unaryop_ty,\n    pub operand: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_4 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_5 {\n    pub args: arguments_ty,\n    pub body: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_5 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_6 {\n    pub test: expr_ty,\n    pub body: expr_ty,\n    pub orelse: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_6 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_7 {\n    pub keys: *mut asdl_expr_seq,\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_7 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_8 {\n    pub elts: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_8 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_9 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_9 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_10 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_10 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_11 {\n    pub key: expr_ty,\n    pub value: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_11 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_12 {\n    pub elt: expr_ty,\n    pub generators: *mut asdl_comprehension_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_12 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_13 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_13 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_14 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_14 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_15 {\n    pub value: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_15 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_16 {\n    pub left: expr_ty,\n    pub ops: *mut asdl_int_seq,\n    pub comparators: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_16 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_17 {\n    pub func: expr_ty,\n    pub args: *mut asdl_expr_seq,\n    pub keywords: *mut asdl_keyword_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_17 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_18 {\n    pub value: expr_ty,\n    pub conversion: ::std::os::raw::c_int,\n    pub format_spec: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_18 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_19 {\n    pub values: *mut asdl_expr_seq,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_19 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_20 {\n    pub value: constant,\n    pub kind: string,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_20 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_21 {\n    pub value: expr_ty,\n    pub attr: identifier,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_21 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_22 {\n    pub value: expr_ty,\n    pub slice: expr_ty,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_22 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_23 {\n    pub value: expr_ty,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_23 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_24 {\n    pub id: identifier,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_24 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_25 {\n    pub elts: *mut asdl_expr_seq,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_25 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_26 {\n    pub elts: *mut asdl_expr_seq,\n    pub ctx: expr_context_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_26 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _expr__bindgen_ty_1__bindgen_ty_27 {\n    pub lower: expr_ty,\n    pub upper: expr_ty,\n    pub step: expr_ty,\n}\nimpl Default for _expr__bindgen_ty_1__bindgen_ty_27 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _expr__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _expr {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _comprehension {\n    pub target: expr_ty,\n    pub iter: expr_ty,\n    pub ifs: *mut asdl_expr_seq,\n    pub is_async: ::std::os::raw::c_int,\n}\nimpl Default for _comprehension {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _arguments {\n    pub posonlyargs: *mut asdl_arg_seq,\n    pub args: *mut asdl_arg_seq,\n    pub vararg: arg_ty,\n    pub kwonlyargs: *mut asdl_arg_seq,\n    pub kw_defaults: *mut asdl_expr_seq,\n    pub kwarg: arg_ty,\n    pub defaults: *mut asdl_expr_seq,\n}\nimpl Default for _arguments {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _arg {\n    pub arg: identifier,\n    pub annotation: expr_ty,\n    pub type_comment: string,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\nimpl Default for _arg {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _keyword {\n    pub arg: identifier,\n    pub value: expr_ty,\n    pub lineno: ::std::os::raw::c_int,\n    pub col_offset: ::std::os::raw::c_int,\n    pub end_lineno: ::std::os::raw::c_int,\n    pub end_col_offset: ::std::os::raw::c_int,\n}\nimpl Default for _keyword {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _parser_runtime_state {\n    pub _not_used: ::std::os::raw::c_int,\n    pub dummy_name: _expr,\n}\nimpl Default for _parser_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct pyhash_runtime_state {\n    pub urandom_cache: pyhash_runtime_state__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct pyhash_runtime_state__bindgen_ty_1 {\n    pub fd: ::std::os::raw::c_int,\n    pub st_dev: dev_t,\n    pub st_ino: ino_t,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _signals_runtime_state {\n    pub handlers: [_signals_runtime_state__bindgen_ty_1; 65usize],\n    pub wakeup: _signals_runtime_state__bindgen_ty_2,\n    pub is_tripped: ::std::os::raw::c_int,\n    pub default_handler: *mut PyObject,\n    pub ignore_handler: *mut PyObject,\n    pub unhandled_keyboard_interrupt: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _signals_runtime_state__bindgen_ty_1 {\n    pub tripped: ::std::os::raw::c_int,\n    pub func: *mut PyObject,\n}\nimpl Default for _signals_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _signals_runtime_state__bindgen_ty_2 {\n    pub fd: sig_atomic_t,\n    pub warn_on_full_buffer: ::std::os::raw::c_int,\n}\nimpl Default for _signals_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyTraceMalloc_Config {\n    pub initialized: _PyTraceMalloc_Config__bindgen_ty_1,\n    pub tracing: ::std::os::raw::c_int,\n    pub max_nframe: ::std::os::raw::c_int,\n}\npub const _PyTraceMalloc_Config_TRACEMALLOC_NOT_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 =\n    0;\npub const _PyTraceMalloc_Config_TRACEMALLOC_INITIALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 1;\npub const _PyTraceMalloc_Config_TRACEMALLOC_FINALIZED: _PyTraceMalloc_Config__bindgen_ty_1 = 2;\npub type _PyTraceMalloc_Config__bindgen_ty_1 = u32;\nimpl Default for _PyTraceMalloc_Config {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C, packed)]\n#[derive(Debug, Copy, Clone)]\npub struct tracemalloc_frame {\n    pub filename: *mut PyObject,\n    pub lineno: ::std::os::raw::c_uint,\n}\nimpl Default for tracemalloc_frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct tracemalloc_traceback {\n    pub hash: Py_uhash_t,\n    pub nframe: u16,\n    pub total_nframe: u16,\n    pub frames: [tracemalloc_frame; 1usize],\n}\nimpl Default for tracemalloc_traceback {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _tracemalloc_runtime_state {\n    pub config: _PyTraceMalloc_Config,\n    pub allocators: _tracemalloc_runtime_state__bindgen_ty_1,\n    pub tables_lock: PyThread_type_lock,\n    pub traced_memory: usize,\n    pub peak_traced_memory: usize,\n    pub filenames: *mut _Py_hashtable_t,\n    pub traceback: *mut tracemalloc_traceback,\n    pub tracebacks: *mut _Py_hashtable_t,\n    pub traces: *mut _Py_hashtable_t,\n    pub domains: *mut _Py_hashtable_t,\n    pub empty_traceback: tracemalloc_traceback,\n    pub reentrant_key: Py_tss_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _tracemalloc_runtime_state__bindgen_ty_1 {\n    pub mem: PyMemAllocatorEx,\n    pub raw: PyMemAllocatorEx,\n    pub obj: PyMemAllocatorEx,\n}\nimpl Default for _tracemalloc_runtime_state__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _tracemalloc_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _getargs_runtime_state {\n    pub static_parsers: *mut _PyArg_Parser,\n}\nimpl Default for _getargs_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gilstate_runtime_state {\n    pub check_enabled: ::std::os::raw::c_int,\n    pub autoInterpreterState: *mut PyInterpreterState,\n}\nimpl Default for _gilstate_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_AuditHookEntry {\n    pub next: *mut _Py_AuditHookEntry,\n    pub hookCFunction: Py_AuditHookFunction,\n    pub userData: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_AuditHookEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets {\n    pub cookie: [::std::os::raw::c_char; 8usize],\n    pub version: u64,\n    pub free_threaded: u64,\n    pub runtime_state: _Py_DebugOffsets__runtime_state,\n    pub interpreter_state: _Py_DebugOffsets__interpreter_state,\n    pub thread_state: _Py_DebugOffsets__thread_state,\n    pub interpreter_frame: _Py_DebugOffsets__interpreter_frame,\n    pub code_object: _Py_DebugOffsets__code_object,\n    pub pyobject: _Py_DebugOffsets__pyobject,\n    pub type_object: _Py_DebugOffsets__type_object,\n    pub tuple_object: _Py_DebugOffsets__tuple_object,\n    pub list_object: _Py_DebugOffsets__list_object,\n    pub dict_object: _Py_DebugOffsets__dict_object,\n    pub float_object: _Py_DebugOffsets__float_object,\n    pub long_object: _Py_DebugOffsets__long_object,\n    pub bytes_object: _Py_DebugOffsets__bytes_object,\n    pub unicode_object: _Py_DebugOffsets__unicode_object,\n    pub gc: _Py_DebugOffsets__gc,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__runtime_state {\n    pub size: u64,\n    pub finalizing: u64,\n    pub interpreters_head: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__interpreter_state {\n    pub size: u64,\n    pub id: u64,\n    pub next: u64,\n    pub threads_head: u64,\n    pub gc: u64,\n    pub imports_modules: u64,\n    pub sysdict: u64,\n    pub builtins: u64,\n    pub ceval_gil: u64,\n    pub gil_runtime_state: u64,\n    pub gil_runtime_state_enabled: u64,\n    pub gil_runtime_state_locked: u64,\n    pub gil_runtime_state_holder: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__thread_state {\n    pub size: u64,\n    pub prev: u64,\n    pub next: u64,\n    pub interp: u64,\n    pub current_frame: u64,\n    pub thread_id: u64,\n    pub native_thread_id: u64,\n    pub datastack_chunk: u64,\n    pub status: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__interpreter_frame {\n    pub size: u64,\n    pub previous: u64,\n    pub executable: u64,\n    pub instr_ptr: u64,\n    pub localsplus: u64,\n    pub owner: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__code_object {\n    pub size: u64,\n    pub filename: u64,\n    pub name: u64,\n    pub qualname: u64,\n    pub linetable: u64,\n    pub firstlineno: u64,\n    pub argcount: u64,\n    pub localsplusnames: u64,\n    pub localspluskinds: u64,\n    pub co_code_adaptive: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__pyobject {\n    pub size: u64,\n    pub ob_type: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__type_object {\n    pub size: u64,\n    pub tp_name: u64,\n    pub tp_repr: u64,\n    pub tp_flags: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__tuple_object {\n    pub size: u64,\n    pub ob_item: u64,\n    pub ob_size: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__list_object {\n    pub size: u64,\n    pub ob_item: u64,\n    pub ob_size: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__dict_object {\n    pub size: u64,\n    pub ma_keys: u64,\n    pub ma_values: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__float_object {\n    pub size: u64,\n    pub ob_fval: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__long_object {\n    pub size: u64,\n    pub lv_tag: u64,\n    pub ob_digit: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__bytes_object {\n    pub size: u64,\n    pub ob_size: u64,\n    pub ob_sval: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__unicode_object {\n    pub size: u64,\n    pub state: u64,\n    pub length: u64,\n    pub asciiobject_size: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_DebugOffsets__gc {\n    pub size: u64,\n    pub collecting: u64,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _reftracer_runtime_state {\n    pub tracer_func: PyRefTracer,\n    pub tracer_data: *mut ::std::os::raw::c_void,\n}\nimpl Default for _reftracer_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pyruntimestate {\n    pub debug_offsets: _Py_DebugOffsets,\n    pub _initialized: ::std::os::raw::c_int,\n    pub preinitializing: ::std::os::raw::c_int,\n    pub preinitialized: ::std::os::raw::c_int,\n    pub core_initialized: ::std::os::raw::c_int,\n    pub initialized: ::std::os::raw::c_int,\n    pub _finalizing: *mut PyThreadState,\n    pub _finalizing_id: ::std::os::raw::c_ulong,\n    pub interpreters: pyruntimestate_pyinterpreters,\n    pub main_thread: ::std::os::raw::c_ulong,\n    pub main_tstate: *mut PyThreadState,\n    pub xi: _xi_runtime_state,\n    pub allocators: _pymem_allocators,\n    pub obmalloc: _obmalloc_global_state,\n    pub pyhash_state: pyhash_runtime_state,\n    pub threads: _pythread_runtime_state,\n    pub signals: _signals_runtime_state,\n    pub autoTSSkey: Py_tss_t,\n    pub trashTSSkey: Py_tss_t,\n    pub orig_argv: PyWideStringList,\n    pub parser: _parser_runtime_state,\n    pub atexit: _atexit_runtime_state,\n    pub imports: _import_runtime_state,\n    pub ceval: _ceval_runtime_state,\n    pub gilstate: _gilstate_runtime_state,\n    pub getargs: _getargs_runtime_state,\n    pub fileutils: _fileutils_state,\n    pub faulthandler: _faulthandler_runtime_state,\n    pub tracemalloc: _tracemalloc_runtime_state,\n    pub ref_tracer: _reftracer_runtime_state,\n    pub stoptheworld_mutex: _PyRWMutex,\n    pub stoptheworld: _stoptheworld_state,\n    pub preconfig: PyPreConfig,\n    pub open_code_hook: Py_OpenCodeHookFunction,\n    pub open_code_userdata: *mut ::std::os::raw::c_void,\n    pub audit_hooks: pyruntimestate__bindgen_ty_1,\n    pub object_state: _py_object_runtime_state,\n    pub float_state: _Py_float_runtime_state,\n    pub unicode_state: _Py_unicode_runtime_state,\n    pub types: _types_runtime_state,\n    pub cached_objects: _Py_cached_objects,\n    pub static_objects: _Py_static_objects,\n    pub _main_interpreter: PyInterpreterState,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate_pyinterpreters {\n    pub mutex: PyMutex,\n    pub head: *mut PyInterpreterState,\n    pub main: *mut PyInterpreterState,\n    pub next_id: i64,\n}\nimpl Default for pyruntimestate_pyinterpreters {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate__bindgen_ty_1 {\n    pub mutex: PyMutex,\n    pub head: *mut _Py_AuditHookEntry,\n}\nimpl Default for pyruntimestate__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for pyruntimestate {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_log2_size: u8,\n    pub dk_log2_index_bytes: u8,\n    pub dk_kind: u8,\n    pub dk_version: u32,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictvalues {\n    pub capacity: u8,\n    pub size: u8,\n    pub embedded: u8,\n    pub valid: u8,\n    pub values: [*mut PyObject; 1usize],\n}\nimpl Default for _dictvalues {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _PyAsyncGenWrappedValue {\n    pub _address: u8,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyAsyncGenASend {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_3_7.rs",
    "content": "// Generated bindings for python v3.3.7\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_reserved: *mut ::std::os::raw::c_void,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_long,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = ::std::os::raw::c_uint;\npub type Py_UCS2 = ::std::os::raw::c_ushort;\npub type Py_UCS1 = ::std::os::raw::c_uchar;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,\n    pub __bindgen_padding_0: [u8; 3usize],\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fscodec_initialized: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub dict: *mut PyObject,\n    pub tick_counter: ::std::os::raw::c_int,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_long,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *mut ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *mut ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut ::std::os::raw::c_uchar,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_exc_type: *mut PyObject,\n    pub f_exc_value: *mut PyObject,\n    pub f_exc_traceback: *mut PyObject,\n    pub f_tstate: *mut PyThreadState,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _dictkeysobject {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_4_8.rs",
    "content": "// Generated bindings for python v3.4.8\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_reserved: *mut ::std::os::raw::c_void,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = ::std::os::raw::c_uint;\npub type Py_UCS2 = ::std::os::raw::c_ushort;\npub type Py_UCS1 = ::std::os::raw::c_uchar;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fscodec_initialized: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub builtins_copy: *mut PyObject,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_long,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *mut ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *mut ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut ::std::os::raw::c_uchar,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_exc_type: *mut PyObject,\n    pub f_exc_value: *mut PyObject,\n    pub f_exc_traceback: *mut PyObject,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _dictkeysobject {\n    pub _address: u8,\n}\n"
  },
  {
    "path": "src/python_bindings/v3_5_5.rs",
    "content": "// Generated bindings for python v3.5.5\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = ::std::os::raw::c_uint;\npub type Py_UCS2 = ::std::os::raw::c_ushort;\npub type Py_UCS1 = ::std::os::raw::c_uchar;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\npub type digit = u32;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fscodec_initialized: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub builtins_copy: *mut PyObject,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_long,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_wrapper: *mut PyObject,\n    pub in_coroutine_wrapper: ::std::os::raw::c_int,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *mut ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *mut ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut ::std::os::raw::c_uchar,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_exc_type: *mut PyObject,\n    pub f_exc_value: *mut PyObject,\n    pub f_exc_traceback: *mut PyObject,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut *mut PyObject,\n    ) -> *mut PyDictKeyEntry,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_entries: [PyDictKeyEntry; 1usize],\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v3_6_6.rs",
    "content": "// Generated bindings for python v3.6.6\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\n#[cfg(target_pointer_width = \"64\")]\npub type digit = u32;\n#[cfg(target_pointer_width = \"32\")]\npub type digit = u16;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _frame, arg2: ::std::os::raw::c_int) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fscodec_initialized: ::std::os::raw::c_int,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_long,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_wrapper: *mut PyObject,\n    pub in_coroutine_wrapper: ::std::os::raw::c_int,\n    pub _preserve_36_ABI_1: Py_ssize_t,\n    pub _preserve_36_ABI_2: [freefunc; 255usize],\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *mut ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *mut ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut ::std::os::raw::c_uchar,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n    pub co_extra: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_exc_type: *mut PyObject,\n    pub f_exc_value: *mut PyObject,\n    pub f_exc_traceback: *mut PyObject,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut *mut PyObject,\n        hashpos: *mut Py_ssize_t,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: _dictkeysobject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union _dictkeysobject__bindgen_ty_1 {\n    pub as_1: [i8; 8usize],\n    pub as_2: [i16; 4usize],\n    pub as_4: [i32; 2usize],\n    pub as_8: [i64; 1usize],\n    _bindgen_union_align: u64,\n}\nimpl Default for _dictkeysobject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v3_7_0.rs",
    "content": "// Generated bindings for python v3.7.0\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData)\n    }\n    #[inline]\n    pub unsafe fn as_ptr(&self) -> *const T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\nimpl<T> ::std::clone::Clone for __IncompleteArrayField<T> {\n    #[inline]\n    fn clone(&self) -> Self {\n        *self\n    }\n}\nimpl<T> ::std::marker::Copy for __IncompleteArrayField<T> {}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_size_t = ::std::os::raw::c_ulong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type printfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut FILE,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_print: printfunc,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\n#[cfg(target_pointer_width = \"64\")]\npub type digit = u32;\n#[cfg(target_pointer_width = \"32\")]\npub type digit = u16;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _frame, arg2: ::std::os::raw::c_int) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyCoreConfig {\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub ignore_environment: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub allocator: *const ::std::os::raw::c_char,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub show_alloc_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub coerce_c_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale_warn: ::std::os::raw::c_int,\n    pub utf8_mode: ::std::os::raw::c_int,\n    pub program_name: *mut wchar_t,\n    pub argc: ::std::os::raw::c_int,\n    pub argv: *mut *mut wchar_t,\n    pub program: *mut wchar_t,\n    pub nxoption: ::std::os::raw::c_int,\n    pub xoptions: *mut *mut wchar_t,\n    pub nwarnoption: ::std::os::raw::c_int,\n    pub warnoptions: *mut *mut wchar_t,\n    pub module_search_path_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub nmodule_search_path: ::std::os::raw::c_int,\n    pub module_search_paths: *mut *mut wchar_t,\n    pub executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub _disable_importlib: ::std::os::raw::c_int,\n}\nimpl Default for _PyCoreConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyMainInterpreterConfig {\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub argv: *mut PyObject,\n    pub executable: *mut PyObject,\n    pub prefix: *mut PyObject,\n    pub base_prefix: *mut PyObject,\n    pub exec_prefix: *mut PyObject,\n    pub base_exec_prefix: *mut PyObject,\n    pub warnoptions: *mut PyObject,\n    pub xoptions: *mut PyObject,\n    pub module_search_path: *mut PyObject,\n}\nimpl Default for _PyMainInterpreterConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub id_mutex: PyThread_type_lock,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub check_interval: ::std::os::raw::c_int,\n    pub num_threads: ::std::os::raw::c_long,\n    pub pythread_stacksize: usize,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fscodec_initialized: ::std::os::raw::c_int,\n    pub core_config: _PyCoreConfig,\n    pub config: _PyMainInterpreterConfig,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub pyexitfunc: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>,\n    pub pyexitmodule: *mut PyObject,\n    pub tstate_next_unique_id: u64,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyInterpreterState = _is;\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub stackcheck_counter: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub coroutine_wrapper: *mut PyObject,\n    pub in_coroutine_wrapper: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThreadState = _ts;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut Py_ssize_t,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n    pub co_extra: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut PyObject,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>,\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v3_8_0.rs",
    "content": "// Generated bindings for python v3.8.0b4\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\n\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        byte & mask == mask\n    }\n\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n\n        let bit_index = index % 8;\n        let mask = 1 << bit_index;\n\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        let mut val = 0;\n\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                val |= 1 << i;\n            }\n        }\n\n        val\n    }\n\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            self.set_bit(i + bit_offset, val_bit_is_set);\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData)\n    }\n    #[inline]\n    pub unsafe fn as_ptr(&self) -> *const T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\nimpl<T> ::std::clone::Clone for __IncompleteArrayField<T> {\n    #[inline]\n    fn clone(&self) -> Self {\n        *self\n    }\n}\nimpl<T> ::std::marker::Copy for __IncompleteArrayField<T> {}\npub type __int64_t = ::std::os::raw::c_longlong;\npub type __darwin_size_t = ::std::os::raw::c_ulong;\npub type __darwin_wchar_t = ::std::os::raw::c_int;\npub type __darwin_ssize_t = ::std::os::raw::c_long;\npub type __darwin_off_t = __int64_t;\npub type fpos_t = __darwin_off_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sbuf {\n    pub _base: *mut ::std::os::raw::c_uchar,\n    pub _size: ::std::os::raw::c_int,\n}\nimpl Default for __sbuf {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILEX {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __sFILE {\n    pub _p: *mut ::std::os::raw::c_uchar,\n    pub _r: ::std::os::raw::c_int,\n    pub _w: ::std::os::raw::c_int,\n    pub _flags: ::std::os::raw::c_short,\n    pub _file: ::std::os::raw::c_short,\n    pub _bf: __sbuf,\n    pub _lbfsize: ::std::os::raw::c_int,\n    pub _cookie: *mut ::std::os::raw::c_void,\n    pub _close: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub _read: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *mut ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _seek: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: fpos_t,\n            arg3: ::std::os::raw::c_int,\n        ) -> fpos_t,\n    >,\n    pub _write: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut ::std::os::raw::c_void,\n            arg2: *const ::std::os::raw::c_char,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n    pub _ub: __sbuf,\n    pub _extra: *mut __sFILEX,\n    pub _ur: ::std::os::raw::c_int,\n    pub _ubuf: [::std::os::raw::c_uchar; 3usize],\n    pub _nbuf: [::std::os::raw::c_uchar; 1usize],\n    pub _lb: __sbuf,\n    pub _blksize: ::std::os::raw::c_int,\n    pub _offset: fpos_t,\n}\nimpl Default for __sFILE {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type FILE = __sFILE;\npub type wchar_t = __darwin_wchar_t;\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut _typeobject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut _typeobject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _typeobject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n    pub tp_print: ::std::option::Option<\n        unsafe extern \"C\" fn(\n            arg1: *mut PyObject,\n            arg2: *mut FILE,\n            arg3: ::std::os::raw::c_int,\n        ) -> ::std::os::raw::c_int,\n    >,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n    pub __bindgen_align: [u32; 0usize],\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\n#[cfg(target_pointer_width = \"64\")]\npub type digit = u32;\n#[cfg(target_pointer_width = \"32\")]\npub type digit = u16;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_version: ::std::os::raw::c_int,\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub show_alloc_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub argv: PyWideStringList,\n    pub program_name: *mut wchar_t,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut _frame,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut _frame,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub stackcheck_counter: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyOpcache {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut Py_ssize_t,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_opcache_map: *mut ::std::os::raw::c_uchar,\n    pub co_opcache: *mut _PyOpcache,\n    pub co_opcache_flag: ::std::os::raw::c_int,\n    pub co_opcache_size: ::std::os::raw::c_uchar,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = u32;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut PyObject,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Debug)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>,\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut _frame, arg2: ::std::os::raw::c_int) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub finalizing: ::std::os::raw::c_int,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub check_interval: ::std::os::raw::c_int,\n    pub num_threads: ::std::os::raw::c_long,\n    pub pythread_stacksize: usize,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub fs_codec: _is__bindgen_ty_1,\n    pub config: PyConfig,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub dict: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub pyexitfunc: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>,\n    pub pyexitmodule: *mut PyObject,\n    pub tstate_next_unique_id: u64,\n    pub warnings: _warnings_runtime_state,\n    pub audit_hooks: *mut PyObject,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _is__bindgen_ty_1 {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _is__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n"
  },
  {
    "path": "src/python_bindings/v3_9_5.rs",
    "content": "// Generated bindings for python v3.9.5\n#![allow(dead_code)]\n#![allow(non_upper_case_globals)]\n#![allow(non_camel_case_types)]\n#![allow(non_snake_case)]\n#![allow(clippy::useless_transmute)]\n#![allow(clippy::default_trait_access)]\n#![allow(clippy::cast_lossless)]\n#![allow(clippy::trivially_copy_pass_by_ref)]\n#![allow(clippy::upper_case_acronyms)]\n\n/* automatically generated by rust-bindgen */\n\n#[repr(C)]\n#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]\npub struct __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    storage: Storage,\n    align: [Align; 0],\n}\nimpl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>\nwhere\n    Storage: AsRef<[u8]> + AsMut<[u8]>,\n{\n    #[inline]\n    pub fn new(storage: Storage) -> Self {\n        Self { storage, align: [] }\n    }\n    #[inline]\n    pub fn get_bit(&self, index: usize) -> bool {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = self.storage.as_ref()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        byte & mask == mask\n    }\n    #[inline]\n    pub fn set_bit(&mut self, index: usize, val: bool) {\n        debug_assert!(index / 8 < self.storage.as_ref().len());\n        let byte_index = index / 8;\n        let byte = &mut self.storage.as_mut()[byte_index];\n        let bit_index = if cfg!(target_endian = \"big\") {\n            7 - (index % 8)\n        } else {\n            index % 8\n        };\n        let mask = 1 << bit_index;\n        if val {\n            *byte |= mask;\n        } else {\n            *byte &= !mask;\n        }\n    }\n    #[inline]\n    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        let mut val = 0;\n        for i in 0..(bit_width as usize) {\n            if self.get_bit(i + bit_offset) {\n                let index = if cfg!(target_endian = \"big\") {\n                    bit_width as usize - 1 - i\n                } else {\n                    i\n                };\n                val |= 1 << index;\n            }\n        }\n        val\n    }\n    #[inline]\n    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {\n        debug_assert!(bit_width <= 64);\n        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());\n        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());\n        for i in 0..(bit_width as usize) {\n            let mask = 1 << i;\n            let val_bit_is_set = val & mask == mask;\n            let index = if cfg!(target_endian = \"big\") {\n                bit_width as usize - 1 - i\n            } else {\n                i\n            };\n            self.set_bit(index + bit_offset, val_bit_is_set);\n        }\n    }\n}\n#[repr(C)]\n#[derive(Default)]\npub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);\nimpl<T> __IncompleteArrayField<T> {\n    #[inline]\n    pub fn new() -> Self {\n        __IncompleteArrayField(::std::marker::PhantomData, [])\n    }\n    #[inline]\n    pub unsafe fn as_ptr(&self) -> *const T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {\n        ::std::mem::transmute(self)\n    }\n    #[inline]\n    pub unsafe fn as_slice(&self, len: usize) -> &[T] {\n        ::std::slice::from_raw_parts(self.as_ptr(), len)\n    }\n    #[inline]\n    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {\n        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)\n    }\n}\nimpl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {\n    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {\n        fmt.write_str(\"__IncompleteArrayField\")\n    }\n}\nimpl<T> ::std::clone::Clone for __IncompleteArrayField<T> {\n    #[inline]\n    fn clone(&self) -> Self {\n        Self::new()\n    }\n}\npub type __uint8_t = ::std::os::raw::c_uchar;\npub type __uint16_t = ::std::os::raw::c_ushort;\npub type __uint32_t = ::std::os::raw::c_uint;\npub type __int64_t = ::std::os::raw::c_long;\npub type __uint64_t = ::std::os::raw::c_ulong;\npub type __ssize_t = ::std::os::raw::c_long;\npub type wchar_t = ::std::os::raw::c_int;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_internal_list {\n    pub __prev: *mut __pthread_internal_list,\n    pub __next: *mut __pthread_internal_list,\n}\nimpl Default for __pthread_internal_list {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type __pthread_list_t = __pthread_internal_list;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct __pthread_mutex_s {\n    pub __lock: ::std::os::raw::c_int,\n    pub __count: ::std::os::raw::c_uint,\n    pub __owner: ::std::os::raw::c_int,\n    pub __nusers: ::std::os::raw::c_uint,\n    pub __kind: ::std::os::raw::c_int,\n    pub __spins: ::std::os::raw::c_short,\n    pub __elision: ::std::os::raw::c_short,\n    pub __list: __pthread_list_t,\n}\nimpl Default for __pthread_mutex_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct __pthread_cond_s {\n    pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1,\n    pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2,\n    pub __g_refs: [::std::os::raw::c_uint; 2usize],\n    pub __g_size: [::std::os::raw::c_uint; 2usize],\n    pub __g1_orig_size: ::std::os::raw::c_uint,\n    pub __wrefs: ::std::os::raw::c_uint,\n    pub __g_signals: [::std::os::raw::c_uint; 2usize],\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __pthread_cond_s__bindgen_ty_1 {\n    pub __wseq: ::std::os::raw::c_ulonglong,\n    pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1,\n    _bindgen_union_align: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __pthread_cond_s__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union __pthread_cond_s__bindgen_ty_2 {\n    pub __g1_start: ::std::os::raw::c_ulonglong,\n    pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1,\n    _bindgen_union_align: u64,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 {\n    pub __low: ::std::os::raw::c_uint,\n    pub __high: ::std::os::raw::c_uint,\n}\nimpl Default for __pthread_cond_s__bindgen_ty_2 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for __pthread_cond_s {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type pthread_key_t = ::std::os::raw::c_uint;\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_mutex_t {\n    pub __data: __pthread_mutex_s,\n    pub __size: [::std::os::raw::c_char; 40usize],\n    pub __align: ::std::os::raw::c_long,\n    _bindgen_union_align: [u64; 5usize],\n}\nimpl Default for pthread_mutex_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union pthread_cond_t {\n    pub __data: __pthread_cond_s,\n    pub __size: [::std::os::raw::c_char; 48usize],\n    pub __align: ::std::os::raw::c_longlong,\n    _bindgen_union_align: [u64; 6usize],\n}\nimpl Default for pthread_cond_t {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_ssize_t = isize;\npub type Py_hash_t = Py_ssize_t;\npub type PyTypeObject = _typeobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _object {\n    pub ob_refcnt: Py_ssize_t,\n    pub ob_type: *mut PyTypeObject,\n}\nimpl Default for _object {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyObject = _object;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyVarObject {\n    pub ob_base: PyObject,\n    pub ob_size: Py_ssize_t,\n}\nimpl Default for PyVarObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type unaryfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type binaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type ternaryfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type inquiry =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> ::std::os::raw::c_int>;\npub type lenfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_ssize_t>;\npub type ssizeargfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\npub type ssizeobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: Py_ssize_t,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjargproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type objobjproc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> ::std::os::raw::c_int,\n>;\npub type visitproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type traverseproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: visitproc,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub type freefunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>;\npub type destructor = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>;\npub type getattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_char) -> *mut PyObject,\n>;\npub type getattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\npub type setattrfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut ::std::os::raw::c_char,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type setattrofunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type reprfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type hashfunc = ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> Py_hash_t>;\npub type richcmpfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\npub type getiterfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type iternextfunc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject) -> *mut PyObject>;\npub type descrgetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type descrsetfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type initproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\npub type newfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyTypeObject,\n        arg2: *mut PyObject,\n        arg3: *mut PyObject,\n    ) -> *mut PyObject,\n>;\npub type allocfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyTypeObject, arg2: Py_ssize_t) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct bufferinfo {\n    pub buf: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub len: Py_ssize_t,\n    pub itemsize: Py_ssize_t,\n    pub readonly: ::std::os::raw::c_int,\n    pub ndim: ::std::os::raw::c_int,\n    pub format: *mut ::std::os::raw::c_char,\n    pub shape: *mut Py_ssize_t,\n    pub strides: *mut Py_ssize_t,\n    pub suboffsets: *mut Py_ssize_t,\n    pub internal: *mut ::std::os::raw::c_void,\n}\nimpl Default for bufferinfo {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_buffer = bufferinfo;\npub type getbufferproc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut Py_buffer,\n        arg3: ::std::os::raw::c_int,\n    ) -> ::std::os::raw::c_int,\n>;\npub type releasebufferproc =\n    ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut Py_buffer)>;\npub type vectorcallfunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        callable: *mut PyObject,\n        args: *const *mut PyObject,\n        nargsf: usize,\n        kwnames: *mut PyObject,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyNumberMethods {\n    pub nb_add: binaryfunc,\n    pub nb_subtract: binaryfunc,\n    pub nb_multiply: binaryfunc,\n    pub nb_remainder: binaryfunc,\n    pub nb_divmod: binaryfunc,\n    pub nb_power: ternaryfunc,\n    pub nb_negative: unaryfunc,\n    pub nb_positive: unaryfunc,\n    pub nb_absolute: unaryfunc,\n    pub nb_bool: inquiry,\n    pub nb_invert: unaryfunc,\n    pub nb_lshift: binaryfunc,\n    pub nb_rshift: binaryfunc,\n    pub nb_and: binaryfunc,\n    pub nb_xor: binaryfunc,\n    pub nb_or: binaryfunc,\n    pub nb_int: unaryfunc,\n    pub nb_reserved: *mut ::std::os::raw::c_void,\n    pub nb_float: unaryfunc,\n    pub nb_inplace_add: binaryfunc,\n    pub nb_inplace_subtract: binaryfunc,\n    pub nb_inplace_multiply: binaryfunc,\n    pub nb_inplace_remainder: binaryfunc,\n    pub nb_inplace_power: ternaryfunc,\n    pub nb_inplace_lshift: binaryfunc,\n    pub nb_inplace_rshift: binaryfunc,\n    pub nb_inplace_and: binaryfunc,\n    pub nb_inplace_xor: binaryfunc,\n    pub nb_inplace_or: binaryfunc,\n    pub nb_floor_divide: binaryfunc,\n    pub nb_true_divide: binaryfunc,\n    pub nb_inplace_floor_divide: binaryfunc,\n    pub nb_inplace_true_divide: binaryfunc,\n    pub nb_index: unaryfunc,\n    pub nb_matrix_multiply: binaryfunc,\n    pub nb_inplace_matrix_multiply: binaryfunc,\n}\nimpl Default for PyNumberMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PySequenceMethods {\n    pub sq_length: lenfunc,\n    pub sq_concat: binaryfunc,\n    pub sq_repeat: ssizeargfunc,\n    pub sq_item: ssizeargfunc,\n    pub was_sq_slice: *mut ::std::os::raw::c_void,\n    pub sq_ass_item: ssizeobjargproc,\n    pub was_sq_ass_slice: *mut ::std::os::raw::c_void,\n    pub sq_contains: objobjproc,\n    pub sq_inplace_concat: binaryfunc,\n    pub sq_inplace_repeat: ssizeargfunc,\n}\nimpl Default for PySequenceMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMappingMethods {\n    pub mp_length: lenfunc,\n    pub mp_subscript: binaryfunc,\n    pub mp_ass_subscript: objobjargproc,\n}\nimpl Default for PyMappingMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyAsyncMethods {\n    pub am_await: unaryfunc,\n    pub am_aiter: unaryfunc,\n    pub am_anext: unaryfunc,\n}\nimpl Default for PyAsyncMethods {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBufferProcs {\n    pub bf_getbuffer: getbufferproc,\n    pub bf_releasebuffer: releasebufferproc,\n}\nimpl Default for PyBufferProcs {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _typeobject {\n    pub ob_base: PyVarObject,\n    pub tp_name: *const ::std::os::raw::c_char,\n    pub tp_basicsize: Py_ssize_t,\n    pub tp_itemsize: Py_ssize_t,\n    pub tp_dealloc: destructor,\n    pub tp_vectorcall_offset: Py_ssize_t,\n    pub tp_getattr: getattrfunc,\n    pub tp_setattr: setattrfunc,\n    pub tp_as_async: *mut PyAsyncMethods,\n    pub tp_repr: reprfunc,\n    pub tp_as_number: *mut PyNumberMethods,\n    pub tp_as_sequence: *mut PySequenceMethods,\n    pub tp_as_mapping: *mut PyMappingMethods,\n    pub tp_hash: hashfunc,\n    pub tp_call: ternaryfunc,\n    pub tp_str: reprfunc,\n    pub tp_getattro: getattrofunc,\n    pub tp_setattro: setattrofunc,\n    pub tp_as_buffer: *mut PyBufferProcs,\n    pub tp_flags: ::std::os::raw::c_ulong,\n    pub tp_doc: *const ::std::os::raw::c_char,\n    pub tp_traverse: traverseproc,\n    pub tp_clear: inquiry,\n    pub tp_richcompare: richcmpfunc,\n    pub tp_weaklistoffset: Py_ssize_t,\n    pub tp_iter: getiterfunc,\n    pub tp_iternext: iternextfunc,\n    pub tp_methods: *mut PyMethodDef,\n    pub tp_members: *mut PyMemberDef,\n    pub tp_getset: *mut PyGetSetDef,\n    pub tp_base: *mut _typeobject,\n    pub tp_dict: *mut PyObject,\n    pub tp_descr_get: descrgetfunc,\n    pub tp_descr_set: descrsetfunc,\n    pub tp_dictoffset: Py_ssize_t,\n    pub tp_init: initproc,\n    pub tp_alloc: allocfunc,\n    pub tp_new: newfunc,\n    pub tp_free: freefunc,\n    pub tp_is_gc: inquiry,\n    pub tp_bases: *mut PyObject,\n    pub tp_mro: *mut PyObject,\n    pub tp_cache: *mut PyObject,\n    pub tp_subclasses: *mut PyObject,\n    pub tp_weaklist: *mut PyObject,\n    pub tp_del: destructor,\n    pub tp_version_tag: ::std::os::raw::c_uint,\n    pub tp_finalize: destructor,\n    pub tp_vectorcall: vectorcallfunc,\n}\nimpl Default for _typeobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyBytesObject {\n    pub ob_base: PyVarObject,\n    pub ob_shash: Py_hash_t,\n    pub ob_sval: [::std::os::raw::c_char; 1usize],\n}\nimpl Default for PyBytesObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_UCS4 = u32;\npub type Py_UCS2 = u16;\npub type Py_UCS1 = u8;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyASCIIObject {\n    pub ob_base: PyObject,\n    pub length: Py_ssize_t,\n    pub hash: Py_hash_t,\n    pub state: PyASCIIObject__bindgen_ty_1,\n    pub wstr: *mut wchar_t,\n}\n#[repr(C)]\n#[repr(align(4))]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyASCIIObject__bindgen_ty_1 {\n    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u8>,\n}\nimpl PyASCIIObject__bindgen_ty_1 {\n    #[inline]\n    pub fn interned(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u32) }\n    }\n    #[inline]\n    pub fn set_interned(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(0usize, 2u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn kind(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 3u8) as u32) }\n    }\n    #[inline]\n    pub fn set_kind(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(2usize, 3u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn compact(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_compact(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(5usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ascii(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(6usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ascii(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(6usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn ready(&self) -> ::std::os::raw::c_uint {\n        unsafe { ::std::mem::transmute(self._bitfield_1.get(7usize, 1u8) as u32) }\n    }\n    #[inline]\n    pub fn set_ready(&mut self, val: ::std::os::raw::c_uint) {\n        unsafe {\n            let val: u32 = ::std::mem::transmute(val);\n            self._bitfield_1.set(7usize, 1u8, val as u64)\n        }\n    }\n    #[inline]\n    pub fn new_bitfield_1(\n        interned: ::std::os::raw::c_uint,\n        kind: ::std::os::raw::c_uint,\n        compact: ::std::os::raw::c_uint,\n        ascii: ::std::os::raw::c_uint,\n        ready: ::std::os::raw::c_uint,\n    ) -> __BindgenBitfieldUnit<[u8; 4usize], u8> {\n        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u8> =\n            Default::default();\n        __bindgen_bitfield_unit.set(0usize, 2u8, {\n            let interned: u32 = unsafe { ::std::mem::transmute(interned) };\n            interned as u64\n        });\n        __bindgen_bitfield_unit.set(2usize, 3u8, {\n            let kind: u32 = unsafe { ::std::mem::transmute(kind) };\n            kind as u64\n        });\n        __bindgen_bitfield_unit.set(5usize, 1u8, {\n            let compact: u32 = unsafe { ::std::mem::transmute(compact) };\n            compact as u64\n        });\n        __bindgen_bitfield_unit.set(6usize, 1u8, {\n            let ascii: u32 = unsafe { ::std::mem::transmute(ascii) };\n            ascii as u64\n        });\n        __bindgen_bitfield_unit.set(7usize, 1u8, {\n            let ready: u32 = unsafe { ::std::mem::transmute(ready) };\n            ready as u64\n        });\n        __bindgen_bitfield_unit\n    }\n}\nimpl Default for PyASCIIObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCompactUnicodeObject {\n    pub _base: PyASCIIObject,\n    pub utf8_length: Py_ssize_t,\n    pub utf8: *mut ::std::os::raw::c_char,\n    pub wstr_length: Py_ssize_t,\n}\nimpl Default for PyCompactUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct PyUnicodeObject {\n    pub _base: PyCompactUnicodeObject,\n    pub data: PyUnicodeObject__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub union PyUnicodeObject__bindgen_ty_1 {\n    pub any: *mut ::std::os::raw::c_void,\n    pub latin1: *mut Py_UCS1,\n    pub ucs2: *mut Py_UCS2,\n    pub ucs4: *mut Py_UCS4,\n    _bindgen_union_align: u64,\n}\nimpl Default for PyUnicodeObject__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for PyUnicodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyLongObject = _longobject;\n#[cfg(target_pointer_width = \"64\")]\npub type digit = u32;\n#[cfg(target_pointer_width = \"32\")]\npub type digit = u16;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _longobject {\n    pub ob_base: PyVarObject,\n    pub ob_digit: [digit; 1usize],\n}\nimpl Default for _longobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyFloatObject {\n    pub ob_base: PyObject,\n    pub ob_fval: f64,\n}\nimpl Default for PyFloatObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyTupleObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: [*mut PyObject; 1usize],\n}\nimpl Default for PyTupleObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyListObject {\n    pub ob_base: PyVarObject,\n    pub ob_item: *mut *mut PyObject,\n    pub allocated: Py_ssize_t,\n}\nimpl Default for PyListObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyDictKeysObject = _dictkeysobject;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictObject {\n    pub ob_base: PyObject,\n    pub ma_used: Py_ssize_t,\n    pub ma_version_tag: u64,\n    pub ma_keys: *mut PyDictKeysObject,\n    pub ma_values: *mut *mut PyObject,\n}\nimpl Default for PyDictObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyCFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut PyObject) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMethodDef {\n    pub ml_name: *const ::std::os::raw::c_char,\n    pub ml_meth: PyCFunction,\n    pub ml_flags: ::std::os::raw::c_int,\n    pub ml_doc: *const ::std::os::raw::c_char,\n}\nimpl Default for PyMethodDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_OpenCodeHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _PyOpcache {\n    _unused: [u8; 0],\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyCodeObject {\n    pub ob_base: PyObject,\n    pub co_argcount: ::std::os::raw::c_int,\n    pub co_posonlyargcount: ::std::os::raw::c_int,\n    pub co_kwonlyargcount: ::std::os::raw::c_int,\n    pub co_nlocals: ::std::os::raw::c_int,\n    pub co_stacksize: ::std::os::raw::c_int,\n    pub co_flags: ::std::os::raw::c_int,\n    pub co_firstlineno: ::std::os::raw::c_int,\n    pub co_code: *mut PyObject,\n    pub co_consts: *mut PyObject,\n    pub co_names: *mut PyObject,\n    pub co_varnames: *mut PyObject,\n    pub co_freevars: *mut PyObject,\n    pub co_cellvars: *mut PyObject,\n    pub co_cell2arg: *mut Py_ssize_t,\n    pub co_filename: *mut PyObject,\n    pub co_name: *mut PyObject,\n    pub co_lnotab: *mut PyObject,\n    pub co_zombieframe: *mut ::std::os::raw::c_void,\n    pub co_weakreflist: *mut PyObject,\n    pub co_extra: *mut ::std::os::raw::c_void,\n    pub co_opcache_map: *mut ::std::os::raw::c_uchar,\n    pub co_opcache: *mut _PyOpcache,\n    pub co_opcache_flag: ::std::os::raw::c_int,\n    pub co_opcache_size: ::std::os::raw::c_uchar,\n}\nimpl Default for PyCodeObject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type PyFrameObject = _frame;\npub type PyThreadState = _ts;\npub type PyInterpreterState = _is;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyWideStringList {\n    pub length: Py_ssize_t,\n    pub items: *mut *mut wchar_t,\n}\nimpl Default for PyWideStringList {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyPreConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub configure_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale: ::std::os::raw::c_int,\n    pub coerce_c_locale_warn: ::std::os::raw::c_int,\n    pub utf8_mode: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub allocator: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyConfig {\n    pub _config_init: ::std::os::raw::c_int,\n    pub isolated: ::std::os::raw::c_int,\n    pub use_environment: ::std::os::raw::c_int,\n    pub dev_mode: ::std::os::raw::c_int,\n    pub install_signal_handlers: ::std::os::raw::c_int,\n    pub use_hash_seed: ::std::os::raw::c_int,\n    pub hash_seed: ::std::os::raw::c_ulong,\n    pub faulthandler: ::std::os::raw::c_int,\n    pub _use_peg_parser: ::std::os::raw::c_int,\n    pub tracemalloc: ::std::os::raw::c_int,\n    pub import_time: ::std::os::raw::c_int,\n    pub show_ref_count: ::std::os::raw::c_int,\n    pub dump_refs: ::std::os::raw::c_int,\n    pub malloc_stats: ::std::os::raw::c_int,\n    pub filesystem_encoding: *mut wchar_t,\n    pub filesystem_errors: *mut wchar_t,\n    pub pycache_prefix: *mut wchar_t,\n    pub parse_argv: ::std::os::raw::c_int,\n    pub argv: PyWideStringList,\n    pub program_name: *mut wchar_t,\n    pub xoptions: PyWideStringList,\n    pub warnoptions: PyWideStringList,\n    pub site_import: ::std::os::raw::c_int,\n    pub bytes_warning: ::std::os::raw::c_int,\n    pub inspect: ::std::os::raw::c_int,\n    pub interactive: ::std::os::raw::c_int,\n    pub optimization_level: ::std::os::raw::c_int,\n    pub parser_debug: ::std::os::raw::c_int,\n    pub write_bytecode: ::std::os::raw::c_int,\n    pub verbose: ::std::os::raw::c_int,\n    pub quiet: ::std::os::raw::c_int,\n    pub user_site_directory: ::std::os::raw::c_int,\n    pub configure_c_stdio: ::std::os::raw::c_int,\n    pub buffered_stdio: ::std::os::raw::c_int,\n    pub stdio_encoding: *mut wchar_t,\n    pub stdio_errors: *mut wchar_t,\n    pub check_hash_pycs_mode: *mut wchar_t,\n    pub pathconfig_warnings: ::std::os::raw::c_int,\n    pub pythonpath_env: *mut wchar_t,\n    pub home: *mut wchar_t,\n    pub module_search_paths_set: ::std::os::raw::c_int,\n    pub module_search_paths: PyWideStringList,\n    pub executable: *mut wchar_t,\n    pub base_executable: *mut wchar_t,\n    pub prefix: *mut wchar_t,\n    pub base_prefix: *mut wchar_t,\n    pub exec_prefix: *mut wchar_t,\n    pub base_exec_prefix: *mut wchar_t,\n    pub platlibdir: *mut wchar_t,\n    pub skip_source_first_line: ::std::os::raw::c_int,\n    pub run_command: *mut wchar_t,\n    pub run_module: *mut wchar_t,\n    pub run_filename: *mut wchar_t,\n    pub _install_importlib: ::std::os::raw::c_int,\n    pub _init_main: ::std::os::raw::c_int,\n    pub _isolated_interpreter: ::std::os::raw::c_int,\n    pub _orig_argv: PyWideStringList,\n}\nimpl Default for PyConfig {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type Py_tracefunc = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyFrameObject,\n        arg3: ::std::os::raw::c_int,\n        arg4: *mut PyObject,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _err_stackitem {\n    pub exc_type: *mut PyObject,\n    pub exc_value: *mut PyObject,\n    pub exc_traceback: *mut PyObject,\n    pub previous_item: *mut _err_stackitem,\n}\nimpl Default for _err_stackitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyErr_StackItem = _err_stackitem;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ts {\n    pub prev: *mut _ts,\n    pub next: *mut _ts,\n    pub interp: *mut PyInterpreterState,\n    pub frame: *mut PyFrameObject,\n    pub recursion_depth: ::std::os::raw::c_int,\n    pub overflowed: ::std::os::raw::c_char,\n    pub recursion_critical: ::std::os::raw::c_char,\n    pub stackcheck_counter: ::std::os::raw::c_int,\n    pub tracing: ::std::os::raw::c_int,\n    pub use_tracing: ::std::os::raw::c_int,\n    pub c_profilefunc: Py_tracefunc,\n    pub c_tracefunc: Py_tracefunc,\n    pub c_profileobj: *mut PyObject,\n    pub c_traceobj: *mut PyObject,\n    pub curexc_type: *mut PyObject,\n    pub curexc_value: *mut PyObject,\n    pub curexc_traceback: *mut PyObject,\n    pub exc_state: _PyErr_StackItem,\n    pub exc_info: *mut _PyErr_StackItem,\n    pub dict: *mut PyObject,\n    pub gilstate_counter: ::std::os::raw::c_int,\n    pub async_exc: *mut PyObject,\n    pub thread_id: ::std::os::raw::c_ulong,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub trash_delete_later: *mut PyObject,\n    pub on_delete: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n    pub on_delete_data: *mut ::std::os::raw::c_void,\n    pub coroutine_origin_tracking_depth: ::std::os::raw::c_int,\n    pub async_gen_firstiter: *mut PyObject,\n    pub async_gen_finalizer: *mut PyObject,\n    pub context: *mut PyObject,\n    pub context_ver: u64,\n    pub id: u64,\n}\nimpl Default for _ts {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type _PyFrameEvalFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        tstate: *mut PyThreadState,\n        arg1: *mut PyFrameObject,\n        arg2: ::std::os::raw::c_int,\n    ) -> *mut PyObject,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xid {\n    pub data: *mut ::std::os::raw::c_void,\n    pub obj: *mut PyObject,\n    pub interp: i64,\n    pub new_object: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut _xid) -> *mut PyObject>,\n    pub free: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void)>,\n}\nimpl Default for _xid {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type crossinterpdatafunc = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut _xid) -> ::std::os::raw::c_int,\n>;\npub type getter = ::std::option::Option<\n    unsafe extern \"C\" fn(arg1: *mut PyObject, arg2: *mut ::std::os::raw::c_void) -> *mut PyObject,\n>;\npub type setter = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *mut PyObject,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyGetSetDef {\n    pub name: *const ::std::os::raw::c_char,\n    pub get: getter,\n    pub set: setter,\n    pub doc: *const ::std::os::raw::c_char,\n    pub closure: *mut ::std::os::raw::c_void,\n}\nimpl Default for PyGetSetDef {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyMemberDef {\n    _unused: [u8; 0],\n}\npub type PyThread_type_lock = *mut ::std::os::raw::c_void;\npub type Py_tss_t = _Py_tss_t;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_tss_t {\n    pub _is_initialized: ::std::os::raw::c_int,\n    pub _key: pthread_key_t,\n}\npub type Py_AuditHookFunction = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        arg1: *const ::std::os::raw::c_char,\n        arg2: *mut PyObject,\n        arg3: *mut ::std::os::raw::c_void,\n    ) -> ::std::os::raw::c_int,\n>;\npub const _Py_error_handler__Py_ERROR_UNKNOWN: _Py_error_handler = 0;\npub const _Py_error_handler__Py_ERROR_STRICT: _Py_error_handler = 1;\npub const _Py_error_handler__Py_ERROR_SURROGATEESCAPE: _Py_error_handler = 2;\npub const _Py_error_handler__Py_ERROR_REPLACE: _Py_error_handler = 3;\npub const _Py_error_handler__Py_ERROR_IGNORE: _Py_error_handler = 4;\npub const _Py_error_handler__Py_ERROR_BACKSLASHREPLACE: _Py_error_handler = 5;\npub const _Py_error_handler__Py_ERROR_SURROGATEPASS: _Py_error_handler = 6;\npub const _Py_error_handler__Py_ERROR_XMLCHARREFREPLACE: _Py_error_handler = 7;\npub const _Py_error_handler__Py_ERROR_OTHER: _Py_error_handler = 8;\npub type _Py_error_handler = u32;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyTryBlock {\n    pub b_type: ::std::os::raw::c_int,\n    pub b_handler: ::std::os::raw::c_int,\n    pub b_level: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _frame {\n    pub ob_base: PyVarObject,\n    pub f_back: *mut _frame,\n    pub f_code: *mut PyCodeObject,\n    pub f_builtins: *mut PyObject,\n    pub f_globals: *mut PyObject,\n    pub f_locals: *mut PyObject,\n    pub f_valuestack: *mut *mut PyObject,\n    pub f_stacktop: *mut *mut PyObject,\n    pub f_trace: *mut PyObject,\n    pub f_trace_lines: ::std::os::raw::c_char,\n    pub f_trace_opcodes: ::std::os::raw::c_char,\n    pub f_gen: *mut PyObject,\n    pub f_lasti: ::std::os::raw::c_int,\n    pub f_lineno: ::std::os::raw::c_int,\n    pub f_iblock: ::std::os::raw::c_int,\n    pub f_executing: ::std::os::raw::c_char,\n    pub f_blockstack: [PyTryBlock; 20usize],\n    pub f_localsplus: [*mut PyObject; 1usize],\n}\nimpl Default for _frame {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct PyDictKeyEntry {\n    pub me_hash: Py_hash_t,\n    pub me_key: *mut PyObject,\n    pub me_value: *mut PyObject,\n}\nimpl Default for PyDictKeyEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type dict_lookup_func = ::std::option::Option<\n    unsafe extern \"C\" fn(\n        mp: *mut PyDictObject,\n        key: *mut PyObject,\n        hash: Py_hash_t,\n        value_addr: *mut *mut PyObject,\n    ) -> Py_ssize_t,\n>;\n#[repr(C)]\n#[derive(Debug)]\npub struct _dictkeysobject {\n    pub dk_refcnt: Py_ssize_t,\n    pub dk_size: Py_ssize_t,\n    pub dk_lookup: dict_lookup_func,\n    pub dk_usable: Py_ssize_t,\n    pub dk_nentries: Py_ssize_t,\n    pub dk_indices: __IncompleteArrayField<::std::os::raw::c_char>,\n}\nimpl Default for _dictkeysobject {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\npub type atomic_int = u32;\npub type atomic_uintptr_t = usize;\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_address {\n    pub _value: atomic_uintptr_t,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _Py_atomic_int {\n    pub _value: atomic_int,\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _gil_runtime_state {\n    pub interval: ::std::os::raw::c_ulong,\n    pub last_holder: _Py_atomic_address,\n    pub locked: _Py_atomic_int,\n    pub switch_number: ::std::os::raw::c_ulong,\n    pub cond: pthread_cond_t,\n    pub mutex: pthread_mutex_t,\n    pub switch_cond: pthread_cond_t,\n    pub switch_mutex: pthread_mutex_t,\n}\nimpl Default for _gil_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _ceval_runtime_state {\n    pub signals_pending: _Py_atomic_int,\n    pub gil: _gil_runtime_state,\n}\nimpl Default for _ceval_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gilstate_runtime_state {\n    pub check_enabled: ::std::os::raw::c_int,\n    pub tstate_current: _Py_atomic_address,\n    pub autoInterpreterState: *mut PyInterpreterState,\n    pub autoTSSkey: Py_tss_t,\n}\nimpl Default for _gilstate_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_AuditHookEntry {\n    pub next: *mut _Py_AuditHookEntry,\n    pub hookCFunction: Py_AuditHookFunction,\n    pub userData: *mut ::std::os::raw::c_void,\n}\nimpl Default for _Py_AuditHookEntry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct pyruntimestate {\n    pub preinitializing: ::std::os::raw::c_int,\n    pub preinitialized: ::std::os::raw::c_int,\n    pub core_initialized: ::std::os::raw::c_int,\n    pub initialized: ::std::os::raw::c_int,\n    pub _finalizing: _Py_atomic_address,\n    pub interpreters: pyruntimestate_pyinterpreters,\n    pub xidregistry: pyruntimestate__xidregistry,\n    pub main_thread: ::std::os::raw::c_ulong,\n    pub exitfuncs: [::std::option::Option<unsafe extern \"C\" fn()>; 32usize],\n    pub nexitfuncs: ::std::os::raw::c_int,\n    pub ceval: _ceval_runtime_state,\n    pub gilstate: _gilstate_runtime_state,\n    pub preconfig: PyPreConfig,\n    pub open_code_hook: Py_OpenCodeHookFunction,\n    pub open_code_userdata: *mut ::std::os::raw::c_void,\n    pub audit_hook_head: *mut _Py_AuditHookEntry,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate_pyinterpreters {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut PyInterpreterState,\n    pub main: *mut PyInterpreterState,\n    pub next_id: i64,\n}\nimpl Default for pyruntimestate_pyinterpreters {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct pyruntimestate__xidregistry {\n    pub mutex: PyThread_type_lock,\n    pub head: *mut _xidregitem,\n}\nimpl Default for pyruntimestate__xidregistry {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for pyruntimestate {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct PyGC_Head {\n    pub _gc_next: usize,\n    pub _gc_prev: usize,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation {\n    pub head: PyGC_Head,\n    pub threshold: ::std::os::raw::c_int,\n    pub count: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct gc_generation_stats {\n    pub collections: Py_ssize_t,\n    pub collected: Py_ssize_t,\n    pub uncollectable: Py_ssize_t,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _gc_runtime_state {\n    pub trash_delete_later: *mut PyObject,\n    pub trash_delete_nesting: ::std::os::raw::c_int,\n    pub enabled: ::std::os::raw::c_int,\n    pub debug: ::std::os::raw::c_int,\n    pub generations: [gc_generation; 3usize],\n    pub generation0: *mut PyGC_Head,\n    pub permanent_generation: gc_generation,\n    pub generation_stats: [gc_generation_stats; 3usize],\n    pub collecting: ::std::os::raw::c_int,\n    pub garbage: *mut PyObject,\n    pub callbacks: *mut PyObject,\n    pub long_lived_total: Py_ssize_t,\n    pub long_lived_pending: Py_ssize_t,\n}\nimpl Default for _gc_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _warnings_runtime_state {\n    pub filters: *mut PyObject,\n    pub once_registry: *mut PyObject,\n    pub default_action: *mut PyObject,\n    pub filters_version: ::std::os::raw::c_long,\n}\nimpl Default for _warnings_runtime_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls {\n    pub lock: PyThread_type_lock,\n    pub calls_to_do: _Py_atomic_int,\n    pub async_exc: ::std::os::raw::c_int,\n    pub calls: [_pending_calls__bindgen_ty_1; 32usize],\n    pub first: ::std::os::raw::c_int,\n    pub last: ::std::os::raw::c_int,\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _pending_calls__bindgen_ty_1 {\n    pub func: ::std::option::Option<\n        unsafe extern \"C\" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,\n    >,\n    pub arg: *mut ::std::os::raw::c_void,\n}\nimpl Default for _pending_calls__bindgen_ty_1 {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\nimpl Default for _pending_calls {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _ceval_state {\n    pub recursion_limit: ::std::os::raw::c_int,\n    pub tracing_possible: ::std::os::raw::c_int,\n    pub eval_breaker: _Py_atomic_int,\n    pub gil_drop_request: _Py_atomic_int,\n    pub pending: _pending_calls,\n}\nimpl Default for _ceval_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_fs_codec {\n    pub encoding: *mut ::std::os::raw::c_char,\n    pub utf8: ::std::os::raw::c_int,\n    pub errors: *mut ::std::os::raw::c_char,\n    pub error_handler: _Py_error_handler,\n}\nimpl Default for _Py_unicode_fs_codec {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _Py_unicode_state {\n    pub fs_codec: _Py_unicode_fs_codec,\n}\nimpl Default for _Py_unicode_state {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Copy, Clone)]\npub struct _is {\n    pub next: *mut _is,\n    pub tstate_head: *mut _ts,\n    pub runtime: *mut pyruntimestate,\n    pub id: i64,\n    pub id_refcount: i64,\n    pub requires_idref: ::std::os::raw::c_int,\n    pub id_mutex: PyThread_type_lock,\n    pub finalizing: ::std::os::raw::c_int,\n    pub ceval: _ceval_state,\n    pub gc: _gc_runtime_state,\n    pub modules: *mut PyObject,\n    pub modules_by_index: *mut PyObject,\n    pub sysdict: *mut PyObject,\n    pub builtins: *mut PyObject,\n    pub importlib: *mut PyObject,\n    pub num_threads: ::std::os::raw::c_long,\n    pub pythread_stacksize: usize,\n    pub codec_search_path: *mut PyObject,\n    pub codec_search_cache: *mut PyObject,\n    pub codec_error_registry: *mut PyObject,\n    pub codecs_initialized: ::std::os::raw::c_int,\n    pub unicode: _Py_unicode_state,\n    pub config: PyConfig,\n    pub dlopenflags: ::std::os::raw::c_int,\n    pub dict: *mut PyObject,\n    pub builtins_copy: *mut PyObject,\n    pub import_func: *mut PyObject,\n    pub eval_frame: _PyFrameEvalFunction,\n    pub co_extra_user_count: Py_ssize_t,\n    pub co_extra_freefuncs: [freefunc; 255usize],\n    pub before_forkers: *mut PyObject,\n    pub after_forkers_parent: *mut PyObject,\n    pub after_forkers_child: *mut PyObject,\n    pub pyexitfunc: ::std::option::Option<unsafe extern \"C\" fn(arg1: *mut PyObject)>,\n    pub pyexitmodule: *mut PyObject,\n    pub tstate_next_unique_id: u64,\n    pub warnings: _warnings_runtime_state,\n    pub audit_hooks: *mut PyObject,\n    pub parser: _is__bindgen_ty_1,\n    pub small_ints: [*mut PyLongObject; 262usize],\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _is__bindgen_ty_1 {\n    pub listnode: _is__bindgen_ty_1__bindgen_ty_1,\n}\n#[repr(C)]\n#[derive(Debug, Default, Copy, Clone)]\npub struct _is__bindgen_ty_1__bindgen_ty_1 {\n    pub level: ::std::os::raw::c_int,\n    pub atbol: ::std::os::raw::c_int,\n}\nimpl Default for _is {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n#[repr(C)]\n#[derive(Debug, Copy, Clone)]\npub struct _xidregitem {\n    pub cls: *mut PyTypeObject,\n    pub getdata: crossinterpdatafunc,\n    pub next: *mut _xidregitem,\n}\nimpl Default for _xidregitem {\n    fn default() -> Self {\n        unsafe { ::std::mem::zeroed() }\n    }\n}\n"
  },
  {
    "path": "src/python_data_access.rs",
    "content": "#![allow(clippy::unnecessary_cast)]\nuse anyhow::Error;\n\nuse crate::python_bindings::v3_13_0;\nuse crate::python_interpreters::{\n    BytesObject, InterpreterState, ListObject, Object, StringObject, TupleObject, TypeObject,\n};\nuse crate::utils::offset_of;\nuse crate::version::Version;\nuse remoteprocess::ProcessMemory;\n\n/// Copies a string from a target process. Attempts to handle unicode differences, which mostly seems to be working\npub fn copy_string<T: StringObject, P: ProcessMemory>(\n    ptr: *const T,\n    process: &P,\n) -> Result<String, Error> {\n    let obj = process.copy_pointer(ptr)?;\n    if obj.size() == 0 {\n        return Ok(String::new());\n    }\n    if obj.size() >= 4096 {\n        return Err(format_err!(\n            \"Refusing to copy {} chars of a string\",\n            obj.size()\n        ));\n    }\n\n    let kind = obj.kind();\n\n    let bytes = process.copy(obj.address(ptr as usize), obj.size() * kind as usize)?;\n\n    match (kind, obj.ascii()) {\n        (4, _) => {\n            #[allow(clippy::cast_ptr_alignment)]\n            let chars = unsafe {\n                std::slice::from_raw_parts(bytes.as_ptr() as *const char, bytes.len() / 4)\n            };\n            Ok(chars.iter().collect())\n        }\n        (2, _) => {\n            #[allow(clippy::cast_ptr_alignment)]\n            let chars = unsafe {\n                std::slice::from_raw_parts(bytes.as_ptr() as *const u16, bytes.len() / 2)\n            };\n            Ok(String::from_utf16(chars)?)\n        }\n        (1, true) => Ok(String::from_utf8(bytes)?),\n        (1, false) => Ok(bytes.iter().map(|&b| b as char).collect()),\n        _ => Err(format_err!(\"Unknown string kind {}\", kind)),\n    }\n}\n\n/// Copies data from a PyBytesObject (currently only lnotab object)\npub fn copy_bytes<T: BytesObject, P: ProcessMemory>(\n    ptr: *const T,\n    process: &P,\n) -> Result<Vec<u8>, Error> {\n    let obj = process.copy_pointer(ptr)?;\n    let size = obj.size();\n    if size >= 65536 {\n        return Err(format_err!(\"Refusing to copy {} bytes\", size));\n    }\n    Ok(process.copy(obj.address(ptr as usize), size as usize)?)\n}\n\n/// Copies a i64 from a PyLongObject. Returns the value + if it overflowed\npub fn copy_long<P: ProcessMemory>(\n    process: &P,\n    version: &Version,\n    addr: usize,\n) -> Result<(i64, bool), Error> {\n    let (size, negative, digit, value_size) = match version {\n        Version {\n            major: 3,\n            minor: 12..=13,\n            ..\n        } => {\n            // PyLongObject format changed in python 3.12\n            let value = process\n                .copy_pointer(addr as *const crate::python_bindings::v3_12_0::PyLongObject)?;\n            let size = value.long_value.lv_tag >> 3;\n            let negative: i64 = if (value.long_value.lv_tag & 3) == 2 {\n                -1\n            } else {\n                1\n            };\n            (\n                size,\n                negative,\n                value.long_value.ob_digit[0] as u32,\n                std::mem::size_of_val(&value),\n            )\n        }\n        _ => {\n            // this is PyLongObject for a specific version of python, but this works since it's binary compatible\n            // layout across versions we're targeting\n            let value = process\n                .copy_pointer(addr as *const crate::python_bindings::v3_7_0::PyLongObject)?;\n            let negative: i64 = if value.ob_base.ob_size < 0 { -1 } else { 1 };\n            let size = (value.ob_base.ob_size * (negative as isize)) as usize;\n            (\n                size,\n                negative,\n                value.ob_digit[0] as u32,\n                std::mem::size_of_val(&value),\n            )\n        }\n    };\n\n    match size {\n        0 => Ok((0, false)),\n        1 => Ok((negative * (digit as i64), false)),\n\n        #[cfg(target_pointer_width = \"64\")]\n        2 => {\n            let digits: [u32; 2] = process.copy_struct(addr + value_size - 8)?;\n            let mut ret: i64 = 0;\n            for i in 0..size {\n                ret += (digits[i as usize] as i64) << (30 * i);\n            }\n            Ok((negative * ret, false))\n        }\n        #[cfg(target_pointer_width = \"32\")]\n        2..=4 => {\n            let digits: [u16; 4] = process.copy_struct(addr + value_size - 4)?;\n            let mut ret: i64 = 0;\n            for i in 0..size {\n                ret += (digits[i as usize] as i64) << (15 * i);\n            }\n            Ok((negative * ret, false))\n        }\n        // we don't support arbitrary sized integers yet, signal this by returning that we've overflowed\n        _ => Ok((size as i64, true)),\n    }\n}\n\n/// Copies a i64 from a python 2.7 PyIntObject\npub fn copy_int<P: ProcessMemory>(process: &P, addr: usize) -> Result<i64, Error> {\n    let value =\n        process.copy_pointer(addr as *const crate::python_bindings::v2_7_15::PyIntObject)?;\n    Ok(value.ob_ival as i64)\n}\n\n/// Allows iteration of a python dictionary. Only supports python 3.6+ right now\npub struct DictIterator<'a, P: 'a> {\n    process: &'a P,\n    entries_addr: usize,\n    kind: u8,\n    index: usize,\n    entries: usize,\n    values: usize,\n}\n\nimpl<'a, P: ProcessMemory> DictIterator<'a, P> {\n    pub fn from_managed_dict(\n        process: &'a P,\n        version: &'a Version,\n        addr: usize,\n        tp_addr: usize,\n        flags: usize,\n    ) -> Result<DictIterator<'a, P>, Error> {\n        // Handles logic of _PyObject_ManagedDictPointer in python 3.11\n        let mut values_addr: usize =\n            process.copy_struct(addr - 4 * std::mem::size_of::<usize>())?;\n\n        // TODO: MANAGED_DICT_OFFSET is -3 if GIL isn't disabled, -1 otherwise (in py3.13+)\n        // handle gil-less python branches\n        let mut dict_addr: usize = process.copy_struct(addr - 3 * std::mem::size_of::<usize>())?;\n\n        // for python 3.12, the values/dict are combined into a single tagged pointer\n        if version.major == 3 && version.minor == 12 {\n            if dict_addr & 1 == 0 {\n                values_addr = 0;\n            } else {\n                values_addr = dict_addr + 1;\n                dict_addr = 0;\n            }\n        }\n\n        if values_addr != 0 {\n            let ht_cached_keys = if version.major == 3 && version.minor >= 12 {\n                let ht: crate::python_bindings::v3_12_0::PyHeapTypeObject =\n                    process.copy_struct(tp_addr)?;\n                ht.ht_cached_keys as usize\n            } else {\n                let ht: crate::python_bindings::v3_11_0::PyHeapTypeObject =\n                    process.copy_struct(tp_addr)?;\n                ht.ht_cached_keys as usize\n            };\n\n            // handle inline values in py3.13+\n            // https://github.com/python/cpython/issues/115776\n            if flags & PY_TPFLAGS_INLINE_VALUES != 0 {\n                // PyDictValues is stored inline after the initial PyObject\n                let dict_values: v3_13_0::_dictvalues = Default::default();\n                let values_offset = offset_of(&dict_values, &dict_values.values);\n\n                values_addr = addr + std::mem::size_of::<v3_13_0::PyObject>() + values_offset;\n            }\n\n            let keys: crate::python_bindings::v3_12_0::PyDictKeysObject =\n                process.copy_struct(ht_cached_keys as usize)?;\n\n            let entries_addr = ht_cached_keys as usize\n                + (1 << keys.dk_log2_index_bytes)\n                + std::mem::size_of_val(&keys);\n            Ok(DictIterator {\n                process,\n                entries_addr,\n                index: 0,\n                kind: keys.dk_kind,\n                entries: keys.dk_nentries as usize,\n                values: values_addr,\n            })\n        } else if dict_addr != 0 {\n            DictIterator::from(process, version, dict_addr)\n        } else {\n            Err(format_err!(\"neither values or dict is set in managed dict\"))\n        }\n    }\n\n    pub fn from(\n        process: &'a P,\n        version: &'a Version,\n        addr: usize,\n    ) -> Result<DictIterator<'a, P>, Error> {\n        match version {\n            Version {\n                major: 3,\n                minor: 11..=13,\n                ..\n            } => {\n                let dict: crate::python_bindings::v3_11_0::PyDictObject =\n                    process.copy_struct(addr)?;\n                let keys = process.copy_pointer(dict.ma_keys)?;\n\n                let entries_addr = dict.ma_keys as usize\n                    + (1 << keys.dk_log2_index_bytes)\n                    + std::mem::size_of_val(&keys);\n                Ok(DictIterator {\n                    process,\n                    entries_addr,\n                    index: 0,\n                    kind: keys.dk_kind,\n                    entries: keys.dk_nentries as usize,\n                    values: dict.ma_values as usize,\n                })\n            }\n            _ => {\n                let dict: crate::python_bindings::v3_7_0::PyDictObject =\n                    process.copy_struct(addr)?;\n                // Getting this going generically is tricky: there is a lot of variation on how dictionaries are handled\n                // instead this just focuses on a single version, which works for python\n                // 3.6/3.7/3.8/3.9/3.10\n                let keys = process.copy_pointer(dict.ma_keys)?;\n                let index_size = match keys.dk_size {\n                    0..=0xff => 1,\n                    0..=0xffff => 2,\n                    #[cfg(target_pointer_width = \"64\")]\n                    0..=0xffffffff => 4,\n                    #[cfg(target_pointer_width = \"64\")]\n                    _ => 8,\n                    #[cfg(not(target_pointer_width = \"64\"))]\n                    _ => 4,\n                };\n                let byteoffset = (keys.dk_size * index_size) as usize;\n                let entries_addr =\n                    dict.ma_keys as usize + byteoffset + std::mem::size_of_val(&keys);\n                Ok(DictIterator {\n                    process,\n                    entries_addr,\n                    index: 0,\n                    kind: 0,\n                    entries: keys.dk_nentries as usize,\n                    values: dict.ma_values as usize,\n                })\n            }\n        }\n    }\n}\n\nimpl<'a, P: ProcessMemory> Iterator for DictIterator<'a, P> {\n    type Item = Result<(usize, usize), Error>;\n\n    fn next(&mut self) -> Option<Self::Item> {\n        while self.index < self.entries {\n            let index = self.index;\n            self.index += 1;\n\n            // get the addresses of the key/value for the current index\n            let entry = match self.kind {\n                0 => {\n                    let addr = index\n                        * std::mem::size_of::<crate::python_bindings::v3_7_0::PyDictKeyEntry>()\n                        + self.entries_addr;\n                    let ret = self\n                        .process\n                        .copy_struct::<crate::python_bindings::v3_7_0::PyDictKeyEntry>(addr);\n                    ret.map(|entry| (entry.me_key as usize, entry.me_value as usize))\n                }\n                _ => {\n                    // Python 3.11 added a PyDictUnicodeEntry , which uses the hash from the Unicode key rather than recalculate\n                    let addr = index\n                        * std::mem::size_of::<crate::python_bindings::v3_11_0::PyDictUnicodeEntry>(\n                        )\n                        + self.entries_addr;\n                    let ret = self\n                        .process\n                        .copy_struct::<crate::python_bindings::v3_11_0::PyDictUnicodeEntry>(addr);\n                    ret.map(|entry| (entry.me_key as usize, entry.me_value as usize))\n                }\n            };\n\n            match entry {\n                Ok((key, value)) => {\n                    if key == 0 {\n                        continue;\n                    }\n\n                    let value = if self.values != 0 {\n                        let valueaddr = self.values\n                            + index\n                                * std::mem::size_of::<*mut crate::python_bindings::v3_7_0::PyObject>(\n                                );\n                        match self.process.copy_struct(valueaddr) {\n                            Ok(addr) => addr,\n                            Err(e) => {\n                                return Some(Err(e.into()));\n                            }\n                        }\n                    } else {\n                        value\n                    };\n\n                    return Some(Ok((key, value)));\n                }\n                Err(e) => return Some(Err(e.into())),\n            }\n        }\n\n        None\n    }\n}\n\npub const PY_TPFLAGS_INLINE_VALUES: usize = 1 << 2;\npub const PY_TPFLAGS_MANAGED_DICT: usize = 1 << 4;\nconst PY_TPFLAGS_INT_SUBCLASS: usize = 1 << 23;\nconst PY_TPFLAGS_LONG_SUBCLASS: usize = 1 << 24;\nconst PY_TPFLAGS_LIST_SUBCLASS: usize = 1 << 25;\nconst PY_TPFLAGS_TUPLE_SUBCLASS: usize = 1 << 26;\nconst PY_TPFLAGS_BYTES_SUBCLASS: usize = 1 << 27;\nconst PY_TPFLAGS_STRING_SUBCLASS: usize = 1 << 28;\nconst PY_TPFLAGS_DICT_SUBCLASS: usize = 1 << 29;\n\n/// Converts a python variable in the other process to a human readable string\npub fn format_variable<I, P>(\n    process: &P,\n    version: &Version,\n    addr: usize,\n    max_length: isize,\n) -> Result<String, Error>\nwhere\n    I: InterpreterState,\n    P: ProcessMemory,\n{\n    // We need at least 5 characters remaining for all this code to work, replace with an ellipsis if\n    // we're out of space\n    if max_length <= 5 {\n        return Ok(\"...\".to_owned());\n    }\n\n    let value: I::Object = process.copy_struct(addr)?;\n    let value_type = process.copy_pointer(value.ob_type())?;\n\n    // get the typename (truncating to 128 bytes if longer)\n    let max_type_len = 128;\n    let value_type_name = process.copy(value_type.name() as usize, max_type_len)?;\n    let length = value_type_name\n        .iter()\n        .position(|&x| x == 0)\n        .unwrap_or(max_type_len);\n    let value_type_name = std::str::from_utf8(&value_type_name[..length])?;\n\n    let format_int = |value: i64| {\n        if value_type_name == \"bool\" {\n            (if value > 0 { \"True\" } else { \"False\" }).to_owned()\n        } else {\n            format!(\"{value}\")\n        }\n    };\n\n    // use the flags/typename to figure out how to stringify this object\n    let flags = value_type.flags();\n    let formatted = if flags & PY_TPFLAGS_INT_SUBCLASS != 0 {\n        format_int(copy_int(process, addr)?)\n    } else if flags & PY_TPFLAGS_LONG_SUBCLASS != 0 {\n        // we don't handle arbitrary sized integer values (max is 2**60)\n        let (value, overflowed) = copy_long(process, version, addr)?;\n        if overflowed {\n            if value > 0 {\n                \"+bigint\".to_owned()\n            } else {\n                \"-bigint\".to_owned()\n            }\n        } else {\n            format_int(value)\n        }\n    } else if flags & PY_TPFLAGS_STRING_SUBCLASS != 0\n        || (version.major == 2 && (flags & PY_TPFLAGS_BYTES_SUBCLASS != 0))\n    {\n        let value = copy_string(addr as *const I::StringObject, process)?\n            .replace('\\'', \"\\\\\\\"\")\n            .replace('\\n', \"\\\\n\");\n        if let Some((offset, _)) = value.char_indices().nth((max_length - 5) as usize) {\n            format!(\"\\\"{}...\\\"\", &value[..offset])\n        } else {\n            format!(\"\\\"{value}\\\"\")\n        }\n    } else if flags & PY_TPFLAGS_DICT_SUBCLASS != 0 {\n        if version.major == 3 && version.minor >= 6 {\n            let mut values = Vec::new();\n            let mut remaining = max_length - 2;\n            for entry in DictIterator::from(process, version, addr)? {\n                let (key, value) = entry?;\n                let key = format_variable::<I, P>(process, version, key, remaining)?;\n                let value = format_variable::<I, P>(process, version, value, remaining)?;\n                remaining -= (key.len() + value.len()) as isize + 4;\n                if remaining <= 5 {\n                    values.push(\"...\".to_owned());\n                    break;\n                }\n                values.push(format!(\"{key}: {value}\"));\n            }\n            format!(\"{{{}}}\", values.join(\", \"))\n        } else {\n            // TODO: support getting dictionaries from older versions of python\n            \"dict\".to_owned()\n        }\n    } else if flags & PY_TPFLAGS_LIST_SUBCLASS != 0 {\n        let object: I::ListObject = process.copy_struct(addr)?;\n        let addr = object.item() as usize;\n        let mut values = Vec::new();\n        let mut remaining = max_length - 2;\n        for i in 0..object.size() {\n            let valueptr: *mut I::Object =\n                process.copy_struct(addr + i * std::mem::size_of::<*mut I::Object>())?;\n            let value = format_variable::<I, P>(process, version, valueptr as usize, remaining)?;\n            remaining -= value.len() as isize + 2;\n            if remaining <= 5 {\n                values.push(\"...\".to_owned());\n                break;\n            }\n            values.push(value);\n        }\n        format!(\"[{}]\", values.join(\", \"))\n    } else if flags & PY_TPFLAGS_TUPLE_SUBCLASS != 0 {\n        let object: I::TupleObject = process.copy_struct(addr)?;\n        let mut values = Vec::new();\n        let mut remaining = max_length - 2;\n        for i in 0..object.size() {\n            let value_addr: *mut I::Object = process.copy_struct(object.address(addr, i))?;\n            let value = format_variable::<I, P>(process, version, value_addr as usize, remaining)?;\n            remaining -= value.len() as isize + 2;\n            if remaining <= 5 {\n                values.push(\"...\".to_owned());\n                break;\n            }\n            values.push(value);\n        }\n        format!(\"({})\", values.join(\", \"))\n    } else if value_type_name == \"float\" {\n        let value =\n            process.copy_pointer(addr as *const crate::python_bindings::v3_7_0::PyFloatObject)?;\n        format!(\"{}\", value.ob_fval)\n    } else if value_type_name == \"NoneType\" {\n        \"None\".to_owned()\n    } else if value_type_name.starts_with(\"numpy.\") {\n        match value_type_name {\n            \"numpy.bool\" => format_obval::<bool, P>(addr, process)?,\n            \"numpy.uint8\" => format_obval::<u8, P>(addr, process)?,\n            \"numpy.uint16\" => format_obval::<u16, P>(addr, process)?,\n            \"numpy.uint32\" => format_obval::<u32, P>(addr, process)?,\n            \"numpy.uint64\" => format_obval::<u64, P>(addr, process)?,\n            \"numpy.int8\" => format_obval::<i8, P>(addr, process)?,\n            \"numpy.int16\" => format_obval::<i16, P>(addr, process)?,\n            \"numpy.int32\" => format_obval::<i32, P>(addr, process)?,\n            \"numpy.int64\" => format_obval::<i64, P>(addr, process)?,\n            \"numpy.float32\" => format_obval::<f32, P>(addr, process)?,\n            \"numpy.float64\" => format_obval::<f64, P>(addr, process)?,\n            _ => format!(\"<{value_type_name} at 0x{addr:x}>\"),\n        }\n    } else {\n        format!(\"<{value_type_name} at 0x{addr:x}>\")\n    };\n\n    Ok(formatted)\n}\n\n/// Format the numpy scalar to a string.\n///\n/// All numpy scalars have shape:\n/// {\n///     ob_base: PyObject,\n///     obval: <value>,\n/// }\n///\n/// Where `obval` can be of different sizes depending on the scalar type.\n/// We match the size to the value_type_name for this purpose, avoiding the\n/// need to build bindings for the numpy C API.\n///\n/// * `addr`: Address of the numpy scalar\n/// * `process`: Process memory in which the object resides\nfn format_obval<T, P>(addr: usize, process: &P) -> Result<String, Error>\nwhere\n    T: std::fmt::Display + Copy,\n    P: ProcessMemory,\n{\n    let base_addr = addr as *mut u32;\n    let offset = std::mem::size_of::<crate::python_bindings::v3_7_0::PyObject>() as isize;\n    let result = unsafe { process.copy_pointer(base_addr.byte_offset(offset) as *const T)? };\n    Ok(format!(\"{result}\"))\n}\n\n#[cfg(test)]\npub mod tests {\n    // the idea here is to create various cpython interpretator structs locally\n    // and then test out that the above code handles appropriately\n    use super::*;\n    use crate::python_bindings::v3_7_0::{\n        PyASCIIObject, PyBytesObject, PyUnicodeObject, PyVarObject,\n    };\n    use remoteprocess::LocalProcess;\n    use std::ptr::copy_nonoverlapping;\n\n    // python stores data after pybytesobject/pyasciiobject. hack by initializing a 4k buffer for testing.\n    // TODO: get better at Rust and figure out a better solution\n    #[allow(dead_code)]\n    #[repr(C)]\n    pub struct AllocatedPyByteObject {\n        pub base: PyBytesObject,\n        pub storage: [u8; 4096],\n    }\n\n    #[allow(dead_code)]\n    #[repr(C)] // Rust can optimize the layout of this struct and break our pointer arithmetic\n    pub struct AllocatedPyASCIIObject {\n        pub base: PyASCIIObject,\n        pub storage: [u8; 4096],\n    }\n\n    pub fn to_byteobject(bytes: &[u8]) -> AllocatedPyByteObject {\n        let ob_size = bytes.len() as isize;\n        let base = PyBytesObject {\n            ob_base: PyVarObject {\n                ob_size,\n                ..Default::default()\n            },\n            ..Default::default()\n        };\n        let mut ret = AllocatedPyByteObject {\n            base,\n            storage: [0 as u8; 4096],\n        };\n        unsafe {\n            copy_nonoverlapping(\n                bytes.as_ptr(),\n                ret.base.ob_sval.as_mut_ptr() as *mut u8,\n                bytes.len(),\n            );\n        }\n        ret\n    }\n\n    pub fn to_asciiobject(input: &str) -> AllocatedPyASCIIObject {\n        let bytes: Vec<u8> = input.bytes().collect();\n        let mut base = PyASCIIObject {\n            length: bytes.len() as isize,\n            ..Default::default()\n        };\n        base.state.set_compact(1);\n        base.state.set_kind(1);\n        base.state.set_ascii(1);\n        let mut ret = AllocatedPyASCIIObject {\n            base,\n            storage: [0 as u8; 4096],\n        };\n        unsafe {\n            let ptr = &mut ret as *mut AllocatedPyASCIIObject as *mut u8;\n            let dst = ptr.offset(std::mem::size_of::<PyASCIIObject>() as isize);\n            copy_nonoverlapping(bytes.as_ptr(), dst, bytes.len());\n        }\n        ret\n    }\n\n    #[test]\n    fn test_copy_string() {\n        let original = \"function_name\";\n        let obj = to_asciiobject(original);\n\n        let unicode: &PyUnicodeObject = unsafe { std::mem::transmute(&obj.base) };\n        let copied = copy_string(unicode, &LocalProcess).unwrap();\n        assert_eq!(copied, original);\n    }\n\n    #[test]\n    fn test_copy_bytes() {\n        let original = [10_u8, 20, 30, 40, 50, 70, 80];\n        let bytes = to_byteobject(&original);\n        let copied = copy_bytes(&bytes.base, &LocalProcess).unwrap();\n        assert_eq!(copied, original);\n    }\n}\n"
  },
  {
    "path": "src/python_interpreters.rs",
    "content": "/* This code abstracts over different python interpreters by providing\ntraits for the classes/methods we need and implementations on the bindings objects\nfrom bindgen.\n\nNote this code is unaware of copying memory from the target process, so the\npointer addresses here refer to locations in the target process memory space.\nThis means we can't dereference them directly.\n*/\n\n#![allow(clippy::unnecessary_cast)]\n\n// these bindings are automatically generated by rust bindgen\n// using the generate_bindings.py script\nuse crate::python_bindings::{\n    v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_13_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5,\n};\nuse crate::utils::offset_of;\n\npub trait InterpreterState: Copy {\n    type ThreadState: ThreadState;\n    type Object: Object;\n    type StringObject: StringObject;\n    type ListObject: ListObject;\n    type TupleObject: TupleObject;\n    const HAS_GIL_RUNTIME_STATE: bool = false;\n\n    /// Get a remote pointer to a pointer to PyThreadState.\n    fn threadstate_ptr_ptr(interpreter_address: usize) -> *const *const Self::ThreadState;\n    /// Get a remote pointer to a pointer to PyObject being the modules dict.\n    fn modules_ptr_ptr(interpreter_address: usize) -> *const *const Self::Object;\n}\n\npub trait ThreadState: Copy {\n    type FrameObject: FrameObject;\n    type InterpreterState: InterpreterState;\n\n    fn interp(&self) -> *mut Self::InterpreterState;\n\n    // starting in python 3.11, there is an extra level of indirection\n    // in getting the frame. this returns the address\n    fn frame_address(&self) -> Option<usize>;\n\n    fn frame(&self, offset: Option<usize>) -> *mut Self::FrameObject;\n    fn thread_id(&self) -> u64;\n    fn native_thread_id(&self) -> Option<u64>;\n    fn next(&self) -> *mut Self;\n}\n\npub trait FrameObject: Copy {\n    type CodeObject: CodeObject;\n\n    fn code(&self) -> *mut Self::CodeObject;\n    fn lasti(&self) -> i32;\n    fn back(&self) -> *mut Self;\n    fn is_entry(&self) -> bool;\n}\n\npub trait CodeObject: Copy {\n    type StringObject: StringObject;\n    type BytesObject: BytesObject;\n    type TupleObject: TupleObject;\n\n    fn name(&self) -> *mut Self::StringObject;\n    fn filename(&self) -> *mut Self::StringObject;\n    fn line_table(&self) -> *mut Self::BytesObject;\n    fn first_lineno(&self) -> i32;\n    fn nlocals(&self) -> i32;\n    fn argcount(&self) -> i32;\n    fn varnames(&self) -> *mut Self::TupleObject;\n\n    fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32;\n}\n\npub trait BytesObject: Copy {\n    fn size(&self) -> usize;\n    fn address(&self, base: usize) -> usize;\n}\n\npub trait StringObject: Copy {\n    fn ascii(&self) -> bool;\n    fn kind(&self) -> u32;\n    fn size(&self) -> usize;\n    fn address(&self, base: usize) -> usize;\n}\n\npub trait TupleObject: Copy {\n    fn size(&self) -> usize;\n    fn address(&self, base: usize, index: usize) -> usize;\n}\n\npub trait ListObject: Copy {\n    type Object: Object;\n    fn size(&self) -> usize;\n    fn item(&self) -> *mut *mut Self::Object;\n}\n\npub trait Object: Copy {\n    type TypeObject: TypeObject;\n    fn ob_type(&self) -> *mut Self::TypeObject;\n}\n\npub trait TypeObject: Copy {\n    fn name(&self) -> *const ::std::os::raw::c_char;\n    fn dictoffset(&self) -> isize;\n    fn flags(&self) -> usize;\n}\n\n/// This macro provides a common impl for PyThreadState/PyFrameObject/PyCodeObject traits\n/// (this code is identical across python versions, we are only abstracting the struct layouts here).\n/// String handling changes substantially between python versions, and is handled separately.\nmacro_rules! PythonCommonImpl {\n    ($py: ident, $stringobject: ident) => {\n        impl InterpreterState for $py::PyInterpreterState {\n            type ThreadState = $py::PyThreadState;\n            type Object = $py::PyObject;\n            type StringObject = $py::$stringobject;\n            type ListObject = $py::PyListObject;\n            type TupleObject = $py::PyTupleObject;\n\n            fn threadstate_ptr_ptr(interpreter_address: usize) -> *const *const Self::ThreadState {\n                (interpreter_address + std::mem::offset_of!(Self, tstate_head))\n                    as *const *const Self::ThreadState\n            }\n            fn modules_ptr_ptr(interpreter_address: usize) -> *const *const Self::Object {\n                (interpreter_address + std::mem::offset_of!(Self, modules))\n                    as *const *const Self::Object\n            }\n        }\n\n        impl ThreadState for $py::PyThreadState {\n            type FrameObject = $py::PyFrameObject;\n            type InterpreterState = $py::PyInterpreterState;\n            fn frame_address(&self) -> Option<usize> {\n                None\n            }\n            fn frame(&self, _: Option<usize>) -> *mut Self::FrameObject {\n                self.frame\n            }\n            fn thread_id(&self) -> u64 {\n                self.thread_id as u64\n            }\n            fn native_thread_id(&self) -> Option<u64> {\n                None\n            }\n            fn next(&self) -> *mut Self {\n                self.next\n            }\n            fn interp(&self) -> *mut Self::InterpreterState {\n                self.interp\n            }\n        }\n\n        impl FrameObject for $py::PyFrameObject {\n            type CodeObject = $py::PyCodeObject;\n\n            fn code(&self) -> *mut Self::CodeObject {\n                self.f_code\n            }\n            fn lasti(&self) -> i32 {\n                self.f_lasti as i32\n            }\n            fn back(&self) -> *mut Self {\n                self.f_back\n            }\n            fn is_entry(&self) -> bool {\n                true\n            }\n        }\n\n        impl Object for $py::PyObject {\n            type TypeObject = $py::PyTypeObject;\n            fn ob_type(&self) -> *mut Self::TypeObject {\n                self.ob_type as *mut Self::TypeObject\n            }\n        }\n\n        impl TypeObject for $py::PyTypeObject {\n            fn name(&self) -> *const ::std::os::raw::c_char {\n                self.tp_name\n            }\n            fn dictoffset(&self) -> isize {\n                self.tp_dictoffset\n            }\n            fn flags(&self) -> usize {\n                self.tp_flags as usize\n            }\n        }\n    };\n}\n\n// We can use this up until python3.10 - where code object lnotab attribute is deprecated\nmacro_rules! PythonCodeObjectImpl {\n    ($py: ident, $bytesobject: ident, $stringobject: ident) => {\n        impl CodeObject for $py::PyCodeObject {\n            type BytesObject = $py::$bytesobject;\n            type StringObject = $py::$stringobject;\n            type TupleObject = $py::PyTupleObject;\n\n            fn name(&self) -> *mut Self::StringObject {\n                self.co_name as *mut Self::StringObject\n            }\n            fn filename(&self) -> *mut Self::StringObject {\n                self.co_filename as *mut Self::StringObject\n            }\n            fn line_table(&self) -> *mut Self::BytesObject {\n                self.co_lnotab as *mut Self::BytesObject\n            }\n            fn first_lineno(&self) -> i32 {\n                self.co_firstlineno\n            }\n            fn nlocals(&self) -> i32 {\n                self.co_nlocals\n            }\n            fn argcount(&self) -> i32 {\n                self.co_argcount\n            }\n            fn varnames(&self) -> *mut Self::TupleObject {\n                self.co_varnames as *mut Self::TupleObject\n            }\n\n            fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32 {\n                let lasti = lasti as i32;\n\n                // unpack the line table. format is specified here:\n                // https://github.com/python/cpython/blob/3.9/Objects/lnotab_notes.txt\n                let size = table.len();\n                let mut i = 0;\n                let mut line_number: i32 = self.first_lineno();\n                let mut bytecode_address: i32 = 0;\n                while (i + 1) < size {\n                    bytecode_address += i32::from(table[i]);\n                    if bytecode_address > lasti {\n                        break;\n                    }\n\n                    let mut increment = i32::from(table[i + 1]);\n                    // Handle negative line increments in the line number table - as shown here:\n                    // https://github.com/python/cpython/blob/143a97f6/Objects/lnotab_notes.txt#L48-L49\n                    if increment >= 0x80 {\n                        increment -= 0x100;\n                    }\n                    line_number += increment;\n                    i += 2;\n                }\n                line_number\n            }\n        }\n    };\n}\n\nfn read_varint(index: &mut usize, table: &[u8]) -> Option<usize> {\n    if *index >= table.len() {\n        return None;\n    }\n    let mut ret: usize;\n    let mut byte = table[*index];\n    let mut shift = 0;\n    *index += 1;\n    ret = (byte & 63) as usize;\n\n    while byte & 64 != 0 {\n        if *index >= table.len() {\n            return None;\n        }\n        byte = table[*index];\n        *index += 1;\n        shift += 6;\n        ret += ((byte & 63) as usize) << shift;\n    }\n    Some(ret)\n}\n\nfn read_signed_varint(index: &mut usize, table: &[u8]) -> Option<isize> {\n    let unsigned_val = read_varint(index, table)?;\n    if unsigned_val & 1 != 0 {\n        Some(-((unsigned_val >> 1) as isize))\n    } else {\n        Some((unsigned_val >> 1) as isize)\n    }\n}\n\n// Use for 3.11 and 3.12\nmacro_rules! CompactCodeObjectImpl {\n    ($py: ident, $bytesobject: ident, $stringobject: ident) => {\n        impl CodeObject for $py::PyCodeObject {\n            type BytesObject = $py::$bytesobject;\n            type StringObject = $py::$stringobject;\n            type TupleObject = $py::PyTupleObject;\n\n            fn name(&self) -> *mut Self::StringObject {\n                self.co_name as *mut Self::StringObject\n            }\n            fn filename(&self) -> *mut Self::StringObject {\n                self.co_filename as *mut Self::StringObject\n            }\n            fn line_table(&self) -> *mut Self::BytesObject {\n                self.co_linetable as *mut Self::BytesObject\n            }\n            fn first_lineno(&self) -> i32 {\n                self.co_firstlineno\n            }\n            fn nlocals(&self) -> i32 {\n                self.co_nlocals\n            }\n            fn argcount(&self) -> i32 {\n                self.co_argcount\n            }\n            fn varnames(&self) -> *mut Self::TupleObject {\n                self.co_localsplusnames as *mut Self::TupleObject\n            }\n\n            fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32 {\n                // unpack compressed table format from python 3.11\n                // https://github.com/python/cpython/pull/91666/files\n                let lasti = lasti - offset_of(self, &self.co_code_adaptive) as i32;\n                let mut line_number: i32 = self.first_lineno();\n                let mut bytecode_address: i32 = 0;\n\n                let mut index: usize = 0;\n                loop {\n                    if index >= table.len() {\n                        break;\n                    }\n                    let byte = table[index];\n                    index += 1;\n\n                    let delta = ((byte & 7) as i32) + 1;\n                    bytecode_address += delta * 2;\n                    let code = (byte >> 3) & 15;\n                    let line_delta = match code {\n                        15 => 0,\n                        14 => {\n                            let delta = read_signed_varint(&mut index, table).unwrap_or(0);\n                            read_varint(&mut index, table); // end line\n                            read_varint(&mut index, table); // start column\n                            read_varint(&mut index, table); // end column\n                            delta\n                        }\n                        13 => read_signed_varint(&mut index, table).unwrap_or(0),\n                        10..=12 => {\n                            index += 2; // start column / end column\n                            (code - 10).into()\n                        }\n                        _ => {\n                            index += 1; // column\n                            0\n                        }\n                    };\n                    line_number += line_delta as i32;\n                    if bytecode_address >= lasti {\n                        break;\n                    }\n                }\n                line_number\n            }\n        }\n    };\n}\n\n// String/Byte/List/Tuple handling for Python 3.3+\nmacro_rules! Python3Impl {\n    ($py: ident) => {\n        impl BytesObject for $py::PyBytesObject {\n            fn size(&self) -> usize {\n                self.ob_base.ob_size as usize\n            }\n            fn address(&self, base: usize) -> usize {\n                base + offset_of(self, &self.ob_sval)\n            }\n        }\n\n        impl StringObject for $py::PyUnicodeObject {\n            fn ascii(&self) -> bool {\n                self._base._base.state.ascii() != 0\n            }\n            fn size(&self) -> usize {\n                self._base._base.length as usize\n            }\n            fn kind(&self) -> u32 {\n                self._base._base.state.kind()\n            }\n\n            fn address(&self, base: usize) -> usize {\n                if self._base._base.state.compact() == 0 {\n                    return unsafe { self.data.any as usize };\n                }\n\n                if self._base._base.state.ascii() == 1 {\n                    base + std::mem::size_of::<$py::PyASCIIObject>()\n                } else {\n                    base + std::mem::size_of::<$py::PyCompactUnicodeObject>()\n                }\n            }\n        }\n\n        impl ListObject for $py::PyListObject {\n            type Object = $py::PyObject;\n            fn size(&self) -> usize {\n                self.ob_base.ob_size as usize\n            }\n            fn item(&self) -> *mut *mut Self::Object {\n                self.ob_item\n            }\n        }\n\n        impl TupleObject for $py::PyTupleObject {\n            fn size(&self) -> usize {\n                self.ob_base.ob_size as usize\n            }\n            fn address(&self, base: usize, index: usize) -> usize {\n                base + offset_of(self, &self.ob_item)\n                    + index * std::mem::size_of::<*mut $py::PyObject>()\n            }\n        }\n    };\n}\n\n// Python 3.13\nPython3Impl!(v3_13_0);\n\nimpl InterpreterState for v3_13_0::PyInterpreterState {\n    type ThreadState = v3_13_0::PyThreadState;\n    type Object = v3_13_0::PyObject;\n    type StringObject = v3_13_0::PyUnicodeObject;\n    type ListObject = v3_13_0::PyListObject;\n    type TupleObject = v3_13_0::PyTupleObject;\n    const HAS_GIL_RUNTIME_STATE: bool = true;\n\n    fn threadstate_ptr_ptr(interpreter_address: usize) -> *const *const Self::ThreadState {\n        (interpreter_address + std::mem::offset_of!(Self, threads.head))\n            as *const *const Self::ThreadState\n    }\n    fn modules_ptr_ptr(interpreter_address: usize) -> *const *const Self::Object {\n        (interpreter_address + std::mem::offset_of!(Self, imports.modules))\n            as *const *const Self::Object\n    }\n}\n\nimpl ThreadState for v3_13_0::PyThreadState {\n    type FrameObject = v3_13_0::_PyInterpreterFrame;\n    type InterpreterState = v3_13_0::PyInterpreterState;\n    fn frame_address(&self) -> Option<usize> {\n        None\n    }\n    fn frame(&self, _addr: Option<usize>) -> *mut Self::FrameObject {\n        self.current_frame\n    }\n    fn thread_id(&self) -> u64 {\n        self.thread_id as u64\n    }\n    fn native_thread_id(&self) -> Option<u64> {\n        Some(self.native_thread_id as u64)\n    }\n    fn next(&self) -> *mut Self {\n        self.next\n    }\n    fn interp(&self) -> *mut Self::InterpreterState {\n        self.interp\n    }\n}\n\nimpl FrameObject for v3_13_0::_PyInterpreterFrame {\n    type CodeObject = v3_13_0::PyCodeObject;\n    fn code(&self) -> *mut Self::CodeObject {\n        self.f_executable as *mut v3_13_0::PyCodeObject\n    }\n    fn lasti(&self) -> i32 {\n        let co_code = self.f_executable as *const _ as *const u8;\n        unsafe { (self.instr_ptr as *const u8).offset_from(co_code) as i32 }\n    }\n    fn back(&self) -> *mut Self {\n        self.previous\n    }\n    fn is_entry(&self) -> bool {\n        // https://github.com/python/cpython/pull/108036#issuecomment-1684458828\n        const FRAME_OWNED_BY_CSTACK: ::std::os::raw::c_char = 3;\n        self.owner == FRAME_OWNED_BY_CSTACK\n    }\n}\n\nimpl Object for v3_13_0::PyObject {\n    type TypeObject = v3_13_0::PyTypeObject;\n    fn ob_type(&self) -> *mut Self::TypeObject {\n        self.ob_type as *mut Self::TypeObject\n    }\n}\n\nimpl TypeObject for v3_13_0::PyTypeObject {\n    fn name(&self) -> *const ::std::os::raw::c_char {\n        self.tp_name\n    }\n    fn dictoffset(&self) -> isize {\n        self.tp_dictoffset\n    }\n    fn flags(&self) -> usize {\n        self.tp_flags as usize\n    }\n}\n\nCompactCodeObjectImpl!(v3_13_0, PyBytesObject, PyUnicodeObject);\n\n// Python 3.12\n// TODO: this shares some similarities with python 3.11, we should refactor to a common macro\nPython3Impl!(v3_12_0);\n\nimpl InterpreterState for v3_12_0::PyInterpreterState {\n    type ThreadState = v3_12_0::PyThreadState;\n    type Object = v3_12_0::PyObject;\n    type StringObject = v3_12_0::PyUnicodeObject;\n    type ListObject = v3_12_0::PyListObject;\n    type TupleObject = v3_12_0::PyTupleObject;\n    const HAS_GIL_RUNTIME_STATE: bool = true;\n\n    fn threadstate_ptr_ptr(interpreter_address: usize) -> *const *const Self::ThreadState {\n        (interpreter_address + std::mem::offset_of!(Self, threads.head))\n            as *const *const Self::ThreadState\n    }\n    fn modules_ptr_ptr(interpreter_address: usize) -> *const *const Self::Object {\n        (interpreter_address + std::mem::offset_of!(Self, imports.modules))\n            as *const *const Self::Object\n    }\n}\n\nimpl ThreadState for v3_12_0::PyThreadState {\n    type FrameObject = v3_12_0::_PyInterpreterFrame;\n    type InterpreterState = v3_12_0::PyInterpreterState;\n    fn frame_address(&self) -> Option<usize> {\n        // There must be a way to get the offset here without actually creating the object\n        let cframe: v3_12_0::_PyCFrame = Default::default();\n        let current_frame_offset = offset_of(&cframe, &cframe.current_frame);\n        Some(self.cframe as usize + current_frame_offset)\n    }\n    fn frame(&self, addr: Option<usize>) -> *mut Self::FrameObject {\n        addr.unwrap() as *mut Self::FrameObject\n    }\n    fn thread_id(&self) -> u64 {\n        self.thread_id as u64\n    }\n    fn native_thread_id(&self) -> Option<u64> {\n        Some(self.native_thread_id as u64)\n    }\n    fn next(&self) -> *mut Self {\n        self.next\n    }\n    fn interp(&self) -> *mut Self::InterpreterState {\n        self.interp\n    }\n}\n\nimpl FrameObject for v3_12_0::_PyInterpreterFrame {\n    type CodeObject = v3_12_0::PyCodeObject;\n    fn code(&self) -> *mut Self::CodeObject {\n        self.f_code\n    }\n    fn lasti(&self) -> i32 {\n        // this returns the delta from the co_code, but we need to adjust for the\n        // offset from co_code.co_code_adaptive. This is slightly easier to do in the\n        // get_line_number code, so will adjust there\n        let co_code = self.f_code as *const _ as *const u8;\n        unsafe { (self.prev_instr as *const u8).offset_from(co_code) as i32 }\n    }\n    fn back(&self) -> *mut Self {\n        self.previous\n    }\n    fn is_entry(&self) -> bool {\n        // https://github.com/python/cpython/pull/108036#issuecomment-1684458828\n        const FRAME_OWNED_BY_CSTACK: ::std::os::raw::c_char = 3;\n        self.owner == FRAME_OWNED_BY_CSTACK\n    }\n}\n\nimpl Object for v3_12_0::PyObject {\n    type TypeObject = v3_12_0::PyTypeObject;\n    fn ob_type(&self) -> *mut Self::TypeObject {\n        self.ob_type as *mut Self::TypeObject\n    }\n}\n\nimpl TypeObject for v3_12_0::PyTypeObject {\n    fn name(&self) -> *const ::std::os::raw::c_char {\n        self.tp_name\n    }\n    fn dictoffset(&self) -> isize {\n        self.tp_dictoffset\n    }\n    fn flags(&self) -> usize {\n        self.tp_flags as usize\n    }\n}\n\nCompactCodeObjectImpl!(v3_12_0, PyBytesObject, PyUnicodeObject);\n\n// Python 3.11\n// Python3.11 is sufficiently different from previous versions that we can't use the macros above\n// to generate implementations of these traits.\nPython3Impl!(v3_11_0);\n\nimpl InterpreterState for v3_11_0::PyInterpreterState {\n    type ThreadState = v3_11_0::PyThreadState;\n    type Object = v3_11_0::PyObject;\n    type StringObject = v3_11_0::PyUnicodeObject;\n    type ListObject = v3_11_0::PyListObject;\n    type TupleObject = v3_11_0::PyTupleObject;\n\n    fn threadstate_ptr_ptr(interpreter_address: usize) -> *const *const Self::ThreadState {\n        (interpreter_address + std::mem::offset_of!(Self, threads.head))\n            as *const *const Self::ThreadState\n    }\n    fn modules_ptr_ptr(interpreter_address: usize) -> *const *const Self::Object {\n        (interpreter_address + std::mem::offset_of!(Self, modules)) as *const *const Self::Object\n    }\n}\n\nimpl ThreadState for v3_11_0::PyThreadState {\n    type FrameObject = v3_11_0::_PyInterpreterFrame;\n    type InterpreterState = v3_11_0::PyInterpreterState;\n    fn frame_address(&self) -> Option<usize> {\n        // There must be a way to get the offset here without actually creating the object\n        let cframe: v3_11_0::_PyCFrame = Default::default();\n        let current_frame_offset = offset_of(&cframe, &cframe.current_frame);\n        Some(self.cframe as usize + current_frame_offset)\n    }\n    fn frame(&self, addr: Option<usize>) -> *mut Self::FrameObject {\n        addr.unwrap() as *mut Self::FrameObject\n    }\n    fn thread_id(&self) -> u64 {\n        self.thread_id as u64\n    }\n    fn native_thread_id(&self) -> Option<u64> {\n        Some(self.native_thread_id as u64)\n    }\n    fn next(&self) -> *mut Self {\n        self.next\n    }\n    fn interp(&self) -> *mut Self::InterpreterState {\n        self.interp\n    }\n}\n\nimpl FrameObject for v3_11_0::_PyInterpreterFrame {\n    type CodeObject = v3_11_0::PyCodeObject;\n    fn code(&self) -> *mut Self::CodeObject {\n        self.f_code\n    }\n    fn lasti(&self) -> i32 {\n        // this returns the delta from the co_code, but we need to adjust for the\n        // offset from co_code.co_code_adaptive. This is slightly easier to do in the\n        // get_line_number code, so will adjust there\n        let co_code = self.f_code as *const _ as *const u8;\n        unsafe { (self.prev_instr as *const u8).offset_from(co_code) as i32 }\n    }\n    fn back(&self) -> *mut Self {\n        self.previous\n    }\n    fn is_entry(&self) -> bool {\n        self.is_entry\n    }\n}\n\nimpl Object for v3_11_0::PyObject {\n    type TypeObject = v3_11_0::PyTypeObject;\n    fn ob_type(&self) -> *mut Self::TypeObject {\n        self.ob_type as *mut Self::TypeObject\n    }\n}\n\nimpl TypeObject for v3_11_0::PyTypeObject {\n    fn name(&self) -> *const ::std::os::raw::c_char {\n        self.tp_name\n    }\n    fn dictoffset(&self) -> isize {\n        self.tp_dictoffset\n    }\n    fn flags(&self) -> usize {\n        self.tp_flags as usize\n    }\n}\n\nCompactCodeObjectImpl!(v3_11_0, PyBytesObject, PyUnicodeObject);\n\n// Python 3.10\nPython3Impl!(v3_10_0);\nPythonCommonImpl!(v3_10_0, PyUnicodeObject);\n\nimpl CodeObject for v3_10_0::PyCodeObject {\n    type BytesObject = v3_10_0::PyBytesObject;\n    type StringObject = v3_10_0::PyUnicodeObject;\n    type TupleObject = v3_10_0::PyTupleObject;\n\n    fn name(&self) -> *mut Self::StringObject {\n        self.co_name as *mut Self::StringObject\n    }\n    fn filename(&self) -> *mut Self::StringObject {\n        self.co_filename as *mut Self::StringObject\n    }\n    fn line_table(&self) -> *mut Self::BytesObject {\n        self.co_linetable as *mut Self::BytesObject\n    }\n    fn first_lineno(&self) -> i32 {\n        self.co_firstlineno\n    }\n    fn nlocals(&self) -> i32 {\n        self.co_nlocals\n    }\n    fn argcount(&self) -> i32 {\n        self.co_argcount\n    }\n    fn varnames(&self) -> *mut Self::TupleObject {\n        self.co_varnames as *mut Self::TupleObject\n    }\n    fn get_line_number(&self, lasti: i32, table: &[u8]) -> i32 {\n        // in Python 3.10 we need to double the lasti instruction value here (and no I don't know why)\n        // https://github.com/python/cpython/blob/7b88f63e1dd4006b1a08b9c9f087dd13449ecc76/Python/ceval.c#L5999\n        // Whereas in python versions up to 3.9 we didn't.\n        // https://github.com/python/cpython/blob/3.9/Python/ceval.c#L4713-L4714\n        let lasti = 2 * lasti as i32;\n\n        // unpack the line table. format is specified here:\n        // https://github.com/python/cpython/blob/3.10/Objects/lnotab_notes.txt\n        let size = table.len();\n        let mut i = 0;\n        let mut line_number: i32 = self.first_lineno();\n        let mut bytecode_address: i32 = 0;\n        while (i + 1) < size {\n            let delta: u8 = table[i];\n            let line_delta: i8 = table[i + 1] as i8;\n            i += 2;\n\n            if line_delta == -128 {\n                continue;\n            }\n\n            line_number += i32::from(line_delta);\n            bytecode_address += i32::from(delta);\n            if bytecode_address > lasti {\n                break;\n            }\n        }\n\n        line_number\n    }\n}\n\n// Python 3.9\nPythonCommonImpl!(v3_9_5, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_9_5, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_9_5);\n\n// Python 3.8\nPythonCommonImpl!(v3_8_0, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_8_0, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_8_0);\n\n// Python 3.7\nPythonCommonImpl!(v3_7_0, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_7_0, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_7_0);\n\n// Python 3.6\nPythonCommonImpl!(v3_6_6, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_6_6, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_6_6);\n\n// python 3.5 and python 3.4\nPythonCommonImpl!(v3_5_5, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_5_5, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_5_5);\n\n// python 3.3\nPythonCommonImpl!(v3_3_7, PyUnicodeObject);\nPythonCodeObjectImpl!(v3_3_7, PyBytesObject, PyUnicodeObject);\nPython3Impl!(v3_3_7);\n\n// Python 2.7\nPythonCommonImpl!(v2_7_15, PyStringObject);\nPythonCodeObjectImpl!(v2_7_15, PyStringObject, PyStringObject);\nimpl BytesObject for v2_7_15::PyStringObject {\n    fn size(&self) -> usize {\n        self.ob_size as usize\n    }\n    fn address(&self, base: usize) -> usize {\n        base + offset_of(self, &self.ob_sval)\n    }\n}\n\nimpl StringObject for v2_7_15::PyStringObject {\n    fn ascii(&self) -> bool {\n        true\n    }\n    fn kind(&self) -> u32 {\n        1\n    }\n    fn size(&self) -> usize {\n        self.ob_size as usize\n    }\n    fn address(&self, base: usize) -> usize {\n        base + offset_of(self, &self.ob_sval)\n    }\n}\n\nimpl ListObject for v2_7_15::PyListObject {\n    type Object = v2_7_15::PyObject;\n    fn size(&self) -> usize {\n        self.ob_size as usize\n    }\n    fn item(&self) -> *mut *mut Self::Object {\n        self.ob_item\n    }\n}\n\nimpl TupleObject for v2_7_15::PyTupleObject {\n    fn size(&self) -> usize {\n        self.ob_size as usize\n    }\n    fn address(&self, base: usize, index: usize) -> usize {\n        base + offset_of(self, &self.ob_item)\n            + index * std::mem::size_of::<*mut v2_7_15::PyObject>()\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    #[test]\n    fn test_py3_11_line_numbers() {\n        use crate::python_bindings::v3_11_0::PyCodeObject;\n        let code = PyCodeObject {\n            co_firstlineno: 4,\n            ..Default::default()\n        };\n\n        let table = [\n            128_u8, 0, 221, 4, 8, 132, 74, 136, 118, 209, 4, 22, 212, 4, 22, 208, 4, 22, 208, 4,\n            22, 208, 4, 22,\n        ];\n        assert_eq!(code.get_line_number(214, &table), 5);\n    }\n}\n"
  },
  {
    "path": "src/python_process_info.rs",
    "content": "use regex::Regex;\n#[cfg(windows)]\nuse regex::RegexBuilder;\n#[cfg(windows)]\nuse std::collections::HashMap;\nuse std::mem::size_of;\nuse std::path::Path;\nuse std::slice;\n\nuse anyhow::{Context, Error, Result};\nuse lazy_static::lazy_static;\nuse proc_maps::{get_process_maps, MapRange};\n#[cfg(not(target_os = \"macos\"))]\nuse remoteprocess::Pid;\nuse remoteprocess::ProcessMemory;\n\nuse crate::binary_parser::{parse_binary, BinaryInfo};\nuse crate::config::Config;\nuse crate::python_bindings::{\n    pyruntime, v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_13_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0,\n    v3_9_5,\n};\nuse crate::python_interpreters::{InterpreterState, ThreadState};\nuse crate::stack_trace::get_stack_traces;\nuse crate::version::Version;\n\n/// Holds information about the python process: memory map layout, parsed binary info\n/// for python /libpython etc.\npub struct PythonProcessInfo {\n    pub python_binary: Option<BinaryInfo>,\n    // if python was compiled with './configure --enabled-shared', code/symbols will\n    // be in a libpython.so file instead of the executable. support that.\n    pub libpython_binary: Option<BinaryInfo>,\n    pub maps: Box<dyn ContainsAddr>,\n    pub python_filename: std::path::PathBuf,\n    #[cfg(target_os = \"linux\")]\n    pub dockerized: bool,\n}\n\nimpl PythonProcessInfo {\n    pub fn new(process: &remoteprocess::Process) -> Result<PythonProcessInfo, Error> {\n        let filename = process\n            .exe()\n            .context(\"Failed to get process executable name. Check that the process is running.\")?;\n\n        #[cfg(windows)]\n        let filename = filename.to_lowercase();\n\n        #[cfg(windows)]\n        let is_python_bin = |pathname: &str| pathname.to_lowercase() == filename;\n\n        #[cfg(not(windows))]\n        let is_python_bin = |pathname: &str| pathname == filename;\n\n        // get virtual memory layout\n        let maps = get_process_maps(process.pid)?;\n        info!(\"Got virtual memory maps from pid {}:\", process.pid);\n        for map in &maps {\n            debug!(\n                \"map: {:016x}-{:016x} {}{}{} {}\",\n                map.start(),\n                map.start() + map.size(),\n                if map.is_read() { 'r' } else { '-' },\n                if map.is_write() { 'w' } else { '-' },\n                if map.is_exec() { 'x' } else { '-' },\n                map.filename()\n                    .unwrap_or(&std::path::PathBuf::from(\"\"))\n                    .display()\n            );\n        }\n\n        // parse the main python binary\n        let (python_binary, python_filename) = {\n            // Get the memory address for the executable by matching against virtual memory maps\n            let map = maps.iter().find(|m| {\n                if let Some(pathname) = m.filename() {\n                    if let Some(pathname) = pathname.to_str() {\n                        #[cfg(not(windows))]\n                        {\n                            return is_python_bin(pathname) && m.is_exec();\n                        }\n                        #[cfg(windows)]\n                        {\n                            return is_python_bin(pathname);\n                        }\n                    }\n                }\n                false\n            });\n\n            let map = match map {\n                Some(map) => map,\n                None => {\n                    warn!(\"Failed to find '{}' in virtual memory maps, falling back to first map region\", filename);\n                    // If we failed to find the executable in the virtual memory maps, just take the first file we find\n                    // sometimes on windows get_process_exe returns stale info =( https://github.com/benfred/py-spy/issues/40\n                    // and on all operating systems I've tried, the exe is the first region in the maps\n                    maps.first().ok_or_else(|| {\n                        format_err!(\"Failed to get virtual memory maps from process\")\n                    })?\n                }\n            };\n\n            #[cfg(not(target_os = \"linux\"))]\n            let filename = std::path::PathBuf::from(filename);\n\n            // use filename through /proc/pid/exe which works across docker namespaces and\n            // handles if the file was deleted\n            #[cfg(target_os = \"linux\")]\n            let filename = std::path::PathBuf::from(format!(\"/proc/{}/exe\", process.pid));\n\n            // TODO: consistent types? u64 -> usize? for map.start etc\n            let python_binary = parse_binary(&filename, map.start() as u64, map.size() as u64);\n\n            // windows symbols are stored in separate files (.pdb), load\n            #[cfg(windows)]\n            let python_binary = python_binary.and_then(|mut pb| {\n                get_windows_python_symbols(process.pid, &filename, map.start() as u64)\n                    .map(|symbols| {\n                        pb.symbols.extend(symbols);\n                        pb\n                    })\n                    .map_err(|err| err.into())\n            });\n\n            // For OSX, need to adjust main binary symbols by subtracting _mh_execute_header\n            // (which we've added to by map.start already, so undo that here)\n            #[cfg(target_os = \"macos\")]\n            let python_binary = python_binary.map(|mut pb| {\n                let offset = pb.symbols[\"_mh_execute_header\"] - map.start() as u64;\n                for address in pb.symbols.values_mut() {\n                    *address -= offset;\n                }\n\n                if pb.bss_addr != 0 {\n                    pb.bss_addr -= offset;\n                }\n                pb\n            });\n\n            (python_binary, filename)\n        };\n\n        // likewise handle libpython for python versions compiled with --enabled-shared\n        let libpython_binary = {\n            let libmaps: Vec<_> = maps\n                .iter()\n                .filter(|m| {\n                    if let Some(pathname) = m.filename() {\n                        if let Some(pathname) = pathname.to_str() {\n                            #[cfg(not(windows))]\n                            {\n                                return is_python_lib(pathname) && m.is_exec();\n                            }\n                            #[cfg(windows)]\n                            {\n                                return is_python_lib(pathname);\n                            }\n                        }\n                    }\n                    false\n                })\n                .collect();\n\n            let mut libpython_binary: Option<BinaryInfo> = None;\n\n            #[cfg(not(target_os = \"linux\"))]\n            let libpython_option = if !libmaps.is_empty() {\n                Some(&libmaps[0])\n            } else {\n                None\n            };\n            #[cfg(target_os = \"linux\")]\n            let libpython_option = libmaps.iter().min_by_key(|m| m.offset);\n\n            if let Some(libpython) = libpython_option {\n                if let Some(filename) = &libpython.filename() {\n                    info!(\"Found libpython binary @ {}\", filename.display());\n\n                    // on linux the process could be running in docker, access the filename through procfs\n                    #[cfg(target_os = \"linux\")]\n                    let filename = &std::path::PathBuf::from(format!(\n                        \"/proc/{}/root{}\",\n                        process.pid,\n                        filename.display()\n                    ));\n\n                    #[allow(unused_mut)]\n                    let mut parsed =\n                        parse_binary(filename, libpython.start() as u64, libpython.size() as u64)?;\n                    #[cfg(windows)]\n                    parsed.symbols.extend(get_windows_python_symbols(\n                        process.pid,\n                        filename,\n                        libpython.start() as u64,\n                    )?);\n                    libpython_binary = Some(parsed);\n                }\n            }\n\n            // On OSX, it's possible that the Python library is a dylib loaded up from the system\n            // framework (like /System/Library/Frameworks/Python.framework/Versions/2.7/Python)\n            // In this case read in the dyld_info information and figure out the filename from there\n            #[cfg(target_os = \"macos\")]\n            {\n                if libpython_binary.is_none() {\n                    use proc_maps::mac_maps::get_dyld_info;\n                    let dyld_infos = get_dyld_info(process.pid)?;\n\n                    for dyld in &dyld_infos {\n                        let segname =\n                            unsafe { std::ffi::CStr::from_ptr(dyld.segment.segname.as_ptr()) };\n                        debug!(\n                            \"dyld: {:016x}-{:016x} {:10} {}\",\n                            dyld.segment.vmaddr,\n                            dyld.segment.vmaddr + dyld.segment.vmsize,\n                            segname.to_string_lossy(),\n                            dyld.filename.display()\n                        );\n                    }\n\n                    let python_dyld_data = dyld_infos.iter().find(|m| {\n                        if let Some(filename) = m.filename.to_str() {\n                            return is_python_framework(filename)\n                                && m.segment.segname[0..7] == [95, 95, 68, 65, 84, 65, 0];\n                        }\n                        false\n                    });\n\n                    if let Some(libpython) = python_dyld_data {\n                        info!(\n                            \"Found libpython binary from dyld @ {}\",\n                            libpython.filename.display()\n                        );\n\n                        let mut binary = parse_binary(\n                            &libpython.filename,\n                            libpython.segment.vmaddr,\n                            libpython.segment.vmsize,\n                        )?;\n\n                        // TODO: bss addr offsets returned from parsing binary are wrong\n                        // (assumes data section isn't split from text section like done here).\n                        // BSS occurs somewhere in the data section, just scan that\n                        // (could later tighten this up to look at segment sections too)\n                        binary.bss_addr = libpython.segment.vmaddr;\n                        binary.bss_size = libpython.segment.vmsize;\n                        libpython_binary = Some(binary);\n                    }\n                }\n            }\n\n            libpython_binary\n        };\n\n        // If we have a libpython binary - we can tolerate failures on parsing the main python binary.\n        let python_binary = match libpython_binary {\n            None => Some(python_binary.context(\"Failed to parse python binary\")?),\n            _ => python_binary.ok(),\n        };\n\n        #[cfg(target_os = \"linux\")]\n        let dockerized = is_dockerized(process.pid).unwrap_or(false);\n\n        Ok(PythonProcessInfo {\n            python_binary,\n            libpython_binary,\n            maps: Box::new(maps),\n            python_filename,\n            #[cfg(target_os = \"linux\")]\n            dockerized,\n        })\n    }\n\n    pub fn get_symbol(&self, symbol: &str) -> Option<&u64> {\n        if let Some(ref pb) = self.python_binary {\n            if let Some(addr) = pb.symbols.get(symbol) {\n                info!(\"got symbol {} (0x{:016x}) from python binary\", symbol, addr);\n                return Some(addr);\n            }\n        }\n\n        if let Some(ref binary) = self.libpython_binary {\n            if let Some(addr) = binary.symbols.get(symbol) {\n                info!(\n                    \"got symbol {} (0x{:016x}) from libpython binary\",\n                    symbol, addr\n                );\n                return Some(addr);\n            }\n        }\n        None\n    }\n}\n\n/// Returns the version of python running in the process.\npub fn get_python_version<P>(python_info: &PythonProcessInfo, process: &P) -> Result<Version, Error>\nwhere\n    P: ProcessMemory,\n{\n    // If possible, grab the sys.version string from the processes memory (mac osx).\n    if let Some(&addr) = python_info\n        .get_symbol(\"Py_GetVersion.version\")\n        .or_else(|| python_info.get_symbol(\"version\"))\n    {\n        info!(\"Getting version from symbol address\");\n        if let Ok(bytes) = process.copy(addr as usize, 128) {\n            if let Ok(version) = Version::scan_bytes(&bytes) {\n                return Ok(version);\n            }\n        }\n    }\n\n    // otherwise get version info from scanning BSS section for sys.version string\n    if let Some(ref pb) = python_info.python_binary {\n        info!(\"Getting version from python binary BSS\");\n        let bss = process.copy(pb.bss_addr as usize, pb.bss_size as usize)?;\n        match Version::scan_bytes(&bss) {\n            Ok(version) => return Ok(version),\n            Err(err) => info!(\"Failed to get version from BSS section: {}\", err),\n        }\n    }\n\n    // try again if there is a libpython.so\n    if let Some(ref libpython) = python_info.libpython_binary {\n        info!(\"Getting version from libpython BSS\");\n        let bss = process.copy(libpython.bss_addr as usize, libpython.bss_size as usize)?;\n        match Version::scan_bytes(&bss) {\n            Ok(version) => return Ok(version),\n            Err(err) => info!(\"Failed to get version from libpython BSS section: {}\", err),\n        }\n    }\n\n    // the python_filename might have the version encoded in it (/usr/bin/python3.5 etc).\n    // try reading that in (will miss patch level on python, but that shouldn't matter)\n    info!(\n        \"Trying to get version from path: {}\",\n        python_info.python_filename.display()\n    );\n    let path = Path::new(&python_info.python_filename);\n    if let Some(python) = path.file_name() {\n        if let Some(python) = python.to_str() {\n            if let Some(stripped_python) = python.strip_prefix(\"python\") {\n                let tokens: Vec<&str> = stripped_python.split('.').collect();\n                if tokens.len() >= 2 {\n                    if let (Ok(major), Ok(minor)) =\n                        (tokens[0].parse::<u64>(), tokens[1].parse::<u64>())\n                    {\n                        return Ok(Version {\n                            major,\n                            minor,\n                            patch: 0,\n                            release_flags: \"\".to_owned(),\n                            build_metadata: None,\n                        });\n                    }\n                }\n            }\n        }\n    }\n    Err(format_err!(\n        \"Failed to find python version from target process\"\n    ))\n}\n\npub fn get_interpreter_address<P>(\n    python_info: &PythonProcessInfo,\n    process: &P,\n    version: &Version,\n) -> Result<usize, Error>\nwhere\n    P: ProcessMemory,\n{\n    // get the address of the main PyInterpreterState object from loaded symbols if we can\n    // (this tends to be faster than scanning through the bss section)\n    match version {\n        Version {\n            major: 3,\n            minor: 13,\n            ..\n        } => {\n            if let Some(&addr) = python_info.get_symbol(\"_PyRuntime\") {\n                // figure out the interpreters_head location using the debug_offsets\n                let debug_offsets: v3_13_0::_Py_DebugOffsets =\n                    process.copy_struct(addr as usize)?;\n                let addr = process.copy_struct(\n                    addr as usize + debug_offsets.runtime_state.interpreters_head as usize,\n                )?;\n\n                // Make sure the interpreter addr is valid before returning\n                match check_interpreter_addresses(&[addr], &*python_info.maps, process, version) {\n                    Ok(addr) => return Ok(addr),\n                    Err(_) => {\n                        warn!(\n                            \"Interpreter address from _PyRuntime symbol is invalid {:016x}\",\n                            addr\n                        );\n                    }\n                };\n            }\n        }\n        Version {\n            major: 3,\n            minor: 7..=12,\n            ..\n        } => {\n            if let Some(&addr) = python_info.get_symbol(\"_PyRuntime\") {\n                let addr = process\n                    .copy_struct(addr as usize + pyruntime::get_interp_head_offset(version))?;\n\n                // Make sure the interpreter addr is valid before returning\n                match check_interpreter_addresses(&[addr], &*python_info.maps, process, version) {\n                    Ok(addr) => return Ok(addr),\n                    Err(_) => {\n                        warn!(\n                            \"Interpreter address from _PyRuntime symbol is invalid {:016x}\",\n                            addr\n                        );\n                    }\n                };\n            }\n        }\n        _ => {\n            if let Some(&addr) = python_info.get_symbol(\"interp_head\") {\n                let addr = process.copy_struct(addr as usize)?;\n                match check_interpreter_addresses(&[addr], &*python_info.maps, process, version) {\n                    Ok(addr) => return Ok(addr),\n                    Err(_) => {\n                        warn!(\n                            \"Interpreter address from interp_head symbol is invalid {:016x}\",\n                            addr\n                        );\n                    }\n                };\n            }\n        }\n    };\n    info!(\"Failed to find runtime address from symbols, scanning BSS section from main binary\");\n\n    // try scanning the BSS section of the binary for things that might be the interpreterstate\n    let err = if let Some(ref pb) = python_info.python_binary {\n        match get_interpreter_address_from_binary(pb, &*python_info.maps, process, version) {\n            Ok(addr) => return Ok(addr),\n            err => Some(err),\n        }\n    } else {\n        None\n    };\n    // Before giving up, try again if there is a libpython.so\n    if let Some(ref lpb) = python_info.libpython_binary {\n        info!(\"Failed to get interpreter from binary BSS, scanning libpython BSS\");\n        match get_interpreter_address_from_binary(lpb, &*python_info.maps, process, version) {\n            Ok(addr) => Ok(addr),\n            lib_err => err.unwrap_or(lib_err),\n        }\n    } else {\n        err.expect(\"Both python and libpython are invalid.\")\n    }\n}\n\nfn get_interpreter_address_from_binary<P>(\n    binary: &BinaryInfo,\n    maps: &dyn ContainsAddr,\n    process: &P,\n    version: &Version,\n) -> Result<usize, Error>\nwhere\n    P: ProcessMemory,\n{\n    // First check the pyruntime section it was found\n    if binary.pyruntime_addr != 0 {\n        let bss = process.copy(\n            binary.pyruntime_addr as usize,\n            binary.pyruntime_size as usize,\n        )?;\n        #[allow(clippy::cast_ptr_alignment)]\n        let addrs = unsafe {\n            slice::from_raw_parts(bss.as_ptr() as *const usize, bss.len() / size_of::<usize>())\n        };\n        if let Ok(addr) = check_interpreter_addresses(addrs, maps, process, version) {\n            return Ok(addr);\n        }\n    }\n\n    // We're going to scan the BSS/data section for things, and try to narrowly scan things that\n    // look like pointers to PyinterpreterState\n    let bss = process.copy(binary.bss_addr as usize, binary.bss_size as usize)?;\n\n    #[allow(clippy::cast_ptr_alignment)]\n    let addrs = unsafe {\n        slice::from_raw_parts(bss.as_ptr() as *const usize, bss.len() / size_of::<usize>())\n    };\n    check_interpreter_addresses(addrs, maps, process, version)\n}\n\n// Checks whether a block of memory (from BSS/.data etc) contains pointers that are pointing\n// to a valid PyInterpreterState\nfn check_interpreter_addresses<P>(\n    addrs: &[usize],\n    maps: &dyn ContainsAddr,\n    process: &P,\n    version: &Version,\n) -> Result<usize, Error>\nwhere\n    P: ProcessMemory,\n{\n    // This function does all the work, but needs a type of the interpreter\n    fn check<I, P>(addrs: &[usize], maps: &dyn ContainsAddr, process: &P) -> Result<usize, Error>\n    where\n        I: InterpreterState,\n        P: ProcessMemory,\n    {\n        for &addr in addrs {\n            if maps.contains_addr(addr) {\n                // get the pythreadstate pointer from the interpreter object, and if it is also\n                // a valid pointer then load it up.\n                let threadstate_ptr_ptr = I::threadstate_ptr_ptr(addr);\n                let maybe_threads = process\n                    .copy_struct(threadstate_ptr_ptr as usize)\n                    .context(\"Failed to copy PyThreadState head pointer\");\n\n                let threads: *const I::ThreadState = match maybe_threads {\n                    Ok(threads) => threads,\n                    Err(_) => continue,\n                };\n\n                if maps.contains_addr(threads as usize) {\n                    // If the threadstate points back to the interpreter like we expect, then\n                    // this is almost certainly the address of the intrepreter\n                    let thread = match process.copy_pointer(threads) {\n                        Ok(thread) => thread,\n                        Err(_) => continue,\n                    };\n\n                    // as a final sanity check, try getting the stack_traces, and only return if this works\n                    if thread.interp() as usize == addr\n                        && get_stack_traces::<I, P>(addr, process, 0, None).is_ok()\n                    {\n                        return Ok(addr);\n                    }\n                }\n            }\n        }\n        Err(format_err!(\n            \"Failed to find a python interpreter in the .data section\"\n        ))\n    }\n\n    // different versions have different layouts, check as appropriate\n    match version {\n        Version {\n            major: 2,\n            minor: 3..=7,\n            ..\n        } => check::<v2_7_15::_is, P>(addrs, maps, process),\n        Version {\n            major: 3, minor: 3, ..\n        } => check::<v3_3_7::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 4..=5,\n            ..\n        } => check::<v3_5_5::_is, P>(addrs, maps, process),\n        Version {\n            major: 3, minor: 6, ..\n        } => check::<v3_6_6::_is, P>(addrs, maps, process),\n        Version {\n            major: 3, minor: 7, ..\n        } => check::<v3_7_0::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 8,\n            patch: 0,\n            ..\n        } => match version.release_flags.as_ref() {\n            \"a1\" | \"a2\" | \"a3\" => check::<v3_7_0::_is, P>(addrs, maps, process),\n            _ => check::<v3_8_0::_is, P>(addrs, maps, process),\n        },\n        Version {\n            major: 3, minor: 8, ..\n        } => check::<v3_8_0::_is, P>(addrs, maps, process),\n        Version {\n            major: 3, minor: 9, ..\n        } => check::<v3_9_5::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 10,\n            ..\n        } => check::<v3_10_0::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 11,\n            ..\n        } => check::<v3_11_0::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 12,\n            ..\n        } => check::<v3_12_0::_is, P>(addrs, maps, process),\n        Version {\n            major: 3,\n            minor: 13,\n            ..\n        } => check::<v3_13_0::_is, P>(addrs, maps, process),\n        _ => Err(format_err!(\"Unsupported version of Python: {}\", version)),\n    }\n}\n\npub fn get_threadstate_address<P>(\n    interpreter_address: usize,\n    python_info: &PythonProcessInfo,\n    process: &P,\n    version: &Version,\n    config: &Config,\n) -> Result<usize, Error>\nwhere\n    P: ProcessMemory,\n{\n    let threadstate_address = match version {\n        Version {\n            major: 3,\n            minor: 13,\n            ..\n        } => {\n            let gil_ptr = interpreter_address + std::mem::offset_of!(v3_13_0::_is, ceval.gil);\n\n            process.copy_struct::<usize>(gil_ptr)?\n        }\n        Version {\n            major: 3,\n            minor: 12,\n            ..\n        } => {\n            let gil_ptr = interpreter_address + std::mem::offset_of!(v3_12_0::_is, ceval.gil);\n            let gil: usize = process.copy_struct(gil_ptr)?;\n            gil\n        }\n        Version {\n            major: 3,\n            minor: 7..=11,\n            ..\n        } => match python_info.get_symbol(\"_PyRuntime\") {\n            Some(&addr) => {\n                if let Some(offset) = pyruntime::get_tstate_current_offset(version) {\n                    info!(\"Found _PyRuntime @ 0x{:016x}, getting gilstate.tstate_current from offset 0x{:x}\",\n                            addr, offset);\n                    addr as usize + offset\n                } else {\n                    error_if_gil(\n                        config,\n                        version,\n                        \"unknown pyruntime.gilstate.tstate_current offset\",\n                    )?;\n                    0\n                }\n            }\n            None => {\n                error_if_gil(config, version, \"failed to find _PyRuntime symbol\")?;\n                0\n            }\n        },\n        _ => match python_info.get_symbol(\"_PyThreadState_Current\") {\n            Some(&addr) => {\n                info!(\"Found _PyThreadState_Current @ 0x{:016x}\", addr);\n                addr as usize\n            }\n            None => {\n                error_if_gil(\n                    config,\n                    version,\n                    \"failed to find _PyThreadState_Current symbol\",\n                )?;\n                0\n            }\n        },\n    };\n\n    Ok(threadstate_address)\n}\n\nfn error_if_gil(config: &Config, version: &Version, msg: &str) -> Result<(), Error> {\n    lazy_static! {\n        static ref WARNED: std::sync::atomic::AtomicBool =\n            std::sync::atomic::AtomicBool::new(false);\n    }\n\n    if config.gil_only {\n        if !WARNED.load(std::sync::atomic::Ordering::Relaxed) {\n            // only print this once\n            eprintln!(\n                \"Cannot detect GIL holding in version '{version}' on the current platform (reason: {msg})\"\n            );\n            eprintln!(\"Please open an issue in https://github.com/benfred/py-spy with the Python version and your platform.\");\n            WARNED.store(true, std::sync::atomic::Ordering::Relaxed);\n        }\n        Err(format_err!(\n            \"Cannot detect GIL holding in version '{}' on the current platform (reason: {})\",\n            version,\n            msg\n        ))\n    } else {\n        warn!(\"Unable to detect GIL usage: {}\", msg);\n        Ok(())\n    }\n}\n\npub trait ContainsAddr {\n    fn contains_addr(&self, addr: usize) -> bool;\n}\n\nimpl ContainsAddr for Vec<MapRange> {\n    #[cfg(windows)]\n    fn contains_addr(&self, _addr: usize) -> bool {\n        // On windows, we can't just check if a pointer is valid by looking to see if it points\n        // to something in the virtual memory map. Brute-force it instead\n        true\n    }\n\n    #[cfg(not(windows))]\n    fn contains_addr(&self, addr: usize) -> bool {\n        proc_maps::maps_contain_addr(addr, self)\n    }\n}\n\n#[cfg(target_os = \"linux\")]\nfn is_dockerized(pid: Pid) -> Result<bool, Error> {\n    let self_mnt = std::fs::read_link(\"/proc/self/ns/mnt\")?;\n    let target_mnt = std::fs::read_link(format!(\"/proc/{}/ns/mnt\", pid))?;\n    Ok(self_mnt != target_mnt)\n}\n\n// We can't use goblin to parse external symbol files (like in a separate .pdb file) on windows,\n// So use the win32 api to load up the couple of symbols we need on windows. Note:\n// we still can get export's from the PE file\n#[cfg(windows)]\npub fn get_windows_python_symbols(\n    pid: Pid,\n    filename: &Path,\n    offset: u64,\n) -> std::io::Result<HashMap<String, u64>> {\n    use proc_maps::win_maps::SymbolLoader;\n\n    let handler = SymbolLoader::new(pid)?;\n    let _module = handler.load_module(filename)?; // need to keep this module in scope\n\n    let mut ret = HashMap::new();\n\n    // currently we only need a subset of symbols, and enumerating the symbols is\n    // expensive (via SymEnumSymbolsW), so rather than load up all symbols like we\n    // do for goblin, just load the the couple we need directly.\n    for symbol in [\"_PyThreadState_Current\", \"interp_head\", \"_PyRuntime\"].iter() {\n        if let Ok((base, addr)) = handler.address_from_name(symbol) {\n            // If we have a module base (ie from PDB), need to adjust by the offset\n            // otherwise seems like we can take address directly\n            let addr = if base == 0 {\n                addr\n            } else {\n                offset + addr - base\n            };\n            ret.insert(String::from(*symbol), addr);\n        }\n    }\n\n    Ok(ret)\n}\n\n#[cfg(any(target_os = \"linux\", target_os = \"freebsd\"))]\npub fn is_python_lib(pathname: &str) -> bool {\n    lazy_static! {\n        static ref RE: Regex = Regex::new(r\"/libpython\\d.\\d\\d?(m|d|u)?.so\").unwrap();\n    }\n    RE.is_match(pathname)\n}\n\n#[cfg(target_os = \"macos\")]\npub fn is_python_lib(pathname: &str) -> bool {\n    lazy_static! {\n        static ref RE: Regex = Regex::new(r\"/libpython\\d.\\d\\d?(m|d|u)?.(dylib|so)$\").unwrap();\n    }\n    RE.is_match(pathname) || is_python_framework(pathname)\n}\n\n#[cfg(windows)]\npub fn is_python_lib(pathname: &str) -> bool {\n    lazy_static! {\n        static ref RE: Regex = RegexBuilder::new(r\"\\\\python\\d\\d\\d?(m|d|u)?.dll$\")\n            .case_insensitive(true)\n            .build()\n            .unwrap();\n    }\n    RE.is_match(pathname)\n}\n\n#[cfg(target_os = \"macos\")]\npub fn is_python_framework(pathname: &str) -> bool {\n    pathname.ends_with(\"/Python\") && !pathname.contains(\"Python.app\")\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    #[cfg(target_os = \"macos\")]\n    #[test]\n    fn test_is_python_lib() {\n        assert!(is_python_lib(\"~/Anaconda2/lib/libpython2.7.dylib\"));\n\n        // python lib configured with --with-pydebug (flag: d)\n        assert!(is_python_lib(\"/lib/libpython3.4d.dylib\"));\n\n        // configured --with-pymalloc (flag: m)\n        assert!(is_python_lib(\"/usr/local/lib/libpython3.8m.dylib\"));\n\n        // python2 configured with --with-wide-unicode (flag: u)\n        assert!(is_python_lib(\"./libpython2.7u.dylib\"));\n\n        assert!(!is_python_lib(\"/libboost_python.dylib\"));\n        assert!(!is_python_lib(\"/lib/heapq.cpython-36m-darwin.dylib\"));\n    }\n\n    #[cfg(any(target_os = \"linux\", target_os = \"freebsd\"))]\n    #[test]\n    fn test_is_python_lib() {\n        // libpython bundled by pyinstaller https://github.com/benfred/py-spy/issues/42\n        assert!(is_python_lib(\"/tmp/_MEIOqzg01/libpython2.7.so.1.0\"));\n\n        // test debug/malloc/unicode flags\n        assert!(is_python_lib(\"./libpython2.7.so\"));\n        assert!(is_python_lib(\"/usr/lib/libpython3.4d.so\"));\n        assert!(is_python_lib(\"/usr/local/lib/libpython3.8m.so\"));\n        assert!(is_python_lib(\"/usr/lib/libpython2.7u.so\"));\n\n        // don't blindly match libraries with python in the name (boost_python etc)\n        assert!(!is_python_lib(\"/usr/lib/libboost_python.so\"));\n        assert!(!is_python_lib(\n            \"/usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.58.0\"\n        ));\n        assert!(!is_python_lib(\"/usr/lib/libboost_python-py35.so\"));\n    }\n\n    #[cfg(windows)]\n    #[test]\n    fn test_is_python_lib() {\n        assert!(is_python_lib(\n            \"C:\\\\Users\\\\test\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python37\\\\python37.dll\"\n        ));\n        // .NET host via https://github.com/pythonnet/pythonnet\n        assert!(is_python_lib(\n            \"C:\\\\Users\\\\test\\\\AppData\\\\Local\\\\Programs\\\\Python\\\\Python37\\\\python37.DLL\"\n        ));\n    }\n\n    #[cfg(target_os = \"macos\")]\n    #[test]\n    fn test_python_frameworks() {\n        // homebrew v2\n        assert!(!is_python_framework(\"/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python\"));\n        assert!(is_python_framework(\n            \"/usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/Python\"\n        ));\n\n        // System python from osx 10.13.6 (high sierra)\n        assert!(!is_python_framework(\"/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python\"));\n        assert!(is_python_framework(\n            \"/System/Library/Frameworks/Python.framework/Versions/2.7/Python\"\n        ));\n\n        // pyenv 3.6.6 with OSX framework enabled (https://github.com/benfred/py-spy/issues/15)\n        // env PYTHON_CONFIGURE_OPTS=\"--enable-framework\" pyenv install 3.6.6\n        assert!(is_python_framework(\n            \"/Users/ben/.pyenv/versions/3.6.6/Python.framework/Versions/3.6/Python\"\n        ));\n        assert!(!is_python_framework(\"/Users/ben/.pyenv/versions/3.6.6/Python.framework/Versions/3.6/Resources/Python.app/Contents/MacOS/Python\"));\n\n        // single file pyinstaller\n        assert!(is_python_framework(\n            \"/private/var/folders/3x/qy479lpd1fb2q88lc9g4d3kr0000gn/T/_MEI2Akvi8/Python\"\n        ));\n    }\n}\n"
  },
  {
    "path": "src/python_spy.rs",
    "content": "use std::collections::HashMap;\n#[cfg(all(target_os = \"linux\", feature = \"unwind\"))]\nuse std::collections::HashSet;\n#[cfg(all(target_os = \"linux\", feature = \"unwind\"))]\nuse std::iter::FromIterator;\nuse std::path::Path;\n\nuse anyhow::{Context, Error, Result};\nuse remoteprocess::{Pid, Process, ProcessMemory, Tid};\n\nuse crate::config::{Config, LockingStrategy};\n#[cfg(feature = \"unwind\")]\nuse crate::native_stack_trace::NativeStack;\nuse crate::python_bindings::{\n    v2_7_15, v3_10_0, v3_11_0, v3_12_0, v3_13_0, v3_3_7, v3_5_5, v3_6_6, v3_7_0, v3_8_0, v3_9_5,\n};\nuse crate::python_data_access::format_variable;\nuse crate::python_interpreters::{InterpreterState, ThreadState};\nuse crate::python_process_info::{\n    get_interpreter_address, get_python_version, get_threadstate_address, PythonProcessInfo,\n};\nuse crate::python_threading::thread_name_lookup;\nuse crate::stack_trace::{get_gil_threadid, get_stack_trace, StackTrace};\nuse crate::version::Version;\n\n/// Lets you retrieve stack traces of a running python program\npub struct PythonSpy {\n    pub pid: Pid,\n    pub process: Process,\n    pub version: Version,\n    pub interpreter_address: usize,\n    pub threadstate_address: usize,\n    pub config: Config,\n    #[cfg(feature = \"unwind\")]\n    pub native: Option<NativeStack>,\n    pub short_filenames: HashMap<String, Option<String>>,\n    pub python_thread_ids: HashMap<u64, Tid>,\n    pub python_thread_names: HashMap<u64, String>,\n    #[cfg(target_os = \"linux\")]\n    pub dockerized: bool,\n}\n\nimpl PythonSpy {\n    /// Constructs a new PythonSpy object.\n    pub fn new(pid: Pid, config: &Config) -> Result<PythonSpy, Error> {\n        let process = remoteprocess::Process::new(pid)\n            .context(\"Failed to open process - check if it is running.\")?;\n\n        // get basic process information (memory maps/symbols etc)\n        let python_info = PythonProcessInfo::new(&process)?;\n\n        // lock the process when loading up on freebsd (rather than locking\n        // on every memory read). Needs done after getting python process info\n        // because procmaps also tries to attach w/ ptrace on freebsd\n        #[cfg(target_os = \"freebsd\")]\n        let _lock = process.lock();\n\n        let version = get_python_version(&python_info, &process)?;\n        info!(\"python version {} detected\", version);\n\n        let interpreter_address = get_interpreter_address(&python_info, &process, &version)?;\n        info!(\"Found interpreter at 0x{:016x}\", interpreter_address);\n\n        // lets us figure out which thread has the GIL\n        let threadstate_address = get_threadstate_address(\n            interpreter_address,\n            &python_info,\n            &process,\n            &version,\n            config,\n        )?;\n\n        #[cfg(feature = \"unwind\")]\n        let native = if config.native {\n            Some(NativeStack::new(\n                pid,\n                python_info.python_binary,\n                python_info.libpython_binary,\n            )?)\n        } else {\n            None\n        };\n\n        Ok(PythonSpy {\n            pid,\n            process,\n            version,\n            interpreter_address,\n            threadstate_address,\n            #[cfg(feature = \"unwind\")]\n            native,\n            #[cfg(target_os = \"linux\")]\n            dockerized: python_info.dockerized,\n            config: config.clone(),\n            short_filenames: HashMap::new(),\n            python_thread_ids: HashMap::new(),\n            python_thread_names: HashMap::new(),\n        })\n    }\n\n    /// Creates a PythonSpy object, retrying up to max_retries times.\n    /// Mainly useful for the case where the process is just started and\n    /// symbols or the python interpreter might not be loaded yet.\n    pub fn retry_new(pid: Pid, config: &Config, max_retries: u64) -> Result<PythonSpy, Error> {\n        let mut retries = 0;\n        loop {\n            let err = match PythonSpy::new(pid, config) {\n                Ok(mut process) => {\n                    // verify that we can load a stack trace before returning success\n                    match process.get_stack_traces() {\n                        Ok(_) => return Ok(process),\n                        Err(err) => err,\n                    }\n                }\n                Err(err) => err,\n            };\n\n            // If we failed, retry a couple times before returning the last error\n            retries += 1;\n            if retries >= max_retries {\n                return Err(err);\n            }\n            info!(\"Failed to connect to process, retrying. Error: {}\", err);\n            std::thread::sleep(std::time::Duration::from_millis(20));\n        }\n    }\n\n    /// Gets a StackTrace for each thread in the current process\n    pub fn get_stack_traces(&mut self) -> Result<Vec<StackTrace>, Error> {\n        match self.version {\n            // ABI for 2.3/2.4/2.5/2.6/2.7 is compatible for our purpose\n            Version {\n                major: 2,\n                minor: 3..=7,\n                ..\n            } => self._get_stack_traces::<v2_7_15::_is>(),\n            Version {\n                major: 3, minor: 3, ..\n            } => self._get_stack_traces::<v3_3_7::_is>(),\n            // ABI for 3.4 and 3.5 is the same for our purposes\n            Version {\n                major: 3, minor: 4, ..\n            } => self._get_stack_traces::<v3_5_5::_is>(),\n            Version {\n                major: 3, minor: 5, ..\n            } => self._get_stack_traces::<v3_5_5::_is>(),\n            Version {\n                major: 3, minor: 6, ..\n            } => self._get_stack_traces::<v3_6_6::_is>(),\n            Version {\n                major: 3, minor: 7, ..\n            } => self._get_stack_traces::<v3_7_0::_is>(),\n            // v3.8.0a1 to v3.8.0a3 is compatible with 3.7 ABI, but later versions of 3.8.0 aren't\n            Version {\n                major: 3,\n                minor: 8,\n                patch: 0,\n                ..\n            } => match self.version.release_flags.as_ref() {\n                \"a1\" | \"a2\" | \"a3\" => self._get_stack_traces::<v3_7_0::_is>(),\n                _ => self._get_stack_traces::<v3_8_0::_is>(),\n            },\n            Version {\n                major: 3, minor: 8, ..\n            } => self._get_stack_traces::<v3_8_0::_is>(),\n            Version {\n                major: 3, minor: 9, ..\n            } => self._get_stack_traces::<v3_9_5::_is>(),\n            Version {\n                major: 3,\n                minor: 10,\n                ..\n            } => self._get_stack_traces::<v3_10_0::_is>(),\n            Version {\n                major: 3,\n                minor: 11,\n                ..\n            } => self._get_stack_traces::<v3_11_0::_is>(),\n            Version {\n                major: 3,\n                minor: 12,\n                ..\n            } => self._get_stack_traces::<v3_12_0::_is>(),\n            Version {\n                major: 3,\n                minor: 13,\n                ..\n            } => self._get_stack_traces::<v3_13_0::_is>(),\n            _ => Err(format_err!(\n                \"Unsupported version of Python: {}\",\n                self.version\n            )),\n        }\n    }\n\n    // implementation of get_stack_traces, where we have a type for the InterpreterState\n    fn _get_stack_traces<I: InterpreterState>(&mut self) -> Result<Vec<StackTrace>, Error> {\n        // Query the OS to get if each thread in the process is running or not\n        let mut thread_activity = HashMap::new();\n        if self.config.gil_only {\n            // Don't need to collect thread activity if we're only getting the\n            // GIL thread: If we're holding the GIL we're by definition active.\n        } else {\n            for thread in self.process.threads()?.iter() {\n                let threadid: Tid = thread.id()?;\n                let Ok(active) = thread.active() else {\n                    // Do not fail all sampling if a single thread died between entering the loop\n                    // and reading its status.\n                    continue;\n                };\n                thread_activity.insert(threadid, active);\n            }\n        }\n\n        // Lock the process if appropriate. Note we have to lock AFTER getting the thread\n        // activity status from the OS (otherwise each thread would report being inactive always).\n        // This has the potential for race conditions (in that the thread activity could change\n        // between getting the status and locking the thread, but seems unavoidable right now\n        let _lock = if self.config.blocking == LockingStrategy::Lock {\n            Some(self.process.lock().context(\"Failed to suspend process\")?)\n        } else {\n            None\n        };\n\n        // Find PyThreadState, and loop over all the python threads\n        let threadstate_ptr_ptr = I::threadstate_ptr_ptr(self.interpreter_address);\n        let threads_head = self\n            .process\n            .copy_pointer(threadstate_ptr_ptr)\n            .context(\"Failed to copy PyThreadState head pointer\")?;\n\n        // get the threadid of the gil if appropriate\n        let gil_thread_id = get_gil_threadid::<I, Process>(self.threadstate_address, &self.process)\n            .context(\"failed to get gil_thread_id\")?;\n\n        let mut traces = Vec::new();\n        let mut threads = threads_head;\n        while !threads.is_null() {\n            // Get the stack trace of the python thread\n            let thread = self\n                .process\n                .copy_pointer(threads)\n                .context(\"Failed to copy PyThreadState\")?;\n            threads = thread.next();\n\n            let python_thread_id = thread.thread_id();\n            let owns_gil = python_thread_id == gil_thread_id;\n\n            if self.config.gil_only && !owns_gil {\n                continue;\n            }\n\n            let mut trace = get_stack_trace(\n                &thread,\n                &self.process,\n                self.config.dump_locals > 0,\n                self.config.lineno,\n            )?;\n\n            // Try getting the native thread id\n\n            // python 3.11+ has the native thread id directly on the PyThreadState object,\n            // for older versions of python, try using OS specific code to get the native\n            // thread id (doesn't work on freebsd, or on arm/i686 processors on linux)\n            if trace.os_thread_id.is_none() {\n                let mut os_thread_id =\n                    self._get_os_thread_id::<I>(python_thread_id, threads_head)?;\n\n                // linux can see issues where pthread_ids get recycled for new OS threads,\n                // which totally breaks the caching we were doing here. Detect this and retry\n                if let Some(tid) = os_thread_id {\n                    if !thread_activity.is_empty() && !thread_activity.contains_key(&tid) {\n                        info!(\"clearing away thread id caches, thread {} has exited\", tid);\n                        self.python_thread_ids.clear();\n                        self.python_thread_names.clear();\n                        os_thread_id =\n                            self._get_os_thread_id::<I>(python_thread_id, threads_head)?;\n                    }\n                }\n\n                trace.os_thread_id = os_thread_id.map(|id| id as u64);\n            }\n\n            trace.thread_name = self._get_python_thread_name(python_thread_id);\n            trace.owns_gil = owns_gil;\n            trace.pid = self.process.pid;\n\n            // Figure out if the thread is sleeping from the OS if possible\n            trace.active = true;\n            if let Some(id) = trace.os_thread_id {\n                let id = id as Tid;\n                if let Some(active) = thread_activity.get(&id as _) {\n                    trace.active = *active;\n                }\n            }\n\n            // fallback to using a heuristic if we think the thread is still active\n            // Note that on linux the OS thread activity can only be gotten on x86_64\n            // processors and even then seems to be wrong occasionally in thinking 'select'\n            // calls are active (which seems related to the thread locking code,\n            // this problem doesn't seem to happen with the --nonblocking option)\n            // Note: this should be done before the native merging for correct results\n            if trace.active {\n                trace.active = !self._heuristic_is_thread_idle(&trace);\n            }\n\n            // Merge in the native stack frames if necessary\n            #[cfg(feature = \"unwind\")]\n            {\n                if self.config.native {\n                    if let Some(native) = self.native.as_mut() {\n                        let thread_id = trace\n                            .os_thread_id\n                            .ok_or_else(|| format_err!(\"failed to get os threadid\"))?;\n                        let os_thread = remoteprocess::Thread::new(thread_id as Tid)?;\n                        trace.frames = native.merge_native_thread(&trace.frames, &os_thread)?\n                    }\n                }\n            }\n\n            for frame in &mut trace.frames {\n                frame.short_filename = self.shorten_filename(&frame.filename);\n                if let Some(locals) = frame.locals.as_mut() {\n                    let max_length = (128 * self.config.dump_locals) as isize;\n                    for local in locals {\n                        let repr = format_variable::<I, Process>(\n                            &self.process,\n                            &self.version,\n                            local.addr,\n                            max_length,\n                        );\n                        local.repr = Some(repr.unwrap_or_else(|_| \"?\".to_owned()));\n                    }\n                }\n            }\n\n            traces.push(trace);\n\n            // This seems to happen occasionally when scanning BSS addresses for valid interpreters\n            if traces.len() > 4096 {\n                return Err(format_err!(\"Max thread recursion depth reached\"));\n            }\n\n            if self.config.gil_only {\n                // There's only one GIL thread and we've captured it, so we can\n                // stop now\n                break;\n            }\n        }\n        Ok(traces)\n    }\n\n    // heuristic fallback for determining if a thread is active, used\n    // when we don't have the ability to get the thread information from the OS\n    fn _heuristic_is_thread_idle(&self, trace: &StackTrace) -> bool {\n        let frames = &trace.frames;\n        if frames.is_empty() {\n            // we could have 0 python frames, but still be active running native\n            // code.\n            false\n        } else {\n            let frame = &frames[0];\n            (frame.name == \"wait\" && frame.filename.ends_with(\"threading.py\"))\n                || (frame.name == \"select\" && frame.filename.ends_with(\"selectors.py\"))\n                || (frame.name == \"poll\"\n                    && (frame.filename.ends_with(\"asyncore.py\")\n                        || frame.filename.contains(\"zmq\")\n                        || frame.filename.contains(\"gevent\")\n                        || frame.filename.contains(\"tornado\")))\n        }\n    }\n\n    #[cfg(windows)]\n    fn _get_os_thread_id<I: InterpreterState>(\n        &mut self,\n        python_thread_id: u64,\n        _interp_head: *const I::ThreadState,\n    ) -> Result<Option<Tid>, Error> {\n        Ok(Some(python_thread_id as Tid))\n    }\n\n    #[cfg(target_os = \"macos\")]\n    fn _get_os_thread_id<I: InterpreterState>(\n        &mut self,\n        python_thread_id: u64,\n        _interp_head: *const I::ThreadState,\n    ) -> Result<Option<Tid>, Error> {\n        // If we've already know this threadid, we're good\n        if let Some(thread_id) = self.python_thread_ids.get(&python_thread_id) {\n            return Ok(Some(*thread_id));\n        }\n\n        for thread in self.process.threads()?.iter() {\n            // ok, this is crazy pants. is this 224 constant right?  Is this right for all versions of OSX? how is this determined?\n            // is this correct for all versions of python? Why does this even work?\n            let current_handle = thread.thread_handle()? - 224;\n            self.python_thread_ids.insert(current_handle, thread.id()?);\n        }\n\n        if let Some(thread_id) = self.python_thread_ids.get(&python_thread_id) {\n            return Ok(Some(*thread_id));\n        }\n        Ok(None)\n    }\n\n    #[cfg(all(target_os = \"linux\", not(feature = \"unwind\")))]\n    fn _get_os_thread_id<I: InterpreterState>(\n        &mut self,\n        _python_thread_id: u64,\n        _interp_head: *const I::ThreadState,\n    ) -> Result<Option<Tid>, Error> {\n        Ok(None)\n    }\n\n    #[cfg(all(target_os = \"linux\", feature = \"unwind\"))]\n    fn _get_os_thread_id<I: InterpreterState>(\n        &mut self,\n        python_thread_id: u64,\n        interp_head: *const I::ThreadState,\n    ) -> Result<Option<Tid>, Error> {\n        // in nonblocking mode, we can't get the threadid reliably (method here requires reading the RBX\n        // register which requires a ptrace attach). fallback to heuristic thread activity here\n        if self.config.blocking == LockingStrategy::NonBlocking {\n            return Ok(None);\n        }\n\n        // likewise this doesn't yet work for profiling processes running inside docker containers from the host os\n        if self.dockerized {\n            return Ok(None);\n        }\n\n        // If we've already know this threadid, we're good\n        if let Some(thread_id) = self.python_thread_ids.get(&python_thread_id) {\n            return Ok(Some(*thread_id));\n        }\n\n        // Get a list of all the python thread ids\n        let mut all_python_threads = HashSet::new();\n        let mut threads = interp_head;\n        while !threads.is_null() {\n            let thread = self\n                .process\n                .copy_pointer(threads)\n                .context(\"Failed to copy PyThreadState\")?;\n            let current = thread.thread_id();\n            all_python_threads.insert(current);\n            threads = thread.next();\n        }\n\n        let processed_os_threads: HashSet<Tid> =\n            HashSet::from_iter(self.python_thread_ids.values().copied());\n\n        let unwinder = self.process.unwinder()?;\n\n        // Try getting the pthread_id from the native stack registers for threads we haven't looked up yet\n        for thread in self.process.threads()?.iter() {\n            let threadid = thread.id()?;\n            if processed_os_threads.contains(&threadid) {\n                continue;\n            }\n\n            match self._get_pthread_id(&unwinder, thread, &all_python_threads) {\n                Ok(pthread_id) => {\n                    if pthread_id != 0 {\n                        self.python_thread_ids.insert(pthread_id, threadid);\n                    }\n                }\n                Err(e) => {\n                    warn!(\"Failed to get get_pthread_id for {}: {}\", threadid, e);\n                }\n            };\n        }\n\n        // we can't get the python threadid for the main thread from registers,\n        // so instead assign the main threadid (pid) to the missing python thread\n        if !processed_os_threads.contains(&self.pid) {\n            let mut unknown_python_threadids = HashSet::new();\n            for python_thread_id in all_python_threads.iter() {\n                if !self.python_thread_ids.contains_key(python_thread_id) {\n                    unknown_python_threadids.insert(*python_thread_id);\n                }\n            }\n\n            if unknown_python_threadids.len() == 1 {\n                let python_thread_id = *unknown_python_threadids.iter().next().unwrap();\n                self.python_thread_ids.insert(python_thread_id, self.pid);\n            } else {\n                warn!(\"failed to get python threadid for main thread!\");\n            }\n        }\n\n        if let Some(thread_id) = self.python_thread_ids.get(&python_thread_id) {\n            return Ok(Some(*thread_id));\n        }\n        info!(\"failed looking up python threadid for {}. known python_thread_ids {:?}. all_python_threads {:?}\",\n            python_thread_id, self.python_thread_ids, all_python_threads);\n        Ok(None)\n    }\n\n    #[cfg(all(target_os = \"linux\", feature = \"unwind\"))]\n    pub fn _get_pthread_id(\n        &self,\n        unwinder: &remoteprocess::Unwinder,\n        thread: &remoteprocess::Thread,\n        threadids: &HashSet<u64>,\n    ) -> Result<u64, Error> {\n        let mut pthread_id = 0;\n\n        let mut cursor = unwinder.cursor(thread)?;\n        while let Some(_) = cursor.next() {\n            // the pthread_id is usually a register (rbx on x86-64, r5 on ARM) in the top-level\n            // frame of the thread, but on some configs can be 2nd level. Handle this by taking the\n            // top-most value that is one of the pthread_ids we're looking for\n            #[cfg(target_arch = \"x86_64\")]\n            let possible_threadid = cursor.bx();\n            #[cfg(target_arch = \"arm\")]\n            let possible_threadid = cursor.r5();\n            if let Ok(reg) = possible_threadid {\n                if reg != 0 && threadids.contains(&reg) {\n                    pthread_id = reg;\n                }\n            }\n        }\n\n        Ok(pthread_id)\n    }\n\n    #[cfg(target_os = \"freebsd\")]\n    fn _get_os_thread_id<I: InterpreterState>(\n        &mut self,\n        _python_thread_id: u64,\n        _interp_head: *const I::ThreadState,\n    ) -> Result<Option<Tid>, Error> {\n        Ok(None)\n    }\n\n    fn _get_python_thread_name(&mut self, python_thread_id: u64) -> Option<String> {\n        match self.python_thread_names.get(&python_thread_id) {\n            Some(thread_name) => Some(thread_name.clone()),\n            None => {\n                self.python_thread_names = thread_name_lookup(self).unwrap_or_default();\n                self.python_thread_names.get(&python_thread_id).cloned()\n            }\n        }\n    }\n\n    /// We want to display filenames without the boilerplate of the python installation\n    /// directory etc. This function looks only includes paths inside a python\n    /// package or subpackage, and not the path the package is installed at\n    fn shorten_filename(&mut self, filename: &str) -> Option<String> {\n        // if the user requested full filenames, skip shortening\n        if self.config.full_filenames {\n            return Some(filename.to_string());\n        }\n\n        // if we have figured out the short filename already, use it\n        if let Some(short) = self.short_filenames.get(filename) {\n            return short.clone();\n        }\n\n        // on linux the process could be running in docker, access the filename through procfs\n        #[cfg(target_os = \"linux\")]\n        let filename_storage;\n\n        #[cfg(target_os = \"linux\")]\n        let filename = if self.dockerized {\n            filename_storage = format!(\"/proc/{}/root{}\", self.pid, filename);\n            if Path::new(&filename_storage).exists() {\n                &filename_storage\n            } else {\n                filename\n            }\n        } else {\n            filename\n        };\n\n        // only include paths that include an __init__.py\n        let mut path = Path::new(filename);\n        while let Some(parent) = path.parent() {\n            path = parent;\n            if !parent.join(\"__init__.py\").exists() {\n                break;\n            }\n        }\n\n        // remove the parent prefix and convert to an optional string\n        let shortened = Path::new(filename)\n            .strip_prefix(path)\n            .ok()\n            .map(|p| p.to_string_lossy().to_string());\n\n        self.short_filenames\n            .insert(filename.to_owned(), shortened.clone());\n        shortened\n    }\n}\n"
  },
  {
    "path": "src/python_threading.rs",
    "content": "use std::collections::HashMap;\n\nuse anyhow::{Context, Error};\n\nuse crate::python_bindings::{v3_10_0, v3_11_0, v3_12_0, v3_13_0, v3_6_6, v3_7_0, v3_8_0, v3_9_5};\nuse crate::python_data_access::{copy_long, copy_string, DictIterator, PY_TPFLAGS_MANAGED_DICT};\nuse crate::python_interpreters::{InterpreterState, Object, TypeObject};\nuse crate::python_spy::PythonSpy;\nuse remoteprocess::Process;\n\nuse crate::version::Version;\n\nuse remoteprocess::ProcessMemory;\n\n/// Returns a hashmap of threadid: threadname, by inspecting the '_active' variable in the\n/// 'threading' module.\npub fn thread_names_from_interpreter<I: InterpreterState, P: ProcessMemory>(\n    interpreter_address: usize,\n    process: &P,\n    version: &Version,\n) -> Result<HashMap<u64, String>, Error> {\n    let modules_ptr_ptr = I::modules_ptr_ptr(interpreter_address);\n    let modules: *const I::Object = process\n        .copy_pointer(modules_ptr_ptr)\n        .context(\"Failed to copy modules PyObject\")?;\n\n    let mut ret = HashMap::new();\n    for entry in DictIterator::from(process, version, modules as usize)? {\n        let (key, value) = entry?;\n        let module_name = copy_string(key as *const I::StringObject, process)?;\n        if module_name == \"threading\" {\n            let module: I::Object = process.copy_struct(value)?;\n            let module_type = process.copy_pointer(module.ob_type())?;\n            let dictptr: usize = process.copy_struct(value + module_type.dictoffset() as usize)?;\n            for i in DictIterator::from(process, version, dictptr)? {\n                let (key, value) = i?;\n                let name = copy_string(key as *const I::StringObject, process)?;\n                if name == \"_active\" {\n                    for i in DictIterator::from(process, version, value)? {\n                        let (key, value) = i?;\n                        let (threadid, _) = copy_long(process, version, key)?;\n\n                        let thread: I::Object = process.copy_struct(value)?;\n                        let thread_type = process.copy_pointer(thread.ob_type())?;\n                        let flags = thread_type.flags();\n\n                        let dict_iter = if flags & PY_TPFLAGS_MANAGED_DICT != 0 {\n                            DictIterator::from_managed_dict(\n                                process,\n                                version,\n                                value,\n                                thread.ob_type() as usize,\n                                flags,\n                            )?\n                        } else {\n                            let dict_offset = thread_type.dictoffset();\n                            let dict_addr = (value as isize + dict_offset) as usize;\n                            let thread_dict_addr: usize = process.copy_struct(dict_addr)?;\n                            DictIterator::from(process, version, thread_dict_addr)?\n                        };\n\n                        for i in dict_iter {\n                            let (key, value) = i?;\n                            let varname = copy_string(key as *const I::StringObject, process)?;\n                            if varname == \"_name\" {\n                                let threadname =\n                                    copy_string(value as *const I::StringObject, process)?;\n                                ret.insert(threadid as u64, threadname);\n                                break;\n                            }\n                        }\n                    }\n                    break;\n                }\n            }\n            break;\n        }\n    }\n    Ok(ret)\n}\n\n/// Returns a hashmap of threadid: threadname, by inspecting the '_active' variable in the\n/// 'threading' module.\nfn _thread_name_lookup<I: InterpreterState>(\n    spy: &PythonSpy,\n) -> Result<HashMap<u64, String>, Error> {\n    thread_names_from_interpreter::<I, Process>(spy.interpreter_address, &spy.process, &spy.version)\n}\n\n// try getting the threadnames, but don't sweat it if we can't. Since this relies on dictionary\n// processing we only handle py3.6+ right now, and this doesn't work at all if the\n// threading module isn't imported in the target program\npub fn thread_name_lookup(process: &PythonSpy) -> Option<HashMap<u64, String>> {\n    let err = match process.version {\n        Version {\n            major: 3, minor: 6, ..\n        } => _thread_name_lookup::<v3_6_6::_is>(process),\n        Version {\n            major: 3, minor: 7, ..\n        } => _thread_name_lookup::<v3_7_0::_is>(process),\n        Version {\n            major: 3, minor: 8, ..\n        } => _thread_name_lookup::<v3_8_0::_is>(process),\n        Version {\n            major: 3, minor: 9, ..\n        } => _thread_name_lookup::<v3_9_5::_is>(process),\n        Version {\n            major: 3,\n            minor: 10,\n            ..\n        } => _thread_name_lookup::<v3_10_0::_is>(process),\n        Version {\n            major: 3,\n            minor: 11,\n            ..\n        } => _thread_name_lookup::<v3_11_0::_is>(process),\n        Version {\n            major: 3,\n            minor: 12,\n            ..\n        } => _thread_name_lookup::<v3_12_0::_is>(process),\n        Version {\n            major: 3,\n            minor: 13,\n            ..\n        } => _thread_name_lookup::<v3_13_0::_is>(process),\n        _ => return None,\n    };\n    err.ok()\n}\n"
  },
  {
    "path": "src/sampler.rs",
    "content": "#![allow(clippy::type_complexity)]\n\nuse std::collections::HashMap;\nuse std::sync::mpsc::{self, Receiver, Sender};\nuse std::sync::{Arc, Mutex};\nuse std::thread;\nuse std::time::Duration;\n\nuse anyhow::Error;\n\nuse remoteprocess::Pid;\n\nuse crate::config::Config;\nuse crate::python_spy::PythonSpy;\nuse crate::stack_trace::{ProcessInfo, StackTrace};\nuse crate::timer::Timer;\nuse crate::version::Version;\n\npub struct Sampler {\n    pub version: Option<Version>,\n    rx: Option<Receiver<Sample>>,\n    sampling_thread: Option<thread::JoinHandle<()>>,\n}\n\npub struct Sample {\n    pub traces: Vec<StackTrace>,\n    pub sampling_errors: Option<Vec<(Pid, Error)>>,\n    pub late: Option<Duration>,\n}\n\nimpl Sampler {\n    pub fn new(pid: Pid, config: &Config) -> Result<Sampler, Error> {\n        if config.subprocesses {\n            Self::new_subprocess_sampler(pid, config)\n        } else {\n            Self::new_sampler(pid, config)\n        }\n    }\n\n    /// Creates a new sampler object, reading from a single process only\n    fn new_sampler(pid: Pid, config: &Config) -> Result<Sampler, Error> {\n        let (tx, rx): (Sender<Sample>, Receiver<Sample>) = mpsc::channel();\n        let (initialized_tx, initialized_rx): (\n            Sender<Result<Version, Error>>,\n            Receiver<Result<Version, Error>>,\n        ) = mpsc::channel();\n        let config = config.clone();\n        let sampling_thread = thread::spawn(move || {\n            // We need to create this object inside the thread here since PythonSpy objects don't\n            // have the Send trait implemented on linux\n            let mut spy = match PythonSpy::retry_new(pid, &config, 20) {\n                Ok(spy) => {\n                    if initialized_tx.send(Ok(spy.version.clone())).is_err() {\n                        return;\n                    }\n                    spy\n                }\n                Err(e) => {\n                    initialized_tx.send(Err(e)).unwrap();\n                    return;\n                }\n            };\n\n            for sleep in Timer::new(spy.config.sampling_rate as f64) {\n                let mut sampling_errors = None;\n                let traces = match spy.get_stack_traces() {\n                    Ok(traces) => traces,\n                    Err(e) => {\n                        if spy.process.exe().is_err() {\n                            info!(\n                                \"stopped sampling pid {} because the process exited\",\n                                spy.pid\n                            );\n                            break;\n                        }\n                        sampling_errors = Some(vec![(spy.pid, e)]);\n                        Vec::new()\n                    }\n                };\n\n                let late = sleep.err();\n                if tx\n                    .send(Sample {\n                        traces,\n                        sampling_errors,\n                        late,\n                    })\n                    .is_err()\n                {\n                    break;\n                }\n            }\n        });\n\n        let version = initialized_rx.recv()??;\n        Ok(Sampler {\n            rx: Some(rx),\n            version: Some(version),\n            sampling_thread: Some(sampling_thread),\n        })\n    }\n\n    /// Creates a new sampler object that samples any python process in the\n    /// process or child processes\n    fn new_subprocess_sampler(pid: Pid, config: &Config) -> Result<Sampler, Error> {\n        let process = remoteprocess::Process::new(pid)?;\n\n        // Initialize a PythonSpy object per child, and build up the process tree\n        let mut spies = HashMap::new();\n        let mut retries = 10;\n        spies.insert(pid, PythonSpyThread::new(pid, None, config)?);\n\n        loop {\n            for (childpid, parentpid) in process.child_processes()? {\n                // If we can't create the child process, don't worry about it\n                // can happen with zombie child processes etc\n                match PythonSpyThread::new(childpid, Some(parentpid), config) {\n                    Ok(spy) => {\n                        spies.insert(childpid, spy);\n                    }\n                    Err(e) => {\n                        warn!(\"Failed to open process {}: {}\", childpid, e);\n                    }\n                }\n            }\n\n            // wait for all the various python spy objects to initialize, and break out of here\n            // if we have one of them started.\n            if spies.values_mut().any(|spy| spy.wait_initialized()) {\n                break;\n            }\n\n            // Otherwise sleep for a short time and retry\n            retries -= 1;\n            if retries == 0 {\n                return Err(format_err!(\n                    \"No python processes found in process {} or any of its subprocesses\",\n                    pid\n                ));\n            }\n            std::thread::sleep(std::time::Duration::from_millis(100));\n        }\n\n        // Create a new thread to periodically monitor for new child processes, and update\n        // the procesess map\n        let spies = Arc::new(Mutex::new(spies));\n        let monitor_spies = spies.clone();\n        let monitor_config = config.clone();\n        std::thread::spawn(move || {\n            while process.exe().is_ok() {\n                match monitor_spies.lock() {\n                    Ok(mut spies) => {\n                        for (childpid, parentpid) in process\n                            .child_processes()\n                            .expect(\"failed to get subprocesses\")\n                        {\n                            if spies.contains_key(&childpid) {\n                                continue;\n                            }\n                            match PythonSpyThread::new(childpid, Some(parentpid), &monitor_config) {\n                                Ok(spy) => {\n                                    spies.insert(childpid, spy);\n                                }\n                                Err(e) => {\n                                    warn!(\"Failed to create spy for {}: {}\", childpid, e);\n                                }\n                            }\n                        }\n                    }\n                    Err(e) => {\n                        error!(\"Failed to acquire lock: {}\", e);\n                    }\n                }\n                std::thread::sleep(Duration::from_millis(100));\n            }\n        });\n\n        let mut process_info = HashMap::new();\n\n        // Create a new thread to generate samples\n        let config = config.clone();\n        let (tx, rx): (Sender<Sample>, Receiver<Sample>) = mpsc::channel();\n        let sampling_thread = std::thread::spawn(move || {\n            for sleep in Timer::new(config.sampling_rate as f64) {\n                let mut traces = Vec::new();\n                let mut sampling_errors = None;\n\n                let mut spies = match spies.lock() {\n                    Ok(current) => current,\n                    Err(e) => {\n                        error!(\"Failed to get process tree: {}\", e);\n                        continue;\n                    }\n                };\n\n                // Notify all the initialized spies to generate a trace\n                for spy in spies.values_mut() {\n                    if spy.initialized() {\n                        spy.notify();\n                    }\n                }\n\n                // collect the traces from each python spy if possible\n                for spy in spies.values_mut() {\n                    match spy.collect() {\n                        Some(Ok(mut t)) => traces.append(&mut t),\n                        Some(Err(e)) => {\n                            let errors = sampling_errors.get_or_insert_with(Vec::new);\n                            errors.push((spy.process.pid, e));\n                        }\n                        None => {}\n                    }\n                }\n\n                // Annotate each trace with the process info\n                for trace in traces.iter_mut() {\n                    let pid = trace.pid;\n                    // Annotate each trace with the process info for the current\n                    let process = process_info\n                        .entry(pid)\n                        .or_insert_with(|| get_process_info(pid, &spies).map(|p| Arc::new(*p)));\n                    trace.process_info = process.clone();\n                }\n\n                // Send the collected info back\n                let late = sleep.err();\n                if tx\n                    .send(Sample {\n                        traces,\n                        sampling_errors,\n                        late,\n                    })\n                    .is_err()\n                {\n                    break;\n                }\n\n                // If all of our spies have stopped, we're done\n                if spies.is_empty() || spies.values().all(|x| !x.running) {\n                    break;\n                }\n            }\n        });\n\n        Ok(Sampler {\n            rx: Some(rx),\n            version: None,\n            sampling_thread: Some(sampling_thread),\n        })\n    }\n}\n\nimpl Iterator for Sampler {\n    type Item = Sample;\n    fn next(&mut self) -> Option<Self::Item> {\n        self.rx.as_ref().unwrap().recv().ok()\n    }\n}\n\nimpl Drop for Sampler {\n    fn drop(&mut self) {\n        self.rx = None;\n        if let Some(t) = self.sampling_thread.take() {\n            t.join().unwrap();\n        }\n    }\n}\n\nstruct PythonSpyThread {\n    initialized_rx: Receiver<Result<Version, Error>>,\n    notify_tx: Sender<()>,\n    sample_rx: Receiver<Result<Vec<StackTrace>, Error>>,\n    initialized: Option<Result<Version, Error>>,\n    pub running: bool,\n    notified: bool,\n    pub process: remoteprocess::Process,\n    pub parent: Option<Pid>,\n    pub command_line: String,\n}\n\nimpl PythonSpyThread {\n    fn new(pid: Pid, parent: Option<Pid>, config: &Config) -> Result<PythonSpyThread, Error> {\n        let (initialized_tx, initialized_rx): (\n            Sender<Result<Version, Error>>,\n            Receiver<Result<Version, Error>>,\n        ) = mpsc::channel();\n        let (notify_tx, notify_rx): (Sender<()>, Receiver<()>) = mpsc::channel();\n        let (sample_tx, sample_rx): (\n            Sender<Result<Vec<StackTrace>, Error>>,\n            Receiver<Result<Vec<StackTrace>, Error>>,\n        ) = mpsc::channel();\n        let config = config.clone();\n        let process = remoteprocess::Process::new(pid)?;\n        let command_line = process\n            .cmdline()\n            .map(|x| x.join(\" \"))\n            .unwrap_or_else(|_| \"\".to_owned());\n\n        thread::spawn(move || {\n            // We need to create this object inside the thread here since PythonSpy objects don't\n            // have the Send trait implemented on linux\n            let mut spy = match PythonSpy::retry_new(pid, &config, 5) {\n                Ok(spy) => {\n                    if initialized_tx.send(Ok(spy.version.clone())).is_err() {\n                        return;\n                    }\n                    spy\n                }\n                Err(e) => {\n                    warn!(\"Failed to profile python from process {}: {}\", pid, e);\n                    initialized_tx.send(Err(e)).unwrap();\n                    return;\n                }\n            };\n\n            for _ in notify_rx.iter() {\n                let result = spy.get_stack_traces();\n                if result.is_err() && spy.process.exe().is_err() {\n                    info!(\n                        \"stopped sampling pid {} because the process exited\",\n                        spy.pid\n                    );\n                    break;\n                }\n                if sample_tx.send(result).is_err() {\n                    break;\n                }\n            }\n        });\n        Ok(PythonSpyThread {\n            initialized_rx,\n            notify_tx,\n            sample_rx,\n            process,\n            command_line,\n            parent,\n            initialized: None,\n            running: false,\n            notified: false,\n        })\n    }\n\n    fn wait_initialized(&mut self) -> bool {\n        match self.initialized_rx.recv() {\n            Ok(status) => {\n                self.running = status.is_ok();\n                self.initialized = Some(status);\n                self.running\n            }\n            Err(e) => {\n                // shouldn't happen, but will be ok if it does\n                warn!(\n                    \"Failed to get initialization status from PythonSpyThread: {}\",\n                    e\n                );\n                false\n            }\n        }\n    }\n\n    fn initialized(&mut self) -> bool {\n        if let Some(init) = self.initialized.as_ref() {\n            return init.is_ok();\n        }\n        match self.initialized_rx.try_recv() {\n            Ok(status) => {\n                self.running = status.is_ok();\n                self.initialized = Some(status);\n                self.running\n            }\n            Err(std::sync::mpsc::TryRecvError::Empty) => false,\n            Err(std::sync::mpsc::TryRecvError::Disconnected) => {\n                // this *shouldn't* happen\n                warn!(\"Failed to get initialization status from PythonSpyThread: disconnected\");\n                false\n            }\n        }\n    }\n\n    fn notify(&mut self) {\n        match self.notify_tx.send(()) {\n            Ok(_) => {\n                self.notified = true;\n            }\n            Err(_) => {\n                self.running = false;\n            }\n        }\n    }\n\n    fn collect(&mut self) -> Option<Result<Vec<StackTrace>, Error>> {\n        if !self.notified {\n            return None;\n        }\n        self.notified = false;\n        match self.sample_rx.recv() {\n            Ok(sample) => Some(sample),\n            Err(_) => {\n                self.running = false;\n                None\n            }\n        }\n    }\n}\n\nfn get_process_info(pid: Pid, spies: &HashMap<Pid, PythonSpyThread>) -> Option<Box<ProcessInfo>> {\n    spies.get(&pid).map(|spy| {\n        let parent = spy\n            .parent\n            .and_then(|parentpid| get_process_info(parentpid, spies));\n        Box::new(ProcessInfo {\n            pid,\n            parent,\n            command_line: spy.command_line.clone(),\n        })\n    })\n}\n"
  },
  {
    "path": "src/speedscope.rs",
    "content": "// This code is adapted from rbspy:\n// https://github.com/rbspy/rbspy/tree/master/src/ui/speedscope.rs\n// licensed under the MIT License:\n/*\nMIT License\n\nCopyright (c) 2016 Julia Evans, Kamal Marhubi\nPortions (continuous integration setup) Copyright (c) 2016 Jorge Aparicio\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*/\n\nuse std::collections::HashMap;\nuse std::io;\nuse std::io::Write;\n\nuse crate::stack_trace;\nuse remoteprocess::{Pid, Tid};\n\nuse anyhow::Error;\nuse serde_derive::{Deserialize, Serialize};\n\nuse crate::config::Config;\n\n/*\n * This file contains code to export rbspy profiles for use in https://speedscope.app\n *\n * The TypeScript definitions that define this file format can be found here:\n * https://github.com/jlfwong/speedscope/blob/9d13d9/src/lib/file-format-spec.ts\n *\n * From the TypeScript definition, a JSON schema is generated. The latest\n * schema can be found here: https://speedscope.app/file-format-schema.json\n *\n * This JSON schema conveniently allows to generate type bindings for generating JSON.\n * You can use https://app.quicktype.io/ to generate serde_json Rust bindings for the\n * given JSON schema.\n *\n * There are multiple variants of the file format. The variant we're going to generate\n * is the \"type: sampled\" profile, since it most closely maps to rbspy's data recording\n * structure.\n */\n\n#[derive(Debug, Deserialize, Serialize)]\nstruct SpeedscopeFile {\n    #[serde(rename = \"$schema\")]\n    schema: String,\n    profiles: Vec<Profile>,\n    shared: Shared,\n\n    #[serde(rename = \"activeProfileIndex\")]\n    active_profile_index: Option<f64>,\n\n    exporter: Option<String>,\n\n    name: Option<String>,\n}\n\n#[derive(Debug, Deserialize, Serialize)]\nstruct Profile {\n    #[serde(rename = \"type\")]\n    profile_type: ProfileType,\n\n    name: String,\n    unit: ValueUnit,\n\n    #[serde(rename = \"startValue\")]\n    start_value: f64,\n\n    #[serde(rename = \"endValue\")]\n    end_value: f64,\n\n    samples: Vec<Vec<usize>>,\n    weights: Vec<f64>,\n}\n\n#[derive(Debug, Serialize, Deserialize)]\nstruct Shared {\n    frames: Vec<Frame>,\n}\n\n#[derive(Debug, Clone, Serialize, Deserialize)]\nstruct Frame {\n    name: String,\n    file: Option<String>,\n    line: Option<u32>,\n    col: Option<u32>,\n}\n\n#[derive(Debug, Serialize, Deserialize)]\nenum ProfileType {\n    #[serde(rename = \"evented\")]\n    Evented,\n    #[serde(rename = \"sampled\")]\n    Sampled,\n}\n\n#[derive(Debug, Serialize, Deserialize, PartialEq, Eq)]\nenum ValueUnit {\n    #[serde(rename = \"bytes\")]\n    Bytes,\n    #[serde(rename = \"microseconds\")]\n    Microseconds,\n    #[serde(rename = \"milliseconds\")]\n    Milliseconds,\n    #[serde(rename = \"nanoseconds\")]\n    Nanoseconds,\n    #[serde(rename = \"none\")]\n    None,\n    #[serde(rename = \"seconds\")]\n    Seconds,\n}\n\nimpl SpeedscopeFile {\n    pub fn new(\n        samples: &HashMap<(Pid, Tid), Vec<Vec<usize>>>,\n        frames: &[Frame],\n        thread_name_map: &HashMap<(Pid, Tid), String>,\n        sample_rate: u64,\n    ) -> SpeedscopeFile {\n        let mut profiles: Vec<Profile> = samples\n            .iter()\n            .map(|(thread_id, samples)| {\n                let end_value = samples.len();\n                // we sample at 100 Hz, so scale the end value and weights to match the time unit\n                let scaled_end_value = end_value as f64 / sample_rate as f64;\n                let weights: Vec<f64> = samples\n                    .iter()\n                    .map(|_s| 1_f64 / sample_rate as f64)\n                    .collect();\n\n                Profile {\n                    profile_type: ProfileType::Sampled,\n                    name: thread_name_map\n                        .get(thread_id)\n                        .map_or_else(|| \"py-spy\".to_string(), |x| x.clone()),\n                    unit: ValueUnit::Seconds,\n                    start_value: 0.0,\n                    end_value: scaled_end_value,\n                    samples: samples.clone(),\n                    weights,\n                }\n            })\n            .collect();\n\n        profiles.sort_by(|a, b| a.name.cmp(&b.name));\n\n        SpeedscopeFile {\n            // This is always the same\n            schema: \"https://www.speedscope.app/file-format-schema.json\".to_string(),\n            active_profile_index: None,\n            name: Some(\"py-spy profile\".to_string()),\n            exporter: Some(format!(\"py-spy@{}\", env!(\"CARGO_PKG_VERSION\"))),\n            profiles,\n            shared: Shared {\n                frames: frames.to_owned(),\n            },\n        }\n    }\n}\n\nimpl Frame {\n    pub fn new(stack_frame: &stack_trace::Frame, show_line_numbers: bool) -> Frame {\n        Frame {\n            name: stack_frame.name.clone(),\n            // TODO: filename?\n            file: Some(stack_frame.filename.clone()),\n            line: if show_line_numbers {\n                Some(stack_frame.line as u32)\n            } else {\n                None\n            },\n            col: None,\n        }\n    }\n}\n\npub struct Stats {\n    samples: HashMap<(Pid, Tid), Vec<Vec<usize>>>,\n    frames: Vec<Frame>,\n    frame_to_index: HashMap<stack_trace::Frame, usize>,\n    thread_name_map: HashMap<(Pid, Tid), String>,\n    config: Config,\n}\n\nimpl Stats {\n    pub fn new(config: &Config) -> Stats {\n        Stats {\n            samples: HashMap::new(),\n            frames: vec![],\n            frame_to_index: HashMap::new(),\n            thread_name_map: HashMap::new(),\n            config: config.clone(),\n        }\n    }\n\n    pub fn record(&mut self, stack: &stack_trace::StackTrace) -> Result<(), io::Error> {\n        let show_line_numbers = self.config.show_line_numbers;\n        let mut frame_indices: Vec<usize> = stack\n            .frames\n            .iter()\n            .map(|frame| {\n                let frames = &mut self.frames;\n                let mut key = frame.clone();\n                if !show_line_numbers {\n                    key.line = 0;\n                }\n                *self.frame_to_index.entry(key).or_insert_with(|| {\n                    let len = frames.len();\n                    frames.push(Frame::new(frame, show_line_numbers));\n                    len\n                })\n            })\n            .collect();\n        frame_indices.reverse();\n\n        let key = (stack.pid as Pid, stack.thread_id as Tid);\n\n        self.samples.entry(key).or_default().push(frame_indices);\n        let subprocesses = self.config.subprocesses;\n        self.thread_name_map.entry(key).or_insert_with(|| {\n            let thread_name = stack\n                .thread_name\n                .as_ref()\n                .map_or_else(|| \"\".to_string(), |x| x.clone());\n            if subprocesses {\n                format!(\n                    \"Process {} Thread {} \\\"{}\\\"\",\n                    stack.pid,\n                    stack.format_threadid(),\n                    thread_name\n                )\n            } else {\n                format!(\"Thread {} \\\"{}\\\"\", stack.format_threadid(), thread_name)\n            }\n        });\n\n        Ok(())\n    }\n\n    pub fn write(&self, w: &mut dyn Write) -> Result<(), Error> {\n        let json = serde_json::to_string(&SpeedscopeFile::new(\n            &self.samples,\n            &self.frames,\n            &self.thread_name_map,\n            self.config.sampling_rate,\n        ))?;\n        writeln!(w, \"{json}\")?;\n        Ok(())\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use std::io::{Cursor, Read, Seek, SeekFrom};\n\n    #[test]\n    fn test_speedscope_units() {\n        let sample_rate = 100;\n        let config = Config {\n            show_line_numbers: true,\n            sampling_rate: sample_rate,\n            ..Default::default()\n        };\n        let mut stats = Stats::new(&config);\n        let mut cursor = Cursor::new(Vec::new());\n\n        let frame = stack_trace::Frame {\n            name: String::from(\"test\"),\n            filename: String::from(\"test.py\"),\n            module: None,\n            short_filename: None,\n            line: 0,\n            locals: None,\n            is_entry: true,\n            is_shim_entry: false,\n        };\n\n        let trace = stack_trace::StackTrace {\n            pid: 1,\n            thread_id: 1,\n            thread_name: None,\n            os_thread_id: None,\n            active: true,\n            owns_gil: false,\n            frames: vec![frame],\n            process_info: None,\n        };\n\n        stats.record(&trace).unwrap();\n        stats.write(&mut cursor).unwrap();\n\n        cursor.seek(SeekFrom::Start(0)).unwrap();\n        let mut s = String::new();\n        let read = cursor.read_to_string(&mut s).unwrap();\n        assert!(read > 0);\n        let trace: SpeedscopeFile = serde_json::from_str(&s).unwrap();\n\n        assert_eq!(trace.profiles[0].unit, ValueUnit::Seconds);\n        assert_eq!(trace.profiles[0].end_value, 1.0 / sample_rate as f64);\n    }\n}\n"
  },
  {
    "path": "src/stack_trace.rs",
    "content": "use std::sync::Arc;\n\nuse anyhow::{Context, Error, Result};\n\nuse remoteprocess::{Pid, ProcessMemory};\nuse serde_derive::Serialize;\n\nuse crate::config::{Config, LineNo};\nuse crate::python_data_access::{copy_bytes, copy_string};\nuse crate::python_interpreters::{\n    CodeObject, FrameObject, InterpreterState, ThreadState, TupleObject,\n};\n\n/// Call stack for a single python thread\n#[derive(Debug, Clone, Serialize)]\npub struct StackTrace {\n    /// The process id than generated this stack trace\n    pub pid: Pid,\n    /// The python thread id for this stack trace\n    pub thread_id: u64,\n    // The python thread name for this stack trace\n    pub thread_name: Option<String>,\n    /// The OS thread id for this stack tracee\n    pub os_thread_id: Option<u64>,\n    /// Whether or not the thread was active\n    pub active: bool,\n    /// Whether or not the thread held the GIL\n    pub owns_gil: bool,\n    /// The frames\n    pub frames: Vec<Frame>,\n    /// process commandline / parent process info\n    pub process_info: Option<Arc<ProcessInfo>>,\n}\n\n/// Information about a single function call in a stack trace\n#[derive(Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Clone, Serialize)]\npub struct Frame {\n    /// The function name\n    pub name: String,\n    /// The full filename of the file\n    pub filename: String,\n    /// The module/shared library the\n    pub module: Option<String>,\n    /// A short, more readable, representation of the filename\n    pub short_filename: Option<String>,\n    /// The line number inside the file (or 0 for native frames without line information)\n    pub line: i32,\n    /// Local Variables associated with the frame\n    pub locals: Option<Vec<LocalVariable>>,\n    /// If this is an entry frame. Each entry frame corresponds to one native frame (Python 3.11)\n    pub is_entry: bool,\n    /// If the last frame was a shim. This is used in Python 3.12+ to detect entry frames.\n    pub is_shim_entry: bool,\n}\n\n#[derive(Debug, Hash, Eq, PartialEq, Ord, PartialOrd, Clone, Serialize)]\npub struct LocalVariable {\n    pub name: String,\n    pub addr: usize,\n    pub arg: bool,\n    pub repr: Option<String>,\n}\n\n#[derive(Debug, Clone, Serialize)]\npub struct ProcessInfo {\n    pub pid: Pid,\n    pub command_line: String,\n    pub parent: Option<Box<ProcessInfo>>,\n}\n\n/// Given an InterpreterState, this function returns a vector of stack traces for each thread\npub fn get_stack_traces<I, P>(\n    interpreter_address: usize,\n    process: &P,\n    threadstate_address: usize,\n    config: Option<&Config>,\n) -> Result<Vec<StackTrace>, Error>\nwhere\n    I: InterpreterState,\n    P: ProcessMemory,\n{\n    let gil_thread_id = get_gil_threadid::<I, P>(threadstate_address, process)?;\n\n    let threadstate_ptr_ptr = I::threadstate_ptr_ptr(interpreter_address);\n    let mut threads: *const I::ThreadState = process\n        .copy_struct(threadstate_ptr_ptr as usize)\n        .context(\"Failed to copy PyThreadState head pointer\")?;\n\n    let mut ret = Vec::new();\n\n    let lineno = config.map(|c| c.lineno).unwrap_or(LineNo::NoLine);\n    let dump_locals = config.map(|c| c.dump_locals).unwrap_or(0);\n\n    while !threads.is_null() {\n        let thread = process\n            .copy_pointer(threads)\n            .context(\"Failed to copy PyThreadState\")?;\n\n        let mut trace = get_stack_trace(&thread, process, dump_locals > 0, lineno)?;\n        trace.owns_gil = trace.thread_id == gil_thread_id;\n\n        ret.push(trace);\n        // This seems to happen occasionally when scanning BSS addresses for valid interpreters\n        if ret.len() > 4096 {\n            return Err(format_err!(\"Max thread recursion depth reached\"));\n        }\n        threads = thread.next();\n    }\n    Ok(ret)\n}\n\n/// Gets a stack trace for an individual thread\npub fn get_stack_trace<T, P>(\n    thread: &T,\n    process: &P,\n    copy_locals: bool,\n    lineno: LineNo,\n) -> Result<StackTrace, Error>\nwhere\n    T: ThreadState,\n    P: ProcessMemory,\n{\n    // TODO: just return frames here? everything else probably should be returned out of scope\n    let mut frames = Vec::new();\n\n    // python 3.11+ has an extra level of indirection to get the Frame from the threadstate\n    let mut frame_address = thread.frame_address();\n    if let Some(addr) = frame_address {\n        frame_address = Some(process.copy_struct(addr)?);\n    }\n\n    let mut frame_ptr = thread.frame(frame_address);\n\n    // We are iterating in reverse, i.e. from last call to first call.\n    // Since Python 3.12, there are shim frames inserted before a block\n    // of Python frames. When we encounter one, update the last frame.\n    let set_last_frame_as_shim_entry = &mut |frames: &mut Vec<Frame>| {\n        if let Some(frame) = frames.last_mut() {\n            frame.is_shim_entry = true;\n        }\n    };\n\n    while !frame_ptr.is_null() {\n        let frame = process\n            .copy_pointer(frame_ptr)\n            .context(\"Failed to copy PyFrameObject\")?;\n\n        let code = process\n            .copy_pointer(frame.code())\n            .context(\"Failed to copy PyCodeObject\")?;\n\n        let filename = copy_string(code.filename(), process).context(\"Failed to copy filename\");\n        let name = copy_string(code.name(), process).context(\"Failed to copy function name\");\n\n        // just skip processing the current frame if we can't load the filename or function name.\n        // this can happen in python 3.13+ since the f_executable isn't guaranteed to be\n        // a PyCodeObject. We could check the type (and mimic the logic of PyCode_Check here)\n        // but that would require extra overhead of reading the ob_type per frame - and we\n        // would also have to figure out what the address of PyCode_Type is (which will be\n        // easier if something like https://github.com/python/cpython/issues/100987#issuecomment-1487227139\n        // is merged )\n        if filename.is_err() || name.is_err() {\n            frame_ptr = frame.back();\n            set_last_frame_as_shim_entry(&mut frames);\n            continue;\n        }\n        let filename = filename?;\n        let name = name?;\n\n        // skip <shim> entries in python 3.12+\n        // Unset file/function name in py3.13 means this is a shim.\n        if filename.is_empty() || filename == \"<shim>\" {\n            frame_ptr = frame.back();\n            set_last_frame_as_shim_entry(&mut frames);\n            continue;\n        }\n\n        let line = match lineno {\n            LineNo::NoLine => 0,\n            LineNo::First => code.first_lineno(),\n            LineNo::LastInstruction => match get_line_number(&code, frame.lasti(), process) {\n                Ok(line) => line,\n                Err(e) => {\n                    // Failling to get the line number really shouldn't be fatal here, but\n                    // can happen in extreme cases (https://github.com/benfred/py-spy/issues/164)\n                    // Rather than fail set the linenumber to 0. This is used by the native extensions\n                    // to indicate that we can't load a line number and it should be handled gracefully\n                    warn!(\n                        \"Failed to get line number from {}.{}: {}\",\n                        filename, name, e\n                    );\n                    0\n                }\n            },\n        };\n\n        let locals = if copy_locals {\n            Some(get_locals(&code, frame_ptr, &frame, process)?)\n        } else {\n            None\n        };\n\n        let is_entry = frame.is_entry();\n\n        frames.push(Frame {\n            name,\n            filename,\n            line,\n            short_filename: None,\n            module: None,\n            locals,\n            is_entry,\n            is_shim_entry: false,\n        });\n        if frames.len() > 4096 {\n            return Err(format_err!(\"Max frame recursion depth reached\"));\n        }\n\n        frame_ptr = frame.back();\n    }\n\n    // First frame is always a shim\n    set_last_frame_as_shim_entry(&mut frames);\n\n    Ok(StackTrace {\n        pid: 0,\n        frames,\n        thread_id: thread.thread_id(),\n        thread_name: None,\n        owns_gil: false,\n        active: true,\n        os_thread_id: thread.native_thread_id(),\n        process_info: None,\n    })\n}\n\nimpl StackTrace {\n    pub fn status_str(&self) -> &str {\n        match (self.owns_gil, self.active) {\n            (_, false) => \"idle\",\n            (true, true) => \"active+gil\",\n            (false, true) => \"active\",\n        }\n    }\n\n    pub fn format_threadid(&self) -> String {\n        // native threadids in osx are kinda useless, use the pthread id instead\n        #[cfg(target_os = \"macos\")]\n        return format!(\"{:#X}\", self.thread_id);\n\n        // otherwise use the native threadid if given\n        #[cfg(not(target_os = \"macos\"))]\n        match self.os_thread_id {\n            Some(tid) => format!(\"{}\", tid),\n            None => format!(\"{:#X}\", self.thread_id),\n        }\n    }\n}\n\n/// Returns the line number from a PyCodeObject (given the lasti index from a PyFrameObject)\nfn get_line_number<C: CodeObject, P: ProcessMemory>(\n    code: &C,\n    lasti: i32,\n    process: &P,\n) -> Result<i32, Error> {\n    let table =\n        copy_bytes(code.line_table(), process).context(\"Failed to copy line number table\")?;\n    Ok(code.get_line_number(lasti, &table))\n}\n\nfn get_locals<C: CodeObject, F: FrameObject, P: ProcessMemory>(\n    code: &C,\n    frameptr: *const F,\n    frame: &F,\n    process: &P,\n) -> Result<Vec<LocalVariable>, Error> {\n    let local_count = code.nlocals() as usize;\n    let argcount = code.argcount() as usize;\n    let varnames = process.copy_pointer(code.varnames())?;\n\n    let ptr_size = std::mem::size_of::<*const i32>();\n    let locals_addr = frameptr as usize + std::mem::size_of_val(frame) - ptr_size;\n\n    let mut ret = Vec::new();\n\n    for i in 0..local_count {\n        let nameptr: *const C::StringObject =\n            process.copy_struct(varnames.address(code.varnames() as usize, i))?;\n        let name = copy_string(nameptr, process)?;\n        let addr: usize = process.copy_struct(locals_addr + i * ptr_size)?;\n        if addr == 0 {\n            continue;\n        }\n        ret.push(LocalVariable {\n            name,\n            addr,\n            arg: i < argcount,\n            repr: None,\n        });\n    }\n    Ok(ret)\n}\n\npub fn get_gil_threadid<I: InterpreterState, P: ProcessMemory>(\n    threadstate_address: usize,\n    process: &P,\n) -> Result<u64, Error> {\n    // happens during initialization when checking to see if we have a valid interpreter (before we've figured out the threadstate_address)\n    if threadstate_address == 0 {\n        return Ok(0);\n    }\n\n    let addr = if I::HAS_GIL_RUNTIME_STATE {\n        // get the gilruntimestate - note that this struct is identical between 3.12/3.13\n        let gil_state: crate::python_bindings::v3_13_0::_gil_runtime_state =\n            process.copy_struct(threadstate_address)?;\n        // check to see if the GIL is locked already\n        if gil_state.locked != 0 {\n            gil_state.last_holder as usize\n        } else {\n            0\n        }\n    } else {\n        process.copy_struct::<usize>(threadstate_address)?\n    };\n\n    // if the addr is 0, no thread is currently holding the GIL\n    let threadid = if addr != 0 {\n        let threadstate: I::ThreadState = process.copy_struct(addr)?;\n        threadstate.thread_id()\n    } else {\n        0\n    };\n\n    Ok(threadid)\n}\n\nimpl ProcessInfo {\n    pub fn to_frame(&self) -> Frame {\n        Frame {\n            name: format!(\"process {}:\\\"{}\\\"\", self.pid, self.command_line),\n            filename: String::from(\"\"),\n            module: None,\n            short_filename: None,\n            line: 0,\n            locals: None,\n            is_entry: true,\n            is_shim_entry: true,\n        }\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    use crate::python_bindings::v3_7_0::PyCodeObject;\n    use crate::python_data_access::tests::to_byteobject;\n    use remoteprocess::LocalProcess;\n\n    #[test]\n    fn test_get_line_number() {\n        let mut lnotab = to_byteobject(&[0u8, 1, 10, 1, 8, 1, 4, 1]);\n        let code = PyCodeObject {\n            co_firstlineno: 3,\n            co_lnotab: &mut lnotab.base.ob_base.ob_base,\n            ..Default::default()\n        };\n        let lineno = get_line_number(&code, 30, &LocalProcess).unwrap();\n        assert_eq!(lineno, 7);\n    }\n}\n"
  },
  {
    "path": "src/timer.rs",
    "content": "use std::time::{Duration, Instant};\n#[cfg(windows)]\nuse winapi::um::timeapi;\n\nuse rand_distr::{Distribution, Exp};\n\n/// Timer is an iterator that sleeps an appropriate amount of time between iterations\n/// so that we can sample the process a certain number of times a second.\n/// We're using an irregular sampling strategy to avoid aliasing effects that can happen\n/// if the target process runs code at a similar schedule as the profiler:\n/// https://github.com/benfred/py-spy/issues/94\npub struct Timer {\n    start: Instant,\n    desired: Duration,\n    exp: Exp<f64>,\n}\n\nimpl Timer {\n    pub fn new(rate: f64) -> Timer {\n        // This changes a system-wide setting on Windows so that the OS wakes up every 1ms\n        // instead of the default 15.6ms. This is required to have a sleep call\n        // take less than 15ms, which we need since we usually profile at more than 64hz.\n        // The downside is that this will increase power usage: good discussions are:\n        // https://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/\n        // and http://www.belshe.com/2010/06/04/chrome-cranking-up-the-clock/\n        #[cfg(windows)]\n        unsafe {\n            timeapi::timeBeginPeriod(1);\n        }\n\n        let start = Instant::now();\n        Timer {\n            start,\n            desired: Duration::from_secs(0),\n            exp: Exp::new(rate).unwrap(),\n        }\n    }\n}\n\nimpl Iterator for Timer {\n    type Item = Result<Duration, Duration>;\n\n    fn next(&mut self) -> Option<Self::Item> {\n        let elapsed = self.start.elapsed();\n\n        // figure out how many nanoseconds should come between the previous and\n        // the next sample using an exponential distribution to avoid aliasing\n        let nanos = 1_000_000_000.0 * self.exp.sample(&mut rand::thread_rng());\n\n        // since we want to account for the amount of time the sampling takes\n        // we keep track of when we should sleep to (rather than just sleeping\n        // the amount of time from the previous line).\n        self.desired += Duration::from_nanos(nanos as u64);\n\n        // sleep if appropriate, or warn if we are behind in sampling\n        if self.desired > elapsed {\n            std::thread::sleep(self.desired - elapsed);\n            Some(Ok(self.desired - elapsed))\n        } else {\n            Some(Err(elapsed - self.desired))\n        }\n    }\n}\n\nimpl Drop for Timer {\n    fn drop(&mut self) {\n        #[cfg(windows)]\n        unsafe {\n            timeapi::timeEndPeriod(1);\n        }\n    }\n}\n"
  },
  {
    "path": "src/utils.rs",
    "content": "use num_traits::{CheckedAdd, Zero};\nuse std::ops::Add;\n\n#[cfg(feature = \"unwind\")]\npub fn resolve_filename(filename: &str, modulename: &str) -> Option<String> {\n    // check the filename first, if it exists use it\n    use std::path::Path;\n    let path = Path::new(filename);\n    if path.exists() {\n        return Some(filename.to_owned());\n    }\n\n    // try resolving relative the shared library the file is in\n    let module = Path::new(modulename);\n    if let Some(parent) = module.parent() {\n        if let Some(name) = path.file_name() {\n            let temp = parent.join(name);\n            if temp.exists() {\n                return Some(temp.to_string_lossy().to_string());\n            }\n        }\n    }\n\n    None\n}\n\npub fn is_subrange<T: Eq + Ord + Add + CheckedAdd + Zero>(\n    start: T,\n    size: T,\n    sub_start: T,\n    sub_size: T,\n) -> bool {\n    !size.is_zero()\n        && !sub_size.is_zero()\n        && start.checked_add(&size).is_some()\n        && sub_start.checked_add(&sub_size).is_some()\n        && sub_start >= start\n        && sub_start + sub_size <= start + size\n}\n\npub fn offset_of<T, M>(object: *const T, member: *const M) -> usize {\n    member as usize - object as usize\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n\n    #[test]\n    fn test_is_subrange() {\n        assert!(is_subrange(\n            0u64,\n            0xffff_ffff_ffff_ffff,\n            0,\n            0xffff_ffff_ffff_ffff\n        ));\n        assert!(is_subrange(0, 1, 0, 1));\n        assert!(is_subrange(0, 100, 0, 10));\n        assert!(is_subrange(0, 100, 90, 10));\n\n        assert!(!is_subrange(0, 0, 0, 0));\n        assert!(!is_subrange(1, 0, 0, 0));\n        assert!(!is_subrange(1, 0, 1, 0));\n        assert!(!is_subrange(0, 0, 0, 1));\n        assert!(!is_subrange(0, 0, 1, 0));\n        assert!(!is_subrange(\n            1u64,\n            0xffff_ffff_ffff_ffff,\n            0,\n            0xffff_ffff_ffff_ffff\n        ));\n        assert!(!is_subrange(\n            0u64,\n            0xffff_ffff_ffff_ffff,\n            1,\n            0xffff_ffff_ffff_ffff\n        ));\n        assert!(!is_subrange(0, 10, 0, 11));\n        assert!(!is_subrange(0, 10, 1, 10));\n        assert!(!is_subrange(0, 10, 9, 2));\n    }\n}\n"
  },
  {
    "path": "src/version.rs",
    "content": "use lazy_static::lazy_static;\nuse regex::bytes::Regex;\n\nuse anyhow::Error;\n\n#[derive(Debug, PartialEq, Eq, Clone)]\npub struct Version {\n    pub major: u64,\n    pub minor: u64,\n    pub patch: u64,\n    pub release_flags: String,\n    pub build_metadata: Option<String>,\n}\n\nimpl Version {\n    pub fn scan_bytes(data: &[u8]) -> Result<Version, Error> {\n        lazy_static! {\n            static ref RE: Regex = Regex::new(\n                r\"((2|3)\\.(3|4|5|6|7|8|9|10|11|12|13)\\.(\\d{1,2}))((a|b|c|rc)\\d{1,2})?(\\+(?:[0-9a-z-]+(?:[.][0-9a-z-]+)*)?)? (.{1,64})\"\n            )\n            .unwrap();\n        }\n\n        if let Some(cap) = RE.captures_iter(data).next() {\n            let release = match cap.get(5) {\n                Some(x) => std::str::from_utf8(x.as_bytes())?,\n                None => \"\",\n            };\n            let major = std::str::from_utf8(&cap[2])?.parse::<u64>()?;\n            let minor = std::str::from_utf8(&cap[3])?.parse::<u64>()?;\n            let patch = std::str::from_utf8(&cap[4])?.parse::<u64>()?;\n            let build_metadata = if let Some(s) = cap.get(7) {\n                Some(std::str::from_utf8(&s.as_bytes()[1..])?.to_owned())\n            } else {\n                None\n            };\n\n            let version = std::str::from_utf8(&cap[0])?;\n            info!(\"Found matching version string '{}'\", version);\n            #[cfg(windows)]\n            {\n                if version.contains(\"32 bit\") {\n                    error!(\"32-bit python is not yet supported on windows! See https://github.com/benfred/py-spy/issues/31 for updates\");\n                    // we're panic'ing rather than returning an error, since we can't recover from this\n                    // and returning an error would just get the calling code to fall back to other\n                    // methods of trying to find the version\n                    panic!(\"32-bit python is unsupported on windows\");\n                }\n            }\n\n            return Ok(Version {\n                major,\n                minor,\n                patch,\n                release_flags: release.to_owned(),\n                build_metadata,\n            });\n        }\n        Err(format_err!(\"failed to find version string\"))\n    }\n}\n\nimpl std::fmt::Display for Version {\n    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {\n        write!(\n            f,\n            \"{}.{}.{}{}\",\n            self.major, self.minor, self.patch, self.release_flags\n        )?;\n        if let Some(build_metadata) = &self.build_metadata {\n            write!(f, \"+{build_metadata}\",)?\n        }\n        Ok(())\n    }\n}\n\n#[cfg(test)]\nmod tests {\n    use super::*;\n    #[test]\n    fn test_find_version() {\n        let version = Version::scan_bytes(b\"2.7.10 (default, Oct  6 2017, 22:29:07)\").unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 2,\n                minor: 7,\n                patch: 10,\n                release_flags: \"\".to_owned(),\n                build_metadata: None,\n            }\n        );\n\n        let version = Version::scan_bytes(\n            b\"3.6.3 |Anaconda custom (64-bit)| (default, Oct  6 2017, 12:04:38)\",\n        )\n        .unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 3,\n                minor: 6,\n                patch: 3,\n                release_flags: \"\".to_owned(),\n                build_metadata: None,\n            }\n        );\n\n        let version =\n            Version::scan_bytes(b\"Python 3.7.0rc1 (v3.7.0rc1:dfad352267, Jul 20 2018, 13:27:54)\")\n                .unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 3,\n                minor: 7,\n                patch: 0,\n                release_flags: \"rc1\".to_owned(),\n                build_metadata: None,\n            }\n        );\n\n        let version =\n            Version::scan_bytes(b\"Python 3.10.0rc1 (tags/v3.10.0rc1, Aug 28 2021, 18:25:40)\")\n                .unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 3,\n                minor: 10,\n                patch: 0,\n                release_flags: \"rc1\".to_owned(),\n                build_metadata: None,\n            }\n        );\n\n        let version =\n            Version::scan_bytes(b\"1.7.0rc1 (v1.7.0rc1:dfad352267, Jul 20 2018, 13:27:54)\");\n        assert!(version.is_err(), \"don't match unsupported \");\n\n        let version = Version::scan_bytes(b\"3.7 10 \");\n        assert!(version.is_err(), \"needs dotted version\");\n\n        let version = Version::scan_bytes(b\"3.7.10fooboo \");\n        assert!(version.is_err(), \"limit suffixes\");\n\n        // v2.7.15+ is a valid version string apparently: https://github.com/benfred/py-spy/issues/81\n        let version = Version::scan_bytes(b\"2.7.15+ (default, Oct  2 2018, 22:12:08)\").unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 2,\n                minor: 7,\n                patch: 15,\n                release_flags: \"\".to_owned(),\n                build_metadata: Some(\"\".to_owned()),\n            }\n        );\n\n        let version = Version::scan_bytes(b\"2.7.10+dcba (default)\").unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 2,\n                minor: 7,\n                patch: 10,\n                release_flags: \"\".to_owned(),\n                build_metadata: Some(\"dcba\".to_owned()),\n            }\n        );\n\n        let version = Version::scan_bytes(b\"2.7.10+5-4.abcd (default)\").unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 2,\n                minor: 7,\n                patch: 10,\n                release_flags: \"\".to_owned(),\n                build_metadata: Some(\"5-4.abcd\".to_owned()),\n            }\n        );\n\n        let version = Version::scan_bytes(b\"2.8.5+cinder (default)\").unwrap();\n        assert_eq!(\n            version,\n            Version {\n                major: 2,\n                minor: 8,\n                patch: 5,\n                release_flags: \"\".to_owned(),\n                build_metadata: Some(\"cinder\".to_owned()),\n            }\n        );\n    }\n}\n"
  },
  {
    "path": "tests/integration_test.py",
    "content": "from __future__ import print_function\n\nimport json\nimport os\nimport subprocess\nimport sys\nimport re\nimport tempfile\nimport unittest\nfrom collections import defaultdict, namedtuple\nfrom shutil import which\n\nFrame = namedtuple(\"Frame\", [\"file\", \"name\", \"line\", \"col\"])\n\nGIL = [\"--gil\"]\n\nPYSPY = which(\"py-spy\")\n\n\nclass TestPyspy(unittest.TestCase):\n    \"\"\"Basic tests of using py-spy as a commandline application\"\"\"\n\n    def _sample_process(self, script_name, options=None, include_profile_name=False):\n        if not PYSPY:\n            raise ValueError(\"Failed to find py-spy on the path\")\n\n        # for permissions reasons, we really want to run the sampled python process as a\n        # subprocess of the py-spy (works best on linux etc). So we're running the\n        # record option, and setting different flags. To get the profile output\n        # we're using the speedscope format (since we can read that in as json)\n        with tempfile.NamedTemporaryFile() as profile_file:\n            filename = profile_file.name\n            if sys.platform.startswith(\"win\"):\n                filename = \"profile.json\"\n\n            cmdline = [\n                PYSPY,\n                \"record\",\n                \"-o\",\n                filename,\n                \"--format\",\n                \"speedscope\",\n                \"-d\",\n                \"2\",\n            ]\n            cmdline.extend(options or [])\n            cmdline.extend([\"--\", sys.executable, script_name])\n            env = dict(os.environ, RUST_LOG=\"info\")\n            subprocess.check_output(cmdline, env=env)\n            with open(filename) as f:\n                profiles = json.load(f)\n\n        frames = profiles[\"shared\"][\"frames\"]\n        samples = defaultdict(int)\n        for p in profiles[\"profiles\"]:\n            for sample in p[\"samples\"]:\n                if include_profile_name:\n                    samples[\n                        tuple(\n                            [p[\"name\"]] + [Frame(**frames[frame]) for frame in sample]\n                        )\n                    ] += 1\n                else:\n                    samples[tuple(Frame(**frames[frame]) for frame in sample)] += 1\n        return samples\n\n    def test_longsleep(self):\n        # running with the gil flag should have ~ no samples returned\n        if GIL:\n            profile = self._sample_process(_get_script(\"longsleep.py\"), GIL)\n            print(profile)\n            assert sum(profile.values()) <= 10\n\n        # running with the idle flag should have > 95%  of samples in the sleep call\n        profile = self._sample_process(_get_script(\"longsleep.py\"), [\"--idle\"])\n        sample, count = _most_frequent_sample(profile)\n        assert count >= 95\n        assert len(sample) == 2\n        assert sample[0].name == \"<module>\"\n        assert sample[0].line == 9\n        assert sample[1].name == \"longsleep\"\n        assert sample[1].line == 5\n\n    def test_busyloop(self):\n        # can't be sure what line we're on, but we should have ~ all samples holding the gil\n        profile = self._sample_process(_get_script(\"busyloop.py\"), GIL)\n        assert sum(profile.values()) >= 95\n\n    def test_thread_names(self):\n        # we don't support getting thread names on python < 3.6\n        v = sys.version_info\n        if v.major < 3 or v.minor < 6:\n            return\n\n        for _ in range(3):\n            profile = self._sample_process(\n                _get_script(\"thread_names.py\"),\n                [\"--threads\", \"--idle\"],\n                include_profile_name=True,\n            )\n            expected_thread_names = set(\"CustomThreadName-\" + str(i) for i in range(10))\n            expected_thread_names.add(\"MainThread\")\n            name_re = re.compile(r\"\\\"(.*)\\\"\")\n            actual_thread_names = {name_re.search(p[0]).groups()[0] for p in profile}\n            if expected_thread_names == actual_thread_names:\n                break\n        if expected_thread_names != actual_thread_names:\n            print(\n                \"failed to get thread names\",\n                expected_thread_names,\n                actual_thread_names,\n            )\n\n        assert expected_thread_names == actual_thread_names\n\n    def test_shell_completions(self):\n        cmdline = [PYSPY, \"completions\", \"bash\"]\n        subprocess.check_output(cmdline)\n\n\ndef _get_script(name):\n    base_dir = os.path.dirname(__file__)\n    return os.path.join(base_dir, \"scripts\", name)\n\n\ndef _most_frequent_sample(samples):\n    frames, count = max(samples.items(), key=lambda x: x[1])\n    # lets normalize as a percentage here, rather than raw number of samples\n    return frames, int(100 * count / sum(samples.values()))\n\n\nif __name__ == \"__main__\":\n    print(\"Testing py-spy @\", PYSPY)\n    unittest.main()\n"
  },
  {
    "path": "tests/integration_test.rs",
    "content": "extern crate py_spy;\nuse py_spy::{Config, Pid, PythonSpy};\nuse std::collections::HashSet;\n\nstruct ScriptRunner {\n    #[allow(dead_code)]\n    child: std::process::Child,\n}\n\nimpl ScriptRunner {\n    fn new(process_name: &str, filename: &str) -> ScriptRunner {\n        let child = std::process::Command::new(process_name)\n            .arg(filename)\n            .spawn()\n            .unwrap();\n        ScriptRunner { child }\n    }\n\n    fn id(&self) -> Pid {\n        self.child.id() as _\n    }\n}\n\nimpl Drop for ScriptRunner {\n    fn drop(&mut self) {\n        if let Err(err) = self.child.kill() {\n            eprintln!(\"Failed to kill child process {}\", err);\n        }\n    }\n}\n\nstruct TestRunner {\n    #[allow(dead_code)]\n    child: ScriptRunner,\n    spy: PythonSpy,\n}\n\nimpl TestRunner {\n    fn new(config: Config, filename: &str) -> TestRunner {\n        let child = ScriptRunner::new(\"python\", filename);\n        std::thread::sleep(std::time::Duration::from_millis(400));\n        let spy = PythonSpy::retry_new(child.id(), &config, 20).unwrap();\n        TestRunner { child, spy }\n    }\n}\n\n#[test]\nfn test_busy_loop() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n    let mut runner = TestRunner::new(Config::default(), \"./tests/scripts/busyloop.py\");\n    let traces = runner.spy.get_stack_traces().unwrap();\n\n    // we can't be guaranteed what line the script is processing, but\n    // we should be able to say that the script is active and\n    // catch issues like https://github.com/benfred/py-spy/issues/141\n    assert!(traces[0].active);\n}\n\n#[cfg(feature = \"unwind\")]\n#[test]\nfn test_thread_reuse() {\n    // on linux we had an issue with the pthread -> native thread id caching\n    // the problem was that the pthreadids were getting re-used,\n    // and this caused errors on native unwind (since the native thread had\n    // exited). Test that this works with a simple script that creates\n    // a couple short lived threads, and then profiling with native enabled\n    let config = Config {\n        native: true,\n        ..Default::default()\n    };\n    let mut runner = TestRunner::new(config, \"./tests/scripts/thread_reuse.py\");\n\n    let mut errors = 0;\n\n    for _ in 0..100 {\n        // should be able to get traces here BUT we do sometimes get errors about\n        // not being able to suspend process (\"No such file or directory (os error 2)\"\n        // when threads exit. Allow a small number of errors here.\n        if let Err(e) = runner.spy.get_stack_traces() {\n            println!(\"Failed to get traces {}\", e);\n            errors += 1;\n        }\n        std::thread::sleep(std::time::Duration::from_millis(20));\n    }\n\n    assert!(errors <= 3);\n}\n\n#[test]\nfn test_long_sleep() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    let mut runner = TestRunner::new(Config::default(), \"./tests/scripts/longsleep.py\");\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 1);\n    let trace = &traces[0];\n\n    // Make sure the stack trace is what we expect\n    assert_eq!(trace.frames[0].name, \"longsleep\");\n    assert_eq!(\n        trace.frames[0].short_filename,\n        Some(\"longsleep.py\".to_owned())\n    );\n    assert_eq!(trace.frames[0].line, 5);\n\n    assert_eq!(trace.frames[1].name, \"<module>\");\n    assert_eq!(trace.frames[1].line, 9);\n    assert_eq!(\n        trace.frames[1].short_filename,\n        Some(\"longsleep.py\".to_owned())\n    );\n\n    assert!(!traces[0].owns_gil);\n\n    // we should reliably be able to detect the thread is sleeping on osx/windows\n    // linux+freebsd is trickier\n    #[cfg(any(target_os = \"macos\", target_os = \"windows\"))]\n    assert!(!traces[0].active);\n}\n\n#[test]\nfn test_thread_names() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n    let config = Config {\n        include_idle: true,\n        ..Default::default()\n    };\n    let mut runner = TestRunner::new(config, \"./tests/scripts/thread_names.py\");\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 11);\n\n    // dictionary + thread name lookup is only supported with python 3.6+\n    if runner.spy.version.major == 3 && runner.spy.version.minor >= 6 {\n        let mut expected_threads: HashSet<String> =\n            (0..10).map(|n| format!(\"CustomThreadName-{}\", n)).collect();\n        expected_threads.insert(\"MainThread\".to_string());\n        let detected_threads: HashSet<String> = traces\n            .iter()\n            .map(|trace| trace.thread_name.as_ref().unwrap().clone())\n            .collect();\n        assert_eq!(expected_threads, detected_threads);\n    } else {\n        for trace in traces.iter() {\n            assert!(trace.thread_name.is_none());\n        }\n    }\n}\n\n#[test]\nfn test_recursive() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    // there used to be a problem where the top-level functions being returned\n    // weren't actually entry points: https://github.com/benfred/py-spy/issues/56\n    // This was fixed by locking the process while we are profiling it. Test that\n    // the fix works by generating some samples from a program that would exhibit\n    // this behaviour\n    let mut runner = TestRunner::new(Config::default(), \"./tests/scripts/recursive.py\");\n\n    for _ in 0..100 {\n        let traces = runner.spy.get_stack_traces().unwrap();\n        assert_eq!(traces.len(), 1);\n        let trace = &traces[0];\n\n        assert!(trace.frames.len() <= 22);\n\n        let top_level_frame = &trace.frames[trace.frames.len() - 1];\n        assert_eq!(top_level_frame.name, \"<module>\");\n        assert!((top_level_frame.line == 8) || (top_level_frame.line == 7));\n\n        std::thread::sleep(std::time::Duration::from_millis(5));\n    }\n}\n\n#[test]\nfn test_unicode() {\n    #[cfg(target_os = \"macos\")]\n    {\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n    let mut runner = TestRunner::new(Config::default(), \"./tests/scripts/unicode💩.py\");\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 1);\n    let trace = &traces[0];\n\n    assert_eq!(trace.frames[0].name, \"function1\");\n    assert_eq!(\n        trace.frames[0].short_filename,\n        Some(\"unicode💩.py\".to_owned())\n    );\n    assert_eq!(trace.frames[0].line, 6);\n\n    assert_eq!(trace.frames[1].name, \"<module>\");\n    assert_eq!(trace.frames[1].line, 9);\n    assert_eq!(\n        trace.frames[1].short_filename,\n        Some(\"unicode💩.py\".to_owned())\n    );\n\n    assert!(!traces[0].owns_gil);\n}\n\n#[test]\nfn test_cyrillic() {\n    #[cfg(target_os = \"macos\")]\n    {\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    // Identifiers with characters outside the ASCII range are supported from Python 3\n    let runner = TestRunner::new(Config::default(), \"./tests/scripts/longsleep.py\");\n    if runner.spy.version.major == 2 {\n        return;\n    }\n\n    let mut runner = TestRunner::new(Config::default(), \"./tests/scripts/cyrillic.py\");\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 1);\n    let trace = &traces[0];\n\n    assert_eq!(trace.frames[0].name, \"кириллица\");\n    assert_eq!(trace.frames[0].line, 4);\n\n    assert_eq!(trace.frames[1].name, \"<module>\");\n    assert_eq!(trace.frames[1].line, 7);\n}\n\n#[test]\nfn test_local_vars() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    let config = Config {\n        dump_locals: 1,\n        ..Default::default()\n    };\n    let mut runner = TestRunner::new(config, \"./tests/scripts/local_vars.py\");\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 1);\n    let trace = &traces[0];\n    assert_eq!(trace.frames.len(), 2);\n    let frame = &trace.frames[0];\n    let locals = frame.locals.as_ref().unwrap();\n\n    assert_eq!(locals.len(), 29);\n\n    let arg1 = &locals[0];\n    assert_eq!(arg1.name, \"arg1\");\n    assert!(arg1.arg);\n    assert_eq!(arg1.repr, Some(\"\\\"foo\\\"\".to_owned()));\n\n    let arg2 = &locals[1];\n    assert_eq!(arg2.name, \"arg2\");\n    assert!(arg2.arg);\n    assert_eq!(arg2.repr, Some(\"None\".to_owned()));\n\n    let arg3 = &locals[2];\n    assert_eq!(arg3.name, \"arg3\");\n    assert!(arg3.arg);\n    assert_eq!(arg3.repr, Some(\"True\".to_owned()));\n\n    let local1 = &locals[3];\n    assert_eq!(local1.name, \"local1\");\n    assert!(!local1.arg);\n    assert_eq!(local1.repr, Some(\"[-1234, 5678]\".to_owned()));\n\n    let local2 = &locals[4];\n    assert_eq!(local2.name, \"local2\");\n    assert!(!local2.arg);\n    assert_eq!(local2.repr, Some(\"(\\\"a\\\", \\\"b\\\", \\\"c\\\")\".to_owned()));\n\n    let local3 = &locals[5];\n    assert_eq!(local3.name, \"local3\");\n    assert!(!local3.arg);\n\n    assert_eq!(local3.repr, Some(\"123456789123456789\".to_owned()));\n\n    let local4 = &locals[6];\n    assert_eq!(local4.name, \"local4\");\n    assert!(!local4.arg);\n    assert_eq!(local4.repr, Some(\"3.1415\".to_owned()));\n\n    let local5 = &locals[7];\n    assert_eq!(local5.name, \"local5\");\n    assert!(!local5.arg);\n\n    let local6 = &locals[8];\n    assert_eq!(local6.name, \"local6\");\n    assert!(!local6.arg);\n\n    // Numpy scalars\n    let local7 = &locals[9];\n    assert_eq!(local7.name, \"local7\");\n    assert_eq!(local7.repr, Some(\"true\".to_string()));\n\n    let local8 = &locals[10];\n    assert_eq!(local8.name, \"local8\");\n    assert_eq!(local8.repr, Some(\"2\".to_string()));\n\n    let local9 = &locals[11];\n    assert_eq!(local9.name, \"local9\");\n    assert_eq!(local9.repr, Some(\"3\".to_string()));\n\n    let local10 = &locals[12];\n    assert_eq!(local10.name, \"local10\");\n    assert_eq!(local10.repr, Some(\"42\".to_string()));\n\n    let local11 = &locals[13];\n    assert_eq!(local11.name, \"local11\");\n    assert_eq!(local11.repr, Some(\"43\".to_string()));\n\n    let local12 = &locals[14];\n    assert_eq!(local12.name, \"local12\");\n    assert_eq!(local12.repr, Some(\"44\".to_string()));\n\n    let local13 = &locals[15];\n    assert_eq!(local13.name, \"local13\");\n    assert_eq!(local13.repr, Some(\"45\".to_string()));\n\n    let local14 = &locals[16];\n    assert_eq!(local14.name, \"local14\");\n    assert_eq!(local14.repr, Some(\"46\".to_string()));\n\n    let local15 = &locals[17];\n    assert_eq!(local15.name, \"local15\");\n    assert_eq!(local15.repr, Some(\"7\".to_string()));\n\n    let local16 = &locals[18];\n    assert_eq!(local16.name, \"local16\");\n    assert_eq!(local16.repr, Some(\"8\".to_string()));\n\n    fn test_repr_prefix(local: &py_spy::stack_trace::LocalVariable, expected: &str) {\n        assert!(\n            local\n                .repr\n                .as_ref()\n                .map(|result| result.starts_with(expected))\n                .unwrap_or(false),\n            \"local '{}' repr = '{:?}' doesn't start with '{}'\",\n            &local.name,\n            &local.repr,\n            expected\n        );\n    }\n\n    let local17 = &locals[19];\n    assert_eq!(local17.name, \"local17\");\n\n    #[cfg(not(windows))]\n    test_repr_prefix(local17, \"<numpy.ulonglong at\");\n\n    let local18 = &locals[20];\n    assert_eq!(local18.name, \"local18\");\n    test_repr_prefix(local18, \"<numpy.float16 at\");\n\n    let local19 = &locals[21];\n    assert_eq!(local19.name, \"local19\");\n    assert_eq!(local19.repr, Some(\"0.5\".to_string()));\n\n    let local20 = &locals[22];\n    assert_eq!(local20.name, \"local20\");\n    assert_eq!(local20.repr, Some(\"0.7\".to_string()));\n\n    let local21 = &locals[23];\n    assert_eq!(local21.name, \"local21\");\n    test_repr_prefix(local21, \"<numpy.longdouble at\");\n\n    let local22 = &locals[24];\n    assert_eq!(local22.name, \"local22\");\n    test_repr_prefix(local22, \"<numpy.complex64 at\");\n\n    let local23 = &locals[25];\n    assert_eq!(local23.name, \"local23\");\n    test_repr_prefix(local23, \"<numpy.complex128 at\");\n\n    let local24 = &locals[26];\n    assert_eq!(local24.name, \"local24\");\n    test_repr_prefix(local24, \"<numpy.clongdouble at\");\n\n    // https://github.com/benfred/py-spy/issues/766\n    let local25 = &locals[27];\n    assert_eq!(local25.name, \"local25\");\n    let unicode_val = local25.repr.as_ref().unwrap();\n    let end = unicode_val.char_indices().map(|(i, _)| i).nth(4).unwrap();\n    assert_eq!(unicode_val[0..end], *\"\\\"测试1\");\n\n    // Empty string\n    let local26 = &locals[28];\n    assert_eq!(local26.name, \"local26\");\n    assert_eq!(local26.repr, Some(\"\\\"\\\"\".to_string()));\n\n    // we only support dictionary lookup on python 3.6+ right now\n    if runner.spy.version.major == 3 && runner.spy.version.minor >= 6 {\n        assert_eq!(\n            local5.repr,\n            Some(\"{\\\"a\\\": False, \\\"b\\\": (1, 2, 3)}\".to_owned())\n        );\n    }\n}\n\n#[cfg(not(target_os = \"freebsd\"))]\n#[test]\nfn test_subprocesses() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    // We used to not be able to create a sampler object if one of the child processes\n    // was in a zombie state. Verify that this works now\n    let process = ScriptRunner::new(\"python\", \"./tests/scripts/subprocesses.py\");\n    std::thread::sleep(std::time::Duration::from_millis(1000));\n    let config = Config {\n        subprocesses: true,\n        ..Default::default()\n    };\n    let sampler = py_spy::sampler::Sampler::new(process.id(), &config).unwrap();\n    std::thread::sleep(std::time::Duration::from_millis(1000));\n\n    // Get samples from all the subprocesses, verify that we got from all 3 processes\n    let mut attempts = 0;\n\n    for sample in sampler {\n        // wait for other processes here if we don't have the expected number\n        let traces = sample.traces;\n        if traces.len() != 3 && attempts < 4 {\n            attempts += 1;\n            std::thread::sleep(std::time::Duration::from_millis(1000));\n            continue;\n        }\n        assert_eq!(traces.len(), 3);\n        assert!(traces[0].pid != traces[1].pid);\n        assert!(traces[1].pid != traces[2].pid);\n        break;\n    }\n}\n\n#[cfg(not(target_os = \"freebsd\"))]\n#[test]\nfn test_subprocesses_zombiechild() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n\n    // We used to not be able to create a sampler object if one of the child processes\n    // was in a zombie state. Verify that this works now\n    let process = ScriptRunner::new(\"python\", \"./tests/scripts/subprocesses_zombie_child.py\");\n    std::thread::sleep(std::time::Duration::from_millis(200));\n    let config = Config {\n        subprocesses: true,\n        ..Default::default()\n    };\n    let _sampler = py_spy::sampler::Sampler::new(process.id(), &config).unwrap();\n}\n\n#[test]\nfn test_negative_linenumber_increment() {\n    #[cfg(target_os = \"macos\")]\n    {\n        // We need root permissions here to run this on OSX\n        if unsafe { libc::geteuid() } != 0 {\n            return;\n        }\n    }\n    let mut runner = TestRunner::new(\n        Config::default(),\n        \"./tests/scripts/negative_linenumber_offsets.py\",\n    );\n\n    let traces = runner.spy.get_stack_traces().unwrap();\n    assert_eq!(traces.len(), 1);\n    let trace = &traces[0];\n\n    // Python 3.12 inlined comprehensions - see https://peps.python.org/pep-0709/\n    match (runner.spy.version.major, runner.spy.version.minor) {\n        (3, 0..=11) => {\n            assert_eq!(trace.frames[0].name, \"<listcomp>\");\n            assert!(trace.frames[0].line >= 5 && trace.frames[0].line <= 10);\n            assert_eq!(trace.frames[1].name, \"f\");\n            assert!(trace.frames[1].line >= 5 && trace.frames[0].line <= 10);\n            assert_eq!(trace.frames[2].name, \"<module>\");\n            assert_eq!(trace.frames[2].line, 13)\n        }\n        (2, _) | (3, 12..) => {\n            assert_eq!(trace.frames[0].name, \"f\");\n            assert!(trace.frames[0].line >= 5 && trace.frames[0].line <= 10);\n            assert_eq!(trace.frames[1].name, \"<module>\");\n            assert_eq!(trace.frames[1].line, 13);\n        }\n        _ => panic!(\"Unknown python major version\"),\n    }\n}\n\n#[cfg(target_os = \"linux\")]\n#[test]\nfn test_delayed_subprocess() {\n    let process = ScriptRunner::new(\"bash\", \"./tests/scripts/delayed_launch.sh\");\n    let config = Config {\n        subprocesses: true,\n        ..Default::default()\n    };\n    let sampler = py_spy::sampler::Sampler::new(process.id(), &config).unwrap();\n    for sample in sampler {\n        // should have one trace from the subprocess\n        let traces = sample.traces;\n        assert_eq!(traces.len(), 1);\n        assert!(traces[0].pid != process.id());\n        break;\n    }\n}\n"
  },
  {
    "path": "tests/scripts/busyloop.py",
    "content": "def busy_loop():\n    while True:\n        pass\n\n\nif __name__ == \"__main__\":\n    busy_loop()\n"
  },
  {
    "path": "tests/scripts/cyrillic.py",
    "content": "import time\n\ndef кириллица(seconds):\n    time.sleep(seconds)\n\nif __name__ == \"__main__\":\n    кириллица(100)\n"
  },
  {
    "path": "tests/scripts/delayed_launch.sh",
    "content": "sleep 0.5\npython -c \"import time; time.sleep(1000)\"\n"
  },
  {
    "path": "tests/scripts/local_vars.py",
    "content": "import time\nimport numpy as np\n\n\ndef local_variable_lookup(arg1=\"foo\", arg2=None, arg3=True):\n    local1 = [-1234, 5678]\n    local2 = (\"a\", \"b\", \"c\")\n    local3 = 123456789123456789\n    local4 = 3.1415\n    local5 = {\"a\": False, \"b\": (1, 2, 3)}\n    # https://github.com/benfred/py-spy/issues/224\n    local6 = (\"-\" * 115, {\"key\": {\"key\": {\"key\": \"value\"}}})\n\n    # Numpy scalars\n    # integers\n    local7 = np.bool(True)\n    local8 = np.byte(2)\n\n    local9 = np.int8(3)\n    local10 = np.int16(42)\n    local11 = np.int32(43)\n    local12 = np.int64(44)\n\n    local13 = np.uint8(45)\n    local14 = np.uint16(46)\n    local15 = np.uint32(7)\n    local16 = np.uint64(8)\n\n    local17 = np.ulonglong(11)\n\n    # Floats\n    local18 = np.float16(0.3)\n    local19 = np.float32(0.5)\n    local20 = np.float64(0.7)\n    local21 = np.longdouble(0.9)\n\n    # Complex\n    local22 = np.complex64(0.3+5j)\n    local23 = np.complex128(0.3+5j)\n    local24 = np.clongdouble(0.3+5j)\n\n    # https://github.com/benfred/py-spy/issues/766\n    local25 = \"测试1\" * 500\n\n    # Empty strings should not be ignored\n    local26 = \"\"\n\n    time.sleep(100000)\n\n\nif __name__ == \"__main__\":\n    local_variable_lookup()\n"
  },
  {
    "path": "tests/scripts/longsleep.py",
    "content": "import time\n\n\ndef longsleep():\n    time.sleep(100000)\n\n\nif __name__ == \"__main__\":\n    longsleep()\n"
  },
  {
    "path": "tests/scripts/negative_linenumber_offsets.py",
    "content": "import time\n\n\ndef f():\n    [\n        # Must be split over multiple lines to see the error.\n        # https://github.com/benfred/py-spy/pull/208\n        time.sleep(1)\n        for _ in range(1000)\n    ]\n\n\nf()\n"
  },
  {
    "path": "tests/scripts/recursive.py",
    "content": "def recurse(x):\n    if x == 0:\n        return\n    recurse(x-1)\n\n\nwhile True:\n    recurse(20)\n"
  },
  {
    "path": "tests/scripts/subprocesses.py",
    "content": "import time\nimport multiprocessing\n\ndef target():\n    multiprocessing.freeze_support()\n    time.sleep(1000)\n\ndef main():\n    child1 = multiprocessing.Process(target=target)\n    child1.start()\n    child2 = multiprocessing.Process(target=target)\n    child2.start()\n    time.sleep(10000)\n    child1.join()\n    child2.join()\n\nif __name__ == \"__main__\":\n    multiprocessing.freeze_support()\n    main()"
  },
  {
    "path": "tests/scripts/subprocesses_zombie_child.py",
    "content": "import time\nimport multiprocessing\n\ndef target():\n    pass\n\nif __name__ == \"__main__\":\n    multiprocessing.freeze_support()\n    child = multiprocessing.Process(target=target)\n    child.start()\n    time.sleep(10000)\n    child.join()\n"
  },
  {
    "path": "tests/scripts/thread_names.py",
    "content": "import time\nimport threading\n\n\ndef main():\n    for i in range(10):\n        th = threading.Thread(target = lambda: time.sleep(10000))\n        th.name = \"CustomThreadName-%s\" % i\n        th.start()\n    time.sleep(10000)\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "tests/scripts/thread_reuse.py",
    "content": "import time\nimport threading\n\nwhile True:\n    th = threading.Thread(target = lambda: time.sleep(.5))\n    th.start()\n    th.join()\n"
  },
  {
    "path": "tests/scripts/unicode💩.py",
    "content": "#!/env/bin/python\n# -*- coding: utf-8 -*-\nimport time\n\ndef function1(seconds):\n    time.sleep(seconds)\n\nif __name__ == \"__main__\":\n    function1(100)\n"
  }
]