From da1ecb1b3bf5a496f9f3cb20491db7d878fe5933 Mon Sep 17 00:00:00 2001 From: Marlon Bucciarelli <65083942+marlon-luca-bu@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:45:27 +0100 Subject: [PATCH 1/3] Create winnowing module for programming exercises (#315) --- .../module_programming_apted.xml | 26 + .../module_programming_winnowing.xml | 26 + .prospector.yaml | 2 + assessment_module_manager/modules.docker.ini | 8 +- assessment_module_manager/modules.ini | 9 +- docker-compose.prod.yml | 8 + docker-compose.yml | 8 + env_example/module_programming_winnowing.env | 3 + .../module_example/module_example/__main__.py | 4 +- .../module_programming_apted/poetry.lock | 628 +- .../module_programming_apted/pyproject.toml | 2 +- .../.dockerignore | 4 + .../.vscode/settings.json | 4 + .../module_programming_winnowing/Dockerfile | 29 + .../module_programming_winnowing/README.md | 8 + .../module_programming_winnowing/module.conf | 4 + .../module_programming_winnowing/__init__.py | 0 .../module_programming_winnowing/__main__.py | 171 + .../convert_code_to_ast/__init__.py | 0 .../extract_method_and_ast.py | 63 + .../get_feedback_methods.py | 27 + .../convert_code_to_ast/languages/__init__.py | 0 .../languages/java/JavaAstVisitor.py | 133 + .../languages/java/JavaLexer.py | 815 + .../java/JavaMethodParserListener.py | 73 + .../languages/java/JavaParser.py | 20451 ++++++++++++++++ .../languages/java/JavaParserVisitor.py | 1240 + .../languages/java/__init__.py | 0 .../languages/python/Python3Lexer.py | 791 + .../languages/python/Python3LexerBase.py | 101 + .../python/Python3MethodParserListener.py | 52 + .../languages/python/Python3Parser.py | 10288 ++++++++ .../languages/python/Python3ParserBase.py | 10 + .../languages/python/Python3ParserListener.py | 1083 + .../languages/python/Python3ParserVisitor.py | 491 + .../languages/python/PythonAstVisitor.py | 134 + .../languages/python/__init__.py | 0 .../convert_code_to_ast/method_node.py | 15 + .../feedback_suggestions/__init__.py | 0 .../feedback_suggestions/batch.py | 12 + .../code_similarity_computer.py | 133 + .../feedback_suggestions.py | 198 + .../remove_overlapping.py | 40 + .../feedback_suggestions/remove_suspicious.py | 47 + .../feedback_suggestions/winnowing.py | 170 + .../test_codes/1.py | 4 + .../test_codes/__init__.py | 0 .../test_codes/example_simple_lang.sl | 15 + .../test_codes/nested_for.py | 3 + .../test_codes/test1.java | 11 + .../test_codes/test1a.py | 7 + .../test_codes/test1c.py | 10 + .../test_codes/test2.java | 11 + .../test_codes/test2a.py | 12 + .../test_codes/test2b.py | 9 + .../test_codes/test3a.py | 5 + .../test_codes/test3b.py | 6 + .../test_codes/test4a.py | 5 + .../test_codes/test4b.py | 6 + .../test_codes/test5a.py | 14 + .../test_codes/test5b.py | 8 + .../test_codes/test5c.py | 4 + .../test_codes/test6a.py | 4 + .../test_codes/test7a.py | 6 + .../test_codes/test7b.py | 10 + .../test_codes/test8a.py | 10 + .../test_codes/test8b.py | 12 + .../module_programming_winnowing/poetry.lock | 1197 + .../pyproject.toml | 25 + 69 files changed, 38334 insertions(+), 371 deletions(-) create mode 100644 .idea/runConfigurations/module_programming_apted.xml create mode 100644 .idea/runConfigurations/module_programming_winnowing.xml create mode 100644 env_example/module_programming_winnowing.env create mode 100644 modules/programming/module_programming_winnowing/.dockerignore create mode 100644 modules/programming/module_programming_winnowing/.vscode/settings.json create mode 100644 modules/programming/module_programming_winnowing/Dockerfile create mode 100644 modules/programming/module_programming_winnowing/README.md create mode 100644 modules/programming/module_programming_winnowing/module.conf create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test4b.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5b.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test5c.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test6a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test7b.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py create mode 100644 modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py create mode 100644 modules/programming/module_programming_winnowing/poetry.lock create mode 100644 modules/programming/module_programming_winnowing/pyproject.toml diff --git a/.idea/runConfigurations/module_programming_apted.xml b/.idea/runConfigurations/module_programming_apted.xml new file mode 100644 index 000000000..0465f1c6b --- /dev/null +++ b/.idea/runConfigurations/module_programming_apted.xml @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations/module_programming_winnowing.xml b/.idea/runConfigurations/module_programming_winnowing.xml new file mode 100644 index 000000000..5f57e786c --- /dev/null +++ b/.idea/runConfigurations/module_programming_winnowing.xml @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/.prospector.yaml b/.prospector.yaml index 2add2d6b2..bd97b9978 100644 --- a/.prospector.yaml +++ b/.prospector.yaml @@ -8,6 +8,8 @@ ignore-paths: - module_programming_themisml/extract_methods/languages - module_programming_themisml/extract_methods/method_parser_listener.py - module_programming_apted/convert_code_to_ast/languages + - module_programming_winnowing/convert_code_to_ast/languages + - module_programming_winnowing/test_codes mypy: run: true diff --git a/assessment_module_manager/modules.docker.ini b/assessment_module_manager/modules.docker.ini index 53a2b83f8..ba23b665b 100644 --- a/assessment_module_manager/modules.docker.ini +++ b/assessment_module_manager/modules.docker.ini @@ -38,7 +38,7 @@ url = http://module-programming-apted:5006 type = programming supports_evaluation = false supports_non_graded_feedback_requests = false -supports_graded_feedback_requests = false +supports_graded_feedback_requests = true [module_modeling_llm] url = http://module-modeling-llm:5008 @@ -47,3 +47,9 @@ supports_evaluation = false supports_non_graded_feedback_requests = true supports_graded_feedback_requests = true +[module_programming_winnowing] +url = http://module-programming-winnowing:5009 +type = programming +supports_evaluation = false +supports_non_graded_feedback_requests = false +supports_graded_feedback_requests = true diff --git a/assessment_module_manager/modules.ini b/assessment_module_manager/modules.ini index cbe4a406c..6baa92caa 100644 --- a/assessment_module_manager/modules.ini +++ b/assessment_module_manager/modules.ini @@ -38,7 +38,7 @@ url = http://localhost:5006 type = programming supports_evaluation = false supports_non_graded_feedback_requests = false -supports_graded_feedback_requests = false +supports_graded_feedback_requests = true [module_modeling_llm] url = http://localhost:5008 @@ -47,3 +47,10 @@ supports_evaluation = false supports_non_graded_feedback_requests = true supports_graded_feedback_requests = true +[module_programming_winnowing] +url = http://localhost:5009 +type = programming +supports_evaluation = false +supports_non_graded_feedback_requests = false +supports_graded_feedback_requests = true + diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 35a9aef9d..09f54753a 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -71,6 +71,14 @@ services: - postgres image: ls1tum/athena_module_programming_apted:${ATHENA_TAG:-develop} + module_programming_winnowing: + hostname: module-programming-winnowing + env_file: + - ${ATHENA_ENV_DIR:-./env_example}/module_programming_winnowing.env + depends_on: + - postgres + image: ls1tum/athena_module_programming_winnowing:${ATHENA_TAG:-develop} + module_modeling_llm: hostname: module-modeling-llm env_file: diff --git a/docker-compose.yml b/docker-compose.yml index 54dcefbeb..64f4b221e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -82,3 +82,11 @@ services: - llm_core ports: - "5008:5008" + + module_programming_winnowing: + hostname: module-programming-winnowing + build: modules/programming/module_programming_winnowing + depends_on: + - athena + ports: + - "5009:5009" diff --git a/env_example/module_programming_winnowing.env b/env_example/module_programming_winnowing.env new file mode 100644 index 000000000..209f50dda --- /dev/null +++ b/env_example/module_programming_winnowing.env @@ -0,0 +1,3 @@ +PRODUCTION=1 +SECRET=12345abcdef +DATABASE_URL=postgresql://postgres:password@postgres:5432/athena diff --git a/modules/programming/module_example/module_example/__main__.py b/modules/programming/module_example/module_example/__main__.py index 182f160bb..df64d4369 100644 --- a/modules/programming/module_example/module_example/__main__.py +++ b/modules/programming/module_example/module_example/__main__.py @@ -1,5 +1,5 @@ """ -Entry point for the module_example module. +Entry point for the module_example. """ import random from typing import List, Any @@ -13,7 +13,7 @@ @config_schema_provider class Configuration(BaseModel): - """Example configuration for the module_example module.""" + """Example configuration for the module_example.""" debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.") diff --git a/modules/programming/module_programming_apted/poetry.lock b/modules/programming/module_programming_apted/poetry.lock index 2dfe709a1..8bfd637fe 100644 --- a/modules/programming/module_programming_apted/poetry.lock +++ b/modules/programming/module_programming_apted/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -27,9 +27,9 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "apted" @@ -44,19 +44,15 @@ files = [ [[package]] name = "astroid" -version = "2.15.8" +version = "3.3.5" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, + {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, ] -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - [[package]] name = "athena" version = "1.0.0" @@ -77,8 +73,8 @@ uvicorn = "^0.23.0" [package.source] type = "git" url = "https://github.com/ls1intum/Athena.git" -reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" -resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" +reference = "bbb2bb0" +resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2" subdirectory = "athena" [[package]] @@ -119,13 +115,13 @@ files = [ [[package]] name = "dill" -version = "0.3.8" +version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] @@ -164,19 +160,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "flake8" -version = "5.0.4" +version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8.1" files = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "flake8-polyfill" @@ -226,69 +222,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] @@ -352,15 +363,18 @@ socks = ["socksio (==1.*)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "isort" version = "5.13.2" @@ -393,52 +407,6 @@ url = "https://github.com/c2nes/javalang" reference = "HEAD" resolved_reference = "566963547575e93d305871d9cb26ce47ff1a036e" -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, -] - [[package]] name = "mccabe" version = "0.7.0" @@ -452,38 +420,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.2" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -492,6 +465,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -509,13 +483,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -534,90 +508,85 @@ flake8-polyfill = ">=1.0.2,<2" [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "prospector" -version = "1.10.3" +version = "1.13.3" description = "Prospector is a tool to analyse Python code by aggregating the result of other tools." optional = false -python-versions = ">=3.7.2,<4.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"}, - {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"}, + {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"}, + {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"}, ] [package.dependencies] dodgy = ">=0.2.1,<0.3.0" -flake8 = "<6.0.0" GitPython = ">=3.1.27,<4.0.0" mccabe = ">=0.7.0,<0.8.0" packaging = "*" pep8-naming = ">=0.3.3,<=0.10.0" pycodestyle = ">=2.9.0" pydocstyle = ">=2.0.0" -pyflakes = ">=2.2.0,<3" -pylint = ">=2.8.3" +pyflakes = ">=2.2.0" +pylint = ">=3.0" pylint-celery = "0.3" -pylint-django = ">=2.5,<2.6" +pylint-django = ">=2.6.1" pylint-flask = "0.6" -pylint-plugin-utils = ">=0.7,<0.8" PyYAML = "*" -requirements-detector = ">=1.2.0" +requirements-detector = ">=1.3.2" setoptconf-tmp = ">=0.3.1,<0.4.0" toml = ">=0.10.2,<0.11.0" [package.extras] with-bandit = ["bandit (>=1.5.1)"] -with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"] +with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"] with-mypy = ["mypy (>=0.600)"] with-pyright = ["pyright (>=1.1.3)"] with-pyroma = ["pyroma (>=2.4)"] +with-ruff = ["ruff"] with-vulture = ["vulture (>=1.5)"] [[package]] name = "psycopg2" -version = "2.9.9" +version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, - {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, - {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, - {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, - {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, - {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, - {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, - {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, - {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, - {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, - {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, ] [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.12.1" description = "Python style guide checker" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] @@ -698,31 +667,31 @@ toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] name = "pylint" -version = "2.17.7" +version = "3.3.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, + {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.3.5,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" @@ -748,22 +717,21 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-django" -version = "2.5.3" +version = "2.6.1" description = "A Pylint plugin to help Pylint understand the Django web framework" optional = false -python-versions = "*" +python-versions = "<4.0,>=3.9" files = [ - {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, - {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"}, + {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"}, + {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"}, ] [package.dependencies] -pylint = ">=2.0,<3" -pylint-plugin-utils = ">=0.7" +pylint = ">=3.0,<4" +pylint-plugin-utils = ">=0.8" [package.extras] -for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"] -with-django = ["Django"] +with-django = ["Django (>=2.2)"] [[package]] name = "pylint-flask" @@ -780,13 +748,13 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-plugin-utils" -version = "0.7" +version = "0.8.2" description = "Utilities and helpers for writing Pylint plugins" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7,<4.0" files = [ - {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"}, - {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"}, + {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"}, + {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"}, ] [package.dependencies] @@ -856,20 +824,19 @@ files = [ [[package]] name = "requirements-detector" -version = "1.2.2" +version = "1.3.2" description = "Python tool to find and list requirements of a Python project" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"}, - {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"}, + {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"}, + {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"}, ] [package.dependencies] -astroid = ">=2.0,<3.0" +astroid = ">=3.0,<4.0" packaging = ">=21.3" semver = ">=3.0.0,<4.0.0" -toml = ">=0.10.2,<0.11.0" [[package]] name = "semver" @@ -942,60 +909,68 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.33" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"}, - {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"}, - {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -1009,7 +984,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -1069,13 +1044,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240712" +version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, - {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, ] [package.dependencies] @@ -1094,13 +1069,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -1127,86 +1102,7 @@ h11 = ">=0.8" [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "a53e66a0790b33594a57d50f7007016f3c516ba3759b7b85bdfa15a215fc44b1" +content-hash = "37947358b1074c5e12a32c34b7db21e77ea08ff533f2b01684dcd0821e6499ae" diff --git a/modules/programming/module_programming_apted/pyproject.toml b/modules/programming/module_programming_apted/pyproject.toml index ac3ef5ab0..dee26fc11 100644 --- a/modules/programming/module_programming_apted/pyproject.toml +++ b/modules/programming/module_programming_apted/pyproject.toml @@ -9,7 +9,7 @@ license = "MIT" python = "3.11.*" # if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible. # athena = { path = "../athena", develop = true } -athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"} +athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"} apted = "^1.0.3" antlr4-python3-runtime = "^4.13.1" javalang = {git = "https://github.com/c2nes/javalang"} diff --git a/modules/programming/module_programming_winnowing/.dockerignore b/modules/programming/module_programming_winnowing/.dockerignore new file mode 100644 index 000000000..892b6a92a --- /dev/null +++ b/modules/programming/module_programming_winnowing/.dockerignore @@ -0,0 +1,4 @@ +.venv +.vscode +__pycache__ +.DS_Store \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/.vscode/settings.json b/modules/programming/module_programming_winnowing/.vscode/settings.json new file mode 100644 index 000000000..9a77d359f --- /dev/null +++ b/modules/programming/module_programming_winnowing/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "python.pythonPath": "./.venv/bin/python", + "python.analysis.typeCheckingMode": "basic", +} \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/Dockerfile b/modules/programming/module_programming_winnowing/Dockerfile new file mode 100644 index 000000000..a0f0db55a --- /dev/null +++ b/modules/programming/module_programming_winnowing/Dockerfile @@ -0,0 +1,29 @@ +# syntax=docker/dockerfile:1 + +# This is the Dockerfile for the module_programming_winnowing. + +FROM python:3.11 +LABEL org.opencontainers.image.source=https://github.com/ls1intum/Athena + +# Environment variable Python in Docker +ENV PYTHONUNBUFFERED=1 + +WORKDIR /code + +# Poetry +RUN pip install --no-cache-dir poetry==1.5.0 + +# Dependencies +COPY pyproject.toml poetry.lock ./ +# athena module (from the Dockerfile in the athena folder) +COPY --from=athena /code /athena +# install dependencies +RUN poetry config virtualenvs.create true \ + && poetry config virtualenvs.in-project true \ + && poetry install --no-interaction --no-ansi + +# Project files +COPY . ./ + +# poetry scripts don't work here +CMD poetry run python -m module_* \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/README.md b/modules/programming/module_programming_winnowing/README.md new file mode 100644 index 000000000..0bed60b25 --- /dev/null +++ b/modules/programming/module_programming_winnowing/README.md @@ -0,0 +1,8 @@ +# Start Directly +`poetry run module` + +# Start with Docker +`docker-compose up --build` + +# Start with Docker in Production Mode +`docker-compose up --env-file .env.production --build` \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module.conf b/modules/programming/module_programming_winnowing/module.conf new file mode 100644 index 000000000..4de9dda80 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module.conf @@ -0,0 +1,4 @@ +[module] +name = module_programming_winnowing +type = programming +port = 5009 diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py new file mode 100644 index 000000000..0f9cfd43e --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/__main__.py @@ -0,0 +1,171 @@ +""" +Entry point for the module_programming_winnowing module. +""" +import random +from typing import List, Any, cast +from pydantic import BaseModel, Field + +from athena import app, config_schema_provider, submissions_consumer, submission_selector, feedback_consumer, feedback_provider, evaluation_provider, emit_meta +from athena.programming import Exercise, Submission, Feedback, get_stored_feedback_suggestions, \ + count_stored_submissions, get_stored_submissions +from athena.logger import logger +from athena.storage import store_exercise, store_submissions, store_feedback, store_feedback_suggestions +from module_programming_winnowing.convert_code_to_ast.get_feedback_methods import get_feedback_method +from module_programming_winnowing.feedback_suggestions.feedback_suggestions import create_feedback_suggestions +from module_programming_winnowing.feedback_suggestions.remove_overlapping import filter_overlapping_suggestions +from module_programming_winnowing.feedback_suggestions.remove_suspicious import filter_suspicious + + +@config_schema_provider +class Configuration(BaseModel): + """Example configuration for the module_programming_winnowing module.""" + debug: bool = Field(False, description="Whether the module is in **debug mode**. This is an example config option.") + + +@submissions_consumer +def receive_submissions(exercise: Exercise, submissions: List[Submission], module_config: Configuration): + logger.info("receive_submissions: Received %d submissions for exercise %d", len(submissions), exercise.id) + for submission in submissions: + logger.info("- Submission %d", submission.id) + zip_content = submission.get_zip() + # list the files in the zip + for file in zip_content.namelist(): + logger.info(" - %s", file) + # Do something with the submissions + logger.info("Doing stuff") + + # Example use module config + # If you are not using module_config for your module, you can remove it from the function signature + logger.info("Config: %s", module_config) + if module_config.debug: + emit_meta('debug', True) + emit_meta('comment', 'You can add any metadata you want here') + + # Add data to exercise + exercise.meta["some_data"] = "some_value" + logger.info("- Exercise meta: %s", exercise.meta) + + # Add data to submission + for submission in submissions: + submission.meta["some_data"] = "some_value" + logger.info("- Submission %d meta: %s", submission.id, submission.meta) + + store_exercise(exercise) + store_submissions(submissions) + + +@submission_selector +def select_submission(exercise: Exercise, submissions: List[Submission]) -> Submission: + logger.info("select_submission: Received %d submissions for exercise %d", len(submissions), exercise.id) + for submission in submissions: + logger.info("- Submission %d", submission.id) + # Do something with the submissions and return the one that should be assessed next + return submissions[0] + + +@feedback_consumer +def process_incoming_feedback(exercise: Exercise, submission: Submission, feedbacks: List[Feedback]): + logger.info("process_feedback: Received %d feedbacks for submission %d of exercise %d", len(feedbacks), + submission.id, exercise.id) + logger.info("process_feedback: Feedbacks: %s", feedbacks) + + programming_language = exercise.programming_language.lower() + # Currently only works with Java and Python - can be extended with more languages if the grammar is available + if programming_language not in ["java", "python"]: + logger.info("The winnowing module currently only works with Java and Python. Not consuming feedback.") + return + + # Remove unreferenced feedbacks + feedbacks = list(filter(lambda f: f.file_path is not None and f.line_start is not None, feedbacks)) + + # Add method metadata to feedbacks + feedbacks_with_method = [] + for feedback in feedbacks: + feedback_method = get_feedback_method(submission, feedback, programming_language) + if feedback_method is None: + # don't consider feedback without a method + continue + logger.debug("Feedback #%d: Found method %s", feedback.id, feedback_method.name) + feedback.meta["method_name"] = feedback_method.name + feedback.meta["method_code"] = feedback_method.source_code + feedback.meta["method_line_start"] = feedback_method.line_start + feedback.meta["method_line_end"] = feedback_method.line_end + feedback.meta["method_ast"] = feedback_method.ast + feedbacks_with_method.append(feedback) + feedbacks = feedbacks_with_method + + # find all submissions for this exercise + exercise_submissions = cast(List[Submission], list(get_stored_submissions(exercise.id))) + + # create feedback suggestions + logger.info("Creating feedback suggestions for %d feedbacks", len(feedbacks)) + feedback_suggestions = create_feedback_suggestions(exercise_submissions, feedbacks, programming_language) + + # additionally, store metadata about how impactful each feedback was, i.e. how many suggestions were given based on it + for feedback in feedbacks: + # count how many suggestions were given based on this feedback + feedback.meta["n_feedback_suggestions"] = len( + [f for f in feedback_suggestions if f.meta["original_feedback_id"] == feedback.id]) + # store the information on the suggestions as well for quicker access later + for suggestion in feedback_suggestions: + if suggestion.meta["original_feedback_id"] == feedback.id: + suggestion.meta["n_feedback_suggestions"] = feedback.meta["n_feedback_suggestions"] + + # save to database + # type: ignore + store_feedback_suggestions(feedback_suggestions) + for feedback in feedbacks: + store_feedback(feedback) + + logger.debug("Feedbacks processed") + +@feedback_provider +def suggest_feedback(exercise: Exercise, submission: Submission, is_graded: bool, module_config: Configuration) -> List[Feedback]: + logger.info("suggest_feedback: Suggestions for submission %d of exercise %d were requested", submission.id, + exercise.id) + # Do something with the submission and return a list of feedback + # ThemisML currently only works with Java + if exercise.programming_language.lower() not in ["java", "python"]: + logger.info("The Winnowing module currently only works with Java and Python. Returning no suggestions.") + return [] + + suggested_feedbacks = cast(List[Feedback], list(get_stored_feedback_suggestions(exercise.id, submission.id))) + logger.debug("Found %d feedback suggestions (unfiltered)", len(suggested_feedbacks)) + suggested_feedbacks = filter_suspicious(suggested_feedbacks, count_stored_submissions(exercise.id)) + logger.debug("Found %d feedback suggestions (removed suspicious suggestions)", len(suggested_feedbacks)) + suggested_feedbacks = filter_overlapping_suggestions(suggested_feedbacks) + logger.debug("Found %d feedback suggestions (removed overlapping suggestions)", len(suggested_feedbacks)) + + logger.info("Suggesting %d filtered feedback suggestions", len(suggested_feedbacks)) + logger.debug("Suggested Feedback suggestions: %s", suggested_feedbacks) + + return suggested_feedbacks + + +# Only if it makes sense for a module (Optional) +@evaluation_provider +def evaluate_feedback(exercise: Exercise, submission: Submission, true_feedbacks: List[Feedback], predicted_feedbacks: List[Feedback]) -> Any: + logger.info( + "evaluate_feedback: Evaluation for submission %d of exercise %d was requested with %d true and %d predicted feedbacks", + submission.id, exercise.id, len(true_feedbacks), len(predicted_feedbacks) + ) + + # Do something with the true and predicted feedback and return the evaluation result + # Generate some example evaluation result + evaluation_results = [] + true_feedback_embeddings = [random.random() for _ in true_feedbacks] + predicted_feedback_embeddings = [random.random() for _ in predicted_feedbacks] + for feedback, embedding in zip(predicted_feedbacks, predicted_feedback_embeddings): + feedback_evaluation = { + "feedback_id": feedback.id, + "embedding": embedding, + "has_match": len([t for t in true_feedback_embeddings if abs(t - embedding) < 0.1]) > 0, + "correctness": random.random() + } + evaluation_results.append(feedback_evaluation) + + return evaluation_results + + +if __name__ == "__main__": + app.start() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py new file mode 100644 index 000000000..19dd7d422 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/extract_method_and_ast.py @@ -0,0 +1,63 @@ +from antlr4 import CommonTokenStream, InputStream +from antlr4.tree.Tree import ParseTreeWalker +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser +from module_programming_winnowing.convert_code_to_ast.languages.java import JavaLexer +from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3MethodParserListener import \ + MethodParserListener as PythonMethodParserListener +from module_programming_winnowing.convert_code_to_ast.languages.java.JavaMethodParserListener import \ + MethodParserListener as JavaMethodParserListener + +# Grammars for programming languages have different parse rules +JAVA_PARSE_RULE = "compilationUnit" +PYTHON_PARSE_RULE = "file_input" + +def parse_java_file(source_code: str): + return parse_file(source_code, JavaLexer, JavaParser, JAVA_PARSE_RULE, JavaMethodParserListener) + + +def parse_python_file(source_code: str): + return parse_file(source_code, Python3Lexer, Python3Parser, PYTHON_PARSE_RULE, PythonMethodParserListener) + + +def parse_file(source_code, lexer_class, parser_class, parse_rule, listener_class): + input_stream = InputStream(source_code) + lexer = lexer_class(input_stream) + stream = CommonTokenStream(lexer) + parser = parser_class(stream) + tree = getattr(parser, parse_rule)() + + listener = listener_class(parser) + walker = ParseTreeWalker() + walker.walk(listener, tree) + print(listener.methods) + + return listener.methods.copy() + + +def parse(source_code: str, programming_language: str): + if programming_language == "java": + return parse_java_file(source_code) + if programming_language == "python": + return parse_python_file(source_code) + raise ValueError(f"Unsupported programming language: {programming_language}") + + +if __name__ == "__main__": + # file_path2 = "../test_files/test_java_1.java" + # parse_java_file(file_path2) + + code = """def process_numbers(numbers): + total = 0 + for number in numbers: + if number % 2 == 1: + total += number + else: + total -= number + if total > 0: + print("Positive total:", total) + else: + print("Non-positive total:", total)""" + code1 = parse_python_file(code) + code2 = parse_python_file(code) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py new file mode 100644 index 000000000..f1e26a5a8 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/get_feedback_methods.py @@ -0,0 +1,27 @@ +from typing import Optional + +from athena.programming import Submission, Feedback +from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse +from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode +from athena.logger import logger + + +def get_feedback_method(submission: Submission, feedback: Feedback, programming_language: str) -> Optional[MethodNode]: + """Find method that the feedback is on""" + if feedback.file_path is None or feedback.line_start is None: + return None + try: + code = submission.get_code(feedback.file_path) + except UnicodeDecodeError: + logger.warning("File %s in submission %d is not UTF-8 encoded.", feedback.file_path, submission.id) + return None + methods = parse(code, programming_language) + for m in methods: + if m.line_start is None or m.line_end is None: + continue + # method has to contain all feedback lines + if m.line_start <= feedback.line_start: + feedback_line_end = feedback.line_end if feedback.line_end is not None else feedback.line_start + if m.line_end >= feedback_line_end: + return m + return None diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py new file mode 100644 index 000000000..583b82e04 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaAstVisitor.py @@ -0,0 +1,133 @@ +from antlr4 import * + +from module_programming_winnowing.convert_code_to_ast.languages.java.JavaLexer import Java20Lexer +from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser +from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParserVisitor import Java20ParserVisitor + + +class RemoveVariableNames(Java20ParserVisitor): + def visitVariableDeclaratorId(self, ctx): + if ctx.Identifier(): + token = ctx.Identifier().symbol + token.text = 'x' + return self.visitChildren(ctx) + + +class CustomJavaVisitor(Java20ParserVisitor): + def __init__(self): + self.loop_count = 0 + self.if_count = 0 + self.method_count = 0 + + def visitWhileStatement(self, ctx): + self.loop_count += 1 + return self.visitChildren(ctx) + + def visitForStatement(self, ctx): + self.loop_count += 1 + return self.visitChildren(ctx) + + def visitIfStatement(self, ctx): + self.if_count += 1 + return self.visitChildren(ctx) + + def visitMethodDeclaration(self, ctx): + self.method_count += 1 + return self.visitChildren(ctx) + + +def mutate(source_code): + input_stream = InputStream(source_code) + lexer = Java20Lexer(input_stream) + stream = CommonTokenStream(lexer) + parser = Java20Parser(stream) + tree = parser.compilationUnit() + + # Transform the AST + transformer = RemoveVariableNames() + transformer.visit(tree) + + return tree + + +level0 = [] +level1 = [] +level2 = [] + + +def find_levels(node, parser, level=0): + if level == 0: + level0.append(node.toStringTree(recog=parser)) + elif level == 1: + level1.append(node.toStringTree(recog=parser)) + elif level == 2: + level2.append(node.toStringTree(recog=parser)) + + for child in node.getChildren(): + if isinstance(child, ParserRuleContext): + find_levels(child, parser, level=level + 1) + + +def get_children(node, parser): + if isinstance(node, TerminalNode): + parent = node.getText() + children = [] + else: + parent = node.toStringTree(recog=parser) + children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for + child in node.getChildren()] + return parent, children + + +parents1 = [] +parents2 = [] +children1 = [] +children2 = [] + + +def get_parent_children_relation(root, parser, level=0): + for child in root.getChildren(): + if isinstance(child, ParserRuleContext): + p, c = get_children(child, parser) + if level == 0: + parents1.append(p) + children1.append(c) + elif level == 1: + parents2.append(p) + children2.append(c) + get_parent_children_relation(child, parser, level + 1) + + +def analyze(source_code): + input_tree = mutate(source_code) + + parser = Java20Parser(CommonTokenStream(Java20Lexer(InputStream(source_code)))) + + visitor = CustomJavaVisitor() + visitor.visit(input_tree) + count_l = visitor.loop_count + count_if = visitor.if_count + count_f = visitor.method_count + + # Finden der Ebenen + find_levels(input_tree, parser) + + # Eltern-Kind-Beziehungen finden + get_parent_children_relation(input_tree, parser) + + counts = [count_l, count_if, count_f] + levels = [level0, level1, level2] + + return counts, levels + + +if __name__ == "__main__": + file_path = """ + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, wooorld!"); + int test = 5; + } + """ + counts, levels = analyze(file_path) + print(counts, levels) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py new file mode 100644 index 000000000..6f1da3778 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaLexer.py @@ -0,0 +1,815 @@ +# Generated from JavaLexer.g4 by ANTLR 4.13.1 +from antlr4 import * +from io import StringIO +import sys + +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +def serializedATN(): + return [ + 4, 0, 126, 1264, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, + 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, + 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, + 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, + 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, + 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, + 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, + 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, + 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, + 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, + 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, + 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, + 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, + 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, + 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, + 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, + 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, + 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, + 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, + 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, + 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, + 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, + 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, + 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, + 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, + 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, + 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, + 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, + 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, + 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, + 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, + 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, + 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, + 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, + 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, + 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, + 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, + 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, + 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, + 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, + 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, + 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, + 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, + 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, + 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, + 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, + 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, + 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, + 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, + 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, + 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, + 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, + 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, + 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, + 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, + 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, + 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, + 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, + 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, + 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 805, 8, 68, 1, + 69, 1, 69, 3, 69, 809, 8, 69, 1, 70, 1, 70, 3, 70, 813, 8, 70, 1, 71, 1, 71, 3, 71, 817, + 8, 71, 1, 72, 1, 72, 3, 72, 821, 8, 72, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 828, 8, + 74, 1, 74, 1, 74, 1, 74, 3, 74, 833, 8, 74, 3, 74, 835, 8, 74, 1, 75, 1, 75, 3, 75, 839, + 8, 75, 1, 75, 3, 75, 842, 8, 75, 1, 76, 1, 76, 3, 76, 846, 8, 76, 1, 77, 1, 77, 1, 78, 4, + 78, 851, 8, 78, 11, 78, 12, 78, 852, 1, 79, 1, 79, 3, 79, 857, 8, 79, 1, 80, 4, 80, 860, + 8, 80, 11, 80, 12, 80, 861, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 3, 82, 870, 8, 82, + 1, 82, 3, 82, 873, 8, 82, 1, 83, 1, 83, 1, 84, 4, 84, 878, 8, 84, 11, 84, 12, 84, 879, + 1, 85, 1, 85, 3, 85, 884, 8, 85, 1, 86, 1, 86, 3, 86, 888, 8, 86, 1, 86, 1, 86, 1, 87, 1, + 87, 3, 87, 894, 8, 87, 1, 87, 3, 87, 897, 8, 87, 1, 88, 1, 88, 1, 89, 4, 89, 902, 8, 89, + 11, 89, 12, 89, 903, 1, 90, 1, 90, 3, 90, 908, 8, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, + 1, 92, 3, 92, 916, 8, 92, 1, 92, 3, 92, 919, 8, 92, 1, 93, 1, 93, 1, 94, 4, 94, 924, 8, + 94, 11, 94, 12, 94, 925, 1, 95, 1, 95, 3, 95, 930, 8, 95, 1, 96, 1, 96, 3, 96, 934, 8, + 96, 1, 97, 1, 97, 1, 97, 3, 97, 939, 8, 97, 1, 97, 3, 97, 942, 8, 97, 1, 97, 3, 97, 945, + 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 950, 8, 97, 1, 97, 3, 97, 953, 8, 97, 1, 97, 1, 97, 1, + 97, 3, 97, 958, 8, 97, 1, 97, 1, 97, 1, 97, 3, 97, 963, 8, 97, 1, 98, 1, 98, 1, 98, 1, 99, + 1, 99, 1, 100, 3, 100, 971, 8, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, + 103, 1, 103, 1, 103, 3, 103, 982, 8, 103, 1, 104, 1, 104, 3, 104, 986, 8, 104, 1, 104, + 1, 104, 1, 104, 3, 104, 991, 8, 104, 1, 104, 1, 104, 3, 104, 995, 8, 104, 1, 105, 1, + 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, + 1, 107, 1, 107, 3, 107, 1011, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, + 1, 108, 1, 108, 3, 108, 1021, 8, 108, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1027, + 8, 110, 1, 110, 1, 110, 1, 111, 4, 111, 1032, 8, 111, 11, 111, 12, 111, 1033, 1, 112, + 1, 112, 3, 112, 1038, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 1045, + 8, 113, 10, 113, 12, 113, 1048, 9, 113, 1, 113, 1, 113, 5, 113, 1052, 8, 113, 10, 113, + 12, 113, 1055, 9, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, + 3, 114, 1065, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, + 1, 115, 1, 115, 1, 115, 3, 115, 1078, 8, 115, 1, 116, 1, 116, 1, 117, 1, 117, 4, 117, + 1084, 8, 117, 11, 117, 12, 117, 1085, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, + 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, + 1, 122, 1, 123, 1, 123, 1, 124, 1, 124, 1, 125, 1, 125, 1, 126, 1, 126, 1, 127, 1, 127, + 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, + 1, 132, 1, 132, 1, 133, 1, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, + 1, 137, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 141, + 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, + 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 148, 1, 148, 1, 149, + 1, 149, 1, 150, 1, 150, 1, 151, 1, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 154, 1, 154, + 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, + 1, 158, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 162, + 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, + 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 5, 166, 1221, 8, 166, 10, 166, 12, 166, + 1224, 9, 166, 1, 167, 3, 167, 1227, 8, 167, 1, 168, 1, 168, 3, 168, 1231, 8, 168, 1, + 169, 4, 169, 1234, 8, 169, 11, 169, 12, 169, 1235, 1, 169, 1, 169, 1, 170, 1, 170, + 1, 170, 1, 170, 5, 170, 1244, 8, 170, 10, 170, 12, 170, 1247, 9, 170, 1, 170, 1, 170, + 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 1258, 8, 171, 10, 171, + 12, 171, 1261, 9, 171, 1, 171, 1, 171, 1, 1245, 0, 172, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, + 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, + 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, + 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, + 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, + 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, + 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, + 139, 0, 141, 0, 143, 0, 145, 0, 147, 0, 149, 0, 151, 0, 153, 0, 155, 0, 157, 0, 159, + 0, 161, 0, 163, 0, 165, 0, 167, 0, 169, 0, 171, 0, 173, 0, 175, 0, 177, 0, 179, 0, 181, + 0, 183, 0, 185, 0, 187, 0, 189, 0, 191, 0, 193, 70, 195, 0, 197, 0, 199, 0, 201, 0, 203, + 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 71, 217, 72, 219, 0, 221, 73, 223, 0, + 225, 0, 227, 74, 229, 0, 231, 0, 233, 0, 235, 0, 237, 75, 239, 76, 241, 77, 243, 78, + 245, 79, 247, 80, 249, 81, 251, 82, 253, 83, 255, 84, 257, 85, 259, 86, 261, 87, 263, + 88, 265, 89, 267, 90, 269, 91, 271, 92, 273, 93, 275, 94, 277, 95, 279, 96, 281, 97, + 283, 98, 285, 99, 287, 100, 289, 101, 291, 102, 293, 103, 295, 104, 297, 105, 299, + 106, 301, 107, 303, 108, 305, 109, 307, 110, 309, 111, 311, 112, 313, 113, 315, + 114, 317, 115, 319, 116, 321, 117, 323, 118, 325, 119, 327, 120, 329, 121, 331, + 122, 333, 123, 335, 0, 337, 0, 339, 124, 341, 125, 343, 126, 1, 0, 21, 2, 0, 76, 76, + 108, 108, 1, 0, 49, 57, 2, 0, 88, 88, 120, 120, 3, 0, 48, 57, 65, 70, 97, 102, 1, 0, 48, + 55, 2, 0, 66, 66, 98, 98, 1, 0, 48, 49, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 4, + 0, 68, 68, 70, 70, 100, 100, 102, 102, 2, 0, 80, 80, 112, 112, 4, 0, 10, 10, 13, 13, + 39, 39, 92, 92, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 9, 9, 32, 32, 2, 0, 10, 10, + 13, 13, 3, 0, 8, 8, 13, 13, 46, 46, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110, + 110, 114, 114, 116, 116, 1, 0, 48, 51, 402, 0, 36, 36, 65, 90, 95, 95, 97, 122, 162, + 165, 170, 170, 181, 181, 186, 186, 192, 214, 216, 246, 248, 705, 710, 721, 736, + 740, 748, 748, 750, 750, 880, 884, 886, 887, 890, 893, 895, 895, 902, 902, 904, + 906, 908, 908, 910, 929, 931, 1013, 1015, 1153, 1162, 1327, 1329, 1366, 1369, + 1369, 1377, 1415, 1423, 1423, 1488, 1514, 1520, 1522, 1547, 1547, 1568, 1610, + 1646, 1647, 1649, 1747, 1749, 1749, 1765, 1766, 1774, 1775, 1786, 1788, 1791, + 1791, 1808, 1808, 1810, 1839, 1869, 1957, 1969, 1969, 1994, 2026, 2036, 2037, + 2042, 2042, 2048, 2069, 2074, 2074, 2084, 2084, 2088, 2088, 2112, 2136, 2144, + 2154, 2208, 2228, 2230, 2237, 2308, 2361, 2365, 2365, 2384, 2384, 2392, 2401, + 2417, 2432, 2437, 2444, 2447, 2448, 2451, 2472, 2474, 2480, 2482, 2482, 2486, + 2489, 2493, 2493, 2510, 2510, 2524, 2525, 2527, 2529, 2544, 2547, 2555, 2556, + 2565, 2570, 2575, 2576, 2579, 2600, 2602, 2608, 2610, 2611, 2613, 2614, 2616, + 2617, 2649, 2652, 2654, 2654, 2674, 2676, 2693, 2701, 2703, 2705, 2707, 2728, + 2730, 2736, 2738, 2739, 2741, 2745, 2749, 2749, 2768, 2768, 2784, 2785, 2801, + 2801, 2809, 2809, 2821, 2828, 2831, 2832, 2835, 2856, 2858, 2864, 2866, 2867, + 2869, 2873, 2877, 2877, 2908, 2909, 2911, 2913, 2929, 2929, 2947, 2947, 2949, + 2954, 2958, 2960, 2962, 2965, 2969, 2970, 2972, 2972, 2974, 2975, 2979, 2980, + 2984, 2986, 2990, 3001, 3024, 3024, 3065, 3065, 3077, 3084, 3086, 3088, 3090, + 3112, 3114, 3129, 3133, 3133, 3160, 3162, 3168, 3169, 3200, 3200, 3205, 3212, + 3214, 3216, 3218, 3240, 3242, 3251, 3253, 3257, 3261, 3261, 3294, 3294, 3296, + 3297, 3313, 3314, 3333, 3340, 3342, 3344, 3346, 3386, 3389, 3389, 3406, 3406, + 3412, 3414, 3423, 3425, 3450, 3455, 3461, 3478, 3482, 3505, 3507, 3515, 3517, + 3517, 3520, 3526, 3585, 3632, 3634, 3635, 3647, 3654, 3713, 3714, 3716, 3716, + 3719, 3720, 3722, 3722, 3725, 3725, 3732, 3735, 3737, 3743, 3745, 3747, 3749, + 3749, 3751, 3751, 3754, 3755, 3757, 3760, 3762, 3763, 3773, 3773, 3776, 3780, + 3782, 3782, 3804, 3807, 3840, 3840, 3904, 3911, 3913, 3948, 3976, 3980, 4096, + 4138, 4159, 4159, 4176, 4181, 4186, 4189, 4193, 4193, 4197, 4198, 4206, 4208, + 4213, 4225, 4238, 4238, 4256, 4293, 4295, 4295, 4301, 4301, 4304, 4346, 4348, + 4680, 4682, 4685, 4688, 4694, 4696, 4696, 4698, 4701, 4704, 4744, 4746, 4749, + 4752, 4784, 4786, 4789, 4792, 4798, 4800, 4800, 4802, 4805, 4808, 4822, 4824, + 4880, 4882, 4885, 4888, 4954, 4992, 5007, 5024, 5109, 5112, 5117, 5121, 5740, + 5743, 5759, 5761, 5786, 5792, 5866, 5870, 5880, 5888, 5900, 5902, 5905, 5920, + 5937, 5952, 5969, 5984, 5996, 5998, 6000, 6016, 6067, 6103, 6103, 6107, 6108, + 6176, 6263, 6272, 6276, 6279, 6312, 6314, 6314, 6320, 6389, 6400, 6430, 6480, + 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6656, 6678, 6688, 6740, 6823, 6823, + 6917, 6963, 6981, 6987, 7043, 7072, 7086, 7087, 7098, 7141, 7168, 7203, 7245, + 7247, 7258, 7293, 7296, 7304, 7401, 7404, 7406, 7409, 7413, 7414, 7424, 7615, + 7680, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8023, 8025, 8025, 8027, + 8027, 8029, 8029, 8031, 8061, 8064, 8116, 8118, 8124, 8126, 8126, 8130, 8132, + 8134, 8140, 8144, 8147, 8150, 8155, 8160, 8172, 8178, 8180, 8182, 8188, 8255, + 8256, 8276, 8276, 8305, 8305, 8319, 8319, 8336, 8348, 8352, 8383, 8450, 8450, + 8455, 8455, 8458, 8467, 8469, 8469, 8473, 8477, 8484, 8484, 8486, 8486, 8488, + 8488, 8490, 8493, 8495, 8505, 8508, 8511, 8517, 8521, 8526, 8526, 8544, 8584, + 11264, 11310, 11312, 11358, 11360, 11492, 11499, 11502, 11506, 11507, 11520, + 11557, 11559, 11559, 11565, 11565, 11568, 11623, 11631, 11631, 11648, 11670, + 11680, 11686, 11688, 11694, 11696, 11702, 11704, 11710, 11712, 11718, 11720, + 11726, 11728, 11734, 11736, 11742, 11823, 11823, 12293, 12295, 12321, 12329, + 12337, 12341, 12344, 12348, 12353, 12438, 12445, 12447, 12449, 12538, 12540, + 12543, 12549, 12590, 12593, 12686, 12704, 12730, 12784, 12799, 13312, 19893, + 19968, 40938, 40960, 42124, 42192, 42237, 42240, 42508, 42512, 42527, 42538, + 42539, 42560, 42606, 42623, 42653, 42656, 42735, 42775, 42783, 42786, 42888, + 42891, 42926, 42928, 42935, 42999, 43009, 43011, 43013, 43015, 43018, 43020, + 43042, 43064, 43064, 43072, 43123, 43138, 43187, 43250, 43255, 43259, 43259, + 43261, 43261, 43274, 43301, 43312, 43334, 43360, 43388, 43396, 43442, 43471, + 43471, 43488, 43492, 43494, 43503, 43514, 43518, 43520, 43560, 43584, 43586, + 43588, 43595, 43616, 43638, 43642, 43642, 43646, 43695, 43697, 43697, 43701, + 43702, 43705, 43709, 43712, 43712, 43714, 43714, 43739, 43741, 43744, 43754, + 43762, 43764, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43814, 43816, + 43822, 43824, 43866, 43868, 43877, 43888, 44002, 44032, 55203, 55216, 55238, + 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, + 64285, 64287, 64296, 64298, 64310, 64312, 64316, 64318, 64318, 64320, 64321, + 64323, 64324, 64326, 64433, 64467, 64829, 64848, 64911, 64914, 64967, 65008, + 65020, 65075, 65076, 65101, 65103, 65129, 65129, 65136, 65140, 65142, 65276, + 65284, 65284, 65313, 65338, 65343, 65343, 65345, 65370, 65382, 65470, 65474, + 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65505, 65509, 65510, + 228, 0, 48, 57, 127, 159, 173, 173, 768, 879, 1155, 1159, 1425, 1469, 1471, 1471, + 1473, 1474, 1476, 1477, 1479, 1479, 1536, 1541, 1552, 1562, 1564, 1564, 1611, + 1641, 1648, 1648, 1750, 1757, 1759, 1764, 1767, 1768, 1770, 1773, 1776, 1785, + 1807, 1807, 1809, 1809, 1840, 1866, 1958, 1968, 1984, 1993, 2027, 2035, 2070, + 2073, 2075, 2083, 2085, 2087, 2089, 2093, 2137, 2139, 2260, 2307, 2362, 2364, + 2366, 2383, 2385, 2391, 2402, 2403, 2406, 2415, 2433, 2435, 2492, 2492, 2494, + 2500, 2503, 2504, 2507, 2509, 2519, 2519, 2530, 2531, 2534, 2543, 2561, 2563, + 2620, 2620, 2622, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2662, 2673, 2677, + 2677, 2689, 2691, 2748, 2748, 2750, 2757, 2759, 2761, 2763, 2765, 2786, 2787, + 2790, 2799, 2810, 2815, 2817, 2819, 2876, 2876, 2878, 2884, 2887, 2888, 2891, + 2893, 2902, 2903, 2914, 2915, 2918, 2927, 2946, 2946, 3006, 3010, 3014, 3016, + 3018, 3021, 3031, 3031, 3046, 3055, 3072, 3075, 3134, 3140, 3142, 3144, 3146, + 3149, 3157, 3158, 3170, 3171, 3174, 3183, 3201, 3203, 3260, 3260, 3262, 3268, + 3270, 3272, 3274, 3277, 3285, 3286, 3298, 3299, 3302, 3311, 3328, 3331, 3387, + 3388, 3390, 3396, 3398, 3400, 3402, 3405, 3415, 3415, 3426, 3427, 3430, 3439, + 3458, 3459, 3530, 3530, 3535, 3540, 3542, 3542, 3544, 3551, 3558, 3567, 3570, + 3571, 3633, 3633, 3636, 3642, 3655, 3662, 3664, 3673, 3761, 3761, 3764, 3769, + 3771, 3772, 3784, 3789, 3792, 3801, 3864, 3865, 3872, 3881, 3893, 3893, 3895, + 3895, 3897, 3897, 3902, 3903, 3953, 3972, 3974, 3975, 3981, 3991, 3993, 4028, + 4038, 4038, 4139, 4158, 4160, 4169, 4182, 4185, 4190, 4192, 4194, 4196, 4199, + 4205, 4209, 4212, 4226, 4237, 4239, 4253, 4957, 4959, 5906, 5908, 5938, 5940, + 5970, 5971, 6002, 6003, 6068, 6099, 6109, 6109, 6112, 6121, 6155, 6158, 6160, + 6169, 6277, 6278, 6313, 6313, 6432, 6443, 6448, 6459, 6470, 6479, 6608, 6617, + 6679, 6683, 6741, 6750, 6752, 6780, 6783, 6793, 6800, 6809, 6832, 6845, 6912, + 6916, 6964, 6980, 6992, 7001, 7019, 7027, 7040, 7042, 7073, 7085, 7088, 7097, + 7142, 7155, 7204, 7223, 7232, 7241, 7248, 7257, 7376, 7378, 7380, 7400, 7405, + 7405, 7410, 7412, 7415, 7417, 7616, 7673, 7675, 7679, 8203, 8207, 8234, 8238, + 8288, 8292, 8294, 8303, 8400, 8412, 8417, 8417, 8421, 8432, 11503, 11505, 11647, + 11647, 11744, 11775, 12330, 12335, 12441, 12442, 42528, 42537, 42607, 42607, + 42612, 42621, 42654, 42655, 42736, 42737, 43010, 43010, 43014, 43014, 43019, + 43019, 43043, 43047, 43136, 43137, 43188, 43205, 43216, 43225, 43232, 43249, + 43264, 43273, 43302, 43309, 43335, 43347, 43392, 43395, 43443, 43456, 43472, + 43481, 43493, 43493, 43504, 43513, 43561, 43574, 43587, 43587, 43596, 43597, + 43600, 43609, 43643, 43645, 43696, 43696, 43698, 43700, 43703, 43704, 43710, + 43711, 43713, 43713, 43755, 43759, 43765, 43766, 44003, 44010, 44012, 44013, + 44016, 44025, 64286, 64286, 65024, 65039, 65056, 65071, 65279, 65279, 65296, + 65305, 65529, 65531, 3, 0, 9, 10, 12, 13, 32, 32, 1278, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, + 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, + 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, + 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, + 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, + 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, + 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, + 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, + 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, + 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, + 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, + 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, + 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, + 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, + 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 237, 1, 0, + 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, + 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, + 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, + 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, + 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, + 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, + 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, + 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, + 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, + 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, + 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, + 1, 0, 0, 0, 1, 345, 1, 0, 0, 0, 3, 353, 1, 0, 0, 0, 5, 360, 1, 0, 0, 0, 7, 371, 1, 0, 0, 0, + 9, 374, 1, 0, 0, 0, 11, 379, 1, 0, 0, 0, 13, 385, 1, 0, 0, 0, 15, 393, 1, 0, 0, 0, 17, 402, + 1, 0, 0, 0, 19, 409, 1, 0, 0, 0, 21, 418, 1, 0, 0, 0, 23, 425, 1, 0, 0, 0, 25, 428, 1, 0, + 0, 0, 27, 439, 1, 0, 0, 0, 29, 444, 1, 0, 0, 0, 31, 448, 1, 0, 0, 0, 33, 453, 1, 0, 0, 0, + 35, 459, 1, 0, 0, 0, 37, 468, 1, 0, 0, 0, 39, 475, 1, 0, 0, 0, 41, 483, 1, 0, 0, 0, 43, 489, + 1, 0, 0, 0, 45, 494, 1, 0, 0, 0, 47, 499, 1, 0, 0, 0, 49, 505, 1, 0, 0, 0, 51, 510, 1, 0, + 0, 0, 53, 516, 1, 0, 0, 0, 55, 522, 1, 0, 0, 0, 57, 531, 1, 0, 0, 0, 59, 539, 1, 0, 0, 0, + 61, 542, 1, 0, 0, 0, 63, 549, 1, 0, 0, 0, 65, 554, 1, 0, 0, 0, 67, 559, 1, 0, 0, 0, 69, 567, + 1, 0, 0, 0, 71, 573, 1, 0, 0, 0, 73, 581, 1, 0, 0, 0, 75, 587, 1, 0, 0, 0, 77, 591, 1, 0, + 0, 0, 79, 594, 1, 0, 0, 0, 81, 599, 1, 0, 0, 0, 83, 610, 1, 0, 0, 0, 85, 617, 1, 0, 0, 0, + 87, 628, 1, 0, 0, 0, 89, 632, 1, 0, 0, 0, 91, 642, 1, 0, 0, 0, 93, 647, 1, 0, 0, 0, 95, 654, + 1, 0, 0, 0, 97, 658, 1, 0, 0, 0, 99, 666, 1, 0, 0, 0, 101, 674, 1, 0, 0, 0, 103, 684, 1, + 0, 0, 0, 105, 691, 1, 0, 0, 0, 107, 698, 1, 0, 0, 0, 109, 704, 1, 0, 0, 0, 111, 711, 1, + 0, 0, 0, 113, 720, 1, 0, 0, 0, 115, 726, 1, 0, 0, 0, 117, 733, 1, 0, 0, 0, 119, 746, 1, + 0, 0, 0, 121, 751, 1, 0, 0, 0, 123, 757, 1, 0, 0, 0, 125, 764, 1, 0, 0, 0, 127, 774, 1, + 0, 0, 0, 129, 778, 1, 0, 0, 0, 131, 783, 1, 0, 0, 0, 133, 792, 1, 0, 0, 0, 135, 798, 1, + 0, 0, 0, 137, 804, 1, 0, 0, 0, 139, 806, 1, 0, 0, 0, 141, 810, 1, 0, 0, 0, 143, 814, 1, + 0, 0, 0, 145, 818, 1, 0, 0, 0, 147, 822, 1, 0, 0, 0, 149, 834, 1, 0, 0, 0, 151, 836, 1, + 0, 0, 0, 153, 845, 1, 0, 0, 0, 155, 847, 1, 0, 0, 0, 157, 850, 1, 0, 0, 0, 159, 856, 1, + 0, 0, 0, 161, 859, 1, 0, 0, 0, 163, 863, 1, 0, 0, 0, 165, 867, 1, 0, 0, 0, 167, 874, 1, + 0, 0, 0, 169, 877, 1, 0, 0, 0, 171, 883, 1, 0, 0, 0, 173, 885, 1, 0, 0, 0, 175, 891, 1, + 0, 0, 0, 177, 898, 1, 0, 0, 0, 179, 901, 1, 0, 0, 0, 181, 907, 1, 0, 0, 0, 183, 909, 1, + 0, 0, 0, 185, 913, 1, 0, 0, 0, 187, 920, 1, 0, 0, 0, 189, 923, 1, 0, 0, 0, 191, 929, 1, + 0, 0, 0, 193, 933, 1, 0, 0, 0, 195, 962, 1, 0, 0, 0, 197, 964, 1, 0, 0, 0, 199, 967, 1, + 0, 0, 0, 201, 970, 1, 0, 0, 0, 203, 974, 1, 0, 0, 0, 205, 976, 1, 0, 0, 0, 207, 978, 1, + 0, 0, 0, 209, 994, 1, 0, 0, 0, 211, 996, 1, 0, 0, 0, 213, 999, 1, 0, 0, 0, 215, 1010, 1, + 0, 0, 0, 217, 1020, 1, 0, 0, 0, 219, 1022, 1, 0, 0, 0, 221, 1024, 1, 0, 0, 0, 223, 1031, + 1, 0, 0, 0, 225, 1037, 1, 0, 0, 0, 227, 1039, 1, 0, 0, 0, 229, 1064, 1, 0, 0, 0, 231, 1077, + 1, 0, 0, 0, 233, 1079, 1, 0, 0, 0, 235, 1081, 1, 0, 0, 0, 237, 1092, 1, 0, 0, 0, 239, 1097, + 1, 0, 0, 0, 241, 1099, 1, 0, 0, 0, 243, 1101, 1, 0, 0, 0, 245, 1103, 1, 0, 0, 0, 247, 1105, + 1, 0, 0, 0, 249, 1107, 1, 0, 0, 0, 251, 1109, 1, 0, 0, 0, 253, 1111, 1, 0, 0, 0, 255, 1113, + 1, 0, 0, 0, 257, 1115, 1, 0, 0, 0, 259, 1119, 1, 0, 0, 0, 261, 1121, 1, 0, 0, 0, 263, 1124, + 1, 0, 0, 0, 265, 1126, 1, 0, 0, 0, 267, 1128, 1, 0, 0, 0, 269, 1130, 1, 0, 0, 0, 271, 1132, + 1, 0, 0, 0, 273, 1134, 1, 0, 0, 0, 275, 1136, 1, 0, 0, 0, 277, 1138, 1, 0, 0, 0, 279, 1141, + 1, 0, 0, 0, 281, 1144, 1, 0, 0, 0, 283, 1147, 1, 0, 0, 0, 285, 1150, 1, 0, 0, 0, 287, 1153, + 1, 0, 0, 0, 289, 1156, 1, 0, 0, 0, 291, 1159, 1, 0, 0, 0, 293, 1162, 1, 0, 0, 0, 295, 1165, + 1, 0, 0, 0, 297, 1167, 1, 0, 0, 0, 299, 1169, 1, 0, 0, 0, 301, 1171, 1, 0, 0, 0, 303, 1173, + 1, 0, 0, 0, 305, 1175, 1, 0, 0, 0, 307, 1177, 1, 0, 0, 0, 309, 1179, 1, 0, 0, 0, 311, 1181, + 1, 0, 0, 0, 313, 1184, 1, 0, 0, 0, 315, 1187, 1, 0, 0, 0, 317, 1190, 1, 0, 0, 0, 319, 1193, + 1, 0, 0, 0, 321, 1196, 1, 0, 0, 0, 323, 1199, 1, 0, 0, 0, 325, 1202, 1, 0, 0, 0, 327, 1205, + 1, 0, 0, 0, 329, 1209, 1, 0, 0, 0, 331, 1213, 1, 0, 0, 0, 333, 1218, 1, 0, 0, 0, 335, 1226, + 1, 0, 0, 0, 337, 1230, 1, 0, 0, 0, 339, 1233, 1, 0, 0, 0, 341, 1239, 1, 0, 0, 0, 343, 1253, + 1, 0, 0, 0, 345, 346, 5, 101, 0, 0, 346, 347, 5, 120, 0, 0, 347, 348, 5, 112, 0, 0, 348, + 349, 5, 111, 0, 0, 349, 350, 5, 114, 0, 0, 350, 351, 5, 116, 0, 0, 351, 352, 5, 115, + 0, 0, 352, 2, 1, 0, 0, 0, 353, 354, 5, 109, 0, 0, 354, 355, 5, 111, 0, 0, 355, 356, 5, + 100, 0, 0, 356, 357, 5, 117, 0, 0, 357, 358, 5, 108, 0, 0, 358, 359, 5, 101, 0, 0, 359, + 4, 1, 0, 0, 0, 360, 361, 5, 110, 0, 0, 361, 362, 5, 111, 0, 0, 362, 363, 5, 110, 0, 0, + 363, 364, 5, 45, 0, 0, 364, 365, 5, 115, 0, 0, 365, 366, 5, 101, 0, 0, 366, 367, 5, 97, + 0, 0, 367, 368, 5, 108, 0, 0, 368, 369, 5, 101, 0, 0, 369, 370, 5, 100, 0, 0, 370, 6, + 1, 0, 0, 0, 371, 372, 5, 60, 0, 0, 372, 373, 5, 62, 0, 0, 373, 8, 1, 0, 0, 0, 374, 375, + 5, 111, 0, 0, 375, 376, 5, 112, 0, 0, 376, 377, 5, 101, 0, 0, 377, 378, 5, 110, 0, 0, + 378, 10, 1, 0, 0, 0, 379, 380, 5, 111, 0, 0, 380, 381, 5, 112, 0, 0, 381, 382, 5, 101, + 0, 0, 382, 383, 5, 110, 0, 0, 383, 384, 5, 115, 0, 0, 384, 12, 1, 0, 0, 0, 385, 386, 5, + 112, 0, 0, 386, 387, 5, 101, 0, 0, 387, 388, 5, 114, 0, 0, 388, 389, 5, 109, 0, 0, 389, + 390, 5, 105, 0, 0, 390, 391, 5, 116, 0, 0, 391, 392, 5, 115, 0, 0, 392, 14, 1, 0, 0, 0, + 393, 394, 5, 112, 0, 0, 394, 395, 5, 114, 0, 0, 395, 396, 5, 111, 0, 0, 396, 397, 5, + 118, 0, 0, 397, 398, 5, 105, 0, 0, 398, 399, 5, 100, 0, 0, 399, 400, 5, 101, 0, 0, 400, + 401, 5, 115, 0, 0, 401, 16, 1, 0, 0, 0, 402, 403, 5, 114, 0, 0, 403, 404, 5, 101, 0, 0, + 404, 405, 5, 99, 0, 0, 405, 406, 5, 111, 0, 0, 406, 407, 5, 114, 0, 0, 407, 408, 5, 100, + 0, 0, 408, 18, 1, 0, 0, 0, 409, 410, 5, 114, 0, 0, 410, 411, 5, 101, 0, 0, 411, 412, 5, + 113, 0, 0, 412, 413, 5, 117, 0, 0, 413, 414, 5, 105, 0, 0, 414, 415, 5, 114, 0, 0, 415, + 416, 5, 101, 0, 0, 416, 417, 5, 115, 0, 0, 417, 20, 1, 0, 0, 0, 418, 419, 5, 115, 0, 0, + 419, 420, 5, 101, 0, 0, 420, 421, 5, 97, 0, 0, 421, 422, 5, 108, 0, 0, 422, 423, 5, 101, + 0, 0, 423, 424, 5, 100, 0, 0, 424, 22, 1, 0, 0, 0, 425, 426, 5, 116, 0, 0, 426, 427, 5, + 111, 0, 0, 427, 24, 1, 0, 0, 0, 428, 429, 5, 116, 0, 0, 429, 430, 5, 114, 0, 0, 430, 431, + 5, 97, 0, 0, 431, 432, 5, 110, 0, 0, 432, 433, 5, 115, 0, 0, 433, 434, 5, 105, 0, 0, 434, + 435, 5, 116, 0, 0, 435, 436, 5, 105, 0, 0, 436, 437, 5, 118, 0, 0, 437, 438, 5, 101, + 0, 0, 438, 26, 1, 0, 0, 0, 439, 440, 5, 117, 0, 0, 440, 441, 5, 115, 0, 0, 441, 442, 5, + 101, 0, 0, 442, 443, 5, 115, 0, 0, 443, 28, 1, 0, 0, 0, 444, 445, 5, 118, 0, 0, 445, 446, + 5, 97, 0, 0, 446, 447, 5, 114, 0, 0, 447, 30, 1, 0, 0, 0, 448, 449, 5, 119, 0, 0, 449, + 450, 5, 105, 0, 0, 450, 451, 5, 116, 0, 0, 451, 452, 5, 104, 0, 0, 452, 32, 1, 0, 0, 0, + 453, 454, 5, 121, 0, 0, 454, 455, 5, 105, 0, 0, 455, 456, 5, 101, 0, 0, 456, 457, 5, + 108, 0, 0, 457, 458, 5, 100, 0, 0, 458, 34, 1, 0, 0, 0, 459, 460, 5, 97, 0, 0, 460, 461, + 5, 98, 0, 0, 461, 462, 5, 115, 0, 0, 462, 463, 5, 116, 0, 0, 463, 464, 5, 114, 0, 0, 464, + 465, 5, 97, 0, 0, 465, 466, 5, 99, 0, 0, 466, 467, 5, 116, 0, 0, 467, 36, 1, 0, 0, 0, 468, + 469, 5, 97, 0, 0, 469, 470, 5, 115, 0, 0, 470, 471, 5, 115, 0, 0, 471, 472, 5, 101, 0, + 0, 472, 473, 5, 114, 0, 0, 473, 474, 5, 116, 0, 0, 474, 38, 1, 0, 0, 0, 475, 476, 5, 98, + 0, 0, 476, 477, 5, 111, 0, 0, 477, 478, 5, 111, 0, 0, 478, 479, 5, 108, 0, 0, 479, 480, + 5, 101, 0, 0, 480, 481, 5, 97, 0, 0, 481, 482, 5, 110, 0, 0, 482, 40, 1, 0, 0, 0, 483, + 484, 5, 98, 0, 0, 484, 485, 5, 114, 0, 0, 485, 486, 5, 101, 0, 0, 486, 487, 5, 97, 0, + 0, 487, 488, 5, 107, 0, 0, 488, 42, 1, 0, 0, 0, 489, 490, 5, 98, 0, 0, 490, 491, 5, 121, + 0, 0, 491, 492, 5, 116, 0, 0, 492, 493, 5, 101, 0, 0, 493, 44, 1, 0, 0, 0, 494, 495, 5, + 99, 0, 0, 495, 496, 5, 97, 0, 0, 496, 497, 5, 115, 0, 0, 497, 498, 5, 101, 0, 0, 498, + 46, 1, 0, 0, 0, 499, 500, 5, 99, 0, 0, 500, 501, 5, 97, 0, 0, 501, 502, 5, 116, 0, 0, 502, + 503, 5, 99, 0, 0, 503, 504, 5, 104, 0, 0, 504, 48, 1, 0, 0, 0, 505, 506, 5, 99, 0, 0, 506, + 507, 5, 104, 0, 0, 507, 508, 5, 97, 0, 0, 508, 509, 5, 114, 0, 0, 509, 50, 1, 0, 0, 0, + 510, 511, 5, 99, 0, 0, 511, 512, 5, 108, 0, 0, 512, 513, 5, 97, 0, 0, 513, 514, 5, 115, + 0, 0, 514, 515, 5, 115, 0, 0, 515, 52, 1, 0, 0, 0, 516, 517, 5, 99, 0, 0, 517, 518, 5, + 111, 0, 0, 518, 519, 5, 110, 0, 0, 519, 520, 5, 115, 0, 0, 520, 521, 5, 116, 0, 0, 521, + 54, 1, 0, 0, 0, 522, 523, 5, 99, 0, 0, 523, 524, 5, 111, 0, 0, 524, 525, 5, 110, 0, 0, + 525, 526, 5, 116, 0, 0, 526, 527, 5, 105, 0, 0, 527, 528, 5, 110, 0, 0, 528, 529, 5, + 117, 0, 0, 529, 530, 5, 101, 0, 0, 530, 56, 1, 0, 0, 0, 531, 532, 5, 100, 0, 0, 532, 533, + 5, 101, 0, 0, 533, 534, 5, 102, 0, 0, 534, 535, 5, 97, 0, 0, 535, 536, 5, 117, 0, 0, 536, + 537, 5, 108, 0, 0, 537, 538, 5, 116, 0, 0, 538, 58, 1, 0, 0, 0, 539, 540, 5, 100, 0, 0, + 540, 541, 5, 111, 0, 0, 541, 60, 1, 0, 0, 0, 542, 543, 5, 100, 0, 0, 543, 544, 5, 111, + 0, 0, 544, 545, 5, 117, 0, 0, 545, 546, 5, 98, 0, 0, 546, 547, 5, 108, 0, 0, 547, 548, + 5, 101, 0, 0, 548, 62, 1, 0, 0, 0, 549, 550, 5, 101, 0, 0, 550, 551, 5, 108, 0, 0, 551, + 552, 5, 115, 0, 0, 552, 553, 5, 101, 0, 0, 553, 64, 1, 0, 0, 0, 554, 555, 5, 101, 0, 0, + 555, 556, 5, 110, 0, 0, 556, 557, 5, 117, 0, 0, 557, 558, 5, 109, 0, 0, 558, 66, 1, 0, + 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 120, 0, 0, 561, 562, 5, 116, 0, 0, 562, 563, + 5, 101, 0, 0, 563, 564, 5, 110, 0, 0, 564, 565, 5, 100, 0, 0, 565, 566, 5, 115, 0, 0, + 566, 68, 1, 0, 0, 0, 567, 568, 5, 102, 0, 0, 568, 569, 5, 105, 0, 0, 569, 570, 5, 110, + 0, 0, 570, 571, 5, 97, 0, 0, 571, 572, 5, 108, 0, 0, 572, 70, 1, 0, 0, 0, 573, 574, 5, + 102, 0, 0, 574, 575, 5, 105, 0, 0, 575, 576, 5, 110, 0, 0, 576, 577, 5, 97, 0, 0, 577, + 578, 5, 108, 0, 0, 578, 579, 5, 108, 0, 0, 579, 580, 5, 121, 0, 0, 580, 72, 1, 0, 0, 0, + 581, 582, 5, 102, 0, 0, 582, 583, 5, 108, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5, + 97, 0, 0, 585, 586, 5, 116, 0, 0, 586, 74, 1, 0, 0, 0, 587, 588, 5, 102, 0, 0, 588, 589, + 5, 111, 0, 0, 589, 590, 5, 114, 0, 0, 590, 76, 1, 0, 0, 0, 591, 592, 5, 105, 0, 0, 592, + 593, 5, 102, 0, 0, 593, 78, 1, 0, 0, 0, 594, 595, 5, 103, 0, 0, 595, 596, 5, 111, 0, 0, + 596, 597, 5, 116, 0, 0, 597, 598, 5, 111, 0, 0, 598, 80, 1, 0, 0, 0, 599, 600, 5, 105, + 0, 0, 600, 601, 5, 109, 0, 0, 601, 602, 5, 112, 0, 0, 602, 603, 5, 108, 0, 0, 603, 604, + 5, 101, 0, 0, 604, 605, 5, 109, 0, 0, 605, 606, 5, 101, 0, 0, 606, 607, 5, 110, 0, 0, + 607, 608, 5, 116, 0, 0, 608, 609, 5, 115, 0, 0, 609, 82, 1, 0, 0, 0, 610, 611, 5, 105, + 0, 0, 611, 612, 5, 109, 0, 0, 612, 613, 5, 112, 0, 0, 613, 614, 5, 111, 0, 0, 614, 615, + 5, 114, 0, 0, 615, 616, 5, 116, 0, 0, 616, 84, 1, 0, 0, 0, 617, 618, 5, 105, 0, 0, 618, + 619, 5, 110, 0, 0, 619, 620, 5, 115, 0, 0, 620, 621, 5, 116, 0, 0, 621, 622, 5, 97, 0, + 0, 622, 623, 5, 110, 0, 0, 623, 624, 5, 99, 0, 0, 624, 625, 5, 101, 0, 0, 625, 626, 5, + 111, 0, 0, 626, 627, 5, 102, 0, 0, 627, 86, 1, 0, 0, 0, 628, 629, 5, 105, 0, 0, 629, 630, + 5, 110, 0, 0, 630, 631, 5, 116, 0, 0, 631, 88, 1, 0, 0, 0, 632, 633, 5, 105, 0, 0, 633, + 634, 5, 110, 0, 0, 634, 635, 5, 116, 0, 0, 635, 636, 5, 101, 0, 0, 636, 637, 5, 114, + 0, 0, 637, 638, 5, 102, 0, 0, 638, 639, 5, 97, 0, 0, 639, 640, 5, 99, 0, 0, 640, 641, + 5, 101, 0, 0, 641, 90, 1, 0, 0, 0, 642, 643, 5, 108, 0, 0, 643, 644, 5, 111, 0, 0, 644, + 645, 5, 110, 0, 0, 645, 646, 5, 103, 0, 0, 646, 92, 1, 0, 0, 0, 647, 648, 5, 110, 0, 0, + 648, 649, 5, 97, 0, 0, 649, 650, 5, 116, 0, 0, 650, 651, 5, 105, 0, 0, 651, 652, 5, 118, + 0, 0, 652, 653, 5, 101, 0, 0, 653, 94, 1, 0, 0, 0, 654, 655, 5, 110, 0, 0, 655, 656, 5, + 101, 0, 0, 656, 657, 5, 119, 0, 0, 657, 96, 1, 0, 0, 0, 658, 659, 5, 112, 0, 0, 659, 660, + 5, 97, 0, 0, 660, 661, 5, 99, 0, 0, 661, 662, 5, 107, 0, 0, 662, 663, 5, 97, 0, 0, 663, + 664, 5, 103, 0, 0, 664, 665, 5, 101, 0, 0, 665, 98, 1, 0, 0, 0, 666, 667, 5, 112, 0, 0, + 667, 668, 5, 114, 0, 0, 668, 669, 5, 105, 0, 0, 669, 670, 5, 118, 0, 0, 670, 671, 5, + 97, 0, 0, 671, 672, 5, 116, 0, 0, 672, 673, 5, 101, 0, 0, 673, 100, 1, 0, 0, 0, 674, 675, + 5, 112, 0, 0, 675, 676, 5, 114, 0, 0, 676, 677, 5, 111, 0, 0, 677, 678, 5, 116, 0, 0, + 678, 679, 5, 101, 0, 0, 679, 680, 5, 99, 0, 0, 680, 681, 5, 116, 0, 0, 681, 682, 5, 101, + 0, 0, 682, 683, 5, 100, 0, 0, 683, 102, 1, 0, 0, 0, 684, 685, 5, 112, 0, 0, 685, 686, + 5, 117, 0, 0, 686, 687, 5, 98, 0, 0, 687, 688, 5, 108, 0, 0, 688, 689, 5, 105, 0, 0, 689, + 690, 5, 99, 0, 0, 690, 104, 1, 0, 0, 0, 691, 692, 5, 114, 0, 0, 692, 693, 5, 101, 0, 0, + 693, 694, 5, 116, 0, 0, 694, 695, 5, 117, 0, 0, 695, 696, 5, 114, 0, 0, 696, 697, 5, + 110, 0, 0, 697, 106, 1, 0, 0, 0, 698, 699, 5, 115, 0, 0, 699, 700, 5, 104, 0, 0, 700, + 701, 5, 111, 0, 0, 701, 702, 5, 114, 0, 0, 702, 703, 5, 116, 0, 0, 703, 108, 1, 0, 0, + 0, 704, 705, 5, 115, 0, 0, 705, 706, 5, 116, 0, 0, 706, 707, 5, 97, 0, 0, 707, 708, 5, + 116, 0, 0, 708, 709, 5, 105, 0, 0, 709, 710, 5, 99, 0, 0, 710, 110, 1, 0, 0, 0, 711, 712, + 5, 115, 0, 0, 712, 713, 5, 116, 0, 0, 713, 714, 5, 114, 0, 0, 714, 715, 5, 105, 0, 0, + 715, 716, 5, 99, 0, 0, 716, 717, 5, 116, 0, 0, 717, 718, 5, 102, 0, 0, 718, 719, 5, 112, + 0, 0, 719, 112, 1, 0, 0, 0, 720, 721, 5, 115, 0, 0, 721, 722, 5, 117, 0, 0, 722, 723, + 5, 112, 0, 0, 723, 724, 5, 101, 0, 0, 724, 725, 5, 114, 0, 0, 725, 114, 1, 0, 0, 0, 726, + 727, 5, 115, 0, 0, 727, 728, 5, 119, 0, 0, 728, 729, 5, 105, 0, 0, 729, 730, 5, 116, + 0, 0, 730, 731, 5, 99, 0, 0, 731, 732, 5, 104, 0, 0, 732, 116, 1, 0, 0, 0, 733, 734, 5, + 115, 0, 0, 734, 735, 5, 121, 0, 0, 735, 736, 5, 110, 0, 0, 736, 737, 5, 99, 0, 0, 737, + 738, 5, 104, 0, 0, 738, 739, 5, 114, 0, 0, 739, 740, 5, 111, 0, 0, 740, 741, 5, 110, + 0, 0, 741, 742, 5, 105, 0, 0, 742, 743, 5, 122, 0, 0, 743, 744, 5, 101, 0, 0, 744, 745, + 5, 100, 0, 0, 745, 118, 1, 0, 0, 0, 746, 747, 5, 116, 0, 0, 747, 748, 5, 104, 0, 0, 748, + 749, 5, 105, 0, 0, 749, 750, 5, 115, 0, 0, 750, 120, 1, 0, 0, 0, 751, 752, 5, 116, 0, + 0, 752, 753, 5, 104, 0, 0, 753, 754, 5, 114, 0, 0, 754, 755, 5, 111, 0, 0, 755, 756, + 5, 119, 0, 0, 756, 122, 1, 0, 0, 0, 757, 758, 5, 116, 0, 0, 758, 759, 5, 104, 0, 0, 759, + 760, 5, 114, 0, 0, 760, 761, 5, 111, 0, 0, 761, 762, 5, 119, 0, 0, 762, 763, 5, 115, + 0, 0, 763, 124, 1, 0, 0, 0, 764, 765, 5, 116, 0, 0, 765, 766, 5, 114, 0, 0, 766, 767, + 5, 97, 0, 0, 767, 768, 5, 110, 0, 0, 768, 769, 5, 115, 0, 0, 769, 770, 5, 105, 0, 0, 770, + 771, 5, 101, 0, 0, 771, 772, 5, 110, 0, 0, 772, 773, 5, 116, 0, 0, 773, 126, 1, 0, 0, + 0, 774, 775, 5, 116, 0, 0, 775, 776, 5, 114, 0, 0, 776, 777, 5, 121, 0, 0, 777, 128, + 1, 0, 0, 0, 778, 779, 5, 118, 0, 0, 779, 780, 5, 111, 0, 0, 780, 781, 5, 105, 0, 0, 781, + 782, 5, 100, 0, 0, 782, 130, 1, 0, 0, 0, 783, 784, 5, 118, 0, 0, 784, 785, 5, 111, 0, + 0, 785, 786, 5, 108, 0, 0, 786, 787, 5, 97, 0, 0, 787, 788, 5, 116, 0, 0, 788, 789, 5, + 105, 0, 0, 789, 790, 5, 108, 0, 0, 790, 791, 5, 101, 0, 0, 791, 132, 1, 0, 0, 0, 792, + 793, 5, 119, 0, 0, 793, 794, 5, 104, 0, 0, 794, 795, 5, 105, 0, 0, 795, 796, 5, 108, + 0, 0, 796, 797, 5, 101, 0, 0, 797, 134, 1, 0, 0, 0, 798, 799, 5, 95, 0, 0, 799, 136, 1, + 0, 0, 0, 800, 805, 3, 139, 69, 0, 801, 805, 3, 141, 70, 0, 802, 805, 3, 143, 71, 0, 803, + 805, 3, 145, 72, 0, 804, 800, 1, 0, 0, 0, 804, 801, 1, 0, 0, 0, 804, 802, 1, 0, 0, 0, 804, + 803, 1, 0, 0, 0, 805, 138, 1, 0, 0, 0, 806, 808, 3, 149, 74, 0, 807, 809, 3, 147, 73, + 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 140, 1, 0, 0, 0, 810, 812, 3, 163, + 81, 0, 811, 813, 3, 147, 73, 0, 812, 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 142, + 1, 0, 0, 0, 814, 816, 3, 173, 86, 0, 815, 817, 3, 147, 73, 0, 816, 815, 1, 0, 0, 0, 816, + 817, 1, 0, 0, 0, 817, 144, 1, 0, 0, 0, 818, 820, 3, 183, 91, 0, 819, 821, 3, 147, 73, + 0, 820, 819, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 146, 1, 0, 0, 0, 822, 823, 7, 0, 0, + 0, 823, 148, 1, 0, 0, 0, 824, 835, 5, 48, 0, 0, 825, 832, 3, 155, 77, 0, 826, 828, 3, + 151, 75, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 833, 1, 0, 0, 0, 829, 830, + 3, 161, 80, 0, 830, 831, 3, 151, 75, 0, 831, 833, 1, 0, 0, 0, 832, 827, 1, 0, 0, 0, 832, + 829, 1, 0, 0, 0, 833, 835, 1, 0, 0, 0, 834, 824, 1, 0, 0, 0, 834, 825, 1, 0, 0, 0, 835, + 150, 1, 0, 0, 0, 836, 841, 3, 153, 76, 0, 837, 839, 3, 157, 78, 0, 838, 837, 1, 0, 0, + 0, 838, 839, 1, 0, 0, 0, 839, 840, 1, 0, 0, 0, 840, 842, 3, 153, 76, 0, 841, 838, 1, 0, + 0, 0, 841, 842, 1, 0, 0, 0, 842, 152, 1, 0, 0, 0, 843, 846, 5, 48, 0, 0, 844, 846, 3, 155, + 77, 0, 845, 843, 1, 0, 0, 0, 845, 844, 1, 0, 0, 0, 846, 154, 1, 0, 0, 0, 847, 848, 7, 1, + 0, 0, 848, 156, 1, 0, 0, 0, 849, 851, 3, 159, 79, 0, 850, 849, 1, 0, 0, 0, 851, 852, 1, + 0, 0, 0, 852, 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 158, 1, 0, 0, 0, 854, 857, 3, + 153, 76, 0, 855, 857, 5, 95, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 160, + 1, 0, 0, 0, 858, 860, 5, 95, 0, 0, 859, 858, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 859, + 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 162, 1, 0, 0, 0, 863, 864, 5, 48, 0, 0, 864, 865, + 7, 2, 0, 0, 865, 866, 3, 165, 82, 0, 866, 164, 1, 0, 0, 0, 867, 872, 3, 167, 83, 0, 868, + 870, 3, 169, 84, 0, 869, 868, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, + 873, 3, 167, 83, 0, 872, 869, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 166, 1, 0, 0, 0, 874, + 875, 7, 3, 0, 0, 875, 168, 1, 0, 0, 0, 876, 878, 3, 171, 85, 0, 877, 876, 1, 0, 0, 0, 878, + 879, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 879, 880, 1, 0, 0, 0, 880, 170, 1, 0, 0, 0, 881, + 884, 3, 167, 83, 0, 882, 884, 5, 95, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, 0, 0, 0, + 884, 172, 1, 0, 0, 0, 885, 887, 5, 48, 0, 0, 886, 888, 3, 161, 80, 0, 887, 886, 1, 0, + 0, 0, 887, 888, 1, 0, 0, 0, 888, 889, 1, 0, 0, 0, 889, 890, 3, 175, 87, 0, 890, 174, 1, + 0, 0, 0, 891, 896, 3, 177, 88, 0, 892, 894, 3, 179, 89, 0, 893, 892, 1, 0, 0, 0, 893, + 894, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 897, 3, 177, 88, 0, 896, 893, 1, 0, 0, 0, 896, + 897, 1, 0, 0, 0, 897, 176, 1, 0, 0, 0, 898, 899, 7, 4, 0, 0, 899, 178, 1, 0, 0, 0, 900, + 902, 3, 181, 90, 0, 901, 900, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 903, + 904, 1, 0, 0, 0, 904, 180, 1, 0, 0, 0, 905, 908, 3, 177, 88, 0, 906, 908, 5, 95, 0, 0, + 907, 905, 1, 0, 0, 0, 907, 906, 1, 0, 0, 0, 908, 182, 1, 0, 0, 0, 909, 910, 5, 48, 0, 0, + 910, 911, 7, 5, 0, 0, 911, 912, 3, 185, 92, 0, 912, 184, 1, 0, 0, 0, 913, 918, 3, 187, + 93, 0, 914, 916, 3, 189, 94, 0, 915, 914, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, + 1, 0, 0, 0, 917, 919, 3, 187, 93, 0, 918, 915, 1, 0, 0, 0, 918, 919, 1, 0, 0, 0, 919, 186, + 1, 0, 0, 0, 920, 921, 7, 6, 0, 0, 921, 188, 1, 0, 0, 0, 922, 924, 3, 191, 95, 0, 923, 922, + 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 923, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 190, + 1, 0, 0, 0, 927, 930, 3, 187, 93, 0, 928, 930, 5, 95, 0, 0, 929, 927, 1, 0, 0, 0, 929, + 928, 1, 0, 0, 0, 930, 192, 1, 0, 0, 0, 931, 934, 3, 195, 97, 0, 932, 934, 3, 207, 103, + 0, 933, 931, 1, 0, 0, 0, 933, 932, 1, 0, 0, 0, 934, 194, 1, 0, 0, 0, 935, 936, 3, 151, + 75, 0, 936, 938, 5, 46, 0, 0, 937, 939, 3, 151, 75, 0, 938, 937, 1, 0, 0, 0, 938, 939, + 1, 0, 0, 0, 939, 941, 1, 0, 0, 0, 940, 942, 3, 197, 98, 0, 941, 940, 1, 0, 0, 0, 941, 942, + 1, 0, 0, 0, 942, 944, 1, 0, 0, 0, 943, 945, 3, 205, 102, 0, 944, 943, 1, 0, 0, 0, 944, + 945, 1, 0, 0, 0, 945, 963, 1, 0, 0, 0, 946, 947, 5, 46, 0, 0, 947, 949, 3, 151, 75, 0, + 948, 950, 3, 197, 98, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 952, 1, 0, 0, + 0, 951, 953, 3, 205, 102, 0, 952, 951, 1, 0, 0, 0, 952, 953, 1, 0, 0, 0, 953, 963, 1, + 0, 0, 0, 954, 955, 3, 151, 75, 0, 955, 957, 3, 197, 98, 0, 956, 958, 3, 205, 102, 0, + 957, 956, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 963, 1, 0, 0, 0, 959, 960, 3, 151, 75, + 0, 960, 961, 3, 205, 102, 0, 961, 963, 1, 0, 0, 0, 962, 935, 1, 0, 0, 0, 962, 946, 1, + 0, 0, 0, 962, 954, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 963, 196, 1, 0, 0, 0, 964, 965, 3, + 199, 99, 0, 965, 966, 3, 201, 100, 0, 966, 198, 1, 0, 0, 0, 967, 968, 7, 7, 0, 0, 968, + 200, 1, 0, 0, 0, 969, 971, 3, 203, 101, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, + 971, 972, 1, 0, 0, 0, 972, 973, 3, 151, 75, 0, 973, 202, 1, 0, 0, 0, 974, 975, 7, 8, 0, + 0, 975, 204, 1, 0, 0, 0, 976, 977, 7, 9, 0, 0, 977, 206, 1, 0, 0, 0, 978, 979, 3, 209, + 104, 0, 979, 981, 3, 211, 105, 0, 980, 982, 3, 205, 102, 0, 981, 980, 1, 0, 0, 0, 981, + 982, 1, 0, 0, 0, 982, 208, 1, 0, 0, 0, 983, 985, 3, 163, 81, 0, 984, 986, 5, 46, 0, 0, + 985, 984, 1, 0, 0, 0, 985, 986, 1, 0, 0, 0, 986, 995, 1, 0, 0, 0, 987, 988, 5, 48, 0, 0, + 988, 990, 7, 2, 0, 0, 989, 991, 3, 165, 82, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, + 0, 991, 992, 1, 0, 0, 0, 992, 993, 5, 46, 0, 0, 993, 995, 3, 165, 82, 0, 994, 983, 1, + 0, 0, 0, 994, 987, 1, 0, 0, 0, 995, 210, 1, 0, 0, 0, 996, 997, 3, 213, 106, 0, 997, 998, + 3, 201, 100, 0, 998, 212, 1, 0, 0, 0, 999, 1000, 7, 10, 0, 0, 1000, 214, 1, 0, 0, 0, 1001, + 1002, 5, 116, 0, 0, 1002, 1003, 5, 114, 0, 0, 1003, 1004, 5, 117, 0, 0, 1004, 1011, + 5, 101, 0, 0, 1005, 1006, 5, 102, 0, 0, 1006, 1007, 5, 97, 0, 0, 1007, 1008, 5, 108, + 0, 0, 1008, 1009, 5, 115, 0, 0, 1009, 1011, 5, 101, 0, 0, 1010, 1001, 1, 0, 0, 0, 1010, + 1005, 1, 0, 0, 0, 1011, 216, 1, 0, 0, 0, 1012, 1013, 5, 39, 0, 0, 1013, 1014, 3, 219, + 109, 0, 1014, 1015, 5, 39, 0, 0, 1015, 1021, 1, 0, 0, 0, 1016, 1017, 5, 39, 0, 0, 1017, + 1018, 3, 229, 114, 0, 1018, 1019, 5, 39, 0, 0, 1019, 1021, 1, 0, 0, 0, 1020, 1012, + 1, 0, 0, 0, 1020, 1016, 1, 0, 0, 0, 1021, 218, 1, 0, 0, 0, 1022, 1023, 8, 11, 0, 0, 1023, + 220, 1, 0, 0, 0, 1024, 1026, 5, 34, 0, 0, 1025, 1027, 3, 223, 111, 0, 1026, 1025, 1, + 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 5, 34, 0, 0, 1029, + 222, 1, 0, 0, 0, 1030, 1032, 3, 225, 112, 0, 1031, 1030, 1, 0, 0, 0, 1032, 1033, 1, + 0, 0, 0, 1033, 1031, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 224, 1, 0, 0, 0, 1035, + 1038, 8, 12, 0, 0, 1036, 1038, 3, 229, 114, 0, 1037, 1035, 1, 0, 0, 0, 1037, 1036, + 1, 0, 0, 0, 1038, 226, 1, 0, 0, 0, 1039, 1040, 5, 34, 0, 0, 1040, 1041, 5, 34, 0, 0, 1041, + 1042, 5, 34, 0, 0, 1042, 1046, 1, 0, 0, 0, 1043, 1045, 7, 13, 0, 0, 1044, 1043, 1, 0, + 0, 0, 1045, 1048, 1, 0, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1049, + 1, 0, 0, 0, 1048, 1046, 1, 0, 0, 0, 1049, 1053, 7, 14, 0, 0, 1050, 1052, 7, 15, 0, 0, + 1051, 1050, 1, 0, 0, 0, 1052, 1055, 1, 0, 0, 0, 1053, 1051, 1, 0, 0, 0, 1053, 1054, + 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1053, 1, 0, 0, 0, 1056, 1057, 5, 34, 0, 0, 1057, + 1058, 5, 34, 0, 0, 1058, 1059, 5, 34, 0, 0, 1059, 228, 1, 0, 0, 0, 1060, 1061, 5, 92, + 0, 0, 1061, 1065, 7, 16, 0, 0, 1062, 1065, 3, 231, 115, 0, 1063, 1065, 3, 235, 117, + 0, 1064, 1060, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1063, 1, 0, 0, 0, 1065, 230, + 1, 0, 0, 0, 1066, 1067, 5, 92, 0, 0, 1067, 1078, 3, 177, 88, 0, 1068, 1069, 5, 92, 0, + 0, 1069, 1070, 3, 177, 88, 0, 1070, 1071, 3, 177, 88, 0, 1071, 1078, 1, 0, 0, 0, 1072, + 1073, 5, 92, 0, 0, 1073, 1074, 3, 233, 116, 0, 1074, 1075, 3, 177, 88, 0, 1075, 1076, + 3, 177, 88, 0, 1076, 1078, 1, 0, 0, 0, 1077, 1066, 1, 0, 0, 0, 1077, 1068, 1, 0, 0, 0, + 1077, 1072, 1, 0, 0, 0, 1078, 232, 1, 0, 0, 0, 1079, 1080, 7, 17, 0, 0, 1080, 234, 1, + 0, 0, 0, 1081, 1083, 5, 92, 0, 0, 1082, 1084, 5, 117, 0, 0, 1083, 1082, 1, 0, 0, 0, 1084, + 1085, 1, 0, 0, 0, 1085, 1083, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, + 0, 1087, 1088, 3, 167, 83, 0, 1088, 1089, 3, 167, 83, 0, 1089, 1090, 3, 167, 83, 0, + 1090, 1091, 3, 167, 83, 0, 1091, 236, 1, 0, 0, 0, 1092, 1093, 5, 110, 0, 0, 1093, 1094, + 5, 117, 0, 0, 1094, 1095, 5, 108, 0, 0, 1095, 1096, 5, 108, 0, 0, 1096, 238, 1, 0, 0, + 0, 1097, 1098, 5, 40, 0, 0, 1098, 240, 1, 0, 0, 0, 1099, 1100, 5, 41, 0, 0, 1100, 242, + 1, 0, 0, 0, 1101, 1102, 5, 123, 0, 0, 1102, 244, 1, 0, 0, 0, 1103, 1104, 5, 125, 0, 0, + 1104, 246, 1, 0, 0, 0, 1105, 1106, 5, 91, 0, 0, 1106, 248, 1, 0, 0, 0, 1107, 1108, 5, + 93, 0, 0, 1108, 250, 1, 0, 0, 0, 1109, 1110, 5, 59, 0, 0, 1110, 252, 1, 0, 0, 0, 1111, + 1112, 5, 44, 0, 0, 1112, 254, 1, 0, 0, 0, 1113, 1114, 5, 46, 0, 0, 1114, 256, 1, 0, 0, + 0, 1115, 1116, 5, 46, 0, 0, 1116, 1117, 5, 46, 0, 0, 1117, 1118, 5, 46, 0, 0, 1118, + 258, 1, 0, 0, 0, 1119, 1120, 5, 64, 0, 0, 1120, 260, 1, 0, 0, 0, 1121, 1122, 5, 58, 0, + 0, 1122, 1123, 5, 58, 0, 0, 1123, 262, 1, 0, 0, 0, 1124, 1125, 5, 61, 0, 0, 1125, 264, + 1, 0, 0, 0, 1126, 1127, 5, 62, 0, 0, 1127, 266, 1, 0, 0, 0, 1128, 1129, 5, 60, 0, 0, 1129, + 268, 1, 0, 0, 0, 1130, 1131, 5, 33, 0, 0, 1131, 270, 1, 0, 0, 0, 1132, 1133, 5, 126, + 0, 0, 1133, 272, 1, 0, 0, 0, 1134, 1135, 5, 63, 0, 0, 1135, 274, 1, 0, 0, 0, 1136, 1137, + 5, 58, 0, 0, 1137, 276, 1, 0, 0, 0, 1138, 1139, 5, 45, 0, 0, 1139, 1140, 5, 62, 0, 0, + 1140, 278, 1, 0, 0, 0, 1141, 1142, 5, 61, 0, 0, 1142, 1143, 5, 61, 0, 0, 1143, 280, + 1, 0, 0, 0, 1144, 1145, 5, 60, 0, 0, 1145, 1146, 5, 61, 0, 0, 1146, 282, 1, 0, 0, 0, 1147, + 1148, 5, 62, 0, 0, 1148, 1149, 5, 61, 0, 0, 1149, 284, 1, 0, 0, 0, 1150, 1151, 5, 33, + 0, 0, 1151, 1152, 5, 61, 0, 0, 1152, 286, 1, 0, 0, 0, 1153, 1154, 5, 38, 0, 0, 1154, + 1155, 5, 38, 0, 0, 1155, 288, 1, 0, 0, 0, 1156, 1157, 5, 124, 0, 0, 1157, 1158, 5, 124, + 0, 0, 1158, 290, 1, 0, 0, 0, 1159, 1160, 5, 43, 0, 0, 1160, 1161, 5, 43, 0, 0, 1161, + 292, 1, 0, 0, 0, 1162, 1163, 5, 45, 0, 0, 1163, 1164, 5, 45, 0, 0, 1164, 294, 1, 0, 0, + 0, 1165, 1166, 5, 43, 0, 0, 1166, 296, 1, 0, 0, 0, 1167, 1168, 5, 45, 0, 0, 1168, 298, + 1, 0, 0, 0, 1169, 1170, 5, 42, 0, 0, 1170, 300, 1, 0, 0, 0, 1171, 1172, 5, 47, 0, 0, 1172, + 302, 1, 0, 0, 0, 1173, +74, 5, 38, 0, 0, 1174, 304, 1, 0, 0, 0, 1175, 1176, 5, 124, + 0, 0, 1176, 306, 1, 0, 0, 0, 1177, 1178, 5, 94, 0, 0, 1178, 308, 1, 0, 0, 0, 1179, 1180, + 5, 37, 0, 0, 1180, 310, 1, 0, 0, 0, 1181, 1182, 5, 43, 0, 0, 1182, 1183, 5, 61, 0, 0, + 1183, 312, 1, 0, 0, 0, 1184, 1185, 5, 45, 0, 0, 1185, 1186, 5, 61, 0, 0, 1186, 314, + 1, 0, 0, 0, 1187, 1188, 5, 42, 0, 0, 1188, 1189, 5, 61, 0, 0, 1189, 316, 1, 0, 0, 0, 1190, + 1191, 5, 47, 0, 0, 1191, 1192, 5, 61, 0, 0, 1192, 318, 1, 0, 0, 0, 1193, 1194, 5, 38, + 0, 0, 1194, 1195, 5, 61, 0, 0, 1195, 320, 1, 0, 0, 0, 1196, 1197, 5, 124, 0, 0, 1197, + 1198, 5, 61, 0, 0, 1198, 322, 1, 0, 0, 0, 1199, 1200, 5, 94, 0, 0, 1200, 1201, 5, 61, + 0, 0, 1201, 324, 1, 0, 0, 0, 1202, 1203, 5, 37, 0, 0, 1203, 1204, 5, 61, 0, 0, 1204, + 326, 1, 0, 0, 0, 1205, 1206, 5, 60, 0, 0, 1206, 1207, 5, 60, 0, 0, 1207, 1208, 5, 61, + 0, 0, 1208, 328, 1, 0, 0, 0, 1209, 1210, 5, 62, 0, 0, 1210, 1211, 5, 62, 0, 0, 1211, + 1212, 5, 61, 0, 0, 1212, 330, 1, 0, 0, 0, 1213, 1214, 5, 62, 0, 0, 1214, 1215, 5, 62, + 0, 0, 1215, 1216, 5, 62, 0, 0, 1216, 1217, 5, 61, 0, 0, 1217, 332, 1, 0, 0, 0, 1218, + 1222, 3, 335, 167, 0, 1219, 1221, 3, 337, 168, 0, 1220, 1219, 1, 0, 0, 0, 1221, 1224, + 1, 0, 0, 0, 1222, 1220, 1, 0, 0, 0, 1222, 1223, 1, 0, 0, 0, 1223, 334, 1, 0, 0, 0, 1224, + 1222, 1, 0, 0, 0, 1225, 1227, 7, 18, 0, 0, 1226, 1225, 1, 0, 0, 0, 1227, 336, 1, 0, 0, + 0, 1228, 1231, 3, 335, 167, 0, 1229, 1231, 7, 19, 0, 0, 1230, 1228, 1, 0, 0, 0, 1230, + 1229, 1, 0, 0, 0, 1231, 338, 1, 0, 0, 0, 1232, 1234, 7, 20, 0, 0, 1233, 1232, 1, 0, 0, + 0, 1234, 1235, 1, 0, 0, 0, 1235, 1233, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1237, + 1, 0, 0, 0, 1237, 1238, 6, 169, 0, 0, 1238, 340, 1, 0, 0, 0, 1239, 1240, 5, 47, 0, 0, + 1240, 1241, 5, 42, 0, 0, 1241, 1245, 1, 0, 0, 0, 1242, 1244, 9, 0, 0, 0, 1243, 1242, + 1, 0, 0, 0, 1244, 1247, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246, + 1248, 1, 0, 0, 0, 1247, 1245, 1, 0, 0, 0, 1248, 1249, 5, 42, 0, 0, 1249, 1250, 5, 47, + 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 6, 170, 1, 0, 1252, 342, 1, 0, 0, 0, 1253, + 1254, 5, 47, 0, 0, 1254, 1255, 5, 47, 0, 0, 1255, 1259, 1, 0, 0, 0, 1256, 1258, 8, 14, + 0, 0, 1257, 1256, 1, 0, 0, 0, 1258, 1261, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1259, 1260, + 1, 0, 0, 0, 1260, 1262, 1, 0, 0, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1263, 6, 171, 1, 0, + 1263, 344, 1, 0, 0, 0, 57, 0, 804, 808, 812, 816, 820, 827, 832, 834, 838, 841, 845, + 852, 856, 861, 869, 872, 879, 883, 887, 893, 896, 903, 907, 915, 918, 925, 929, + 933, 938, 941, 944, 949, 952, 957, 962, 970, 981, 985, 990, 994, 1010, 1020, 1026, + 1033, 1037, 1046, 1053, 1064, 1077, 1085, 1222, 1226, 1230, 1235, 1245, 1259, + 2, 6, 0, 0, 0, 1, 0 + ] + + +class Java20Lexer(Lexer): + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] + + EXPORTS = 1 + MODULE = 2 + NONSEALED = 3 + OACA = 4 + OPEN = 5 + OPENS = 6 + PERMITS = 7 + PROVIDES = 8 + RECORD = 9 + REQUIRES = 10 + SEALED = 11 + TO = 12 + TRANSITIVE = 13 + USES = 14 + VAR = 15 + WITH = 16 + YIELD = 17 + ABSTRACT = 18 + ASSERT = 19 + BOOLEAN = 20 + BREAK = 21 + BYTE = 22 + CASE = 23 + CATCH = 24 + CHAR = 25 + CLASS = 26 + CONST = 27 + CONTINUE = 28 + DEFAULT = 29 + DO = 30 + DOUBLE = 31 + ELSE = 32 + ENUM = 33 + EXTENDS = 34 + FINAL = 35 + FINALLY = 36 + FLOAT = 37 + FOR = 38 + IF = 39 + GOTO = 40 + IMPLEMENTS = 41 + IMPORT = 42 + INSTANCEOF = 43 + INT = 44 + INTERFACE = 45 + LONG = 46 + NATIVE = 47 + NEW = 48 + PACKAGE = 49 + PRIVATE = 50 + PROTECTED = 51 + PUBLIC = 52 + RETURN = 53 + SHORT = 54 + STATIC = 55 + STRICTFP = 56 + SUPER = 57 + SWITCH = 58 + SYNCHRONIZED = 59 + THIS = 60 + THROW = 61 + THROWS = 62 + TRANSIENT = 63 + TRY = 64 + VOID = 65 + VOLATILE = 66 + WHILE = 67 + UNDER_SCORE = 68 + IntegerLiteral = 69 + FloatingPointLiteral = 70 + BooleanLiteral = 71 + CharacterLiteral = 72 + StringLiteral = 73 + TextBlock = 74 + NullLiteral = 75 + LPAREN = 76 + RPAREN = 77 + LBRACE = 78 + RBRACE = 79 + LBRACK = 80 + RBRACK = 81 + SEMI = 82 + COMMA = 83 + DOT = 84 + ELLIPSIS = 85 + AT = 86 + COLONCOLON = 87 + ASSIGN = 88 + GT = 89 + LT = 90 + BANG = 91 + TILDE = 92 + QUESTION = 93 + COLON = 94 + ARROW = 95 + EQUAL = 96 + LE = 97 + GE = 98 + NOTEQUAL = 99 + AND = 100 + OR = 101 + INC = 102 + DEC = 103 + ADD = 104 + SUB = 105 + MUL = 106 + DIV = 107 + BITAND = 108 + BITOR = 109 + CARET = 110 + MOD = 111 + ADD_ASSIGN = 112 + SUB_ASSIGN = 113 + MUL_ASSIGN = 114 + DIV_ASSIGN = 115 + AND_ASSIGN = 116 + OR_ASSIGN = 117 + XOR_ASSIGN = 118 + MOD_ASSIGN = 119 + LSHIFT_ASSIGN = 120 + RSHIFT_ASSIGN = 121 + URSHIFT_ASSIGN = 122 + Identifier = 123 + WS = 124 + COMMENT = 125 + LINE_COMMENT = 126 + + channelNames = [u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN"] + + modeNames = ["DEFAULT_MODE"] + + literalNames = ["", + "'exports'", "'module'", "'non-sealed'", "'<>'", "'open'", "'opens'", + "'permits'", "'provides'", "'record'", "'requires'", "'sealed'", + "'to'", "'transitive'", "'uses'", "'var'", "'with'", "'yield'", + "'abstract'", "'assert'", "'boolean'", "'break'", "'byte'", + "'case'", "'catch'", "'char'", "'class'", "'const'", "'continue'", + "'default'", "'do'", "'double'", "'else'", "'enum'", "'extends'", + "'final'", "'finally'", "'float'", "'for'", "'if'", "'goto'", + "'implements'", "'import'", "'instanceof'", "'int'", "'interface'", + "'long'", "'native'", "'new'", "'package'", "'private'", "'protected'", + "'public'", "'return'", "'short'", "'static'", "'strictfp'", + "'super'", "'switch'", "'synchronized'", "'this'", "'throw'", + "'throws'", "'transient'", "'try'", "'void'", "'volatile'", + "'while'", "'_'", "'null'", "'('", "')'", "'{'", "'}'", "'['", + "']'", "';'", "','", "'.'", "'...'", "'@'", "'::'", "'='", "'>'", + "'<'", "'!'", "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='", + "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", "'*'", + "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='", "'*='", "'/='", + "'&='", "'|='", "'^='", "'%='", "'<<='", "'>>='", "'>>>='"] + + symbolicNames = ["", + "EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS", "PERMITS", + "PROVIDES", "RECORD", "REQUIRES", "SEALED", "TO", "TRANSITIVE", + "USES", "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN", + "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", "CONST", + "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", "ENUM", "EXTENDS", + "FINAL", "FINALLY", "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", + "IMPORT", "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", + "NEW", "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", + "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", + "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", "VOLATILE", + "WHILE", "UNDER_SCORE", "IntegerLiteral", "FloatingPointLiteral", + "BooleanLiteral", "CharacterLiteral", "StringLiteral", "TextBlock", + "NullLiteral", "LPAREN", "RPAREN", "LBRACE", "RBRACE", "LBRACK", + "RBRACK", "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON", + "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", "COLON", + "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", + "DEC", "ADD", "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", + "MOD", "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", + "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT", + "LINE_COMMENT"] + + ruleNames = ["EXPORTS", "MODULE", "NONSEALED", "OACA", "OPEN", "OPENS", + "PERMITS", "PROVIDES", "RECORD", "REQUIRES", "SEALED", + "TO", "TRANSITIVE", "USES", "VAR", "WITH", "YIELD", "ABSTRACT", + "ASSERT", "BOOLEAN", "BREAK", "BYTE", "CASE", "CATCH", + "CHAR", "CLASS", "CONST", "CONTINUE", "DEFAULT", "DO", + "DOUBLE", "ELSE", "ENUM", "EXTENDS", "FINAL", "FINALLY", + "FLOAT", "FOR", "IF", "GOTO", "IMPLEMENTS", "IMPORT", + "INSTANCEOF", "INT", "INTERFACE", "LONG", "NATIVE", "NEW", + "PACKAGE", "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", + "SHORT", "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", + "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", + "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral", + "DecimalIntegerLiteral", "HexIntegerLiteral", "OctalIntegerLiteral", + "BinaryIntegerLiteral", "IntegerTypeSuffix", "DecimalNumeral", + "Digits", "Digit", "NonZeroDigit", "DigitsAndUnderscores", + "DigitOrUnderscore", "Underscores", "HexNumeral", "HexDigits", + "HexDigit", "HexDigitsAndUnderscores", "HexDigitOrUnderscore", + "OctalNumeral", "OctalDigits", "OctalDigit", "OctalDigitsAndUnderscores", + "OctalDigitOrUnderscore", "BinaryNumeral", "BinaryDigits", + "BinaryDigit", "BinaryDigitsAndUnderscores", "BinaryDigitOrUnderscore", + "FloatingPointLiteral", "DecimalFloatingPointLiteral", + "ExponentPart", "ExponentIndicator", "SignedInteger", + "Sign", "FloatTypeSuffix", "HexadecimalFloatingPointLiteral", + "HexSignificand", "BinaryExponent", "BinaryExponentIndicator", + "BooleanLiteral", "CharacterLiteral", "SingleCharacter", + "StringLiteral", "StringCharacters", "StringCharacter", + "TextBlock", "EscapeSequence", "OctalEscape", "ZeroToThree", + "UnicodeEscape", "NullLiteral", "LPAREN", "RPAREN", "LBRACE", + "RBRACE", "LBRACK", "RBRACK", "SEMI", "COMMA", "DOT", + "ELLIPSIS", "AT", "COLONCOLON", "ASSIGN", "GT", "LT", + "BANG", "TILDE", "QUESTION", "COLON", "ARROW", "EQUAL", + "LE", "GE", "NOTEQUAL", "AND", "OR", "INC", "DEC", "ADD", + "SUB", "MUL", "DIV", "BITAND", "BITOR", "CARET", "MOD", + "ADD_ASSIGN", "SUB_ASSIGN", "MUL_ASSIGN", "DIV_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "MOD_ASSIGN", + "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", "URSHIFT_ASSIGN", "Identifier", + "IdentifierStart", "IdentifierPart", "WS", "COMMENT", + "LINE_COMMENT"] + + grammarFileName = "Java20Lexer.g4" + + def __init__(self, input=None, output: TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py new file mode 100644 index 000000000..f3d825c72 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaMethodParserListener.py @@ -0,0 +1,73 @@ +# Generated from JavaParser.g4 by ANTLR 4.11.1 +from dataclasses import dataclass +from antlr4 import * + +from module_programming_winnowing.convert_code_to_ast.languages.java import JavaParser + + +@dataclass +class MethodNode: + line_start: int + line_end: int + source_code: str + name: str + ast: any + ast_string: str + + def __str__(self): + return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})" + + +def _extract_method_name(ctx): + # Navigate through the methodHeader context to find the method name + if hasattr(ctx, 'methodHeader'): + method_header = ctx.methodHeader() + if method_header: + method_declarator = method_header.methodDeclarator() + if method_declarator and hasattr(method_declarator, 'Identifier'): + return method_declarator.Identifier().getText() + elif method_declarator and hasattr(method_declarator, 'identifier'): + return method_declarator.identifier().getText() + else: + # Traverse the children to find the identifier + for child in method_declarator.children: + if isinstance(child, TerminalNode) and child.symbol.type == JavaParser.Identifier: + return child.getText() + return "Unknown" + + +class MethodParserListener(ParseTreeListener): + def __init__(self, parser): + self.methods = [] + self.parser = parser + + def enterMethodDeclaration(self, ctx): + self._enter_method(ctx) + + def enterConstructorDeclaration(self, ctx): + self._enter_method(ctx) + + def enterGenericMethodDeclaration(self, ctx): + self._enter_method(ctx) + + def enterGenericConstructorDeclaration(self, ctx): + self._enter_method(ctx) + + def _enter_method(self, ctx): + ast_string = ctx.toStringTree(recog=self.parser) + method_name = _extract_method_name(ctx) + + me = MethodNode( + line_start=ctx.start.line, + line_end=ctx.stop.line, + source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop), + name=method_name, + ast=ctx, + ast_string=ast_string + ) + self.methods.append(me) + print("Method found:", method_name) + + def enterIdentifier(self, ctx: ParserRuleContext): + if self.methods and self.methods[-1].name is None: + self.methods[-1].name = ctx.getText() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py new file mode 100644 index 000000000..76380e530 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParser.py @@ -0,0 +1,20451 @@ +# Generated from JavaParser.g4 by ANTLR 4.13.1 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +def serializedATN(): + return [ + 4, 1, 126, 2946, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, + 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, + 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, + 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, + 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, + 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, + 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, + 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, + 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, + 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, + 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, + 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, + 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, + 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, + 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, + 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, + 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, + 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, + 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, + 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, + 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, + 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, + 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, + 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, + 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, + 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, + 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, + 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, + 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, + 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, + 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, + 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, + 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, + 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, + 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, + 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, + 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, + 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, + 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, + 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, + 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, + 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, + 2, 1, 2, 1, 3, 1, 3, 1, 4, 5, 4, 501, 8, 4, 10, 4, 12, 4, 504, 9, 4, 1, 4, 1, 4, 3, 4, 508, + 8, 4, 1, 5, 1, 5, 3, 5, 512, 8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 3, 8, 521, 8, 8, + 1, 9, 1, 9, 5, 9, 525, 8, 9, 10, 9, 12, 9, 528, 9, 9, 1, 9, 1, 9, 3, 9, 532, 8, 9, 1, 9, 3, + 9, 535, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 540, 8, 10, 1, 10, 5, 10, 543, 8, 10, 10, 10, + 12, 10, 546, 9, 10, 1, 10, 1, 10, 3, 10, 550, 8, 10, 1, 10, 3, 10, 553, 8, 10, 1, 11, 5, + 11, 556, 8, 11, 10, 11, 12, 11, 559, 9, 11, 1, 11, 1, 11, 3, 11, 563, 8, 11, 1, 11, 1, + 11, 1, 11, 5, 11, 568, 8, 11, 10, 11, 12, 11, 571, 9, 11, 1, 11, 1, 11, 3, 11, 575, 8, + 11, 1, 11, 1, 11, 1, 11, 5, 11, 580, 8, 11, 10, 11, 12, 11, 583, 9, 11, 1, 11, 1, 11, 3, + 11, 587, 8, 11, 3, 11, 589, 8, 11, 1, 12, 1, 12, 1, 13, 5, 13, 594, 8, 13, 10, 13, 12, + 13, 597, 9, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, + 14, 3, 14, 610, 8, 14, 1, 15, 5, 15, 613, 8, 15, 10, 15, 12, 15, 616, 9, 15, 1, 15, 1, + 15, 1, 15, 5, 15, 621, 8, 15, 10, 15, 12, 15, 624, 9, 15, 1, 15, 1, 15, 5, 15, 628, 8, + 15, 10, 15, 12, 15, 631, 9, 15, 1, 16, 5, 16, 634, 8, 16, 10, 16, 12, 16, 637, 9, 16, + 1, 16, 1, 16, 3, 16, 641, 8, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 649, 8, + 18, 10, 18, 12, 18, 652, 9, 18, 3, 18, 654, 8, 18, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, + 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 666, 8, 21, 10, 21, 12, 21, 669, 9, 21, 1, 22, 1, + 22, 3, 22, 673, 8, 22, 1, 23, 5, 23, 676, 8, 23, 10, 23, 12, 23, 679, 9, 23, 1, 23, 1, + 23, 3, 23, 683, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 689, 8, 24, 1, 25, 1, 25, 1, 25, + 3, 25, 694, 8, 25, 1, 26, 1, 26, 1, 26, 3, 26, 699, 8, 26, 1, 27, 1, 27, 1, 27, 3, 27, 704, + 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 709, 8, 28, 1, 29, 1, 29, 1, 29, 3, 29, 714, 8, 29, 1, + 29, 1, 29, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 3, 31, 723, 8, 31, 1, 32, 1, 32, 3, 32, 727, + 8, 32, 1, 33, 3, 33, 730, 8, 33, 1, 33, 5, 33, 733, 8, 33, 10, 33, 12, 33, 736, 9, 33, + 1, 33, 5, 33, 739, 8, 33, 10, 33, 12, 33, 742, 9, 33, 1, 34, 5, 34, 745, 8, 34, 10, 34, + 12, 34, 748, 9, 34, 1, 34, 1, 34, 1, 35, 5, 35, 753, 8, 35, 10, 35, 12, 35, 756, 9, 35, + 1, 35, 1, 35, 1, 35, 1, 35, 5, 35, 762, 8, 35, 10, 35, 12, 35, 765, 9, 35, 1, 35, 1, 35, + 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 775, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, + 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, + 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 804, 8, 42, + 1, 43, 5, 43, 807, 8, 43, 10, 43, 12, 43, 810, 9, 43, 1, 43, 3, 43, 813, 8, 43, 1, 43, + 1, 43, 1, 43, 1, 43, 5, 43, 819, 8, 43, 10, 43, 12, 43, 822, 9, 43, 1, 43, 1, 43, 5, 43, + 826, 8, 43, 10, 43, 12, 43, 829, 9, 43, 1, 43, 1, 43, 1, 44, 1, 44, 5, 44, 835, 8, 44, + 10, 44, 12, 44, 838, 9, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, + 5, 44, 849, 8, 44, 10, 44, 12, 44, 852, 9, 44, 3, 44, 854, 8, 44, 1, 44, 1, 44, 1, 44, + 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 864, 8, 44, 10, 44, 12, 44, 867, 9, 44, 3, 44, + 869, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, + 1, 44, 5, 44, 883, 8, 44, 10, 44, 12, 44, 886, 9, 44, 1, 44, 1, 44, 3, 44, 890, 8, 44, + 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 897, 8, 46, 1, 47, 5, 47, 900, 8, 47, 10, 47, + 12, 47, 903, 9, 47, 1, 47, 1, 47, 1, 47, 3, 47, 908, 8, 47, 1, 47, 3, 47, 911, 8, 47, 1, + 47, 3, 47, 914, 8, 47, 1, 47, 3, 47, 917, 8, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, + 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 931, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, + 1, 50, 1, 50, 1, 50, 5, 50, 940, 8, 50, 10, 50, 12, 50, 943, 9, 50, 1, 51, 1, 51, 1, 51, + 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 5, 53, 954, 8, 53, 10, 53, 12, 53, 957, 9, 53, + 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 963, 8, 54, 10, 54, 12, 54, 966, 9, 54, 1, 55, 1, 55, + 5, 55, 970, 8, 55, 10, 55, 12, 55, 973, 9, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, + 3, 56, 981, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 988, 8, 57, 1, 58, 5, 58, 991, + 8, 58, 10, 58, 12, 58, 994, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, + 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1008, 8, 59, 1, 60, 1, 60, 1, 60, 5, 60, 1013, 8, 60, + 10, 60, 12, 60, 1016, 9, 60, 1, 61, 1, 61, 1, 61, 3, 61, 1021, 8, 61, 1, 62, 1, 62, 3, + 62, 1025, 8, 62, 1, 63, 1, 63, 3, 63, 1029, 8, 63, 1, 64, 1, 64, 3, 64, 1033, 8, 64, 1, + 65, 1, 65, 3, 65, 1037, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 1042, 8, 66, 1, 67, 1, 67, 1, + 67, 5, 67, 1047, 8, 67, 10, 67, 12, 67, 1050, 9, 67, 3, 67, 1052, 8, 67, 1, 67, 1, 67, + 3, 67, 1056, 8, 67, 1, 67, 3, 67, 1059, 8, 67, 1, 68, 1, 68, 5, 68, 1063, 8, 68, 10, 68, + 12, 68, 1066, 9, 68, 1, 68, 1, 68, 3, 68, 1070, 8, 68, 1, 68, 3, 68, 1073, 8, 68, 1, 69, + 1, 69, 3, 69, 1077, 8, 69, 1, 69, 1, 69, 3, 69, 1081, 8, 69, 1, 69, 1, 69, 5, 69, 1085, + 8, 69, 10, 69, 12, 69, 1088, 9, 69, 1, 69, 1, 69, 3, 69, 1092, 8, 69, 3, 69, 1094, 8, + 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1103, 8, 72, 1, 72, 1, 72, 1, + 73, 5, 73, 1108, 8, 73, 10, 73, 12, 73, 1111, 9, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, + 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1126, 8, 74, 1, 75, 1, 75, + 5, 75, 1130, 8, 75, 10, 75, 12, 75, 1133, 9, 75, 3, 75, 1135, 8, 75, 1, 75, 1, 75, 1, + 75, 3, 75, 1140, 8, 75, 1, 76, 1, 76, 3, 76, 1144, 8, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, + 77, 3, 77, 1151, 8, 77, 1, 77, 3, 77, 1154, 8, 77, 1, 77, 1, 77, 3, 77, 1158, 8, 77, 1, + 78, 5, 78, 1161, 8, 78, 10, 78, 12, 78, 1164, 9, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1169, + 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 5, 79, 1176, 8, 79, 10, 79, 12, 79, 1179, 9, + 79, 1, 80, 5, 80, 1182, 8, 80, 10, 80, 12, 80, 1185, 9, 80, 1, 80, 1, 80, 1, 80, 1, 80, + 3, 80, 1191, 8, 80, 1, 81, 5, 81, 1194, 8, 81, 10, 81, 12, 81, 1197, 9, 81, 1, 81, 1, + 81, 5, 81, 1201, 8, 81, 10, 81, 12, 81, 1204, 9, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, + 3, 82, 1211, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1219, 8, 84, 10, 84, + 12, 84, 1222, 9, 84, 1, 85, 1, 85, 3, 85, 1226, 8, 85, 1, 86, 1, 86, 3, 86, 1230, 8, 86, + 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 89, 5, 89, 1238, 8, 89, 10, 89, 12, 89, 1241, 9, + 89, 1, 89, 1, 89, 3, 89, 1245, 8, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 3, 90, 1253, + 8, 90, 1, 91, 3, 91, 1256, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 3, 91, 1263, 8, 91, + 1, 91, 3, 91, 1266, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 1274, 8, 93, + 1, 93, 3, 93, 1277, 8, 93, 1, 93, 1, 93, 1, 94, 3, 94, 1282, 8, 94, 1, 94, 1, 94, 1, 94, + 3, 94, 1287, 8, 94, 1, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1293, 8, 94, 1, 94, 1, 94, 3, 94, + 1297, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1302, 8, 94, 1, 94, 1, 94, 1, 94, 3, 94, 1307, + 8, 94, 1, 95, 5, 95, 1310, 8, 95, 10, 95, 12, 95, 1313, 9, 95, 1, 95, 1, 95, 1, 95, 3, + 95, 1318, 8, 95, 1, 95, 1, 95, 1, 96, 1, 96, 3, 96, 1324, 8, 96, 1, 96, 3, 96, 1327, 8, + 96, 1, 96, 3, 96, 1330, 8, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 5, 97, 1337, 8, 97, 10, + 97, 12, 97, 1340, 9, 97, 1, 98, 5, 98, 1343, 8, 98, 10, 98, 12, 98, 1346, 9, 98, 1, 98, + 1, 98, 1, 98, 3, 98, 1351, 8, 98, 1, 98, 3, 98, 1354, 8, 98, 1, 98, 3, 98, 1357, 8, 98, + 1, 99, 1, 99, 1, 100, 1, 100, 5, 100, 1363, 8, 100, 10, 100, 12, 100, 1366, 9, 100, + 1, 101, 5, 101, 1369, 8, 101, 10, 101, 12, 101, 1372, 9, 101, 1, 101, 1, 101, 1, 101, + 3, 101, 1377, 8, 101, 1, 101, 1, 101, 3, 101, 1381, 8, 101, 1, 101, 1, 101, 1, 102, + 1, 102, 3, 102, 1387, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 5, 103, 1394, + 8, 103, 10, 103, 12, 103, 1397, 9, 103, 1, 104, 5, 104, 1400, 8, 104, 10, 104, 12, + 104, 1403, 9, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1409, 8, 104, 1, 105, 5, + 105, 1412, 8, 105, 10, 105, 12, 105, 1415, 9, 105, 1, 105, 1, 105, 5, 105, 1419, 8, + 105, 10, 105, 12, 105, 1422, 9, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, + 1, 107, 5, 107, 1431, 8, 107, 10, 107, 12, 107, 1434, 9, 107, 1, 107, 1, 107, 1, 108, + 1, 108, 3, 108, 1440, 8, 108, 1, 109, 5, 109, 1443, 8, 109, 10, 109, 12, 109, 1446, + 9, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 3, 110, 1453, 8, 110, 1, 111, 5, 111, + 1456, 8, 111, 10, 111, 12, 111, 1459, 9, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1464, + 8, 111, 1, 111, 3, 111, 1467, 8, 111, 1, 111, 3, 111, 1470, 8, 111, 1, 111, 1, 111, + 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 3, 112, 1483, + 8, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 1492, 8, 114, + 10, 114, 12, 114, 1495, 9, 114, 1, 115, 1, 115, 5, 115, 1499, 8, 115, 10, 115, 12, + 115, 1502, 9, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 1511, + 8, 116, 1, 117, 5, 117, 1514, 8, 117, 10, 117, 12, 117, 1517, 9, 117, 1, 117, 1, 117, + 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 1527, 8, 118, 1, 119, 5, 119, + 1530, 8, 119, 10, 119, 12, 119, 1533, 9, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, + 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1545, 8, 120, 1, 121, 5, 121, 1548, + 8, 121, 10, 121, 12, 121, 1551, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, + 1, 122, 5, 122, 1560, 8, 122, 10, 122, 12, 122, 1563, 9, 122, 1, 122, 1, 122, 1, 123, + 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1572, 8, 123, 1, 124, 5, 124, 1575, 8, 124, + 10, 124, 12, 124, 1578, 9, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 1585, + 8, 124, 1, 124, 3, 124, 1588, 8, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 3, 125, + 1595, 8, 125, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 3, 127, 1603, 8, 127, + 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 1609, 8, 128, 1, 128, 1, 128, 1, 129, 1, 129, + 1, 129, 5, 129, 1616, 8, 129, 10, 129, 12, 129, 1619, 9, 129, 1, 130, 1, 130, 1, 130, + 1, 130, 1, 131, 1, 131, 1, 131, 3, 131, 1628, 8, 131, 1, 132, 1, 132, 3, 132, 1632, + 8, 132, 1, 132, 3, 132, 1635, 8, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 5, 133, + 1642, 8, 133, 10, 133, 12, 133, 1645, 9, 133, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, + 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 3, 136, 1658, 8, 136, 1, 136, 3, 136, + 1661, 8, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 5, 137, 1668, 8, 137, 10, 137, + 12, 137, 1671, 9, 137, 1, 138, 1, 138, 3, 138, 1675, 8, 138, 1, 138, 1, 138, 1, 139, + 1, 139, 5, 139, 1681, 8, 139, 10, 139, 12, 139, 1684, 9, 139, 1, 140, 1, 140, 1, 140, + 3, 140, 1689, 8, 140, 1, 141, 1, 141, 3, 141, 1693, 8, 141, 1, 142, 5, 142, 1696, 8, + 142, 10, 142, 12, 142, 1699, 9, 142, 1, 142, 1, 142, 3, 142, 1703, 8, 142, 1, 143, + 1, 143, 3, 143, 1707, 8, 143, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, + 1, 145, 1, 145, 3, 145, 1718, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, + 1725, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, + 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 1740, 8, 147, 1, 148, 1, 148, 1, 149, 1, 149, + 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, + 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 1762, 8, 152, 1, 153, 1, 153, 1, 153, + 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, + 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, + 1, 156, 3, 156, 1790, 8, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, + 1, 157, 1, 158, 1, 158, 1, 158, 5, 158, 1803, 8, 158, 10, 158, 12, 158, 1806, 9, 158, + 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 1812, 8, 158, 10, 158, 12, 158, 1815, 9, 158, + 1, 158, 1, 158, 1, 158, 5, 158, 1820, 8, 158, 10, 158, 12, 158, 1823, 9, 158, 1, 158, + 3, 158, 1826, 8, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, + 1835, 8, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 5, 160, 1842, 8, 160, 10, 160, + 12, 160, 1845, 9, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 1853, + 8, 161, 10, 161, 12, 161, 1856, 9, 161, 1, 161, 3, 161, 1859, 8, 161, 1, 162, 1, 162, + 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, + 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, + 3, 166, 1885, 8, 166, 1, 167, 1, 167, 3, 167, 1889, 8, 167, 1, 168, 1, 168, 1, 168, + 3, 168, 1894, 8, 168, 1, 168, 1, 168, 3, 168, 1898, 8, 168, 1, 168, 1, 168, 3, 168, + 1902, 8, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 3, 169, 1910, 8, 169, + 1, 169, 1, 169, 3, 169, 1914, 8, 169, 1, 169, 1, 169, 3, 169, 1918, 8, 169, 1, 169, + 1, 169, 1, 169, 1, 170, 1, 170, 3, 170, 1925, 8, 170, 1, 171, 1, 171, 1, 172, 1, 172, + 1, 172, 5, 172, 1932, 8, 172, 10, 172, 12, 172, 1935, 9, 172, 1, 173, 1, 173, 1, 173, + 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, + 1, 174, 1, 174, 1, 175, 1, 175, 3, 175, 1955, 8, 175, 1, 175, 1, 175, 1, 176, 1, 176, + 3, 176, 1961, 8, 176, 1, 176, 1, 176, 1, 177, 1, 177, 3, 177, 1967, 8, 177, 1, 177, + 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, + 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, + 3, 180, 1992, 8, 180, 1, 180, 1, 180, 1, 180, 3, 180, 1997, 8, 180, 1, 181, 1, 181, + 5, 181, 2001, 8, 181, 10, 181, 12, 181, 2004, 9, 181, 1, 182, 1, 182, 1, 182, 1, 182, + 1, 182, 1, 182, 1, 183, 5, 183, 2013, 8, 183, 10, 183, 12, 183, 2016, 9, 183, 1, 183, + 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 5, 184, 2024, 8, 184, 10, 184, 12, 184, 2027, + 9, 184, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 2036, 8, 186, + 1, 186, 3, 186, 2039, 8, 186, 1, 187, 1, 187, 1, 187, 3, 187, 2044, 8, 187, 1, 187, + 1, 187, 1, 188, 1, 188, 1, 188, 5, 188, 2051, 8, 188, 10, 188, 12, 188, 2054, 9, 188, + 1, 189, 1, 189, 3, 189, 2058, 8, 189, 1, 190, 1, 190, 3, 190, 2062, 8, 190, 1, 191, + 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 3, 194, 2074, + 8, 194, 1, 195, 1, 195, 3, 195, 2078, 8, 195, 1, 196, 1, 196, 3, 196, 2082, 8, 196, + 1, 196, 1, 196, 3, 196, 2086, 8, 196, 1, 196, 1, 196, 3, 196, 2090, 8, 196, 1, 196, + 1, 196, 1, 196, 1, 196, 3, 196, 2096, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, + 2102, 8, 196, 1, 196, 1, 196, 3, 196, 2106, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, + 3, 196, 2112, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2118, 8, 196, 1, 196, + 1, 196, 1, 196, 1, 196, 3, 196, 2124, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, + 2130, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2138, 8, 196, + 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2145, 8, 196, 1, 196, 1, 196, 1, 196, + 1, 196, 1, 196, 3, 196, 2152, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2157, 8, 196, + 1, 196, 1, 196, 3, 196, 2161, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2166, 8, 196, + 1, 196, 1, 196, 1, 196, 3, 196, 2171, 8, 196, 1, 196, 1, 196, 3, 196, 2175, 8, 196, + 1, 196, 1, 196, 1, 196, 3, 196, 2180, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2185, + 8, 196, 1, 196, 1, 196, 3, 196, 2189, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2194, + 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2199, 8, 196, 1, 196, 1, 196, 3, 196, 2203, + 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2208, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, + 2213, 8, 196, 1, 196, 1, 196, 3, 196, 2217, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, + 1, 196, 3, 196, 2224, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2229, 8, 196, 1, 196, + 1, 196, 3, 196, 2233, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2238, 8, 196, 1, 196, + 1, 196, 3, 196, 2242, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2247, 8, 196, 1, 196, + 1, 196, 3, 196, 2251, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2256, 8, 196, 1, 196, + 1, 196, 3, 196, 2260, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2265, 8, 196, 1, 196, + 1, 196, 3, 196, 2269, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2276, + 8, 196, 1, 196, 1, 196, 3, 196, 2280, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 2285, + 8, 196, 1, 196, 1, 196, 3, 196, 2289, 8, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, + 2295, 8, 196, 3, 196, 2297, 8, 196, 1, 197, 1, 197, 1, 197, 3, 197, 2302, 8, 197, 1, + 197, 1, 197, 1, 197, 3, 197, 2307, 8, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2313, + 8, 197, 1, 197, 1, 197, 3, 197, 2317, 8, 197, 1, 197, 1, 197, 1, 197, 3, 197, 2322, + 8, 197, 1, 197, 1, 197, 3, 197, 2326, 8, 197, 1, 197, 1, 197, 3, 197, 2330, 8, 197, + 1, 197, 1, 197, 3, 197, 2334, 8, 197, 3, 197, 2336, 8, 197, 1, 198, 1, 198, 1, 198, + 5, 198, 2341, 8, 198, 10, 198, 12, 198, 2344, 9, 198, 1, 198, 1, 198, 1, 198, 1, 198, + 1, 198, 1, 198, 5, 198, 2352, 8, 198, 10, 198, 12, 198, 2355, 9, 198, 1, 198, 1, 198, + 1, 198, 1, 198, 1, 198, 1, 198, 5, 198, 2363, 8, 198, 10, 198, 12, 198, 2366, 9, 198, + 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 2373, 8, 198, 1, 199, 1, 199, 1, 199, + 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 2384, 8, 199, 1, 200, 1, 200, + 3, 200, 2388, 8, 200, 1, 200, 1, 200, 1, 200, 3, 200, 2393, 8, 200, 1, 200, 1, 200, + 3, 200, 2397, 8, 200, 1, 201, 5, 201, 2400, 8, 201, 10, 201, 12, 201, 2403, 9, 201, + 1, 201, 1, 201, 1, 201, 5, 201, 2408, 8, 201, 10, 201, 12, 201, 2411, 9, 201, 1, 201, + 5, 201, 2414, 8, 201, 10, 201, 12, 201, 2417, 9, 201, 1, 201, 3, 201, 2420, 8, 201, + 1, 202, 1, 202, 3, 202, 2424, 8, 202, 1, 203, 1, 203, 3, 203, 2428, 8, 203, 1, 204, + 1, 204, 1, 204, 1, 204, 3, 204, 2434, 8, 204, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, + 2440, 8, 204, 3, 204, 2442, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, + 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 2454, 8, 205, 1, 206, 1, 206, 5, 206, 2458, + 8, 206, 10, 206, 12, 206, 2461, 9, 206, 1, 207, 5, 207, 2464, 8, 207, 10, 207, 12, + 207, 2467, 9, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, + 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, + 3, 208, 2488, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, + 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 2503, 8, 209, 1, 210, 1, 210, 1, 210, + 3, 210, 2508, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2515, 8, 210, + 1, 210, 1, 210, 1, 210, 3, 210, 2520, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, + 3, 210, 2527, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2532, 8, 210, 1, 210, 1, 210, + 1, 210, 1, 210, 1, 210, 3, 210, 2539, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2544, + 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2551, 8, 210, 1, 210, 1, 210, + 1, 210, 3, 210, 2556, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, + 2564, 8, 210, 1, 210, 1, 210, 1, 210, 3, 210, 2569, 8, 210, 1, 210, 1, 210, 3, 210, + 2573, 8, 210, 1, 211, 1, 211, 1, 211, 5, 211, 2578, 8, 211, 10, 211, 12, 211, 2581, + 9, 211, 1, 212, 1, 212, 1, 212, 3, 212, 2586, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, + 1, 212, 3, 212, 2593, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2600, + 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2607, 8, 212, 1, 212, 1, 212, + 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 2615, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, + 1, 212, 3, 212, 2622, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, + 2630, 8, 212, 1, 213, 1, 213, 3, 213, 2634, 8, 213, 1, 213, 1, 213, 3, 213, 2638, 8, + 213, 3, 213, 2640, 8, 213, 1, 214, 1, 214, 3, 214, 2644, 8, 214, 1, 214, 1, 214, 3, + 214, 2648, 8, 214, 3, 214, 2650, 8, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, + 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 2665, 8, 217, 1, + 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, + 1, 220, 1, 220, 3, 220, 2680, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, + 1, 221, 1, 221, 5, 221, 2690, 8, 221, 10, 221, 12, 221, 2693, 9, 221, 1, 221, 1, 221, + 1, 221, 1, 221, 1, 221, 1, 221, 5, 221, 2701, 8, 221, 10, 221, 12, 221, 2704, 9, 221, + 1, 221, 1, 221, 1, 221, 3, 221, 2709, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, + 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 2723, 8, 222, 10, 222, + 12, 222, 2726, 9, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, + 1, 223, 5, 223, 2737, 8, 223, 10, 223, 12, 223, 2740, 9, 223, 1, 224, 1, 224, 1, 224, + 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, + 1, 224, 1, 224, 5, 224, 2758, 8, 224, 10, 224, 12, 224, 2761, 9, 224, 1, 225, 1, 225, + 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, + 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 3, 225, 2782, 8, 225, 5, 225, 2784, + 8, 225, 10, 225, 12, 225, 2787, 9, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, + 1, 226, 1, 226, 1, 226, 5, 226, 2798, 8, 226, 10, 226, 12, 226, 2801, 9, 226, 1, 227, + 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 2809, 8, 227, 10, 227, 12, 227, 2812, + 9, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 5, 228, 2820, 8, 228, 10, 228, + 12, 228, 2823, 9, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 5, 229, 2831, + 8, 229, 10, 229, 12, 229, 2834, 9, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, + 5, 230, 2842, 8, 230, 10, 230, 12, 230, 2845, 9, 230, 1, 231, 1, 231, 1, 231, 1, 231, + 1, 231, 1, 231, 5, 231, 2853, 8, 231, 10, 231, 12, 231, 2856, 9, 231, 1, 232, 1, 232, + 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, + 3, 232, 2871, 8, 232, 1, 233, 1, 233, 3, 233, 2875, 8, 233, 1, 234, 1, 234, 1, 234, + 1, 234, 1, 235, 1, 235, 1, 235, 3, 235, 2884, 8, 235, 1, 236, 1, 236, 1, 237, 1, 237, + 1, 237, 1, 237, 1, 238, 1, 238, 3, 238, 2894, 8, 238, 1, 238, 1, 238, 3, 238, 2898, + 8, 238, 1, 239, 1, 239, 1, 239, 5, 239, 2903, 8, 239, 10, 239, 12, 239, 2906, 9, 239, + 1, 239, 1, 239, 1, 239, 5, 239, 2911, 8, 239, 10, 239, 12, 239, 2914, 9, 239, 3, 239, + 2916, 8, 239, 1, 240, 5, 240, 2919, 8, 240, 10, 240, 12, 240, 2922, 9, 240, 1, 240, + 1, 240, 1, 240, 1, 240, 3, 240, 2928, 8, 240, 1, 241, 1, 241, 3, 241, 2932, 8, 241, + 1, 242, 1, 242, 3, 242, 2936, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, + 1, 244, 1, 244, 1, 244, 0, 10, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 245, + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, + 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, + 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, + 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, + 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, + 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, + 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, + 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, + 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, + 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, + 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, + 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, + 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, + 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, + 478, 480, 482, 484, 486, 488, 0, 6, 1, 0, 69, 75, 5, 0, 22, 22, 25, 25, 44, 44, 46, 46, + 54, 54, 2, 0, 31, 31, 37, 37, 2, 0, 13, 13, 55, 55, 2, 0, 57, 57, 60, 60, 2, 0, 88, 88, + 112, 122, 3206, 0, 490, 1, 0, 0, 0, 2, 493, 1, 0, 0, 0, 4, 495, 1, 0, 0, 0, 6, 497, 1, 0, + 0, 0, 8, 502, 1, 0, 0, 0, 10, 511, 1, 0, 0, 0, 12, 513, 1, 0, 0, 0, 14, 515, 1, 0, 0, 0, 16, + 520, 1, 0, 0, 0, 18, 522, 1, 0, 0, 0, 20, 539, 1, 0, 0, 0, 22, 588, 1, 0, 0, 0, 24, 590, + 1, 0, 0, 0, 26, 595, 1, 0, 0, 0, 28, 609, 1, 0, 0, 0, 30, 614, 1, 0, 0, 0, 32, 635, 1, 0, + 0, 0, 34, 642, 1, 0, 0, 0, 36, 644, 1, 0, 0, 0, 38, 655, 1, 0, 0, 0, 40, 658, 1, 0, 0, 0, + 42, 662, 1, 0, 0, 0, 44, 672, 1, 0, 0, 0, 46, 677, 1, 0, 0, 0, 48, 688, 1, 0, 0, 0, 50, 690, + 1, 0, 0, 0, 52, 695, 1, 0, 0, 0, 54, 700, 1, 0, 0, 0, 56, 705, 1, 0, 0, 0, 58, 713, 1, 0, + 0, 0, 60, 717, 1, 0, 0, 0, 62, 719, 1, 0, 0, 0, 64, 726, 1, 0, 0, 0, 66, 729, 1, 0, 0, 0, + 68, 746, 1, 0, 0, 0, 70, 754, 1, 0, 0, 0, 72, 768, 1, 0, 0, 0, 74, 774, 1, 0, 0, 0, 76, 776, + 1, 0, 0, 0, 78, 780, 1, 0, 0, 0, 80, 786, 1, 0, 0, 0, 82, 793, 1, 0, 0, 0, 84, 803, 1, 0, + 0, 0, 86, 808, 1, 0, 0, 0, 88, 889, 1, 0, 0, 0, 90, 891, 1, 0, 0, 0, 92, 896, 1, 0, 0, 0, + 94, 901, 1, 0, 0, 0, 96, 930, 1, 0, 0, 0, 98, 932, 1, 0, 0, 0, 100, 936, 1, 0, 0, 0, 102, + 944, 1, 0, 0, 0, 104, 947, 1, 0, 0, 0, 106, 950, 1, 0, 0, 0, 108, 958, 1, 0, 0, 0, 110, + 967, 1, 0, 0, 0, 112, 980, 1, 0, 0, 0, 114, 987, 1, 0, 0, 0, 116, 992, 1, 0, 0, 0, 118, + 1007, 1, 0, 0, 0, 120, 1009, 1, 0, 0, 0, 122, 1017, 1, 0, 0, 0, 124, 1022, 1, 0, 0, 0, + 126, 1028, 1, 0, 0, 0, 128, 1032, 1, 0, 0, 0, 130, 1036, 1, 0, 0, 0, 132, 1041, 1, 0, + 0, 0, 134, 1051, 1, 0, 0, 0, 136, 1060, 1, 0, 0, 0, 138, 1093, 1, 0, 0, 0, 140, 1095, + 1, 0, 0, 0, 142, 1097, 1, 0, 0, 0, 144, 1102, 1, 0, 0, 0, 146, 1109, 1, 0, 0, 0, 148, 1125, + 1, 0, 0, 0, 150, 1134, 1, 0, 0, 0, 152, 1143, 1, 0, 0, 0, 154, 1145, 1, 0, 0, 0, 156, 1162, + 1, 0, 0, 0, 158, 1172, 1, 0, 0, 0, 160, 1190, 1, 0, 0, 0, 162, 1195, 1, 0, 0, 0, 164, 1210, + 1, 0, 0, 0, 166, 1212, 1, 0, 0, 0, 168, 1215, 1, 0, 0, 0, 170, 1225, 1, 0, 0, 0, 172, 1229, + 1, 0, 0, 0, 174, 1231, 1, 0, 0, 0, 176, 1233, 1, 0, 0, 0, 178, 1239, 1, 0, 0, 0, 180, 1252, + 1, 0, 0, 0, 182, 1255, 1, 0, 0, 0, 184, 1269, 1, 0, 0, 0, 186, 1271, 1, 0, 0, 0, 188, 1306, + 1, 0, 0, 0, 190, 1311, 1, 0, 0, 0, 192, 1321, 1, 0, 0, 0, 194, 1333, 1, 0, 0, 0, 196, 1344, + 1, 0, 0, 0, 198, 1358, 1, 0, 0, 0, 200, 1360, 1, 0, 0, 0, 202, 1370, 1, 0, 0, 0, 204, 1384, + 1, 0, 0, 0, 206, 1390, 1, 0, 0, 0, 208, 1408, 1, 0, 0, 0, 210, 1413, 1, 0, 0, 0, 212, 1426, + 1, 0, 0, 0, 214, 1428, 1, 0, 0, 0, 216, 1439, 1, 0, 0, 0, 218, 1444, 1, 0, 0, 0, 220, 1452, + 1, 0, 0, 0, 222, 1457, 1, 0, 0, 0, 224, 1482, 1, 0, 0, 0, 226, 1484, 1, 0, 0, 0, 228, 1487, + 1, 0, 0, 0, 230, 1496, 1, 0, 0, 0, 232, 1510, 1, 0, 0, 0, 234, 1515, 1, 0, 0, 0, 236, 1526, + 1, 0, 0, 0, 238, 1531, 1, 0, 0, 0, 240, 1544, 1, 0, 0, 0, 242, 1549, 1, 0, 0, 0, 244, 1557, + 1, 0, 0, 0, 246, 1571, 1, 0, 0, 0, 248, 1576, 1, 0, 0, 0, 250, 1594, 1, 0, 0, 0, 252, 1596, + 1, 0, 0, 0, 254, 1602, 1, 0, 0, 0, 256, 1604, 1, 0, 0, 0, 258, 1612, 1, 0, 0, 0, 260, 1620, + 1, 0, 0, 0, 262, 1627, 1, 0, 0, 0, 264, 1629, 1, 0, 0, 0, 266, 1638, 1, 0, 0, 0, 268, 1646, + 1, 0, 0, 0, 270, 1649, 1, 0, 0, 0, 272, 1655, 1, 0, 0, 0, 274, 1664, 1, 0, 0, 0, 276, 1672, + 1, 0, 0, 0, 278, 1678, 1, 0, 0, 0, 280, 1688, 1, 0, 0, 0, 282, 1692, 1, 0, 0, 0, 284, 1697, + 1, 0, 0, 0, 286, 1706, 1, 0, 0, 0, 288, 1708, 1, 0, 0, 0, 290, 1717, 1, 0, 0, 0, 292, 1724, + 1, 0, 0, 0, 294, 1739, 1, 0, 0, 0, 296, 1741, 1, 0, 0, 0, 298, 1743, 1, 0, 0, 0, 300, 1747, + 1, 0, 0, 0, 302, 1751, 1, 0, 0, 0, 304, 1761, 1, 0, 0, 0, 306, 1763, 1, 0, 0, 0, 308, 1769, + 1, 0, 0, 0, 310, 1777, 1, 0, 0, 0, 312, 1785, 1, 0, 0, 0, 314, 1793, 1, 0, 0, 0, 316, 1825, + 1, 0, 0, 0, 318, 1827, 1, 0, 0, 0, 320, 1836, 1, 0, 0, 0, 322, 1858, 1, 0, 0, 0, 324, 1860, + 1, 0, 0, 0, 326, 1862, 1, 0, 0, 0, 328, 1868, 1, 0, 0, 0, 330, 1874, 1, 0, 0, 0, 332, 1884, + 1, 0, 0, 0, 334, 1888, 1, 0, 0, 0, 336, 1890, 1, 0, 0, 0, 338, 1906, 1, 0, 0, 0, 340, 1924, + 1, 0, 0, 0, 342, 1926, 1, 0, 0, 0, 344, 1928, 1, 0, 0, 0, 346, 1936, 1, 0, 0, 0, 348, 1944, + 1, 0, 0, 0, 350, 1952, 1, 0, 0, 0, 352, 1958, 1, 0, 0, 0, 354, 1964, 1, 0, 0, 0, 356, 1970, + 1, 0, 0, 0, 358, 1974, 1, 0, 0, 0, 360, 1996, 1, 0, 0, 0, 362, 1998, 1, 0, 0, 0, 364, 2005, + 1, 0, 0, 0, 366, 2014, 1, 0, 0, 0, 368, 2020, 1, 0, 0, 0, 370, 2028, 1, 0, 0, 0, 372, 2031, + 1, 0, 0, 0, 374, 2040, 1, 0, 0, 0, 376, 2047, 1, 0, 0, 0, 378, 2057, 1, 0, 0, 0, 380, 2061, + 1, 0, 0, 0, 382, 2063, 1, 0, 0, 0, 384, 2067, 1, 0, 0, 0, 386, 2069, 1, 0, 0, 0, 388, 2073, + 1, 0, 0, 0, 390, 2077, 1, 0, 0, 0, 392, 2296, 1, 0, 0, 0, 394, 2335, 1, 0, 0, 0, 396, 2372, + 1, 0, 0, 0, 398, 2383, 1, 0, 0, 0, 400, 2385, 1, 0, 0, 0, 402, 2401, 1, 0, 0, 0, 404, 2423, + 1, 0, 0, 0, 406, 2427, 1, 0, 0, 0, 408, 2441, 1, 0, 0, 0, 410, 2453, 1, 0, 0, 0, 412, 2455, + 1, 0, 0, 0, 414, 2465, 1, 0, 0, 0, 416, 2487, 1, 0, 0, 0, 418, 2502, 1, 0, 0, 0, 420, 2572, + 1, 0, 0, 0, 422, 2574, 1, 0, 0, 0, 424, 2629, 1, 0, 0, 0, 426, 2639, 1, 0, 0, 0, 428, 2649, + 1, 0, 0, 0, 430, 2651, 1, 0, 0, 0, 432, 2654, 1, 0, 0, 0, 434, 2664, 1, 0, 0, 0, 436, 2666, + 1, 0, 0, 0, 438, 2669, 1, 0, 0, 0, 440, 2679, 1, 0, 0, 0, 442, 2708, 1, 0, 0, 0, 444, 2710, + 1, 0, 0, 0, 446, 2727, 1, 0, 0, 0, 448, 2741, 1, 0, 0, 0, 450, 2762, 1, 0, 0, 0, 452, 2788, + 1, 0, 0, 0, 454, 2802, 1, 0, 0, 0, 456, 2813, 1, 0, 0, 0, 458, 2824, 1, 0, 0, 0, 460, 2835, + 1, 0, 0, 0, 462, 2846, 1, 0, 0, 0, 464, 2870, 1, 0, 0, 0, 466, 2874, 1, 0, 0, 0, 468, 2876, + 1, 0, 0, 0, 470, 2883, 1, 0, 0, 0, 472, 2885, 1, 0, 0, 0, 474, 2887, 1, 0, 0, 0, 476, 2897, + 1, 0, 0, 0, 478, 2915, 1, 0, 0, 0, 480, 2927, 1, 0, 0, 0, 482, 2931, 1, 0, 0, 0, 484, 2935, + 1, 0, 0, 0, 486, 2937, 1, 0, 0, 0, 488, 2943, 1, 0, 0, 0, 490, 491, 3, 64, 32, 0, 491, + 492, 5, 0, 0, 1, 492, 1, 1, 0, 0, 0, 493, 494, 7, 0, 0, 0, 494, 3, 1, 0, 0, 0, 495, 496, + 5, 123, 0, 0, 496, 5, 1, 0, 0, 0, 497, 498, 5, 123, 0, 0, 498, 7, 1, 0, 0, 0, 499, 501, + 3, 254, 127, 0, 500, 499, 1, 0, 0, 0, 501, 504, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, + 503, 1, 0, 0, 0, 503, 507, 1, 0, 0, 0, 504, 502, 1, 0, 0, 0, 505, 508, 3, 10, 5, 0, 506, + 508, 5, 20, 0, 0, 507, 505, 1, 0, 0, 0, 507, 506, 1, 0, 0, 0, 508, 9, 1, 0, 0, 0, 509, 512, + 3, 12, 6, 0, 510, 512, 3, 14, 7, 0, 511, 509, 1, 0, 0, 0, 511, 510, 1, 0, 0, 0, 512, 11, + 1, 0, 0, 0, 513, 514, 7, 1, 0, 0, 514, 13, 1, 0, 0, 0, 515, 516, 7, 2, 0, 0, 516, 15, 1, + 0, 0, 0, 517, 521, 3, 20, 10, 0, 518, 521, 3, 26, 13, 0, 519, 521, 3, 28, 14, 0, 520, + 517, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 519, 1, 0, 0, 0, 521, 17, 1, 0, 0, 0, 522, 526, + 5, 84, 0, 0, 523, 525, 3, 254, 127, 0, 524, 523, 1, 0, 0, 0, 525, 528, 1, 0, 0, 0, 526, + 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 529, 1, 0, 0, 0, 528, 526, 1, 0, 0, 0, 529, + 531, 3, 4, 2, 0, 530, 532, 3, 40, 20, 0, 531, 530, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, + 534, 1, 0, 0, 0, 533, 535, 3, 18, 9, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, + 19, 1, 0, 0, 0, 536, 537, 3, 52, 26, 0, 537, 538, 5, 84, 0, 0, 538, 540, 1, 0, 0, 0, 539, + 536, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 544, 1, 0, 0, 0, 541, 543, 3, 254, 127, 0, + 542, 541, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 542, 1, 0, 0, 0, 544, 545, 1, 0, 0, 0, + 545, 547, 1, 0, 0, 0, 546, 544, 1, 0, 0, 0, 547, 549, 3, 4, 2, 0, 548, 550, 3, 40, 20, + 0, 549, 548, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 552, 1, 0, 0, 0, 551, 553, 3, 18, 9, + 0, 552, 551, 1, 0, 0, 0, 552, 553, 1, 0, 0, 0, 553, 21, 1, 0, 0, 0, 554, 556, 3, 254, 127, + 0, 555, 554, 1, 0, 0, 0, 556, 559, 1, 0, 0, 0, 557, 555, 1, 0, 0, 0, 557, 558, 1, 0, 0, + 0, 558, 560, 1, 0, 0, 0, 559, 557, 1, 0, 0, 0, 560, 562, 3, 4, 2, 0, 561, 563, 3, 40, 20, + 0, 562, 561, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 589, 1, 0, 0, 0, 564, 565, 3, 52, 26, + 0, 565, 569, 5, 84, 0, 0, 566, 568, 3, 254, 127, 0, 567, 566, 1, 0, 0, 0, 568, 571, 1, + 0, 0, 0, 569, 567, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 572, 1, 0, 0, 0, 571, 569, 1, + 0, 0, 0, 572, 574, 3, 4, 2, 0, 573, 575, 3, 40, 20, 0, 574, 573, 1, 0, 0, 0, 574, 575, + 1, 0, 0, 0, 575, 589, 1, 0, 0, 0, 576, 577, 3, 20, 10, 0, 577, 581, 5, 84, 0, 0, 578, 580, + 3, 254, 127, 0, 579, 578, 1, 0, 0, 0, 580, 583, 1, 0, 0, 0, 581, 579, 1, 0, 0, 0, 581, + 582, 1, 0, 0, 0, 582, 584, 1, 0, 0, 0, 583, 581, 1, 0, 0, 0, 584, 586, 3, 4, 2, 0, 585, + 587, 3, 40, 20, 0, 586, 585, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 589, 1, 0, 0, 0, 588, + 557, 1, 0, 0, 0, 588, 564, 1, 0, 0, 0, 588, 576, 1, 0, 0, 0, 589, 23, 1, 0, 0, 0, 590, 591, + 3, 22, 11, 0, 591, 25, 1, 0, 0, 0, 592, 594, 3, 254, 127, 0, 593, 592, 1, 0, 0, 0, 594, + 597, 1, 0, 0, 0, 595, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 598, 1, 0, 0, 0, 597, + 595, 1, 0, 0, 0, 598, 599, 3, 4, 2, 0, 599, 27, 1, 0, 0, 0, 600, 601, 3, 8, 4, 0, 601, 602, + 3, 30, 15, 0, 602, 610, 1, 0, 0, 0, 603, 604, 3, 22, 11, 0, 604, 605, 3, 30, 15, 0, 605, + 610, 1, 0, 0, 0, 606, 607, 3, 26, 13, 0, 607, 608, 3, 30, 15, 0, 608, 610, 1, 0, 0, 0, + 609, 600, 1, 0, 0, 0, 609, 603, 1, 0, 0, 0, 609, 606, 1, 0, 0, 0, 610, 29, 1, 0, 0, 0, 611, + 613, 3, 254, 127, 0, 612, 611, 1, 0, 0, 0, 613, 616, 1, 0, 0, 0, 614, 612, 1, 0, 0, 0, + 614, 615, 1, 0, 0, 0, 615, 617, 1, 0, 0, 0, 616, 614, 1, 0, 0, 0, 617, 618, 5, 80, 0, 0, + 618, 629, 5, 81, 0, 0, 619, 621, 3, 254, 127, 0, 620, 619, 1, 0, 0, 0, 621, 624, 1, 0, + 0, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 625, 1, 0, 0, 0, 624, 622, 1, 0, + 0, 0, 625, 626, 5, 80, 0, 0, 626, 628, 5, 81, 0, 0, 627, 622, 1, 0, 0, 0, 628, 631, 1, + 0, 0, 0, 629, 627, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 31, 1, 0, 0, 0, 631, 629, 1, 0, + 0, 0, 632, 634, 3, 34, 17, 0, 633, 632, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, + 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 638, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 640, 3, + 4, 2, 0, 639, 641, 3, 36, 18, 0, 640, 639, 1, 0, 0, 0, 640, 641, 1, 0, 0, 0, 641, 33, 1, + 0, 0, 0, 642, 643, 3, 254, 127, 0, 643, 35, 1, 0, 0, 0, 644, 653, 5, 34, 0, 0, 645, 654, + 3, 26, 13, 0, 646, 650, 3, 20, 10, 0, 647, 649, 3, 38, 19, 0, 648, 647, 1, 0, 0, 0, 649, + 652, 1, 0, 0, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, + 650, 1, 0, 0, 0, 653, 645, 1, 0, 0, 0, 653, 646, 1, 0, 0, 0, 654, 37, 1, 0, 0, 0, 655, 656, + 5, 108, 0, 0, 656, 657, 3, 24, 12, 0, 657, 39, 1, 0, 0, 0, 658, 659, 5, 90, 0, 0, 659, + 660, 3, 42, 21, 0, 660, 661, 5, 89, 0, 0, 661, 41, 1, 0, 0, 0, 662, 667, 3, 44, 22, 0, + 663, 664, 5, 83, 0, 0, 664, 666, 3, 44, 22, 0, 665, 663, 1, 0, 0, 0, 666, 669, 1, 0, 0, + 0, 667, 665, 1, 0, 0, 0, 667, 668, 1, 0, 0, 0, 668, 43, 1, 0, 0, 0, 669, 667, 1, 0, 0, 0, + 670, 673, 3, 16, 8, 0, 671, 673, 3, 46, 23, 0, 672, 670, 1, 0, 0, 0, 672, 671, 1, 0, 0, + 0, 673, 45, 1, 0, 0, 0, 674, 676, 3, 254, 127, 0, 675, 674, 1, 0, 0, 0, 676, 679, 1, 0, + 0, 0, 677, 675, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 680, 1, 0, 0, 0, 679, 677, 1, 0, + 0, 0, 680, 682, 5, 93, 0, 0, 681, 683, 3, 48, 24, 0, 682, 681, 1, 0, 0, 0, 682, 683, 1, + 0, 0, 0, 683, 47, 1, 0, 0, 0, 684, 685, 5, 34, 0, 0, 685, 689, 3, 16, 8, 0, 686, 687, 5, + 57, 0, 0, 687, 689, 3, 16, 8, 0, 688, 684, 1, 0, 0, 0, 688, 686, 1, 0, 0, 0, 689, 49, 1, + 0, 0, 0, 690, 693, 5, 123, 0, 0, 691, 692, 5, 84, 0, 0, 692, 694, 3, 50, 25, 0, 693, 691, + 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 51, 1, 0, 0, 0, 695, 698, 5, 123, 0, 0, 696, 697, + 5, 84, 0, 0, 697, 699, 3, 52, 26, 0, 698, 696, 1, 0, 0, 0, 698, 699, 1, 0, 0, 0, 699, 53, + 1, 0, 0, 0, 700, 703, 3, 52, 26, 0, 701, 702, 5, 84, 0, 0, 702, 704, 3, 4, 2, 0, 703, 701, + 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 55, 1, 0, 0, 0, 705, 708, 5, 123, 0, 0, 706, 707, + 5, 84, 0, 0, 707, 709, 3, 56, 28, 0, 708, 706, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 57, + 1, 0, 0, 0, 710, 711, 3, 62, 31, 0, 711, 712, 5, 84, 0, 0, 712, 714, 1, 0, 0, 0, 713, 710, + 1, 0, 0, 0, 713, 714, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 5, 123, 0, 0, 716, 59, + 1, 0, 0, 0, 717, 718, 3, 6, 3, 0, 718, 61, 1, 0, 0, 0, 719, 722, 5, 123, 0, 0, 720, 721, + 5, 84, 0, 0, 721, 723, 3, 62, 31, 0, 722, 720, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 63, + 1, 0, 0, 0, 724, 727, 3, 66, 33, 0, 725, 727, 3, 68, 34, 0, 726, 724, 1, 0, 0, 0, 726, + 725, 1, 0, 0, 0, 727, 65, 1, 0, 0, 0, 728, 730, 3, 70, 35, 0, 729, 728, 1, 0, 0, 0, 729, + 730, 1, 0, 0, 0, 730, 734, 1, 0, 0, 0, 731, 733, 3, 74, 37, 0, 732, 731, 1, 0, 0, 0, 733, + 736, 1, 0, 0, 0, 734, 732, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 740, 1, 0, 0, 0, 736, + 734, 1, 0, 0, 0, 737, 739, 3, 84, 42, 0, 738, 737, 1, 0, 0, 0, 739, 742, 1, 0, 0, 0, 740, + 738, 1, 0, 0, 0, 740, 741, 1, 0, 0, 0, 741, 67, 1, 0, 0, 0, 742, 740, 1, 0, 0, 0, 743, 745, + 3, 74, 37, 0, 744, 743, 1, 0, 0, 0, 745, 748, 1, 0, 0, 0, 746, 744, 1, 0, 0, 0, 746, 747, + 1, 0, 0, 0, 747, 749, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 750, 3, 86, 43, 0, 750, 69, + 1, 0, 0, 0, 751, 753, 3, 72, 36, 0, 752, 751, 1, 0, 0, 0, 753, 756, 1, 0, 0, 0, 754, 752, + 1, 0, 0, 0, 754, 755, 1, 0, 0, 0, 755, 757, 1, 0, 0, 0, 756, 754, 1, 0, 0, 0, 757, 758, + 5, 49, 0, 0, 758, 763, 5, 123, 0, 0, 759, 760, 5, 84, 0, 0, 760, 762, 5, 123, 0, 0, 761, + 759, 1, 0, 0, 0, 762, 765, 1, 0, 0, 0, 763, 761, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, + 766, 1, 0, 0, 0, 765, 763, 1, 0, 0, 0, 766, 767, 5, 82, 0, 0, 767, 71, 1, 0, 0, 0, 768, + 769, 3, 254, 127, 0, 769, 73, 1, 0, 0, 0, 770, 775, 3, 76, 38, 0, 771, 775, 3, 78, 39, + 0, 772, 775, 3, 80, 40, 0, 773, 775, 3, 82, 41, 0, 774, 770, 1, 0, 0, 0, 774, 771, 1, + 0, 0, 0, 774, 772, 1, 0, 0, 0, 774, 773, 1, 0, 0, 0, 775, 75, 1, 0, 0, 0, 776, 777, 5, 42, + 0, 0, 777, 778, 3, 54, 27, 0, 778, 779, 5, 82, 0, 0, 779, 77, 1, 0, 0, 0, 780, 781, 5, + 42, 0, 0, 781, 782, 3, 56, 28, 0, 782, 783, 5, 84, 0, 0, 783, 784, 5, 106, 0, 0, 784, + 785, 5, 82, 0, 0, 785, 79, 1, 0, 0, 0, 786, 787, 5, 42, 0, 0, 787, 788, 5, 55, 0, 0, 788, + 789, 3, 54, 27, 0, 789, 790, 5, 84, 0, 0, 790, 791, 5, 123, 0, 0, 791, 792, 5, 82, 0, + 0, 792, 81, 1, 0, 0, 0, 793, 794, 5, 42, 0, 0, 794, 795, 5, 55, 0, 0, 795, 796, 3, 54, + 27, 0, 796, 797, 5, 84, 0, 0, 797, 798, 5, 106, 0, 0, 798, 799, 5, 82, 0, 0, 799, 83, + 1, 0, 0, 0, 800, 804, 3, 92, 46, 0, 801, 804, 3, 220, 110, 0, 802, 804, 5, 82, 0, 0, 803, + 800, 1, 0, 0, 0, 803, 801, 1, 0, 0, 0, 803, 802, 1, 0, 0, 0, 804, 85, 1, 0, 0, 0, 805, 807, + 3, 254, 127, 0, 806, 805, 1, 0, 0, 0, 807, 810, 1, 0, 0, 0, 808, 806, 1, 0, 0, 0, 808, + 809, 1, 0, 0, 0, 809, 812, 1, 0, 0, 0, 810, 808, 1, 0, 0, 0, 811, 813, 5, 5, 0, 0, 812, + 811, 1, 0, 0, 0, 812, 813, 1, 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 815, 5, 2, 0, 0, 815, + 820, 5, 123, 0, 0, 816, 817, 5, 84, 0, 0, 817, 819, 5, 123, 0, 0, 818, 816, 1, 0, 0, 0, + 819, 822, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 820, 821, 1, 0, 0, 0, 821, 823, 1, 0, 0, 0, + 822, 820, 1, 0, 0, 0, 823, 827, 5, 78, 0, 0, 824, 826, 3, 88, 44, 0, 825, 824, 1, 0, 0, + 0, 826, 829, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 830, 1, 0, 0, + 0, 829, 827, 1, 0, 0, 0, 830, 831, 5, 79, 0, 0, 831, 87, 1, 0, 0, 0, 832, 836, 5, 10, 0, + 0, 833, 835, 3, 90, 45, 0, 834, 833, 1, 0, 0, 0, 835, 838, 1, 0, 0, 0, 836, 834, 1, 0, + 0, 0, 836, 837, 1, 0, 0, 0, 837, 839, 1, 0, 0, 0, 838, 836, 1, 0, 0, 0, 839, 840, 3, 50, + 25, 0, 840, 841, 5, 82, 0, 0, 841, 890, 1, 0, 0, 0, 842, 843, 5, 1, 0, 0, 843, 853, 3, + 52, 26, 0, 844, 845, 5, 12, 0, 0, 845, 850, 3, 50, 25, 0, 846, 847, 5, 83, 0, 0, 847, + 849, 3, 50, 25, 0, 848, 846, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, + 851, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 844, 1, 0, 0, 0, 853, + 854, 1, 0, 0, 0, 854, 855, 1, 0, 0, 0, 855, 856, 5, 82, 0, 0, 856, 890, 1, 0, 0, 0, 857, + 858, 5, 6, 0, 0, 858, 868, 3, 52, 26, 0, 859, 860, 5, 12, 0, 0, 860, 865, 3, 50, 25, 0, + 861, 862, 5, 83, 0, 0, 862, 864, 3, 50, 25, 0, 863, 861, 1, 0, 0, 0, 864, 867, 1, 0, 0, + 0, 865, 863, 1, 0, 0, 0, 865, 866, 1, 0, 0, 0, 866, 869, 1, 0, 0, 0, 867, 865, 1, 0, 0, + 0, 868, 859, 1, 0, 0, 0, 868, 869, 1, 0, 0, 0, 869, 870, 1, 0, 0, 0, 870, 871, 5, 82, 0, + 0, 871, 890, 1, 0, 0, 0, 872, 873, 5, 14, 0, 0, 873, 874, 3, 54, 27, 0, 874, 875, 5, 82, + 0, 0, 875, 890, 1, 0, 0, 0, 876, 877, 5, 8, 0, 0, 877, 878, 3, 54, 27, 0, 878, 879, 5, + 16, 0, 0, 879, 884, 3, 54, 27, 0, 880, 881, 5, 83, 0, 0, 881, 883, 3, 54, 27, 0, 882, + 880, 1, 0, 0, 0, 883, 886, 1, 0, 0, 0, 884, 882, 1, 0, 0, 0, 884, 885, 1, 0, 0, 0, 885, + 887, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 887, 888, 5, 82, 0, 0, 888, 890, 1, 0, 0, 0, 889, + 832, 1, 0, 0, 0, 889, 842, 1, 0, 0, 0, 889, 857, 1, 0, 0, 0, 889, 872, 1, 0, 0, 0, 889, + 876, 1, 0, 0, 0, 890, 89, 1, 0, 0, 0, 891, 892, 7, 3, 0, 0, 892, 91, 1, 0, 0, 0, 893, 897, + 3, 94, 47, 0, 894, 897, 3, 190, 95, 0, 895, 897, 3, 202, 101, 0, 896, 893, 1, 0, 0, 0, + 896, 894, 1, 0, 0, 0, 896, 895, 1, 0, 0, 0, 897, 93, 1, 0, 0, 0, 898, 900, 3, 96, 48, 0, + 899, 898, 1, 0, 0, 0, 900, 903, 1, 0, 0, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, + 902, 904, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, 904, 905, 5, 26, 0, 0, 905, 907, 3, 4, 2, 0, + 906, 908, 3, 98, 49, 0, 907, 906, 1, 0, 0, 0, 907, 908, 1, 0, 0, 0, 908, 910, 1, 0, 0, + 0, 909, 911, 3, 102, 51, 0, 910, 909, 1, 0, 0, 0, 910, 911, 1, 0, 0, 0, 911, 913, 1, 0, + 0, 0, 912, 914, 3, 104, 52, 0, 913, 912, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 1, + 0, 0, 0, 915, 917, 3, 108, 54, 0, 916, 915, 1, 0, 0, 0, 916, 917, 1, 0, 0, 0, 917, 918, + 1, 0, 0, 0, 918, 919, 3, 110, 55, 0, 919, 95, 1, 0, 0, 0, 920, 931, 3, 254, 127, 0, 921, + 931, 5, 52, 0, 0, 922, 931, 5, 51, 0, 0, 923, 931, 5, 50, 0, 0, 924, 931, 5, 18, 0, 0, + 925, 931, 5, 55, 0, 0, 926, 931, 5, 35, 0, 0, 927, 931, 5, 11, 0, 0, 928, 931, 5, 3, 0, + 0, 929, 931, 5, 56, 0, 0, 930, 920, 1, 0, 0, 0, 930, 921, 1, 0, 0, 0, 930, 922, 1, 0, 0, + 0, 930, 923, 1, 0, 0, 0, 930, 924, 1, 0, 0, 0, 930, 925, 1, 0, 0, 0, 930, 926, 1, 0, 0, + 0, 930, 927, 1, 0, 0, 0, 930, 928, 1, 0, 0, 0, 930, 929, 1, 0, 0, 0, 931, 97, 1, 0, 0, 0, + 932, 933, 5, 90, 0, 0, 933, 934, 3, 100, 50, 0, 934, 935, 5, 89, 0, 0, 935, 99, 1, 0, + 0, 0, 936, 941, 3, 32, 16, 0, 937, 938, 5, 83, 0, 0, 938, 940, 3, 32, 16, 0, 939, 937, + 1, 0, 0, 0, 940, 943, 1, 0, 0, 0, 941, 939, 1, 0, 0, 0, 941, 942, 1, 0, 0, 0, 942, 101, + 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 944, 945, 5, 34, 0, 0, 945, 946, 3, 22, 11, 0, 946, 103, + 1, 0, 0, 0, 947, 948, 5, 41, 0, 0, 948, 949, 3, 106, 53, 0, 949, 105, 1, 0, 0, 0, 950, + 955, 3, 24, 12, 0, 951, 952, 5, 83, 0, 0, 952, 954, 3, 24, 12, 0, 953, 951, 1, 0, 0, 0, + 954, 957, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 956, 1, 0, 0, 0, 956, 107, 1, 0, 0, 0, + 957, 955, 1, 0, 0, 0, 958, 959, 5, 7, 0, 0, 959, 964, 3, 54, 27, 0, 960, 961, 5, 83, 0, + 0, 961, 963, 3, 54, 27, 0, 962, 960, 1, 0, 0, 0, 963, 966, 1, 0, 0, 0, 964, 962, 1, 0, + 0, 0, 964, 965, 1, 0, 0, 0, 965, 109, 1, 0, 0, 0, 966, 964, 1, 0, 0, 0, 967, 971, 5, 78, + 0, 0, 968, 970, 3, 112, 56, 0, 969, 968, 1, 0, 0, 0, 970, 973, 1, 0, 0, 0, 971, 969, 1, + 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 1, 0, 0, 0, 973, 971, 1, 0, 0, 0, 974, 975, 5, + 79, 0, 0, 975, 111, 1, 0, 0, 0, 976, 981, 3, 114, 57, 0, 977, 981, 3, 174, 87, 0, 978, + 981, 3, 176, 88, 0, 979, 981, 3, 178, 89, 0, 980, 976, 1, 0, 0, 0, 980, 977, 1, 0, 0, + 0, 980, 978, 1, 0, 0, 0, 980, 979, 1, 0, 0, 0, 981, 113, 1, 0, 0, 0, 982, 988, 3, 116, + 58, 0, 983, 988, 3, 146, 73, 0, 984, 988, 3, 92, 46, 0, 985, 988, 3, 220, 110, 0, 986, + 988, 5, 82, 0, 0, 987, 982, 1, 0, 0, 0, 987, 983, 1, 0, 0, 0, 987, 984, 1, 0, 0, 0, 987, + 985, 1, 0, 0, 0, 987, 986, 1, 0, 0, 0, 988, 115, 1, 0, 0, 0, 989, 991, 3, 118, 59, 0, 990, + 989, 1, 0, 0, 0, 991, 994, 1, 0, 0, 0, 992, 990, 1, 0, 0, 0, 992, 993, 1, 0, 0, 0, 993, + 995, 1, 0, 0, 0, 994, 992, 1, 0, 0, 0, 995, 996, 3, 128, 64, 0, 996, 997, 3, 120, 60, + 0, 997, 998, 5, 82, 0, 0, 998, 117, 1, 0, 0, 0, 999, 1008, 3, 254, 127, 0, 1000, 1008, + 5, 52, 0, 0, 1001, 1008, 5, 51, 0, 0, 1002, 1008, 5, 50, 0, 0, 1003, 1008, 5, 55, 0, + 0, 1004, 1008, 5, 35, 0, 0, 1005, 1008, 5, 63, 0, 0, 1006, 1008, 5, 66, 0, 0, 1007, + 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0, + 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, + 1, 0, 0, 0, 1008, 119, 1, 0, 0, 0, 1009, 1014, 3, 122, 61, 0, 1010, 1011, 5, 83, 0, 0, + 1011, 1013, 3, 122, 61, 0, 1012, 1010, 1, 0, 0, 0, 1013, 1016, 1, 0, 0, 0, 1014, 1012, + 1, 0, 0, 0, 1014, 1015, 1, 0, 0, 0, 1015, 121, 1, 0, 0, 0, 1016, 1014, 1, 0, 0, 0, 1017, + 1020, 3, 124, 62, 0, 1018, 1019, 5, 88, 0, 0, 1019, 1021, 3, 126, 63, 0, 1020, 1018, + 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 123, 1, 0, 0, 0, 1022, 1024, 5, 123, 0, 0, 1023, + 1025, 3, 30, 15, 0, 1024, 1023, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 125, 1, 0, + 0, 0, 1026, 1029, 3, 388, 194, 0, 1027, 1029, 3, 272, 136, 0, 1028, 1026, 1, 0, 0, + 0, 1028, 1027, 1, 0, 0, 0, 1029, 127, 1, 0, 0, 0, 1030, 1033, 3, 130, 65, 0, 1031, 1033, + 3, 132, 66, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1031, 1, 0, 0, 0, 1033, 129, 1, 0, 0, 0, + 1034, 1037, 3, 10, 5, 0, 1035, 1037, 5, 20, 0, 0, 1036, 1034, 1, 0, 0, 0, 1036, 1035, + 1, 0, 0, 0, 1037, 131, 1, 0, 0, 0, 1038, 1042, 3, 134, 67, 0, 1039, 1042, 3, 142, 71, + 0, 1040, 1042, 3, 144, 72, 0, 1041, 1038, 1, 0, 0, 0, 1041, 1039, 1, 0, 0, 0, 1041, + 1040, 1, 0, 0, 0, 1042, 133, 1, 0, 0, 0, 1043, 1044, 3, 52, 26, 0, 1044, 1048, 5, 84, + 0, 0, 1045, 1047, 3, 254, 127, 0, 1046, 1045, 1, 0, 0, 0, 1047, 1050, 1, 0, 0, 0, 1048, + 1046, 1, 0, 0, 0, 1048, 1049, 1, 0, 0, 0, 1049, 1052, 1, 0, 0, 0, 1050, 1048, 1, 0, 0, + 0, 1051, 1043, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1055, + 3, 4, 2, 0, 1054, 1056, 3, 40, 20, 0, 1055, 1054, 1, 0, 0, 0, 1055, 1056, 1, 0, 0, 0, + 1056, 1058, 1, 0, 0, 0, 1057, 1059, 3, 136, 68, 0, 1058, 1057, 1, 0, 0, 0, 1058, 1059, + 1, 0, 0, 0, 1059, 135, 1, 0, 0, 0, 1060, 1064, 5, 84, 0, 0, 1061, 1063, 3, 254, 127, + 0, 1062, 1061, 1, 0, 0, 0, 1063, 1066, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1064, 1065, + 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 1064, 1, 0, 0, 0, 1067, 1069, 3, 4, 2, 0, 1068, + 1070, 3, 40, 20, 0, 1069, 1068, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1072, 1, 0, + 0, 0, 1071, 1073, 3, 136, 68, 0, 1072, 1071, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, + 137, 1, 0, 0, 0, 1074, 1076, 3, 4, 2, 0, 1075, 1077, 3, 40, 20, 0, 1076, 1075, 1, 0, + 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1094, 1, 0, 0, 0, 1078, 1081, 3, 52, 26, 0, 1079, + 1081, 3, 134, 67, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1079, 1, 0, 0, 0, 1081, 1082, 1, + 0, 0, 0, 1082, 1086, 5, 84, 0, 0, 1083, 1085, 3, 254, 127, 0, 1084, 1083, 1, 0, 0, 0, + 1085, 1088, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1089, + 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1089, 1091, 3, 4, 2, 0, 1090, 1092, 3, 40, 20, 0, + 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1094, 1, 0, 0, 0, 1093, 1074, + 1, 0, 0, 0, 1093, 1080, 1, 0, 0, 0, 1094, 139, 1, 0, 0, 0, 1095, 1096, 3, 138, 69, 0, + 1096, 141, 1, 0, 0, 0, 1097, 1098, 3, 4, 2, 0, 1098, 143, 1, 0, 0, 0, 1099, 1103, 3, + 130, 65, 0, 1100, 1103, 3, 134, 67, 0, 1101, 1103, 3, 142, 71, 0, 1102, 1099, 1, 0, + 0, 0, 1102, 1100, 1, 0, 0, 0, 1102, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, + 3, 30, 15, 0, 1105, 145, 1, 0, 0, 0, 1106, 1108, 3, 148, 74, 0, 1107, 1106, 1, 0, 0, + 0, 1108, 1111, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, + 1, 0, 0, 0, 1111, 1109, 1, 0, 0, 0, 1112, 1113, 3, 150, 75, 0, 1113, 1114, 3, 172, 86, + 0, 1114, 147, 1, 0, 0, 0, 1115, 1126, 3, 254, 127, 0, 1116, 1126, 5, 52, 0, 0, 1117, + 1126, 5, 51, 0, 0, 1118, 1126, 5, 50, 0, 0, 1119, 1126, 5, 18, 0, 0, 1120, 1126, 5, + 55, 0, 0, 1121, 1126, 5, 35, 0, 0, 1122, 1126, 5, 59, 0, 0, 1123, 1126, 5, 47, 0, 0, + 1124, 1126, 5, 56, 0, 0, 1125, 1115, 1, 0, 0, 0, 1125, 1116, 1, 0, 0, 0, 1125, 1117, + 1, 0, 0, 0, 1125, 1118, 1, 0, 0, 0, 1125, 1119, 1, 0, 0, 0, 1125, 1120, 1, 0, 0, 0, 1125, + 1121, 1, 0, 0, 0, 1125, 1122, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1124, 1, 0, 0, + 0, 1126, 149, 1, 0, 0, 0, 1127, 1131, 3, 98, 49, 0, 1128, 1130, 3, 254, 127, 0, 1129, + 1128, 1, 0, 0, 0, 1130, 1133, 1, 0, 0, 0, 1131, 1129, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, + 0, 1132, 1135, 1, 0, 0, 0, 1133, 1131, 1, 0, 0, 0, 1134, 1127, 1, 0, 0, 0, 1134, 1135, + 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 3, 152, 76, 0, 1137, 1139, 3, 154, 77, + 0, 1138, 1140, 3, 166, 83, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, + 151, 1, 0, 0, 0, 1141, 1144, 3, 128, 64, 0, 1142, 1144, 5, 65, 0, 0, 1143, 1141, 1, + 0, 0, 0, 1143, 1142, 1, 0, 0, 0, 1144, 153, 1, 0, 0, 0, 1145, 1146, 5, 123, 0, 0, 1146, + 1150, 5, 76, 0, 0, 1147, 1148, 3, 156, 78, 0, 1148, 1149, 5, 83, 0, 0, 1149, 1151, + 1, 0, 0, 0, 1150, 1147, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1153, 1, 0, 0, 0, 1152, + 1154, 3, 158, 79, 0, 1153, 1152, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1155, 1, + 0, 0, 0, 1155, 1157, 5, 77, 0, 0, 1156, 1158, 3, 30, 15, 0, 1157, 1156, 1, 0, 0, 0, 1157, + 1158, 1, 0, 0, 0, 1158, 155, 1, 0, 0, 0, 1159, 1161, 3, 254, 127, 0, 1160, 1159, 1, + 0, 0, 0, 1161, 1164, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, + 1165, 1, 0, 0, 0, 1164, 1162, 1, 0, 0, 0, 1165, 1168, 3, 128, 64, 0, 1166, 1167, 5, + 123, 0, 0, 1167, 1169, 5, 84, 0, 0, 1168, 1166, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, + 1170, 1, 0, 0, 0, 1170, 1171, 5, 60, 0, 0, 1171, 157, 1, 0, 0, 0, 1172, 1177, 3, 160, + 80, 0, 1173, 1174, 5, 83, 0, 0, 1174, 1176, 3, 160, 80, 0, 1175, 1173, 1, 0, 0, 0, 1176, + 1179, 1, 0, 0, 0, 1177, 1175, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 159, 1, 0, 0, + 0, 1179, 1177, 1, 0, 0, 0, 1180, 1182, 3, 164, 82, 0, 1181, 1180, 1, 0, 0, 0, 1182, + 1185, 1, 0, 0, 0, 1183, 1181, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1186, 1, 0, 0, + 0, 1185, 1183, 1, 0, 0, 0, 1186, 1187, 3, 128, 64, 0, 1187, 1188, 3, 124, 62, 0, 1188, + 1191, 1, 0, 0, 0, 1189, 1191, 3, 162, 81, 0, 1190, 1183, 1, 0, 0, 0, 1190, 1189, 1, + 0, 0, 0, 1191, 161, 1, 0, 0, 0, 1192, 1194, 3, 164, 82, 0, 1193, 1192, 1, 0, 0, 0, 1194, + 1197, 1, 0, 0, 0, 1195, 1193, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1198, 1, 0, 0, + 0, 1197, 1195, 1, 0, 0, 0, 1198, 1202, 3, 128, 64, 0, 1199, 1201, 3, 254, 127, 0, 1200, + 1199, 1, 0, 0, 0, 1201, 1204, 1, 0, 0, 0, 1202, 1200, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, + 0, 1203, 1205, 1, 0, 0, 0, 1204, 1202, 1, 0, 0, 0, 1205, 1206, 5, 85, 0, 0, 1206, 1207, + 5, 123, 0, 0, 1207, 163, 1, 0, 0, 0, 1208, 1211, 3, 254, 127, 0, 1209, 1211, 5, 35, + 0, 0, 1210, 1208, 1, 0, 0, 0, 1210, 1209, 1, 0, 0, 0, 1211, 165, 1, 0, 0, 0, 1212, 1213, + 5, 62, 0, 0, 1213, 1214, 3, 168, 84, 0, 1214, 167, 1, 0, 0, 0, 1215, 1220, 3, 170, 85, + 0, 1216, 1217, 5, 83, 0, 0, 1217, 1219, 3, 170, 85, 0, 1218, 1216, 1, 0, 0, 0, 1219, + 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 169, 1, 0, 0, + 0, 1222, 1220, 1, 0, 0, 0, 1223, 1226, 3, 22, 11, 0, 1224, 1226, 3, 26, 13, 0, 1225, + 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 171, 1, 0, 0, 0, 1227, 1230, 3, 276, + 138, 0, 1228, 1230, 5, 82, 0, 0, 1229, 1227, 1, 0, 0, 0, 1229, 1228, 1, 0, 0, 0, 1230, + 173, 1, 0, 0, 0, 1231, 1232, 3, 276, 138, 0, 1232, 175, 1, 0, 0, 0, 1233, 1234, 5, 55, + 0, 0, 1234, 1235, 3, 276, 138, 0, 1235, 177, 1, 0, 0, 0, 1236, 1238, 3, 180, 90, 0, + 1237, 1236, 1, 0, 0, 0, 1238, 1241, 1, 0, 0, 0, 1239, 1237, 1, 0, 0, 0, 1239, 1240, + 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1244, 3, 182, 91, 0, + 1243, 1245, 3, 166, 83, 0, 1244, 1243, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 1246, + 1, 0, 0, 0, 1246, 1247, 3, 186, 93, 0, 1247, 179, 1, 0, 0, 0, 1248, 1253, 3, 254, 127, + 0, 1249, 1253, 5, 52, 0, 0, 1250, 1253, 5, 51, 0, 0, 1251, 1253, 5, 50, 0, 0, 1252, + 1248, 1, 0, 0, 0, 1252, 1249, 1, 0, 0, 0, 1252, 1250, 1, 0, 0, 0, 1252, 1251, 1, 0, 0, + 0, 1253, 181, 1, 0, 0, 0, 1254, 1256, 3, 98, 49, 0, 1255, 1254, 1, 0, 0, 0, 1255, 1256, + 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 3, 184, 92, 0, 1258, 1262, 5, 76, 0, + 0, 1259, 1260, 3, 156, 78, 0, 1260, 1261, 5, 83, 0, 0, 1261, 1263, 1, 0, 0, 0, 1262, + 1259, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1265, 1, 0, 0, 0, 1264, 1266, 3, 158, + 79, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, + 1268, 5, 77, 0, 0, 1268, 183, 1, 0, 0, 0, 1269, 1270, 3, 4, 2, 0, 1270, 185, 1, 0, 0, + 0, 1271, 1273, 5, 78, 0, 0, 1272, 1274, 3, 188, 94, 0, 1273, 1272, 1, 0, 0, 0, 1273, + 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 3, 278, 139, 0, 1276, 1275, 1, + 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 1, 0, 0, 0, 1278, 1279, 5, 79, 0, 0, 1279, + 187, 1, 0, 0, 0, 1280, 1282, 3, 40, 20, 0, 1281, 1280, 1, 0, 0, 0, 1281, 1282, 1, 0, + 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 7, 4, 0, 0, 1284, 1286, 5, 76, 0, 0, 1285, + 1287, 3, 422, 211, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 1, + 0, 0, 0, 1288, 1289, 5, 77, 0, 0, 1289, 1307, 5, 82, 0, 0, 1290, 1293, 3, 58, 29, 0, + 1291, 1293, 3, 390, 195, 0, 1292, 1290, 1, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 1294, + 1, 0, 0, 0, 1294, 1296, 5, 84, 0, 0, 1295, 1297, 3, 40, 20, 0, 1296, 1295, 1, 0, 0, 0, + 1296, 1297, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 5, 57, 0, 0, 1299, 1301, + 5, 76, 0, 0, 1300, 1302, 3, 422, 211, 0, 1301, 1300, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, + 0, 1302, 1303, 1, 0, 0, 0, 1303, 1304, 5, 77, 0, 0, 1304, 1305, 5, 82, 0, 0, 1305, 1307, + 1, 0, 0, 0, 1306, 1281, 1, 0, 0, 0, 1306, 1292, 1, 0, 0, 0, 1307, 189, 1, 0, 0, 0, 1308, + 1310, 3, 96, 48, 0, 1309, 1308, 1, 0, 0, 0, 1310, 1313, 1, 0, 0, 0, 1311, 1309, 1, 0, + 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1311, 1, 0, 0, 0, 1314, 1315, + 5, 33, 0, 0, 1315, 1317, 3, 4, 2, 0, 1316, 1318, 3, 104, 52, 0, 1317, 1316, 1, 0, 0, + 0, 1317, 1318, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1320, 3, 192, 96, 0, 1320, + 191, 1, 0, 0, 0, 1321, 1323, 5, 78, 0, 0, 1322, 1324, 3, 194, 97, 0, 1323, 1322, 1, + 0, 0, 0, 1323, 1324, 1, 0, 0, 0, 1324, 1326, 1, 0, 0, 0, 1325, 1327, 5, 83, 0, 0, 1326, + 1325, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, 0, 0, 1328, 1330, 3, 200, + 100, 0, 1329, 1328, 1, 0, 0, 0, 1329, 1330, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, + 1332, 5, 79, 0, 0, 1332, 193, 1, 0, 0, 0, 1333, 1338, 3, 196, 98, 0, 1334, 1335, 5, + 83, 0, 0, 1335, 1337, 3, 196, 98, 0, 1336, 1334, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, + 1338, 1336, 1, 0, 0, 0, 1338, 1339, 1, 0, 0, 0, 1339, 195, 1, 0, 0, 0, 1340, 1338, 1, + 0, 0, 0, 1341, 1343, 3, 198, 99, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1346, 1, 0, 0, 0, 1344, + 1342, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1344, 1, 0, 0, + 0, 1347, 1353, 5, 123, 0, 0, 1348, 1350, 5, 76, 0, 0, 1349, 1351, 3, 422, 211, 0, 1350, + 1349, 1, 0, 0, 0, 1350, 1351, 1, 0, 0, 0, 1351, 1352, 1, 0, 0, 0, 1352, 1354, 5, 77, + 0, 0, 1353, 1348, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1356, 1, 0, 0, 0, 1355, 1357, + 3, 110, 55, 0, 1356, 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 197, 1, 0, 0, 0, + 1358, 1359, 3, 254, 127, 0, 1359, 199, 1, 0, 0, 0, 1360, 1364, 5, 82, 0, 0, 1361, 1363, + 3, 112, 56, 0, 1362, 1361, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, + 1364, 1365, 1, 0, 0, 0, 1365, 201, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1369, 3, + 96, 48, 0, 1368, 1367, 1, 0, 0, 0, 1369, 1372, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1370, + 1371, 1, 0, 0, 0, 1371, 1373, 1, 0, 0, 0, 1372, 1370, 1, 0, 0, 0, 1373, 1374, 5, 9, 0, + 0, 1374, 1376, 3, 4, 2, 0, 1375, 1377, 3, 98, 49, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, + 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 3, 204, 102, 0, 1379, 1381, 3, 104, + 52, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, + 1383, 3, 214, 107, 0, 1383, 203, 1, 0, 0, 0, 1384, 1386, 5, 76, 0, 0, 1385, 1387, 3, + 206, 103, 0, 1386, 1385, 1, 0, 0, 0, 1386, 1387, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, + 1388, 1389, 5, 77, 0, 0, 1389, 205, 1, 0, 0, 0, 1390, 1395, 3, 208, 104, 0, 1391, 1392, + 5, 83, 0, 0, 1392, 1394, 3, 208, 104, 0, 1393, 1391, 1, 0, 0, 0, 1394, 1397, 1, 0, 0, + 0, 1395, 1393, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 207, 1, 0, 0, 0, 1397, 1395, + 1, 0, 0, 0, 1398, 1400, 3, 212, 106, 0, 1399, 1398, 1, 0, 0, 0, 1400, 1403, 1, 0, 0, + 0, 1401, 1399, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1404, 1, 0, 0, 0, 1403, 1401, + 1, 0, 0, 0, 1404, 1405, 3, 128, 64, 0, 1405, 1406, 5, 123, 0, 0, 1406, 1409, 1, 0, 0, + 0, 1407, 1409, 3, 210, 105, 0, 1408, 1401, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409, + 209, 1, 0, 0, 0, 1410, 1412, 3, 212, 106, 0, 1411, 1410, 1, 0, 0, 0, 1412, 1415, 1, + 0, 0, 0, 1413, 1411, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1416, 1, 0, 0, 0, 1415, + 1413, 1, 0, 0, 0, 1416, 1420, 3, 128, 64, 0, 1417, 1419, 3, 254, 127, 0, 1418, 1417, + 1, 0, 0, 0, 1419, 1422, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1420, 1421, 1, 0, 0, 0, 1421, + 1423, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1423, 1424, 5, 85, 0, 0, 1424, 1425, 5, 123, + 0, 0, 1425, 211, 1, 0, 0, 0, 1426, 1427, 3, 254, 127, 0, 1427, 213, 1, 0, 0, 0, 1428, + 1432, 5, 78, 0, 0, 1429, 1431, 3, 216, 108, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1434, + 1, 0, 0, 0, 1432, 1430, 1, 0, 0, 0, 1432, 1433, 1, 0, 0, 0, 1433, 1435, 1, 0, 0, 0, 1434, + 1432, 1, 0, 0, 0, 1435, 1436, 5, 79, 0, 0, 1436, 215, 1, 0, 0, 0, 1437, 1440, 3, 112, + 56, 0, 1438, 1440, 3, 218, 109, 0, 1439, 1437, 1, 0, 0, 0, 1439, 1438, 1, 0, 0, 0, 1440, + 217, 1, 0, 0, 0, 1441, 1443, 3, 180, 90, 0, 1442, 1441, 1, 0, 0, 0, 1443, 1446, 1, 0, + 0, 0, 1444, 1442, 1, 0, 0, 0, 1444, 1445, 1, 0, 0, 0, 1445, 1447, 1, 0, 0, 0, 1446, 1444, + 1, 0, 0, 0, 1447, 1448, 3, 184, 92, 0, 1448, 1449, 3, 186, 93, 0, 1449, 219, 1, 0, 0, + 0, 1450, 1453, 3, 222, 111, 0, 1451, 1453, 3, 242, 121, 0, 1452, 1450, 1, 0, 0, 0, + 1452, 1451, 1, 0, 0, 0, 1453, 221, 1, 0, 0, 0, 1454, 1456, 3, 224, 112, 0, 1455, 1454, + 1, 0, 0, 0, 1456, 1459, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, + 1460, 1, 0, 0, 0, 1459, 1457, 1, 0, 0, 0, 1460, 1461, 5, 45, 0, 0, 1461, 1463, 3, 4, + 2, 0, 1462, 1464, 3, 98, 49, 0, 1463, 1462, 1, 0, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, + 1466, 1, 0, 0, 0, 1465, 1467, 3, 226, 113, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, + 0, 0, 0, 1467, 1469, 1, 0, 0, 0, 1468, 1470, 3, 228, 114, 0, 1469, 1468, 1, 0, 0, 0, + 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 3, 230, 115, 0, 1472, 223, + 1, 0, 0, 0, 1473, 1483, 3, 254, 127, 0, 1474, 1483, 5, 52, 0, 0, 1475, 1483, 5, 51, + 0, 0, 1476, 1483, 5, 50, 0, 0, 1477, 1483, 5, 18, 0, 0, 1478, 1483, 5, 55, 0, 0, 1479, + 1483, 5, 11, 0, 0, 1480, 1483, 5, 3, 0, 0, 1481, 1483, 5, 56, 0, 0, 1482, 1473, 1, 0, + 0, 0, 1482, 1474, 1, 0, 0, 0, 1482, 1475, 1, 0, 0, 0, 1482, 1476, 1, 0, 0, 0, 1482, 1477, + 1, 0, 0, 0, 1482, 1478, 1, 0, 0, 0, 1482, 1479, 1, 0, 0, 0, 1482, 1480, 1, 0, 0, 0, 1482, + 1481, 1, 0, 0, 0, 1483, 225, 1, 0, 0, 0, 1484, 1485, 5, 34, 0, 0, 1485, 1486, 3, 106, + 53, 0, 1486, 227, 1, 0, 0, 0, 1487, 1488, 5, 7, 0, 0, 1488, 1493, 3, 54, 27, 0, 1489, + 1490, 5, 83, 0, 0, 1490, 1492, 3, 54, 27, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1, + 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 229, 1, 0, 0, 0, 1495, + 1493, 1, 0, 0, 0, 1496, 1500, 5, 78, 0, 0, 1497, 1499, 3, 232, 116, 0, 1498, 1497, + 1, 0, 0, 0, 1499, 1502, 1, 0, 0, 0, 1500, 1498, 1, 0, 0, 0, 1500, 1501, 1, 0, 0, 0, 1501, + 1503, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1503, 1504, 5, 79, 0, 0, 1504, 231, 1, 0, 0, + 0, 1505, 1511, 3, 234, 117, 0, 1506, 1511, 3, 238, 119, 0, 1507, 1511, 3, 92, 46, + 0, 1508, 1511, 3, 220, 110, 0, 1509, 1511, 5, 82, 0, 0, 1510, 1505, 1, 0, 0, 0, 1510, + 1506, 1, 0, 0, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1508, 1, 0, 0, 0, 1510, 1509, 1, 0, 0, + 0, 1511, 233, 1, 0, 0, 0, 1512, 1514, 3, 236, 118, 0, 1513, 1512, 1, 0, 0, 0, 1514, + 1517, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1518, 1, 0, 0, + 0, 1517, 1515, 1, 0, 0, 0, 1518, 1519, 3, 128, 64, 0, 1519, 1520, 3, 120, 60, 0, 1520, + 1521, 5, 82, 0, 0, 1521, 235, 1, 0, 0, 0, 1522, 1527, 3, 254, 127, 0, 1523, 1527, 5, + 52, 0, 0, 1524, 1527, 5, 55, 0, 0, 1525, 1527, 5, 35, 0, 0, 1526, 1522, 1, 0, 0, 0, 1526, + 1523, 1, 0, 0, 0, 1526, 1524, 1, 0, 0, 0, 1526, 1525, 1, 0, 0, 0, 1527, 237, 1, 0, 0, + 0, 1528, 1530, 3, 240, 120, 0, 1529, 1528, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, + 1529, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1534, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, + 0, 1534, 1535, 3, 150, 75, 0, 1535, 1536, 3, 172, 86, 0, 1536, 239, 1, 0, 0, 0, 1537, + 1545, 3, 254, 127, 0, 1538, 1545, 5, 52, 0, 0, 1539, 1545, 5, 50, 0, 0, 1540, 1545, + 5, 18, 0, 0, 1541, 1545, 5, 29, 0, 0, 1542, 1545, 5, 55, 0, 0, 1543, 1545, 5, 56, 0, + 0, 1544, 1537, 1, 0, 0, 0, 1544, 1538, 1, 0, 0, 0, 1544, 1539, 1, 0, 0, 0, 1544, 1540, + 1, 0, 0, 0, 1544, 1541, 1, 0, 0, 0, 1544, 1542, 1, 0, 0, 0, 1544, 1543, 1, 0, 0, 0, 1545, + 241, 1, 0, 0, 0, 1546, 1548, 3, 224, 112, 0, 1547, 1546, 1, 0, 0, 0, 1548, 1551, 1, + 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 1, 0, 0, 0, 1551, + 1549, 1, 0, 0, 0, 1552, 1553, 5, 86, 0, 0, 1553, 1554, 5, 45, 0, 0, 1554, 1555, 3, 4, + 2, 0, 1555, 1556, 3, 244, 122, 0, 1556, 243, 1, 0, 0, 0, 1557, 1561, 5, 78, 0, 0, 1558, + 1560, 3, 246, 123, 0, 1559, 1558, 1, 0, 0, 0, 1560, 1563, 1, 0, 0, 0, 1561, 1559, 1, + 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1564, 1, 0, 0, 0, 1563, 1561, 1, 0, 0, 0, 1564, + 1565, 5, 79, 0, 0, 1565, 245, 1, 0, 0, 0, 1566, 1572, 3, 248, 124, 0, 1567, 1572, 3, + 234, 117, 0, 1568, 1572, 3, 92, 46, 0, 1569, 1572, 3, 220, 110, 0, 1570, 1572, 5, + 82, 0, 0, 1571, 1566, 1, 0, 0, 0, 1571, 1567, 1, 0, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571, + 1569, 1, 0, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 247, 1, 0, 0, 0, 1573, 1575, 3, 250, + 125, 0, 1574, 1573, 1, 0, 0, 0, 1575, 1578, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1576, + 1577, 1, 0, 0, 0, 1577, 1579, 1, 0, 0, 0, 1578, 1576, 1, 0, 0, 0, 1579, 1580, 3, 128, + 64, 0, 1580, 1581, 5, 123, 0, 0, 1581, 1582, 5, 76, 0, 0, 1582, 1584, 5, 77, 0, 0, 1583, + 1585, 3, 30, 15, 0, 1584, 1583, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1587, 1, 0, + 0, 0, 1586, 1588, 3, 252, 126, 0, 1587, 1586, 1, 0, 0, 0, 1587, 1588, 1, 0, 0, 0, 1588, + 1589, 1, 0, 0, 0, 1589, 1590, 5, 82, 0, 0, 1590, 249, 1, 0, 0, 0, 1591, 1595, 3, 254, + 127, 0, 1592, 1595, 5, 52, 0, 0, 1593, 1595, 5, 18, 0, 0, 1594, 1591, 1, 0, 0, 0, 1594, + 1592, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 251, 1, 0, 0, 0, 1596, 1597, 5, 29, 0, + 0, 1597, 1598, 3, 262, 131, 0, 1598, 253, 1, 0, 0, 0, 1599, 1603, 3, 256, 128, 0, 1600, + 1603, 3, 268, 134, 0, 1601, 1603, 3, 270, 135, 0, 1602, 1599, 1, 0, 0, 0, 1602, 1600, + 1, 0, 0, 0, 1602, 1601, 1, 0, 0, 0, 1603, 255, 1, 0, 0, 0, 1604, 1605, 5, 86, 0, 0, 1605, + 1606, 3, 54, 27, 0, 1606, 1608, 5, 76, 0, 0, 1607, 1609, 3, 258, 129, 0, 1608, 1607, + 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1611, 5, 77, 0, 0, 1611, + 257, 1, 0, 0, 0, 1612, 1617, 3, 260, 130, 0, 1613, 1614, 5, 83, 0, 0, 1614, 1616, 3, + 260, 130, 0, 1615, 1613, 1, 0, 0, 0, 1616, 1619, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, + 1617, 1618, 1, 0, 0, 0, 1618, 259, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1621, 5, + 123, 0, 0, 1621, 1622, 5, 88, 0, 0, 1622, 1623, 3, 262, 131, 0, 1623, 261, 1, 0, 0, + 0, 1624, 1628, 3, 464, 232, 0, 1625, 1628, 3, 264, 132, 0, 1626, 1628, 3, 254, 127, + 0, 1627, 1624, 1, 0, 0, 0, 1627, 1625, 1, 0, 0, 0, 1627, 1626, 1, 0, 0, 0, 1628, 263, + 1, 0, 0, 0, 1629, 1631, 5, 78, 0, 0, 1630, 1632, 3, 266, 133, 0, 1631, 1630, 1, 0, 0, + 0, 1631, 1632, 1, 0, 0, 0, 1632, 1634, 1, 0, 0, 0, 1633, 1635, 5, 83, 0, 0, 1634, 1633, + 1, 0, 0, 0, 1634, 1635, 1, 0, 0, 0, 1635, 1636, 1, 0, 0, 0, 1636, 1637, 5, 79, 0, 0, 1637, + 265, 1, 0, 0, 0, 1638, 1643, 3, 262, 131, 0, 1639, 1640, 5, 83, 0, 0, 1640, 1642, 3, + 262, 131, 0, 1641, 1639, 1, 0, 0, 0, 1642, 1645, 1, 0, 0, 0, 1643, 1641, 1, 0, 0, 0, + 1643, 1644, 1, 0, 0, 0, 1644, 267, 1, 0, 0, 0, 1645, 1643, 1, 0, 0, 0, 1646, 1647, 5, + 86, 0, 0, 1647, 1648, 3, 54, 27, 0, 1648, 269, 1, 0, 0, 0, 1649, 1650, 5, 86, 0, 0, 1650, + 1651, 3, 54, 27, 0, 1651, 1652, 5, 76, 0, 0, 1652, 1653, 3, 262, 131, 0, 1653, 1654, + 5, 77, 0, 0, 1654, 271, 1, 0, 0, 0, 1655, 1657, 5, 78, 0, 0, 1656, 1658, 3, 274, 137, + 0, 1657, 1656, 1, 0, 0, 0, 1657, 1658, 1, 0, 0, 0, 1658, 1660, 1, 0, 0, 0, 1659, 1661, + 5, 83, 0, 0, 1660, 1659, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662, + 1663, 5, 79, 0, 0, 1663, 273, 1, 0, 0, 0, 1664, 1669, 3, 126, 63, 0, 1665, 1666, 5, + 83, 0, 0, 1666, 1668, 3, 126, 63, 0, 1667, 1665, 1, 0, 0, 0, 1668, 1671, 1, 0, 0, 0, + 1669, 1667, 1, 0, 0, 0, 1669, 1670, 1, 0, 0, 0, 1670, 275, 1, 0, 0, 0, 1671, 1669, 1, + 0, 0, 0, 1672, 1674, 5, 78, 0, 0, 1673, 1675, 3, 278, 139, 0, 1674, 1673, 1, 0, 0, 0, + 1674, 1675, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1677, 5, 79, 0, 0, 1677, 277, + 1, 0, 0, 0, 1678, 1682, 3, 280, 140, 0, 1679, 1681, 3, 280, 140, 0, 1680, 1679, 1, + 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, + 279, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1685, 1689, 3, 282, 141, 0, 1686, 1689, 3, + 288, 144, 0, 1687, 1689, 3, 290, 145, 0, 1688, 1685, 1, 0, 0, 0, 1688, 1686, 1, 0, + 0, 0, 1688, 1687, 1, 0, 0, 0, 1689, 281, 1, 0, 0, 0, 1690, 1693, 3, 92, 46, 0, 1691, + 1693, 3, 222, 111, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1691, 1, 0, 0, 0, 1693, 283, 1, + 0, 0, 0, 1694, 1696, 3, 164, 82, 0, 1695, 1694, 1, 0, 0, 0, 1696, 1699, 1, 0, 0, 0, 1697, + 1695, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1700, 1, 0, 0, 0, 1699, 1697, 1, 0, 0, + 0, 1700, 1702, 3, 286, 143, 0, 1701, 1703, 3, 120, 60, 0, 1702, 1701, 1, 0, 0, 0, 1702, + 1703, 1, 0, 0, 0, 1703, 285, 1, 0, 0, 0, 1704, 1707, 3, 128, 64, 0, 1705, 1707, 5, 15, + 0, 0, 1706, 1704, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 287, 1, 0, 0, 0, 1708, 1709, + 3, 284, 142, 0, 1709, 1710, 5, 82, 0, 0, 1710, 289, 1, 0, 0, 0, 1711, 1718, 3, 294, + 147, 0, 1712, 1718, 3, 298, 149, 0, 1713, 1718, 3, 306, 153, 0, 1714, 1718, 3, 308, + 154, 0, 1715, 1718, 3, 326, 163, 0, 1716, 1718, 3, 332, 166, 0, 1717, 1711, 1, 0, + 0, 0, 1717, 1712, 1, 0, 0, 0, 1717, 1713, 1, 0, 0, 0, 1717, 1714, 1, 0, 0, 0, 1717, 1715, + 1, 0, 0, 0, 1717, 1716, 1, 0, 0, 0, 1718, 291, 1, 0, 0, 0, 1719, 1725, 3, 294, 147, 0, + 1720, 1725, 3, 300, 150, 0, 1721, 1725, 3, 310, 155, 0, 1722, 1725, 3, 328, 164, + 0, 1723, 1725, 3, 334, 167, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1720, 1, 0, 0, 0, 1724, + 1721, 1, 0, 0, 0, 1724, 1722, 1, 0, 0, 0, 1724, 1723, 1, 0, 0, 0, 1725, 293, 1, 0, 0, + 0, 1726, 1740, 3, 276, 138, 0, 1727, 1740, 3, 296, 148, 0, 1728, 1740, 3, 302, 151, + 0, 1729, 1740, 3, 312, 156, 0, 1730, 1740, 3, 314, 157, 0, 1731, 1740, 3, 330, 165, + 0, 1732, 1740, 3, 350, 175, 0, 1733, 1740, 3, 352, 176, 0, 1734, 1740, 3, 354, 177, + 0, 1735, 1740, 3, 358, 179, 0, 1736, 1740, 3, 356, 178, 0, 1737, 1740, 3, 360, 180, + 0, 1738, 1740, 3, 382, 191, 0, 1739, 1726, 1, 0, 0, 0, 1739, 1727, 1, 0, 0, 0, 1739, + 1728, 1, 0, 0, 0, 1739, 1729, 1, 0, 0, 0, 1739, 1730, 1, 0, 0, 0, 1739, 1731, 1, 0, 0, + 0, 1739, 1732, 1, 0, 0, 0, 1739, 1733, 1, 0, 0, 0, 1739, 1734, 1, 0, 0, 0, 1739, 1735, + 1, 0, 0, 0, 1739, 1736, 1, 0, 0, 0, 1739, 1737, 1, 0, 0, 0, 1739, 1738, 1, 0, 0, 0, 1740, + 295, 1, 0, 0, 0, 1741, 1742, 5, 82, 0, 0, 1742, 297, 1, 0, 0, 0, 1743, 1744, 5, 123, + 0, 0, 1744, 1745, 5, 94, 0, 0, 1745, 1746, 3, 290, 145, 0, 1746, 299, 1, 0, 0, 0, 1747, + 1748, 5, 123, 0, 0, 1748, 1749, 5, 94, 0, 0, 1749, 1750, 3, 292, 146, 0, 1750, 301, + 1, 0, 0, 0, 1751, 1752, 3, 304, 152, 0, 1752, 1753, 5, 82, 0, 0, 1753, 303, 1, 0, 0, + 0, 1754, 1762, 3, 468, 234, 0, 1755, 1762, 3, 436, 218, 0, 1756, 1762, 3, 438, 219, + 0, 1757, 1762, 3, 430, 215, 0, 1758, 1762, 3, 432, 216, 0, 1759, 1762, 3, 420, 210, + 0, 1760, 1762, 3, 398, 199, 0, 1761, 1754, 1, 0, 0, 0, 1761, 1755, 1, 0, 0, 0, 1761, + 1756, 1, 0, 0, 0, 1761, 1757, 1, 0, 0, 0, 1761, 1758, 1, 0, 0, 0, 1761, 1759, 1, 0, 0, + 0, 1761, 1760, 1, 0, 0, 0, 1762, 305, 1, 0, 0, 0, 1763, 1764, 5, 39, 0, 0, 1764, 1765, + 5, 76, 0, 0, 1765, 1766, 3, 388, 194, 0, 1766, 1767, 5, 77, 0, 0, 1767, 1768, 3, 290, + 145, 0, 1768, 307, 1, 0, 0, 0, 1769, 1770, 5, 39, 0, 0, 1770, 1771, 5, 76, 0, 0, 1771, + 1772, 3, 388, 194, 0, 1772, 1773, 5, 77, 0, 0, 1773, 1774, 3, 292, 146, 0, 1774, 1775, + 5, 32, 0, 0, 1775, 1776, 3, 290, 145, 0, 1776, 309, 1, 0, 0, 0, 1777, 1778, 5, 39, 0, + 0, 1778, 1779, 5, 76, 0, 0, 1779, 1780, 3, 388, 194, 0, 1780, 1781, 5, 77, 0, 0, 1781, + 1782, 3, 292, 146, 0, 1782, 1783, 5, 32, 0, 0, 1783, 1784, 3, 292, 146, 0, 1784, 311, + 1, 0, 0, 0, 1785, 1786, 5, 19, 0, 0, 1786, 1789, 3, 388, 194, 0, 1787, 1788, 5, 94, + 0, 0, 1788, 1790, 3, 388, 194, 0, 1789, 1787, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, + 1791, 1, 0, 0, 0, 1791, 1792, 5, 82, 0, 0, 1792, 313, 1, 0, 0, 0, 1793, 1794, 5, 58, + 0, 0, 1794, 1795, 5, 76, 0, 0, 1795, 1796, 3, 388, 194, 0, 1796, 1797, 5, 77, 0, 0, + 1797, 1798, 3, 316, 158, 0, 1798, 315, 1, 0, 0, 0, 1799, 1800, 5, 78, 0, 0, 1800, 1804, + 3, 318, 159, 0, 1801, 1803, 3, 318, 159, 0, 1802, 1801, 1, 0, 0, 0, 1803, 1806, 1, + 0, 0, 0, 1804, 1802, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1807, 1, 0, 0, 0, 1806, + 1804, 1, 0, 0, 0, 1807, 1808, 5, 79, 0, 0, 1808, 1826, 1, 0, 0, 0, 1809, 1813, 5, 78, + 0, 0, 1810, 1812, 3, 320, 160, 0, 1811, 1810, 1, 0, 0, 0, 1812, 1815, 1, 0, 0, 0, 1813, + 1811, 1, 0, 0, 0, 1813, 1814, 1, 0, 0, 0, 1814, 1821, 1, 0, 0, 0, 1815, 1813, 1, 0, 0, + 0, 1816, 1817, 3, 322, 161, 0, 1817, 1818, 5, 94, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, + 1816, 1, 0, 0, 0, 1820, 1823, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, + 0, 1822, 1824, 1, 0, 0, 0, 1823, 1821, 1, 0, 0, 0, 1824, 1826, 5, 79, 0, 0, 1825, 1799, + 1, 0, 0, 0, 1825, 1809, 1, 0, 0, 0, 1826, 317, 1, 0, 0, 0, 1827, 1828, 3, 322, 161, 0, + 1828, 1834, 5, 95, 0, 0, 1829, 1830, 3, 388, 194, 0, 1830, 1831, 5, 82, 0, 0, 1831, + 1835, 1, 0, 0, 0, 1832, 1835, 3, 276, 138, 0, 1833, 1835, 3, 356, 178, 0, 1834, 1829, + 1, 0, 0, 0, 1834, 1832, 1, 0, 0, 0, 1834, 1833, 1, 0, 0, 0, 1835, 319, 1, 0, 0, 0, 1836, + 1837, 3, 322, 161, 0, 1837, 1843, 5, 94, 0, 0, 1838, 1839, 3, 322, 161, 0, 1839, 1840, + 5, 94, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1838, 1, 0, 0, 0, 1842, 1845, 1, 0, 0, 0, 1843, + 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1846, 1, 0, 0, 0, 1845, 1843, 1, 0, 0, + 0, 1846, 1847, 3, 278, 139, 0, 1847, 321, 1, 0, 0, 0, 1848, 1849, 5, 23, 0, 0, 1849, + 1854, 3, 324, 162, 0, 1850, 1851, 5, 83, 0, 0, 1851, 1853, 3, 324, 162, 0, 1852, 1850, + 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, + 1859, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1859, 5, 29, 0, 0, 1858, 1848, 1, 0, + 0, 0, 1858, 1857, 1, 0, 0, 0, 1859, 323, 1, 0, 0, 0, 1860, 1861, 3, 464, 232, 0, 1861, + 325, 1, 0, 0, 0, 1862, 1863, 5, 67, 0, 0, 1863, 1864, 5, 76, 0, 0, 1864, 1865, 3, 388, + 194, 0, 1865, 1866, 5, 77, 0, 0, 1866, 1867, 3, 290, 145, 0, 1867, 327, 1, 0, 0, 0, + 1868, 1869, 5, 67, 0, 0, 1869, 1870, 5, 76, 0, 0, 1870, 1871, 3, 388, 194, 0, 1871, + 1872, 5, 77, 0, 0, 1872, 1873, 3, 292, 146, 0, 1873, 329, 1, 0, 0, 0, 1874, 1875, 5, + 30, 0, 0, 1875, 1876, 3, 290, 145, 0, 1876, 1877, 5, 67, 0, 0, 1877, 1878, 5, 76, 0, + 0, 1878, 1879, 3, 388, 194, 0, 1879, 1880, 5, 77, 0, 0, 1880, 1881, 5, 82, 0, 0, 1881, + 331, 1, 0, 0, 0, 1882, 1885, 3, 336, 168, 0, 1883, 1885, 3, 346, 173, 0, 1884, 1882, + 1, 0, 0, 0, 1884, 1883, 1, 0, 0, 0, 1885, 333, 1, 0, 0, 0, 1886, 1889, 3, 338, 169, 0, + 1887, 1889, 3, 348, 174, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1887, 1, 0, 0, 0, 1889, 335, + 1, 0, 0, 0, 1890, 1891, 5, 38, 0, 0, 1891, 1893, 5, 76, 0, 0, 1892, 1894, 3, 340, 170, + 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897, + 5, 82, 0, 0, 1896, 1898, 3, 388, 194, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, + 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 5, 82, 0, 0, 1900, 1902, 3, 342, 171, 0, 1901, + 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 1904, 5, 77, + 0, 0, 1904, 1905, 3, 290, 145, 0, 1905, 337, 1, 0, 0, 0, 1906, 1907, 5, 38, 0, 0, 1907, + 1909, 5, 76, 0, 0, 1908, 1910, 3, 340, 170, 0, 1909, 1908, 1, 0, 0, 0, 1909, 1910, + 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 5, 82, 0, 0, 1912, 1914, 3, 388, 194, + 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1917, + 5, 82, 0, 0, 1916, 1918, 3, 342, 171, 0, 1917, 1916, 1, 0, 0, 0, 1917, 1918, 1, 0, 0, + 0, 1918, 1919, 1, 0, 0, 0, 1919, 1920, 5, 77, 0, 0, 1920, 1921, 3, 292, 146, 0, 1921, + 339, 1, 0, 0, 0, 1922, 1925, 3, 344, 172, 0, 1923, 1925, 3, 284, 142, 0, 1924, 1922, + 1, 0, 0, 0, 1924, 1923, 1, 0, 0, 0, 1925, 341, 1, 0, 0, 0, 1926, 1927, 3, 344, 172, 0, + 1927, 343, 1, 0, 0, 0, 1928, 1933, 3, 304, 152, 0, 1929, 1930, 5, 83, 0, 0, 1930, 1932, + 3, 304, 152, 0, 1931, 1929, 1, 0, 0, 0, 1932, 1935, 1, 0, 0, 0, 1933, 1931, 1, 0, 0, + 0, 1933, 1934, 1, 0, 0, 0, 1934, 345, 1, 0, 0, 0, 1935, 1933, 1, 0, 0, 0, 1936, 1937, + 5, 38, 0, 0, 1937, 1938, 5, 76, 0, 0, 1938, 1939, 3, 284, 142, 0, 1939, 1940, 5, 94, + 0, 0, 1940, 1941, 3, 388, 194, 0, 1941, 1942, 5, 77, 0, 0, 1942, 1943, 3, 290, 145, + 0, 1943, 347, 1, 0, 0, 0, 1944, 1945, 5, 38, 0, 0, 1945, 1946, 5, 76, 0, 0, 1946, 1947, + 3, 284, 142, 0, 1947, 1948, 5, 94, 0, 0, 1948, 1949, 3, 388, 194, 0, 1949, 1950, 5, + 77, 0, 0, 1950, 1951, 3, 292, 146, 0, 1951, 349, 1, 0, 0, 0, 1952, 1954, 5, 21, 0, 0, + 1953, 1955, 5, 123, 0, 0, 1954, 1953, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1956, + 1, 0, 0, 0, 1956, 1957, 5, 82, 0, 0, 1957, 351, 1, 0, 0, 0, 1958, 1960, 5, 28, 0, 0, 1959, + 1961, 5, 123, 0, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0, + 0, 0, 1962, 1963, 5, 82, 0, 0, 1963, 353, 1, 0, 0, 0, 1964, 1966, 5, 53, 0, 0, 1965, + 1967, 3, 388, 194, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1, + 0, 0, 0, 1968, 1969, 5, 82, 0, 0, 1969, 355, 1, 0, 0, 0, 1970, 1971, 5, 61, 0, 0, 1971, + 1972, 3, 388, 194, 0, 1972, 1973, 5, 82, 0, 0, 1973, 357, 1, 0, 0, 0, 1974, 1975, 5, + 59, 0, 0, 1975, 1976, 5, 76, 0, 0, 1976, 1977, 3, 388, 194, 0, 1977, 1978, 5, 77, 0, + 0, 1978, 1979, 3, 276, 138, 0, 1979, 359, 1, 0, 0, 0, 1980, 1981, 5, 64, 0, 0, 1981, + 1982, 3, 276, 138, 0, 1982, 1983, 3, 362, 181, 0, 1983, 1997, 1, 0, 0, 0, 1984, 1985, + 5, 64, 0, 0, 1985, 1986, 3, 276, 138, 0, 1986, 1987, 3, 370, 185, 0, 1987, 1997, 1, + 0, 0, 0, 1988, 1989, 5, 64, 0, 0, 1989, 1991, 3, 276, 138, 0, 1990, 1992, 3, 362, 181, + 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, + 3, 370, 185, 0, 1994, 1997, 1, 0, 0, 0, 1995, 1997, 3, 372, 186, 0, 1996, 1980, 1, + 0, 0, 0, 1996, 1984, 1, 0, 0, 0, 1996, 1988, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1997, + 361, 1, 0, 0, 0, 1998, 2002, 3, 364, 182, 0, 1999, 2001, 3, 364, 182, 0, 2000, 1999, + 1, 0, 0, 0, 2001, 2004, 1, 0, 0, 0, 2002, 2000, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, + 363, 1, 0, 0, 0, 2004, 2002, 1, 0, 0, 0, 2005, 2006, 5, 24, 0, 0, 2006, 2007, 5, 76, + 0, 0, 2007, 2008, 3, 366, 183, 0, 2008, 2009, 5, 77, 0, 0, 2009, 2010, 3, 276, 138, + 0, 2010, 365, 1, 0, 0, 0, 2011, 2013, 3, 164, 82, 0, 2012, 2011, 1, 0, 0, 0, 2013, 2016, + 1, 0, 0, 0, 2014, 2012, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 1, 0, 0, 0, 2016, + 2014, 1, 0, 0, 0, 2017, 2018, 3, 368, 184, 0, 2018, 2019, 3, 124, 62, 0, 2019, 367, + 1, 0, 0, 0, 2020, 2025, 3, 138, 69, 0, 2021, 2022, 5, 109, 0, 0, 2022, 2024, 3, 22, + 11, 0, 2023, 2021, 1, 0, 0, 0, 2024, 2027, 1, 0, 0, 0, 2025, 2023, 1, 0, 0, 0, 2025, + 2026, 1, 0, 0, 0, 2026, 369, 1, 0, 0, 0, 2027, 2025, 1, 0, 0, 0, 2028, 2029, 5, 36, 0, + 0, 2029, 2030, 3, 276, 138, 0, 2030, 371, 1, 0, 0, 0, 2031, 2032, 5, 64, 0, 0, 2032, + 2033, 3, 374, 187, 0, 2033, 2035, 3, 276, 138, 0, 2034, 2036, 3, 362, 181, 0, 2035, + 2034, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2039, 3, 370, + 185, 0, 2038, 2037, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 373, 1, 0, 0, 0, 2040, + 2041, 5, 76, 0, 0, 2041, 2043, 3, 376, 188, 0, 2042, 2044, 5, 82, 0, 0, 2043, 2042, + 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2046, 5, 77, 0, 0, 2046, + 375, 1, 0, 0, 0, 2047, 2052, 3, 378, 189, 0, 2048, 2049, 5, 82, 0, 0, 2049, 2051, 3, + 378, 189, 0, 2050, 2048, 1, 0, 0, 0, 2051, 2054, 1, 0, 0, 0, 2052, 2050, 1, 0, 0, 0, + 2052, 2053, 1, 0, 0, 0, 2053, 377, 1, 0, 0, 0, 2054, 2052, 1, 0, 0, 0, 2055, 2058, 3, + 284, 142, 0, 2056, 2058, 3, 380, 190, 0, 2057, 2055, 1, 0, 0, 0, 2057, 2056, 1, 0, + 0, 0, 2058, 379, 1, 0, 0, 0, 2059, 2062, 3, 58, 29, 0, 2060, 2062, 3, 418, 209, 0, 2061, + 2059, 1, 0, 0, 0, 2061, 2060, 1, 0, 0, 0, 2062, 381, 1, 0, 0, 0, 2063, 2064, 5, 17, 0, + 0, 2064, 2065, 3, 388, 194, 0, 2065, 2066, 5, 82, 0, 0, 2066, 383, 1, 0, 0, 0, 2067, + 2068, 3, 386, 193, 0, 2068, 385, 1, 0, 0, 0, 2069, 2070, 3, 284, 142, 0, 2070, 387, + 1, 0, 0, 0, 2071, 2074, 3, 474, 237, 0, 2072, 2074, 3, 466, 233, 0, 2073, 2071, 1, + 0, 0, 0, 2073, 2072, 1, 0, 0, 0, 2074, 389, 1, 0, 0, 0, 2075, 2078, 3, 392, 196, 0, 2076, + 2078, 3, 406, 203, 0, 2077, 2075, 1, 0, 0, 0, 2077, 2076, 1, 0, 0, 0, 2078, 391, 1, + 0, 0, 0, 2079, 2081, 3, 2, 1, 0, 2080, 2082, 3, 394, 197, 0, 2081, 2080, 1, 0, 0, 0, + 2081, 2082, 1, 0, 0, 0, 2082, 2297, 1, 0, 0, 0, 2083, 2085, 3, 396, 198, 0, 2084, 2086, + 3, 394, 197, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2297, 1, 0, 0, + 0, 2087, 2089, 5, 60, 0, 0, 2088, 2090, 3, 394, 197, 0, 2089, 2088, 1, 0, 0, 0, 2089, + 2090, 1, 0, 0, 0, 2090, 2297, 1, 0, 0, 0, 2091, 2092, 3, 54, 27, 0, 2092, 2093, 5, 84, + 0, 0, 2093, 2095, 5, 60, 0, 0, 2094, 2096, 3, 394, 197, 0, 2095, 2094, 1, 0, 0, 0, 2095, + 2096, 1, 0, 0, 0, 2096, 2297, 1, 0, 0, 0, 2097, 2098, 5, 76, 0, 0, 2098, 2099, 3, 388, + 194, 0, 2099, 2101, 5, 77, 0, 0, 2100, 2102, 3, 394, 197, 0, 2101, 2100, 1, 0, 0, 0, + 2101, 2102, 1, 0, 0, 0, 2102, 2297, 1, 0, 0, 0, 2103, 2105, 3, 400, 200, 0, 2104, 2106, + 3, 394, 197, 0, 2105, 2104, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2297, 1, 0, 0, + 0, 2107, 2108, 3, 58, 29, 0, 2108, 2109, 5, 84, 0, 0, 2109, 2111, 3, 400, 200, 0, 2110, + 2112, 3, 394, 197, 0, 2111, 2110, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2297, 1, + 0, 0, 0, 2113, 2114, 3, 406, 203, 0, 2114, 2115, 5, 84, 0, 0, 2115, 2117, 3, 400, 200, + 0, 2116, 2118, 3, 394, 197, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, + 2297, 1, 0, 0, 0, 2119, 2120, 3, 406, 203, 0, 2120, 2121, 5, 84, 0, 0, 2121, 2123, + 5, 123, 0, 0, 2122, 2124, 3, 394, 197, 0, 2123, 2122, 1, 0, 0, 0, 2123, 2124, 1, 0, + 0, 0, 2124, 2297, 1, 0, 0, 0, 2125, 2126, 5, 57, 0, 0, 2126, 2127, 5, 84, 0, 0, 2127, + 2129, 5, 123, 0, 0, 2128, 2130, 3, 394, 197, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130, + 1, 0, 0, 0, 2130, 2297, 1, 0, 0, 0, 2131, 2132, 3, 54, 27, 0, 2132, 2133, 5, 84, 0, 0, + 2133, 2134, 5, 57, 0, 0, 2134, 2135, 5, 84, 0, 0, 2135, 2137, 5, 123, 0, 0, 2136, 2138, + 3, 394, 197, 0, 2137, 2136, 1, 0, 0, 0, 2137, 2138, 1, 0, 0, 0, 2138, 2297, 1, 0, 0, + 0, 2139, 2140, 3, 58, 29, 0, 2140, 2141, 5, 80, 0, 0, 2141, 2142, 3, 388, 194, 0, 2142, + 2144, 5, 81, 0, 0, 2143, 2145, 3, 394, 197, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145, + 1, 0, 0, 0, 2145, 2297, 1, 0, 0, 0, 2146, 2147, 3, 410, 205, 0, 2147, 2148, 5, 80, 0, + 0, 2148, 2149, 3, 388, 194, 0, 2149, 2151, 5, 81, 0, 0, 2150, 2152, 3, 394, 197, 0, + 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2297, 1, 0, 0, 0, 2153, 2154, + 3, 60, 30, 0, 2154, 2156, 5, 76, 0, 0, 2155, 2157, 3, 422, 211, 0, 2156, 2155, 1, 0, + 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 5, 77, 0, 0, 2159, + 2161, 3, 394, 197, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2297, 1, + 0, 0, 0, 2162, 2163, 3, 54, 27, 0, 2163, 2165, 5, 84, 0, 0, 2164, 2166, 3, 40, 20, 0, + 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, + 5, 123, 0, 0, 2168, 2170, 5, 76, 0, 0, 2169, 2171, 3, 422, 211, 0, 2170, 2169, 1, 0, + 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2172, 1, 0, 0, 0, 2172, 2174, 5, 77, 0, 0, 2173, + 2175, 3, 394, 197, 0, 2174, 2173, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2297, 1, + 0, 0, 0, 2176, 2177, 3, 58, 29, 0, 2177, 2179, 5, 84, 0, 0, 2178, 2180, 3, 40, 20, 0, + 2179, 2178, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2182, + 5, 123, 0, 0, 2182, 2184, 5, 76, 0, 0, 2183, 2185, 3, 422, 211, 0, 2184, 2183, 1, 0, + 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 5, 77, 0, 0, 2187, + 2189, 3, 394, 197, 0, 2188, 2187, 1, 0, 0, 0, 2188, 2189, 1, 0, 0, 0, 2189, 2297, 1, + 0, 0, 0, 2190, 2191, 3, 406, 203, 0, 2191, 2193, 5, 84, 0, 0, 2192, 2194, 3, 40, 20, + 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196, + 5, 123, 0, 0, 2196, 2198, 5, 76, 0, 0, 2197, 2199, 3, 422, 211, 0, 2198, 2197, 1, 0, + 0, 0, 2198, 2199, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2202, 5, 77, 0, 0, 2201, + 2203, 3, 394, 197, 0, 2202, 2201, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2297, 1, + 0, 0, 0, 2204, 2205, 5, 57, 0, 0, 2205, 2207, 5, 84, 0, 0, 2206, 2208, 3, 40, 20, 0, + 2207, 2206, 1, 0, 0, 0, 2207, 2208, 1, 0, 0, 0, 2208, 2209, 1, 0, 0, 0, 2209, 2210, + 5, 123, 0, 0, 2210, 2212, 5, 76, 0, 0, 2211, 2213, 3, 422, 211, 0, 2212, 2211, 1, 0, + 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2216, 5, 77, 0, 0, 2215, + 2217, 3, 394, 197, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2297, 1, + 0, 0, 0, 2218, 2219, 3, 54, 27, 0, 2219, 2220, 5, 84, 0, 0, 2220, 2221, 5, 57, 0, 0, + 2221, 2223, 5, 84, 0, 0, 2222, 2224, 3, 40, 20, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224, + 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2226, 5, 123, 0, 0, 2226, 2228, 5, 76, 0, 0, + 2227, 2229, 3, 422, 211, 0, 2228, 2227, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230, + 1, 0, 0, 0, 2230, 2232, 5, 77, 0, 0, 2231, 2233, 3, 394, 197, 0, 2232, 2231, 1, 0, 0, + 0, 2232, 2233, 1, 0, 0, 0, 2233, 2297, 1, 0, 0, 0, 2234, 2235, 3, 58, 29, 0, 2235, 2237, + 5, 87, 0, 0, 2236, 2238, 3, 40, 20, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, + 2238, 2239, 1, 0, 0, 0, 2239, 2241, 5, 123, 0, 0, 2240, 2242, 3, 394, 197, 0, 2241, + 2240, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2297, 1, 0, 0, 0, 2243, 2244, 3, 406, + 203, 0, 2244, 2246, 5, 87, 0, 0, 2245, 2247, 3, 40, 20, 0, 2246, 2245, 1, 0, 0, 0, 2246, + 2247, 1, 0, 0, 0, 2247, 2248, 1, 0, 0, 0, 2248, 2250, 5, 123, 0, 0, 2249, 2251, 3, 394, + 197, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2297, 1, 0, 0, 0, 2252, + 2253, 3, 16, 8, 0, 2253, 2255, 5, 87, 0, 0, 2254, 2256, 3, 40, 20, 0, 2255, 2254, 1, + 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2257, 1, 0, 0, 0, 2257, 2259, 5, 123, 0, 0, 2258, + 2260, 3, 394, 197, 0, 2259, 2258, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2297, 1, + 0, 0, 0, 2261, 2262, 5, 57, 0, 0, 2262, 2264, 5, 87, 0, 0, 2263, 2265, 3, 40, 20, 0, + 2264, 2263, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2268, + 5, 123, 0, 0, 2267, 2269, 3, 394, 197, 0, 2268, 2267, 1, 0, 0, 0, 2268, 2269, 1, 0, + 0, 0, 2269, 2297, 1, 0, 0, 0, 2270, 2271, 3, 54, 27, 0, 2271, 2272, 5, 84, 0, 0, 2272, + 2273, 5, 57, 0, 0, 2273, 2275, 5, 87, 0, 0, 2274, 2276, 3, 40, 20, 0, 2275, 2274, 1, + 0, 0, 0, 2275, 2276, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 5, 123, 0, 0, 2278, + 2280, 3, 394, 197, 0, 2279, 2278, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2297, 1, + 0, 0, 0, 2281, 2282, 3, 22, 11, 0, 2282, 2284, 5, 87, 0, 0, 2283, 2285, 3, 40, 20, 0, + 2284, 2283, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2286, 1, 0, 0, 0, 2286, 2288, + 5, 48, 0, 0, 2287, 2289, 3, 394, 197, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, + 0, 2289, 2297, 1, 0, 0, 0, 2290, 2291, 3, 28, 14, 0, 2291, 2292, 5, 87, 0, 0, 2292, + 2294, 5, 48, 0, 0, 2293, 2295, 3, 394, 197, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295, + 1, 0, 0, 0, 2295, 2297, 1, 0, 0, 0, 2296, 2079, 1, 0, 0, 0, 2296, 2083, 1, 0, 0, 0, 2296, + 2087, 1, 0, 0, 0, 2296, 2091, 1, 0, 0, 0, 2296, 2097, 1, 0, 0, 0, 2296, 2103, 1, 0, 0, + 0, 2296, 2107, 1, 0, 0, 0, 2296, 2113, 1, 0, 0, 0, 2296, 2119, 1, 0, 0, 0, 2296, 2125, + 1, 0, 0, 0, 2296, 2131, 1, 0, 0, 0, 2296, 2139, 1, 0, 0, 0, 2296, 2146, 1, 0, 0, 0, 2296, + 2153, 1, 0, 0, 0, 2296, 2162, 1, 0, 0, 0, 2296, 2176, 1, 0, 0, 0, 2296, 2190, 1, 0, 0, + 0, 2296, 2204, 1, 0, 0, 0, 2296, 2218, 1, 0, 0, 0, 2296, 2234, 1, 0, 0, 0, 2296, 2243, + 1, 0, 0, 0, 2296, 2252, 1, 0, 0, 0, 2296, 2261, 1, 0, 0, 0, 2296, 2270, 1, 0, 0, 0, 2296, + 2281, 1, 0, 0, 0, 2296, 2290, 1, 0, 0, 0, 2297, 393, 1, 0, 0, 0, 2298, 2299, 5, 84, 0, + 0, 2299, 2301, 3, 400, 200, 0, 2300, 2302, 3, 394, 197, 0, 2301, 2300, 1, 0, 0, 0, + 2301, 2302, 1, 0, 0, 0, 2302, 2336, 1, 0, 0, 0, 2303, 2304, 5, 84, 0, 0, 2304, 2306, + 5, 123, 0, 0, 2305, 2307, 3, 394, 197, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, + 0, 0, 2307, 2336, 1, 0, 0, 0, 2308, 2309, 5, 80, 0, 0, 2309, 2310, 3, 388, 194, 0, 2310, + 2312, 5, 81, 0, 0, 2311, 2313, 3, 394, 197, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313, + 1, 0, 0, 0, 2313, 2336, 1, 0, 0, 0, 2314, 2316, 5, 84, 0, 0, 2315, 2317, 3, 40, 20, 0, + 2316, 2315, 1, 0, 0, 0, 2316, 2317, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2319, + 5, 123, 0, 0, 2319, 2321, 5, 76, 0, 0, 2320, 2322, 3, 422, 211, 0, 2321, 2320, 1, 0, + 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 2325, 5, 77, 0, 0, 2324, + 2326, 3, 394, 197, 0, 2325, 2324, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2336, 1, + 0, 0, 0, 2327, 2329, 5, 87, 0, 0, 2328, 2330, 3, 40, 20, 0, 2329, 2328, 1, 0, 0, 0, 2329, + 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2333, 5, 123, 0, 0, 2332, 2334, 3, 394, + 197, 0, 2333, 2332, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2336, 1, 0, 0, 0, 2335, + 2298, 1, 0, 0, 0, 2335, 2303, 1, 0, 0, 0, 2335, 2308, 1, 0, 0, 0, 2335, 2314, 1, 0, 0, + 0, 2335, 2327, 1, 0, 0, 0, 2336, 395, 1, 0, 0, 0, 2337, 2342, 3, 54, 27, 0, 2338, 2339, + 5, 80, 0, 0, 2339, 2341, 5, 81, 0, 0, 2340, 2338, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0, + 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 2345, 1, 0, 0, 0, 2344, 2342, + 1, 0, 0, 0, 2345, 2346, 5, 84, 0, 0, 2346, 2347, 5, 26, 0, 0, 2347, 2373, 1, 0, 0, 0, + 2348, 2353, 3, 10, 5, 0, 2349, 2350, 5, 80, 0, 0, 2350, 2352, 5, 81, 0, 0, 2351, 2349, + 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, + 2356, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2357, 5, 84, 0, 0, 2357, 2358, 5, 26, + 0, 0, 2358, 2373, 1, 0, 0, 0, 2359, 2364, 5, 20, 0, 0, 2360, 2361, 5, 80, 0, 0, 2361, + 2363, 5, 81, 0, 0, 2362, 2360, 1, 0, 0, 0, 2363, 2366, 1, 0, 0, 0, 2364, 2362, 1, 0, + 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2367, 1, 0, 0, 0, 2366, 2364, 1, 0, 0, 0, 2367, 2368, + 5, 84, 0, 0, 2368, 2373, 5, 26, 0, 0, 2369, 2370, 5, 65, 0, 0, 2370, 2371, 5, 84, 0, + 0, 2371, 2373, 5, 26, 0, 0, 2372, 2337, 1, 0, 0, 0, 2372, 2348, 1, 0, 0, 0, 2372, 2359, + 1, 0, 0, 0, 2372, 2369, 1, 0, 0, 0, 2373, 397, 1, 0, 0, 0, 2374, 2384, 3, 400, 200, 0, + 2375, 2376, 3, 58, 29, 0, 2376, 2377, 5, 84, 0, 0, 2377, 2378, 3, 400, 200, 0, 2378, + 2384, 1, 0, 0, 0, 2379, 2380, 3, 390, 195, 0, 2380, 2381, 5, 84, 0, 0, 2381, 2382, + 3, 400, 200, 0, 2382, 2384, 1, 0, 0, 0, 2383, 2374, 1, 0, 0, 0, 2383, 2375, 1, 0, 0, + 0, 2383, 2379, 1, 0, 0, 0, 2384, 399, 1, 0, 0, 0, 2385, 2387, 5, 48, 0, 0, 2386, 2388, + 3, 40, 20, 0, 2387, 2386, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, + 2389, 2390, 3, 402, 201, 0, 2390, 2392, 5, 76, 0, 0, 2391, 2393, 3, 422, 211, 0, 2392, + 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2396, 5, 77, + 0, 0, 2395, 2397, 3, 110, 55, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, + 401, 1, 0, 0, 0, 2398, 2400, 3, 254, 127, 0, 2399, 2398, 1, 0, 0, 0, 2400, 2403, 1, + 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2401, 2402, 1, 0, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403, + 2401, 1, 0, 0, 0, 2404, 2415, 5, 123, 0, 0, 2405, 2409, 5, 84, 0, 0, 2406, 2408, 3, + 254, 127, 0, 2407, 2406, 1, 0, 0, 0, 2408, 2411, 1, 0, 0, 0, 2409, 2407, 1, 0, 0, 0, + 2409, 2410, 1, 0, 0, 0, 2410, 2412, 1, 0, 0, 0, 2411, 2409, 1, 0, 0, 0, 2412, 2414, + 5, 123, 0, 0, 2413, 2405, 1, 0, 0, 0, 2414, 2417, 1, 0, 0, 0, 2415, 2413, 1, 0, 0, 0, + 2415, 2416, 1, 0, 0, 0, 2416, 2419, 1, 0, 0, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2420, + 3, 404, 202, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 403, 1, 0, 0, 0, + 2421, 2424, 3, 40, 20, 0, 2422, 2424, 5, 4, 0, 0, 2423, 2421, 1, 0, 0, 0, 2423, 2422, + 1, 0, 0, 0, 2424, 405, 1, 0, 0, 0, 2425, 2428, 3, 408, 204, 0, 2426, 2428, 3, 410, 205, + 0, 2427, 2425, 1, 0, 0, 0, 2427, 2426, 1, 0, 0, 0, 2428, 407, 1, 0, 0, 0, 2429, 2430, + 5, 48, 0, 0, 2430, 2431, 3, 8, 4, 0, 2431, 2433, 3, 412, 206, 0, 2432, 2434, 3, 30, + 15, 0, 2433, 2432, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2442, 1, 0, 0, 0, 2435, + 2436, 5, 48, 0, 0, 2436, 2437, 3, 22, 11, 0, 2437, 2439, 3, 412, 206, 0, 2438, 2440, + 3, 30, 15, 0, 2439, 2438, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2442, 1, 0, 0, 0, + 2441, 2429, 1, 0, 0, 0, 2441, 2435, 1, 0, 0, 0, 2442, 409, 1, 0, 0, 0, 2443, 2444, 5, + 48, 0, 0, 2444, 2445, 3, 8, 4, 0, 2445, 2446, 3, 30, 15, 0, 2446, 2447, 3, 272, 136, + 0, 2447, 2454, 1, 0, 0, 0, 2448, 2449, 5, 48, 0, 0, 2449, 2450, 3, 20, 10, 0, 2450, + 2451, 3, 30, 15, 0, 2451, 2452, 3, 272, 136, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2443, + 1, 0, 0, 0, 2453, 2448, 1, 0, 0, 0, 2454, 411, 1, 0, 0, 0, 2455, 2459, 3, 414, 207, 0, + 2456, 2458, 3, 414, 207, 0, 2457, 2456, 1, 0, 0, 0, 2458, 2461, 1, 0, 0, 0, 2459, 2457, + 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 413, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2462, + 2464, 3, 254, 127, 0, 2463, 2462, 1, 0, 0, 0, 2464, 2467, 1, 0, 0, 0, 2465, 2463, 1, + 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2468, 1, 0, 0, 0, 2467, 2465, 1, 0, 0, 0, 2468, + 2469, 5, 80, 0, 0, 2469, 2470, 3, 388, 194, 0, 2470, 2471, 5, 81, 0, 0, 2471, 415, + 1, 0, 0, 0, 2472, 2473, 3, 58, 29, 0, 2473, 2474, 5, 80, 0, 0, 2474, 2475, 3, 388, 194, + 0, 2475, 2476, 5, 81, 0, 0, 2476, 2488, 1, 0, 0, 0, 2477, 2478, 3, 392, 196, 0, 2478, + 2479, 5, 80, 0, 0, 2479, 2480, 3, 388, 194, 0, 2480, 2481, 5, 81, 0, 0, 2481, 2488, + 1, 0, 0, 0, 2482, 2483, 3, 410, 205, 0, 2483, 2484, 5, 80, 0, 0, 2484, 2485, 3, 388, + 194, 0, 2485, 2486, 5, 81, 0, 0, 2486, 2488, 1, 0, 0, 0, 2487, 2472, 1, 0, 0, 0, 2487, + 2477, 1, 0, 0, 0, 2487, 2482, 1, 0, 0, 0, 2488, 417, 1, 0, 0, 0, 2489, 2490, 3, 390, + 195, 0, 2490, 2491, 5, 84, 0, 0, 2491, 2492, 5, 123, 0, 0, 2492, 2503, 1, 0, 0, 0, 2493, + 2494, 5, 57, 0, 0, 2494, 2495, 5, 84, 0, 0, 2495, 2503, 5, 123, 0, 0, 2496, 2497, 3, + 54, 27, 0, 2497, 2498, 5, 84, 0, 0, 2498, 2499, 5, 57, 0, 0, 2499, 2500, 5, 84, 0, 0, + 2500, 2501, 5, 123, 0, 0, 2501, 2503, 1, 0, 0, 0, 2502, 2489, 1, 0, 0, 0, 2502, 2493, + 1, 0, 0, 0, 2502, 2496, 1, 0, 0, 0, 2503, 419, 1, 0, 0, 0, 2504, 2505, 3, 60, 30, 0, 2505, + 2507, 5, 76, 0, 0, 2506, 2508, 3, 422, 211, 0, 2507, 2506, 1, 0, 0, 0, 2507, 2508, + 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 5, 77, 0, 0, 2510, 2573, 1, 0, 0, 0, 2511, + 2512, 3, 54, 27, 0, 2512, 2514, 5, 84, 0, 0, 2513, 2515, 3, 40, 20, 0, 2514, 2513, + 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2516, 1, 0, 0, 0, 2516, 2517, 5, 123, 0, 0, + 2517, 2519, 5, 76, 0, 0, 2518, 2520, 3, 422, 211, 0, 2519, 2518, 1, 0, 0, 0, 2519, + 2520, 1, 0, 0, 0, 2520, 2521, 1, 0, 0, 0, 2521, 2522, 5, 77, 0, 0, 2522, 2573, 1, 0, + 0, 0, 2523, 2524, 3, 58, 29, 0, 2524, 2526, 5, 84, 0, 0, 2525, 2527, 3, 40, 20, 0, 2526, + 2525, 1, 0, 0, 0, 2526, 2527, 1, 0, 0, 0, 2527, 2528, 1, 0, 0, 0, 2528, 2529, 5, 123, + 0, 0, 2529, 2531, 5, 76, 0, 0, 2530, 2532, 3, 422, 211, 0, 2531, 2530, 1, 0, 0, 0, 2531, + 2532, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 5, 77, 0, 0, 2534, 2573, 1, 0, + 0, 0, 2535, 2536, 3, 390, 195, 0, 2536, 2538, 5, 84, 0, 0, 2537, 2539, 3, 40, 20, 0, + 2538, 2537, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2541, + 5, 123, 0, 0, 2541, 2543, 5, 76, 0, 0, 2542, 2544, 3, 422, 211, 0, 2543, 2542, 1, 0, + 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2545, 1, 0, 0, 0, 2545, 2546, 5, 77, 0, 0, 2546, + 2573, 1, 0, 0, 0, 2547, 2548, 5, 57, 0, 0, 2548, 2550, 5, 84, 0, 0, 2549, 2551, 3, 40, + 20, 0, 2550, 2549, 1, 0, 0, 0, 2550, 2551, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, + 2553, 5, 123, 0, 0, 2553, 2555, 5, 76, 0, 0, 2554, 2556, 3, 422, 211, 0, 2555, 2554, + 1, 0, 0, 0, 2555, 2556, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 2573, 5, 77, 0, 0, 2558, + 2559, 3, 54, 27, 0, 2559, 2560, 5, 84, 0, 0, 2560, 2561, 5, 57, 0, 0, 2561, 2563, 5, + 84, 0, 0, 2562, 2564, 3, 40, 20, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, + 2565, 1, 0, 0, 0, 2565, 2566, 5, 123, 0, 0, 2566, 2568, 5, 76, 0, 0, 2567, 2569, 3, + 422, 211, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, + 2570, 2571, 5, 77, 0, 0, 2571, 2573, 1, 0, 0, 0, 2572, 2504, 1, 0, 0, 0, 2572, 2511, + 1, 0, 0, 0, 2572, 2523, 1, 0, 0, 0, 2572, 2535, 1, 0, 0, 0, 2572, 2547, 1, 0, 0, 0, 2572, + 2558, 1, 0, 0, 0, 2573, 421, 1, 0, 0, 0, 2574, 2579, 3, 388, 194, 0, 2575, 2576, 5, + 83, 0, 0, 2576, 2578, 3, 388, 194, 0, 2577, 2575, 1, 0, 0, 0, 2578, 2581, 1, 0, 0, 0, + 2579, 2577, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 423, 1, 0, 0, 0, 2581, 2579, 1, + 0, 0, 0, 2582, 2583, 3, 58, 29, 0, 2583, 2585, 5, 87, 0, 0, 2584, 2586, 3, 40, 20, 0, + 2585, 2584, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588, + 5, 123, 0, 0, 2588, 2630, 1, 0, 0, 0, 2589, 2590, 3, 390, 195, 0, 2590, 2592, 5, 87, + 0, 0, 2591, 2593, 3, 40, 20, 0, 2592, 2591, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, + 2594, 1, 0, 0, 0, 2594, 2595, 5, 123, 0, 0, 2595, 2630, 1, 0, 0, 0, 2596, 2597, 3, 16, + 8, 0, 2597, 2599, 5, 87, 0, 0, 2598, 2600, 3, 40, 20, 0, 2599, 2598, 1, 0, 0, 0, 2599, + 2600, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2602, 5, 123, 0, 0, 2602, 2630, 1, 0, + 0, 0, 2603, 2604, 5, 57, 0, 0, 2604, 2606, 5, 87, 0, 0, 2605, 2607, 3, 40, 20, 0, 2606, + 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2630, 5, 123, + 0, 0, 2609, 2610, 3, 54, 27, 0, 2610, 2611, 5, 84, 0, 0, 2611, 2612, 5, 57, 0, 0, 2612, + 2614, 5, 87, 0, 0, 2613, 2615, 3, 40, 20, 0, 2614, 2613, 1, 0, 0, 0, 2614, 2615, 1, + 0, 0, 0, 2615, 2616, 1, 0, 0, 0, 2616, 2617, 5, 123, 0, 0, 2617, 2630, 1, 0, 0, 0, 2618, + 2619, 3, 22, 11, 0, 2619, 2621, 5, 87, 0, 0, 2620, 2622, 3, 40, 20, 0, 2621, 2620, + 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2624, 5, 48, 0, 0, 2624, + 2630, 1, 0, 0, 0, 2625, 2626, 3, 28, 14, 0, 2626, 2627, 5, 87, 0, 0, 2627, 2628, 5, + 48, 0, 0, 2628, 2630, 1, 0, 0, 0, 2629, 2582, 1, 0, 0, 0, 2629, 2589, 1, 0, 0, 0, 2629, + 2596, 1, 0, 0, 0, 2629, 2603, 1, 0, 0, 0, 2629, 2609, 1, 0, 0, 0, 2629, 2618, 1, 0, 0, + 0, 2629, 2625, 1, 0, 0, 0, 2630, 425, 1, 0, 0, 0, 2631, 2633, 3, 390, 195, 0, 2632, + 2634, 3, 428, 214, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2640, 1, + 0, 0, 0, 2635, 2637, 3, 58, 29, 0, 2636, 2638, 3, 428, 214, 0, 2637, 2636, 1, 0, 0, + 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 1, 0, 0, 0, 2639, 2631, 1, 0, 0, 0, 2639, 2635, + 1, 0, 0, 0, 2640, 427, 1, 0, 0, 0, 2641, 2643, 5, 102, 0, 0, 2642, 2644, 3, 428, 214, + 0, 2643, 2642, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2650, 1, 0, 0, 0, 2645, 2647, + 5, 103, 0, 0, 2646, 2648, 3, 428, 214, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, + 0, 0, 2648, 2650, 1, 0, 0, 0, 2649, 2641, 1, 0, 0, 0, 2649, 2645, 1, 0, 0, 0, 2650, 429, + 1, 0, 0, 0, 2651, 2652, 3, 426, 213, 0, 2652, 2653, 5, 102, 0, 0, 2653, 431, 1, 0, 0, + 0, 2654, 2655, 3, 426, 213, 0, 2655, 2656, 5, 103, 0, 0, 2656, 433, 1, 0, 0, 0, 2657, + 2665, 3, 436, 218, 0, 2658, 2665, 3, 438, 219, 0, 2659, 2660, 5, 104, 0, 0, 2660, + 2665, 3, 434, 217, 0, 2661, 2662, 5, 105, 0, 0, 2662, 2665, 3, 434, 217, 0, 2663, + 2665, 3, 440, 220, 0, 2664, 2657, 1, 0, 0, 0, 2664, 2658, 1, 0, 0, 0, 2664, 2659, 1, + 0, 0, 0, 2664, 2661, 1, 0, 0, 0, 2664, 2663, 1, 0, 0, 0, 2665, 435, 1, 0, 0, 0, 2666, + 2667, 5, 102, 0, 0, 2667, 2668, 3, 434, 217, 0, 2668, 437, 1, 0, 0, 0, 2669, 2670, + 5, 103, 0, 0, 2670, 2671, 3, 434, 217, 0, 2671, 439, 1, 0, 0, 0, 2672, 2680, 3, 426, + 213, 0, 2673, 2674, 5, 92, 0, 0, 2674, 2680, 3, 434, 217, 0, 2675, 2676, 5, 91, 0, + 0, 2676, 2680, 3, 434, 217, 0, 2677, 2680, 3, 442, 221, 0, 2678, 2680, 3, 486, 243, + 0, 2679, 2672, 1, 0, 0, 0, 2679, 2673, 1, 0, 0, 0, 2679, 2675, 1, 0, 0, 0, 2679, 2677, + 1, 0, 0, 0, 2679, 2678, 1, 0, 0, 0, 2680, 441, 1, 0, 0, 0, 2681, 2682, 5, 76, 0, 0, 2682, + 2683, 3, 8, 4, 0, 2683, 2684, 5, 77, 0, 0, 2684, 2685, 3, 434, 217, 0, 2685, 2709, + 1, 0, 0, 0, 2686, 2687, 5, 76, 0, 0, 2687, 2691, 3, 16, 8, 0, 2688, 2690, 3, 38, 19, + 0, 2689, 2688, 1, 0, 0, 0, 2690, 2693, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2691, 2692, + 1, 0, 0, 0, 2692, 2694, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2694, 2695, 5, 77, 0, 0, 2695, + 2696, 3, 440, 220, 0, 2696, 2709, 1, 0, 0, 0, 2697, 2698, 5, 76, 0, 0, 2698, 2702, + 3, 16, 8, 0, 2699, 2701, 3, 38, 19, 0, 2700, 2699, 1, 0, 0, 0, 2701, 2704, 1, 0, 0, 0, + 2702, 2700, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 1, 0, 0, 0, 2704, 2702, + 1, 0, 0, 0, 2705, 2706, 5, 77, 0, 0, 2706, 2707, 3, 474, 237, 0, 2707, 2709, 1, 0, 0, + 0, 2708, 2681, 1, 0, 0, 0, 2708, 2686, 1, 0, 0, 0, 2708, 2697, 1, 0, 0, 0, 2709, 443, + 1, 0, 0, 0, 2710, 2711, 6, 222, -1, 0, 2711, 2712, 3, 434, 217, 0, 2712, 2724, 1, 0, + 0, 0, 2713, 2714, 10, 3, 0, 0, 2714, 2715, 5, 106, 0, 0, 2715, 2723, 3, 434, 217, 0, + 2716, 2717, 10, 2, 0, 0, 2717, 2718, 5, 107, 0, 0, 2718, 2723, 3, 434, 217, 0, 2719, + 2720, 10, 1, 0, 0, 2720, 2721, 5, 111, 0, 0, 2721, 2723, 3, 434, 217, 0, 2722, 2713, + 1, 0, 0, 0, 2722, 2716, 1, 0, 0, 0, 2722, 2719, 1, 0, 0, 0, 2723, 2726, 1, 0, 0, 0, 2724, + 2722, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 445, 1, 0, 0, 0, 2726, 2724, 1, 0, 0, + 0, 2727, 2728, 6, 223, -1, 0, 2728, 2729, 3, 444, 222, 0, 2729, 2738, 1, 0, 0, 0, 2730, + 2731, 10, 2, 0, 0, 2731, 2732, 5, 104, 0, 0, 2732, 2737, 3, 444, 222, 0, 2733, 2734, + 10, 1, 0, 0, 2734, 2735, 5, 105, 0, 0, 2735, 2737, 3, 444, 222, 0, 2736, 2730, 1, 0, + 0, 0, 2736, 2733, 1, 0, 0, 0, 2737, 2740, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2738, 2739, + 1, 0, 0, 0, 2739, 447, 1, 0, 0, 0, 2740, 2738, 1, 0, 0, 0, 2741, 2742, 6, 224, -1, 0, + 2742, 2743, 3, 446, 223, 0, 2743, 2759, 1, 0, 0, 0, 2744, 2745, 10, 3, 0, 0, 2745, + 2746, 5, 90, 0, 0, 2746, 2747, 5, 90, 0, 0, 2747, 2758, 3, 446, 223, 0, 2748, 2749, + 10, 2, 0, 0, 2749, 2750, 5, 89, 0, 0, 2750, 2751, 5, 89, 0, 0, 2751, 2758, 3, 446, 223, + 0, 2752, 2753, 10, 1, 0, 0, 2753, 2754, 5, 89, 0, 0, 2754, 2755, 5, 89, 0, 0, 2755, + 2756, 5, 89, 0, 0, 2756, 2758, 3, 446, 223, 0, 2757, 2744, 1, 0, 0, 0, 2757, 2748, + 1, 0, 0, 0, 2757, 2752, 1, 0, 0, 0, 2758, 2761, 1, 0, 0, 0, 2759, 2757, 1, 0, 0, 0, 2759, + 2760, 1, 0, 0, 0, 2760, 449, 1, 0, 0, 0, 2761, 2759, 1, 0, 0, 0, 2762, 2763, 6, 225, + -1, 0, 2763, 2764, 3, 448, 224, 0, 2764, 2785, 1, 0, 0, 0, 2765, 2766, 10, 5, 0, 0, + 2766, 2767, 5, 90, 0, 0, 2767, 2784, 3, 448, 224, 0, 2768, 2769, 10, 4, 0, 0, 2769, + 2770, 5, 89, 0, 0, 2770, 2784, 3, 448, 224, 0, 2771, 2772, 10, 3, 0, 0, 2772, 2773, + 5, 97, 0, 0, 2773, 2784, 3, 448, 224, 0, 2774, 2775, 10, 2, 0, 0, 2775, 2776, 5, 98, + 0, 0, 2776, 2784, 3, 448, 224, 0, 2777, 2778, 10, 1, 0, 0, 2778, 2781, 5, 43, 0, 0, + 2779, 2782, 3, 16, 8, 0, 2780, 2782, 3, 384, 192, 0, 2781, 2779, 1, 0, 0, 0, 2781, + 2780, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2765, 1, 0, 0, 0, 2783, 2768, 1, 0, 0, + 0, 2783, 2771, 1, 0, 0, 0, 2783, 2774, 1, 0, 0, 0, 2783, 2777, 1, 0, 0, 0, 2784, 2787, + 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 451, 1, 0, 0, 0, 2787, + 2785, 1, 0, 0, 0, 2788, 2789, 6, 226, -1, 0, 2789, 2790, 3, 450, 225, 0, 2790, 2799, + 1, 0, 0, 0, 2791, 2792, 10, 2, 0, 0, 2792, 2793, 5, 96, 0, 0, 2793, 2798, 3, 450, 225, + 0, 2794, 2795, 10, 1, 0, 0, 2795, 2796, 5, 99, 0, 0, 2796, 2798, 3, 450, 225, 0, 2797, + 2791, 1, 0, 0, 0, 2797, 2794, 1, 0, 0, 0, 2798, 2801, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, + 0, 2799, 2800, 1, 0, 0, 0, 2800, 453, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2802, 2803, + 6, 227, -1, 0, 2803, 2804, 3, 452, 226, 0, 2804, 2810, 1, 0, 0, 0, 2805, 2806, 10, + 1, 0, 0, 2806, 2807, 5, 108, 0, 0, 2807, 2809, 3, 452, 226, 0, 2808, 2805, 1, 0, 0, + 0, 2809, 2812, 1, 0, 0, 0, 2810, 2808, 1, 0, 0, 0, 2810, 2811, 1, 0, 0, 0, 2811, 455, + 1, 0, 0, 0, 2812, 2810, 1, 0, 0, 0, 2813, 2814, 6, 228, -1, 0, 2814, 2815, 3, 454, 227, + 0, 2815, 2821, 1, 0, 0, 0, 2816, 2817, 10, 1, 0, 0, 2817, 2818, 5, 110, 0, 0, 2818, + 2820, 3, 454, 227, 0, 2819, 2816, 1, 0, 0, 0, 2820, 2823, 1, 0, 0, 0, 2821, 2819, 1, + 0, 0, 0, 2821, 2822, 1, 0, 0, 0, 2822, 457, 1, 0, 0, 0, 2823, 2821, 1, 0, 0, 0, 2824, + 2825, 6, 229, -1, 0, 2825, 2826, 3, 456, 228, 0, 2826, 2832, 1, 0, 0, 0, 2827, 2828, + 10, 1, 0, 0, 2828, 2829, 5, 109, 0, 0, 2829, 2831, 3, 456, 228, 0, 2830, 2827, 1, 0, + 0, 0, 2831, 2834, 1, 0, 0, 0, 2832, 2830, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 459, + 1, 0, 0, 0, 2834, 2832, 1, 0, 0, 0, 2835, 2836, 6, 230, -1, 0, 2836, 2837, 3, 458, 229, + 0, 2837, 2843, 1, 0, 0, 0, 2838, 2839, 10, 1, 0, 0, 2839, 2840, 5, 100, 0, 0, 2840, + 2842, 3, 458, 229, 0, 2841, 2838, 1, 0, 0, 0, 2842, 2845, 1, 0, 0, 0, 2843, 2841, 1, + 0, 0, 0, 2843, 2844, 1, 0, 0, 0, 2844, 461, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846, + 2847, 6, 231, -1, 0, 2847, 2848, 3, 460, 230, 0, 2848, 2854, 1, 0, 0, 0, 2849, 2850, + 10, 1, 0, 0, 2850, 2851, 5, 101, 0, 0, 2851, 2853, 3, 460, 230, 0, 2852, 2849, 1, 0, + 0, 0, 2853, 2856, 1, 0, 0, 0, 2854, 2852, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 463, + 1, 0, 0, 0, 2856, 2854, 1, 0, 0, 0, 2857, 2871, 3, 462, 231, 0, 2858, 2859, 3, 462, + 231, 0, 2859, 2860, 5, 93, 0, 0, 2860, 2861, 3, 388, 194, 0, 2861, 2862, 5, 94, 0, + 0, 2862, 2863, 3, 464, 232, 0, 2863, 2871, 1, 0, 0, 0, 2864, 2865, 3, 462, 231, 0, + 2865, 2866, 5, 93, 0, 0, 2866, 2867, 3, 388, 194, 0, 2867, 2868, 5, 94, 0, 0, 2868, + 2869, 3, 474, 237, 0, 2869, 2871, 1, 0, 0, 0, 2870, 2857, 1, 0, 0, 0, 2870, 2858, 1, + 0, 0, 0, 2870, 2864, 1, 0, 0, 0, 2871, 465, 1, 0, 0, 0, 2872, 2875, 3, 464, 232, 0, 2873, + 2875, 3, 468, 234, 0, 2874, 2872, 1, 0, 0, 0, 2874, 2873, 1, 0, 0, 0, 2875, 467, 1, + 0, 0, 0, 2876, 2877, 3, 470, 235, 0, 2877, 2878, 3, 472, 236, 0, 2878, 2879, 3, 388, + 194, 0, 2879, 469, 1, 0, 0, 0, 2880, 2884, 3, 58, 29, 0, 2881, 2884, 3, 418, 209, 0, + 2882, 2884, 3, 416, 208, 0, 2883, 2880, 1, 0, 0, 0, 2883, 2881, 1, 0, 0, 0, 2883, 2882, + 1, 0, 0, 0, 2884, 471, 1, 0, 0, 0, 2885, 2886, 7, 5, 0, 0, 2886, 473, 1, 0, 0, 0, 2887, + 2888, 3, 476, 238, 0, 2888, 2889, 5, 95, 0, 0, 2889, 2890, 3, 484, 242, 0, 2890, 475, + 1, 0, 0, 0, 2891, 2893, 5, 76, 0, 0, 2892, 2894, 3, 478, 239, 0, 2893, 2892, 1, 0, 0, + 0, 2893, 2894, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 2898, 5, 77, 0, 0, 2896, 2898, + 5, 123, 0, 0, 2897, 2891, 1, 0, 0, 0, 2897, 2896, 1, 0, 0, 0, 2898, 477, 1, 0, 0, 0, 2899, + 2904, 3, 480, 240, 0, 2900, 2901, 5, 83, 0, 0, 2901, 2903, 3, 480, 240, 0, 2902, 2900, + 1, 0, 0, 0, 2903, 2906, 1, 0, 0, 0, 2904, 2902, 1, 0, 0, 0, 2904, 2905, 1, 0, 0, 0, 2905, + 2916, 1, 0, 0, 0, 2906, 2904, 1, 0, 0, 0, 2907, 2912, 5, 123, 0, 0, 2908, 2909, 5, 83, + 0, 0, 2909, 2911, 5, 123, 0, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912, + 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2916, 1, 0, 0, 0, 2914, 2912, 1, 0, 0, + 0, 2915, 2899, 1, 0, 0, 0, 2915, 2907, 1, 0, 0, 0, 2916, 479, 1, 0, 0, 0, 2917, 2919, + 3, 164, 82, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2922, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0, + 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2920, 1, 0, 0, 0, 2923, 2924, + 3, 482, 241, 0, 2924, 2925, 3, 124, 62, 0, 2925, 2928, 1, 0, 0, 0, 2926, 2928, 3, 162, + 81, 0, 2927, 2920, 1, 0, 0, 0, 2927, 2926, 1, 0, 0, 0, 2928, 481, 1, 0, 0, 0, 2929, 2932, + 3, 128, 64, 0, 2930, 2932, 5, 15, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2930, 1, 0, 0, + 0, 2932, 483, 1, 0, 0, 0, 2933, 2936, 3, 388, 194, 0, 2934, 2936, 3, 276, 138, 0, 2935, + 2933, 1, 0, 0, 0, 2935, 2934, 1, 0, 0, 0, 2936, 485, 1, 0, 0, 0, 2937, 2938, 5, 58, 0, + 0, 2938, 2939, 5, 76, 0, 0, 2939, 2940, 3, 388, 194, 0, 2940, 2941, 5, 77, 0, 0, 2941, + 2942, 3, 316, 158, 0, 2942, 487, 1, 0, 0, 0, 2943, 2944, 3, 388, 194, 0, 2944, 489, + 1, 0, 0, 0, 360, 502, 507, 511, 520, 526, 531, 534, 539, 544, 549, 552, 557, 562, + 569, 574, 581, 586, 588, 595, 609, 614, 622, 629, 635, 640, 650, 653, 667, 672, + 677, 682, 688, 693, 698, 703, 708, 713, 722, 726, 729, 734, 740, 746, 754, 763, + 774, 803, 808, 812, 820, 827, 836, 850, 853, 865, 868, 884, 889, 896, 901, 907, + 910, 913, 916, 930, 941, 955, 964, 971, 980, 987, 992, 1007, 1014, 1020, 1024, + 1028, 1032, 1036, 1041, 1048, 1051, 1055, 1058, 1064, 1069, 1072, 1076, 1080, + 1086, 1091, 1093, 1102, 1109, 1125, 1131, 1134, 1139, 1143, 1150, 1153, 1157, + 1162, 1168, 1177, 1183, 1190, 1195, 1202, 1210, 1220, 1225, 1229, 1239, 1244, + 1252, 1255, 1262, 1265, 1273, 1276, 1281, 1286, 1292, 1296, 1301, 1306, 1311, + 1317, 1323, 1326, 1329, 1338, 1344, 1350, 1353, 1356, 1364, 1370, 1376, 1380, + 1386, 1395, 1401, 1408, 1413, 1420, 1432, 1439, 1444, 1452, 1457, 1463, 1466, + 1469, 1482, 1493, 1500, 1510, 1515, 1526, 1531, 1544, 1549, 1561, 1571, 1576, + 1584, 1587, 1594, 1602, 1608, 1617, 1627, 1631, 1634, 1643, 1657, 1660, 1669, + 1674, 1682, 1688, 1692, 1697, 1702, 1706, 1717, 1724, 1739, 1761, 1789, 1804, + 1813, 1821, 1825, 1834, 1843, 1854, 1858, 1884, 1888, 1893, 1897, 1901, 1909, + 1913, 1917, 1924, 1933, 1954, 1960, 1966, 1991, 1996, 2002, 2014, 2025, 2035, + 2038, 2043, 2052, 2057, 2061, 2073, 2077, 2081, 2085, 2089, 2095, 2101, 2105, + 2111, 2117, 2123, 2129, 2137, 2144, 2151, 2156, 2160, 2165, 2170, 2174, 2179, + 2184, 2188, 2193, 2198, 2202, 2207, 2212, 2216, 2223, 2228, 2232, 2237, 2241, + 2246, 2250, 2255, 2259, 2264, 2268, 2275, 2279, 2284, 2288, 2294, 2296, 2301, + 2306, 2312, 2316, 2321, 2325, 2329, 2333, 2335, 2342, 2353, 2364, 2372, 2383, + 2387, 2392, 2396, 2401, 2409, 2415, 2419, 2423, 2427, 2433, 2439, 2441, 2453, + 2459, 2465, 2487, 2502, 2507, 2514, 2519, 2526, 2531, 2538, 2543, 2550, 2555, + 2563, 2568, 2572, 2579, 2585, 2592, 2599, 2606, 2614, 2621, 2629, 2633, 2637, + 2639, 2643, 2647, 2649, 2664, 2679, 2691, 2702, 2708, 2722, 2724, 2736, 2738, + 2757, 2759, 2781, 2783, 2785, 2797, 2799, 2810, 2821, 2832, 2843, 2854, 2870, + 2874, 2883, 2893, 2897, 2904, 2912, 2915, 2920, 2927, 2931, 2935 + ] + + +class Java20Parser(Parser): + grammarFileName = "Java20Parser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] + + sharedContextCache = PredictionContextCache() + + literalNames = ["", "'exports'", "'module'", "'non-sealed'", + "'<>'", "'open'", "'opens'", "'permits'", "'provides'", + "'record'", "'requires'", "'sealed'", "'to'", "'transitive'", + "'uses'", "'var'", "'with'", "'yield'", "'abstract'", + "'assert'", "'boolean'", "'break'", "'byte'", "'case'", + "'catch'", "'char'", "'class'", "'const'", "'continue'", + "'default'", "'do'", "'double'", "'else'", "'enum'", + "'extends'", "'final'", "'finally'", "'float'", "'for'", + "'if'", "'goto'", "'implements'", "'import'", "'instanceof'", + "'int'", "'interface'", "'long'", "'native'", "'new'", + "'package'", "'private'", "'protected'", "'public'", + "'return'", "'short'", "'static'", "'strictfp'", "'super'", + "'switch'", "'synchronized'", "'this'", "'throw'", + "'throws'", "'transient'", "'try'", "'void'", "'volatile'", + "'while'", "'_'", "", "", "", + "", "", "", "'null'", "'('", + "')'", "'{'", "'}'", "'['", "']'", "';'", "','", "'.'", + "'...'", "'@'", "'::'", "'='", "'>'", "'<'", "'!'", + "'~'", "'?'", "':'", "'->'", "'=='", "'<='", "'>='", + "'!='", "'&&'", "'||'", "'++'", "'--'", "'+'", "'-'", + "'*'", "'/'", "'&'", "'|'", "'^'", "'%'", "'+='", "'-='", + "'*='", "'/='", "'&='", "'|='", "'^='", "'%='", "'<<='", + "'>>='", "'>>>='"] + + symbolicNames = ["", "EXPORTS", "MODULE", "NONSEALED", "OACA", + "OPEN", "OPENS", "PERMITS", "PROVIDES", "RECORD", + "REQUIRES", "SEALED", "TO", "TRANSITIVE", "USES", + "VAR", "WITH", "YIELD", "ABSTRACT", "ASSERT", "BOOLEAN", + "BREAK", "BYTE", "CASE", "CATCH", "CHAR", "CLASS", + "CONST", "CONTINUE", "DEFAULT", "DO", "DOUBLE", "ELSE", + "ENUM", "EXTENDS", "FINAL", "FINALLY", "FLOAT", "FOR", + "IF", "GOTO", "IMPLEMENTS", "IMPORT", "INSTANCEOF", + "INT", "INTERFACE", "LONG", "NATIVE", "NEW", "PACKAGE", + "PRIVATE", "PROTECTED", "PUBLIC", "RETURN", "SHORT", + "STATIC", "STRICTFP", "SUPER", "SWITCH", "SYNCHRONIZED", + "THIS", "THROW", "THROWS", "TRANSIENT", "TRY", "VOID", + "VOLATILE", "WHILE", "UNDER_SCORE", "IntegerLiteral", + "FloatingPointLiteral", "BooleanLiteral", "CharacterLiteral", + "StringLiteral", "TextBlock", "NullLiteral", "LPAREN", + "RPAREN", "LBRACE", "RBRACE", "LBRACK", "RBRACK", + "SEMI", "COMMA", "DOT", "ELLIPSIS", "AT", "COLONCOLON", + "ASSIGN", "GT", "LT", "BANG", "TILDE", "QUESTION", + "COLON", "ARROW", "EQUAL", "LE", "GE", "NOTEQUAL", + "AND", "OR", "INC", "DEC", "ADD", "SUB", "MUL", "DIV", + "BITAND", "BITOR", "CARET", "MOD", "ADD_ASSIGN", "SUB_ASSIGN", + "MUL_ASSIGN", "DIV_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", + "XOR_ASSIGN", "MOD_ASSIGN", "LSHIFT_ASSIGN", "RSHIFT_ASSIGN", + "URSHIFT_ASSIGN", "Identifier", "WS", "COMMENT", "LINE_COMMENT"] + + RULE_start_ = 0 + RULE_literal = 1 + RULE_typeIdentifier = 2 + RULE_unqualifiedMethodIdentifier = 3 + RULE_primitiveType = 4 + RULE_numericType = 5 + RULE_integralType = 6 + RULE_floatingPointType = 7 + RULE_referenceType = 8 + RULE_coit = 9 + RULE_classOrInterfaceType = 10 + RULE_classType = 11 + RULE_interfaceType = 12 + RULE_typeVariable = 13 + RULE_arrayType = 14 + RULE_dims = 15 + RULE_typeParameter = 16 + RULE_typeParameterModifier = 17 + RULE_typeBound = 18 + RULE_additionalBound = 19 + RULE_typeArguments = 20 + RULE_typeArgumentList = 21 + RULE_typeArgument = 22 + RULE_wildcard = 23 + RULE_wildcardBounds = 24 + RULE_moduleName = 25 + RULE_packageName = 26 + RULE_typeName = 27 + RULE_packageOrTypeName = 28 + RULE_expressionName = 29 + RULE_methodName = 30 + RULE_ambiguousName = 31 + RULE_compilationUnit = 32 + RULE_ordinaryCompilationUnit = 33 + RULE_modularCompilationUnit = 34 + RULE_packageDeclaration = 35 + RULE_packageModifier = 36 + RULE_importDeclaration = 37 + RULE_singleTypeImportDeclaration = 38 + RULE_typeImportOnDemandDeclaration = 39 + RULE_singleStaticImportDeclaration = 40 + RULE_staticImportOnDemandDeclaration = 41 + RULE_topLevelClassOrInterfaceDeclaration = 42 + RULE_moduleDeclaration = 43 + RULE_moduleDirective = 44 + RULE_requiresModifier = 45 + RULE_classDeclaration = 46 + RULE_normalClassDeclaration = 47 + RULE_classModifier = 48 + RULE_typeParameters = 49 + RULE_typeParameterList = 50 + RULE_classExtends = 51 + RULE_classImplements = 52 + RULE_interfaceTypeList = 53 + RULE_classPermits = 54 + RULE_classBody = 55 + RULE_classBodyDeclaration = 56 + RULE_classMemberDeclaration = 57 + RULE_fieldDeclaration = 58 + RULE_fieldModifier = 59 + RULE_variableDeclaratorList = 60 + RULE_variableDeclarator = 61 + RULE_variableDeclaratorId = 62 + RULE_variableInitializer = 63 + RULE_unannType = 64 + RULE_unannPrimitiveType = 65 + RULE_unannReferenceType = 66 + RULE_unannClassOrInterfaceType = 67 + RULE_uCOIT = 68 + RULE_unannClassType = 69 + RULE_unannInterfaceType = 70 + RULE_unannTypeVariable = 71 + RULE_unannArrayType = 72 + RULE_methodDeclaration = 73 + RULE_methodModifier = 74 + RULE_methodHeader = 75 + RULE_result = 76 + RULE_methodDeclarator = 77 + RULE_receiverParameter = 78 + RULE_formalParameterList = 79 + RULE_formalParameter = 80 + RULE_variableArityParameter = 81 + RULE_variableModifier = 82 + RULE_throwsT = 83 + RULE_exceptionTypeList = 84 + RULE_exceptionType = 85 + RULE_methodBody = 86 + RULE_instanceInitializer = 87 + RULE_staticInitializer = 88 + RULE_constructorDeclaration = 89 + RULE_constructorModifier = 90 + RULE_constructorDeclarator = 91 + RULE_simpleTypeName = 92 + RULE_constructorBody = 93 + RULE_explicitConstructorInvocation = 94 + RULE_enumDeclaration = 95 + RULE_enumBody = 96 + RULE_enumConstantList = 97 + RULE_enumConstant = 98 + RULE_enumConstantModifier = 99 + RULE_enumBodyDeclarations = 100 + RULE_recordDeclaration = 101 + RULE_recordHeader = 102 + RULE_recordComponentList = 103 + RULE_recordComponent = 104 + RULE_variableArityRecordComponent = 105 + RULE_recordComponentModifier = 106 + RULE_recordBody = 107 + RULE_recordBodyDeclaration = 108 + RULE_compactConstructorDeclaration = 109 + RULE_interfaceDeclaration = 110 + RULE_normalInterfaceDeclaration = 111 + RULE_interfaceModifier = 112 + RULE_interfaceExtends = 113 + RULE_interfacePermits = 114 + RULE_interfaceBody = 115 + RULE_interfaceMemberDeclaration = 116 + RULE_constantDeclaration = 117 + RULE_constantModifier = 118 + RULE_interfaceMethodDeclaration = 119 + RULE_interfaceMethodModifier = 120 + RULE_annotationInterfaceDeclaration = 121 + RULE_annotationInterfaceBody = 122 + RULE_annotationInterfaceMemberDeclaration = 123 + RULE_annotationInterfaceElementDeclaration = 124 + RULE_annotationInterfaceElementModifier = 125 + RULE_defaultValue = 126 + RULE_annotation = 127 + RULE_normalAnnotation = 128 + RULE_elementValuePairList = 129 + RULE_elementValuePair = 130 + RULE_elementValue = 131 + RULE_elementValueArrayInitializer = 132 + RULE_elementValueList = 133 + RULE_markerAnnotation = 134 + RULE_singleElementAnnotation = 135 + RULE_arrayInitializer = 136 + RULE_variableInitializerList = 137 + RULE_block = 138 + RULE_blockStatements = 139 + RULE_blockStatement = 140 + RULE_localClassOrInterfaceDeclaration = 141 + RULE_localVariableDeclaration = 142 + RULE_localVariableType = 143 + RULE_localVariableDeclarationStatement = 144 + RULE_statement = 145 + RULE_statementNoShortIf = 146 + RULE_statementWithoutTrailingSubstatement = 147 + RULE_emptyStatement_ = 148 + RULE_labeledStatement = 149 + RULE_labeledStatementNoShortIf = 150 + RULE_expressionStatement = 151 + RULE_statementExpression = 152 + RULE_ifThenStatement = 153 + RULE_ifThenElseStatement = 154 + RULE_ifThenElseStatementNoShortIf = 155 + RULE_assertStatement = 156 + RULE_switchStatement = 157 + RULE_switchBlock = 158 + RULE_switchRule = 159 + RULE_switchBlockStatementGroup = 160 + RULE_switchLabel = 161 + RULE_caseConstant = 162 + RULE_whileStatement = 163 + RULE_whileStatementNoShortIf = 164 + RULE_doStatement = 165 + RULE_forStatement = 166 + RULE_forStatementNoShortIf = 167 + RULE_basicForStatement = 168 + RULE_basicForStatementNoShortIf = 169 + RULE_forInit = 170 + RULE_forUpdate = 171 + RULE_statementExpressionList = 172 + RULE_enhancedForStatement = 173 + RULE_enhancedForStatementNoShortIf = 174 + RULE_breakStatement = 175 + RULE_continueStatement = 176 + RULE_returnStatement = 177 + RULE_throwStatement = 178 + RULE_synchronizedStatement = 179 + RULE_tryStatement = 180 + RULE_catches = 181 + RULE_catchClause = 182 + RULE_catchFormalParameter = 183 + RULE_catchType = 184 + RULE_finallyBlock = 185 + RULE_tryWithResourcesStatement = 186 + RULE_resourceSpecification = 187 + RULE_resourceList = 188 + RULE_resource = 189 + RULE_variableAccess = 190 + RULE_yieldStatement = 191 + RULE_pattern = 192 + RULE_typePattern = 193 + RULE_expression = 194 + RULE_primary = 195 + RULE_primaryNoNewArray = 196 + RULE_pNNA = 197 + RULE_classLiteral = 198 + RULE_classInstanceCreationExpression = 199 + RULE_unqualifiedClassInstanceCreationExpression = 200 + RULE_classOrInterfaceTypeToInstantiate = 201 + RULE_typeArgumentsOrDiamond = 202 + RULE_arrayCreationExpression = 203 + RULE_arrayCreationExpressionWithoutInitializer = 204 + RULE_arrayCreationExpressionWithInitializer = 205 + RULE_dimExprs = 206 + RULE_dimExpr = 207 + RULE_arrayAccess = 208 + RULE_fieldAccess = 209 + RULE_methodInvocation = 210 + RULE_argumentList = 211 + RULE_methodReference = 212 + RULE_postfixExpression = 213 + RULE_pfE = 214 + RULE_postIncrementExpression = 215 + RULE_postDecrementExpression = 216 + RULE_unaryExpression = 217 + RULE_preIncrementExpression = 218 + RULE_preDecrementExpression = 219 + RULE_unaryExpressionNotPlusMinus = 220 + RULE_castExpression = 221 + RULE_multiplicativeExpression = 222 + RULE_additiveExpression = 223 + RULE_shiftExpression = 224 + RULE_relationalExpression = 225 + RULE_equalityExpression = 226 + RULE_andExpression = 227 + RULE_exclusiveOrExpression = 228 + RULE_inclusiveOrExpression = 229 + RULE_conditionalAndExpression = 230 + RULE_conditionalOrExpression = 231 + RULE_conditionalExpression = 232 + RULE_assignmentExpression = 233 + RULE_assignment = 234 + RULE_leftHandSide = 235 + RULE_assignmentOperator = 236 + RULE_lambdaExpression = 237 + RULE_lambdaParameters = 238 + RULE_lambdaParameterList = 239 + RULE_lambdaParameter = 240 + RULE_lambdaParameterType = 241 + RULE_lambdaBody = 242 + RULE_switchExpression = 243 + RULE_constantExpression = 244 + + ruleNames = ["start_", "literal", "typeIdentifier", "unqualifiedMethodIdentifier", + "primitiveType", "numericType", "integralType", "floatingPointType", + "referenceType", "coit", "classOrInterfaceType", "classType", + "interfaceType", "typeVariable", "arrayType", "dims", + "typeParameter", "typeParameterModifier", "typeBound", + "additionalBound", "typeArguments", "typeArgumentList", + "typeArgument", "wildcard", "wildcardBounds", "moduleName", + "packageName", "typeName", "packageOrTypeName", "expressionName", + "methodName", "ambiguousName", "compilationUnit", "ordinaryCompilationUnit", + "modularCompilationUnit", "packageDeclaration", "packageModifier", + "importDeclaration", "singleTypeImportDeclaration", "typeImportOnDemandDeclaration", + "singleStaticImportDeclaration", "staticImportOnDemandDeclaration", + "topLevelClassOrInterfaceDeclaration", "moduleDeclaration", + "moduleDirective", "requiresModifier", "classDeclaration", + "normalClassDeclaration", "classModifier", "typeParameters", + "typeParameterList", "classExtends", "classImplements", + "interfaceTypeList", "classPermits", "classBody", "classBodyDeclaration", + "classMemberDeclaration", "fieldDeclaration", "fieldModifier", + "variableDeclaratorList", "variableDeclarator", "variableDeclaratorId", + "variableInitializer", "unannType", "unannPrimitiveType", + "unannReferenceType", "unannClassOrInterfaceType", "uCOIT", + "unannClassType", "unannInterfaceType", "unannTypeVariable", + "unannArrayType", "methodDeclaration", "methodModifier", + "methodHeader", "result", "methodDeclarator", "receiverParameter", + "formalParameterList", "formalParameter", "variableArityParameter", + "variableModifier", "throwsT", "exceptionTypeList", "exceptionType", + "methodBody", "instanceInitializer", "staticInitializer", + "constructorDeclaration", "constructorModifier", "constructorDeclarator", + "simpleTypeName", "constructorBody", "explicitConstructorInvocation", + "enumDeclaration", "enumBody", "enumConstantList", "enumConstant", + "enumConstantModifier", "enumBodyDeclarations", "recordDeclaration", + "recordHeader", "recordComponentList", "recordComponent", + "variableArityRecordComponent", "recordComponentModifier", + "recordBody", "recordBodyDeclaration", "compactConstructorDeclaration", + "interfaceDeclaration", "normalInterfaceDeclaration", + "interfaceModifier", "interfaceExtends", "interfacePermits", + "interfaceBody", "interfaceMemberDeclaration", "constantDeclaration", + "constantModifier", "interfaceMethodDeclaration", "interfaceMethodModifier", + "annotationInterfaceDeclaration", "annotationInterfaceBody", + "annotationInterfaceMemberDeclaration", "annotationInterfaceElementDeclaration", + "annotationInterfaceElementModifier", "defaultValue", + "annotation", "normalAnnotation", "elementValuePairList", + "elementValuePair", "elementValue", "elementValueArrayInitializer", + "elementValueList", "markerAnnotation", "singleElementAnnotation", + "arrayInitializer", "variableInitializerList", "block", + "blockStatements", "blockStatement", "localClassOrInterfaceDeclaration", + "localVariableDeclaration", "localVariableType", "localVariableDeclarationStatement", + "statement", "statementNoShortIf", "statementWithoutTrailingSubstatement", + "emptyStatement_", "labeledStatement", "labeledStatementNoShortIf", + "expressionStatement", "statementExpression", "ifThenStatement", + "ifThenElseStatement", "ifThenElseStatementNoShortIf", + "assertStatement", "switchStatement", "switchBlock", + "switchRule", "switchBlockStatementGroup", "switchLabel", + "caseConstant", "whileStatement", "whileStatementNoShortIf", + "doStatement", "forStatement", "forStatementNoShortIf", + "basicForStatement", "basicForStatementNoShortIf", "forInit", + "forUpdate", "statementExpressionList", "enhancedForStatement", + "enhancedForStatementNoShortIf", "breakStatement", "continueStatement", + "returnStatement", "throwStatement", "synchronizedStatement", + "tryStatement", "catches", "catchClause", "catchFormalParameter", + "catchType", "finallyBlock", "tryWithResourcesStatement", + "resourceSpecification", "resourceList", "resource", + "variableAccess", "yieldStatement", "pattern", "typePattern", + "expression", "primary", "primaryNoNewArray", "pNNA", + "classLiteral", "classInstanceCreationExpression", "unqualifiedClassInstanceCreationExpression", + "classOrInterfaceTypeToInstantiate", "typeArgumentsOrDiamond", + "arrayCreationExpression", "arrayCreationExpressionWithoutInitializer", + "arrayCreationExpressionWithInitializer", "dimExprs", + "dimExpr", "arrayAccess", "fieldAccess", "methodInvocation", + "argumentList", "methodReference", "postfixExpression", + "pfE", "postIncrementExpression", "postDecrementExpression", + "unaryExpression", "preIncrementExpression", "preDecrementExpression", + "unaryExpressionNotPlusMinus", "castExpression", "multiplicativeExpression", + "additiveExpression", "shiftExpression", "relationalExpression", + "equalityExpression", "andExpression", "exclusiveOrExpression", + "inclusiveOrExpression", "conditionalAndExpression", + "conditionalOrExpression", "conditionalExpression", "assignmentExpression", + "assignment", "leftHandSide", "assignmentOperator", "lambdaExpression", + "lambdaParameters", "lambdaParameterList", "lambdaParameter", + "lambdaParameterType", "lambdaBody", "switchExpression", + "constantExpression"] + + EOF = Token.EOF + EXPORTS = 1 + MODULE = 2 + NONSEALED = 3 + OACA = 4 + OPEN = 5 + OPENS = 6 + PERMITS = 7 + PROVIDES = 8 + RECORD = 9 + REQUIRES = 10 + SEALED = 11 + TO = 12 + TRANSITIVE = 13 + USES = 14 + VAR = 15 + WITH = 16 + YIELD = 17 + ABSTRACT = 18 + ASSERT = 19 + BOOLEAN = 20 + BREAK = 21 + BYTE = 22 + CASE = 23 + CATCH = 24 + CHAR = 25 + CLASS = 26 + CONST = 27 + CONTINUE = 28 + DEFAULT = 29 + DO = 30 + DOUBLE = 31 + ELSE = 32 + ENUM = 33 + EXTENDS = 34 + FINAL = 35 + FINALLY = 36 + FLOAT = 37 + FOR = 38 + IF = 39 + GOTO = 40 + IMPLEMENTS = 41 + IMPORT = 42 + INSTANCEOF = 43 + INT = 44 + INTERFACE = 45 + LONG = 46 + NATIVE = 47 + NEW = 48 + PACKAGE = 49 + PRIVATE = 50 + PROTECTED = 51 + PUBLIC = 52 + RETURN = 53 + SHORT = 54 + STATIC = 55 + STRICTFP = 56 + SUPER = 57 + SWITCH = 58 + SYNCHRONIZED = 59 + THIS = 60 + THROW = 61 + THROWS = 62 + TRANSIENT = 63 + TRY = 64 + VOID = 65 + VOLATILE = 66 + WHILE = 67 + UNDER_SCORE = 68 + IntegerLiteral = 69 + FloatingPointLiteral = 70 + BooleanLiteral = 71 + CharacterLiteral = 72 + StringLiteral = 73 + TextBlock = 74 + NullLiteral = 75 + LPAREN = 76 + RPAREN = 77 + LBRACE = 78 + RBRACE = 79 + LBRACK = 80 + RBRACK = 81 + SEMI = 82 + COMMA = 83 + DOT = 84 + ELLIPSIS = 85 + AT = 86 + COLONCOLON = 87 + ASSIGN = 88 + GT = 89 + LT = 90 + BANG = 91 + TILDE = 92 + QUESTION = 93 + COLON = 94 + ARROW = 95 + EQUAL = 96 + LE = 97 + GE = 98 + NOTEQUAL = 99 + AND = 100 + OR = 101 + INC = 102 + DEC = 103 + ADD = 104 + SUB = 105 + MUL = 106 + DIV = 107 + BITAND = 108 + BITOR = 109 + CARET = 110 + MOD = 111 + ADD_ASSIGN = 112 + SUB_ASSIGN = 113 + MUL_ASSIGN = 114 + DIV_ASSIGN = 115 + AND_ASSIGN = 116 + OR_ASSIGN = 117 + XOR_ASSIGN = 118 + MOD_ASSIGN = 119 + LSHIFT_ASSIGN = 120 + RSHIFT_ASSIGN = 121 + URSHIFT_ASSIGN = 122 + Identifier = 123 + WS = 124 + COMMENT = 125 + LINE_COMMENT = 126 + + def __init__(self, input: TokenStream, output: TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + class Start_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def compilationUnit(self): + return self.getTypedRuleContext(Java20Parser.CompilationUnitContext, 0) + + def EOF(self): + return self.getToken(Java20Parser.EOF, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_start_ + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStart_"): + listener.enterStart_(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStart_"): + listener.exitStart_(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStart_"): + return visitor.visitStart_(self) + else: + return visitor.visitChildren(self) + + def start_(self): + + localctx = Java20Parser.Start_Context(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_start_) + try: + self.enterOuterAlt(localctx, 1) + self.state = 490 + self.compilationUnit() + self.state = 491 + self.match(Java20Parser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IntegerLiteral(self): + return self.getToken(Java20Parser.IntegerLiteral, 0) + + def FloatingPointLiteral(self): + return self.getToken(Java20Parser.FloatingPointLiteral, 0) + + def BooleanLiteral(self): + return self.getToken(Java20Parser.BooleanLiteral, 0) + + def CharacterLiteral(self): + return self.getToken(Java20Parser.CharacterLiteral, 0) + + def StringLiteral(self): + return self.getToken(Java20Parser.StringLiteral, 0) + + def TextBlock(self): + return self.getToken(Java20Parser.TextBlock, 0) + + def NullLiteral(self): + return self.getToken(Java20Parser.NullLiteral, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_literal + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLiteral"): + listener.enterLiteral(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLiteral"): + listener.exitLiteral(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLiteral"): + return visitor.visitLiteral(self) + else: + return visitor.visitChildren(self) + + def literal(self): + + localctx = Java20Parser.LiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_literal) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 493 + _la = self._input.LA(1) + if not (((((_la - 69)) & ~0x3f) == 0 and ((1 << (_la - 69)) & 127) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeIdentifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeIdentifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeIdentifier"): + listener.enterTypeIdentifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeIdentifier"): + listener.exitTypeIdentifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeIdentifier"): + return visitor.visitTypeIdentifier(self) + else: + return visitor.visitChildren(self) + + def typeIdentifier(self): + + localctx = Java20Parser.TypeIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_typeIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 495 + self.match(Java20Parser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnqualifiedMethodIdentifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unqualifiedMethodIdentifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnqualifiedMethodIdentifier"): + listener.enterUnqualifiedMethodIdentifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnqualifiedMethodIdentifier"): + listener.exitUnqualifiedMethodIdentifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnqualifiedMethodIdentifier"): + return visitor.visitUnqualifiedMethodIdentifier(self) + else: + return visitor.visitChildren(self) + + def unqualifiedMethodIdentifier(self): + + localctx = Java20Parser.UnqualifiedMethodIdentifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_unqualifiedMethodIdentifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 497 + self.match(Java20Parser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PrimitiveTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def numericType(self): + return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0) + + def BOOLEAN(self): + return self.getToken(Java20Parser.BOOLEAN, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_primitiveType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPrimitiveType"): + listener.enterPrimitiveType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPrimitiveType"): + listener.exitPrimitiveType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPrimitiveType"): + return visitor.visitPrimitiveType(self) + else: + return visitor.visitChildren(self) + + def primitiveType(self): + + localctx = Java20Parser.PrimitiveTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_primitiveType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 502 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 499 + self.annotation() + self.state = 504 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 507 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [22, 25, 31, 37, 44, 46, 54]: + self.state = 505 + self.numericType() + pass + elif token in [20]: + self.state = 506 + self.match(Java20Parser.BOOLEAN) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NumericTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def integralType(self): + return self.getTypedRuleContext(Java20Parser.IntegralTypeContext, 0) + + def floatingPointType(self): + return self.getTypedRuleContext(Java20Parser.FloatingPointTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_numericType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNumericType"): + listener.enterNumericType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNumericType"): + listener.exitNumericType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNumericType"): + return visitor.visitNumericType(self) + else: + return visitor.visitChildren(self) + + def numericType(self): + + localctx = Java20Parser.NumericTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_numericType) + try: + self.state = 511 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [22, 25, 44, 46, 54]: + self.enterOuterAlt(localctx, 1) + self.state = 509 + self.integralType() + pass + elif token in [31, 37]: + self.enterOuterAlt(localctx, 2) + self.state = 510 + self.floatingPointType() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IntegralTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def BYTE(self): + return self.getToken(Java20Parser.BYTE, 0) + + def SHORT(self): + return self.getToken(Java20Parser.SHORT, 0) + + def INT(self): + return self.getToken(Java20Parser.INT, 0) + + def LONG(self): + return self.getToken(Java20Parser.LONG, 0) + + def CHAR(self): + return self.getToken(Java20Parser.CHAR, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_integralType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterIntegralType"): + listener.enterIntegralType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitIntegralType"): + listener.exitIntegralType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIntegralType"): + return visitor.visitIntegralType(self) + else: + return visitor.visitChildren(self) + + def integralType(self): + + localctx = Java20Parser.IntegralTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_integralType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 513 + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 18102359477452800) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FloatingPointTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FLOAT(self): + return self.getToken(Java20Parser.FLOAT, 0) + + def DOUBLE(self): + return self.getToken(Java20Parser.DOUBLE, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_floatingPointType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFloatingPointType"): + listener.enterFloatingPointType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFloatingPointType"): + listener.exitFloatingPointType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFloatingPointType"): + return visitor.visitFloatingPointType(self) + else: + return visitor.visitChildren(self) + + def floatingPointType(self): + + localctx = Java20Parser.FloatingPointTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_floatingPointType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 515 + _la = self._input.LA(1) + if not (_la == 31 or _la == 37): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ReferenceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0) + + def typeVariable(self): + return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0) + + def arrayType(self): + return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_referenceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterReferenceType"): + listener.enterReferenceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitReferenceType"): + listener.exitReferenceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitReferenceType"): + return visitor.visitReferenceType(self) + else: + return visitor.visitChildren(self) + + def referenceType(self): + + localctx = Java20Parser.ReferenceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_referenceType) + try: + self.state = 520 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 3, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 517 + self.classOrInterfaceType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 518 + self.typeVariable() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 519 + self.arrayType() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CoitContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def coit(self): + return self.getTypedRuleContext(Java20Parser.CoitContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_coit + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCoit"): + listener.enterCoit(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCoit"): + listener.exitCoit(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCoit"): + return visitor.visitCoit(self) + else: + return visitor.visitChildren(self) + + def coit(self): + + localctx = Java20Parser.CoitContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_coit) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 522 + self.match(Java20Parser.DOT) + self.state = 526 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 523 + self.annotation() + self.state = 528 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 529 + self.typeIdentifier() + self.state = 531 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 5, self._ctx) + if la_ == 1: + self.state = 530 + self.typeArguments() + + self.state = 534 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 6, self._ctx) + if la_ == 1: + self.state = 533 + self.coit() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def coit(self): + return self.getTypedRuleContext(Java20Parser.CoitContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classOrInterfaceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassOrInterfaceType"): + listener.enterClassOrInterfaceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassOrInterfaceType"): + listener.exitClassOrInterfaceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassOrInterfaceType"): + return visitor.visitClassOrInterfaceType(self) + else: + return visitor.visitChildren(self) + + def classOrInterfaceType(self): + + localctx = Java20Parser.ClassOrInterfaceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_classOrInterfaceType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 539 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 7, self._ctx) + if la_ == 1: + self.state = 536 + self.packageName() + self.state = 537 + self.match(Java20Parser.DOT) + + self.state = 544 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 541 + self.annotation() + self.state = 546 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 547 + self.typeIdentifier() + self.state = 549 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 9, self._ctx) + if la_ == 1: + self.state = 548 + self.typeArguments() + + self.state = 552 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 10, self._ctx) + if la_ == 1: + self.state = 551 + self.coit() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def classOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassType"): + listener.enterClassType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassType"): + listener.exitClassType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassType"): + return visitor.visitClassType(self) + else: + return visitor.visitChildren(self) + + def classType(self): + + localctx = Java20Parser.ClassTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_classType) + self._la = 0 # Token type + try: + self.state = 588 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 17, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 557 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 554 + self.annotation() + self.state = 559 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 560 + self.typeIdentifier() + self.state = 562 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 561 + self.typeArguments() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 564 + self.packageName() + self.state = 565 + self.match(Java20Parser.DOT) + self.state = 569 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 566 + self.annotation() + self.state = 571 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 572 + self.typeIdentifier() + self.state = 574 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 573 + self.typeArguments() + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 576 + self.classOrInterfaceType() + self.state = 577 + self.match(Java20Parser.DOT) + self.state = 581 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 578 + self.annotation() + self.state = 583 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 584 + self.typeIdentifier() + self.state = 586 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 585 + self.typeArguments() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceType"): + listener.enterInterfaceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceType"): + listener.exitInterfaceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceType"): + return visitor.visitInterfaceType(self) + else: + return visitor.visitChildren(self) + + def interfaceType(self): + + localctx = Java20Parser.InterfaceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_interfaceType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 590 + self.classType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeVariableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_typeVariable + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeVariable"): + listener.enterTypeVariable(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeVariable"): + listener.exitTypeVariable(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeVariable"): + return visitor.visitTypeVariable(self) + else: + return visitor.visitChildren(self) + + def typeVariable(self): + + localctx = Java20Parser.TypeVariableContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_typeVariable) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 595 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 592 + self.annotation() + self.state = 597 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 598 + self.typeIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def primitiveType(self): + return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def typeVariable(self): + return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayType"): + listener.enterArrayType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayType"): + listener.exitArrayType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayType"): + return visitor.visitArrayType(self) + else: + return visitor.visitChildren(self) + + def arrayType(self): + + localctx = Java20Parser.ArrayTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_arrayType) + try: + self.state = 609 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 19, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 600 + self.primitiveType() + self.state = 601 + self.dims() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 603 + self.classType() + self.state = 604 + self.dims() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 606 + self.typeVariable() + self.state = 607 + self.dims() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DimsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACK(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.LBRACK) + else: + return self.getToken(Java20Parser.LBRACK, i) + + def RBRACK(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.RBRACK) + else: + return self.getToken(Java20Parser.RBRACK, i) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_dims + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDims"): + listener.enterDims(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDims"): + listener.exitDims(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDims"): + return visitor.visitDims(self) + else: + return visitor.visitChildren(self) + + def dims(self): + + localctx = Java20Parser.DimsContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_dims) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 614 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 611 + self.annotation() + self.state = 616 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 617 + self.match(Java20Parser.LBRACK) + self.state = 618 + self.match(Java20Parser.RBRACK) + self.state = 629 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 22, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 622 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 619 + self.annotation() + self.state = 624 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 625 + self.match(Java20Parser.LBRACK) + self.state = 626 + self.match(Java20Parser.RBRACK) + self.state = 631 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 22, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def typeParameterModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeParameterModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeParameterModifierContext, i) + + def typeBound(self): + return self.getTypedRuleContext(Java20Parser.TypeBoundContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeParameter"): + listener.enterTypeParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeParameter"): + listener.exitTypeParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeParameter"): + return visitor.visitTypeParameter(self) + else: + return visitor.visitChildren(self) + + def typeParameter(self): + + localctx = Java20Parser.TypeParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_typeParameter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 635 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 632 + self.typeParameterModifier() + self.state = 637 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 638 + self.typeIdentifier() + self.state = 640 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 34: + self.state = 639 + self.typeBound() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeParameterModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeParameterModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeParameterModifier"): + listener.enterTypeParameterModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeParameterModifier"): + listener.exitTypeParameterModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeParameterModifier"): + return visitor.visitTypeParameterModifier(self) + else: + return visitor.visitChildren(self) + + def typeParameterModifier(self): + + localctx = Java20Parser.TypeParameterModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_typeParameterModifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 642 + self.annotation() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeBoundContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXTENDS(self): + return self.getToken(Java20Parser.EXTENDS, 0) + + def typeVariable(self): + return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0) + + def classOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0) + + def additionalBound(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext) + else: + return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_typeBound + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeBound"): + listener.enterTypeBound(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeBound"): + listener.exitTypeBound(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeBound"): + return visitor.visitTypeBound(self) + else: + return visitor.visitChildren(self) + + def typeBound(self): + + localctx = Java20Parser.TypeBoundContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_typeBound) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 644 + self.match(Java20Parser.EXTENDS) + self.state = 653 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 26, self._ctx) + if la_ == 1: + self.state = 645 + self.typeVariable() + pass + + elif la_ == 2: + self.state = 646 + self.classOrInterfaceType() + self.state = 650 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 108: + self.state = 647 + self.additionalBound() + self.state = 652 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AdditionalBoundContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def BITAND(self): + return self.getToken(Java20Parser.BITAND, 0) + + def interfaceType(self): + return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_additionalBound + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAdditionalBound"): + listener.enterAdditionalBound(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAdditionalBound"): + listener.exitAdditionalBound(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAdditionalBound"): + return visitor.visitAdditionalBound(self) + else: + return visitor.visitChildren(self) + + def additionalBound(self): + + localctx = Java20Parser.AdditionalBoundContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_additionalBound) + try: + self.enterOuterAlt(localctx, 1) + self.state = 655 + self.match(Java20Parser.BITAND) + self.state = 656 + self.interfaceType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeArgumentsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LT(self): + return self.getToken(Java20Parser.LT, 0) + + def typeArgumentList(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentListContext, 0) + + def GT(self): + return self.getToken(Java20Parser.GT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeArguments + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeArguments"): + listener.enterTypeArguments(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeArguments"): + listener.exitTypeArguments(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeArguments"): + return visitor.visitTypeArguments(self) + else: + return visitor.visitChildren(self) + + def typeArguments(self): + + localctx = Java20Parser.TypeArgumentsContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_typeArguments) + try: + self.enterOuterAlt(localctx, 1) + self.state = 658 + self.match(Java20Parser.LT) + self.state = 659 + self.typeArgumentList() + self.state = 660 + self.match(Java20Parser.GT) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeArgumentListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeArgument(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeArgumentContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeArgumentContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_typeArgumentList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeArgumentList"): + listener.enterTypeArgumentList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeArgumentList"): + listener.exitTypeArgumentList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeArgumentList"): + return visitor.visitTypeArgumentList(self) + else: + return visitor.visitChildren(self) + + def typeArgumentList(self): + + localctx = Java20Parser.TypeArgumentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_typeArgumentList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 662 + self.typeArgument() + self.state = 667 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 663 + self.match(Java20Parser.COMMA) + self.state = 664 + self.typeArgument() + self.state = 669 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeArgumentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def wildcard(self): + return self.getTypedRuleContext(Java20Parser.WildcardContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeArgument + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeArgument"): + listener.enterTypeArgument(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeArgument"): + listener.exitTypeArgument(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeArgument"): + return visitor.visitTypeArgument(self) + else: + return visitor.visitChildren(self) + + def typeArgument(self): + + localctx = Java20Parser.TypeArgumentContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_typeArgument) + try: + self.state = 672 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 28, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 670 + self.referenceType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 671 + self.wildcard() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WildcardContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def QUESTION(self): + return self.getToken(Java20Parser.QUESTION, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def wildcardBounds(self): + return self.getTypedRuleContext(Java20Parser.WildcardBoundsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_wildcard + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWildcard"): + listener.enterWildcard(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWildcard"): + listener.exitWildcard(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWildcard"): + return visitor.visitWildcard(self) + else: + return visitor.visitChildren(self) + + def wildcard(self): + + localctx = Java20Parser.WildcardContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_wildcard) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 677 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 674 + self.annotation() + self.state = 679 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 680 + self.match(Java20Parser.QUESTION) + self.state = 682 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 34 or _la == 57: + self.state = 681 + self.wildcardBounds() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WildcardBoundsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXTENDS(self): + return self.getToken(Java20Parser.EXTENDS, 0) + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_wildcardBounds + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWildcardBounds"): + listener.enterWildcardBounds(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWildcardBounds"): + listener.exitWildcardBounds(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWildcardBounds"): + return visitor.visitWildcardBounds(self) + else: + return visitor.visitChildren(self) + + def wildcardBounds(self): + + localctx = Java20Parser.WildcardBoundsContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_wildcardBounds) + try: + self.state = 688 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [34]: + self.enterOuterAlt(localctx, 1) + self.state = 684 + self.match(Java20Parser.EXTENDS) + self.state = 685 + self.referenceType() + pass + elif token in [57]: + self.enterOuterAlt(localctx, 2) + self.state = 686 + self.match(Java20Parser.SUPER) + self.state = 687 + self.referenceType() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ModuleNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def moduleName(self): + return self.getTypedRuleContext(Java20Parser.ModuleNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_moduleName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterModuleName"): + listener.enterModuleName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitModuleName"): + listener.exitModuleName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitModuleName"): + return visitor.visitModuleName(self) + else: + return visitor.visitChildren(self) + + def moduleName(self): + + localctx = Java20Parser.ModuleNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_moduleName) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 690 + self.match(Java20Parser.Identifier) + self.state = 693 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 84: + self.state = 691 + self.match(Java20Parser.DOT) + self.state = 692 + self.moduleName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PackageNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_packageName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPackageName"): + listener.enterPackageName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPackageName"): + listener.exitPackageName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPackageName"): + return visitor.visitPackageName(self) + else: + return visitor.visitChildren(self) + + def packageName(self): + + localctx = Java20Parser.PackageNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_packageName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 695 + self.match(Java20Parser.Identifier) + self.state = 698 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 33, self._ctx) + if la_ == 1: + self.state = 696 + self.match(Java20Parser.DOT) + self.state = 697 + self.packageName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeName"): + listener.enterTypeName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeName"): + listener.exitTypeName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeName"): + return visitor.visitTypeName(self) + else: + return visitor.visitChildren(self) + + def typeName(self): + + localctx = Java20Parser.TypeNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_typeName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 700 + self.packageName() + self.state = 703 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 34, self._ctx) + if la_ == 1: + self.state = 701 + self.match(Java20Parser.DOT) + self.state = 702 + self.typeIdentifier() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PackageOrTypeNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def packageOrTypeName(self): + return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_packageOrTypeName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPackageOrTypeName"): + listener.enterPackageOrTypeName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPackageOrTypeName"): + listener.exitPackageOrTypeName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPackageOrTypeName"): + return visitor.visitPackageOrTypeName(self) + else: + return visitor.visitChildren(self) + + def packageOrTypeName(self): + + localctx = Java20Parser.PackageOrTypeNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_packageOrTypeName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 705 + self.match(Java20Parser.Identifier) + self.state = 708 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 35, self._ctx) + if la_ == 1: + self.state = 706 + self.match(Java20Parser.DOT) + self.state = 707 + self.packageOrTypeName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExpressionNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def ambiguousName(self): + return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_expressionName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExpressionName"): + listener.enterExpressionName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExpressionName"): + listener.exitExpressionName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpressionName"): + return visitor.visitExpressionName(self) + else: + return visitor.visitChildren(self) + + def expressionName(self): + + localctx = Java20Parser.ExpressionNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_expressionName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 713 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 36, self._ctx) + if la_ == 1: + self.state = 710 + self.ambiguousName() + self.state = 711 + self.match(Java20Parser.DOT) + + self.state = 715 + self.match(Java20Parser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unqualifiedMethodIdentifier(self): + return self.getTypedRuleContext(Java20Parser.UnqualifiedMethodIdentifierContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodName"): + listener.enterMethodName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodName"): + listener.exitMethodName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodName"): + return visitor.visitMethodName(self) + else: + return visitor.visitChildren(self) + + def methodName(self): + + localctx = Java20Parser.MethodNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_methodName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 717 + self.unqualifiedMethodIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AmbiguousNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def ambiguousName(self): + return self.getTypedRuleContext(Java20Parser.AmbiguousNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_ambiguousName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAmbiguousName"): + listener.enterAmbiguousName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAmbiguousName"): + listener.exitAmbiguousName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAmbiguousName"): + return visitor.visitAmbiguousName(self) + else: + return visitor.visitChildren(self) + + def ambiguousName(self): + + localctx = Java20Parser.AmbiguousNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_ambiguousName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 719 + self.match(Java20Parser.Identifier) + self.state = 722 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 37, self._ctx) + if la_ == 1: + self.state = 720 + self.match(Java20Parser.DOT) + self.state = 721 + self.ambiguousName() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CompilationUnitContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ordinaryCompilationUnit(self): + return self.getTypedRuleContext(Java20Parser.OrdinaryCompilationUnitContext, 0) + + def modularCompilationUnit(self): + return self.getTypedRuleContext(Java20Parser.ModularCompilationUnitContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_compilationUnit + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCompilationUnit"): + listener.enterCompilationUnit(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCompilationUnit"): + listener.exitCompilationUnit(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCompilationUnit"): + return visitor.visitCompilationUnit(self) + else: + return visitor.visitChildren(self) + + def compilationUnit(self): + + localctx = Java20Parser.CompilationUnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_compilationUnit) + try: + self.state = 726 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 38, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 724 + self.ordinaryCompilationUnit() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 725 + self.modularCompilationUnit() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class OrdinaryCompilationUnitContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def packageDeclaration(self): + return self.getTypedRuleContext(Java20Parser.PackageDeclarationContext, 0) + + def importDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i) + + def topLevelClassOrInterfaceDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TopLevelClassOrInterfaceDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.TopLevelClassOrInterfaceDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_ordinaryCompilationUnit + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterOrdinaryCompilationUnit"): + listener.enterOrdinaryCompilationUnit(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitOrdinaryCompilationUnit"): + listener.exitOrdinaryCompilationUnit(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOrdinaryCompilationUnit"): + return visitor.visitOrdinaryCompilationUnit(self) + else: + return visitor.visitChildren(self) + + def ordinaryCompilationUnit(self): + + localctx = Java20Parser.OrdinaryCompilationUnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_ordinaryCompilationUnit) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 729 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 39, self._ctx) + if la_ == 1: + self.state = 728 + self.packageDeclaration() + + self.state = 734 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 42: + self.state = 731 + self.importDeclaration() + self.state = 736 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 740 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 116002917793925640) != 0) or _la == 82 or _la == 86: + self.state = 737 + self.topLevelClassOrInterfaceDeclaration() + self.state = 742 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ModularCompilationUnitContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def moduleDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ModuleDeclarationContext, 0) + + def importDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ImportDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.ImportDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_modularCompilationUnit + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterModularCompilationUnit"): + listener.enterModularCompilationUnit(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitModularCompilationUnit"): + listener.exitModularCompilationUnit(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitModularCompilationUnit"): + return visitor.visitModularCompilationUnit(self) + else: + return visitor.visitChildren(self) + + def modularCompilationUnit(self): + + localctx = Java20Parser.ModularCompilationUnitContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_modularCompilationUnit) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 746 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 42: + self.state = 743 + self.importDeclaration() + self.state = 748 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 749 + self.moduleDeclaration() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PackageDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def PACKAGE(self): + return self.getToken(Java20Parser.PACKAGE, 0) + + def Identifier(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.Identifier) + else: + return self.getToken(Java20Parser.Identifier, i) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def packageModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.PackageModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.PackageModifierContext, i) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def getRuleIndex(self): + return Java20Parser.RULE_packageDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPackageDeclaration"): + listener.enterPackageDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPackageDeclaration"): + listener.exitPackageDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPackageDeclaration"): + return visitor.visitPackageDeclaration(self) + else: + return visitor.visitChildren(self) + + def packageDeclaration(self): + + localctx = Java20Parser.PackageDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_packageDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 754 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 751 + self.packageModifier() + self.state = 756 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 757 + self.match(Java20Parser.PACKAGE) + self.state = 758 + self.match(Java20Parser.Identifier) + self.state = 763 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 84: + self.state = 759 + self.match(Java20Parser.DOT) + self.state = 760 + self.match(Java20Parser.Identifier) + self.state = 765 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 766 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PackageModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_packageModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPackageModifier"): + listener.enterPackageModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPackageModifier"): + listener.exitPackageModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPackageModifier"): + return visitor.visitPackageModifier(self) + else: + return visitor.visitChildren(self) + + def packageModifier(self): + + localctx = Java20Parser.PackageModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_packageModifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 768 + self.annotation() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def singleTypeImportDeclaration(self): + return self.getTypedRuleContext(Java20Parser.SingleTypeImportDeclarationContext, 0) + + def typeImportOnDemandDeclaration(self): + return self.getTypedRuleContext(Java20Parser.TypeImportOnDemandDeclarationContext, 0) + + def singleStaticImportDeclaration(self): + return self.getTypedRuleContext(Java20Parser.SingleStaticImportDeclarationContext, 0) + + def staticImportOnDemandDeclaration(self): + return self.getTypedRuleContext(Java20Parser.StaticImportOnDemandDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_importDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImportDeclaration"): + listener.enterImportDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImportDeclaration"): + listener.exitImportDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImportDeclaration"): + return visitor.visitImportDeclaration(self) + else: + return visitor.visitChildren(self) + + def importDeclaration(self): + + localctx = Java20Parser.ImportDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_importDeclaration) + try: + self.state = 774 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 45, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 770 + self.singleTypeImportDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 771 + self.typeImportOnDemandDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 772 + self.singleStaticImportDeclaration() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 773 + self.staticImportOnDemandDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleTypeImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPORT(self): + return self.getToken(Java20Parser.IMPORT, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_singleTypeImportDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSingleTypeImportDeclaration"): + listener.enterSingleTypeImportDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSingleTypeImportDeclaration"): + listener.exitSingleTypeImportDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSingleTypeImportDeclaration"): + return visitor.visitSingleTypeImportDeclaration(self) + else: + return visitor.visitChildren(self) + + def singleTypeImportDeclaration(self): + + localctx = Java20Parser.SingleTypeImportDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_singleTypeImportDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 776 + self.match(Java20Parser.IMPORT) + self.state = 777 + self.typeName() + self.state = 778 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeImportOnDemandDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPORT(self): + return self.getToken(Java20Parser.IMPORT, 0) + + def packageOrTypeName(self): + return self.getTypedRuleContext(Java20Parser.PackageOrTypeNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def MUL(self): + return self.getToken(Java20Parser.MUL, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeImportOnDemandDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeImportOnDemandDeclaration"): + listener.enterTypeImportOnDemandDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeImportOnDemandDeclaration"): + listener.exitTypeImportOnDemandDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeImportOnDemandDeclaration"): + return visitor.visitTypeImportOnDemandDeclaration(self) + else: + return visitor.visitChildren(self) + + def typeImportOnDemandDeclaration(self): + + localctx = Java20Parser.TypeImportOnDemandDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_typeImportOnDemandDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 780 + self.match(Java20Parser.IMPORT) + self.state = 781 + self.packageOrTypeName() + self.state = 782 + self.match(Java20Parser.DOT) + self.state = 783 + self.match(Java20Parser.MUL) + self.state = 784 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleStaticImportDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPORT(self): + return self.getToken(Java20Parser.IMPORT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_singleStaticImportDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSingleStaticImportDeclaration"): + listener.enterSingleStaticImportDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSingleStaticImportDeclaration"): + listener.exitSingleStaticImportDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSingleStaticImportDeclaration"): + return visitor.visitSingleStaticImportDeclaration(self) + else: + return visitor.visitChildren(self) + + def singleStaticImportDeclaration(self): + + localctx = Java20Parser.SingleStaticImportDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_singleStaticImportDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 786 + self.match(Java20Parser.IMPORT) + self.state = 787 + self.match(Java20Parser.STATIC) + self.state = 788 + self.typeName() + self.state = 789 + self.match(Java20Parser.DOT) + self.state = 790 + self.match(Java20Parser.Identifier) + self.state = 791 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StaticImportOnDemandDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPORT(self): + return self.getToken(Java20Parser.IMPORT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def MUL(self): + return self.getToken(Java20Parser.MUL, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_staticImportOnDemandDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStaticImportOnDemandDeclaration"): + listener.enterStaticImportOnDemandDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStaticImportOnDemandDeclaration"): + listener.exitStaticImportOnDemandDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStaticImportOnDemandDeclaration"): + return visitor.visitStaticImportOnDemandDeclaration(self) + else: + return visitor.visitChildren(self) + + def staticImportOnDemandDeclaration(self): + + localctx = Java20Parser.StaticImportOnDemandDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_staticImportOnDemandDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 793 + self.match(Java20Parser.IMPORT) + self.state = 794 + self.match(Java20Parser.STATIC) + self.state = 795 + self.typeName() + self.state = 796 + self.match(Java20Parser.DOT) + self.state = 797 + self.match(Java20Parser.MUL) + self.state = 798 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TopLevelClassOrInterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0) + + def interfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_topLevelClassOrInterfaceDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTopLevelClassOrInterfaceDeclaration"): + listener.enterTopLevelClassOrInterfaceDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTopLevelClassOrInterfaceDeclaration"): + listener.exitTopLevelClassOrInterfaceDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTopLevelClassOrInterfaceDeclaration"): + return visitor.visitTopLevelClassOrInterfaceDeclaration(self) + else: + return visitor.visitChildren(self) + + def topLevelClassOrInterfaceDeclaration(self): + + localctx = Java20Parser.TopLevelClassOrInterfaceDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_topLevelClassOrInterfaceDeclaration) + try: + self.state = 803 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 46, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 800 + self.classDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 801 + self.interfaceDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 802 + self.match(Java20Parser.SEMI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ModuleDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def MODULE(self): + return self.getToken(Java20Parser.MODULE, 0) + + def Identifier(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.Identifier) + else: + return self.getToken(Java20Parser.Identifier, i) + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def OPEN(self): + return self.getToken(Java20Parser.OPEN, 0) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def moduleDirective(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ModuleDirectiveContext) + else: + return self.getTypedRuleContext(Java20Parser.ModuleDirectiveContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_moduleDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterModuleDeclaration"): + listener.enterModuleDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitModuleDeclaration"): + listener.exitModuleDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitModuleDeclaration"): + return visitor.visitModuleDeclaration(self) + else: + return visitor.visitChildren(self) + + def moduleDeclaration(self): + + localctx = Java20Parser.ModuleDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_moduleDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 808 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 805 + self.annotation() + self.state = 810 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 812 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 5: + self.state = 811 + self.match(Java20Parser.OPEN) + + self.state = 814 + self.match(Java20Parser.MODULE) + self.state = 815 + self.match(Java20Parser.Identifier) + self.state = 820 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 84: + self.state = 816 + self.match(Java20Parser.DOT) + self.state = 817 + self.match(Java20Parser.Identifier) + self.state = 822 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 823 + self.match(Java20Parser.LBRACE) + self.state = 827 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 17730) != 0): + self.state = 824 + self.moduleDirective() + self.state = 829 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 830 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ModuleDirectiveContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def REQUIRES(self): + return self.getToken(Java20Parser.REQUIRES, 0) + + def moduleName(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ModuleNameContext) + else: + return self.getTypedRuleContext(Java20Parser.ModuleNameContext, i) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def requiresModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.RequiresModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.RequiresModifierContext, i) + + def EXPORTS(self): + return self.getToken(Java20Parser.EXPORTS, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def TO(self): + return self.getToken(Java20Parser.TO, 0) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def OPENS(self): + return self.getToken(Java20Parser.OPENS, 0) + + def USES(self): + return self.getToken(Java20Parser.USES, 0) + + def typeName(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeNameContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeNameContext, i) + + def PROVIDES(self): + return self.getToken(Java20Parser.PROVIDES, 0) + + def WITH(self): + return self.getToken(Java20Parser.WITH, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_moduleDirective + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterModuleDirective"): + listener.enterModuleDirective(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitModuleDirective"): + listener.exitModuleDirective(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitModuleDirective"): + return visitor.visitModuleDirective(self) + else: + return visitor.visitChildren(self) + + def moduleDirective(self): + + localctx = Java20Parser.ModuleDirectiveContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_moduleDirective) + self._la = 0 # Token type + try: + self.state = 889 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [10]: + self.enterOuterAlt(localctx, 1) + self.state = 832 + self.match(Java20Parser.REQUIRES) + self.state = 836 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 13 or _la == 55: + self.state = 833 + self.requiresModifier() + self.state = 838 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 839 + self.moduleName() + self.state = 840 + self.match(Java20Parser.SEMI) + pass + elif token in [1]: + self.enterOuterAlt(localctx, 2) + self.state = 842 + self.match(Java20Parser.EXPORTS) + self.state = 843 + self.packageName() + self.state = 853 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 12: + self.state = 844 + self.match(Java20Parser.TO) + self.state = 845 + self.moduleName() + self.state = 850 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 846 + self.match(Java20Parser.COMMA) + self.state = 847 + self.moduleName() + self.state = 852 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 855 + self.match(Java20Parser.SEMI) + pass + elif token in [6]: + self.enterOuterAlt(localctx, 3) + self.state = 857 + self.match(Java20Parser.OPENS) + self.state = 858 + self.packageName() + self.state = 868 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 12: + self.state = 859 + self.match(Java20Parser.TO) + self.state = 860 + self.moduleName() + self.state = 865 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 861 + self.match(Java20Parser.COMMA) + self.state = 862 + self.moduleName() + self.state = 867 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 870 + self.match(Java20Parser.SEMI) + pass + elif token in [14]: + self.enterOuterAlt(localctx, 4) + self.state = 872 + self.match(Java20Parser.USES) + self.state = 873 + self.typeName() + self.state = 874 + self.match(Java20Parser.SEMI) + pass + elif token in [8]: + self.enterOuterAlt(localctx, 5) + self.state = 876 + self.match(Java20Parser.PROVIDES) + self.state = 877 + self.typeName() + self.state = 878 + self.match(Java20Parser.WITH) + self.state = 879 + self.typeName() + self.state = 884 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 880 + self.match(Java20Parser.COMMA) + self.state = 881 + self.typeName() + self.state = 886 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 887 + self.match(Java20Parser.SEMI) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RequiresModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRANSITIVE(self): + return self.getToken(Java20Parser.TRANSITIVE, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_requiresModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRequiresModifier"): + listener.enterRequiresModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRequiresModifier"): + listener.exitRequiresModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRequiresModifier"): + return visitor.visitRequiresModifier(self) + else: + return visitor.visitChildren(self) + + def requiresModifier(self): + + localctx = Java20Parser.RequiresModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_requiresModifier) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 891 + _la = self._input.LA(1) + if not (_la == 13 or _la == 55): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def normalClassDeclaration(self): + return self.getTypedRuleContext(Java20Parser.NormalClassDeclarationContext, 0) + + def enumDeclaration(self): + return self.getTypedRuleContext(Java20Parser.EnumDeclarationContext, 0) + + def recordDeclaration(self): + return self.getTypedRuleContext(Java20Parser.RecordDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassDeclaration"): + listener.enterClassDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassDeclaration"): + listener.exitClassDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassDeclaration"): + return visitor.visitClassDeclaration(self) + else: + return visitor.visitChildren(self) + + def classDeclaration(self): + + localctx = Java20Parser.ClassDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_classDeclaration) + try: + self.state = 896 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 58, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 893 + self.normalClassDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 894 + self.enumDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 895 + self.recordDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NormalClassDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CLASS(self): + return self.getToken(Java20Parser.CLASS, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def classBody(self): + return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0) + + def classModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i) + + def typeParameters(self): + return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0) + + def classExtends(self): + return self.getTypedRuleContext(Java20Parser.ClassExtendsContext, 0) + + def classImplements(self): + return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0) + + def classPermits(self): + return self.getTypedRuleContext(Java20Parser.ClassPermitsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_normalClassDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNormalClassDeclaration"): + listener.enterNormalClassDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNormalClassDeclaration"): + listener.exitNormalClassDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNormalClassDeclaration"): + return visitor.visitNormalClassDeclaration(self) + else: + return visitor.visitChildren(self) + + def normalClassDeclaration(self): + + localctx = Java20Parser.NormalClassDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_normalClassDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 901 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86: + self.state = 898 + self.classModifier() + self.state = 903 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 904 + self.match(Java20Parser.CLASS) + self.state = 905 + self.typeIdentifier() + self.state = 907 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 906 + self.typeParameters() + + self.state = 910 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 34: + self.state = 909 + self.classExtends() + + self.state = 913 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 41: + self.state = 912 + self.classImplements() + + self.state = 916 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 915 + self.classPermits() + + self.state = 918 + self.classBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PROTECTED(self): + return self.getToken(Java20Parser.PROTECTED, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def ABSTRACT(self): + return self.getToken(Java20Parser.ABSTRACT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def FINAL(self): + return self.getToken(Java20Parser.FINAL, 0) + + def SEALED(self): + return self.getToken(Java20Parser.SEALED, 0) + + def NONSEALED(self): + return self.getToken(Java20Parser.NONSEALED, 0) + + def STRICTFP(self): + return self.getToken(Java20Parser.STRICTFP, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassModifier"): + listener.enterClassModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassModifier"): + listener.exitClassModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassModifier"): + return visitor.visitClassModifier(self) + else: + return visitor.visitChildren(self) + + def classModifier(self): + + localctx = Java20Parser.ClassModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_classModifier) + try: + self.state = 930 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 920 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 921 + self.match(Java20Parser.PUBLIC) + pass + elif token in [51]: + self.enterOuterAlt(localctx, 3) + self.state = 922 + self.match(Java20Parser.PROTECTED) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 4) + self.state = 923 + self.match(Java20Parser.PRIVATE) + pass + elif token in [18]: + self.enterOuterAlt(localctx, 5) + self.state = 924 + self.match(Java20Parser.ABSTRACT) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 6) + self.state = 925 + self.match(Java20Parser.STATIC) + pass + elif token in [35]: + self.enterOuterAlt(localctx, 7) + self.state = 926 + self.match(Java20Parser.FINAL) + pass + elif token in [11]: + self.enterOuterAlt(localctx, 8) + self.state = 927 + self.match(Java20Parser.SEALED) + pass + elif token in [3]: + self.enterOuterAlt(localctx, 9) + self.state = 928 + self.match(Java20Parser.NONSEALED) + pass + elif token in [56]: + self.enterOuterAlt(localctx, 10) + self.state = 929 + self.match(Java20Parser.STRICTFP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeParametersContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LT(self): + return self.getToken(Java20Parser.LT, 0) + + def typeParameterList(self): + return self.getTypedRuleContext(Java20Parser.TypeParameterListContext, 0) + + def GT(self): + return self.getToken(Java20Parser.GT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeParameters + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeParameters"): + listener.enterTypeParameters(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeParameters"): + listener.exitTypeParameters(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeParameters"): + return visitor.visitTypeParameters(self) + else: + return visitor.visitChildren(self) + + def typeParameters(self): + + localctx = Java20Parser.TypeParametersContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_typeParameters) + try: + self.enterOuterAlt(localctx, 1) + self.state = 932 + self.match(Java20Parser.LT) + self.state = 933 + self.typeParameterList() + self.state = 934 + self.match(Java20Parser.GT) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeParameterListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeParameter(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeParameterContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeParameterContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_typeParameterList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeParameterList"): + listener.enterTypeParameterList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeParameterList"): + listener.exitTypeParameterList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeParameterList"): + return visitor.visitTypeParameterList(self) + else: + return visitor.visitChildren(self) + + def typeParameterList(self): + + localctx = Java20Parser.TypeParameterListContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_typeParameterList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 936 + self.typeParameter() + self.state = 941 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 937 + self.match(Java20Parser.COMMA) + self.state = 938 + self.typeParameter() + self.state = 943 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassExtendsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXTENDS(self): + return self.getToken(Java20Parser.EXTENDS, 0) + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classExtends + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassExtends"): + listener.enterClassExtends(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassExtends"): + listener.exitClassExtends(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassExtends"): + return visitor.visitClassExtends(self) + else: + return visitor.visitChildren(self) + + def classExtends(self): + + localctx = Java20Parser.ClassExtendsContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_classExtends) + try: + self.enterOuterAlt(localctx, 1) + self.state = 944 + self.match(Java20Parser.EXTENDS) + self.state = 945 + self.classType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassImplementsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPLEMENTS(self): + return self.getToken(Java20Parser.IMPLEMENTS, 0) + + def interfaceTypeList(self): + return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classImplements + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassImplements"): + listener.enterClassImplements(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassImplements"): + listener.exitClassImplements(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassImplements"): + return visitor.visitClassImplements(self) + else: + return visitor.visitChildren(self) + + def classImplements(self): + + localctx = Java20Parser.ClassImplementsContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_classImplements) + try: + self.enterOuterAlt(localctx, 1) + self.state = 947 + self.match(Java20Parser.IMPLEMENTS) + self.state = 948 + self.interfaceTypeList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceTypeListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def interfaceType(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.InterfaceTypeContext) + else: + return self.getTypedRuleContext(Java20Parser.InterfaceTypeContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceTypeList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceTypeList"): + listener.enterInterfaceTypeList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceTypeList"): + listener.exitInterfaceTypeList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceTypeList"): + return visitor.visitInterfaceTypeList(self) + else: + return visitor.visitChildren(self) + + def interfaceTypeList(self): + + localctx = Java20Parser.InterfaceTypeListContext(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_interfaceTypeList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 950 + self.interfaceType() + self.state = 955 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 951 + self.match(Java20Parser.COMMA) + self.state = 952 + self.interfaceType() + self.state = 957 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassPermitsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def PERMITS(self): + return self.getToken(Java20Parser.PERMITS, 0) + + def typeName(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeNameContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeNameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_classPermits + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassPermits"): + listener.enterClassPermits(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassPermits"): + listener.exitClassPermits(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassPermits"): + return visitor.visitClassPermits(self) + else: + return visitor.visitChildren(self) + + def classPermits(self): + + localctx = Java20Parser.ClassPermitsContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_classPermits) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 958 + self.match(Java20Parser.PERMITS) + self.state = 959 + self.typeName() + self.state = 964 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 960 + self.match(Java20Parser.COMMA) + self.state = 961 + self.typeName() + self.state = 966 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def classBodyDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_classBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassBody"): + listener.enterClassBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassBody"): + listener.exitClassBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassBody"): + return visitor.visitClassBody(self) + else: + return visitor.visitChildren(self) + + def classBody(self): + + localctx = Java20Parser.ClassBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_classBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 967 + self.match(Java20Parser.LBRACE) + self.state = 971 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0): + self.state = 968 + self.classBodyDeclaration() + self.state = 973 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 974 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassBodyDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classMemberDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassMemberDeclarationContext, 0) + + def instanceInitializer(self): + return self.getTypedRuleContext(Java20Parser.InstanceInitializerContext, 0) + + def staticInitializer(self): + return self.getTypedRuleContext(Java20Parser.StaticInitializerContext, 0) + + def constructorDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ConstructorDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classBodyDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassBodyDeclaration"): + listener.enterClassBodyDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassBodyDeclaration"): + listener.exitClassBodyDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassBodyDeclaration"): + return visitor.visitClassBodyDeclaration(self) + else: + return visitor.visitChildren(self) + + def classBodyDeclaration(self): + + localctx = Java20Parser.ClassBodyDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_classBodyDeclaration) + try: + self.state = 980 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 69, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 976 + self.classMemberDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 977 + self.instanceInitializer() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 978 + self.staticInitializer() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 979 + self.constructorDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def fieldDeclaration(self): + return self.getTypedRuleContext(Java20Parser.FieldDeclarationContext, 0) + + def methodDeclaration(self): + return self.getTypedRuleContext(Java20Parser.MethodDeclarationContext, 0) + + def classDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0) + + def interfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classMemberDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassMemberDeclaration"): + listener.enterClassMemberDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassMemberDeclaration"): + listener.exitClassMemberDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassMemberDeclaration"): + return visitor.visitClassMemberDeclaration(self) + else: + return visitor.visitChildren(self) + + def classMemberDeclaration(self): + + localctx = Java20Parser.ClassMemberDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_classMemberDeclaration) + try: + self.state = 987 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 70, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 982 + self.fieldDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 983 + self.methodDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 984 + self.classDeclaration() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 985 + self.interfaceDeclaration() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 986 + self.match(Java20Parser.SEMI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FieldDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def variableDeclaratorList(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def fieldModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.FieldModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.FieldModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_fieldDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFieldDeclaration"): + listener.enterFieldDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFieldDeclaration"): + listener.exitFieldDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFieldDeclaration"): + return visitor.visitFieldDeclaration(self) + else: + return visitor.visitChildren(self) + + def fieldDeclaration(self): + + localctx = Java20Parser.FieldDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_fieldDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 992 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251802230882305) != 0): + self.state = 989 + self.fieldModifier() + self.state = 994 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 995 + self.unannType() + self.state = 996 + self.variableDeclaratorList() + self.state = 997 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FieldModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PROTECTED(self): + return self.getToken(Java20Parser.PROTECTED, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def FINAL(self): + return self.getToken(Java20Parser.FINAL, 0) + + def TRANSIENT(self): + return self.getToken(Java20Parser.TRANSIENT, 0) + + def VOLATILE(self): + return self.getToken(Java20Parser.VOLATILE, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_fieldModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFieldModifier"): + listener.enterFieldModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFieldModifier"): + listener.exitFieldModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFieldModifier"): + return visitor.visitFieldModifier(self) + else: + return visitor.visitChildren(self) + + def fieldModifier(self): + + localctx = Java20Parser.FieldModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_fieldModifier) + try: + self.state = 1007 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 999 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1000 + self.match(Java20Parser.PUBLIC) + pass + elif token in [51]: + self.enterOuterAlt(localctx, 3) + self.state = 1001 + self.match(Java20Parser.PROTECTED) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 4) + self.state = 1002 + self.match(Java20Parser.PRIVATE) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 5) + self.state = 1003 + self.match(Java20Parser.STATIC) + pass + elif token in [35]: + self.enterOuterAlt(localctx, 6) + self.state = 1004 + self.match(Java20Parser.FINAL) + pass + elif token in [63]: + self.enterOuterAlt(localctx, 7) + self.state = 1005 + self.match(Java20Parser.TRANSIENT) + pass + elif token in [66]: + self.enterOuterAlt(localctx, 8) + self.state = 1006 + self.match(Java20Parser.VOLATILE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableDeclaratorListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def variableDeclarator(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableDeclaratorContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_variableDeclaratorList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableDeclaratorList"): + listener.enterVariableDeclaratorList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableDeclaratorList"): + listener.exitVariableDeclaratorList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableDeclaratorList"): + return visitor.visitVariableDeclaratorList(self) + else: + return visitor.visitChildren(self) + + def variableDeclaratorList(self): + + localctx = Java20Parser.VariableDeclaratorListContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_variableDeclaratorList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1009 + self.variableDeclarator() + self.state = 1014 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 73, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1010 + self.match(Java20Parser.COMMA) + self.state = 1011 + self.variableDeclarator() + self.state = 1016 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 73, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def variableDeclaratorId(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0) + + def ASSIGN(self): + return self.getToken(Java20Parser.ASSIGN, 0) + + def variableInitializer(self): + return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_variableDeclarator + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableDeclarator"): + listener.enterVariableDeclarator(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableDeclarator"): + listener.exitVariableDeclarator(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableDeclarator"): + return visitor.visitVariableDeclarator(self) + else: + return visitor.visitChildren(self) + + def variableDeclarator(self): + + localctx = Java20Parser.VariableDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 122, self.RULE_variableDeclarator) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1017 + self.variableDeclaratorId() + self.state = 1020 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 74, self._ctx) + if la_ == 1: + self.state = 1018 + self.match(Java20Parser.ASSIGN) + self.state = 1019 + self.variableInitializer() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableDeclaratorIdContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_variableDeclaratorId + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableDeclaratorId"): + listener.enterVariableDeclaratorId(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableDeclaratorId"): + listener.exitVariableDeclaratorId(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableDeclaratorId"): + return visitor.visitVariableDeclaratorId(self) + else: + return visitor.visitChildren(self) + + def variableDeclaratorId(self): + + localctx = Java20Parser.VariableDeclaratorIdContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_variableDeclaratorId) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1022 + self.match(Java20Parser.Identifier) + self.state = 1024 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 75, self._ctx) + if la_ == 1: + self.state = 1023 + self.dims() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def arrayInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_variableInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableInitializer"): + listener.enterVariableInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableInitializer"): + listener.exitVariableInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableInitializer"): + return visitor.visitVariableInitializer(self) + else: + return visitor.visitChildren(self) + + def variableInitializer(self): + + localctx = Java20Parser.VariableInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_variableInitializer) + try: + self.state = 1028 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92, + 102, 103, 104, 105, 123]: + self.enterOuterAlt(localctx, 1) + self.state = 1026 + self.expression() + pass + elif token in [78]: + self.enterOuterAlt(localctx, 2) + self.state = 1027 + self.arrayInitializer() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannPrimitiveType(self): + return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0) + + def unannReferenceType(self): + return self.getTypedRuleContext(Java20Parser.UnannReferenceTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannType"): + listener.enterUnannType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannType"): + listener.exitUnannType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannType"): + return visitor.visitUnannType(self) + else: + return visitor.visitChildren(self) + + def unannType(self): + + localctx = Java20Parser.UnannTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_unannType) + try: + self.state = 1032 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 77, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1030 + self.unannPrimitiveType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1031 + self.unannReferenceType() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannPrimitiveTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def numericType(self): + return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0) + + def BOOLEAN(self): + return self.getToken(Java20Parser.BOOLEAN, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannPrimitiveType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannPrimitiveType"): + listener.enterUnannPrimitiveType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannPrimitiveType"): + listener.exitUnannPrimitiveType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannPrimitiveType"): + return visitor.visitUnannPrimitiveType(self) + else: + return visitor.visitChildren(self) + + def unannPrimitiveType(self): + + localctx = Java20Parser.UnannPrimitiveTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_unannPrimitiveType) + try: + self.state = 1036 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [22, 25, 31, 37, 44, 46, 54]: + self.enterOuterAlt(localctx, 1) + self.state = 1034 + self.numericType() + pass + elif token in [20]: + self.enterOuterAlt(localctx, 2) + self.state = 1035 + self.match(Java20Parser.BOOLEAN) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannReferenceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannClassOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0) + + def unannTypeVariable(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0) + + def unannArrayType(self): + return self.getTypedRuleContext(Java20Parser.UnannArrayTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannReferenceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannReferenceType"): + listener.enterUnannReferenceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannReferenceType"): + listener.exitUnannReferenceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannReferenceType"): + return visitor.visitUnannReferenceType(self) + else: + return visitor.visitChildren(self) + + def unannReferenceType(self): + + localctx = Java20Parser.UnannReferenceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_unannReferenceType) + try: + self.state = 1041 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 79, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1038 + self.unannClassOrInterfaceType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1039 + self.unannTypeVariable() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1040 + self.unannArrayType() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannClassOrInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def uCOIT(self): + return self.getTypedRuleContext(Java20Parser.UCOITContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_unannClassOrInterfaceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannClassOrInterfaceType"): + listener.enterUnannClassOrInterfaceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannClassOrInterfaceType"): + listener.exitUnannClassOrInterfaceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannClassOrInterfaceType"): + return visitor.visitUnannClassOrInterfaceType(self) + else: + return visitor.visitChildren(self) + + def unannClassOrInterfaceType(self): + + localctx = Java20Parser.UnannClassOrInterfaceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_unannClassOrInterfaceType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1051 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 81, self._ctx) + if la_ == 1: + self.state = 1043 + self.packageName() + self.state = 1044 + self.match(Java20Parser.DOT) + self.state = 1048 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1045 + self.annotation() + self.state = 1050 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1053 + self.typeIdentifier() + self.state = 1055 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 82, self._ctx) + if la_ == 1: + self.state = 1054 + self.typeArguments() + + self.state = 1058 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 83, self._ctx) + if la_ == 1: + self.state = 1057 + self.uCOIT() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UCOITContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def uCOIT(self): + return self.getTypedRuleContext(Java20Parser.UCOITContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_uCOIT + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUCOIT"): + listener.enterUCOIT(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUCOIT"): + listener.exitUCOIT(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUCOIT"): + return visitor.visitUCOIT(self) + else: + return visitor.visitChildren(self) + + def uCOIT(self): + + localctx = Java20Parser.UCOITContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_uCOIT) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1060 + self.match(Java20Parser.DOT) + self.state = 1064 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1061 + self.annotation() + self.state = 1066 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1067 + self.typeIdentifier() + self.state = 1069 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 85, self._ctx) + if la_ == 1: + self.state = 1068 + self.typeArguments() + + self.state = 1072 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 86, self._ctx) + if la_ == 1: + self.state = 1071 + self.uCOIT() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannClassTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def packageName(self): + return self.getTypedRuleContext(Java20Parser.PackageNameContext, 0) + + def unannClassOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_unannClassType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannClassType"): + listener.enterUnannClassType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannClassType"): + listener.exitUnannClassType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannClassType"): + return visitor.visitUnannClassType(self) + else: + return visitor.visitChildren(self) + + def unannClassType(self): + + localctx = Java20Parser.UnannClassTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_unannClassType) + self._la = 0 # Token type + try: + self.state = 1093 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 91, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1074 + self.typeIdentifier() + self.state = 1076 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1075 + self.typeArguments() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1080 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 88, self._ctx) + if la_ == 1: + self.state = 1078 + self.packageName() + pass + + elif la_ == 2: + self.state = 1079 + self.unannClassOrInterfaceType() + pass + + self.state = 1082 + self.match(Java20Parser.DOT) + self.state = 1086 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1083 + self.annotation() + self.state = 1088 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1089 + self.typeIdentifier() + self.state = 1091 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1090 + self.typeArguments() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannInterfaceTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannClassType(self): + return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannInterfaceType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannInterfaceType"): + listener.enterUnannInterfaceType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannInterfaceType"): + listener.exitUnannInterfaceType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannInterfaceType"): + return visitor.visitUnannInterfaceType(self) + else: + return visitor.visitChildren(self) + + def unannInterfaceType(self): + + localctx = Java20Parser.UnannInterfaceTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_unannInterfaceType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1095 + self.unannClassType() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannTypeVariableContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannTypeVariable + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannTypeVariable"): + listener.enterUnannTypeVariable(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannTypeVariable"): + listener.exitUnannTypeVariable(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannTypeVariable"): + return visitor.visitUnannTypeVariable(self) + else: + return visitor.visitChildren(self) + + def unannTypeVariable(self): + + localctx = Java20Parser.UnannTypeVariableContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_unannTypeVariable) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1097 + self.typeIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnannArrayTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def unannPrimitiveType(self): + return self.getTypedRuleContext(Java20Parser.UnannPrimitiveTypeContext, 0) + + def unannClassOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.UnannClassOrInterfaceTypeContext, 0) + + def unannTypeVariable(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeVariableContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unannArrayType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnannArrayType"): + listener.enterUnannArrayType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnannArrayType"): + listener.exitUnannArrayType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnannArrayType"): + return visitor.visitUnannArrayType(self) + else: + return visitor.visitChildren(self) + + def unannArrayType(self): + + localctx = Java20Parser.UnannArrayTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_unannArrayType) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1102 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 92, self._ctx) + if la_ == 1: + self.state = 1099 + self.unannPrimitiveType() + pass + + elif la_ == 2: + self.state = 1100 + self.unannClassOrInterfaceType() + pass + + elif la_ == 3: + self.state = 1101 + self.unannTypeVariable() + pass + + self.state = 1104 + self.dims() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def methodHeader(self): + return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0) + + def methodBody(self): + return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0) + + def methodModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.MethodModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.MethodModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_methodDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodDeclaration"): + listener.enterMethodDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodDeclaration"): + listener.exitMethodDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodDeclaration"): + return visitor.visitMethodDeclaration(self) + else: + return visitor.visitChildren(self) + + def methodDeclaration(self): + + localctx = Java20Parser.MethodDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_methodDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1109 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 692569214556569600) != 0) or _la == 86: + self.state = 1106 + self.methodModifier() + self.state = 1111 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1112 + self.methodHeader() + self.state = 1113 + self.methodBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PROTECTED(self): + return self.getToken(Java20Parser.PROTECTED, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def ABSTRACT(self): + return self.getToken(Java20Parser.ABSTRACT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def FINAL(self): + return self.getToken(Java20Parser.FINAL, 0) + + def SYNCHRONIZED(self): + return self.getToken(Java20Parser.SYNCHRONIZED, 0) + + def NATIVE(self): + return self.getToken(Java20Parser.NATIVE, 0) + + def STRICTFP(self): + return self.getToken(Java20Parser.STRICTFP, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodModifier"): + listener.enterMethodModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodModifier"): + listener.exitMethodModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodModifier"): + return visitor.visitMethodModifier(self) + else: + return visitor.visitChildren(self) + + def methodModifier(self): + + localctx = Java20Parser.MethodModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_methodModifier) + try: + self.state = 1125 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1115 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1116 + self.match(Java20Parser.PUBLIC) + pass + elif token in [51]: + self.enterOuterAlt(localctx, 3) + self.state = 1117 + self.match(Java20Parser.PROTECTED) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 4) + self.state = 1118 + self.match(Java20Parser.PRIVATE) + pass + elif token in [18]: + self.enterOuterAlt(localctx, 5) + self.state = 1119 + self.match(Java20Parser.ABSTRACT) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 6) + self.state = 1120 + self.match(Java20Parser.STATIC) + pass + elif token in [35]: + self.enterOuterAlt(localctx, 7) + self.state = 1121 + self.match(Java20Parser.FINAL) + pass + elif token in [59]: + self.enterOuterAlt(localctx, 8) + self.state = 1122 + self.match(Java20Parser.SYNCHRONIZED) + pass + elif token in [47]: + self.enterOuterAlt(localctx, 9) + self.state = 1123 + self.match(Java20Parser.NATIVE) + pass + elif token in [56]: + self.enterOuterAlt(localctx, 10) + self.state = 1124 + self.match(Java20Parser.STRICTFP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodHeaderContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def result(self): + return self.getTypedRuleContext(Java20Parser.ResultContext, 0) + + def methodDeclarator(self): + return self.getTypedRuleContext(Java20Parser.MethodDeclaratorContext, 0) + + def typeParameters(self): + return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0) + + def throwsT(self): + return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_methodHeader + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodHeader"): + listener.enterMethodHeader(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodHeader"): + listener.exitMethodHeader(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodHeader"): + return visitor.visitMethodHeader(self) + else: + return visitor.visitChildren(self) + + def methodHeader(self): + + localctx = Java20Parser.MethodHeaderContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_methodHeader) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1134 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1127 + self.typeParameters() + self.state = 1131 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1128 + self.annotation() + self.state = 1133 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1136 + self.result() + self.state = 1137 + self.methodDeclarator() + self.state = 1139 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 1138 + self.throwsT() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ResultContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def VOID(self): + return self.getToken(Java20Parser.VOID, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_result + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterResult"): + listener.enterResult(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitResult"): + listener.exitResult(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitResult"): + return visitor.visitResult(self) + else: + return visitor.visitChildren(self) + + def result(self): + + localctx = Java20Parser.ResultContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_result) + try: + self.state = 1143 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]: + self.enterOuterAlt(localctx, 1) + self.state = 1141 + self.unannType() + pass + elif token in [65]: + self.enterOuterAlt(localctx, 2) + self.state = 1142 + self.match(Java20Parser.VOID) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def receiverParameter(self): + return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0) + + def COMMA(self): + return self.getToken(Java20Parser.COMMA, 0) + + def formalParameterList(self): + return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodDeclarator + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodDeclarator"): + listener.enterMethodDeclarator(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodDeclarator"): + listener.exitMethodDeclarator(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodDeclarator"): + return visitor.visitMethodDeclarator(self) + else: + return visitor.visitChildren(self) + + def methodDeclarator(self): + + localctx = Java20Parser.MethodDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_methodDeclarator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1145 + self.match(Java20Parser.Identifier) + self.state = 1146 + self.match(Java20Parser.LPAREN) + self.state = 1150 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 99, self._ctx) + if la_ == 1: + self.state = 1147 + self.receiverParameter() + self.state = 1148 + self.match(Java20Parser.COMMA) + + self.state = 1153 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123: + self.state = 1152 + self.formalParameterList() + + self.state = 1155 + self.match(Java20Parser.RPAREN) + self.state = 1157 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 80 or _la == 86: + self.state = 1156 + self.dims() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ReceiverParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def THIS(self): + return self.getToken(Java20Parser.THIS, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_receiverParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterReceiverParameter"): + listener.enterReceiverParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitReceiverParameter"): + listener.exitReceiverParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitReceiverParameter"): + return visitor.visitReceiverParameter(self) + else: + return visitor.visitChildren(self) + + def receiverParameter(self): + + localctx = Java20Parser.ReceiverParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_receiverParameter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1162 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1159 + self.annotation() + self.state = 1164 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1165 + self.unannType() + self.state = 1168 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 123: + self.state = 1166 + self.match(Java20Parser.Identifier) + self.state = 1167 + self.match(Java20Parser.DOT) + + self.state = 1170 + self.match(Java20Parser.THIS) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FormalParameterListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def formalParameter(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.FormalParameterContext) + else: + return self.getTypedRuleContext(Java20Parser.FormalParameterContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_formalParameterList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFormalParameterList"): + listener.enterFormalParameterList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFormalParameterList"): + listener.exitFormalParameterList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFormalParameterList"): + return visitor.visitFormalParameterList(self) + else: + return visitor.visitChildren(self) + + def formalParameterList(self): + + localctx = Java20Parser.FormalParameterListContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_formalParameterList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1172 + self.formalParameter() + self.state = 1177 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1173 + self.match(Java20Parser.COMMA) + self.state = 1174 + self.formalParameter() + self.state = 1179 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FormalParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def variableDeclaratorId(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0) + + def variableModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i) + + def variableArityParameter(self): + return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_formalParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFormalParameter"): + listener.enterFormalParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFormalParameter"): + listener.exitFormalParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFormalParameter"): + return visitor.visitFormalParameter(self) + else: + return visitor.visitChildren(self) + + def formalParameter(self): + + localctx = Java20Parser.FormalParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_formalParameter) + self._la = 0 # Token type + try: + self.state = 1190 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 106, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1183 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 35 or _la == 86: + self.state = 1180 + self.variableModifier() + self.state = 1185 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1186 + self.unannType() + self.state = 1187 + self.variableDeclaratorId() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1189 + self.variableArityParameter() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableArityParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def ELLIPSIS(self): + return self.getToken(Java20Parser.ELLIPSIS, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def variableModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_variableArityParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableArityParameter"): + listener.enterVariableArityParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableArityParameter"): + listener.exitVariableArityParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableArityParameter"): + return visitor.visitVariableArityParameter(self) + else: + return visitor.visitChildren(self) + + def variableArityParameter(self): + + localctx = Java20Parser.VariableArityParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_variableArityParameter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1195 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 35 or _la == 86: + self.state = 1192 + self.variableModifier() + self.state = 1197 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1198 + self.unannType() + self.state = 1202 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1199 + self.annotation() + self.state = 1204 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1205 + self.match(Java20Parser.ELLIPSIS) + self.state = 1206 + self.match(Java20Parser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def FINAL(self): + return self.getToken(Java20Parser.FINAL, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_variableModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableModifier"): + listener.enterVariableModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableModifier"): + listener.exitVariableModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableModifier"): + return visitor.visitVariableModifier(self) + else: + return visitor.visitChildren(self) + + def variableModifier(self): + + localctx = Java20Parser.VariableModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_variableModifier) + try: + self.state = 1210 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1208 + self.annotation() + pass + elif token in [35]: + self.enterOuterAlt(localctx, 2) + self.state = 1209 + self.match(Java20Parser.FINAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ThrowsTContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def THROWS(self): + return self.getToken(Java20Parser.THROWS, 0) + + def exceptionTypeList(self): + return self.getTypedRuleContext(Java20Parser.ExceptionTypeListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_throwsT + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterThrowsT"): + listener.enterThrowsT(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitThrowsT"): + listener.exitThrowsT(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitThrowsT"): + return visitor.visitThrowsT(self) + else: + return visitor.visitChildren(self) + + def throwsT(self): + + localctx = Java20Parser.ThrowsTContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_throwsT) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1212 + self.match(Java20Parser.THROWS) + self.state = 1213 + self.exceptionTypeList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExceptionTypeListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def exceptionType(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ExceptionTypeContext) + else: + return self.getTypedRuleContext(Java20Parser.ExceptionTypeContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_exceptionTypeList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExceptionTypeList"): + listener.enterExceptionTypeList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExceptionTypeList"): + listener.exitExceptionTypeList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExceptionTypeList"): + return visitor.visitExceptionTypeList(self) + else: + return visitor.visitChildren(self) + + def exceptionTypeList(self): + + localctx = Java20Parser.ExceptionTypeListContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_exceptionTypeList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1215 + self.exceptionType() + self.state = 1220 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1216 + self.match(Java20Parser.COMMA) + self.state = 1217 + self.exceptionType() + self.state = 1222 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExceptionTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def typeVariable(self): + return self.getTypedRuleContext(Java20Parser.TypeVariableContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_exceptionType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExceptionType"): + listener.enterExceptionType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExceptionType"): + listener.exitExceptionType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExceptionType"): + return visitor.visitExceptionType(self) + else: + return visitor.visitChildren(self) + + def exceptionType(self): + + localctx = Java20Parser.ExceptionTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_exceptionType) + try: + self.state = 1225 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 111, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1223 + self.classType() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1224 + self.typeVariable() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodBody"): + listener.enterMethodBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodBody"): + listener.exitMethodBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodBody"): + return visitor.visitMethodBody(self) + else: + return visitor.visitChildren(self) + + def methodBody(self): + + localctx = Java20Parser.MethodBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_methodBody) + try: + self.state = 1229 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [78]: + self.enterOuterAlt(localctx, 1) + self.state = 1227 + self.block() + pass + elif token in [82]: + self.enterOuterAlt(localctx, 2) + self.state = 1228 + self.match(Java20Parser.SEMI) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InstanceInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_instanceInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInstanceInitializer"): + listener.enterInstanceInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInstanceInitializer"): + listener.exitInstanceInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInstanceInitializer"): + return visitor.visitInstanceInitializer(self) + else: + return visitor.visitChildren(self) + + def instanceInitializer(self): + + localctx = Java20Parser.InstanceInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 174, self.RULE_instanceInitializer) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1231 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StaticInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_staticInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStaticInitializer"): + listener.enterStaticInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStaticInitializer"): + listener.exitStaticInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStaticInitializer"): + return visitor.visitStaticInitializer(self) + else: + return visitor.visitChildren(self) + + def staticInitializer(self): + + localctx = Java20Parser.StaticInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 176, self.RULE_staticInitializer) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1233 + self.match(Java20Parser.STATIC) + self.state = 1234 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstructorDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def constructorDeclarator(self): + return self.getTypedRuleContext(Java20Parser.ConstructorDeclaratorContext, 0) + + def constructorBody(self): + return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0) + + def constructorModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i) + + def throwsT(self): + return self.getTypedRuleContext(Java20Parser.ThrowsTContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constructorDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstructorDeclaration"): + listener.enterConstructorDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstructorDeclaration"): + listener.exitConstructorDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstructorDeclaration"): + return visitor.visitConstructorDeclaration(self) + else: + return visitor.visitChildren(self) + + def constructorDeclaration(self): + + localctx = Java20Parser.ConstructorDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_constructorDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1239 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0): + self.state = 1236 + self.constructorModifier() + self.state = 1241 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1242 + self.constructorDeclarator() + self.state = 1244 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 1243 + self.throwsT() + + self.state = 1246 + self.constructorBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstructorModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PROTECTED(self): + return self.getToken(Java20Parser.PROTECTED, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constructorModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstructorModifier"): + listener.enterConstructorModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstructorModifier"): + listener.exitConstructorModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstructorModifier"): + return visitor.visitConstructorModifier(self) + else: + return visitor.visitChildren(self) + + def constructorModifier(self): + + localctx = Java20Parser.ConstructorModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_constructorModifier) + try: + self.state = 1252 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1248 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1249 + self.match(Java20Parser.PUBLIC) + pass + elif token in [51]: + self.enterOuterAlt(localctx, 3) + self.state = 1250 + self.match(Java20Parser.PROTECTED) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 4) + self.state = 1251 + self.match(Java20Parser.PRIVATE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstructorDeclaratorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def simpleTypeName(self): + return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def typeParameters(self): + return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0) + + def receiverParameter(self): + return self.getTypedRuleContext(Java20Parser.ReceiverParameterContext, 0) + + def COMMA(self): + return self.getToken(Java20Parser.COMMA, 0) + + def formalParameterList(self): + return self.getTypedRuleContext(Java20Parser.FormalParameterListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constructorDeclarator + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstructorDeclarator"): + listener.enterConstructorDeclarator(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstructorDeclarator"): + listener.exitConstructorDeclarator(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstructorDeclarator"): + return visitor.visitConstructorDeclarator(self) + else: + return visitor.visitChildren(self) + + def constructorDeclarator(self): + + localctx = Java20Parser.ConstructorDeclaratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 182, self.RULE_constructorDeclarator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1255 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1254 + self.typeParameters() + + self.state = 1257 + self.simpleTypeName() + self.state = 1258 + self.match(Java20Parser.LPAREN) + self.state = 1262 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 117, self._ctx) + if la_ == 1: + self.state = 1259 + self.receiverParameter() + self.state = 1260 + self.match(Java20Parser.COMMA) + + self.state = 1265 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424676864) != 0) or _la == 86 or _la == 123: + self.state = 1264 + self.formalParameterList() + + self.state = 1267 + self.match(Java20Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SimpleTypeNameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_simpleTypeName + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSimpleTypeName"): + listener.enterSimpleTypeName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSimpleTypeName"): + listener.exitSimpleTypeName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSimpleTypeName"): + return visitor.visitSimpleTypeName(self) + else: + return visitor.visitChildren(self) + + def simpleTypeName(self): + + localctx = Java20Parser.SimpleTypeNameContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_simpleTypeName) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1269 + self.typeIdentifier() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstructorBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def explicitConstructorInvocation(self): + return self.getTypedRuleContext(Java20Parser.ExplicitConstructorInvocationContext, 0) + + def blockStatements(self): + return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constructorBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstructorBody"): + listener.enterConstructorBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstructorBody"): + listener.exitConstructorBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstructorBody"): + return visitor.visitConstructorBody(self) + else: + return visitor.visitChildren(self) + + def constructorBody(self): + + localctx = Java20Parser.ConstructorBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_constructorBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1271 + self.match(Java20Parser.LBRACE) + self.state = 1273 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 119, self._ctx) + if la_ == 1: + self.state = 1272 + self.explicitConstructorInvocation() + + self.state = 1276 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0): + self.state = 1275 + self.blockStatements() + + self.state = 1278 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExplicitConstructorInvocationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def THIS(self): + return self.getToken(Java20Parser.THIS, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_explicitConstructorInvocation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExplicitConstructorInvocation"): + listener.enterExplicitConstructorInvocation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExplicitConstructorInvocation"): + listener.exitExplicitConstructorInvocation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExplicitConstructorInvocation"): + return visitor.visitExplicitConstructorInvocation(self) + else: + return visitor.visitChildren(self) + + def explicitConstructorInvocation(self): + + localctx = Java20Parser.ExplicitConstructorInvocationContext(self, self._ctx, self.state) + self.enterRule(localctx, 188, self.RULE_explicitConstructorInvocation) + self._la = 0 # Token type + try: + self.state = 1306 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 126, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1281 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1280 + self.typeArguments() + + self.state = 1283 + _la = self._input.LA(1) + if not (_la == 57 or _la == 60): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1284 + self.match(Java20Parser.LPAREN) + self.state = 1286 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1285 + self.argumentList() + + self.state = 1288 + self.match(Java20Parser.RPAREN) + self.state = 1289 + self.match(Java20Parser.SEMI) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1292 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 123, self._ctx) + if la_ == 1: + self.state = 1290 + self.expressionName() + pass + + elif la_ == 2: + self.state = 1291 + self.primary() + pass + + self.state = 1294 + self.match(Java20Parser.DOT) + self.state = 1296 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1295 + self.typeArguments() + + self.state = 1298 + self.match(Java20Parser.SUPER) + self.state = 1299 + self.match(Java20Parser.LPAREN) + self.state = 1301 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1300 + self.argumentList() + + self.state = 1303 + self.match(Java20Parser.RPAREN) + self.state = 1304 + self.match(Java20Parser.SEMI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ENUM(self): + return self.getToken(Java20Parser.ENUM, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def enumBody(self): + return self.getTypedRuleContext(Java20Parser.EnumBodyContext, 0) + + def classModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i) + + def classImplements(self): + return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enumDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumDeclaration"): + listener.enterEnumDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumDeclaration"): + listener.exitEnumDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumDeclaration"): + return visitor.visitEnumDeclaration(self) + else: + return visitor.visitChildren(self) + + def enumDeclaration(self): + + localctx = Java20Parser.EnumDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_enumDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1311 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86: + self.state = 1308 + self.classModifier() + self.state = 1313 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1314 + self.match(Java20Parser.ENUM) + self.state = 1315 + self.typeIdentifier() + self.state = 1317 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 41: + self.state = 1316 + self.classImplements() + + self.state = 1319 + self.enumBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def enumConstantList(self): + return self.getTypedRuleContext(Java20Parser.EnumConstantListContext, 0) + + def COMMA(self): + return self.getToken(Java20Parser.COMMA, 0) + + def enumBodyDeclarations(self): + return self.getTypedRuleContext(Java20Parser.EnumBodyDeclarationsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enumBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumBody"): + listener.enterEnumBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumBody"): + listener.exitEnumBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumBody"): + return visitor.visitEnumBody(self) + else: + return visitor.visitChildren(self) + + def enumBody(self): + + localctx = Java20Parser.EnumBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 192, self.RULE_enumBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1321 + self.match(Java20Parser.LBRACE) + self.state = 1323 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 86 or _la == 123: + self.state = 1322 + self.enumConstantList() + + self.state = 1326 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 83: + self.state = 1325 + self.match(Java20Parser.COMMA) + + self.state = 1329 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 82: + self.state = 1328 + self.enumBodyDeclarations() + + self.state = 1331 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumConstantListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def enumConstant(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.EnumConstantContext) + else: + return self.getTypedRuleContext(Java20Parser.EnumConstantContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_enumConstantList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumConstantList"): + listener.enterEnumConstantList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumConstantList"): + listener.exitEnumConstantList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumConstantList"): + return visitor.visitEnumConstantList(self) + else: + return visitor.visitChildren(self) + + def enumConstantList(self): + + localctx = Java20Parser.EnumConstantListContext(self, self._ctx, self.state) + self.enterRule(localctx, 194, self.RULE_enumConstantList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1333 + self.enumConstant() + self.state = 1338 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 132, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1334 + self.match(Java20Parser.COMMA) + self.state = 1335 + self.enumConstant() + self.state = 1340 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 132, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumConstantContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def enumConstantModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.EnumConstantModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.EnumConstantModifierContext, i) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def classBody(self): + return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enumConstant + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumConstant"): + listener.enterEnumConstant(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumConstant"): + listener.exitEnumConstant(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumConstant"): + return visitor.visitEnumConstant(self) + else: + return visitor.visitChildren(self) + + def enumConstant(self): + + localctx = Java20Parser.EnumConstantContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_enumConstant) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1344 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1341 + self.enumConstantModifier() + self.state = 1346 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1347 + self.match(Java20Parser.Identifier) + self.state = 1353 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 76: + self.state = 1348 + self.match(Java20Parser.LPAREN) + self.state = 1350 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1349 + self.argumentList() + + self.state = 1352 + self.match(Java20Parser.RPAREN) + + self.state = 1356 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 78: + self.state = 1355 + self.classBody() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumConstantModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enumConstantModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumConstantModifier"): + listener.enterEnumConstantModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumConstantModifier"): + listener.exitEnumConstantModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumConstantModifier"): + return visitor.visitEnumConstantModifier(self) + else: + return visitor.visitChildren(self) + + def enumConstantModifier(self): + + localctx = Java20Parser.EnumConstantModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_enumConstantModifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1358 + self.annotation() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnumBodyDeclarationsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def classBodyDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassBodyDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_enumBodyDeclarations + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnumBodyDeclarations"): + listener.enterEnumBodyDeclarations(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnumBodyDeclarations"): + listener.exitEnumBodyDeclarations(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnumBodyDeclarations"): + return visitor.visitEnumBodyDeclarations(self) + else: + return visitor.visitChildren(self) + + def enumBodyDeclarations(self): + + localctx = Java20Parser.EnumBodyDeclarationsContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_enumBodyDeclarations) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1360 + self.match(Java20Parser.SEMI) + self.state = 1364 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0): + self.state = 1361 + self.classBodyDeclaration() + self.state = 1366 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def RECORD(self): + return self.getToken(Java20Parser.RECORD, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def recordHeader(self): + return self.getTypedRuleContext(Java20Parser.RecordHeaderContext, 0) + + def recordBody(self): + return self.getTypedRuleContext(Java20Parser.RecordBodyContext, 0) + + def classModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassModifierContext, i) + + def typeParameters(self): + return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0) + + def classImplements(self): + return self.getTypedRuleContext(Java20Parser.ClassImplementsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_recordDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordDeclaration"): + listener.enterRecordDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordDeclaration"): + listener.exitRecordDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordDeclaration"): + return visitor.visitRecordDeclaration(self) + else: + return visitor.visitChildren(self) + + def recordDeclaration(self): + + localctx = Java20Parser.RecordDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_recordDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1370 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967724764792840) != 0) or _la == 86: + self.state = 1367 + self.classModifier() + self.state = 1372 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1373 + self.match(Java20Parser.RECORD) + self.state = 1374 + self.typeIdentifier() + self.state = 1376 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1375 + self.typeParameters() + + self.state = 1378 + self.recordHeader() + self.state = 1380 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 41: + self.state = 1379 + self.classImplements() + + self.state = 1382 + self.recordBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordHeaderContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def recordComponentList(self): + return self.getTypedRuleContext(Java20Parser.RecordComponentListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_recordHeader + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordHeader"): + listener.enterRecordHeader(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordHeader"): + listener.exitRecordHeader(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordHeader"): + return visitor.visitRecordHeader(self) + else: + return visitor.visitChildren(self) + + def recordHeader(self): + + localctx = Java20Parser.RecordHeaderContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_recordHeader) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1384 + self.match(Java20Parser.LPAREN) + self.state = 1386 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102499064938496) != 0) or _la == 86 or _la == 123: + self.state = 1385 + self.recordComponentList() + + self.state = 1388 + self.match(Java20Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordComponentListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def recordComponent(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.RecordComponentContext) + else: + return self.getTypedRuleContext(Java20Parser.RecordComponentContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_recordComponentList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordComponentList"): + listener.enterRecordComponentList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordComponentList"): + listener.exitRecordComponentList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordComponentList"): + return visitor.visitRecordComponentList(self) + else: + return visitor.visitChildren(self) + + def recordComponentList(self): + + localctx = Java20Parser.RecordComponentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_recordComponentList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1390 + self.recordComponent() + self.state = 1395 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1391 + self.match(Java20Parser.COMMA) + self.state = 1392 + self.recordComponent() + self.state = 1397 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordComponentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def recordComponentModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i) + + def variableArityRecordComponent(self): + return self.getTypedRuleContext(Java20Parser.VariableArityRecordComponentContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_recordComponent + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordComponent"): + listener.enterRecordComponent(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordComponent"): + listener.exitRecordComponent(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordComponent"): + return visitor.visitRecordComponent(self) + else: + return visitor.visitChildren(self) + + def recordComponent(self): + + localctx = Java20Parser.RecordComponentContext(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_recordComponent) + self._la = 0 # Token type + try: + self.state = 1408 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 144, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1401 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1398 + self.recordComponentModifier() + self.state = 1403 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1404 + self.unannType() + self.state = 1405 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1407 + self.variableArityRecordComponent() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableArityRecordComponentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def ELLIPSIS(self): + return self.getToken(Java20Parser.ELLIPSIS, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def recordComponentModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.RecordComponentModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.RecordComponentModifierContext, i) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_variableArityRecordComponent + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableArityRecordComponent"): + listener.enterVariableArityRecordComponent(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableArityRecordComponent"): + listener.exitVariableArityRecordComponent(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableArityRecordComponent"): + return visitor.visitVariableArityRecordComponent(self) + else: + return visitor.visitChildren(self) + + def variableArityRecordComponent(self): + + localctx = Java20Parser.VariableArityRecordComponentContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_variableArityRecordComponent) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1413 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1410 + self.recordComponentModifier() + self.state = 1415 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1416 + self.unannType() + self.state = 1420 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 1417 + self.annotation() + self.state = 1422 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1423 + self.match(Java20Parser.ELLIPSIS) + self.state = 1424 + self.match(Java20Parser.Identifier) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordComponentModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_recordComponentModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordComponentModifier"): + listener.enterRecordComponentModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordComponentModifier"): + listener.exitRecordComponentModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordComponentModifier"): + return visitor.visitRecordComponentModifier(self) + else: + return visitor.visitChildren(self) + + def recordComponentModifier(self): + + localctx = Java20Parser.RecordComponentModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_recordComponentModifier) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1426 + self.annotation() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def recordBodyDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.RecordBodyDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.RecordBodyDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_recordBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordBody"): + listener.enterRecordBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordBody"): + listener.exitRecordBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordBody"): + return visitor.visitRecordBody(self) + else: + return visitor.visitChildren(self) + + def recordBody(self): + + localctx = Java20Parser.RecordBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_recordBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1428 + self.match(Java20Parser.LBRACE) + self.state = 1432 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & -8512665130204132856) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187502595) != 0): + self.state = 1429 + self.recordBodyDeclaration() + self.state = 1434 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1435 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class RecordBodyDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classBodyDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassBodyDeclarationContext, 0) + + def compactConstructorDeclaration(self): + return self.getTypedRuleContext(Java20Parser.CompactConstructorDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_recordBodyDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRecordBodyDeclaration"): + listener.enterRecordBodyDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRecordBodyDeclaration"): + listener.exitRecordBodyDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRecordBodyDeclaration"): + return visitor.visitRecordBodyDeclaration(self) + else: + return visitor.visitChildren(self) + + def recordBodyDeclaration(self): + + localctx = Java20Parser.RecordBodyDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_recordBodyDeclaration) + try: + self.state = 1439 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 148, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1437 + self.classBodyDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1438 + self.compactConstructorDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CompactConstructorDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def simpleTypeName(self): + return self.getTypedRuleContext(Java20Parser.SimpleTypeNameContext, 0) + + def constructorBody(self): + return self.getTypedRuleContext(Java20Parser.ConstructorBodyContext, 0) + + def constructorModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ConstructorModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ConstructorModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_compactConstructorDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCompactConstructorDeclaration"): + listener.enterCompactConstructorDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCompactConstructorDeclaration"): + listener.exitCompactConstructorDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCompactConstructorDeclaration"): + return visitor.visitCompactConstructorDeclaration(self) + else: + return visitor.visitChildren(self) + + def compactConstructorDeclaration(self): + + localctx = Java20Parser.CompactConstructorDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_compactConstructorDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1444 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 50)) & ~0x3f) == 0 and ((1 << (_la - 50)) & 68719476743) != 0): + self.state = 1441 + self.constructorModifier() + self.state = 1446 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1447 + self.simpleTypeName() + self.state = 1448 + self.constructorBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def normalInterfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0) + + def annotationInterfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceDeclaration"): + listener.enterInterfaceDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceDeclaration"): + listener.exitInterfaceDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceDeclaration"): + return visitor.visitInterfaceDeclaration(self) + else: + return visitor.visitChildren(self) + + def interfaceDeclaration(self): + + localctx = Java20Parser.InterfaceDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 220, self.RULE_interfaceDeclaration) + try: + self.state = 1452 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 150, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1450 + self.normalInterfaceDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1451 + self.annotationInterfaceDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NormalInterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def INTERFACE(self): + return self.getToken(Java20Parser.INTERFACE, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def interfaceBody(self): + return self.getTypedRuleContext(Java20Parser.InterfaceBodyContext, 0) + + def interfaceModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i) + + def typeParameters(self): + return self.getTypedRuleContext(Java20Parser.TypeParametersContext, 0) + + def interfaceExtends(self): + return self.getTypedRuleContext(Java20Parser.InterfaceExtendsContext, 0) + + def interfacePermits(self): + return self.getTypedRuleContext(Java20Parser.InterfacePermitsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_normalInterfaceDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNormalInterfaceDeclaration"): + listener.enterNormalInterfaceDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNormalInterfaceDeclaration"): + listener.exitNormalInterfaceDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNormalInterfaceDeclaration"): + return visitor.visitNormalInterfaceDeclaration(self) + else: + return visitor.visitChildren(self) + + def normalInterfaceDeclaration(self): + + localctx = Java20Parser.NormalInterfaceDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_normalInterfaceDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1457 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 115967690405054472) != 0) or _la == 86: + self.state = 1454 + self.interfaceModifier() + self.state = 1459 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1460 + self.match(Java20Parser.INTERFACE) + self.state = 1461 + self.typeIdentifier() + self.state = 1463 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 1462 + self.typeParameters() + + self.state = 1466 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 34: + self.state = 1465 + self.interfaceExtends() + + self.state = 1469 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 1468 + self.interfacePermits() + + self.state = 1471 + self.interfaceBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PROTECTED(self): + return self.getToken(Java20Parser.PROTECTED, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def ABSTRACT(self): + return self.getToken(Java20Parser.ABSTRACT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def SEALED(self): + return self.getToken(Java20Parser.SEALED, 0) + + def NONSEALED(self): + return self.getToken(Java20Parser.NONSEALED, 0) + + def STRICTFP(self): + return self.getToken(Java20Parser.STRICTFP, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceModifier"): + listener.enterInterfaceModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceModifier"): + listener.exitInterfaceModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceModifier"): + return visitor.visitInterfaceModifier(self) + else: + return visitor.visitChildren(self) + + def interfaceModifier(self): + + localctx = Java20Parser.InterfaceModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_interfaceModifier) + try: + self.state = 1482 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1473 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1474 + self.match(Java20Parser.PUBLIC) + pass + elif token in [51]: + self.enterOuterAlt(localctx, 3) + self.state = 1475 + self.match(Java20Parser.PROTECTED) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 4) + self.state = 1476 + self.match(Java20Parser.PRIVATE) + pass + elif token in [18]: + self.enterOuterAlt(localctx, 5) + self.state = 1477 + self.match(Java20Parser.ABSTRACT) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 6) + self.state = 1478 + self.match(Java20Parser.STATIC) + pass + elif token in [11]: + self.enterOuterAlt(localctx, 7) + self.state = 1479 + self.match(Java20Parser.SEALED) + pass + elif token in [3]: + self.enterOuterAlt(localctx, 8) + self.state = 1480 + self.match(Java20Parser.NONSEALED) + pass + elif token in [56]: + self.enterOuterAlt(localctx, 9) + self.state = 1481 + self.match(Java20Parser.STRICTFP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceExtendsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXTENDS(self): + return self.getToken(Java20Parser.EXTENDS, 0) + + def interfaceTypeList(self): + return self.getTypedRuleContext(Java20Parser.InterfaceTypeListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceExtends + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceExtends"): + listener.enterInterfaceExtends(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceExtends"): + listener.exitInterfaceExtends(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceExtends"): + return visitor.visitInterfaceExtends(self) + else: + return visitor.visitChildren(self) + + def interfaceExtends(self): + + localctx = Java20Parser.InterfaceExtendsContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_interfaceExtends) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1484 + self.match(Java20Parser.EXTENDS) + self.state = 1485 + self.interfaceTypeList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfacePermitsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def PERMITS(self): + return self.getToken(Java20Parser.PERMITS, 0) + + def typeName(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.TypeNameContext) + else: + return self.getTypedRuleContext(Java20Parser.TypeNameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_interfacePermits + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfacePermits"): + listener.enterInterfacePermits(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfacePermits"): + listener.exitInterfacePermits(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfacePermits"): + return visitor.visitInterfacePermits(self) + else: + return visitor.visitChildren(self) + + def interfacePermits(self): + + localctx = Java20Parser.InterfacePermitsContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_interfacePermits) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1487 + self.match(Java20Parser.PERMITS) + self.state = 1488 + self.typeName() + self.state = 1493 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1489 + self.match(Java20Parser.COMMA) + self.state = 1490 + self.typeName() + self.state = 1495 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def interfaceMemberDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.InterfaceMemberDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.InterfaceMemberDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceBody"): + listener.enterInterfaceBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceBody"): + listener.exitInterfaceBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceBody"): + return visitor.visitInterfaceBody(self) + else: + return visitor.visitChildren(self) + + def interfaceBody(self): + + localctx = Java20Parser.InterfaceBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 230, self.RULE_interfaceBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1496 + self.match(Java20Parser.LBRACE) + self.state = 1500 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105417395735048) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230376187494401) != 0): + self.state = 1497 + self.interfaceMemberDeclaration() + self.state = 1502 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1503 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def constantDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0) + + def interfaceMethodDeclaration(self): + return self.getTypedRuleContext(Java20Parser.InterfaceMethodDeclarationContext, 0) + + def classDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0) + + def interfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceMemberDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceMemberDeclaration"): + listener.enterInterfaceMemberDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceMemberDeclaration"): + listener.exitInterfaceMemberDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceMemberDeclaration"): + return visitor.visitInterfaceMemberDeclaration(self) + else: + return visitor.visitChildren(self) + + def interfaceMemberDeclaration(self): + + localctx = Java20Parser.InterfaceMemberDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_interfaceMemberDeclaration) + try: + self.state = 1510 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 158, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1505 + self.constantDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1506 + self.interfaceMethodDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1507 + self.classDeclaration() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1508 + self.interfaceDeclaration() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1509 + self.match(Java20Parser.SEMI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstantDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def variableDeclaratorList(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def constantModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ConstantModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.ConstantModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_constantDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstantDeclaration"): + listener.enterConstantDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstantDeclaration"): + listener.exitConstantDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstantDeclaration"): + return visitor.visitConstantDeclaration(self) + else: + return visitor.visitChildren(self) + + def constantDeclaration(self): + + localctx = Java20Parser.ConstantDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_constantDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1515 + self._errHandler.sync(self) + _la = self._input.LA(1) + while ((((_la - 35)) & ~0x3f) == 0 and ((1 << (_la - 35)) & 2251799814864897) != 0): + self.state = 1512 + self.constantModifier() + self.state = 1517 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1518 + self.unannType() + self.state = 1519 + self.variableDeclaratorList() + self.state = 1520 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstantModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def FINAL(self): + return self.getToken(Java20Parser.FINAL, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constantModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstantModifier"): + listener.enterConstantModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstantModifier"): + listener.exitConstantModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstantModifier"): + return visitor.visitConstantModifier(self) + else: + return visitor.visitChildren(self) + + def constantModifier(self): + + localctx = Java20Parser.ConstantModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_constantModifier) + try: + self.state = 1526 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1522 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1523 + self.match(Java20Parser.PUBLIC) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 3) + self.state = 1524 + self.match(Java20Parser.STATIC) + pass + elif token in [35]: + self.enterOuterAlt(localctx, 4) + self.state = 1525 + self.match(Java20Parser.FINAL) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceMethodDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def methodHeader(self): + return self.getTypedRuleContext(Java20Parser.MethodHeaderContext, 0) + + def methodBody(self): + return self.getTypedRuleContext(Java20Parser.MethodBodyContext, 0) + + def interfaceMethodModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.InterfaceMethodModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.InterfaceMethodModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceMethodDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceMethodDeclaration"): + listener.enterInterfaceMethodDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceMethodDeclaration"): + listener.exitInterfaceMethodDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceMethodDeclaration"): + return visitor.visitInterfaceMethodDeclaration(self) + else: + return visitor.visitChildren(self) + + def interfaceMethodDeclaration(self): + + localctx = Java20Parser.InterfaceMethodDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 238, self.RULE_interfaceMethodDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1531 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 113715891128238080) != 0) or _la == 86: + self.state = 1528 + self.interfaceMethodModifier() + self.state = 1533 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1534 + self.methodHeader() + self.state = 1535 + self.methodBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class InterfaceMethodModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def PRIVATE(self): + return self.getToken(Java20Parser.PRIVATE, 0) + + def ABSTRACT(self): + return self.getToken(Java20Parser.ABSTRACT, 0) + + def DEFAULT(self): + return self.getToken(Java20Parser.DEFAULT, 0) + + def STATIC(self): + return self.getToken(Java20Parser.STATIC, 0) + + def STRICTFP(self): + return self.getToken(Java20Parser.STRICTFP, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_interfaceMethodModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInterfaceMethodModifier"): + listener.enterInterfaceMethodModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInterfaceMethodModifier"): + listener.exitInterfaceMethodModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInterfaceMethodModifier"): + return visitor.visitInterfaceMethodModifier(self) + else: + return visitor.visitChildren(self) + + def interfaceMethodModifier(self): + + localctx = Java20Parser.InterfaceMethodModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 240, self.RULE_interfaceMethodModifier) + try: + self.state = 1544 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1537 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1538 + self.match(Java20Parser.PUBLIC) + pass + elif token in [50]: + self.enterOuterAlt(localctx, 3) + self.state = 1539 + self.match(Java20Parser.PRIVATE) + pass + elif token in [18]: + self.enterOuterAlt(localctx, 4) + self.state = 1540 + self.match(Java20Parser.ABSTRACT) + pass + elif token in [29]: + self.enterOuterAlt(localctx, 5) + self.state = 1541 + self.match(Java20Parser.DEFAULT) + pass + elif token in [55]: + self.enterOuterAlt(localctx, 6) + self.state = 1542 + self.match(Java20Parser.STATIC) + pass + elif token in [56]: + self.enterOuterAlt(localctx, 7) + self.state = 1543 + self.match(Java20Parser.STRICTFP) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationInterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(Java20Parser.AT, 0) + + def INTERFACE(self): + return self.getToken(Java20Parser.INTERFACE, 0) + + def typeIdentifier(self): + return self.getTypedRuleContext(Java20Parser.TypeIdentifierContext, 0) + + def annotationInterfaceBody(self): + return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceBodyContext, 0) + + def interfaceModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.InterfaceModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.InterfaceModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_annotationInterfaceDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotationInterfaceDeclaration"): + listener.enterAnnotationInterfaceDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotationInterfaceDeclaration"): + listener.exitAnnotationInterfaceDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotationInterfaceDeclaration"): + return visitor.visitAnnotationInterfaceDeclaration(self) + else: + return visitor.visitChildren(self) + + def annotationInterfaceDeclaration(self): + + localctx = Java20Parser.AnnotationInterfaceDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 242, self.RULE_annotationInterfaceDeclaration) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1549 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 163, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1546 + self.interfaceModifier() + self.state = 1551 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 163, self._ctx) + + self.state = 1552 + self.match(Java20Parser.AT) + self.state = 1553 + self.match(Java20Parser.INTERFACE) + self.state = 1554 + self.typeIdentifier() + self.state = 1555 + self.annotationInterfaceBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationInterfaceBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def annotationInterfaceMemberDeclaration(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceMemberDeclarationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceMemberDeclarationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_annotationInterfaceBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotationInterfaceBody"): + listener.enterAnnotationInterfaceBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotationInterfaceBody"): + listener.exitAnnotationInterfaceBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotationInterfaceBody"): + return visitor.visitAnnotationInterfaceBody(self) + else: + return visitor.visitChildren(self) + + def annotationInterfaceBody(self): + + localctx = Java20Parser.AnnotationInterfaceBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 244, self.RULE_annotationInterfaceBody) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1557 + self.match(Java20Parser.LBRACE) + self.state = 1561 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 134105416858864136) != 0) or ( + (((_la - 82)) & ~0x3f) == 0 and ((1 << (_la - 82)) & 2199023255569) != 0): + self.state = 1558 + self.annotationInterfaceMemberDeclaration() + self.state = 1563 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1564 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationInterfaceMemberDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotationInterfaceElementDeclaration(self): + return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementDeclarationContext, 0) + + def constantDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ConstantDeclarationContext, 0) + + def classDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0) + + def interfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.InterfaceDeclarationContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_annotationInterfaceMemberDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotationInterfaceMemberDeclaration"): + listener.enterAnnotationInterfaceMemberDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotationInterfaceMemberDeclaration"): + listener.exitAnnotationInterfaceMemberDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotationInterfaceMemberDeclaration"): + return visitor.visitAnnotationInterfaceMemberDeclaration(self) + else: + return visitor.visitChildren(self) + + def annotationInterfaceMemberDeclaration(self): + + localctx = Java20Parser.AnnotationInterfaceMemberDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 246, self.RULE_annotationInterfaceMemberDeclaration) + try: + self.state = 1571 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 165, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1566 + self.annotationInterfaceElementDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1567 + self.constantDeclaration() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1568 + self.classDeclaration() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1569 + self.interfaceDeclaration() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1570 + self.match(Java20Parser.SEMI) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationInterfaceElementDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def annotationInterfaceElementModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationInterfaceElementModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationInterfaceElementModifierContext, i) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def defaultValue(self): + return self.getTypedRuleContext(Java20Parser.DefaultValueContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_annotationInterfaceElementDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotationInterfaceElementDeclaration"): + listener.enterAnnotationInterfaceElementDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotationInterfaceElementDeclaration"): + listener.exitAnnotationInterfaceElementDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotationInterfaceElementDeclaration"): + return visitor.visitAnnotationInterfaceElementDeclaration(self) + else: + return visitor.visitChildren(self) + + def annotationInterfaceElementDeclaration(self): + + localctx = Java20Parser.AnnotationInterfaceElementDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 248, self.RULE_annotationInterfaceElementDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1576 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 18 or _la == 52 or _la == 86: + self.state = 1573 + self.annotationInterfaceElementModifier() + self.state = 1578 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1579 + self.unannType() + self.state = 1580 + self.match(Java20Parser.Identifier) + self.state = 1581 + self.match(Java20Parser.LPAREN) + self.state = 1582 + self.match(Java20Parser.RPAREN) + self.state = 1584 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 80 or _la == 86: + self.state = 1583 + self.dims() + + self.state = 1587 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 29: + self.state = 1586 + self.defaultValue() + + self.state = 1589 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationInterfaceElementModifierContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def PUBLIC(self): + return self.getToken(Java20Parser.PUBLIC, 0) + + def ABSTRACT(self): + return self.getToken(Java20Parser.ABSTRACT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_annotationInterfaceElementModifier + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotationInterfaceElementModifier"): + listener.enterAnnotationInterfaceElementModifier(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotationInterfaceElementModifier"): + listener.exitAnnotationInterfaceElementModifier(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotationInterfaceElementModifier"): + return visitor.visitAnnotationInterfaceElementModifier(self) + else: + return visitor.visitChildren(self) + + def annotationInterfaceElementModifier(self): + + localctx = Java20Parser.AnnotationInterfaceElementModifierContext(self, self._ctx, self.state) + self.enterRule(localctx, 250, self.RULE_annotationInterfaceElementModifier) + try: + self.state = 1594 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [86]: + self.enterOuterAlt(localctx, 1) + self.state = 1591 + self.annotation() + pass + elif token in [52]: + self.enterOuterAlt(localctx, 2) + self.state = 1592 + self.match(Java20Parser.PUBLIC) + pass + elif token in [18]: + self.enterOuterAlt(localctx, 3) + self.state = 1593 + self.match(Java20Parser.ABSTRACT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DefaultValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEFAULT(self): + return self.getToken(Java20Parser.DEFAULT, 0) + + def elementValue(self): + return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_defaultValue + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDefaultValue"): + listener.enterDefaultValue(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDefaultValue"): + listener.exitDefaultValue(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDefaultValue"): + return visitor.visitDefaultValue(self) + else: + return visitor.visitChildren(self) + + def defaultValue(self): + + localctx = Java20Parser.DefaultValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 252, self.RULE_defaultValue) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1596 + self.match(Java20Parser.DEFAULT) + self.state = 1597 + self.elementValue() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnotationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def normalAnnotation(self): + return self.getTypedRuleContext(Java20Parser.NormalAnnotationContext, 0) + + def markerAnnotation(self): + return self.getTypedRuleContext(Java20Parser.MarkerAnnotationContext, 0) + + def singleElementAnnotation(self): + return self.getTypedRuleContext(Java20Parser.SingleElementAnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_annotation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnotation"): + listener.enterAnnotation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnotation"): + listener.exitAnnotation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnotation"): + return visitor.visitAnnotation(self) + else: + return visitor.visitChildren(self) + + def annotation(self): + + localctx = Java20Parser.AnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 254, self.RULE_annotation) + try: + self.state = 1602 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 170, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1599 + self.normalAnnotation() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1600 + self.markerAnnotation() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1601 + self.singleElementAnnotation() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NormalAnnotationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(Java20Parser.AT, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def elementValuePairList(self): + return self.getTypedRuleContext(Java20Parser.ElementValuePairListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_normalAnnotation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNormalAnnotation"): + listener.enterNormalAnnotation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNormalAnnotation"): + listener.exitNormalAnnotation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNormalAnnotation"): + return visitor.visitNormalAnnotation(self) + else: + return visitor.visitChildren(self) + + def normalAnnotation(self): + + localctx = Java20Parser.NormalAnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 256, self.RULE_normalAnnotation) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1604 + self.match(Java20Parser.AT) + self.state = 1605 + self.typeName() + self.state = 1606 + self.match(Java20Parser.LPAREN) + self.state = 1608 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 123: + self.state = 1607 + self.elementValuePairList() + + self.state = 1610 + self.match(Java20Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ElementValuePairListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def elementValuePair(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ElementValuePairContext) + else: + return self.getTypedRuleContext(Java20Parser.ElementValuePairContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_elementValuePairList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterElementValuePairList"): + listener.enterElementValuePairList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitElementValuePairList"): + listener.exitElementValuePairList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitElementValuePairList"): + return visitor.visitElementValuePairList(self) + else: + return visitor.visitChildren(self) + + def elementValuePairList(self): + + localctx = Java20Parser.ElementValuePairListContext(self, self._ctx, self.state) + self.enterRule(localctx, 258, self.RULE_elementValuePairList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1612 + self.elementValuePair() + self.state = 1617 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1613 + self.match(Java20Parser.COMMA) + self.state = 1614 + self.elementValuePair() + self.state = 1619 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ElementValuePairContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def ASSIGN(self): + return self.getToken(Java20Parser.ASSIGN, 0) + + def elementValue(self): + return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_elementValuePair + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterElementValuePair"): + listener.enterElementValuePair(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitElementValuePair"): + listener.exitElementValuePair(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitElementValuePair"): + return visitor.visitElementValuePair(self) + else: + return visitor.visitChildren(self) + + def elementValuePair(self): + + localctx = Java20Parser.ElementValuePairContext(self, self._ctx, self.state) + self.enterRule(localctx, 260, self.RULE_elementValuePair) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1620 + self.match(Java20Parser.Identifier) + self.state = 1621 + self.match(Java20Parser.ASSIGN) + self.state = 1622 + self.elementValue() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ElementValueContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def conditionalExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0) + + def elementValueArrayInitializer(self): + return self.getTypedRuleContext(Java20Parser.ElementValueArrayInitializerContext, 0) + + def annotation(self): + return self.getTypedRuleContext(Java20Parser.AnnotationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_elementValue + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterElementValue"): + listener.enterElementValue(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitElementValue"): + listener.exitElementValue(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitElementValue"): + return visitor.visitElementValue(self) + else: + return visitor.visitChildren(self) + + def elementValue(self): + + localctx = Java20Parser.ElementValueContext(self, self._ctx, self.state) + self.enterRule(localctx, 262, self.RULE_elementValue) + try: + self.state = 1627 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 173, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1624 + self.conditionalExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1625 + self.elementValueArrayInitializer() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1626 + self.annotation() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ElementValueArrayInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def elementValueList(self): + return self.getTypedRuleContext(Java20Parser.ElementValueListContext, 0) + + def COMMA(self): + return self.getToken(Java20Parser.COMMA, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_elementValueArrayInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterElementValueArrayInitializer"): + listener.enterElementValueArrayInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitElementValueArrayInitializer"): + listener.exitElementValueArrayInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitElementValueArrayInitializer"): + return visitor.visitElementValueArrayInitializer(self) + else: + return visitor.visitChildren(self) + + def elementValueArrayInitializer(self): + + localctx = Java20Parser.ElementValueArrayInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 264, self.RULE_elementValueArrayInitializer) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1629 + self.match(Java20Parser.LBRACE) + self.state = 1631 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0): + self.state = 1630 + self.elementValueList() + + self.state = 1634 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 83: + self.state = 1633 + self.match(Java20Parser.COMMA) + + self.state = 1636 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ElementValueListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def elementValue(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ElementValueContext) + else: + return self.getTypedRuleContext(Java20Parser.ElementValueContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_elementValueList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterElementValueList"): + listener.enterElementValueList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitElementValueList"): + listener.exitElementValueList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitElementValueList"): + return visitor.visitElementValueList(self) + else: + return visitor.visitChildren(self) + + def elementValueList(self): + + localctx = Java20Parser.ElementValueListContext(self, self._ctx, self.state) + self.enterRule(localctx, 266, self.RULE_elementValueList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1638 + self.elementValue() + self.state = 1643 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 176, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1639 + self.match(Java20Parser.COMMA) + self.state = 1640 + self.elementValue() + self.state = 1645 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 176, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MarkerAnnotationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(Java20Parser.AT, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_markerAnnotation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMarkerAnnotation"): + listener.enterMarkerAnnotation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMarkerAnnotation"): + listener.exitMarkerAnnotation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMarkerAnnotation"): + return visitor.visitMarkerAnnotation(self) + else: + return visitor.visitChildren(self) + + def markerAnnotation(self): + + localctx = Java20Parser.MarkerAnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 268, self.RULE_markerAnnotation) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1646 + self.match(Java20Parser.AT) + self.state = 1647 + self.typeName() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SingleElementAnnotationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(Java20Parser.AT, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def elementValue(self): + return self.getTypedRuleContext(Java20Parser.ElementValueContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_singleElementAnnotation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSingleElementAnnotation"): + listener.enterSingleElementAnnotation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSingleElementAnnotation"): + listener.exitSingleElementAnnotation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSingleElementAnnotation"): + return visitor.visitSingleElementAnnotation(self) + else: + return visitor.visitChildren(self) + + def singleElementAnnotation(self): + + localctx = Java20Parser.SingleElementAnnotationContext(self, self._ctx, self.state) + self.enterRule(localctx, 270, self.RULE_singleElementAnnotation) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1649 + self.match(Java20Parser.AT) + self.state = 1650 + self.typeName() + self.state = 1651 + self.match(Java20Parser.LPAREN) + self.state = 1652 + self.elementValue() + self.state = 1653 + self.match(Java20Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def variableInitializerList(self): + return self.getTypedRuleContext(Java20Parser.VariableInitializerListContext, 0) + + def COMMA(self): + return self.getToken(Java20Parser.COMMA, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayInitializer"): + listener.enterArrayInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayInitializer"): + listener.exitArrayInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayInitializer"): + return visitor.visitArrayInitializer(self) + else: + return visitor.visitChildren(self) + + def arrayInitializer(self): + + localctx = Java20Parser.ArrayInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 272, self.RULE_arrayInitializer) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1655 + self.match(Java20Parser.LBRACE) + self.state = 1657 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939449841) != 0): + self.state = 1656 + self.variableInitializerList() + + self.state = 1660 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 83: + self.state = 1659 + self.match(Java20Parser.COMMA) + + self.state = 1662 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableInitializerListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def variableInitializer(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableInitializerContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableInitializerContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_variableInitializerList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableInitializerList"): + listener.enterVariableInitializerList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableInitializerList"): + listener.exitVariableInitializerList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableInitializerList"): + return visitor.visitVariableInitializerList(self) + else: + return visitor.visitChildren(self) + + def variableInitializerList(self): + + localctx = Java20Parser.VariableInitializerListContext(self, self._ctx, self.state) + self.enterRule(localctx, 274, self.RULE_variableInitializerList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1664 + self.variableInitializer() + self.state = 1669 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 179, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1665 + self.match(Java20Parser.COMMA) + self.state = 1666 + self.variableInitializer() + self.state = 1671 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 179, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def blockStatements(self): + return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_block + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBlock"): + listener.enterBlock(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBlock"): + listener.exitBlock(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBlock"): + return visitor.visitBlock(self) + else: + return visitor.visitChildren(self) + + def block(self): + + localctx = Java20Parser.BlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 276, self.RULE_block) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1672 + self.match(Java20Parser.LBRACE) + self.state = 1674 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0): + self.state = 1673 + self.blockStatements() + + self.state = 1676 + self.match(Java20Parser.RBRACE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BlockStatementsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def blockStatement(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.BlockStatementContext) + else: + return self.getTypedRuleContext(Java20Parser.BlockStatementContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_blockStatements + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBlockStatements"): + listener.enterBlockStatements(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBlockStatements"): + listener.exitBlockStatements(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBlockStatements"): + return visitor.visitBlockStatements(self) + else: + return visitor.visitChildren(self) + + def blockStatements(self): + + localctx = Java20Parser.BlockStatementsContext(self, self._ctx, self.state) + self.enterRule(localctx, 278, self.RULE_blockStatements) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1678 + self.blockStatement() + self.state = 1682 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 4610965747420531208) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 576461576941625323) != 0): + self.state = 1679 + self.blockStatement() + self.state = 1684 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BlockStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def localClassOrInterfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalClassOrInterfaceDeclarationContext, 0) + + def localVariableDeclarationStatement(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationStatementContext, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_blockStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBlockStatement"): + listener.enterBlockStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBlockStatement"): + listener.exitBlockStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBlockStatement"): + return visitor.visitBlockStatement(self) + else: + return visitor.visitChildren(self) + + def blockStatement(self): + + localctx = Java20Parser.BlockStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 280, self.RULE_blockStatement) + try: + self.state = 1688 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 182, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1685 + self.localClassOrInterfaceDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1686 + self.localVariableDeclarationStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1687 + self.statement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LocalClassOrInterfaceDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def classDeclaration(self): + return self.getTypedRuleContext(Java20Parser.ClassDeclarationContext, 0) + + def normalInterfaceDeclaration(self): + return self.getTypedRuleContext(Java20Parser.NormalInterfaceDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_localClassOrInterfaceDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLocalClassOrInterfaceDeclaration"): + listener.enterLocalClassOrInterfaceDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLocalClassOrInterfaceDeclaration"): + listener.exitLocalClassOrInterfaceDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLocalClassOrInterfaceDeclaration"): + return visitor.visitLocalClassOrInterfaceDeclaration(self) + else: + return visitor.visitChildren(self) + + def localClassOrInterfaceDeclaration(self): + + localctx = Java20Parser.LocalClassOrInterfaceDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 282, self.RULE_localClassOrInterfaceDeclaration) + try: + self.state = 1692 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 183, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1690 + self.classDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1691 + self.normalInterfaceDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LocalVariableDeclarationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def localVariableType(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableTypeContext, 0) + + def variableModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i) + + def variableDeclaratorList(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_localVariableDeclaration + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLocalVariableDeclaration"): + listener.enterLocalVariableDeclaration(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLocalVariableDeclaration"): + listener.exitLocalVariableDeclaration(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLocalVariableDeclaration"): + return visitor.visitLocalVariableDeclaration(self) + else: + return visitor.visitChildren(self) + + def localVariableDeclaration(self): + + localctx = Java20Parser.LocalVariableDeclarationContext(self, self._ctx, self.state) + self.enterRule(localctx, 284, self.RULE_localVariableDeclaration) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1697 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 35 or _la == 86: + self.state = 1694 + self.variableModifier() + self.state = 1699 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1700 + self.localVariableType() + self.state = 1702 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 185, self._ctx) + if la_ == 1: + self.state = 1701 + self.variableDeclaratorList() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LocalVariableTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def VAR(self): + return self.getToken(Java20Parser.VAR, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_localVariableType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLocalVariableType"): + listener.enterLocalVariableType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLocalVariableType"): + listener.exitLocalVariableType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLocalVariableType"): + return visitor.visitLocalVariableType(self) + else: + return visitor.visitChildren(self) + + def localVariableType(self): + + localctx = Java20Parser.LocalVariableTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 286, self.RULE_localVariableType) + try: + self.state = 1706 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]: + self.enterOuterAlt(localctx, 1) + self.state = 1704 + self.unannType() + pass + elif token in [15]: + self.enterOuterAlt(localctx, 2) + self.state = 1705 + self.match(Java20Parser.VAR) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LocalVariableDeclarationStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_localVariableDeclarationStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLocalVariableDeclarationStatement"): + listener.enterLocalVariableDeclarationStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLocalVariableDeclarationStatement"): + listener.exitLocalVariableDeclarationStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLocalVariableDeclarationStatement"): + return visitor.visitLocalVariableDeclarationStatement(self) + else: + return visitor.visitChildren(self) + + def localVariableDeclarationStatement(self): + + localctx = Java20Parser.LocalVariableDeclarationStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 288, self.RULE_localVariableDeclarationStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1708 + self.localVariableDeclaration() + self.state = 1709 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementWithoutTrailingSubstatement(self): + return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0) + + def labeledStatement(self): + return self.getTypedRuleContext(Java20Parser.LabeledStatementContext, 0) + + def ifThenStatement(self): + return self.getTypedRuleContext(Java20Parser.IfThenStatementContext, 0) + + def ifThenElseStatement(self): + return self.getTypedRuleContext(Java20Parser.IfThenElseStatementContext, 0) + + def whileStatement(self): + return self.getTypedRuleContext(Java20Parser.WhileStatementContext, 0) + + def forStatement(self): + return self.getTypedRuleContext(Java20Parser.ForStatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_statement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStatement"): + listener.enterStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStatement"): + listener.exitStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStatement"): + return visitor.visitStatement(self) + else: + return visitor.visitChildren(self) + + def statement(self): + + localctx = Java20Parser.StatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 290, self.RULE_statement) + try: + self.state = 1717 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 187, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1711 + self.statementWithoutTrailingSubstatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1712 + self.labeledStatement() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1713 + self.ifThenStatement() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1714 + self.ifThenElseStatement() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1715 + self.whileStatement() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 1716 + self.forStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementWithoutTrailingSubstatement(self): + return self.getTypedRuleContext(Java20Parser.StatementWithoutTrailingSubstatementContext, 0) + + def labeledStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.LabeledStatementNoShortIfContext, 0) + + def ifThenElseStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.IfThenElseStatementNoShortIfContext, 0) + + def whileStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.WhileStatementNoShortIfContext, 0) + + def forStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.ForStatementNoShortIfContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_statementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStatementNoShortIf"): + listener.enterStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStatementNoShortIf"): + listener.exitStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStatementNoShortIf"): + return visitor.visitStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def statementNoShortIf(self): + + localctx = Java20Parser.StatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 292, self.RULE_statementNoShortIf) + try: + self.state = 1724 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 188, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1719 + self.statementWithoutTrailingSubstatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1720 + self.labeledStatementNoShortIf() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1721 + self.ifThenElseStatementNoShortIf() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1722 + self.whileStatementNoShortIf() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1723 + self.forStatementNoShortIf() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementWithoutTrailingSubstatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def emptyStatement_(self): + return self.getTypedRuleContext(Java20Parser.EmptyStatement_Context, 0) + + def expressionStatement(self): + return self.getTypedRuleContext(Java20Parser.ExpressionStatementContext, 0) + + def assertStatement(self): + return self.getTypedRuleContext(Java20Parser.AssertStatementContext, 0) + + def switchStatement(self): + return self.getTypedRuleContext(Java20Parser.SwitchStatementContext, 0) + + def doStatement(self): + return self.getTypedRuleContext(Java20Parser.DoStatementContext, 0) + + def breakStatement(self): + return self.getTypedRuleContext(Java20Parser.BreakStatementContext, 0) + + def continueStatement(self): + return self.getTypedRuleContext(Java20Parser.ContinueStatementContext, 0) + + def returnStatement(self): + return self.getTypedRuleContext(Java20Parser.ReturnStatementContext, 0) + + def synchronizedStatement(self): + return self.getTypedRuleContext(Java20Parser.SynchronizedStatementContext, 0) + + def throwStatement(self): + return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0) + + def tryStatement(self): + return self.getTypedRuleContext(Java20Parser.TryStatementContext, 0) + + def yieldStatement(self): + return self.getTypedRuleContext(Java20Parser.YieldStatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_statementWithoutTrailingSubstatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStatementWithoutTrailingSubstatement"): + listener.enterStatementWithoutTrailingSubstatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStatementWithoutTrailingSubstatement"): + listener.exitStatementWithoutTrailingSubstatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStatementWithoutTrailingSubstatement"): + return visitor.visitStatementWithoutTrailingSubstatement(self) + else: + return visitor.visitChildren(self) + + def statementWithoutTrailingSubstatement(self): + + localctx = Java20Parser.StatementWithoutTrailingSubstatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 294, self.RULE_statementWithoutTrailingSubstatement) + try: + self.state = 1739 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [78]: + self.enterOuterAlt(localctx, 1) + self.state = 1726 + self.block() + pass + elif token in [82]: + self.enterOuterAlt(localctx, 2) + self.state = 1727 + self.emptyStatement_() + pass + elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 102, 103, + 123]: + self.enterOuterAlt(localctx, 3) + self.state = 1728 + self.expressionStatement() + pass + elif token in [19]: + self.enterOuterAlt(localctx, 4) + self.state = 1729 + self.assertStatement() + pass + elif token in [58]: + self.enterOuterAlt(localctx, 5) + self.state = 1730 + self.switchStatement() + pass + elif token in [30]: + self.enterOuterAlt(localctx, 6) + self.state = 1731 + self.doStatement() + pass + elif token in [21]: + self.enterOuterAlt(localctx, 7) + self.state = 1732 + self.breakStatement() + pass + elif token in [28]: + self.enterOuterAlt(localctx, 8) + self.state = 1733 + self.continueStatement() + pass + elif token in [53]: + self.enterOuterAlt(localctx, 9) + self.state = 1734 + self.returnStatement() + pass + elif token in [59]: + self.enterOuterAlt(localctx, 10) + self.state = 1735 + self.synchronizedStatement() + pass + elif token in [61]: + self.enterOuterAlt(localctx, 11) + self.state = 1736 + self.throwStatement() + pass + elif token in [64]: + self.enterOuterAlt(localctx, 12) + self.state = 1737 + self.tryStatement() + pass + elif token in [17]: + self.enterOuterAlt(localctx, 13) + self.state = 1738 + self.yieldStatement() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EmptyStatement_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_emptyStatement_ + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEmptyStatement_"): + listener.enterEmptyStatement_(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEmptyStatement_"): + listener.exitEmptyStatement_(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEmptyStatement_"): + return visitor.visitEmptyStatement_(self) + else: + return visitor.visitChildren(self) + + def emptyStatement_(self): + + localctx = Java20Parser.EmptyStatement_Context(self, self._ctx, self.state) + self.enterRule(localctx, 296, self.RULE_emptyStatement_) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1741 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LabeledStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_labeledStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLabeledStatement"): + listener.enterLabeledStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLabeledStatement"): + listener.exitLabeledStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLabeledStatement"): + return visitor.visitLabeledStatement(self) + else: + return visitor.visitChildren(self) + + def labeledStatement(self): + + localctx = Java20Parser.LabeledStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 298, self.RULE_labeledStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1743 + self.match(Java20Parser.Identifier) + self.state = 1744 + self.match(Java20Parser.COLON) + self.state = 1745 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LabeledStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def statementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_labeledStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLabeledStatementNoShortIf"): + listener.enterLabeledStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLabeledStatementNoShortIf"): + listener.exitLabeledStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLabeledStatementNoShortIf"): + return visitor.visitLabeledStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def labeledStatementNoShortIf(self): + + localctx = Java20Parser.LabeledStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 300, self.RULE_labeledStatementNoShortIf) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1747 + self.match(Java20Parser.Identifier) + self.state = 1748 + self.match(Java20Parser.COLON) + self.state = 1749 + self.statementNoShortIf() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExpressionStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementExpression(self): + return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_expressionStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExpressionStatement"): + listener.enterExpressionStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExpressionStatement"): + listener.exitExpressionStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpressionStatement"): + return visitor.visitExpressionStatement(self) + else: + return visitor.visitChildren(self) + + def expressionStatement(self): + + localctx = Java20Parser.ExpressionStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 302, self.RULE_expressionStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1751 + self.statementExpression() + self.state = 1752 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def assignment(self): + return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0) + + def preIncrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0) + + def preDecrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0) + + def postIncrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PostIncrementExpressionContext, 0) + + def postDecrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PostDecrementExpressionContext, 0) + + def methodInvocation(self): + return self.getTypedRuleContext(Java20Parser.MethodInvocationContext, 0) + + def classInstanceCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.ClassInstanceCreationExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_statementExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStatementExpression"): + listener.enterStatementExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStatementExpression"): + listener.exitStatementExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStatementExpression"): + return visitor.visitStatementExpression(self) + else: + return visitor.visitChildren(self) + + def statementExpression(self): + + localctx = Java20Parser.StatementExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 304, self.RULE_statementExpression) + try: + self.state = 1761 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 190, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1754 + self.assignment() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1755 + self.preIncrementExpression() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1756 + self.preDecrementExpression() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1757 + self.postIncrementExpression() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1758 + self.postDecrementExpression() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 1759 + self.methodInvocation() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 1760 + self.classInstanceCreationExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IfThenStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Java20Parser.IF, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_ifThenStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterIfThenStatement"): + listener.enterIfThenStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitIfThenStatement"): + listener.exitIfThenStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIfThenStatement"): + return visitor.visitIfThenStatement(self) + else: + return visitor.visitChildren(self) + + def ifThenStatement(self): + + localctx = Java20Parser.IfThenStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 306, self.RULE_ifThenStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1763 + self.match(Java20Parser.IF) + self.state = 1764 + self.match(Java20Parser.LPAREN) + self.state = 1765 + self.expression() + self.state = 1766 + self.match(Java20Parser.RPAREN) + self.state = 1767 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IfThenElseStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Java20Parser.IF, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0) + + def ELSE(self): + return self.getToken(Java20Parser.ELSE, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_ifThenElseStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterIfThenElseStatement"): + listener.enterIfThenElseStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitIfThenElseStatement"): + listener.exitIfThenElseStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIfThenElseStatement"): + return visitor.visitIfThenElseStatement(self) + else: + return visitor.visitChildren(self) + + def ifThenElseStatement(self): + + localctx = Java20Parser.IfThenElseStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 308, self.RULE_ifThenElseStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1769 + self.match(Java20Parser.IF) + self.state = 1770 + self.match(Java20Parser.LPAREN) + self.state = 1771 + self.expression() + self.state = 1772 + self.match(Java20Parser.RPAREN) + self.state = 1773 + self.statementNoShortIf() + self.state = 1774 + self.match(Java20Parser.ELSE) + self.state = 1775 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class IfThenElseStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Java20Parser.IF, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statementNoShortIf(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.StatementNoShortIfContext) + else: + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, i) + + def ELSE(self): + return self.getToken(Java20Parser.ELSE, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_ifThenElseStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterIfThenElseStatementNoShortIf"): + listener.enterIfThenElseStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitIfThenElseStatementNoShortIf"): + listener.exitIfThenElseStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIfThenElseStatementNoShortIf"): + return visitor.visitIfThenElseStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def ifThenElseStatementNoShortIf(self): + + localctx = Java20Parser.IfThenElseStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 310, self.RULE_ifThenElseStatementNoShortIf) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1777 + self.match(Java20Parser.IF) + self.state = 1778 + self.match(Java20Parser.LPAREN) + self.state = 1779 + self.expression() + self.state = 1780 + self.match(Java20Parser.RPAREN) + self.state = 1781 + self.statementNoShortIf() + self.state = 1782 + self.match(Java20Parser.ELSE) + self.state = 1783 + self.statementNoShortIf() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssertStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ASSERT(self): + return self.getToken(Java20Parser.ASSERT, 0) + + def expression(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ExpressionContext) + else: + return self.getTypedRuleContext(Java20Parser.ExpressionContext, i) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_assertStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAssertStatement"): + listener.enterAssertStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAssertStatement"): + listener.exitAssertStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAssertStatement"): + return visitor.visitAssertStatement(self) + else: + return visitor.visitChildren(self) + + def assertStatement(self): + + localctx = Java20Parser.AssertStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 312, self.RULE_assertStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1785 + self.match(Java20Parser.ASSERT) + self.state = 1786 + self.expression() + self.state = 1789 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 94: + self.state = 1787 + self.match(Java20Parser.COLON) + self.state = 1788 + self.expression() + + self.state = 1791 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def SWITCH(self): + return self.getToken(Java20Parser.SWITCH, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def switchBlock(self): + return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_switchStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchStatement"): + listener.enterSwitchStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchStatement"): + listener.exitSwitchStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchStatement"): + return visitor.visitSwitchStatement(self) + else: + return visitor.visitChildren(self) + + def switchStatement(self): + + localctx = Java20Parser.SwitchStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 314, self.RULE_switchStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1793 + self.match(Java20Parser.SWITCH) + self.state = 1794 + self.match(Java20Parser.LPAREN) + self.state = 1795 + self.expression() + self.state = 1796 + self.match(Java20Parser.RPAREN) + self.state = 1797 + self.switchBlock() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchBlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACE(self): + return self.getToken(Java20Parser.LBRACE, 0) + + def switchRule(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.SwitchRuleContext) + else: + return self.getTypedRuleContext(Java20Parser.SwitchRuleContext, i) + + def RBRACE(self): + return self.getToken(Java20Parser.RBRACE, 0) + + def switchBlockStatementGroup(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.SwitchBlockStatementGroupContext) + else: + return self.getTypedRuleContext(Java20Parser.SwitchBlockStatementGroupContext, i) + + def switchLabel(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext) + else: + return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COLON) + else: + return self.getToken(Java20Parser.COLON, i) + + def getRuleIndex(self): + return Java20Parser.RULE_switchBlock + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchBlock"): + listener.enterSwitchBlock(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchBlock"): + listener.exitSwitchBlock(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchBlock"): + return visitor.visitSwitchBlock(self) + else: + return visitor.visitChildren(self) + + def switchBlock(self): + + localctx = Java20Parser.SwitchBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 316, self.RULE_switchBlock) + self._la = 0 # Token type + try: + self.state = 1825 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 195, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1799 + self.match(Java20Parser.LBRACE) + self.state = 1800 + self.switchRule() + self.state = 1804 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 23 or _la == 29: + self.state = 1801 + self.switchRule() + self.state = 1806 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1807 + self.match(Java20Parser.RBRACE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1809 + self.match(Java20Parser.LBRACE) + self.state = 1813 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 193, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1810 + self.switchBlockStatementGroup() + self.state = 1815 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 193, self._ctx) + + self.state = 1821 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 23 or _la == 29: + self.state = 1816 + self.switchLabel() + self.state = 1817 + self.match(Java20Parser.COLON) + self.state = 1823 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1824 + self.match(Java20Parser.RBRACE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchRuleContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def switchLabel(self): + return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, 0) + + def ARROW(self): + return self.getToken(Java20Parser.ARROW, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def throwStatement(self): + return self.getTypedRuleContext(Java20Parser.ThrowStatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_switchRule + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchRule"): + listener.enterSwitchRule(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchRule"): + listener.exitSwitchRule(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchRule"): + return visitor.visitSwitchRule(self) + else: + return visitor.visitChildren(self) + + def switchRule(self): + + localctx = Java20Parser.SwitchRuleContext(self, self._ctx, self.state) + self.enterRule(localctx, 318, self.RULE_switchRule) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1827 + self.switchLabel() + self.state = 1828 + self.match(Java20Parser.ARROW) + self.state = 1834 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92, + 102, 103, 104, 105, 123]: + self.state = 1829 + self.expression() + self.state = 1830 + self.match(Java20Parser.SEMI) + pass + elif token in [78]: + self.state = 1832 + self.block() + pass + elif token in [61]: + self.state = 1833 + self.throwStatement() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchBlockStatementGroupContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def switchLabel(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.SwitchLabelContext) + else: + return self.getTypedRuleContext(Java20Parser.SwitchLabelContext, i) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COLON) + else: + return self.getToken(Java20Parser.COLON, i) + + def blockStatements(self): + return self.getTypedRuleContext(Java20Parser.BlockStatementsContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_switchBlockStatementGroup + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchBlockStatementGroup"): + listener.enterSwitchBlockStatementGroup(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchBlockStatementGroup"): + listener.exitSwitchBlockStatementGroup(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchBlockStatementGroup"): + return visitor.visitSwitchBlockStatementGroup(self) + else: + return visitor.visitChildren(self) + + def switchBlockStatementGroup(self): + + localctx = Java20Parser.SwitchBlockStatementGroupContext(self, self._ctx, self.state) + self.enterRule(localctx, 320, self.RULE_switchBlockStatementGroup) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1836 + self.switchLabel() + self.state = 1837 + self.match(Java20Parser.COLON) + self.state = 1843 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 23 or _la == 29: + self.state = 1838 + self.switchLabel() + self.state = 1839 + self.match(Java20Parser.COLON) + self.state = 1845 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 1846 + self.blockStatements() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchLabelContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CASE(self): + return self.getToken(Java20Parser.CASE, 0) + + def caseConstant(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.CaseConstantContext) + else: + return self.getTypedRuleContext(Java20Parser.CaseConstantContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def DEFAULT(self): + return self.getToken(Java20Parser.DEFAULT, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_switchLabel + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchLabel"): + listener.enterSwitchLabel(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchLabel"): + listener.exitSwitchLabel(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchLabel"): + return visitor.visitSwitchLabel(self) + else: + return visitor.visitChildren(self) + + def switchLabel(self): + + localctx = Java20Parser.SwitchLabelContext(self, self._ctx, self.state) + self.enterRule(localctx, 322, self.RULE_switchLabel) + self._la = 0 # Token type + try: + self.state = 1858 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [23]: + self.enterOuterAlt(localctx, 1) + self.state = 1848 + self.match(Java20Parser.CASE) + self.state = 1849 + self.caseConstant() + self.state = 1854 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1850 + self.match(Java20Parser.COMMA) + self.state = 1851 + self.caseConstant() + self.state = 1856 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + elif token in [29]: + self.enterOuterAlt(localctx, 2) + self.state = 1857 + self.match(Java20Parser.DEFAULT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CaseConstantContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def conditionalExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_caseConstant + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCaseConstant"): + listener.enterCaseConstant(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCaseConstant"): + listener.exitCaseConstant(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCaseConstant"): + return visitor.visitCaseConstant(self) + else: + return visitor.visitChildren(self) + + def caseConstant(self): + + localctx = Java20Parser.CaseConstantContext(self, self._ctx, self.state) + self.enterRule(localctx, 324, self.RULE_caseConstant) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1860 + self.conditionalExpression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WhileStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHILE(self): + return self.getToken(Java20Parser.WHILE, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_whileStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWhileStatement"): + listener.enterWhileStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWhileStatement"): + listener.exitWhileStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWhileStatement"): + return visitor.visitWhileStatement(self) + else: + return visitor.visitChildren(self) + + def whileStatement(self): + + localctx = Java20Parser.WhileStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 326, self.RULE_whileStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1862 + self.match(Java20Parser.WHILE) + self.state = 1863 + self.match(Java20Parser.LPAREN) + self.state = 1864 + self.expression() + self.state = 1865 + self.match(Java20Parser.RPAREN) + self.state = 1866 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class WhileStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHILE(self): + return self.getToken(Java20Parser.WHILE, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_whileStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWhileStatementNoShortIf"): + listener.enterWhileStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWhileStatementNoShortIf"): + listener.exitWhileStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWhileStatementNoShortIf"): + return visitor.visitWhileStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def whileStatementNoShortIf(self): + + localctx = Java20Parser.WhileStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 328, self.RULE_whileStatementNoShortIf) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1868 + self.match(Java20Parser.WHILE) + self.state = 1869 + self.match(Java20Parser.LPAREN) + self.state = 1870 + self.expression() + self.state = 1871 + self.match(Java20Parser.RPAREN) + self.state = 1872 + self.statementNoShortIf() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DoStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DO(self): + return self.getToken(Java20Parser.DO, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def WHILE(self): + return self.getToken(Java20Parser.WHILE, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_doStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDoStatement"): + listener.enterDoStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDoStatement"): + listener.exitDoStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDoStatement"): + return visitor.visitDoStatement(self) + else: + return visitor.visitChildren(self) + + def doStatement(self): + + localctx = Java20Parser.DoStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 330, self.RULE_doStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1874 + self.match(Java20Parser.DO) + self.state = 1875 + self.statement() + self.state = 1876 + self.match(Java20Parser.WHILE) + self.state = 1877 + self.match(Java20Parser.LPAREN) + self.state = 1878 + self.expression() + self.state = 1879 + self.match(Java20Parser.RPAREN) + self.state = 1880 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ForStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def basicForStatement(self): + return self.getTypedRuleContext(Java20Parser.BasicForStatementContext, 0) + + def enhancedForStatement(self): + return self.getTypedRuleContext(Java20Parser.EnhancedForStatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_forStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterForStatement"): + listener.enterForStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitForStatement"): + listener.exitForStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitForStatement"): + return visitor.visitForStatement(self) + else: + return visitor.visitChildren(self) + + def forStatement(self): + + localctx = Java20Parser.ForStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 332, self.RULE_forStatement) + try: + self.state = 1884 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 200, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1882 + self.basicForStatement() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1883 + self.enhancedForStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def basicForStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.BasicForStatementNoShortIfContext, 0) + + def enhancedForStatementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.EnhancedForStatementNoShortIfContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_forStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterForStatementNoShortIf"): + listener.enterForStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitForStatementNoShortIf"): + listener.exitForStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitForStatementNoShortIf"): + return visitor.visitForStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def forStatementNoShortIf(self): + + localctx = Java20Parser.ForStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 334, self.RULE_forStatementNoShortIf) + try: + self.state = 1888 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 201, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1886 + self.basicForStatementNoShortIf() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1887 + self.enhancedForStatementNoShortIf() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BasicForStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Java20Parser.FOR, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def SEMI(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.SEMI) + else: + return self.getToken(Java20Parser.SEMI, i) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def forInit(self): + return self.getTypedRuleContext(Java20Parser.ForInitContext, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def forUpdate(self): + return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_basicForStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBasicForStatement"): + listener.enterBasicForStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBasicForStatement"): + listener.exitBasicForStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBasicForStatement"): + return visitor.visitBasicForStatement(self) + else: + return visitor.visitChildren(self) + + def basicForStatement(self): + + localctx = Java20Parser.BasicForStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 336, self.RULE_basicForStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1890 + self.match(Java20Parser.FOR) + self.state = 1891 + self.match(Java20Parser.LPAREN) + self.state = 1893 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0): + self.state = 1892 + self.forInit() + + self.state = 1895 + self.match(Java20Parser.SEMI) + self.state = 1897 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1896 + self.expression() + + self.state = 1899 + self.match(Java20Parser.SEMI) + self.state = 1901 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0): + self.state = 1900 + self.forUpdate() + + self.state = 1903 + self.match(Java20Parser.RPAREN) + self.state = 1904 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BasicForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Java20Parser.FOR, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def SEMI(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.SEMI) + else: + return self.getToken(Java20Parser.SEMI, i) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0) + + def forInit(self): + return self.getTypedRuleContext(Java20Parser.ForInitContext, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def forUpdate(self): + return self.getTypedRuleContext(Java20Parser.ForUpdateContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_basicForStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBasicForStatementNoShortIf"): + listener.enterBasicForStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBasicForStatementNoShortIf"): + listener.exitBasicForStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBasicForStatementNoShortIf"): + return visitor.visitBasicForStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def basicForStatementNoShortIf(self): + + localctx = Java20Parser.BasicForStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 338, self.RULE_basicForStatementNoShortIf) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1906 + self.match(Java20Parser.FOR) + self.state = 1907 + self.match(Java20Parser.LPAREN) + self.state = 1909 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420701084123136) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0): + self.state = 1908 + self.forInit() + + self.state = 1911 + self.match(Java20Parser.SEMI) + self.state = 1913 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1912 + self.expression() + + self.state = 1915 + self.match(Java20Parser.SEMI) + self.state = 1917 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1315420666724352000) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288230788470673393) != 0): + self.state = 1916 + self.forUpdate() + + self.state = 1919 + self.match(Java20Parser.RPAREN) + self.state = 1920 + self.statementNoShortIf() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ForInitContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementExpressionList(self): + return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0) + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_forInit + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterForInit"): + listener.enterForInit(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitForInit"): + listener.exitForInit(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitForInit"): + return visitor.visitForInit(self) + else: + return visitor.visitChildren(self) + + def forInit(self): + + localctx = Java20Parser.ForInitContext(self, self._ctx, self.state) + self.enterRule(localctx, 340, self.RULE_forInit) + try: + self.state = 1924 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 208, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1922 + self.statementExpressionList() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1923 + self.localVariableDeclaration() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ForUpdateContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementExpressionList(self): + return self.getTypedRuleContext(Java20Parser.StatementExpressionListContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_forUpdate + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterForUpdate"): + listener.enterForUpdate(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitForUpdate"): + listener.exitForUpdate(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitForUpdate"): + return visitor.visitForUpdate(self) + else: + return visitor.visitChildren(self) + + def forUpdate(self): + + localctx = Java20Parser.ForUpdateContext(self, self._ctx, self.state) + self.enterRule(localctx, 342, self.RULE_forUpdate) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1926 + self.statementExpressionList() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StatementExpressionListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def statementExpression(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.StatementExpressionContext) + else: + return self.getTypedRuleContext(Java20Parser.StatementExpressionContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_statementExpressionList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStatementExpressionList"): + listener.enterStatementExpressionList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStatementExpressionList"): + listener.exitStatementExpressionList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStatementExpressionList"): + return visitor.visitStatementExpressionList(self) + else: + return visitor.visitChildren(self) + + def statementExpressionList(self): + + localctx = Java20Parser.StatementExpressionListContext(self, self._ctx, self.state) + self.enterRule(localctx, 344, self.RULE_statementExpressionList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1928 + self.statementExpression() + self.state = 1933 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 1929 + self.match(Java20Parser.COMMA) + self.state = 1930 + self.statementExpression() + self.state = 1935 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnhancedForStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Java20Parser.FOR, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statement(self): + return self.getTypedRuleContext(Java20Parser.StatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enhancedForStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnhancedForStatement"): + listener.enterEnhancedForStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnhancedForStatement"): + listener.exitEnhancedForStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnhancedForStatement"): + return visitor.visitEnhancedForStatement(self) + else: + return visitor.visitChildren(self) + + def enhancedForStatement(self): + + localctx = Java20Parser.EnhancedForStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 346, self.RULE_enhancedForStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1936 + self.match(Java20Parser.FOR) + self.state = 1937 + self.match(Java20Parser.LPAREN) + self.state = 1938 + self.localVariableDeclaration() + self.state = 1939 + self.match(Java20Parser.COLON) + self.state = 1940 + self.expression() + self.state = 1941 + self.match(Java20Parser.RPAREN) + self.state = 1942 + self.statement() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class EnhancedForStatementNoShortIfContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Java20Parser.FOR, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def statementNoShortIf(self): + return self.getTypedRuleContext(Java20Parser.StatementNoShortIfContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_enhancedForStatementNoShortIf + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEnhancedForStatementNoShortIf"): + listener.enterEnhancedForStatementNoShortIf(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEnhancedForStatementNoShortIf"): + listener.exitEnhancedForStatementNoShortIf(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEnhancedForStatementNoShortIf"): + return visitor.visitEnhancedForStatementNoShortIf(self) + else: + return visitor.visitChildren(self) + + def enhancedForStatementNoShortIf(self): + + localctx = Java20Parser.EnhancedForStatementNoShortIfContext(self, self._ctx, self.state) + self.enterRule(localctx, 348, self.RULE_enhancedForStatementNoShortIf) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1944 + self.match(Java20Parser.FOR) + self.state = 1945 + self.match(Java20Parser.LPAREN) + self.state = 1946 + self.localVariableDeclaration() + self.state = 1947 + self.match(Java20Parser.COLON) + self.state = 1948 + self.expression() + self.state = 1949 + self.match(Java20Parser.RPAREN) + self.state = 1950 + self.statementNoShortIf() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BreakStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def BREAK(self): + return self.getToken(Java20Parser.BREAK, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_breakStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBreakStatement"): + listener.enterBreakStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBreakStatement"): + listener.exitBreakStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBreakStatement"): + return visitor.visitBreakStatement(self) + else: + return visitor.visitChildren(self) + + def breakStatement(self): + + localctx = Java20Parser.BreakStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 350, self.RULE_breakStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1952 + self.match(Java20Parser.BREAK) + self.state = 1954 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 123: + self.state = 1953 + self.match(Java20Parser.Identifier) + + self.state = 1956 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ContinueStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CONTINUE(self): + return self.getToken(Java20Parser.CONTINUE, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_continueStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterContinueStatement"): + listener.enterContinueStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitContinueStatement"): + listener.exitContinueStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitContinueStatement"): + return visitor.visitContinueStatement(self) + else: + return visitor.visitChildren(self) + + def continueStatement(self): + + localctx = Java20Parser.ContinueStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 352, self.RULE_continueStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1958 + self.match(Java20Parser.CONTINUE) + self.state = 1960 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 123: + self.state = 1959 + self.match(Java20Parser.Identifier) + + self.state = 1962 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ReturnStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def RETURN(self): + return self.getToken(Java20Parser.RETURN, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_returnStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterReturnStatement"): + listener.enterReturnStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitReturnStatement"): + listener.exitReturnStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitReturnStatement"): + return visitor.visitReturnStatement(self) + else: + return visitor.visitChildren(self) + + def returnStatement(self): + + localctx = Java20Parser.ReturnStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 354, self.RULE_returnStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1964 + self.match(Java20Parser.RETURN) + self.state = 1966 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 1965 + self.expression() + + self.state = 1968 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ThrowStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def THROW(self): + return self.getToken(Java20Parser.THROW, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_throwStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterThrowStatement"): + listener.enterThrowStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitThrowStatement"): + listener.exitThrowStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitThrowStatement"): + return visitor.visitThrowStatement(self) + else: + return visitor.visitChildren(self) + + def throwStatement(self): + + localctx = Java20Parser.ThrowStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 356, self.RULE_throwStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1970 + self.match(Java20Parser.THROW) + self.state = 1971 + self.expression() + self.state = 1972 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SynchronizedStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def SYNCHRONIZED(self): + return self.getToken(Java20Parser.SYNCHRONIZED, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_synchronizedStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSynchronizedStatement"): + listener.enterSynchronizedStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSynchronizedStatement"): + listener.exitSynchronizedStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSynchronizedStatement"): + return visitor.visitSynchronizedStatement(self) + else: + return visitor.visitChildren(self) + + def synchronizedStatement(self): + + localctx = Java20Parser.SynchronizedStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 358, self.RULE_synchronizedStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1974 + self.match(Java20Parser.SYNCHRONIZED) + self.state = 1975 + self.match(Java20Parser.LPAREN) + self.state = 1976 + self.expression() + self.state = 1977 + self.match(Java20Parser.RPAREN) + self.state = 1978 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TryStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRY(self): + return self.getToken(Java20Parser.TRY, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def catches(self): + return self.getTypedRuleContext(Java20Parser.CatchesContext, 0) + + def finallyBlock(self): + return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0) + + def tryWithResourcesStatement(self): + return self.getTypedRuleContext(Java20Parser.TryWithResourcesStatementContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_tryStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTryStatement"): + listener.enterTryStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTryStatement"): + listener.exitTryStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTryStatement"): + return visitor.visitTryStatement(self) + else: + return visitor.visitChildren(self) + + def tryStatement(self): + + localctx = Java20Parser.TryStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 360, self.RULE_tryStatement) + self._la = 0 # Token type + try: + self.state = 1996 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 214, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1980 + self.match(Java20Parser.TRY) + self.state = 1981 + self.block() + self.state = 1982 + self.catches() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1984 + self.match(Java20Parser.TRY) + self.state = 1985 + self.block() + self.state = 1986 + self.finallyBlock() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1988 + self.match(Java20Parser.TRY) + self.state = 1989 + self.block() + self.state = 1991 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 24: + self.state = 1990 + self.catches() + + self.state = 1993 + self.finallyBlock() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1995 + self.tryWithResourcesStatement() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CatchesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def catchClause(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.CatchClauseContext) + else: + return self.getTypedRuleContext(Java20Parser.CatchClauseContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_catches + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCatches"): + listener.enterCatches(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCatches"): + listener.exitCatches(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCatches"): + return visitor.visitCatches(self) + else: + return visitor.visitChildren(self) + + def catches(self): + + localctx = Java20Parser.CatchesContext(self, self._ctx, self.state) + self.enterRule(localctx, 362, self.RULE_catches) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1998 + self.catchClause() + self.state = 2002 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 24: + self.state = 1999 + self.catchClause() + self.state = 2004 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CatchClauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CATCH(self): + return self.getToken(Java20Parser.CATCH, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def catchFormalParameter(self): + return self.getTypedRuleContext(Java20Parser.CatchFormalParameterContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_catchClause + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCatchClause"): + listener.enterCatchClause(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCatchClause"): + listener.exitCatchClause(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCatchClause"): + return visitor.visitCatchClause(self) + else: + return visitor.visitChildren(self) + + def catchClause(self): + + localctx = Java20Parser.CatchClauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 364, self.RULE_catchClause) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2005 + self.match(Java20Parser.CATCH) + self.state = 2006 + self.match(Java20Parser.LPAREN) + self.state = 2007 + self.catchFormalParameter() + self.state = 2008 + self.match(Java20Parser.RPAREN) + self.state = 2009 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CatchFormalParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def catchType(self): + return self.getTypedRuleContext(Java20Parser.CatchTypeContext, 0) + + def variableDeclaratorId(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0) + + def variableModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_catchFormalParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCatchFormalParameter"): + listener.enterCatchFormalParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCatchFormalParameter"): + listener.exitCatchFormalParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCatchFormalParameter"): + return visitor.visitCatchFormalParameter(self) + else: + return visitor.visitChildren(self) + + def catchFormalParameter(self): + + localctx = Java20Parser.CatchFormalParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 366, self.RULE_catchFormalParameter) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2014 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 35 or _la == 86: + self.state = 2011 + self.variableModifier() + self.state = 2016 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2017 + self.catchType() + self.state = 2018 + self.variableDeclaratorId() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CatchTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannClassType(self): + return self.getTypedRuleContext(Java20Parser.UnannClassTypeContext, 0) + + def BITOR(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.BITOR) + else: + return self.getToken(Java20Parser.BITOR, i) + + def classType(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ClassTypeContext) + else: + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_catchType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCatchType"): + listener.enterCatchType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCatchType"): + listener.exitCatchType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCatchType"): + return visitor.visitCatchType(self) + else: + return visitor.visitChildren(self) + + def catchType(self): + + localctx = Java20Parser.CatchTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 368, self.RULE_catchType) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2020 + self.unannClassType() + self.state = 2025 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 109: + self.state = 2021 + self.match(Java20Parser.BITOR) + self.state = 2022 + self.classType() + self.state = 2027 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FinallyBlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FINALLY(self): + return self.getToken(Java20Parser.FINALLY, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_finallyBlock + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFinallyBlock"): + listener.enterFinallyBlock(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFinallyBlock"): + listener.exitFinallyBlock(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFinallyBlock"): + return visitor.visitFinallyBlock(self) + else: + return visitor.visitChildren(self) + + def finallyBlock(self): + + localctx = Java20Parser.FinallyBlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 370, self.RULE_finallyBlock) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2028 + self.match(Java20Parser.FINALLY) + self.state = 2029 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TryWithResourcesStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRY(self): + return self.getToken(Java20Parser.TRY, 0) + + def resourceSpecification(self): + return self.getTypedRuleContext(Java20Parser.ResourceSpecificationContext, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def catches(self): + return self.getTypedRuleContext(Java20Parser.CatchesContext, 0) + + def finallyBlock(self): + return self.getTypedRuleContext(Java20Parser.FinallyBlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_tryWithResourcesStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTryWithResourcesStatement"): + listener.enterTryWithResourcesStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTryWithResourcesStatement"): + listener.exitTryWithResourcesStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTryWithResourcesStatement"): + return visitor.visitTryWithResourcesStatement(self) + else: + return visitor.visitChildren(self) + + def tryWithResourcesStatement(self): + + localctx = Java20Parser.TryWithResourcesStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 372, self.RULE_tryWithResourcesStatement) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2031 + self.match(Java20Parser.TRY) + self.state = 2032 + self.resourceSpecification() + self.state = 2033 + self.block() + self.state = 2035 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 24: + self.state = 2034 + self.catches() + + self.state = 2038 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 36: + self.state = 2037 + self.finallyBlock() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ResourceSpecificationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def resourceList(self): + return self.getTypedRuleContext(Java20Parser.ResourceListContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_resourceSpecification + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterResourceSpecification"): + listener.enterResourceSpecification(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitResourceSpecification"): + listener.exitResourceSpecification(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitResourceSpecification"): + return visitor.visitResourceSpecification(self) + else: + return visitor.visitChildren(self) + + def resourceSpecification(self): + + localctx = Java20Parser.ResourceSpecificationContext(self, self._ctx, self.state) + self.enterRule(localctx, 374, self.RULE_resourceSpecification) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2040 + self.match(Java20Parser.LPAREN) + self.state = 2041 + self.resourceList() + self.state = 2043 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 82: + self.state = 2042 + self.match(Java20Parser.SEMI) + + self.state = 2045 + self.match(Java20Parser.RPAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ResourceListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def resource(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ResourceContext) + else: + return self.getTypedRuleContext(Java20Parser.ResourceContext, i) + + def SEMI(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.SEMI) + else: + return self.getToken(Java20Parser.SEMI, i) + + def getRuleIndex(self): + return Java20Parser.RULE_resourceList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterResourceList"): + listener.enterResourceList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitResourceList"): + listener.exitResourceList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitResourceList"): + return visitor.visitResourceList(self) + else: + return visitor.visitChildren(self) + + def resourceList(self): + + localctx = Java20Parser.ResourceListContext(self, self._ctx, self.state) + self.enterRule(localctx, 376, self.RULE_resourceList) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2047 + self.resource() + self.state = 2052 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 221, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2048 + self.match(Java20Parser.SEMI) + self.state = 2049 + self.resource() + self.state = 2054 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 221, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ResourceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def variableAccess(self): + return self.getTypedRuleContext(Java20Parser.VariableAccessContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_resource + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterResource"): + listener.enterResource(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitResource"): + listener.exitResource(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitResource"): + return visitor.visitResource(self) + else: + return visitor.visitChildren(self) + + def resource(self): + + localctx = Java20Parser.ResourceContext(self, self._ctx, self.state) + self.enterRule(localctx, 378, self.RULE_resource) + try: + self.state = 2057 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 222, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2055 + self.localVariableDeclaration() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2056 + self.variableAccess() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VariableAccessContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def fieldAccess(self): + return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_variableAccess + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVariableAccess"): + listener.enterVariableAccess(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVariableAccess"): + listener.exitVariableAccess(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVariableAccess"): + return visitor.visitVariableAccess(self) + else: + return visitor.visitChildren(self) + + def variableAccess(self): + + localctx = Java20Parser.VariableAccessContext(self, self._ctx, self.state) + self.enterRule(localctx, 380, self.RULE_variableAccess) + try: + self.state = 2061 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 223, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2059 + self.expressionName() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2060 + self.fieldAccess() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class YieldStatementContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def YIELD(self): + return self.getToken(Java20Parser.YIELD, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def SEMI(self): + return self.getToken(Java20Parser.SEMI, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_yieldStatement + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterYieldStatement"): + listener.enterYieldStatement(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitYieldStatement"): + listener.exitYieldStatement(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitYieldStatement"): + return visitor.visitYieldStatement(self) + else: + return visitor.visitChildren(self) + + def yieldStatement(self): + + localctx = Java20Parser.YieldStatementContext(self, self._ctx, self.state) + self.enterRule(localctx, 382, self.RULE_yieldStatement) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2063 + self.match(Java20Parser.YIELD) + self.state = 2064 + self.expression() + self.state = 2065 + self.match(Java20Parser.SEMI) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PatternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typePattern(self): + return self.getTypedRuleContext(Java20Parser.TypePatternContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPattern"): + listener.enterPattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPattern"): + listener.exitPattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPattern"): + return visitor.visitPattern(self) + else: + return visitor.visitChildren(self) + + def pattern(self): + + localctx = Java20Parser.PatternContext(self, self._ctx, self.state) + self.enterRule(localctx, 384, self.RULE_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2067 + self.typePattern() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypePatternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def localVariableDeclaration(self): + return self.getTypedRuleContext(Java20Parser.LocalVariableDeclarationContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typePattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypePattern"): + listener.enterTypePattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypePattern"): + listener.exitTypePattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypePattern"): + return visitor.visitTypePattern(self) + else: + return visitor.visitChildren(self) + + def typePattern(self): + + localctx = Java20Parser.TypePatternContext(self, self._ctx, self.state) + self.enterRule(localctx, 386, self.RULE_typePattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2069 + self.localVariableDeclaration() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def lambdaExpression(self): + return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0) + + def assignmentExpression(self): + return self.getTypedRuleContext(Java20Parser.AssignmentExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_expression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExpression"): + listener.enterExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExpression"): + listener.exitExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpression"): + return visitor.visitExpression(self) + else: + return visitor.visitChildren(self) + + def expression(self): + + localctx = Java20Parser.ExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 388, self.RULE_expression) + try: + self.state = 2073 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 224, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2071 + self.lambdaExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2072 + self.assignmentExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PrimaryContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def primaryNoNewArray(self): + return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0) + + def arrayCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_primary + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPrimary"): + listener.enterPrimary(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPrimary"): + listener.exitPrimary(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPrimary"): + return visitor.visitPrimary(self) + else: + return visitor.visitChildren(self) + + def primary(self): + + localctx = Java20Parser.PrimaryContext(self, self._ctx, self.state) + self.enterRule(localctx, 390, self.RULE_primary) + try: + self.state = 2077 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 225, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2075 + self.primaryNoNewArray() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2076 + self.arrayCreationExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PrimaryNoNewArrayContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def literal(self): + return self.getTypedRuleContext(Java20Parser.LiteralContext, 0) + + def pNNA(self): + return self.getTypedRuleContext(Java20Parser.PNNAContext, 0) + + def classLiteral(self): + return self.getTypedRuleContext(Java20Parser.ClassLiteralContext, 0) + + def THIS(self): + return self.getToken(Java20Parser.THIS, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def unqualifiedClassInstanceCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0) + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def arrayCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionContext, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def LBRACK(self): + return self.getToken(Java20Parser.LBRACK, 0) + + def RBRACK(self): + return self.getToken(Java20Parser.RBRACK, 0) + + def arrayCreationExpressionWithInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0) + + def methodName(self): + return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def COLONCOLON(self): + return self.getToken(Java20Parser.COLONCOLON, 0) + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def NEW(self): + return self.getToken(Java20Parser.NEW, 0) + + def arrayType(self): + return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_primaryNoNewArray + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPrimaryNoNewArray"): + listener.enterPrimaryNoNewArray(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPrimaryNoNewArray"): + listener.exitPrimaryNoNewArray(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPrimaryNoNewArray"): + return visitor.visitPrimaryNoNewArray(self) + else: + return visitor.visitChildren(self) + + def primaryNoNewArray(self): + + localctx = Java20Parser.PrimaryNoNewArrayContext(self, self._ctx, self.state) + self.enterRule(localctx, 392, self.RULE_primaryNoNewArray) + self._la = 0 # Token type + try: + self.state = 2296 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 269, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2079 + self.literal() + self.state = 2081 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 226, self._ctx) + if la_ == 1: + self.state = 2080 + self.pNNA() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2083 + self.classLiteral() + self.state = 2085 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 227, self._ctx) + if la_ == 1: + self.state = 2084 + self.pNNA() + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2087 + self.match(Java20Parser.THIS) + self.state = 2089 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 228, self._ctx) + if la_ == 1: + self.state = 2088 + self.pNNA() + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2091 + self.typeName() + self.state = 2092 + self.match(Java20Parser.DOT) + self.state = 2093 + self.match(Java20Parser.THIS) + self.state = 2095 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 229, self._ctx) + if la_ == 1: + self.state = 2094 + self.pNNA() + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2097 + self.match(Java20Parser.LPAREN) + self.state = 2098 + self.expression() + self.state = 2099 + self.match(Java20Parser.RPAREN) + self.state = 2101 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 230, self._ctx) + if la_ == 1: + self.state = 2100 + self.pNNA() + + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2103 + self.unqualifiedClassInstanceCreationExpression() + self.state = 2105 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 231, self._ctx) + if la_ == 1: + self.state = 2104 + self.pNNA() + + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2107 + self.expressionName() + self.state = 2108 + self.match(Java20Parser.DOT) + self.state = 2109 + self.unqualifiedClassInstanceCreationExpression() + self.state = 2111 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 232, self._ctx) + if la_ == 1: + self.state = 2110 + self.pNNA() + + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 2113 + self.arrayCreationExpression() + self.state = 2114 + self.match(Java20Parser.DOT) + self.state = 2115 + self.unqualifiedClassInstanceCreationExpression() + self.state = 2117 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 233, self._ctx) + if la_ == 1: + self.state = 2116 + self.pNNA() + + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 2119 + self.arrayCreationExpression() + self.state = 2120 + self.match(Java20Parser.DOT) + self.state = 2121 + self.match(Java20Parser.Identifier) + self.state = 2123 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 234, self._ctx) + if la_ == 1: + self.state = 2122 + self.pNNA() + + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 2125 + self.match(Java20Parser.SUPER) + self.state = 2126 + self.match(Java20Parser.DOT) + self.state = 2127 + self.match(Java20Parser.Identifier) + self.state = 2129 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 235, self._ctx) + if la_ == 1: + self.state = 2128 + self.pNNA() + + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 2131 + self.typeName() + self.state = 2132 + self.match(Java20Parser.DOT) + self.state = 2133 + self.match(Java20Parser.SUPER) + self.state = 2134 + self.match(Java20Parser.DOT) + self.state = 2135 + self.match(Java20Parser.Identifier) + self.state = 2137 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 236, self._ctx) + if la_ == 1: + self.state = 2136 + self.pNNA() + + pass + + elif la_ == 12: + self.enterOuterAlt(localctx, 12) + self.state = 2139 + self.expressionName() + self.state = 2140 + self.match(Java20Parser.LBRACK) + self.state = 2141 + self.expression() + self.state = 2142 + self.match(Java20Parser.RBRACK) + self.state = 2144 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 237, self._ctx) + if la_ == 1: + self.state = 2143 + self.pNNA() + + pass + + elif la_ == 13: + self.enterOuterAlt(localctx, 13) + self.state = 2146 + self.arrayCreationExpressionWithInitializer() + self.state = 2147 + self.match(Java20Parser.LBRACK) + self.state = 2148 + self.expression() + self.state = 2149 + self.match(Java20Parser.RBRACK) + self.state = 2151 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 238, self._ctx) + if la_ == 1: + self.state = 2150 + self.pNNA() + + pass + + elif la_ == 14: + self.enterOuterAlt(localctx, 14) + self.state = 2153 + self.methodName() + self.state = 2154 + self.match(Java20Parser.LPAREN) + self.state = 2156 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2155 + self.argumentList() + + self.state = 2158 + self.match(Java20Parser.RPAREN) + self.state = 2160 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 240, self._ctx) + if la_ == 1: + self.state = 2159 + self.pNNA() + + pass + + elif la_ == 15: + self.enterOuterAlt(localctx, 15) + self.state = 2162 + self.typeName() + self.state = 2163 + self.match(Java20Parser.DOT) + self.state = 2165 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2164 + self.typeArguments() + + self.state = 2167 + self.match(Java20Parser.Identifier) + self.state = 2168 + self.match(Java20Parser.LPAREN) + self.state = 2170 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2169 + self.argumentList() + + self.state = 2172 + self.match(Java20Parser.RPAREN) + self.state = 2174 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 243, self._ctx) + if la_ == 1: + self.state = 2173 + self.pNNA() + + pass + + elif la_ == 16: + self.enterOuterAlt(localctx, 16) + self.state = 2176 + self.expressionName() + self.state = 2177 + self.match(Java20Parser.DOT) + self.state = 2179 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2178 + self.typeArguments() + + self.state = 2181 + self.match(Java20Parser.Identifier) + self.state = 2182 + self.match(Java20Parser.LPAREN) + self.state = 2184 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2183 + self.argumentList() + + self.state = 2186 + self.match(Java20Parser.RPAREN) + self.state = 2188 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 246, self._ctx) + if la_ == 1: + self.state = 2187 + self.pNNA() + + pass + + elif la_ == 17: + self.enterOuterAlt(localctx, 17) + self.state = 2190 + self.arrayCreationExpression() + self.state = 2191 + self.match(Java20Parser.DOT) + self.state = 2193 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2192 + self.typeArguments() + + self.state = 2195 + self.match(Java20Parser.Identifier) + self.state = 2196 + self.match(Java20Parser.LPAREN) + self.state = 2198 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2197 + self.argumentList() + + self.state = 2200 + self.match(Java20Parser.RPAREN) + self.state = 2202 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 249, self._ctx) + if la_ == 1: + self.state = 2201 + self.pNNA() + + pass + + elif la_ == 18: + self.enterOuterAlt(localctx, 18) + self.state = 2204 + self.match(Java20Parser.SUPER) + self.state = 2205 + self.match(Java20Parser.DOT) + self.state = 2207 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2206 + self.typeArguments() + + self.state = 2209 + self.match(Java20Parser.Identifier) + self.state = 2210 + self.match(Java20Parser.LPAREN) + self.state = 2212 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2211 + self.argumentList() + + self.state = 2214 + self.match(Java20Parser.RPAREN) + self.state = 2216 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 252, self._ctx) + if la_ == 1: + self.state = 2215 + self.pNNA() + + pass + + elif la_ == 19: + self.enterOuterAlt(localctx, 19) + self.state = 2218 + self.typeName() + self.state = 2219 + self.match(Java20Parser.DOT) + self.state = 2220 + self.match(Java20Parser.SUPER) + self.state = 2221 + self.match(Java20Parser.DOT) + self.state = 2223 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2222 + self.typeArguments() + + self.state = 2225 + self.match(Java20Parser.Identifier) + self.state = 2226 + self.match(Java20Parser.LPAREN) + self.state = 2228 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2227 + self.argumentList() + + self.state = 2230 + self.match(Java20Parser.RPAREN) + self.state = 2232 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 255, self._ctx) + if la_ == 1: + self.state = 2231 + self.pNNA() + + pass + + elif la_ == 20: + self.enterOuterAlt(localctx, 20) + self.state = 2234 + self.expressionName() + self.state = 2235 + self.match(Java20Parser.COLONCOLON) + self.state = 2237 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2236 + self.typeArguments() + + self.state = 2239 + self.match(Java20Parser.Identifier) + self.state = 2241 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 257, self._ctx) + if la_ == 1: + self.state = 2240 + self.pNNA() + + pass + + elif la_ == 21: + self.enterOuterAlt(localctx, 21) + self.state = 2243 + self.arrayCreationExpression() + self.state = 2244 + self.match(Java20Parser.COLONCOLON) + self.state = 2246 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2245 + self.typeArguments() + + self.state = 2248 + self.match(Java20Parser.Identifier) + self.state = 2250 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 259, self._ctx) + if la_ == 1: + self.state = 2249 + self.pNNA() + + pass + + elif la_ == 22: + self.enterOuterAlt(localctx, 22) + self.state = 2252 + self.referenceType() + self.state = 2253 + self.match(Java20Parser.COLONCOLON) + self.state = 2255 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2254 + self.typeArguments() + + self.state = 2257 + self.match(Java20Parser.Identifier) + self.state = 2259 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 261, self._ctx) + if la_ == 1: + self.state = 2258 + self.pNNA() + + pass + + elif la_ == 23: + self.enterOuterAlt(localctx, 23) + self.state = 2261 + self.match(Java20Parser.SUPER) + self.state = 2262 + self.match(Java20Parser.COLONCOLON) + self.state = 2264 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2263 + self.typeArguments() + + self.state = 2266 + self.match(Java20Parser.Identifier) + self.state = 2268 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 263, self._ctx) + if la_ == 1: + self.state = 2267 + self.pNNA() + + pass + + elif la_ == 24: + self.enterOuterAlt(localctx, 24) + self.state = 2270 + self.typeName() + self.state = 2271 + self.match(Java20Parser.DOT) + self.state = 2272 + self.match(Java20Parser.SUPER) + self.state = 2273 + self.match(Java20Parser.COLONCOLON) + self.state = 2275 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2274 + self.typeArguments() + + self.state = 2277 + self.match(Java20Parser.Identifier) + self.state = 2279 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 265, self._ctx) + if la_ == 1: + self.state = 2278 + self.pNNA() + + pass + + elif la_ == 25: + self.enterOuterAlt(localctx, 25) + self.state = 2281 + self.classType() + self.state = 2282 + self.match(Java20Parser.COLONCOLON) + self.state = 2284 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2283 + self.typeArguments() + + self.state = 2286 + self.match(Java20Parser.NEW) + self.state = 2288 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 267, self._ctx) + if la_ == 1: + self.state = 2287 + self.pNNA() + + pass + + elif la_ == 26: + self.enterOuterAlt(localctx, 26) + self.state = 2290 + self.arrayType() + self.state = 2291 + self.match(Java20Parser.COLONCOLON) + self.state = 2292 + self.match(Java20Parser.NEW) + self.state = 2294 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 268, self._ctx) + if la_ == 1: + self.state = 2293 + self.pNNA() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PNNAContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def unqualifiedClassInstanceCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0) + + def pNNA(self): + return self.getTypedRuleContext(Java20Parser.PNNAContext, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def LBRACK(self): + return self.getToken(Java20Parser.LBRACK, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RBRACK(self): + return self.getToken(Java20Parser.RBRACK, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def COLONCOLON(self): + return self.getToken(Java20Parser.COLONCOLON, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_pNNA + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPNNA"): + listener.enterPNNA(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPNNA"): + listener.exitPNNA(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPNNA"): + return visitor.visitPNNA(self) + else: + return visitor.visitChildren(self) + + def pNNA(self): + + localctx = Java20Parser.PNNAContext(self, self._ctx, self.state) + self.enterRule(localctx, 394, self.RULE_pNNA) + self._la = 0 # Token type + try: + self.state = 2335 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 278, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2298 + self.match(Java20Parser.DOT) + self.state = 2299 + self.unqualifiedClassInstanceCreationExpression() + self.state = 2301 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 270, self._ctx) + if la_ == 1: + self.state = 2300 + self.pNNA() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2303 + self.match(Java20Parser.DOT) + self.state = 2304 + self.match(Java20Parser.Identifier) + self.state = 2306 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 271, self._ctx) + if la_ == 1: + self.state = 2305 + self.pNNA() + + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2308 + self.match(Java20Parser.LBRACK) + self.state = 2309 + self.expression() + self.state = 2310 + self.match(Java20Parser.RBRACK) + self.state = 2312 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 272, self._ctx) + if la_ == 1: + self.state = 2311 + self.pNNA() + + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2314 + self.match(Java20Parser.DOT) + self.state = 2316 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2315 + self.typeArguments() + + self.state = 2318 + self.match(Java20Parser.Identifier) + self.state = 2319 + self.match(Java20Parser.LPAREN) + self.state = 2321 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2320 + self.argumentList() + + self.state = 2323 + self.match(Java20Parser.RPAREN) + self.state = 2325 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 275, self._ctx) + if la_ == 1: + self.state = 2324 + self.pNNA() + + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2327 + self.match(Java20Parser.COLONCOLON) + self.state = 2329 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2328 + self.typeArguments() + + self.state = 2331 + self.match(Java20Parser.Identifier) + self.state = 2333 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 277, self._ctx) + if la_ == 1: + self.state = 2332 + self.pNNA() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassLiteralContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def CLASS(self): + return self.getToken(Java20Parser.CLASS, 0) + + def LBRACK(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.LBRACK) + else: + return self.getToken(Java20Parser.LBRACK, i) + + def RBRACK(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.RBRACK) + else: + return self.getToken(Java20Parser.RBRACK, i) + + def numericType(self): + return self.getTypedRuleContext(Java20Parser.NumericTypeContext, 0) + + def BOOLEAN(self): + return self.getToken(Java20Parser.BOOLEAN, 0) + + def VOID(self): + return self.getToken(Java20Parser.VOID, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classLiteral + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassLiteral"): + listener.enterClassLiteral(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassLiteral"): + listener.exitClassLiteral(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassLiteral"): + return visitor.visitClassLiteral(self) + else: + return visitor.visitChildren(self) + + def classLiteral(self): + + localctx = Java20Parser.ClassLiteralContext(self, self._ctx, self.state) + self.enterRule(localctx, 396, self.RULE_classLiteral) + self._la = 0 # Token type + try: + self.state = 2372 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [123]: + self.enterOuterAlt(localctx, 1) + self.state = 2337 + self.typeName() + self.state = 2342 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 80: + self.state = 2338 + self.match(Java20Parser.LBRACK) + self.state = 2339 + self.match(Java20Parser.RBRACK) + self.state = 2344 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2345 + self.match(Java20Parser.DOT) + self.state = 2346 + self.match(Java20Parser.CLASS) + pass + elif token in [22, 25, 31, 37, 44, 46, 54]: + self.enterOuterAlt(localctx, 2) + self.state = 2348 + self.numericType() + self.state = 2353 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 80: + self.state = 2349 + self.match(Java20Parser.LBRACK) + self.state = 2350 + self.match(Java20Parser.RBRACK) + self.state = 2355 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2356 + self.match(Java20Parser.DOT) + self.state = 2357 + self.match(Java20Parser.CLASS) + pass + elif token in [20]: + self.enterOuterAlt(localctx, 3) + self.state = 2359 + self.match(Java20Parser.BOOLEAN) + self.state = 2364 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 80: + self.state = 2360 + self.match(Java20Parser.LBRACK) + self.state = 2361 + self.match(Java20Parser.RBRACK) + self.state = 2366 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2367 + self.match(Java20Parser.DOT) + self.state = 2368 + self.match(Java20Parser.CLASS) + pass + elif token in [65]: + self.enterOuterAlt(localctx, 4) + self.state = 2369 + self.match(Java20Parser.VOID) + self.state = 2370 + self.match(Java20Parser.DOT) + self.state = 2371 + self.match(Java20Parser.CLASS) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassInstanceCreationExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unqualifiedClassInstanceCreationExpression(self): + return self.getTypedRuleContext(Java20Parser.UnqualifiedClassInstanceCreationExpressionContext, 0) + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classInstanceCreationExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassInstanceCreationExpression"): + listener.enterClassInstanceCreationExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassInstanceCreationExpression"): + listener.exitClassInstanceCreationExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassInstanceCreationExpression"): + return visitor.visitClassInstanceCreationExpression(self) + else: + return visitor.visitChildren(self) + + def classInstanceCreationExpression(self): + + localctx = Java20Parser.ClassInstanceCreationExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 398, self.RULE_classInstanceCreationExpression) + try: + self.state = 2383 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 283, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2374 + self.unqualifiedClassInstanceCreationExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2375 + self.expressionName() + self.state = 2376 + self.match(Java20Parser.DOT) + self.state = 2377 + self.unqualifiedClassInstanceCreationExpression() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2379 + self.primary() + self.state = 2380 + self.match(Java20Parser.DOT) + self.state = 2381 + self.unqualifiedClassInstanceCreationExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnqualifiedClassInstanceCreationExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NEW(self): + return self.getToken(Java20Parser.NEW, 0) + + def classOrInterfaceTypeToInstantiate(self): + return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeToInstantiateContext, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def classBody(self): + return self.getTypedRuleContext(Java20Parser.ClassBodyContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unqualifiedClassInstanceCreationExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnqualifiedClassInstanceCreationExpression"): + listener.enterUnqualifiedClassInstanceCreationExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnqualifiedClassInstanceCreationExpression"): + listener.exitUnqualifiedClassInstanceCreationExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnqualifiedClassInstanceCreationExpression"): + return visitor.visitUnqualifiedClassInstanceCreationExpression(self) + else: + return visitor.visitChildren(self) + + def unqualifiedClassInstanceCreationExpression(self): + + localctx = Java20Parser.UnqualifiedClassInstanceCreationExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 400, self.RULE_unqualifiedClassInstanceCreationExpression) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2385 + self.match(Java20Parser.NEW) + self.state = 2387 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2386 + self.typeArguments() + + self.state = 2389 + self.classOrInterfaceTypeToInstantiate() + self.state = 2390 + self.match(Java20Parser.LPAREN) + self.state = 2392 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2391 + self.argumentList() + + self.state = 2394 + self.match(Java20Parser.RPAREN) + self.state = 2396 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 286, self._ctx) + if la_ == 1: + self.state = 2395 + self.classBody() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassOrInterfaceTypeToInstantiateContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def Identifier(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.Identifier) + else: + return self.getToken(Java20Parser.Identifier, i) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def typeArgumentsOrDiamond(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsOrDiamondContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_classOrInterfaceTypeToInstantiate + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassOrInterfaceTypeToInstantiate"): + listener.enterClassOrInterfaceTypeToInstantiate(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassOrInterfaceTypeToInstantiate"): + listener.exitClassOrInterfaceTypeToInstantiate(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassOrInterfaceTypeToInstantiate"): + return visitor.visitClassOrInterfaceTypeToInstantiate(self) + else: + return visitor.visitChildren(self) + + def classOrInterfaceTypeToInstantiate(self): + + localctx = Java20Parser.ClassOrInterfaceTypeToInstantiateContext(self, self._ctx, self.state) + self.enterRule(localctx, 402, self.RULE_classOrInterfaceTypeToInstantiate) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2401 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 2398 + self.annotation() + self.state = 2403 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2404 + self.match(Java20Parser.Identifier) + self.state = 2415 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 84: + self.state = 2405 + self.match(Java20Parser.DOT) + self.state = 2409 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 2406 + self.annotation() + self.state = 2411 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2412 + self.match(Java20Parser.Identifier) + self.state = 2417 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2419 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 4 or _la == 90: + self.state = 2418 + self.typeArgumentsOrDiamond() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypeArgumentsOrDiamondContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def OACA(self): + return self.getToken(Java20Parser.OACA, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_typeArgumentsOrDiamond + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypeArgumentsOrDiamond"): + listener.enterTypeArgumentsOrDiamond(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypeArgumentsOrDiamond"): + listener.exitTypeArgumentsOrDiamond(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypeArgumentsOrDiamond"): + return visitor.visitTypeArgumentsOrDiamond(self) + else: + return visitor.visitChildren(self) + + def typeArgumentsOrDiamond(self): + + localctx = Java20Parser.TypeArgumentsOrDiamondContext(self, self._ctx, self.state) + self.enterRule(localctx, 404, self.RULE_typeArgumentsOrDiamond) + try: + self.state = 2423 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [90]: + self.enterOuterAlt(localctx, 1) + self.state = 2421 + self.typeArguments() + pass + elif token in [4]: + self.enterOuterAlt(localctx, 2) + self.state = 2422 + self.match(Java20Parser.OACA) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayCreationExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def arrayCreationExpressionWithoutInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithoutInitializerContext, 0) + + def arrayCreationExpressionWithInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayCreationExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayCreationExpression"): + listener.enterArrayCreationExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayCreationExpression"): + listener.exitArrayCreationExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayCreationExpression"): + return visitor.visitArrayCreationExpression(self) + else: + return visitor.visitChildren(self) + + def arrayCreationExpression(self): + + localctx = Java20Parser.ArrayCreationExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 406, self.RULE_arrayCreationExpression) + try: + self.state = 2427 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 292, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2425 + self.arrayCreationExpressionWithoutInitializer() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2426 + self.arrayCreationExpressionWithInitializer() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayCreationExpressionWithoutInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NEW(self): + return self.getToken(Java20Parser.NEW, 0) + + def primitiveType(self): + return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0) + + def dimExprs(self): + return self.getTypedRuleContext(Java20Parser.DimExprsContext, 0) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayCreationExpressionWithoutInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayCreationExpressionWithoutInitializer"): + listener.enterArrayCreationExpressionWithoutInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayCreationExpressionWithoutInitializer"): + listener.exitArrayCreationExpressionWithoutInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayCreationExpressionWithoutInitializer"): + return visitor.visitArrayCreationExpressionWithoutInitializer(self) + else: + return visitor.visitChildren(self) + + def arrayCreationExpressionWithoutInitializer(self): + + localctx = Java20Parser.ArrayCreationExpressionWithoutInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 408, self.RULE_arrayCreationExpressionWithoutInitializer) + try: + self.state = 2441 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 295, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2429 + self.match(Java20Parser.NEW) + self.state = 2430 + self.primitiveType() + self.state = 2431 + self.dimExprs() + self.state = 2433 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 293, self._ctx) + if la_ == 1: + self.state = 2432 + self.dims() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2435 + self.match(Java20Parser.NEW) + self.state = 2436 + self.classType() + self.state = 2437 + self.dimExprs() + self.state = 2439 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 294, self._ctx) + if la_ == 1: + self.state = 2438 + self.dims() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayCreationExpressionWithInitializerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NEW(self): + return self.getToken(Java20Parser.NEW, 0) + + def primitiveType(self): + return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0) + + def dims(self): + return self.getTypedRuleContext(Java20Parser.DimsContext, 0) + + def arrayInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayInitializerContext, 0) + + def classOrInterfaceType(self): + return self.getTypedRuleContext(Java20Parser.ClassOrInterfaceTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayCreationExpressionWithInitializer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayCreationExpressionWithInitializer"): + listener.enterArrayCreationExpressionWithInitializer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayCreationExpressionWithInitializer"): + listener.exitArrayCreationExpressionWithInitializer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayCreationExpressionWithInitializer"): + return visitor.visitArrayCreationExpressionWithInitializer(self) + else: + return visitor.visitChildren(self) + + def arrayCreationExpressionWithInitializer(self): + + localctx = Java20Parser.ArrayCreationExpressionWithInitializerContext(self, self._ctx, self.state) + self.enterRule(localctx, 410, self.RULE_arrayCreationExpressionWithInitializer) + try: + self.state = 2453 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 296, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2443 + self.match(Java20Parser.NEW) + self.state = 2444 + self.primitiveType() + self.state = 2445 + self.dims() + self.state = 2446 + self.arrayInitializer() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2448 + self.match(Java20Parser.NEW) + self.state = 2449 + self.classOrInterfaceType() + self.state = 2450 + self.dims() + self.state = 2451 + self.arrayInitializer() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DimExprsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def dimExpr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.DimExprContext) + else: + return self.getTypedRuleContext(Java20Parser.DimExprContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_dimExprs + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDimExprs"): + listener.enterDimExprs(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDimExprs"): + listener.exitDimExprs(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDimExprs"): + return visitor.visitDimExprs(self) + else: + return visitor.visitChildren(self) + + def dimExprs(self): + + localctx = Java20Parser.DimExprsContext(self, self._ctx, self.state) + self.enterRule(localctx, 412, self.RULE_dimExprs) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2455 + self.dimExpr() + self.state = 2459 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 297, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 2456 + self.dimExpr() + self.state = 2461 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 297, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DimExprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LBRACK(self): + return self.getToken(Java20Parser.LBRACK, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RBRACK(self): + return self.getToken(Java20Parser.RBRACK, 0) + + def annotation(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AnnotationContext) + else: + return self.getTypedRuleContext(Java20Parser.AnnotationContext, i) + + def getRuleIndex(self): + return Java20Parser.RULE_dimExpr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDimExpr"): + listener.enterDimExpr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDimExpr"): + listener.exitDimExpr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDimExpr"): + return visitor.visitDimExpr(self) + else: + return visitor.visitChildren(self) + + def dimExpr(self): + + localctx = Java20Parser.DimExprContext(self, self._ctx, self.state) + self.enterRule(localctx, 414, self.RULE_dimExpr) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2465 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 86: + self.state = 2462 + self.annotation() + self.state = 2467 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2468 + self.match(Java20Parser.LBRACK) + self.state = 2469 + self.expression() + self.state = 2470 + self.match(Java20Parser.RBRACK) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArrayAccessContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def LBRACK(self): + return self.getToken(Java20Parser.LBRACK, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RBRACK(self): + return self.getToken(Java20Parser.RBRACK, 0) + + def primaryNoNewArray(self): + return self.getTypedRuleContext(Java20Parser.PrimaryNoNewArrayContext, 0) + + def arrayCreationExpressionWithInitializer(self): + return self.getTypedRuleContext(Java20Parser.ArrayCreationExpressionWithInitializerContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_arrayAccess + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArrayAccess"): + listener.enterArrayAccess(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArrayAccess"): + listener.exitArrayAccess(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArrayAccess"): + return visitor.visitArrayAccess(self) + else: + return visitor.visitChildren(self) + + def arrayAccess(self): + + localctx = Java20Parser.ArrayAccessContext(self, self._ctx, self.state) + self.enterRule(localctx, 416, self.RULE_arrayAccess) + try: + self.state = 2487 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 299, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2472 + self.expressionName() + self.state = 2473 + self.match(Java20Parser.LBRACK) + self.state = 2474 + self.expression() + self.state = 2475 + self.match(Java20Parser.RBRACK) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2477 + self.primaryNoNewArray() + self.state = 2478 + self.match(Java20Parser.LBRACK) + self.state = 2479 + self.expression() + self.state = 2480 + self.match(Java20Parser.RBRACK) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2482 + self.arrayCreationExpressionWithInitializer() + self.state = 2483 + self.match(Java20Parser.LBRACK) + self.state = 2484 + self.expression() + self.state = 2485 + self.match(Java20Parser.RBRACK) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FieldAccessContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_fieldAccess + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFieldAccess"): + listener.enterFieldAccess(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFieldAccess"): + listener.exitFieldAccess(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFieldAccess"): + return visitor.visitFieldAccess(self) + else: + return visitor.visitChildren(self) + + def fieldAccess(self): + + localctx = Java20Parser.FieldAccessContext(self, self._ctx, self.state) + self.enterRule(localctx, 418, self.RULE_fieldAccess) + try: + self.state = 2502 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 300, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2489 + self.primary() + self.state = 2490 + self.match(Java20Parser.DOT) + self.state = 2491 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2493 + self.match(Java20Parser.SUPER) + self.state = 2494 + self.match(Java20Parser.DOT) + self.state = 2495 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2496 + self.typeName() + self.state = 2497 + self.match(Java20Parser.DOT) + self.state = 2498 + self.match(Java20Parser.SUPER) + self.state = 2499 + self.match(Java20Parser.DOT) + self.state = 2500 + self.match(Java20Parser.Identifier) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodInvocationContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def methodName(self): + return self.getTypedRuleContext(Java20Parser.MethodNameContext, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def argumentList(self): + return self.getTypedRuleContext(Java20Parser.ArgumentListContext, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.DOT) + else: + return self.getToken(Java20Parser.DOT, i) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodInvocation + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodInvocation"): + listener.enterMethodInvocation(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodInvocation"): + listener.exitMethodInvocation(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodInvocation"): + return visitor.visitMethodInvocation(self) + else: + return visitor.visitChildren(self) + + def methodInvocation(self): + + localctx = Java20Parser.MethodInvocationContext(self, self._ctx, self.state) + self.enterRule(localctx, 420, self.RULE_methodInvocation) + self._la = 0 # Token type + try: + self.state = 2572 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 312, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2504 + self.methodName() + self.state = 2505 + self.match(Java20Parser.LPAREN) + self.state = 2507 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2506 + self.argumentList() + + self.state = 2509 + self.match(Java20Parser.RPAREN) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2511 + self.typeName() + self.state = 2512 + self.match(Java20Parser.DOT) + self.state = 2514 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2513 + self.typeArguments() + + self.state = 2516 + self.match(Java20Parser.Identifier) + self.state = 2517 + self.match(Java20Parser.LPAREN) + self.state = 2519 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2518 + self.argumentList() + + self.state = 2521 + self.match(Java20Parser.RPAREN) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2523 + self.expressionName() + self.state = 2524 + self.match(Java20Parser.DOT) + self.state = 2526 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2525 + self.typeArguments() + + self.state = 2528 + self.match(Java20Parser.Identifier) + self.state = 2529 + self.match(Java20Parser.LPAREN) + self.state = 2531 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2530 + self.argumentList() + + self.state = 2533 + self.match(Java20Parser.RPAREN) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2535 + self.primary() + self.state = 2536 + self.match(Java20Parser.DOT) + self.state = 2538 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2537 + self.typeArguments() + + self.state = 2540 + self.match(Java20Parser.Identifier) + self.state = 2541 + self.match(Java20Parser.LPAREN) + self.state = 2543 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2542 + self.argumentList() + + self.state = 2545 + self.match(Java20Parser.RPAREN) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2547 + self.match(Java20Parser.SUPER) + self.state = 2548 + self.match(Java20Parser.DOT) + self.state = 2550 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2549 + self.typeArguments() + + self.state = 2552 + self.match(Java20Parser.Identifier) + self.state = 2553 + self.match(Java20Parser.LPAREN) + self.state = 2555 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2554 + self.argumentList() + + self.state = 2557 + self.match(Java20Parser.RPAREN) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2558 + self.typeName() + self.state = 2559 + self.match(Java20Parser.DOT) + self.state = 2560 + self.match(Java20Parser.SUPER) + self.state = 2561 + self.match(Java20Parser.DOT) + self.state = 2563 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2562 + self.typeArguments() + + self.state = 2565 + self.match(Java20Parser.Identifier) + self.state = 2566 + self.match(Java20Parser.LPAREN) + self.state = 2568 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 1603651042876063744) != 0) or ( + (((_la - 65)) & ~0x3f) == 0 and ((1 << (_la - 65)) & 288232437939441649) != 0): + self.state = 2567 + self.argumentList() + + self.state = 2570 + self.match(Java20Parser.RPAREN) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArgumentListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.ExpressionContext) + else: + return self.getTypedRuleContext(Java20Parser.ExpressionContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def getRuleIndex(self): + return Java20Parser.RULE_argumentList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArgumentList"): + listener.enterArgumentList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArgumentList"): + listener.exitArgumentList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArgumentList"): + return visitor.visitArgumentList(self) + else: + return visitor.visitChildren(self) + + def argumentList(self): + + localctx = Java20Parser.ArgumentListContext(self, self._ctx, self.state) + self.enterRule(localctx, 422, self.RULE_argumentList) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2574 + self.expression() + self.state = 2579 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 2575 + self.match(Java20Parser.COMMA) + self.state = 2576 + self.expression() + self.state = 2581 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MethodReferenceContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def COLONCOLON(self): + return self.getToken(Java20Parser.COLONCOLON, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def typeArguments(self): + return self.getTypedRuleContext(Java20Parser.TypeArgumentsContext, 0) + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def SUPER(self): + return self.getToken(Java20Parser.SUPER, 0) + + def typeName(self): + return self.getTypedRuleContext(Java20Parser.TypeNameContext, 0) + + def DOT(self): + return self.getToken(Java20Parser.DOT, 0) + + def classType(self): + return self.getTypedRuleContext(Java20Parser.ClassTypeContext, 0) + + def NEW(self): + return self.getToken(Java20Parser.NEW, 0) + + def arrayType(self): + return self.getTypedRuleContext(Java20Parser.ArrayTypeContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_methodReference + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMethodReference"): + listener.enterMethodReference(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMethodReference"): + listener.exitMethodReference(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMethodReference"): + return visitor.visitMethodReference(self) + else: + return visitor.visitChildren(self) + + def methodReference(self): + + localctx = Java20Parser.MethodReferenceContext(self, self._ctx, self.state) + self.enterRule(localctx, 424, self.RULE_methodReference) + self._la = 0 # Token type + try: + self.state = 2629 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 320, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2582 + self.expressionName() + self.state = 2583 + self.match(Java20Parser.COLONCOLON) + self.state = 2585 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2584 + self.typeArguments() + + self.state = 2587 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2589 + self.primary() + self.state = 2590 + self.match(Java20Parser.COLONCOLON) + self.state = 2592 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2591 + self.typeArguments() + + self.state = 2594 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2596 + self.referenceType() + self.state = 2597 + self.match(Java20Parser.COLONCOLON) + self.state = 2599 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2598 + self.typeArguments() + + self.state = 2601 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2603 + self.match(Java20Parser.SUPER) + self.state = 2604 + self.match(Java20Parser.COLONCOLON) + self.state = 2606 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2605 + self.typeArguments() + + self.state = 2608 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2609 + self.typeName() + self.state = 2610 + self.match(Java20Parser.DOT) + self.state = 2611 + self.match(Java20Parser.SUPER) + self.state = 2612 + self.match(Java20Parser.COLONCOLON) + self.state = 2614 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2613 + self.typeArguments() + + self.state = 2616 + self.match(Java20Parser.Identifier) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 2618 + self.classType() + self.state = 2619 + self.match(Java20Parser.COLONCOLON) + self.state = 2621 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 90: + self.state = 2620 + self.typeArguments() + + self.state = 2623 + self.match(Java20Parser.NEW) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 2625 + self.arrayType() + self.state = 2626 + self.match(Java20Parser.COLONCOLON) + self.state = 2627 + self.match(Java20Parser.NEW) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PostfixExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def primary(self): + return self.getTypedRuleContext(Java20Parser.PrimaryContext, 0) + + def pfE(self): + return self.getTypedRuleContext(Java20Parser.PfEContext, 0) + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_postfixExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPostfixExpression"): + listener.enterPostfixExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPostfixExpression"): + listener.exitPostfixExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPostfixExpression"): + return visitor.visitPostfixExpression(self) + else: + return visitor.visitChildren(self) + + def postfixExpression(self): + + localctx = Java20Parser.PostfixExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 426, self.RULE_postfixExpression) + try: + self.state = 2639 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 323, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2631 + self.primary() + self.state = 2633 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 321, self._ctx) + if la_ == 1: + self.state = 2632 + self.pfE() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2635 + self.expressionName() + self.state = 2637 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 322, self._ctx) + if la_ == 1: + self.state = 2636 + self.pfE() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PfEContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def INC(self): + return self.getToken(Java20Parser.INC, 0) + + def pfE(self): + return self.getTypedRuleContext(Java20Parser.PfEContext, 0) + + def DEC(self): + return self.getToken(Java20Parser.DEC, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_pfE + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPfE"): + listener.enterPfE(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPfE"): + listener.exitPfE(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPfE"): + return visitor.visitPfE(self) + else: + return visitor.visitChildren(self) + + def pfE(self): + + localctx = Java20Parser.PfEContext(self, self._ctx, self.state) + self.enterRule(localctx, 428, self.RULE_pfE) + try: + self.state = 2649 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [102]: + self.enterOuterAlt(localctx, 1) + self.state = 2641 + self.match(Java20Parser.INC) + self.state = 2643 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 324, self._ctx) + if la_ == 1: + self.state = 2642 + self.pfE() + + pass + elif token in [103]: + self.enterOuterAlt(localctx, 2) + self.state = 2645 + self.match(Java20Parser.DEC) + self.state = 2647 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 325, self._ctx) + if la_ == 1: + self.state = 2646 + self.pfE() + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PostIncrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def postfixExpression(self): + return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0) + + def INC(self): + return self.getToken(Java20Parser.INC, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_postIncrementExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPostIncrementExpression"): + listener.enterPostIncrementExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPostIncrementExpression"): + listener.exitPostIncrementExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPostIncrementExpression"): + return visitor.visitPostIncrementExpression(self) + else: + return visitor.visitChildren(self) + + def postIncrementExpression(self): + + localctx = Java20Parser.PostIncrementExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 430, self.RULE_postIncrementExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2651 + self.postfixExpression() + self.state = 2652 + self.match(Java20Parser.INC) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PostDecrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def postfixExpression(self): + return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0) + + def DEC(self): + return self.getToken(Java20Parser.DEC, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_postDecrementExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPostDecrementExpression"): + listener.enterPostDecrementExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPostDecrementExpression"): + listener.exitPostDecrementExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPostDecrementExpression"): + return visitor.visitPostDecrementExpression(self) + else: + return visitor.visitChildren(self) + + def postDecrementExpression(self): + + localctx = Java20Parser.PostDecrementExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 432, self.RULE_postDecrementExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2654 + self.postfixExpression() + self.state = 2655 + self.match(Java20Parser.DEC) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnaryExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def preIncrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PreIncrementExpressionContext, 0) + + def preDecrementExpression(self): + return self.getTypedRuleContext(Java20Parser.PreDecrementExpressionContext, 0) + + def ADD(self): + return self.getToken(Java20Parser.ADD, 0) + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def SUB(self): + return self.getToken(Java20Parser.SUB, 0) + + def unaryExpressionNotPlusMinus(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unaryExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnaryExpression"): + listener.enterUnaryExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnaryExpression"): + listener.exitUnaryExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnaryExpression"): + return visitor.visitUnaryExpression(self) + else: + return visitor.visitChildren(self) + + def unaryExpression(self): + + localctx = Java20Parser.UnaryExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 434, self.RULE_unaryExpression) + try: + self.state = 2664 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [102]: + self.enterOuterAlt(localctx, 1) + self.state = 2657 + self.preIncrementExpression() + pass + elif token in [103]: + self.enterOuterAlt(localctx, 2) + self.state = 2658 + self.preDecrementExpression() + pass + elif token in [104]: + self.enterOuterAlt(localctx, 3) + self.state = 2659 + self.match(Java20Parser.ADD) + self.state = 2660 + self.unaryExpression() + pass + elif token in [105]: + self.enterOuterAlt(localctx, 4) + self.state = 2661 + self.match(Java20Parser.SUB) + self.state = 2662 + self.unaryExpression() + pass + elif token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, + 92, 123]: + self.enterOuterAlt(localctx, 5) + self.state = 2663 + self.unaryExpressionNotPlusMinus() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PreIncrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def INC(self): + return self.getToken(Java20Parser.INC, 0) + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_preIncrementExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPreIncrementExpression"): + listener.enterPreIncrementExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPreIncrementExpression"): + listener.exitPreIncrementExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPreIncrementExpression"): + return visitor.visitPreIncrementExpression(self) + else: + return visitor.visitChildren(self) + + def preIncrementExpression(self): + + localctx = Java20Parser.PreIncrementExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 436, self.RULE_preIncrementExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2666 + self.match(Java20Parser.INC) + self.state = 2667 + self.unaryExpression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PreDecrementExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEC(self): + return self.getToken(Java20Parser.DEC, 0) + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_preDecrementExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPreDecrementExpression"): + listener.enterPreDecrementExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPreDecrementExpression"): + listener.exitPreDecrementExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPreDecrementExpression"): + return visitor.visitPreDecrementExpression(self) + else: + return visitor.visitChildren(self) + + def preDecrementExpression(self): + + localctx = Java20Parser.PreDecrementExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 438, self.RULE_preDecrementExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2669 + self.match(Java20Parser.DEC) + self.state = 2670 + self.unaryExpression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class UnaryExpressionNotPlusMinusContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def postfixExpression(self): + return self.getTypedRuleContext(Java20Parser.PostfixExpressionContext, 0) + + def TILDE(self): + return self.getToken(Java20Parser.TILDE, 0) + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def BANG(self): + return self.getToken(Java20Parser.BANG, 0) + + def castExpression(self): + return self.getTypedRuleContext(Java20Parser.CastExpressionContext, 0) + + def switchExpression(self): + return self.getTypedRuleContext(Java20Parser.SwitchExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_unaryExpressionNotPlusMinus + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterUnaryExpressionNotPlusMinus"): + listener.enterUnaryExpressionNotPlusMinus(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitUnaryExpressionNotPlusMinus"): + listener.exitUnaryExpressionNotPlusMinus(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitUnaryExpressionNotPlusMinus"): + return visitor.visitUnaryExpressionNotPlusMinus(self) + else: + return visitor.visitChildren(self) + + def unaryExpressionNotPlusMinus(self): + + localctx = Java20Parser.UnaryExpressionNotPlusMinusContext(self, self._ctx, self.state) + self.enterRule(localctx, 440, self.RULE_unaryExpressionNotPlusMinus) + try: + self.state = 2679 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 328, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2672 + self.postfixExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2673 + self.match(Java20Parser.TILDE) + self.state = 2674 + self.unaryExpression() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2675 + self.match(Java20Parser.BANG) + self.state = 2676 + self.unaryExpression() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 2677 + self.castExpression() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 2678 + self.switchExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class CastExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def primitiveType(self): + return self.getTypedRuleContext(Java20Parser.PrimitiveTypeContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def unaryExpressionNotPlusMinus(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionNotPlusMinusContext, 0) + + def additionalBound(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.AdditionalBoundContext) + else: + return self.getTypedRuleContext(Java20Parser.AdditionalBoundContext, i) + + def lambdaExpression(self): + return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_castExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCastExpression"): + listener.enterCastExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCastExpression"): + listener.exitCastExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCastExpression"): + return visitor.visitCastExpression(self) + else: + return visitor.visitChildren(self) + + def castExpression(self): + + localctx = Java20Parser.CastExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 442, self.RULE_castExpression) + self._la = 0 # Token type + try: + self.state = 2708 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 331, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2681 + self.match(Java20Parser.LPAREN) + self.state = 2682 + self.primitiveType() + self.state = 2683 + self.match(Java20Parser.RPAREN) + self.state = 2684 + self.unaryExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2686 + self.match(Java20Parser.LPAREN) + self.state = 2687 + self.referenceType() + self.state = 2691 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 108: + self.state = 2688 + self.additionalBound() + self.state = 2693 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2694 + self.match(Java20Parser.RPAREN) + self.state = 2695 + self.unaryExpressionNotPlusMinus() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2697 + self.match(Java20Parser.LPAREN) + self.state = 2698 + self.referenceType() + self.state = 2702 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 108: + self.state = 2699 + self.additionalBound() + self.state = 2704 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2705 + self.match(Java20Parser.RPAREN) + self.state = 2706 + self.lambdaExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class MultiplicativeExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unaryExpression(self): + return self.getTypedRuleContext(Java20Parser.UnaryExpressionContext, 0) + + def multiplicativeExpression(self): + return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0) + + def MUL(self): + return self.getToken(Java20Parser.MUL, 0) + + def DIV(self): + return self.getToken(Java20Parser.DIV, 0) + + def MOD(self): + return self.getToken(Java20Parser.MOD, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_multiplicativeExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMultiplicativeExpression"): + listener.enterMultiplicativeExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMultiplicativeExpression"): + listener.exitMultiplicativeExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMultiplicativeExpression"): + return visitor.visitMultiplicativeExpression(self) + else: + return visitor.visitChildren(self) + + def multiplicativeExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.MultiplicativeExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 444 + self.enterRecursionRule(localctx, 444, self.RULE_multiplicativeExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2711 + self.unaryExpression() + self._ctx.stop = self._input.LT(-1) + self.state = 2724 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 333, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2722 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 332, self._ctx) + if la_ == 1: + localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) + self.state = 2713 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 2714 + self.match(Java20Parser.MUL) + self.state = 2715 + self.unaryExpression() + pass + + elif la_ == 2: + localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) + self.state = 2716 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2717 + self.match(Java20Parser.DIV) + self.state = 2718 + self.unaryExpression() + pass + + elif la_ == 3: + localctx = Java20Parser.MultiplicativeExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_multiplicativeExpression) + self.state = 2719 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2720 + self.match(Java20Parser.MOD) + self.state = 2721 + self.unaryExpression() + pass + + self.state = 2726 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 333, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class AdditiveExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def multiplicativeExpression(self): + return self.getTypedRuleContext(Java20Parser.MultiplicativeExpressionContext, 0) + + def additiveExpression(self): + return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0) + + def ADD(self): + return self.getToken(Java20Parser.ADD, 0) + + def SUB(self): + return self.getToken(Java20Parser.SUB, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_additiveExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAdditiveExpression"): + listener.enterAdditiveExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAdditiveExpression"): + listener.exitAdditiveExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAdditiveExpression"): + return visitor.visitAdditiveExpression(self) + else: + return visitor.visitChildren(self) + + def additiveExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.AdditiveExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 446 + self.enterRecursionRule(localctx, 446, self.RULE_additiveExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2728 + self.multiplicativeExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2738 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 335, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2736 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 334, self._ctx) + if la_ == 1: + localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression) + self.state = 2730 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2731 + self.match(Java20Parser.ADD) + self.state = 2732 + self.multiplicativeExpression(0) + pass + + elif la_ == 2: + localctx = Java20Parser.AdditiveExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_additiveExpression) + self.state = 2733 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2734 + self.match(Java20Parser.SUB) + self.state = 2735 + self.multiplicativeExpression(0) + pass + + self.state = 2740 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 335, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ShiftExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def additiveExpression(self): + return self.getTypedRuleContext(Java20Parser.AdditiveExpressionContext, 0) + + def shiftExpression(self): + return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0) + + def LT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.LT) + else: + return self.getToken(Java20Parser.LT, i) + + def GT(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.GT) + else: + return self.getToken(Java20Parser.GT, i) + + def getRuleIndex(self): + return Java20Parser.RULE_shiftExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterShiftExpression"): + listener.enterShiftExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitShiftExpression"): + listener.exitShiftExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitShiftExpression"): + return visitor.visitShiftExpression(self) + else: + return visitor.visitChildren(self) + + def shiftExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.ShiftExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 448 + self.enterRecursionRule(localctx, 448, self.RULE_shiftExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2742 + self.additiveExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2759 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 337, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2757 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 336, self._ctx) + if la_ == 1: + localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) + self.state = 2744 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 2745 + self.match(Java20Parser.LT) + self.state = 2746 + self.match(Java20Parser.LT) + self.state = 2747 + self.additiveExpression(0) + pass + + elif la_ == 2: + localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) + self.state = 2748 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2749 + self.match(Java20Parser.GT) + self.state = 2750 + self.match(Java20Parser.GT) + self.state = 2751 + self.additiveExpression(0) + pass + + elif la_ == 3: + localctx = Java20Parser.ShiftExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_shiftExpression) + self.state = 2752 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2753 + self.match(Java20Parser.GT) + self.state = 2754 + self.match(Java20Parser.GT) + self.state = 2755 + self.match(Java20Parser.GT) + self.state = 2756 + self.additiveExpression(0) + pass + + self.state = 2761 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 337, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class RelationalExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def shiftExpression(self): + return self.getTypedRuleContext(Java20Parser.ShiftExpressionContext, 0) + + def relationalExpression(self): + return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0) + + def LT(self): + return self.getToken(Java20Parser.LT, 0) + + def GT(self): + return self.getToken(Java20Parser.GT, 0) + + def LE(self): + return self.getToken(Java20Parser.LE, 0) + + def GE(self): + return self.getToken(Java20Parser.GE, 0) + + def INSTANCEOF(self): + return self.getToken(Java20Parser.INSTANCEOF, 0) + + def referenceType(self): + return self.getTypedRuleContext(Java20Parser.ReferenceTypeContext, 0) + + def pattern(self): + return self.getTypedRuleContext(Java20Parser.PatternContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_relationalExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRelationalExpression"): + listener.enterRelationalExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRelationalExpression"): + listener.exitRelationalExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRelationalExpression"): + return visitor.visitRelationalExpression(self) + else: + return visitor.visitChildren(self) + + def relationalExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.RelationalExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 450 + self.enterRecursionRule(localctx, 450, self.RULE_relationalExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2763 + self.shiftExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2785 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 340, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2783 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 339, self._ctx) + if la_ == 1: + localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) + self.state = 2765 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 2766 + self.match(Java20Parser.LT) + self.state = 2767 + self.shiftExpression(0) + pass + + elif la_ == 2: + localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) + self.state = 2768 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 2769 + self.match(Java20Parser.GT) + self.state = 2770 + self.shiftExpression(0) + pass + + elif la_ == 3: + localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) + self.state = 2771 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 2772 + self.match(Java20Parser.LE) + self.state = 2773 + self.shiftExpression(0) + pass + + elif la_ == 4: + localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) + self.state = 2774 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2775 + self.match(Java20Parser.GE) + self.state = 2776 + self.shiftExpression(0) + pass + + elif la_ == 5: + localctx = Java20Parser.RelationalExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_relationalExpression) + self.state = 2777 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2778 + self.match(Java20Parser.INSTANCEOF) + self.state = 2781 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 338, self._ctx) + if la_ == 1: + self.state = 2779 + self.referenceType() + pass + + elif la_ == 2: + self.state = 2780 + self.pattern() + pass + + pass + + self.state = 2787 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 340, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class EqualityExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def relationalExpression(self): + return self.getTypedRuleContext(Java20Parser.RelationalExpressionContext, 0) + + def equalityExpression(self): + return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0) + + def EQUAL(self): + return self.getToken(Java20Parser.EQUAL, 0) + + def NOTEQUAL(self): + return self.getToken(Java20Parser.NOTEQUAL, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_equalityExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEqualityExpression"): + listener.enterEqualityExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEqualityExpression"): + listener.exitEqualityExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEqualityExpression"): + return visitor.visitEqualityExpression(self) + else: + return visitor.visitChildren(self) + + def equalityExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.EqualityExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 452 + self.enterRecursionRule(localctx, 452, self.RULE_equalityExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2789 + self.relationalExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2799 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 342, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 2797 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 341, self._ctx) + if la_ == 1: + localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression) + self.state = 2791 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 2792 + self.match(Java20Parser.EQUAL) + self.state = 2793 + self.relationalExpression(0) + pass + + elif la_ == 2: + localctx = Java20Parser.EqualityExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_equalityExpression) + self.state = 2794 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2795 + self.match(Java20Parser.NOTEQUAL) + self.state = 2796 + self.relationalExpression(0) + pass + + self.state = 2801 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 342, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class AndExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def equalityExpression(self): + return self.getTypedRuleContext(Java20Parser.EqualityExpressionContext, 0) + + def andExpression(self): + return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0) + + def BITAND(self): + return self.getToken(Java20Parser.BITAND, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_andExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAndExpression"): + listener.enterAndExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAndExpression"): + listener.exitAndExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAndExpression"): + return visitor.visitAndExpression(self) + else: + return visitor.visitChildren(self) + + def andExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.AndExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 454 + self.enterRecursionRule(localctx, 454, self.RULE_andExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2803 + self.equalityExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2810 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 343, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = Java20Parser.AndExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_andExpression) + self.state = 2805 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2806 + self.match(Java20Parser.BITAND) + self.state = 2807 + self.equalityExpression(0) + self.state = 2812 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 343, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ExclusiveOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def andExpression(self): + return self.getTypedRuleContext(Java20Parser.AndExpressionContext, 0) + + def exclusiveOrExpression(self): + return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0) + + def CARET(self): + return self.getToken(Java20Parser.CARET, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_exclusiveOrExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExclusiveOrExpression"): + listener.enterExclusiveOrExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExclusiveOrExpression"): + listener.exitExclusiveOrExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExclusiveOrExpression"): + return visitor.visitExclusiveOrExpression(self) + else: + return visitor.visitChildren(self) + + def exclusiveOrExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.ExclusiveOrExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 456 + self.enterRecursionRule(localctx, 456, self.RULE_exclusiveOrExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2814 + self.andExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2821 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 344, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = Java20Parser.ExclusiveOrExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_exclusiveOrExpression) + self.state = 2816 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2817 + self.match(Java20Parser.CARET) + self.state = 2818 + self.andExpression(0) + self.state = 2823 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 344, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class InclusiveOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def exclusiveOrExpression(self): + return self.getTypedRuleContext(Java20Parser.ExclusiveOrExpressionContext, 0) + + def inclusiveOrExpression(self): + return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0) + + def BITOR(self): + return self.getToken(Java20Parser.BITOR, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_inclusiveOrExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterInclusiveOrExpression"): + listener.enterInclusiveOrExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitInclusiveOrExpression"): + listener.exitInclusiveOrExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitInclusiveOrExpression"): + return visitor.visitInclusiveOrExpression(self) + else: + return visitor.visitChildren(self) + + def inclusiveOrExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.InclusiveOrExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 458 + self.enterRecursionRule(localctx, 458, self.RULE_inclusiveOrExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2825 + self.exclusiveOrExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2832 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 345, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = Java20Parser.InclusiveOrExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_inclusiveOrExpression) + self.state = 2827 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2828 + self.match(Java20Parser.BITOR) + self.state = 2829 + self.exclusiveOrExpression(0) + self.state = 2834 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 345, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ConditionalAndExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def inclusiveOrExpression(self): + return self.getTypedRuleContext(Java20Parser.InclusiveOrExpressionContext, 0) + + def conditionalAndExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0) + + def AND(self): + return self.getToken(Java20Parser.AND, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_conditionalAndExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConditionalAndExpression"): + listener.enterConditionalAndExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConditionalAndExpression"): + listener.exitConditionalAndExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConditionalAndExpression"): + return visitor.visitConditionalAndExpression(self) + else: + return visitor.visitChildren(self) + + def conditionalAndExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.ConditionalAndExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 460 + self.enterRecursionRule(localctx, 460, self.RULE_conditionalAndExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2836 + self.inclusiveOrExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2843 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 346, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = Java20Parser.ConditionalAndExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalAndExpression) + self.state = 2838 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2839 + self.match(Java20Parser.AND) + self.state = 2840 + self.inclusiveOrExpression(0) + self.state = 2845 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 346, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ConditionalOrExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def conditionalAndExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalAndExpressionContext, 0) + + def conditionalOrExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0) + + def OR(self): + return self.getToken(Java20Parser.OR, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_conditionalOrExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConditionalOrExpression"): + listener.enterConditionalOrExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConditionalOrExpression"): + listener.exitConditionalOrExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConditionalOrExpression"): + return visitor.visitConditionalOrExpression(self) + else: + return visitor.visitChildren(self) + + def conditionalOrExpression(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Java20Parser.ConditionalOrExpressionContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 462 + self.enterRecursionRule(localctx, 462, self.RULE_conditionalOrExpression, _p) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2847 + self.conditionalAndExpression(0) + self._ctx.stop = self._input.LT(-1) + self.state = 2854 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 347, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + localctx = Java20Parser.ConditionalOrExpressionContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_conditionalOrExpression) + self.state = 2849 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 2850 + self.match(Java20Parser.OR) + self.state = 2851 + self.conditionalAndExpression(0) + self.state = 2856 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 347, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class ConditionalExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def conditionalOrExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalOrExpressionContext, 0) + + def QUESTION(self): + return self.getToken(Java20Parser.QUESTION, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def COLON(self): + return self.getToken(Java20Parser.COLON, 0) + + def conditionalExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0) + + def lambdaExpression(self): + return self.getTypedRuleContext(Java20Parser.LambdaExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_conditionalExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConditionalExpression"): + listener.enterConditionalExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConditionalExpression"): + listener.exitConditionalExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConditionalExpression"): + return visitor.visitConditionalExpression(self) + else: + return visitor.visitChildren(self) + + def conditionalExpression(self): + + localctx = Java20Parser.ConditionalExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 464, self.RULE_conditionalExpression) + try: + self.state = 2870 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 348, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2857 + self.conditionalOrExpression(0) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2858 + self.conditionalOrExpression(0) + self.state = 2859 + self.match(Java20Parser.QUESTION) + self.state = 2860 + self.expression() + self.state = 2861 + self.match(Java20Parser.COLON) + self.state = 2862 + self.conditionalExpression() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2864 + self.conditionalOrExpression(0) + self.state = 2865 + self.match(Java20Parser.QUESTION) + self.state = 2866 + self.expression() + self.state = 2867 + self.match(Java20Parser.COLON) + self.state = 2868 + self.lambdaExpression() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssignmentExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def conditionalExpression(self): + return self.getTypedRuleContext(Java20Parser.ConditionalExpressionContext, 0) + + def assignment(self): + return self.getTypedRuleContext(Java20Parser.AssignmentContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_assignmentExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAssignmentExpression"): + listener.enterAssignmentExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAssignmentExpression"): + listener.exitAssignmentExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAssignmentExpression"): + return visitor.visitAssignmentExpression(self) + else: + return visitor.visitChildren(self) + + def assignmentExpression(self): + + localctx = Java20Parser.AssignmentExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 466, self.RULE_assignmentExpression) + try: + self.state = 2874 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 349, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2872 + self.conditionalExpression() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2873 + self.assignment() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssignmentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def leftHandSide(self): + return self.getTypedRuleContext(Java20Parser.LeftHandSideContext, 0) + + def assignmentOperator(self): + return self.getTypedRuleContext(Java20Parser.AssignmentOperatorContext, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_assignment + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAssignment"): + listener.enterAssignment(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAssignment"): + listener.exitAssignment(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAssignment"): + return visitor.visitAssignment(self) + else: + return visitor.visitChildren(self) + + def assignment(self): + + localctx = Java20Parser.AssignmentContext(self, self._ctx, self.state) + self.enterRule(localctx, 468, self.RULE_assignment) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2876 + self.leftHandSide() + self.state = 2877 + self.assignmentOperator() + self.state = 2878 + self.expression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LeftHandSideContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expressionName(self): + return self.getTypedRuleContext(Java20Parser.ExpressionNameContext, 0) + + def fieldAccess(self): + return self.getTypedRuleContext(Java20Parser.FieldAccessContext, 0) + + def arrayAccess(self): + return self.getTypedRuleContext(Java20Parser.ArrayAccessContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_leftHandSide + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLeftHandSide"): + listener.enterLeftHandSide(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLeftHandSide"): + listener.exitLeftHandSide(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLeftHandSide"): + return visitor.visitLeftHandSide(self) + else: + return visitor.visitChildren(self) + + def leftHandSide(self): + + localctx = Java20Parser.LeftHandSideContext(self, self._ctx, self.state) + self.enterRule(localctx, 470, self.RULE_leftHandSide) + try: + self.state = 2883 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 350, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2880 + self.expressionName() + pass + + elif la_ == 2: + self.enterOuterAlt(loc) + self.state = 2881 + self.fieldAccess() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 2882 + self.arrayAccess() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AssignmentOperatorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ASSIGN(self): + return self.getToken(Java20Parser.ASSIGN, 0) + + def MUL_ASSIGN(self): + return self.getToken(Java20Parser.MUL_ASSIGN, 0) + + def DIV_ASSIGN(self): + return self.getToken(Java20Parser.DIV_ASSIGN, 0) + + def MOD_ASSIGN(self): + return self.getToken(Java20Parser.MOD_ASSIGN, 0) + + def ADD_ASSIGN(self): + return self.getToken(Java20Parser.ADD_ASSIGN, 0) + + def SUB_ASSIGN(self): + return self.getToken(Java20Parser.SUB_ASSIGN, 0) + + def LSHIFT_ASSIGN(self): + return self.getToken(Java20Parser.LSHIFT_ASSIGN, 0) + + def RSHIFT_ASSIGN(self): + return self.getToken(Java20Parser.RSHIFT_ASSIGN, 0) + + def URSHIFT_ASSIGN(self): + return self.getToken(Java20Parser.URSHIFT_ASSIGN, 0) + + def AND_ASSIGN(self): + return self.getToken(Java20Parser.AND_ASSIGN, 0) + + def XOR_ASSIGN(self): + return self.getToken(Java20Parser.XOR_ASSIGN, 0) + + def OR_ASSIGN(self): + return self.getToken(Java20Parser.OR_ASSIGN, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_assignmentOperator + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAssignmentOperator"): + listener.enterAssignmentOperator(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAssignmentOperator"): + listener.exitAssignmentOperator(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAssignmentOperator"): + return visitor.visitAssignmentOperator(self) + else: + return visitor.visitChildren(self) + + def assignmentOperator(self): + + localctx = Java20Parser.AssignmentOperatorContext(self, self._ctx, self.state) + self.enterRule(localctx, 472, self.RULE_assignmentOperator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 2885 + _la = self._input.LA(1) + if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 34342961153) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def lambdaParameters(self): + return self.getTypedRuleContext(Java20Parser.LambdaParametersContext, 0) + + def ARROW(self): + return self.getToken(Java20Parser.ARROW, 0) + + def lambdaBody(self): + return self.getTypedRuleContext(Java20Parser.LambdaBodyContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaExpression"): + listener.enterLambdaExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaExpression"): + listener.exitLambdaExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaExpression"): + return visitor.visitLambdaExpression(self) + else: + return visitor.visitChildren(self) + + def lambdaExpression(self): + + localctx = Java20Parser.LambdaExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 474, self.RULE_lambdaExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2887 + self.lambdaParameters() + self.state = 2888 + self.match(Java20Parser.ARROW) + self.state = 2889 + self.lambdaBody() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaParametersContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def lambdaParameterList(self): + return self.getTypedRuleContext(Java20Parser.LambdaParameterListContext, 0) + + def Identifier(self): + return self.getToken(Java20Parser.Identifier, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaParameters + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaParameters"): + listener.enterLambdaParameters(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaParameters"): + listener.exitLambdaParameters(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaParameters"): + return visitor.visitLambdaParameters(self) + else: + return visitor.visitChildren(self) + + def lambdaParameters(self): + + localctx = Java20Parser.LambdaParametersContext(self, self._ctx, self.state) + self.enterRule(localctx, 476, self.RULE_lambdaParameters) + self._la = 0 # Token type + try: + self.state = 2897 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [76]: + self.enterOuterAlt(localctx, 1) + self.state = 2891 + self.match(Java20Parser.LPAREN) + self.state = 2893 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 18102533424709632) != 0) or _la == 86 or _la == 123: + self.state = 2892 + self.lambdaParameterList() + + self.state = 2895 + self.match(Java20Parser.RPAREN) + pass + elif token in [123]: + self.enterOuterAlt(localctx, 2) + self.state = 2896 + self.match(Java20Parser.Identifier) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaParameterListContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def lambdaParameter(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.LambdaParameterContext) + else: + return self.getTypedRuleContext(Java20Parser.LambdaParameterContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.COMMA) + else: + return self.getToken(Java20Parser.COMMA, i) + + def Identifier(self, i: int = None): + if i is None: + return self.getTokens(Java20Parser.Identifier) + else: + return self.getToken(Java20Parser.Identifier, i) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaParameterList + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaParameterList"): + listener.enterLambdaParameterList(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaParameterList"): + listener.exitLambdaParameterList(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaParameterList"): + return visitor.visitLambdaParameterList(self) + else: + return visitor.visitChildren(self) + + def lambdaParameterList(self): + + localctx = Java20Parser.LambdaParameterListContext(self, self._ctx, self.state) + self.enterRule(localctx, 478, self.RULE_lambdaParameterList) + self._la = 0 # Token type + try: + self.state = 2915 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 355, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2899 + self.lambdaParameter() + self.state = 2904 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 2900 + self.match(Java20Parser.COMMA) + self.state = 2901 + self.lambdaParameter() + self.state = 2906 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2907 + self.match(Java20Parser.Identifier) + self.state = 2912 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 83: + self.state = 2908 + self.match(Java20Parser.COMMA) + self.state = 2909 + self.match(Java20Parser.Identifier) + self.state = 2914 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaParameterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def lambdaParameterType(self): + return self.getTypedRuleContext(Java20Parser.LambdaParameterTypeContext, 0) + + def variableDeclaratorId(self): + return self.getTypedRuleContext(Java20Parser.VariableDeclaratorIdContext, 0) + + def variableModifier(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Java20Parser.VariableModifierContext) + else: + return self.getTypedRuleContext(Java20Parser.VariableModifierContext, i) + + def variableArityParameter(self): + return self.getTypedRuleContext(Java20Parser.VariableArityParameterContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaParameter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaParameter"): + listener.enterLambdaParameter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaParameter"): + listener.exitLambdaParameter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaParameter"): + return visitor.visitLambdaParameter(self) + else: + return visitor.visitChildren(self) + + def lambdaParameter(self): + + localctx = Java20Parser.LambdaParameterContext(self, self._ctx, self.state) + self.enterRule(localctx, 480, self.RULE_lambdaParameter) + self._la = 0 # Token type + try: + self.state = 2927 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 357, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 2920 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 35 or _la == 86: + self.state = 2917 + self.variableModifier() + self.state = 2922 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 2923 + self.lambdaParameterType() + self.state = 2924 + self.variableDeclaratorId() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 2926 + self.variableArityParameter() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaParameterTypeContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def unannType(self): + return self.getTypedRuleContext(Java20Parser.UnannTypeContext, 0) + + def VAR(self): + return self.getToken(Java20Parser.VAR, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaParameterType + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaParameterType"): + listener.enterLambdaParameterType(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaParameterType"): + listener.exitLambdaParameterType(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaParameterType"): + return visitor.visitLambdaParameterType(self) + else: + return visitor.visitChildren(self) + + def lambdaParameterType(self): + + localctx = Java20Parser.LambdaParameterTypeContext(self, self._ctx, self.state) + self.enterRule(localctx, 482, self.RULE_lambdaParameterType) + try: + self.state = 2931 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 54, 123]: + self.enterOuterAlt(localctx, 1) + self.state = 2929 + self.unannType() + pass + elif token in [15]: + self.enterOuterAlt(localctx, 2) + self.state = 2930 + self.match(Java20Parser.VAR) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdaBodyContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def block(self): + return self.getTypedRuleContext(Java20Parser.BlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_lambdaBody + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdaBody"): + listener.enterLambdaBody(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdaBody"): + listener.exitLambdaBody(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdaBody"): + return visitor.visitLambdaBody(self) + else: + return visitor.visitChildren(self) + + def lambdaBody(self): + + localctx = Java20Parser.LambdaBodyContext(self, self._ctx, self.state) + self.enterRule(localctx, 484, self.RULE_lambdaBody) + try: + self.state = 2935 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [20, 22, 25, 31, 37, 44, 46, 48, 54, 57, 58, 60, 65, 69, 70, 71, 72, 73, 74, 75, 76, 86, 91, 92, + 102, 103, 104, 105, 123]: + self.enterOuterAlt(localctx, 1) + self.state = 2933 + self.expression() + pass + elif token in [78]: + self.enterOuterAlt(localctx, 2) + self.state = 2934 + self.block() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SwitchExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def SWITCH(self): + return self.getToken(Java20Parser.SWITCH, 0) + + def LPAREN(self): + return self.getToken(Java20Parser.LPAREN, 0) + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def RPAREN(self): + return self.getToken(Java20Parser.RPAREN, 0) + + def switchBlock(self): + return self.getTypedRuleContext(Java20Parser.SwitchBlockContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_switchExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSwitchExpression"): + listener.enterSwitchExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSwitchExpression"): + listener.exitSwitchExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSwitchExpression"): + return visitor.visitSwitchExpression(self) + else: + return visitor.visitChildren(self) + + def switchExpression(self): + + localctx = Java20Parser.SwitchExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 486, self.RULE_switchExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2937 + self.match(Java20Parser.SWITCH) + self.state = 2938 + self.match(Java20Parser.LPAREN) + self.state = 2939 + self.expression() + self.state = 2940 + self.match(Java20Parser.RPAREN) + self.state = 2941 + self.switchBlock() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ConstantExpressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expression(self): + return self.getTypedRuleContext(Java20Parser.ExpressionContext, 0) + + def getRuleIndex(self): + return Java20Parser.RULE_constantExpression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterConstantExpression"): + listener.enterConstantExpression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitConstantExpression"): + listener.exitConstantExpression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitConstantExpression"): + return visitor.visitConstantExpression(self) + else: + return visitor.visitChildren(self) + + def constantExpression(self): + + localctx = Java20Parser.ConstantExpressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 488, self.RULE_constantExpression) + try: + self.enterOuterAlt(localctx, 1) + self.state = 2943 + self.expression() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): + if self._predicates == None: + self._predicates = dict() + self._predicates[222] = self.multiplicativeExpression_sempred + self._predicates[223] = self.additiveExpression_sempred + self._predicates[224] = self.shiftExpression_sempred + self._predicates[225] = self.relationalExpression_sempred + self._predicates[226] = self.equalityExpression_sempred + self._predicates[227] = self.andExpression_sempred + self._predicates[228] = self.exclusiveOrExpression_sempred + self._predicates[229] = self.inclusiveOrExpression_sempred + self._predicates[230] = self.conditionalAndExpression_sempred + self._predicates[231] = self.conditionalOrExpression_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def multiplicativeExpression_sempred(self, localctx: MultiplicativeExpressionContext, predIndex: int): + if predIndex == 0: + return self.precpred(self._ctx, 3) + + if predIndex == 1: + return self.precpred(self._ctx, 2) + + if predIndex == 2: + return self.precpred(self._ctx, 1) + + def additiveExpression_sempred(self, localctx: AdditiveExpressionContext, predIndex: int): + if predIndex == 3: + return self.precpred(self._ctx, 2) + + if predIndex == 4: + return self.precpred(self._ctx, 1) + + def shiftExpression_sempred(self, localctx: ShiftExpressionContext, predIndex: int): + if predIndex == 5: + return self.precpred(self._ctx, 3) + + if predIndex == 6: + return self.precpred(self._ctx, 2) + + if predIndex == 7: + return self.precpred(self._ctx, 1) + + def relationalExpression_sempred(self, localctx: RelationalExpressionContext, predIndex: int): + if predIndex == 8: + return self.precpred(self._ctx, 5) + + if predIndex == 9: + return self.precpred(self._ctx, 4) + + if predIndex == 10: + return self.precpred(self._ctx, 3) + + if predIndex == 11: + return self.precpred(self._ctx, 2) + + if predIndex == 12: + return self.precpred(self._ctx, 1) + + def equalityExpression_sempred(self, localctx: EqualityExpressionContext, predIndex: int): + if predIndex == 13: + return self.precpred(self._ctx, 2) + + if predIndex == 14: + return self.precpred(self._ctx, 1) + + def andExpression_sempred(self, localctx: AndExpressionContext, predIndex: int): + if predIndex == 15: + return self.precpred(self._ctx, 1) + + def exclusiveOrExpression_sempred(self, localctx: ExclusiveOrExpressionContext, predIndex: int): + if predIndex == 16: + return self.precpred(self._ctx, 1) + + def inclusiveOrExpression_sempred(self, localctx: InclusiveOrExpressionContext, predIndex: int): + if predIndex == 17: + return self.precpred(self._ctx, 1) + + def conditionalAndExpression_sempred(self, localctx: ConditionalAndExpressionContext, predIndex: int): + if predIndex == 18: + return self.precpred(self._ctx, 1) + + def conditionalOrExpression_sempred(self, localctx: ConditionalOrExpressionContext, predIndex: int): + if predIndex == 19: + return self.precpred(self._ctx, 1) + + + + + diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py new file mode 100644 index 000000000..62eb96c77 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/JavaParserVisitor.py @@ -0,0 +1,1240 @@ +# Generated from Java20Parser.g4 by ANTLR 4.13.1 +from antlr4 import * + +if "." in __name__: + from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser +else: + from module_programming_winnowing.convert_code_to_ast.languages.java.JavaParser import Java20Parser + + +# This class defines a complete generic visitor for a parse tree produced by Java20Parser. + +class Java20ParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by Java20Parser#start_. + def visitStart_(self, ctx:Java20Parser.Start_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#literal. + def visitLiteral(self, ctx:Java20Parser.LiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeIdentifier. + def visitTypeIdentifier(self, ctx:Java20Parser.TypeIdentifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unqualifiedMethodIdentifier. + def visitUnqualifiedMethodIdentifier(self, ctx:Java20Parser.UnqualifiedMethodIdentifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#primitiveType. + def visitPrimitiveType(self, ctx:Java20Parser.PrimitiveTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#numericType. + def visitNumericType(self, ctx:Java20Parser.NumericTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#integralType. + def visitIntegralType(self, ctx:Java20Parser.IntegralTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#floatingPointType. + def visitFloatingPointType(self, ctx:Java20Parser.FloatingPointTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#referenceType. + def visitReferenceType(self, ctx:Java20Parser.ReferenceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#coit. + def visitCoit(self, ctx:Java20Parser.CoitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classOrInterfaceType. + def visitClassOrInterfaceType(self, ctx:Java20Parser.ClassOrInterfaceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classType. + def visitClassType(self, ctx:Java20Parser.ClassTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceType. + def visitInterfaceType(self, ctx:Java20Parser.InterfaceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeVariable. + def visitTypeVariable(self, ctx:Java20Parser.TypeVariableContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayType. + def visitArrayType(self, ctx:Java20Parser.ArrayTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#dims. + def visitDims(self, ctx:Java20Parser.DimsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeParameter. + def visitTypeParameter(self, ctx:Java20Parser.TypeParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeParameterModifier. + def visitTypeParameterModifier(self, ctx:Java20Parser.TypeParameterModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeBound. + def visitTypeBound(self, ctx:Java20Parser.TypeBoundContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#additionalBound. + def visitAdditionalBound(self, ctx:Java20Parser.AdditionalBoundContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeArguments. + def visitTypeArguments(self, ctx:Java20Parser.TypeArgumentsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeArgumentList. + def visitTypeArgumentList(self, ctx:Java20Parser.TypeArgumentListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeArgument. + def visitTypeArgument(self, ctx:Java20Parser.TypeArgumentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#wildcard. + def visitWildcard(self, ctx:Java20Parser.WildcardContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#wildcardBounds. + def visitWildcardBounds(self, ctx:Java20Parser.WildcardBoundsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#moduleName. + def visitModuleName(self, ctx:Java20Parser.ModuleNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#packageName. + def visitPackageName(self, ctx:Java20Parser.PackageNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeName. + def visitTypeName(self, ctx:Java20Parser.TypeNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#packageOrTypeName. + def visitPackageOrTypeName(self, ctx:Java20Parser.PackageOrTypeNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#expressionName. + def visitExpressionName(self, ctx:Java20Parser.ExpressionNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodName. + def visitMethodName(self, ctx:Java20Parser.MethodNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#ambiguousName. + def visitAmbiguousName(self, ctx:Java20Parser.AmbiguousNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#compilationUnit. + def visitCompilationUnit(self, ctx:Java20Parser.CompilationUnitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#ordinaryCompilationUnit. + def visitOrdinaryCompilationUnit(self, ctx:Java20Parser.OrdinaryCompilationUnitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#modularCompilationUnit. + def visitModularCompilationUnit(self, ctx:Java20Parser.ModularCompilationUnitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#packageDeclaration. + def visitPackageDeclaration(self, ctx:Java20Parser.PackageDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#packageModifier. + def visitPackageModifier(self, ctx:Java20Parser.PackageModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#importDeclaration. + def visitImportDeclaration(self, ctx:Java20Parser.ImportDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#singleTypeImportDeclaration. + def visitSingleTypeImportDeclaration(self, ctx:Java20Parser.SingleTypeImportDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeImportOnDemandDeclaration. + def visitTypeImportOnDemandDeclaration(self, ctx:Java20Parser.TypeImportOnDemandDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#singleStaticImportDeclaration. + def visitSingleStaticImportDeclaration(self, ctx:Java20Parser.SingleStaticImportDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#staticImportOnDemandDeclaration. + def visitStaticImportOnDemandDeclaration(self, ctx:Java20Parser.StaticImportOnDemandDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#topLevelClassOrInterfaceDeclaration. + def visitTopLevelClassOrInterfaceDeclaration(self, ctx:Java20Parser.TopLevelClassOrInterfaceDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#moduleDeclaration. + def visitModuleDeclaration(self, ctx:Java20Parser.ModuleDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#moduleDirective. + def visitModuleDirective(self, ctx:Java20Parser.ModuleDirectiveContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#requiresModifier. + def visitRequiresModifier(self, ctx:Java20Parser.RequiresModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classDeclaration. + def visitClassDeclaration(self, ctx:Java20Parser.ClassDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#normalClassDeclaration. + def visitNormalClassDeclaration(self, ctx:Java20Parser.NormalClassDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classModifier. + def visitClassModifier(self, ctx:Java20Parser.ClassModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeParameters. + def visitTypeParameters(self, ctx:Java20Parser.TypeParametersContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeParameterList. + def visitTypeParameterList(self, ctx:Java20Parser.TypeParameterListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classExtends. + def visitClassExtends(self, ctx:Java20Parser.ClassExtendsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classImplements. + def visitClassImplements(self, ctx:Java20Parser.ClassImplementsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceTypeList. + def visitInterfaceTypeList(self, ctx:Java20Parser.InterfaceTypeListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classPermits. + def visitClassPermits(self, ctx:Java20Parser.ClassPermitsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classBody. + def visitClassBody(self, ctx:Java20Parser.ClassBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classBodyDeclaration. + def visitClassBodyDeclaration(self, ctx:Java20Parser.ClassBodyDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classMemberDeclaration. + def visitClassMemberDeclaration(self, ctx:Java20Parser.ClassMemberDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#fieldDeclaration. + def visitFieldDeclaration(self, ctx:Java20Parser.FieldDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#fieldModifier. + def visitFieldModifier(self, ctx:Java20Parser.FieldModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableDeclaratorList. + def visitVariableDeclaratorList(self, ctx:Java20Parser.VariableDeclaratorListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableDeclarator. + def visitVariableDeclarator(self, ctx:Java20Parser.VariableDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableDeclaratorId. + def visitVariableDeclaratorId(self, ctx:Java20Parser.VariableDeclaratorIdContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableInitializer. + def visitVariableInitializer(self, ctx:Java20Parser.VariableInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannType. + def visitUnannType(self, ctx:Java20Parser.UnannTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannPrimitiveType. + def visitUnannPrimitiveType(self, ctx:Java20Parser.UnannPrimitiveTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannReferenceType. + def visitUnannReferenceType(self, ctx:Java20Parser.UnannReferenceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannClassOrInterfaceType. + def visitUnannClassOrInterfaceType(self, ctx:Java20Parser.UnannClassOrInterfaceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#uCOIT. + def visitUCOIT(self, ctx:Java20Parser.UCOITContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannClassType. + def visitUnannClassType(self, ctx:Java20Parser.UnannClassTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannInterfaceType. + def visitUnannInterfaceType(self, ctx:Java20Parser.UnannInterfaceTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannTypeVariable. + def visitUnannTypeVariable(self, ctx:Java20Parser.UnannTypeVariableContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unannArrayType. + def visitUnannArrayType(self, ctx:Java20Parser.UnannArrayTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodDeclaration. + def visitMethodDeclaration(self, ctx:Java20Parser.MethodDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodModifier. + def visitMethodModifier(self, ctx:Java20Parser.MethodModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodHeader. + def visitMethodHeader(self, ctx:Java20Parser.MethodHeaderContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#result. + def visitResult(self, ctx:Java20Parser.ResultContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodDeclarator. + def visitMethodDeclarator(self, ctx:Java20Parser.MethodDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#receiverParameter. + def visitReceiverParameter(self, ctx:Java20Parser.ReceiverParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#formalParameterList. + def visitFormalParameterList(self, ctx:Java20Parser.FormalParameterListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#formalParameter. + def visitFormalParameter(self, ctx:Java20Parser.FormalParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableArityParameter. + def visitVariableArityParameter(self, ctx:Java20Parser.VariableArityParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableModifier. + def visitVariableModifier(self, ctx:Java20Parser.VariableModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#throwsT. + def visitThrowsT(self, ctx:Java20Parser.ThrowsTContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#exceptionTypeList. + def visitExceptionTypeList(self, ctx:Java20Parser.ExceptionTypeListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#exceptionType. + def visitExceptionType(self, ctx:Java20Parser.ExceptionTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodBody. + def visitMethodBody(self, ctx:Java20Parser.MethodBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#instanceInitializer. + def visitInstanceInitializer(self, ctx:Java20Parser.InstanceInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#staticInitializer. + def visitStaticInitializer(self, ctx:Java20Parser.StaticInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constructorDeclaration. + def visitConstructorDeclaration(self, ctx:Java20Parser.ConstructorDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constructorModifier. + def visitConstructorModifier(self, ctx:Java20Parser.ConstructorModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constructorDeclarator. + def visitConstructorDeclarator(self, ctx:Java20Parser.ConstructorDeclaratorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#simpleTypeName. + def visitSimpleTypeName(self, ctx:Java20Parser.SimpleTypeNameContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constructorBody. + def visitConstructorBody(self, ctx:Java20Parser.ConstructorBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#explicitConstructorInvocation. + def visitExplicitConstructorInvocation(self, ctx:Java20Parser.ExplicitConstructorInvocationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumDeclaration. + def visitEnumDeclaration(self, ctx:Java20Parser.EnumDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumBody. + def visitEnumBody(self, ctx:Java20Parser.EnumBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumConstantList. + def visitEnumConstantList(self, ctx:Java20Parser.EnumConstantListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumConstant. + def visitEnumConstant(self, ctx:Java20Parser.EnumConstantContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumConstantModifier. + def visitEnumConstantModifier(self, ctx:Java20Parser.EnumConstantModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enumBodyDeclarations. + def visitEnumBodyDeclarations(self, ctx:Java20Parser.EnumBodyDeclarationsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordDeclaration. + def visitRecordDeclaration(self, ctx:Java20Parser.RecordDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordHeader. + def visitRecordHeader(self, ctx:Java20Parser.RecordHeaderContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordComponentList. + def visitRecordComponentList(self, ctx:Java20Parser.RecordComponentListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordComponent. + def visitRecordComponent(self, ctx:Java20Parser.RecordComponentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableArityRecordComponent. + def visitVariableArityRecordComponent(self, ctx:Java20Parser.VariableArityRecordComponentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordComponentModifier. + def visitRecordComponentModifier(self, ctx:Java20Parser.RecordComponentModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordBody. + def visitRecordBody(self, ctx:Java20Parser.RecordBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#recordBodyDeclaration. + def visitRecordBodyDeclaration(self, ctx:Java20Parser.RecordBodyDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#compactConstructorDeclaration. + def visitCompactConstructorDeclaration(self, ctx:Java20Parser.CompactConstructorDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceDeclaration. + def visitInterfaceDeclaration(self, ctx:Java20Parser.InterfaceDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#normalInterfaceDeclaration. + def visitNormalInterfaceDeclaration(self, ctx:Java20Parser.NormalInterfaceDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceModifier. + def visitInterfaceModifier(self, ctx:Java20Parser.InterfaceModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceExtends. + def visitInterfaceExtends(self, ctx:Java20Parser.InterfaceExtendsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfacePermits. + def visitInterfacePermits(self, ctx:Java20Parser.InterfacePermitsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceBody. + def visitInterfaceBody(self, ctx:Java20Parser.InterfaceBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceMemberDeclaration. + def visitInterfaceMemberDeclaration(self, ctx:Java20Parser.InterfaceMemberDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constantDeclaration. + def visitConstantDeclaration(self, ctx:Java20Parser.ConstantDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constantModifier. + def visitConstantModifier(self, ctx:Java20Parser.ConstantModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceMethodDeclaration. + def visitInterfaceMethodDeclaration(self, ctx:Java20Parser.InterfaceMethodDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#interfaceMethodModifier. + def visitInterfaceMethodModifier(self, ctx:Java20Parser.InterfaceMethodModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotationInterfaceDeclaration. + def visitAnnotationInterfaceDeclaration(self, ctx:Java20Parser.AnnotationInterfaceDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotationInterfaceBody. + def visitAnnotationInterfaceBody(self, ctx:Java20Parser.AnnotationInterfaceBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotationInterfaceMemberDeclaration. + def visitAnnotationInterfaceMemberDeclaration(self, ctx:Java20Parser.AnnotationInterfaceMemberDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotationInterfaceElementDeclaration. + def visitAnnotationInterfaceElementDeclaration(self, ctx:Java20Parser.AnnotationInterfaceElementDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotationInterfaceElementModifier. + def visitAnnotationInterfaceElementModifier(self, ctx:Java20Parser.AnnotationInterfaceElementModifierContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#defaultValue. + def visitDefaultValue(self, ctx:Java20Parser.DefaultValueContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#annotation. + def visitAnnotation(self, ctx:Java20Parser.AnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#normalAnnotation. + def visitNormalAnnotation(self, ctx:Java20Parser.NormalAnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#elementValuePairList. + def visitElementValuePairList(self, ctx:Java20Parser.ElementValuePairListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#elementValuePair. + def visitElementValuePair(self, ctx:Java20Parser.ElementValuePairContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#elementValue. + def visitElementValue(self, ctx:Java20Parser.ElementValueContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#elementValueArrayInitializer. + def visitElementValueArrayInitializer(self, ctx:Java20Parser.ElementValueArrayInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#elementValueList. + def visitElementValueList(self, ctx:Java20Parser.ElementValueListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#markerAnnotation. + def visitMarkerAnnotation(self, ctx:Java20Parser.MarkerAnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#singleElementAnnotation. + def visitSingleElementAnnotation(self, ctx:Java20Parser.SingleElementAnnotationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayInitializer. + def visitArrayInitializer(self, ctx:Java20Parser.ArrayInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableInitializerList. + def visitVariableInitializerList(self, ctx:Java20Parser.VariableInitializerListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#block. + def visitBlock(self, ctx:Java20Parser.BlockContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#blockStatements. + def visitBlockStatements(self, ctx:Java20Parser.BlockStatementsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#blockStatement. + def visitBlockStatement(self, ctx:Java20Parser.BlockStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#localClassOrInterfaceDeclaration. + def visitLocalClassOrInterfaceDeclaration(self, ctx:Java20Parser.LocalClassOrInterfaceDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#localVariableDeclaration. + def visitLocalVariableDeclaration(self, ctx:Java20Parser.LocalVariableDeclarationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#localVariableType. + def visitLocalVariableType(self, ctx:Java20Parser.LocalVariableTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#localVariableDeclarationStatement. + def visitLocalVariableDeclarationStatement(self, ctx:Java20Parser.LocalVariableDeclarationStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#statement. + def visitStatement(self, ctx:Java20Parser.StatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#statementNoShortIf. + def visitStatementNoShortIf(self, ctx:Java20Parser.StatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#statementWithoutTrailingSubstatement. + def visitStatementWithoutTrailingSubstatement(self, ctx:Java20Parser.StatementWithoutTrailingSubstatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#emptyStatement_. + def visitEmptyStatement_(self, ctx:Java20Parser.EmptyStatement_Context): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#labeledStatement. + def visitLabeledStatement(self, ctx:Java20Parser.LabeledStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#labeledStatementNoShortIf. + def visitLabeledStatementNoShortIf(self, ctx:Java20Parser.LabeledStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#expressionStatement. + def visitExpressionStatement(self, ctx:Java20Parser.ExpressionStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#statementExpression. + def visitStatementExpression(self, ctx:Java20Parser.StatementExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#ifThenStatement. + def visitIfThenStatement(self, ctx:Java20Parser.IfThenStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#ifThenElseStatement. + def visitIfThenElseStatement(self, ctx:Java20Parser.IfThenElseStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#ifThenElseStatementNoShortIf. + def visitIfThenElseStatementNoShortIf(self, ctx:Java20Parser.IfThenElseStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#assertStatement. + def visitAssertStatement(self, ctx:Java20Parser.AssertStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchStatement. + def visitSwitchStatement(self, ctx:Java20Parser.SwitchStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchBlock. + def visitSwitchBlock(self, ctx:Java20Parser.SwitchBlockContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchRule. + def visitSwitchRule(self, ctx:Java20Parser.SwitchRuleContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchBlockStatementGroup. + def visitSwitchBlockStatementGroup(self, ctx:Java20Parser.SwitchBlockStatementGroupContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchLabel. + def visitSwitchLabel(self, ctx:Java20Parser.SwitchLabelContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#caseConstant. + def visitCaseConstant(self, ctx:Java20Parser.CaseConstantContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#whileStatement. + def visitWhileStatement(self, ctx:Java20Parser.WhileStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#whileStatementNoShortIf. + def visitWhileStatementNoShortIf(self, ctx:Java20Parser.WhileStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#doStatement. + def visitDoStatement(self, ctx:Java20Parser.DoStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#forStatement. + def visitForStatement(self, ctx:Java20Parser.ForStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#forStatementNoShortIf. + def visitForStatementNoShortIf(self, ctx:Java20Parser.ForStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#basicForStatement. + def visitBasicForStatement(self, ctx:Java20Parser.BasicForStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#basicForStatementNoShortIf. + def visitBasicForStatementNoShortIf(self, ctx:Java20Parser.BasicForStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#forInit. + def visitForInit(self, ctx:Java20Parser.ForInitContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#forUpdate. + def visitForUpdate(self, ctx:Java20Parser.ForUpdateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#statementExpressionList. + def visitStatementExpressionList(self, ctx:Java20Parser.StatementExpressionListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enhancedForStatement. + def visitEnhancedForStatement(self, ctx:Java20Parser.EnhancedForStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#enhancedForStatementNoShortIf. + def visitEnhancedForStatementNoShortIf(self, ctx:Java20Parser.EnhancedForStatementNoShortIfContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#breakStatement. + def visitBreakStatement(self, ctx:Java20Parser.BreakStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#continueStatement. + def visitContinueStatement(self, ctx:Java20Parser.ContinueStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#returnStatement. + def visitReturnStatement(self, ctx:Java20Parser.ReturnStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#throwStatement. + def visitThrowStatement(self, ctx:Java20Parser.ThrowStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#synchronizedStatement. + def visitSynchronizedStatement(self, ctx:Java20Parser.SynchronizedStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#tryStatement. + def visitTryStatement(self, ctx:Java20Parser.TryStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#catches. + def visitCatches(self, ctx:Java20Parser.CatchesContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#catchClause. + def visitCatchClause(self, ctx:Java20Parser.CatchClauseContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#catchFormalParameter. + def visitCatchFormalParameter(self, ctx:Java20Parser.CatchFormalParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#catchType. + def visitCatchType(self, ctx:Java20Parser.CatchTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#finallyBlock. + def visitFinallyBlock(self, ctx:Java20Parser.FinallyBlockContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#tryWithResourcesStatement. + def visitTryWithResourcesStatement(self, ctx:Java20Parser.TryWithResourcesStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#resourceSpecification. + def visitResourceSpecification(self, ctx:Java20Parser.ResourceSpecificationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#resourceList. + def visitResourceList(self, ctx:Java20Parser.ResourceListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#resource. + def visitResource(self, ctx:Java20Parser.ResourceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#variableAccess. + def visitVariableAccess(self, ctx:Java20Parser.VariableAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#yieldStatement. + def visitYieldStatement(self, ctx:Java20Parser.YieldStatementContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#pattern. + def visitPattern(self, ctx:Java20Parser.PatternContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typePattern. + def visitTypePattern(self, ctx:Java20Parser.TypePatternContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#expression. + def visitExpression(self, ctx:Java20Parser.ExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#primary. + def visitPrimary(self, ctx:Java20Parser.PrimaryContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#primaryNoNewArray. + def visitPrimaryNoNewArray(self, ctx:Java20Parser.PrimaryNoNewArrayContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#pNNA. + def visitPNNA(self, ctx:Java20Parser.PNNAContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classLiteral. + def visitClassLiteral(self, ctx:Java20Parser.ClassLiteralContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classInstanceCreationExpression. + def visitClassInstanceCreationExpression(self, ctx:Java20Parser.ClassInstanceCreationExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unqualifiedClassInstanceCreationExpression. + def visitUnqualifiedClassInstanceCreationExpression(self, ctx:Java20Parser.UnqualifiedClassInstanceCreationExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#classOrInterfaceTypeToInstantiate. + def visitClassOrInterfaceTypeToInstantiate(self, ctx:Java20Parser.ClassOrInterfaceTypeToInstantiateContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#typeArgumentsOrDiamond. + def visitTypeArgumentsOrDiamond(self, ctx:Java20Parser.TypeArgumentsOrDiamondContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayCreationExpression. + def visitArrayCreationExpression(self, ctx:Java20Parser.ArrayCreationExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithoutInitializer. + def visitArrayCreationExpressionWithoutInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithoutInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayCreationExpressionWithInitializer. + def visitArrayCreationExpressionWithInitializer(self, ctx:Java20Parser.ArrayCreationExpressionWithInitializerContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#dimExprs. + def visitDimExprs(self, ctx:Java20Parser.DimExprsContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#dimExpr. + def visitDimExpr(self, ctx:Java20Parser.DimExprContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#arrayAccess. + def visitArrayAccess(self, ctx:Java20Parser.ArrayAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#fieldAccess. + def visitFieldAccess(self, ctx:Java20Parser.FieldAccessContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodInvocation. + def visitMethodInvocation(self, ctx:Java20Parser.MethodInvocationContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#argumentList. + def visitArgumentList(self, ctx:Java20Parser.ArgumentListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#methodReference. + def visitMethodReference(self, ctx:Java20Parser.MethodReferenceContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#postfixExpression. + def visitPostfixExpression(self, ctx:Java20Parser.PostfixExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#pfE. + def visitPfE(self, ctx:Java20Parser.PfEContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#postIncrementExpression. + def visitPostIncrementExpression(self, ctx:Java20Parser.PostIncrementExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#postDecrementExpression. + def visitPostDecrementExpression(self, ctx:Java20Parser.PostDecrementExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unaryExpression. + def visitUnaryExpression(self, ctx:Java20Parser.UnaryExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#preIncrementExpression. + def visitPreIncrementExpression(self, ctx:Java20Parser.PreIncrementExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#preDecrementExpression. + def visitPreDecrementExpression(self, ctx:Java20Parser.PreDecrementExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#unaryExpressionNotPlusMinus. + def visitUnaryExpressionNotPlusMinus(self, ctx:Java20Parser.UnaryExpressionNotPlusMinusContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#castExpression. + def visitCastExpression(self, ctx:Java20Parser.CastExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#multiplicativeExpression. + def visitMultiplicativeExpression(self, ctx:Java20Parser.MultiplicativeExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#additiveExpression. + def visitAdditiveExpression(self, ctx:Java20Parser.AdditiveExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#shiftExpression. + def visitShiftExpression(self, ctx:Java20Parser.ShiftExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#relationalExpression. + def visitRelationalExpression(self, ctx:Java20Parser.RelationalExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#equalityExpression. + def visitEqualityExpression(self, ctx:Java20Parser.EqualityExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#andExpression. + def visitAndExpression(self, ctx:Java20Parser.AndExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#exclusiveOrExpression. + def visitExclusiveOrExpression(self, ctx:Java20Parser.ExclusiveOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#inclusiveOrExpression. + def visitInclusiveOrExpression(self, ctx:Java20Parser.InclusiveOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#conditionalAndExpression. + def visitConditionalAndExpression(self, ctx:Java20Parser.ConditionalAndExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#conditionalOrExpression. + def visitConditionalOrExpression(self, ctx:Java20Parser.ConditionalOrExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#conditionalExpression. + def visitConditionalExpression(self, ctx:Java20Parser.ConditionalExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#assignmentExpression. + def visitAssignmentExpression(self, ctx:Java20Parser.AssignmentExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#assignment. + def visitAssignment(self, ctx:Java20Parser.AssignmentContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#leftHandSide. + def visitLeftHandSide(self, ctx:Java20Parser.LeftHandSideContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#assignmentOperator. + def visitAssignmentOperator(self, ctx:Java20Parser.AssignmentOperatorContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaExpression. + def visitLambdaExpression(self, ctx:Java20Parser.LambdaExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaParameters. + def visitLambdaParameters(self, ctx:Java20Parser.LambdaParametersContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaParameterList. + def visitLambdaParameterList(self, ctx:Java20Parser.LambdaParameterListContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaParameter. + def visitLambdaParameter(self, ctx:Java20Parser.LambdaParameterContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaParameterType. + def visitLambdaParameterType(self, ctx:Java20Parser.LambdaParameterTypeContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#lambdaBody. + def visitLambdaBody(self, ctx:Java20Parser.LambdaBodyContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#switchExpression. + def visitSwitchExpression(self, ctx:Java20Parser.SwitchExpressionContext): + return self.visitChildren(ctx) + + + # Visit a parse tree produced by Java20Parser#constantExpression. + def visitConstantExpression(self, ctx:Java20Parser.ConstantExpressionContext): + return self.visitChildren(ctx) + + + +del Java20Parser \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/java/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py new file mode 100644 index 000000000..5603da4fa --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Lexer.py @@ -0,0 +1,791 @@ +# Generated from Python3Lexer.g4 by ANTLR 4.13.1 +from antlr4 import * +from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + + +if "." in __name__: + from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase +else: + from module_programming_winnowing.convert_code_to_ast.languages.python.Python3LexerBase import Python3LexerBase + +def serializedATN(): + return [ + 4,0,102,910,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5, + 2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2, + 13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7, + 19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2, + 26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7, + 32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2, + 39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7, + 45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2, + 52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7, + 58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2, + 65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7, + 71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2, + 78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7, + 84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2, + 91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7, + 97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103, + 7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108, + 2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114, + 7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119, + 2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125, + 7,125,2,126,7,126,2,127,7,127,2,128,7,128,1,0,1,0,3,0,262,8,0,1, + 1,1,1,1,1,3,1,267,8,1,1,2,1,2,1,2,1,2,3,2,273,8,2,1,3,1,3,1,3,1, + 3,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1, + 6,1,7,1,7,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1, + 9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,12,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,14,1,14, + 1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16, + 1,16,1,16,1,17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18, + 1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,23,1,23,1,23,1,23, + 1,23,1,23,1,23,1,24,1,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26, + 1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28, + 1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30, + 1,30,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33, + 1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35, + 1,35,1,36,1,36,1,36,1,36,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38, + 1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41, + 1,41,3,41,481,8,41,1,41,1,41,3,41,485,8,41,1,41,3,41,488,8,41,3, + 41,490,8,41,1,41,1,41,1,42,1,42,5,42,496,8,42,10,42,12,42,499,9, + 42,1,43,1,43,1,43,1,43,1,43,3,43,506,8,43,1,43,1,43,3,43,510,8,43, + 1,44,1,44,1,44,1,44,1,44,3,44,517,8,44,1,44,1,44,3,44,521,8,44,1, + 45,1,45,5,45,525,8,45,10,45,12,45,528,9,45,1,45,4,45,531,8,45,11, + 45,12,45,532,3,45,535,8,45,1,46,1,46,1,46,4,46,540,8,46,11,46,12, + 46,541,1,47,1,47,1,47,4,47,547,8,47,11,47,12,47,548,1,48,1,48,1, + 48,4,48,554,8,48,11,48,12,48,555,1,49,1,49,3,49,560,8,49,1,50,1, + 50,3,50,564,8,50,1,50,1,50,1,51,1,51,1,52,1,52,1,52,1,52,1,53,1, + 53,1,54,1,54,1,54,1,55,1,55,1,55,1,56,1,56,1,57,1,57,1,58,1,58,1, + 59,1,59,1,59,1,60,1,60,1,61,1,61,1,61,1,62,1,62,1,62,1,63,1,63,1, + 64,1,64,1,65,1,65,1,66,1,66,1,66,1,67,1,67,1,67,1,68,1,68,1,69,1, + 69,1,70,1,70,1,71,1,71,1,72,1,72,1,72,1,73,1,73,1,74,1,74,1,74,1, + 75,1,75,1,75,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,79,1,79,1,79,1, + 80,1,80,1,80,1,81,1,81,1,81,1,82,1,82,1,82,1,83,1,83,1,84,1,84,1, + 84,1,85,1,85,1,85,1,86,1,86,1,86,1,87,1,87,1,87,1,88,1,88,1,88,1, + 89,1,89,1,89,1,90,1,90,1,90,1,91,1,91,1,91,1,92,1,92,1,92,1,93,1, + 93,1,93,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1, + 96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,3,98,700,8,98,1,98,1,98,1, + 99,1,99,1,100,1,100,1,100,5,100,709,8,100,10,100,12,100,712,9,100, + 1,100,1,100,1,100,1,100,5,100,718,8,100,10,100,12,100,721,9,100, + 1,100,3,100,724,8,100,1,101,1,101,1,101,1,101,1,101,5,101,731,8, + 101,10,101,12,101,734,9,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,5,101,744,8,101,10,101,12,101,747,9,101,1,101,1,101, + 1,101,3,101,752,8,101,1,102,1,102,3,102,756,8,102,1,103,1,103,1, + 104,1,104,1,104,1,104,3,104,764,8,104,1,105,1,105,1,106,1,106,1, + 107,1,107,1,108,1,108,1,109,1,109,1,110,3,110,777,8,110,1,110,1, + 110,1,110,1,110,3,110,783,8,110,1,111,1,111,3,111,787,8,111,1,111, + 1,111,1,112,4,112,792,8,112,11,112,12,112,793,1,113,1,113,4,113, + 798,8,113,11,113,12,113,799,1,114,1,114,3,114,804,8,114,1,114,4, + 114,807,8,114,11,114,12,114,808,1,115,1,115,1,115,5,115,814,8,115, + 10,115,12,115,817,9,115,1,115,1,115,1,115,1,115,5,115,823,8,115, + 10,115,12,115,826,9,115,1,115,3,115,829,8,115,1,116,1,116,1,116, + 1,116,1,116,5,116,836,8,116,10,116,12,116,839,9,116,1,116,1,116, + 1,116,1,116,1,116,1,116,1,116,1,116,5,116,849,8,116,10,116,12,116, + 852,9,116,1,116,1,116,1,116,3,116,857,8,116,1,117,1,117,3,117,861, + 8,117,1,118,3,118,864,8,118,1,119,3,119,867,8,119,1,120,3,120,870, + 8,120,1,121,1,121,1,121,1,122,4,122,876,8,122,11,122,12,122,877, + 1,123,1,123,5,123,882,8,123,10,123,12,123,885,9,123,1,124,1,124, + 3,124,889,8,124,1,124,3,124,892,8,124,1,124,1,124,3,124,896,8,124, + 1,125,1,125,1,126,1,126,1,127,1,127,3,127,904,8,127,1,128,1,128, + 1,128,3,128,909,8,128,4,732,745,837,850,0,129,1,3,3,4,5,5,7,6,9, + 7,11,8,13,9,15,10,17,11,19,12,21,13,23,14,25,15,27,16,29,17,31,18, + 33,19,35,20,37,21,39,22,41,23,43,24,45,25,47,26,49,27,51,28,53,29, + 55,30,57,31,59,32,61,33,63,34,65,35,67,36,69,37,71,38,73,39,75,40, + 77,41,79,42,81,43,83,44,85,45,87,46,89,47,91,48,93,49,95,50,97,51, + 99,52,101,53,103,54,105,55,107,56,109,57,111,58,113,59,115,60,117, + 61,119,62,121,63,123,64,125,65,127,66,129,67,131,68,133,69,135,70, + 137,71,139,72,141,73,143,74,145,75,147,76,149,77,151,78,153,79,155, + 80,157,81,159,82,161,83,163,84,165,85,167,86,169,87,171,88,173,89, + 175,90,177,91,179,92,181,93,183,94,185,95,187,96,189,97,191,98,193, + 99,195,100,197,101,199,102,201,0,203,0,205,0,207,0,209,0,211,0,213, + 0,215,0,217,0,219,0,221,0,223,0,225,0,227,0,229,0,231,0,233,0,235, + 0,237,0,239,0,241,0,243,0,245,0,247,0,249,0,251,0,253,0,255,0,257, + 0,1,0,27,6,0,70,70,82,82,85,85,102,102,114,114,117,117,2,0,70,70, + 102,102,2,0,82,82,114,114,2,0,66,66,98,98,2,0,79,79,111,111,2,0, + 88,88,120,120,2,0,74,74,106,106,4,0,10,10,12,13,39,39,92,92,4,0, + 10,10,12,13,34,34,92,92,1,0,92,92,1,0,49,57,1,0,48,57,1,0,48,55, + 3,0,48,57,65,70,97,102,1,0,48,49,2,0,69,69,101,101,2,0,43,43,45, + 45,5,0,0,9,11,12,14,38,40,91,93,127,5,0,0,9,11,12,14,33,35,91,93, + 127,2,0,0,91,93,127,1,0,0,127,2,0,9,9,32,32,2,0,10,10,12,13,4,0, + 6277,6278,8472,8472,8494,8494,12443,12444,4,0,183,183,903,903,4969, + 4977,6618,6618,663,0,65,90,95,95,97,122,170,170,181,181,186,186, + 192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884, + 886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013, + 1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519, + 1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775, + 1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994, + 2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088, + 2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365, + 2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472, + 2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527, + 2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608, + 2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693, + 2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749, + 2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858, + 2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929, + 2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974, + 2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088, + 3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200, + 3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261, + 3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389, + 3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505, + 3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713, + 3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763, + 3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913, + 3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193, + 4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301, + 4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701, + 4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802, + 4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109, + 5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888, + 5905,5919,5937,5952,5969,5984,5996,5998,6000,6016,6067,6103,6103, + 6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400, + 6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740, + 6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168, + 7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404, + 7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968, + 8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061, + 8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150, + 8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348, + 8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486, + 8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526, + 8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559, + 11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686, + 11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728, + 11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341, + 12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549, + 12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124, + 42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623, + 42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961, + 42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020, + 43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262, + 43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488, + 43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595, + 43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705, + 43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764, + 43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824, + 43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291, + 63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287, + 64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324, + 64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136, + 65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479, + 65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576, + 65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908, + 66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432, + 66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771, + 66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956, + 66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004, + 67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506, + 67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644, + 67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840, + 67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115, + 68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297, + 68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680, + 68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376, + 69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622, + 69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891, + 69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066, + 70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207, + 70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312, + 70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450, + 70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708, + 70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040, + 71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352, + 71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945, + 71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001, + 72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203, + 72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440, + 72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968, + 72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097, + 73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648, + 73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895, + 78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880, + 92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823, + 93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208, + 100343,100352,101589,101632,101640,110576,110579,110581,110587,110589, + 110590,110592,110882,110898,110898,110928,110930,110933,110933,110948, + 110951,110960,111355,113664,113770,113776,113788,113792,113800,113808, + 113817,119808,119892,119894,119964,119966,119967,119970,119970,119973, + 119974,119977,119980,119982,119993,119995,119995,119997,120003,120005, + 120069,120071,120074,120077,120084,120086,120092,120094,120121,120123, + 120126,120128,120132,120134,120134,120138,120144,120146,120485,120488, + 120512,120514,120538,120540,120570,120572,120596,120598,120628,120630, + 120654,120656,120686,120688,120712,120714,120744,120746,120770,120772, + 120779,122624,122654,122661,122666,122928,122989,123136,123180,123191, + 123197,123214,123214,123536,123565,123584,123627,124112,124139,124896, + 124902,124904,124907,124909,124910,124912,124926,124928,125124,125184, + 125251,125259,125259,126464,126467,126469,126495,126497,126498,126500, + 126500,126503,126503,126505,126514,126516,126519,126521,126521,126523, + 126523,126530,126530,126535,126535,126537,126537,126539,126539,126541, + 126543,126545,126546,126548,126548,126551,126551,126553,126553,126555, + 126555,126557,126557,126559,126559,126561,126562,126564,126564,126567, + 126570,126572,126578,126580,126583,126585,126588,126590,126590,126592, + 126601,126603,126619,126625,126627,126629,126633,126635,126651,131072, + 173791,173824,177977,177984,178205,178208,183969,183984,191456,194560, + 195101,196608,201546,201552,205743,372,0,48,57,95,95,768,879,1155, + 1159,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1552,1562, + 1611,1641,1648,1648,1750,1756,1759,1764,1767,1768,1770,1773,1776, + 1785,1809,1809,1840,1866,1958,1968,1984,1993,2027,2035,2045,2045, + 2070,2073,2075,2083,2085,2087,2089,2093,2137,2139,2200,2207,2250, + 2273,2275,2307,2362,2364,2366,2383,2385,2391,2402,2403,2406,2415, + 2433,2435,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2530, + 2531,2534,2543,2558,2558,2561,2563,2620,2620,2622,2626,2631,2632, + 2635,2637,2641,2641,2662,2673,2677,2677,2689,2691,2748,2748,2750, + 2757,2759,2761,2763,2765,2786,2787,2790,2799,2810,2815,2817,2819, + 2876,2876,2878,2884,2887,2888,2891,2893,2901,2903,2914,2915,2918, + 2927,2946,2946,3006,3010,3014,3016,3018,3021,3031,3031,3046,3055, + 3072,3076,3132,3132,3134,3140,3142,3144,3146,3149,3157,3158,3170, + 3171,3174,3183,3201,3203,3260,3260,3262,3268,3270,3272,3274,3277, + 3285,3286,3298,3299,3302,3311,3315,3315,3328,3331,3387,3388,3390, + 3396,3398,3400,3402,3405,3415,3415,3426,3427,3430,3439,3457,3459, + 3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3633, + 3633,3636,3642,3655,3662,3664,3673,3761,3761,3764,3772,3784,3790, + 3792,3801,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902, + 3903,3953,3972,3974,3975,3981,3991,3993,4028,4038,4038,4139,4158, + 4160,4169,4182,4185,4190,4192,4194,4196,4199,4205,4209,4212,4226, + 4237,4239,4253,4957,4959,5906,5909,5938,5940,5970,5971,6002,6003, + 6068,6099,6109,6109,6112,6121,6155,6157,6159,6169,6277,6278,6313, + 6313,6432,6443,6448,6459,6470,6479,6608,6617,6679,6683,6741,6750, + 6752,6780,6783,6793,6800,6809,6832,6845,6847,6862,6912,6916,6964, + 6980,6992,7001,7019,7027,7040,7042,7073,7085,7088,7097,7142,7155, + 7204,7223,7232,7241,7248,7257,7376,7378,7380,7400,7405,7405,7412, + 7412,7415,7417,7616,7679,8255,8256,8276,8276,8400,8412,8417,8417, + 8421,8432,11503,11505,11647,11647,11744,11775,12330,12335,12441, + 12442,42528,42537,42607,42607,42612,42621,42654,42655,42736,42737, + 43010,43010,43014,43014,43019,43019,43043,43047,43052,43052,43136, + 43137,43188,43205,43216,43225,43232,43249,43263,43273,43302,43309, + 43335,43347,43392,43395,43443,43456,43472,43481,43493,43493,43504, + 43513,43561,43574,43587,43587,43596,43597,43600,43609,43643,43645, + 43696,43696,43698,43700,43703,43704,43710,43711,43713,43713,43755, + 43759,43765,43766,44003,44010,44012,44013,44016,44025,64286,64286, + 65024,65039,65056,65071,65075,65076,65101,65103,65296,65305,65343, + 65343,66045,66045,66272,66272,66422,66426,66720,66729,68097,68099, + 68101,68102,68108,68111,68152,68154,68159,68159,68325,68326,68900, + 68903,68912,68921,69291,69292,69373,69375,69446,69456,69506,69509, + 69632,69634,69688,69702,69734,69744,69747,69748,69759,69762,69808, + 69818,69826,69826,69872,69881,69888,69890,69927,69940,69942,69951, + 69957,69958,70003,70003,70016,70018,70067,70080,70089,70092,70094, + 70105,70188,70199,70206,70206,70209,70209,70367,70378,70384,70393, + 70400,70403,70459,70460,70462,70468,70471,70472,70475,70477,70487, + 70487,70498,70499,70502,70508,70512,70516,70709,70726,70736,70745, + 70750,70750,70832,70851,70864,70873,71087,71093,71096,71104,71132, + 71133,71216,71232,71248,71257,71339,71351,71360,71369,71453,71467, + 71472,71481,71724,71738,71904,71913,71984,71989,71991,71992,71995, + 71998,72000,72000,72002,72003,72016,72025,72145,72151,72154,72160, + 72164,72164,72193,72202,72243,72249,72251,72254,72263,72263,72273, + 72283,72330,72345,72751,72758,72760,72767,72784,72793,72850,72871, + 72873,72886,73009,73014,73018,73018,73020,73021,73023,73029,73031, + 73031,73040,73049,73098,73102,73104,73105,73107,73111,73120,73129, + 73459,73462,73472,73473,73475,73475,73524,73530,73534,73538,73552, + 73561,78912,78912,78919,78933,92768,92777,92864,92873,92912,92916, + 92976,92982,93008,93017,94031,94031,94033,94087,94095,94098,94180, + 94180,94192,94193,113821,113822,118528,118573,118576,118598,119141, + 119145,119149,119154,119163,119170,119173,119179,119210,119213,119362, + 119364,120782,120831,121344,121398,121403,121452,121461,121461,121476, + 121476,121499,121503,121505,121519,122880,122886,122888,122904,122907, + 122913,122915,122916,122918,122922,123023,123023,123184,123190,123200, + 123209,123566,123566,123628,123641,124140,124153,125136,125142,125252, + 125258,125264,125273,130032,130041,917760,917999,942,0,1,1,0,0,0, + 0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13, + 1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23, + 1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33, + 1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43, + 1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53, + 1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63, + 1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73, + 1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83, + 1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93, + 1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103, + 1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0, + 0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1, + 0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0, + 131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0, + 0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149, + 1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0, + 0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1, + 0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0, + 177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0, + 0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195, + 1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,1,261,1,0,0,0,3,266,1,0,0,0, + 5,272,1,0,0,0,7,274,1,0,0,0,9,278,1,0,0,0,11,281,1,0,0,0,13,288, + 1,0,0,0,15,294,1,0,0,0,17,300,1,0,0,0,19,306,1,0,0,0,21,311,1,0, + 0,0,23,317,1,0,0,0,25,326,1,0,0,0,27,330,1,0,0,0,29,334,1,0,0,0, + 31,339,1,0,0,0,33,344,1,0,0,0,35,351,1,0,0,0,37,357,1,0,0,0,39,365, + 1,0,0,0,41,369,1,0,0,0,43,374,1,0,0,0,45,381,1,0,0,0,47,384,1,0, + 0,0,49,391,1,0,0,0,51,394,1,0,0,0,53,397,1,0,0,0,55,404,1,0,0,0, + 57,410,1,0,0,0,59,415,1,0,0,0,61,424,1,0,0,0,63,428,1,0,0,0,65,431, + 1,0,0,0,67,436,1,0,0,0,69,442,1,0,0,0,71,449,1,0,0,0,73,454,1,0, + 0,0,75,458,1,0,0,0,77,460,1,0,0,0,79,466,1,0,0,0,81,471,1,0,0,0, + 83,489,1,0,0,0,85,493,1,0,0,0,87,505,1,0,0,0,89,516,1,0,0,0,91,534, + 1,0,0,0,93,536,1,0,0,0,95,543,1,0,0,0,97,550,1,0,0,0,99,559,1,0, + 0,0,101,563,1,0,0,0,103,567,1,0,0,0,105,569,1,0,0,0,107,573,1,0, + 0,0,109,575,1,0,0,0,111,578,1,0,0,0,113,581,1,0,0,0,115,583,1,0, + 0,0,117,585,1,0,0,0,119,587,1,0,0,0,121,590,1,0,0,0,123,592,1,0, + 0,0,125,595,1,0,0,0,127,598,1,0,0,0,129,600,1,0,0,0,131,602,1,0, + 0,0,133,604,1,0,0,0,135,607,1,0,0,0,137,610,1,0,0,0,139,612,1,0, + 0,0,141,614,1,0,0,0,143,616,1,0,0,0,145,618,1,0,0,0,147,621,1,0, + 0,0,149,623,1,0,0,0,151,626,1,0,0,0,153,629,1,0,0,0,155,631,1,0, + 0,0,157,633,1,0,0,0,159,636,1,0,0,0,161,639,1,0,0,0,163,642,1,0, + 0,0,165,645,1,0,0,0,167,648,1,0,0,0,169,650,1,0,0,0,171,653,1,0, + 0,0,173,656,1,0,0,0,175,659,1,0,0,0,177,662,1,0,0,0,179,665,1,0, + 0,0,181,668,1,0,0,0,183,671,1,0,0,0,185,674,1,0,0,0,187,677,1,0, + 0,0,189,680,1,0,0,0,191,684,1,0,0,0,193,688,1,0,0,0,195,692,1,0, + 0,0,197,699,1,0,0,0,199,703,1,0,0,0,201,723,1,0,0,0,203,751,1,0, + 0,0,205,755,1,0,0,0,207,757,1,0,0,0,209,763,1,0,0,0,211,765,1,0, + 0,0,213,767,1,0,0,0,215,769,1,0,0,0,217,771,1,0,0,0,219,773,1,0, + 0,0,221,782,1,0,0,0,223,786,1,0,0,0,225,791,1,0,0,0,227,795,1,0, + 0,0,229,801,1,0,0,0,231,828,1,0,0,0,233,856,1,0,0,0,235,860,1,0, + 0,0,237,863,1,0,0,0,239,866,1,0,0,0,241,869,1,0,0,0,243,871,1,0, + 0,0,245,875,1,0,0,0,247,879,1,0,0,0,249,886,1,0,0,0,251,897,1,0, + 0,0,253,899,1,0,0,0,255,903,1,0,0,0,257,908,1,0,0,0,259,262,3,87, + 43,0,260,262,3,89,44,0,261,259,1,0,0,0,261,260,1,0,0,0,262,2,1,0, + 0,0,263,267,3,5,2,0,264,267,3,99,49,0,265,267,3,101,50,0,266,263, + 1,0,0,0,266,264,1,0,0,0,266,265,1,0,0,0,267,4,1,0,0,0,268,273,3, + 91,45,0,269,273,3,93,46,0,270,273,3,95,47,0,271,273,3,97,48,0,272, + 268,1,0,0,0,272,269,1,0,0,0,272,270,1,0,0,0,272,271,1,0,0,0,273, + 6,1,0,0,0,274,275,5,97,0,0,275,276,5,110,0,0,276,277,5,100,0,0,277, + 8,1,0,0,0,278,279,5,97,0,0,279,280,5,115,0,0,280,10,1,0,0,0,281, + 282,5,97,0,0,282,283,5,115,0,0,283,284,5,115,0,0,284,285,5,101,0, + 0,285,286,5,114,0,0,286,287,5,116,0,0,287,12,1,0,0,0,288,289,5,97, + 0,0,289,290,5,115,0,0,290,291,5,121,0,0,291,292,5,110,0,0,292,293, + 5,99,0,0,293,14,1,0,0,0,294,295,5,97,0,0,295,296,5,119,0,0,296,297, + 5,97,0,0,297,298,5,105,0,0,298,299,5,116,0,0,299,16,1,0,0,0,300, + 301,5,98,0,0,301,302,5,114,0,0,302,303,5,101,0,0,303,304,5,97,0, + 0,304,305,5,107,0,0,305,18,1,0,0,0,306,307,5,99,0,0,307,308,5,97, + 0,0,308,309,5,115,0,0,309,310,5,101,0,0,310,20,1,0,0,0,311,312,5, + 99,0,0,312,313,5,108,0,0,313,314,5,97,0,0,314,315,5,115,0,0,315, + 316,5,115,0,0,316,22,1,0,0,0,317,318,5,99,0,0,318,319,5,111,0,0, + 319,320,5,110,0,0,320,321,5,116,0,0,321,322,5,105,0,0,322,323,5, + 110,0,0,323,324,5,117,0,0,324,325,5,101,0,0,325,24,1,0,0,0,326,327, + 5,100,0,0,327,328,5,101,0,0,328,329,5,102,0,0,329,26,1,0,0,0,330, + 331,5,100,0,0,331,332,5,101,0,0,332,333,5,108,0,0,333,28,1,0,0,0, + 334,335,5,101,0,0,335,336,5,108,0,0,336,337,5,105,0,0,337,338,5, + 102,0,0,338,30,1,0,0,0,339,340,5,101,0,0,340,341,5,108,0,0,341,342, + 5,115,0,0,342,343,5,101,0,0,343,32,1,0,0,0,344,345,5,101,0,0,345, + 346,5,120,0,0,346,347,5,99,0,0,347,348,5,101,0,0,348,349,5,112,0, + 0,349,350,5,116,0,0,350,34,1,0,0,0,351,352,5,70,0,0,352,353,5,97, + 0,0,353,354,5,108,0,0,354,355,5,115,0,0,355,356,5,101,0,0,356,36, + 1,0,0,0,357,358,5,102,0,0,358,359,5,105,0,0,359,360,5,110,0,0,360, + 361,5,97,0,0,361,362,5,108,0,0,362,363,5,108,0,0,363,364,5,121,0, + 0,364,38,1,0,0,0,365,366,5,102,0,0,366,367,5,111,0,0,367,368,5,114, + 0,0,368,40,1,0,0,0,369,370,5,102,0,0,370,371,5,114,0,0,371,372,5, + 111,0,0,372,373,5,109,0,0,373,42,1,0,0,0,374,375,5,103,0,0,375,376, + 5,108,0,0,376,377,5,111,0,0,377,378,5,98,0,0,378,379,5,97,0,0,379, + 380,5,108,0,0,380,44,1,0,0,0,381,382,5,105,0,0,382,383,5,102,0,0, + 383,46,1,0,0,0,384,385,5,105,0,0,385,386,5,109,0,0,386,387,5,112, + 0,0,387,388,5,111,0,0,388,389,5,114,0,0,389,390,5,116,0,0,390,48, + 1,0,0,0,391,392,5,105,0,0,392,393,5,110,0,0,393,50,1,0,0,0,394,395, + 5,105,0,0,395,396,5,115,0,0,396,52,1,0,0,0,397,398,5,108,0,0,398, + 399,5,97,0,0,399,400,5,109,0,0,400,401,5,98,0,0,401,402,5,100,0, + 0,402,403,5,97,0,0,403,54,1,0,0,0,404,405,5,109,0,0,405,406,5,97, + 0,0,406,407,5,116,0,0,407,408,5,99,0,0,408,409,5,104,0,0,409,56, + 1,0,0,0,410,411,5,78,0,0,411,412,5,111,0,0,412,413,5,110,0,0,413, + 414,5,101,0,0,414,58,1,0,0,0,415,416,5,110,0,0,416,417,5,111,0,0, + 417,418,5,110,0,0,418,419,5,108,0,0,419,420,5,111,0,0,420,421,5, + 99,0,0,421,422,5,97,0,0,422,423,5,108,0,0,423,60,1,0,0,0,424,425, + 5,110,0,0,425,426,5,111,0,0,426,427,5,116,0,0,427,62,1,0,0,0,428, + 429,5,111,0,0,429,430,5,114,0,0,430,64,1,0,0,0,431,432,5,112,0,0, + 432,433,5,97,0,0,433,434,5,115,0,0,434,435,5,115,0,0,435,66,1,0, + 0,0,436,437,5,114,0,0,437,438,5,97,0,0,438,439,5,105,0,0,439,440, + 5,115,0,0,440,441,5,101,0,0,441,68,1,0,0,0,442,443,5,114,0,0,443, + 444,5,101,0,0,444,445,5,116,0,0,445,446,5,117,0,0,446,447,5,114, + 0,0,447,448,5,110,0,0,448,70,1,0,0,0,449,450,5,84,0,0,450,451,5, + 114,0,0,451,452,5,117,0,0,452,453,5,101,0,0,453,72,1,0,0,0,454,455, + 5,116,0,0,455,456,5,114,0,0,456,457,5,121,0,0,457,74,1,0,0,0,458, + 459,5,95,0,0,459,76,1,0,0,0,460,461,5,119,0,0,461,462,5,104,0,0, + 462,463,5,105,0,0,463,464,5,108,0,0,464,465,5,101,0,0,465,78,1,0, + 0,0,466,467,5,119,0,0,467,468,5,105,0,0,468,469,5,116,0,0,469,470, + 5,104,0,0,470,80,1,0,0,0,471,472,5,121,0,0,472,473,5,105,0,0,473, + 474,5,101,0,0,474,475,5,108,0,0,475,476,5,100,0,0,476,82,1,0,0,0, + 477,478,4,41,0,0,478,490,3,245,122,0,479,481,5,13,0,0,480,479,1, + 0,0,0,480,481,1,0,0,0,481,482,1,0,0,0,482,485,5,10,0,0,483,485,2, + 12,13,0,484,480,1,0,0,0,484,483,1,0,0,0,485,487,1,0,0,0,486,488, + 3,245,122,0,487,486,1,0,0,0,487,488,1,0,0,0,488,490,1,0,0,0,489, + 477,1,0,0,0,489,484,1,0,0,0,490,491,1,0,0,0,491,492,6,41,0,0,492, + 84,1,0,0,0,493,497,3,255,127,0,494,496,3,257,128,0,495,494,1,0,0, + 0,496,499,1,0,0,0,497,495,1,0,0,0,497,498,1,0,0,0,498,86,1,0,0,0, + 499,497,1,0,0,0,500,506,7,0,0,0,501,502,7,1,0,0,502,506,7,2,0,0, + 503,504,7,2,0,0,504,506,7,1,0,0,505,500,1,0,0,0,505,501,1,0,0,0, + 505,503,1,0,0,0,505,506,1,0,0,0,506,509,1,0,0,0,507,510,3,201,100, + 0,508,510,3,203,101,0,509,507,1,0,0,0,509,508,1,0,0,0,510,88,1,0, + 0,0,511,517,7,3,0,0,512,513,7,3,0,0,513,517,7,2,0,0,514,515,7,2, + 0,0,515,517,7,3,0,0,516,511,1,0,0,0,516,512,1,0,0,0,516,514,1,0, + 0,0,517,520,1,0,0,0,518,521,3,231,115,0,519,521,3,233,116,0,520, + 518,1,0,0,0,520,519,1,0,0,0,521,90,1,0,0,0,522,526,3,211,105,0,523, + 525,3,213,106,0,524,523,1,0,0,0,525,528,1,0,0,0,526,524,1,0,0,0, + 526,527,1,0,0,0,527,535,1,0,0,0,528,526,1,0,0,0,529,531,5,48,0,0, + 530,529,1,0,0,0,531,532,1,0,0,0,532,530,1,0,0,0,532,533,1,0,0,0, + 533,535,1,0,0,0,534,522,1,0,0,0,534,530,1,0,0,0,535,92,1,0,0,0,536, + 537,5,48,0,0,537,539,7,4,0,0,538,540,3,215,107,0,539,538,1,0,0,0, + 540,541,1,0,0,0,541,539,1,0,0,0,541,542,1,0,0,0,542,94,1,0,0,0,543, + 544,5,48,0,0,544,546,7,5,0,0,545,547,3,217,108,0,546,545,1,0,0,0, + 547,548,1,0,0,0,548,546,1,0,0,0,548,549,1,0,0,0,549,96,1,0,0,0,550, + 551,5,48,0,0,551,553,7,3,0,0,552,554,3,219,109,0,553,552,1,0,0,0, + 554,555,1,0,0,0,555,553,1,0,0,0,555,556,1,0,0,0,556,98,1,0,0,0,557, + 560,3,221,110,0,558,560,3,223,111,0,559,557,1,0,0,0,559,558,1,0, + 0,0,560,100,1,0,0,0,561,564,3,99,49,0,562,564,3,225,112,0,563,561, + 1,0,0,0,563,562,1,0,0,0,564,565,1,0,0,0,565,566,7,6,0,0,566,102, + 1,0,0,0,567,568,5,46,0,0,568,104,1,0,0,0,569,570,5,46,0,0,570,571, + 5,46,0,0,571,572,5,46,0,0,572,106,1,0,0,0,573,574,5,42,0,0,574,108, + 1,0,0,0,575,576,5,40,0,0,576,577,6,54,1,0,577,110,1,0,0,0,578,579, + 5,41,0,0,579,580,6,55,2,0,580,112,1,0,0,0,581,582,5,44,0,0,582,114, + 1,0,0,0,583,584,5,58,0,0,584,116,1,0,0,0,585,586,5,59,0,0,586,118, + 1,0,0,0,587,588,5,42,0,0,588,589,5,42,0,0,589,120,1,0,0,0,590,591, + 5,61,0,0,591,122,1,0,0,0,592,593,5,91,0,0,593,594,6,61,3,0,594,124, + 1,0,0,0,595,596,5,93,0,0,596,597,6,62,4,0,597,126,1,0,0,0,598,599, + 5,124,0,0,599,128,1,0,0,0,600,601,5,94,0,0,601,130,1,0,0,0,602,603, + 5,38,0,0,603,132,1,0,0,0,604,605,5,60,0,0,605,606,5,60,0,0,606,134, + 1,0,0,0,607,608,5,62,0,0,608,609,5,62,0,0,609,136,1,0,0,0,610,611, + 5,43,0,0,611,138,1,0,0,0,612,613,5,45,0,0,613,140,1,0,0,0,614,615, + 5,47,0,0,615,142,1,0,0,0,616,617,5,37,0,0,617,144,1,0,0,0,618,619, + 5,47,0,0,619,620,5,47,0,0,620,146,1,0,0,0,621,622,5,126,0,0,622, + 148,1,0,0,0,623,624,5,123,0,0,624,625,6,74,5,0,625,150,1,0,0,0,626, + 627,5,125,0,0,627,628,6,75,6,0,628,152,1,0,0,0,629,630,5,60,0,0, + 630,154,1,0,0,0,631,632,5,62,0,0,632,156,1,0,0,0,633,634,5,61,0, + 0,634,635,5,61,0,0,635,158,1,0,0,0,636,637,5,62,0,0,637,638,5,61, + 0,0,638,160,1,0,0,0,639,640,5,60,0,0,640,641,5,61,0,0,641,162,1, + 0,0,0,642,643,5,60,0,0,643,644,5,62,0,0,644,164,1,0,0,0,645,646, + 5,33,0,0,646,647,5,61,0,0,647,166,1,0,0,0,648,649,5,64,0,0,649,168, + 1,0,0,0,650,651,5,45,0,0,651,652,5,62,0,0,652,170,1,0,0,0,653,654, + 5,43,0,0,654,655,5,61,0,0,655,172,1,0,0,0,656,657,5,45,0,0,657,658, + 5,61,0,0,658,174,1,0,0,0,659,660,5,42,0,0,660,661,5,61,0,0,661,176, + 1,0,0,0,662,663,5,64,0,0,663,664,5,61,0,0,664,178,1,0,0,0,665,666, + 5,47,0,0,666,667,5,61,0,0,667,180,1,0,0,0,668,669,5,37,0,0,669,670, + 5,61,0,0,670,182,1,0,0,0,671,672,5,38,0,0,672,673,5,61,0,0,673,184, + 1,0,0,0,674,675,5,124,0,0,675,676,5,61,0,0,676,186,1,0,0,0,677,678, + 5,94,0,0,678,679,5,61,0,0,679,188,1,0,0,0,680,681,5,60,0,0,681,682, + 5,60,0,0,682,683,5,61,0,0,683,190,1,0,0,0,684,685,5,62,0,0,685,686, + 5,62,0,0,686,687,5,61,0,0,687,192,1,0,0,0,688,689,5,42,0,0,689,690, + 5,42,0,0,690,691,5,61,0,0,691,194,1,0,0,0,692,693,5,47,0,0,693,694, + 5,47,0,0,694,695,5,61,0,0,695,196,1,0,0,0,696,700,3,245,122,0,697, + 700,3,247,123,0,698,700,3,249,124,0,699,696,1,0,0,0,699,697,1,0, + 0,0,699,698,1,0,0,0,700,701,1,0,0,0,701,702,6,98,7,0,702,198,1,0, + 0,0,703,704,9,0,0,0,704,200,1,0,0,0,705,710,5,39,0,0,706,709,3,209, + 104,0,707,709,8,7,0,0,708,706,1,0,0,0,708,707,1,0,0,0,709,712,1, + 0,0,0,710,708,1,0,0,0,710,711,1,0,0,0,711,713,1,0,0,0,712,710,1, + 0,0,0,713,724,5,39,0,0,714,719,5,34,0,0,715,718,3,209,104,0,716, + 718,8,8,0,0,717,715,1,0,0,0,717,716,1,0,0,0,718,721,1,0,0,0,719, + 717,1,0,0,0,719,720,1,0,0,0,720,722,1,0,0,0,721,719,1,0,0,0,722, + 724,5,34,0,0,723,705,1,0,0,0,723,714,1,0,0,0,724,202,1,0,0,0,725, + 726,5,39,0,0,726,727,5,39,0,0,727,728,5,39,0,0,728,732,1,0,0,0,729, + 731,3,205,102,0,730,729,1,0,0,0,731,734,1,0,0,0,732,733,1,0,0,0, + 732,730,1,0,0,0,733,735,1,0,0,0,734,732,1,0,0,0,735,736,5,39,0,0, + 736,737,5,39,0,0,737,752,5,39,0,0,738,739,5,34,0,0,739,740,5,34, + 0,0,740,741,5,34,0,0,741,745,1,0,0,0,742,744,3,205,102,0,743,742, + 1,0,0,0,744,747,1,0,0,0,745,746,1,0,0,0,745,743,1,0,0,0,746,748, + 1,0,0,0,747,745,1,0,0,0,748,749,5,34,0,0,749,750,5,34,0,0,750,752, + 5,34,0,0,751,725,1,0,0,0,751,738,1,0,0,0,752,204,1,0,0,0,753,756, + 3,207,103,0,754,756,3,209,104,0,755,753,1,0,0,0,755,754,1,0,0,0, + 756,206,1,0,0,0,757,758,8,9,0,0,758,208,1,0,0,0,759,760,5,92,0,0, + 760,764,9,0,0,0,761,762,5,92,0,0,762,764,3,83,41,0,763,759,1,0,0, + 0,763,761,1,0,0,0,764,210,1,0,0,0,765,766,7,10,0,0,766,212,1,0,0, + 0,767,768,7,11,0,0,768,214,1,0,0,0,769,770,7,12,0,0,770,216,1,0, + 0,0,771,772,7,13,0,0,772,218,1,0,0,0,773,774,7,14,0,0,774,220,1, + 0,0,0,775,777,3,225,112,0,776,775,1,0,0,0,776,777,1,0,0,0,777,778, + 1,0,0,0,778,783,3,227,113,0,779,780,3,225,112,0,780,781,5,46,0,0, + 781,783,1,0,0,0,782,776,1,0,0,0,782,779,1,0,0,0,783,222,1,0,0,0, + 784,787,3,225,112,0,785,787,3,221,110,0,786,784,1,0,0,0,786,785, + 1,0,0,0,787,788,1,0,0,0,788,789,3,229,114,0,789,224,1,0,0,0,790, + 792,3,213,106,0,791,790,1,0,0,0,792,793,1,0,0,0,793,791,1,0,0,0, + 793,794,1,0,0,0,794,226,1,0,0,0,795,797,5,46,0,0,796,798,3,213,106, + 0,797,796,1,0,0,0,798,799,1,0,0,0,799,797,1,0,0,0,799,800,1,0,0, + 0,800,228,1,0,0,0,801,803,7,15,0,0,802,804,7,16,0,0,803,802,1,0, + 0,0,803,804,1,0,0,0,804,806,1,0,0,0,805,807,3,213,106,0,806,805, + 1,0,0,0,807,808,1,0,0,0,808,806,1,0,0,0,808,809,1,0,0,0,809,230, + 1,0,0,0,810,815,5,39,0,0,811,814,3,237,118,0,812,814,3,243,121,0, + 813,811,1,0,0,0,813,812,1,0,0,0,814,817,1,0,0,0,815,813,1,0,0,0, + 815,816,1,0,0,0,816,818,1,0,0,0,817,815,1,0,0,0,818,829,5,39,0,0, + 819,824,5,34,0,0,820,823,3,239,119,0,821,823,3,243,121,0,822,820, + 1,0,0,0,822,821,1,0,0,0,823,826,1,0,0,0,824,822,1,0,0,0,824,825, + 1,0,0,0,825,827,1,0,0,0,826,824,1,0,0,0,827,829,5,34,0,0,828,810, + 1,0,0,0,828,819,1,0,0,0,829,232,1,0,0,0,830,831,5,39,0,0,831,832, + 5,39,0,0,832,833,5,39,0,0,833,837,1,0,0,0,834,836,3,235,117,0,835, + 834,1,0,0,0,836,839,1,0,0,0,837,838,1,0,0,0,837,835,1,0,0,0,838, + 840,1,0,0,0,839,837,1,0,0,0,840,841,5,39,0,0,841,842,5,39,0,0,842, + 857,5,39,0,0,843,844,5,34,0,0,844,845,5,34,0,0,845,846,5,34,0,0, + 846,850,1,0,0,0,847,849,3,235,117,0,848,847,1,0,0,0,849,852,1,0, + 0,0,850,851,1,0,0,0,850,848,1,0,0,0,851,853,1,0,0,0,852,850,1,0, + 0,0,853,854,5,34,0,0,854,855,5,34,0,0,855,857,5,34,0,0,856,830,1, + 0,0,0,856,843,1,0,0,0,857,234,1,0,0,0,858,861,3,241,120,0,859,861, + 3,243,121,0,860,858,1,0,0,0,860,859,1,0,0,0,861,236,1,0,0,0,862, + 864,7,17,0,0,863,862,1,0,0,0,864,238,1,0,0,0,865,867,7,18,0,0,866, + 865,1,0,0,0,867,240,1,0,0,0,868,870,7,19,0,0,869,868,1,0,0,0,870, + 242,1,0,0,0,871,872,5,92,0,0,872,873,7,20,0,0,873,244,1,0,0,0,874, + 876,7,21,0,0,875,874,1,0,0,0,876,877,1,0,0,0,877,875,1,0,0,0,877, + 878,1,0,0,0,878,246,1,0,0,0,879,883,5,35,0,0,880,882,8,22,0,0,881, + 880,1,0,0,0,882,885,1,0,0,0,883,881,1,0,0,0,883,884,1,0,0,0,884, + 248,1,0,0,0,885,883,1,0,0,0,886,888,5,92,0,0,887,889,3,245,122,0, + 888,887,1,0,0,0,888,889,1,0,0,0,889,895,1,0,0,0,890,892,5,13,0,0, + 891,890,1,0,0,0,891,892,1,0,0,0,892,893,1,0,0,0,893,896,5,10,0,0, + 894,896,2,12,13,0,895,891,1,0,0,0,895,894,1,0,0,0,896,250,1,0,0, + 0,897,898,7,23,0,0,898,252,1,0,0,0,899,900,7,24,0,0,900,254,1,0, + 0,0,901,904,7,25,0,0,902,904,3,251,125,0,903,901,1,0,0,0,903,902, + 1,0,0,0,904,256,1,0,0,0,905,909,3,255,127,0,906,909,7,26,0,0,907, + 909,3,253,126,0,908,905,1,0,0,0,908,906,1,0,0,0,908,907,1,0,0,0, + 909,258,1,0,0,0,58,0,261,266,272,480,484,487,489,497,505,509,516, + 520,526,532,534,541,548,555,559,563,699,708,710,717,719,723,732, + 745,751,755,763,776,782,786,793,799,803,808,813,815,822,824,828, + 837,850,856,860,863,866,869,877,883,888,891,895,903,908,8,1,41,0, + 1,54,1,1,55,2,1,61,3,1,62,4,1,74,5,1,75,6,6,0,0 + ] + +class Python3Lexer(Python3LexerBase): + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] + + INDENT = 1 + DEDENT = 2 + STRING = 3 + NUMBER = 4 + INTEGER = 5 + AND = 6 + AS = 7 + ASSERT = 8 + ASYNC = 9 + AWAIT = 10 + BREAK = 11 + CASE = 12 + CLASS = 13 + CONTINUE = 14 + DEF = 15 + DEL = 16 + ELIF = 17 + ELSE = 18 + EXCEPT = 19 + FALSE = 20 + FINALLY = 21 + FOR = 22 + FROM = 23 + GLOBAL = 24 + IF = 25 + IMPORT = 26 + IN = 27 + IS = 28 + LAMBDA = 29 + MATCH = 30 + NONE = 31 + NONLOCAL = 32 + NOT = 33 + OR = 34 + PASS = 35 + RAISE = 36 + RETURN = 37 + TRUE = 38 + TRY = 39 + UNDERSCORE = 40 + WHILE = 41 + WITH = 42 + YIELD = 43 + NEWLINE = 44 + NAME = 45 + STRING_LITERAL = 46 + BYTES_LITERAL = 47 + DECIMAL_INTEGER = 48 + OCT_INTEGER = 49 + HEX_INTEGER = 50 + BIN_INTEGER = 51 + FLOAT_NUMBER = 52 + IMAG_NUMBER = 53 + DOT = 54 + ELLIPSIS = 55 + STAR = 56 + OPEN_PAREN = 57 + CLOSE_PAREN = 58 + COMMA = 59 + COLON = 60 + SEMI_COLON = 61 + POWER = 62 + ASSIGN = 63 + OPEN_BRACK = 64 + CLOSE_BRACK = 65 + OR_OP = 66 + XOR = 67 + AND_OP = 68 + LEFT_SHIFT = 69 + RIGHT_SHIFT = 70 + ADD = 71 + MINUS = 72 + DIV = 73 + MOD = 74 + IDIV = 75 + NOT_OP = 76 + OPEN_BRACE = 77 + CLOSE_BRACE = 78 + LESS_THAN = 79 + GREATER_THAN = 80 + EQUALS = 81 + GT_EQ = 82 + LT_EQ = 83 + NOT_EQ_1 = 84 + NOT_EQ_2 = 85 + AT = 86 + ARROW = 87 + ADD_ASSIGN = 88 + SUB_ASSIGN = 89 + MULT_ASSIGN = 90 + AT_ASSIGN = 91 + DIV_ASSIGN = 92 + MOD_ASSIGN = 93 + AND_ASSIGN = 94 + OR_ASSIGN = 95 + XOR_ASSIGN = 96 + LEFT_SHIFT_ASSIGN = 97 + RIGHT_SHIFT_ASSIGN = 98 + POWER_ASSIGN = 99 + IDIV_ASSIGN = 100 + SKIP_ = 101 + UNKNOWN_CHAR = 102 + + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] + + literalNames = [ "", + "'and'", "'as'", "'assert'", "'async'", "'await'", "'break'", + "'case'", "'class'", "'continue'", "'def'", "'del'", "'elif'", + "'else'", "'except'", "'False'", "'finally'", "'for'", "'from'", + "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'", + "'match'", "'None'", "'nonlocal'", "'not'", "'or'", "'pass'", + "'raise'", "'return'", "'True'", "'try'", "'_'", "'while'", + "'with'", "'yield'", "'.'", "'...'", "'*'", "'('", "')'", "','", + "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'", "'&'", + "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", "'//'", "'~'", "'{'", + "'}'", "'<'", "'>'", "'=='", "'>='", "'<='", "'<>'", "'!='", + "'@'", "'->'", "'+='", "'-='", "'*='", "'@='", "'/='", "'%='", + "'&='", "'|='", "'^='", "'<<='", "'>>='", "'**='", "'//='" ] + + symbolicNames = [ "", + "INDENT", "DEDENT", "STRING", "NUMBER", "INTEGER", "AND", "AS", + "ASSERT", "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE", + "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", + "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA", + "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE", "RETURN", + "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH", "YIELD", "NEWLINE", + "NAME", "STRING_LITERAL", "BYTES_LITERAL", "DECIMAL_INTEGER", + "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", + "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN", + "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", "OPEN_BRACK", + "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", + "ADD", "MINUS", "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", + "CLOSE_BRACE", "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", + "LT_EQ", "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", + "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", + "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", + "UNKNOWN_CHAR" ] + + ruleNames = [ "STRING", "NUMBER", "INTEGER", "AND", "AS", "ASSERT", + "ASYNC", "AWAIT", "BREAK", "CASE", "CLASS", "CONTINUE", + "DEF", "DEL", "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", + "FOR", "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA", + "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", "RAISE", + "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", "WITH", + "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", "BYTES_LITERAL", + "DECIMAL_INTEGER", "OCT_INTEGER", "HEX_INTEGER", "BIN_INTEGER", + "FLOAT_NUMBER", "IMAG_NUMBER", "DOT", "ELLIPSIS", "STAR", + "OPEN_PAREN", "CLOSE_PAREN", "COMMA", "COLON", "SEMI_COLON", + "POWER", "ASSIGN", "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", + "XOR", "AND_OP", "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", + "DIV", "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", + "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", + "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", "SUB_ASSIGN", + "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", "MOD_ASSIGN", + "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", "LEFT_SHIFT_ASSIGN", + "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", "IDIV_ASSIGN", "SKIP_", + "UNKNOWN_CHAR", "SHORT_STRING", "LONG_STRING", "LONG_STRING_ITEM", + "LONG_STRING_CHAR", "STRING_ESCAPE_SEQ", "NON_ZERO_DIGIT", + "DIGIT", "OCT_DIGIT", "HEX_DIGIT", "BIN_DIGIT", "POINT_FLOAT", + "EXPONENT_FLOAT", "INT_PART", "FRACTION", "EXPONENT", + "SHORT_BYTES", "LONG_BYTES", "LONG_BYTES_ITEM", "SHORT_BYTES_CHAR_NO_SINGLE_QUOTE", + "SHORT_BYTES_CHAR_NO_DOUBLE_QUOTE", "LONG_BYTES_CHAR", + "BYTES_ESCAPE_SEQ", "SPACES", "COMMENT", "LINE_JOINING", + "UNICODE_OIDS", "UNICODE_OIDC", "ID_START", "ID_CONTINUE" ] + + grammarFileName = "Python3Lexer.g4" + + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) + self._actions = None + self._predicates = None + + + def action(self, localctx:RuleContext, ruleIndex:int, actionIndex:int): + if self._actions is None: + actions = dict() + actions[41] = self.NEWLINE_action + actions[54] = self.OPEN_PAREN_action + actions[55] = self.CLOSE_PAREN_action + actions[61] = self.OPEN_BRACK_action + actions[62] = self.CLOSE_BRACK_action + actions[74] = self.OPEN_BRACE_action + actions[75] = self.CLOSE_BRACE_action + self._actions = actions + action = self._actions.get(ruleIndex, None) + if action is not None: + action(localctx, actionIndex) + else: + raise Exception("No registered action for:" + str(ruleIndex)) + + + def NEWLINE_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 0: + self.onNewLine(); + + + def OPEN_PAREN_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 1: + self.openBrace(); + + + def CLOSE_PAREN_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 2: + self.closeBrace(); + + + def OPEN_BRACK_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 3: + self.openBrace(); + + + def CLOSE_BRACK_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 4: + self.closeBrace(); + + + def OPEN_BRACE_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 5: + self.openBrace(); + + + def CLOSE_BRACE_action(self, localctx:RuleContext , actionIndex:int): + if actionIndex == 6: + self.closeBrace(); + + + def sempred(self, localctx:RuleContext, ruleIndex:int, predIndex:int): + if self._predicates is None: + preds = dict() + preds[41] = self.NEWLINE_sempred + self._predicates = preds + pred = self._predicates.get(ruleIndex, None) + if pred is not None: + return pred(localctx, predIndex) + else: + raise Exception("No registered predicate for:" + str(ruleIndex)) + + def NEWLINE_sempred(self, localctx:RuleContext, predIndex:int): + if predIndex == 0: + return self.atStartOfInput() + + + diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py new file mode 100644 index 000000000..d82bfbb78 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3LexerBase.py @@ -0,0 +1,101 @@ +from typing import TextIO +from antlr4 import * +from antlr4.Token import CommonToken +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser + +import sys +from typing import TextIO +import re + + +class Python3LexerBase(Lexer): + NEW_LINE_PATTERN = re.compile('[^\r\n\f]+') + SPACES_PATTERN = re.compile('[\r\n\f]+') + + def __init__(self, input: InputStream, output: TextIO = sys.stdout): + super().__init__(input, output) + self.tokens = [] + self.indents = [] + self.opened = 0 + + def reset(self): + self.tokens = [] + self.indents = [] + self.opened = 0 + super().reset() + + def emitToken(self, token): + self._token = token + self.tokens.append(token) + + def nextToken(self): + # Check if the end-of-file is ahead and there are still some DEDENTS expected. + if self._input.LA(1) == Python3Parser.EOF and len(self.indents) != 0: + # Remove any trailing EOF tokens from our buffer. + self.tokens = [token for token in self.tokens if token.type != Python3Parser.EOF] + + # First emit an extra line break that serves as the end of the statement. + self.emitToken(self.commonToken(Python3Parser.NEWLINE, '\n')) + + # Now emit as much DEDENT tokens as needed. + while len(self.indents) != 0: + self.emitToken(self.createDedent()) + self.indents.pop() + + # Put the EOF back on the token stream. + self.emitToken(self.commonToken(Python3Parser.EOF, '')) + + next_ = super().nextToken() + return next_ if len(self.tokens) == 0 else self.tokens.pop(0) + + def createDedent(self): + return self.commonToken(Python3Parser.DEDENT, '') + + def commonToken(self, type_: int, text: str): + stop = self.getCharIndex() - 1 + start = stop if text == '' else stop - len(text) + 1 + return CommonToken(self._tokenFactorySourcePair, type_, Lexer.DEFAULT_TOKEN_CHANNEL, start, stop) + + def getIndentationCount(self, whitespace: str): + count = 0 + for c in whitespace: + if c == '\t': + count += 8 - count % 8 + else: + count += 1 + return count + + def atStartOfInput(self): + return self.getCharIndex() == 0 + + def openBrace(self): + self.opened += 1 + + def closeBrace(self): + self.opened -= 1 + + def onNewLine(self): + new_line = self.NEW_LINE_PATTERN.sub('', self.text) + spaces = self.SPACES_PATTERN.sub('', self.text) + + # Strip newlines inside open clauses except if we are near EOF. We keep NEWLINEs near EOF to + # satisfy the final newline needed by the single_put rule used by the REPL. + next_ = self._input.LA(1) + next_next = self._input.LA(2) + + if self.opened > 0 or (next_next != -1 and next_ in (10, 13, 35)): + self.skip() + else: + self.emitToken(self.commonToken(Python3Parser.NEWLINE, new_line)) + indent = self.getIndentationCount(spaces) + previous = 0 if len(self.indents) == 0 else self.indents[-1] + + if indent == previous: + self.skip() + elif indent > previous: + self.indents.append(indent) + self.emitToken(self.commonToken(Python3Parser.INDENT, spaces)) + else: + while len(self.indents) > 0 and self.indents[-1] > indent: + self.emitToken(self.createDedent()) + self.indents.pop() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py new file mode 100644 index 000000000..1f41fb8df --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3MethodParserListener.py @@ -0,0 +1,52 @@ +from antlr4 import ParseTreeListener + +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserListener import Python3ParserListener +from dataclasses import dataclass + + +@dataclass +class MethodNode: + def __init__(self, line_start, line_end, source_code, name, ast_string): + self.line_start = line_start + self.line_end = line_end + self.source_code = source_code + self.name = name + self.ast_string = ast_string + + +class MethodParserListener(Python3ParserListener): + def __init__(self, parser): + self.methods = [] + self.parser = parser + + def enterFuncdef(self, ctx: Python3Parser.FuncdefContext): + # Initialize the method name as None + method_name = None + + # Iterate over the children of the context to find the method name + for child in ctx.children: + if isinstance(child, Python3Parser.NameContext): + method_name = child.getText() + break + + # If method name is not found, set it to "Unknown" + if method_name is None: + method_name = "Unknown" + + ast_string = ctx.toStringTree(recog=self.parser) + + # Create a MethodNode for the method + method_node = MethodNode( + line_start=ctx.start.line, + line_end=ctx.stop.line, + source_code=ctx.start.source[1].getText(ctx.start.start, ctx.stop.stop), + name=method_name, + ast_string=ast_string + ) + + self.methods.append(method_node) + + def enterIdentifier(self, ctx): + if self.methods and self.methods[-1].name is None: + self.methods[-1].name = ctx.getText() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py new file mode 100644 index 000000000..d7aaf94de --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3Parser.py @@ -0,0 +1,10288 @@ +# Generated from Python3Parser.g4 by ANTLR 4.13.1 +# encoding: utf-8 +from antlr4 import * +from io import StringIO +import sys + +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing import TextIO + +if "." in __name__: + from .Python3ParserBase import Python3ParserBase +else: + from Python3ParserBase import Python3ParserBase + + +def serializedATN(): + return [ + 4, 1, 102, 1435, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, + 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, + 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, + 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, + 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, + 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, + 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, + 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, + 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, + 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, + 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, + 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, + 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, + 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, + 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, + 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, + 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, + 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, + 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 1, 0, 1, 0, 1, 0, 1, 0, + 1, 0, 3, 0, 244, 8, 0, 1, 1, 1, 1, 5, 1, 248, 8, 1, 10, 1, 12, 1, 251, 9, 1, 1, 1, 1, 1, 1, + 2, 1, 2, 5, 2, 257, 8, 2, 10, 2, 12, 2, 260, 9, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, + 268, 8, 3, 1, 3, 3, 3, 271, 8, 3, 1, 3, 1, 3, 1, 4, 4, 4, 276, 8, 4, 11, 4, 12, 4, 277, 1, + 5, 1, 5, 1, 5, 1, 5, 3, 5, 284, 8, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 294, + 8, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 3, 8, 301, 8, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 308, + 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 314, 8, 9, 5, 9, 316, 8, 9, 10, 9, 12, 9, 319, 9, 9, 1, + 9, 1, 9, 1, 9, 3, 9, 324, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 330, 8, 9, 5, 9, 332, 8, 9, 10, + 9, 12, 9, 335, 9, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 341, 8, 9, 3, 9, 343, 8, 9, 3, 9, 345, 8, + 9, 1, 9, 1, 9, 1, 9, 3, 9, 350, 8, 9, 3, 9, 352, 8, 9, 3, 9, 354, 8, 9, 1, 9, 1, 9, 3, 9, 358, + 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 364, 8, 9, 5, 9, 366, 8, 9, 10, 9, 12, 9, 369, 9, 9, 1, + 9, 1, 9, 1, 9, 1, 9, 3, 9, 375, 8, 9, 3, 9, 377, 8, 9, 3, 9, 379, 8, 9, 1, 9, 1, 9, 1, 9, 3, + 9, 384, 8, 9, 3, 9, 386, 8, 9, 1, 10, 1, 10, 1, 10, 3, 10, 391, 8, 10, 1, 11, 1, 11, 1, 11, + 3, 11, 396, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 402, 8, 11, 5, 11, 404, 8, 11, 10, + 11, 12, 11, 407, 9, 11, 1, 11, 1, 11, 1, 11, 3, 11, 412, 8, 11, 1, 11, 1, 11, 1, 11, 1, + 11, 3, 11, 418, 8, 11, 5, 11, 420, 8, 11, 10, 11, 12, 11, 423, 9, 11, 1, 11, 1, 11, 1, + 11, 1, 11, 3, 11, 429, 8, 11, 3, 11, 431, 8, 11, 3, 11, 433, 8, 11, 1, 11, 1, 11, 1, 11, + 3, 11, 438, 8, 11, 3, 11, 440, 8, 11, 3, 11, 442, 8, 11, 1, 11, 1, 11, 3, 11, 446, 8, 11, + 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 452, 8, 11, 5, 11, 454, 8, 11, 10, 11, 12, 11, 457, + 9, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 463, 8, 11, 3, 11, 465, 8, 11, 3, 11, 467, 8, + 11, 1, 11, 1, 11, 1, 11, 3, 11, 472, 8, 11, 3, 11, 474, 8, 11, 1, 12, 1, 12, 1, 13, 1, 13, + 3, 13, 480, 8, 13, 1, 14, 1, 14, 1, 14, 5, 14, 485, 8, 14, 10, 14, 12, 14, 488, 9, 14, + 1, 14, 3, 14, 491, 8, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, + 1, 15, 3, 15, 503, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 510, 8, 16, 1, 16, 1, + 16, 1, 16, 3, 16, 515, 8, 16, 5, 16, 517, 8, 16, 10, 16, 12, 16, 520, 9, 16, 3, 16, 522, + 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 528, 8, 17, 1, 18, 1, 18, 3, 18, 532, 8, 18, 1, + 18, 1, 18, 1, 18, 3, 18, 537, 8, 18, 5, 18, 539, 8, 18, 10, 18, 12, 18, 542, 9, 18, 1, + 18, 3, 18, 545, 8, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 22, 1, 22, 1, + 22, 1, 22, 1, 22, 3, 22, 559, 8, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 567, + 8, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 575, 8, 27, 3, 27, 577, 8, 27, 1, + 28, 1, 28, 3, 28, 581, 8, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 5, 30, 588, 8, 30, 10, + 30, 12, 30, 591, 9, 30, 1, 30, 1, 30, 4, 30, 595, 8, 30, 11, 30, 12, 30, 596, 3, 30, 599, + 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 3, 30, 608, 8, 30, 1, 31, 1, 31, + 1, 31, 3, 31, 613, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 618, 8, 32, 1, 33, 1, 33, 1, 33, 5, + 33, 623, 8, 33, 10, 33, 12, 33, 626, 9, 33, 1, 33, 3, 33, 629, 8, 33, 1, 34, 1, 34, 1, + 34, 5, 34, 634, 8, 34, 10, 34, 12, 34, 637, 9, 34, 1, 35, 1, 35, 1, 35, 5, 35, 642, 8, + 35, 10, 35, 12, 35, 645, 9, 35, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 651, 8, 36, 10, 36, + 12, 36, 654, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 5, 37, 660, 8, 37, 10, 37, 12, 37, 663, + 9, 37, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 669, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, + 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 681, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, + 687, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 698, 8, + 41, 10, 41, 12, 41, 701, 9, 41, 1, 41, 1, 41, 1, 41, 3, 41, 706, 8, 41, 1, 42, 1, 42, 1, + 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 715, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, + 43, 1, 43, 1, 43, 1, 43, 3, 43, 726, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, + 44, 4, 44, 735, 8, 44, 11, 44, 12, 44, 736, 1, 44, 1, 44, 1, 44, 3, 44, 742, 8, 44, 1, + 44, 1, 44, 1, 44, 3, 44, 747, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 752, 8, 44, 1, 45, 1, 45, + 1, 45, 1, 45, 5, 45, 758, 8, 45, 10, 45, 12, 45, 761, 9, 45, 1, 45, 1, 45, 1, 45, 1, 46, + 1, 46, 1, 46, 3, 46, 769, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 775, 8, 47, 3, 47, 777, + 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 4, 48, 783, 8, 48, 11, 48, 12, 48, 784, 1, 48, 1, 48, + 3, 48, 789, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 4, 49, 797, 8, 49, 11, 49, + 12, 49, 798, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 3, 50, 806, 8, 50, 1, 50, 3, 50, 809, 8, + 50, 1, 51, 1, 51, 4, 51, 813, 8, 51, 11, 51, 12, 51, 814, 1, 51, 3, 51, 818, 8, 51, 1, + 52, 1, 52, 1, 52, 3, 52, 823, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 828, 8, 53, 1, 53, 1, 53, + 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 838, 8, 55, 1, 56, 1, 56, 3, 56, 842, 8, + 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 851, 8, 58, 10, 58, 12, 58, + 854, 9, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 864, 8, 59, 1, + 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 874, 8, 60, 1, 61, 1, 61, 1, + 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 884, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, + 62, 1, 62, 1, 62, 1, 62, 3, 62, 894, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 899, 8, 63, 1, 64, + 1, 64, 1, 64, 3, 64, 904, 8, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 67, 1, 67, 1, 68, 1, 68, + 1, 68, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 4, 71, 923, 8, 71, 11, 71, + 12, 71, 924, 1, 72, 1, 72, 3, 72, 929, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, + 3, 74, 937, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 942, 8, 74, 1, 74, 3, 74, 945, 8, 74, 1, + 75, 1, 75, 1, 75, 3, 75, 950, 8, 75, 1, 76, 1, 76, 1, 76, 5, 76, 955, 8, 76, 10, 76, 12, + 76, 958, 9, 76, 1, 76, 3, 76, 961, 8, 76, 1, 77, 1, 77, 3, 77, 965, 8, 77, 1, 78, 1, 78, + 1, 78, 1, 78, 3, 78, 971, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 978, 8, 79, 1, + 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 987, 8, 79, 1, 79, 1, 79, 1, 79, 1, + 79, 1, 79, 3, 79, 994, 8, 79, 1, 79, 1, 79, 3, 79, 998, 8, 79, 1, 80, 1, 80, 1, 80, 5, 80, + 1003, 8, 80, 10, 80, 12, 80, 1006, 9, 80, 1, 81, 1, 81, 3, 81, 1010, 8, 81, 1, 81, 1, + 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, + 83, 1026, 8, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1034, 8, 83, 1, 83, 1, + 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 1044, 8, 83, 1, 83, 1, 83, 3, 83, 1048, + 8, 83, 1, 84, 1, 84, 1, 84, 5, 84, 1053, 8, 84, 10, 84, 12, 84, 1056, 9, 84, 1, 85, 1, + 85, 1, 85, 5, 85, 1061, 8, 85, 10, 85, 12, 85, 1064, 9, 85, 1, 86, 1, 86, 1, 86, 1, 86, + 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 1076, 8, 87, 1, 87, 3, 87, 1079, 8, 87, + 1, 88, 1, 88, 3, 88, 1083, 8, 88, 1, 89, 1, 89, 3, 89, 1087, 8, 89, 1, 89, 1, 89, 1, 89, + 1, 90, 1, 90, 3, 90, 1094, 8, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 5, 91, 1102, + 8, 91, 10, 91, 12, 91, 1105, 9, 91, 1, 92, 1, 92, 1, 92, 5, 92, 1110, 8, 92, 10, 92, 12, + 92, 1113, 9, 92, 1, 93, 1, 93, 1, 93, 3, 93, 1118, 8, 93, 1, 94, 1, 94, 1, 94, 1, 94, 5, + 94, 1124, 8, 94, 10, 94, 12, 94, 1127, 9, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, + 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 1142, 8, 95, 1, 96, 1, 96, 1, 96, + 1, 97, 1, 97, 1, 97, 4, 97, 1150, 8, 97, 11, 97, 12, 97, 1151, 1, 97, 3, 97, 1155, 8, + 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, + 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 1178, 8, 97, 10, 97, + 12, 97, 1181, 9, 97, 1, 98, 3, 98, 1184, 8, 98, 1, 98, 1, 98, 5, 98, 1188, 8, 98, 10, + 98, 12, 98, 1191, 9, 98, 1, 99, 1, 99, 1, 99, 3, 99, 1196, 8, 99, 1, 99, 1, 99, 1, 99, + 3, 99, 1201, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1206, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, + 4, 99, 1212, 8, 99, 11, 99, 12, 99, 1213, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 1220, 8, + 99, 1, 100, 1, 100, 1, 101, 1, 101, 3, 101, 1226, 8, 101, 1, 101, 1, 101, 1, 101, 1, + 101, 3, 101, 1232, 8, 101, 5, 101, 1234, 8, 101, 10, 101, 12, 101, 1237, 9, 101, 1, + 101, 3, 101, 1240, 8, 101, 3, 101, 1242, 8, 101, 1, 102, 1, 102, 3, 102, 1246, 8, 102, + 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 1255, 8, 102, 1, 103, + 1, 103, 1, 103, 5, 103, 1260, 8, 103, 10, 103, 12, 103, 1263, 9, 103, 1, 103, 3, 103, + 1266, 8, 103, 1, 104, 1, 104, 3, 104, 1270, 8, 104, 1, 104, 1, 104, 3, 104, 1274, 8, + 104, 1, 104, 3, 104, 1277, 8, 104, 3, 104, 1279, 8, 104, 1, 105, 1, 105, 3, 105, 1283, + 8, 105, 1, 106, 1, 106, 3, 106, 1287, 8, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1292, + 8, 106, 5, 106, 1294, 8, 106, 10, 106, 12, 106, 1297, 9, 106, 1, 106, 3, 106, 1300, + 8, 106, 1, 107, 1, 107, 1, 107, 5, 107, 1305, 8, 107, 10, 107, 12, 107, 1308, 9, 107, + 1, 107, 3, 107, 1311, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, + 1319, 8, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, + 1329, 8, 108, 5, 108, 1331, 8, 108, 10, 108, 12, 108, 1334, 9, 108, 1, 108, 3, 108, + 1337, 8, 108, 3, 108, 1339, 8, 108, 1, 108, 1, 108, 3, 108, 1343, 8, 108, 1, 108, 1, + 108, 1, 108, 1, 108, 3, 108, 1349, 8, 108, 5, 108, 1351, 8, 108, 10, 108, 12, 108, + 1354, 9, 108, 1, 108, 3, 108, 1357, 8, 108, 3, 108, 1359, 8, 108, 3, 108, 1361, 8, + 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 1367, 8, 109, 1, 109, 3, 109, 1370, 8, + 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1378, 8, 110, 10, 110, + 12, 110, 1381, 9, 110, 1, 110, 3, 110, 1384, 8, 110, 1, 111, 1, 111, 3, 111, 1388, + 8, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1398, + 8, 111, 1, 112, 1, 112, 3, 112, 1402, 8, 112, 1, 113, 3, 113, 1405, 8, 113, 1, 113, + 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1412, 8, 113, 1, 114, 1, 114, 1, 114, 3, 114, + 1417, 8, 114, 1, 115, 1, 115, 1, 116, 1, 116, 3, 116, 1423, 8, 116, 1, 117, 1, 117, + 1, 117, 3, 117, 1428, 8, 117, 1, 118, 4, 118, 1431, 8, 118, 11, 118, 12, 118, 1432, + 1, 118, 0, 1, 194, 119, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, + 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, + 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, + 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, + 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, + 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 0, 7, 1, 0, 88, 100, + 1, 0, 54, 55, 2, 0, 71, 72, 76, 76, 3, 0, 56, 56, 73, 75, 86, 86, 1, 0, 71, 72, 1, 0, 69, + 70, 3, 0, 30, 30, 40, 40, 45, 45, 1586, 0, 243, 1, 0, 0, 0, 2, 249, 1, 0, 0, 0, 4, 254, + 1, 0, 0, 0, 6, 263, 1, 0, 0, 0, 8, 275, 1, 0, 0, 0, 10, 279, 1, 0, 0, 0, 12, 285, 1, 0, 0, + 0, 14, 288, 1, 0, 0, 0, 16, 298, 1, 0, 0, 0, 18, 385, 1, 0, 0, 0, 20, 387, 1, 0, 0, 0, 22, + 473, 1, 0, 0, 0, 24, 475, 1, 0, 0, 0, 26, 479, 1, 0, 0, 0, 28, 481, 1, 0, 0, 0, 30, 502, + 1, 0, 0, 0, 32, 504, 1, 0, 0, 0, 34, 523, 1, 0, 0, 0, 36, 531, 1, 0, 0, 0, 38, 546, 1, 0, + 0, 0, 40, 548, 1, 0, 0, 0, 42, 551, 1, 0, 0, 0, 44, 558, 1, 0, 0, 0, 46, 560, 1, 0, 0, 0, + 48, 562, 1, 0, 0, 0, 50, 564, 1, 0, 0, 0, 52, 568, 1, 0, 0, 0, 54, 570, 1, 0, 0, 0, 56, 580, + 1, 0, 0, 0, 58, 582, 1, 0, 0, 0, 60, 585, 1, 0, 0, 0, 62, 609, 1, 0, 0, 0, 64, 614, 1, 0, + 0, 0, 66, 619, 1, 0, 0, 0, 68, 630, 1, 0, 0, 0, 70, 638, 1, 0, 0, 0, 72, 646, 1, 0, 0, 0, + 74, 655, 1, 0, 0, 0, 76, 664, 1, 0, 0, 0, 78, 680, 1, 0, 0, 0, 80, 682, 1, 0, 0, 0, 82, 688, + 1, 0, 0, 0, 84, 707, 1, 0, 0, 0, 86, 716, 1, 0, 0, 0, 88, 727, 1, 0, 0, 0, 90, 753, 1, 0, + 0, 0, 92, 765, 1, 0, 0, 0, 94, 770, 1, 0, 0, 0, 96, 788, 1, 0, 0, 0, 98, 790, 1, 0, 0, 0, + 100, 808, 1, 0, 0, 0, 102, 810, 1, 0, 0, 0, 104, 822, 1, 0, 0, 0, 106, 824, 1, 0, 0, 0, + 108, 832, 1, 0, 0, 0, 110, 837, 1, 0, 0, 0, 112, 841, 1, 0, 0, 0, 114, 843, 1, 0, 0, 0, + 116, 847, 1, 0, 0, 0, 118, 863, 1, 0, 0, 0, 120, 873, 1, 0, 0, 0, 122, 883, 1, 0, 0, 0, + 124, 893, 1, 0, 0, 0, 126, 898, 1, 0, 0, 0, 128, 903, 1, 0, 0, 0, 130, 905, 1, 0, 0, 0, + 132, 907, 1, 0, 0, 0, 134, 909, 1, 0, 0, 0, 136, 911, 1, 0, 0, 0, 138, 914, 1, 0, 0, 0, + 140, 916, 1, 0, 0, 0, 142, 919, 1, 0, 0, 0, 144, 928, 1, 0, 0, 0, 146, 930, 1, 0, 0, 0, + 148, 944, 1, 0, 0, 0, 150, 946, 1, 0, 0, 0, 152, 951, 1, 0, 0, 0, 154, 964, 1, 0, 0, 0, + 156, 970, 1, 0, 0, 0, 158, 997, 1, 0, 0, 0, 160, 999, 1, 0, 0, 0, 162, 1009, 1, 0, 0, 0, + 164, 1014, 1, 0, 0, 0, 166, 1047, 1, 0, 0, 0, 168, 1049, 1, 0, 0, 0, 170, 1057, 1, 0, + 0, 0, 172, 1065, 1, 0, 0, 0, 174, 1078, 1, 0, 0, 0, 176, 1082, 1, 0, 0, 0, 178, 1084, + 1, 0, 0, 0, 180, 1091, 1, 0, 0, 0, 182, 1098, 1, 0, 0, 0, 184, 1106, 1, 0, 0, 0, 186, 1117, + 1, 0, 0, 0, 188, 1119, 1, 0, 0, 0, 190, 1141, 1, 0, 0, 0, 192, 1143, 1, 0, 0, 0, 194, 1154, + 1, 0, 0, 0, 196, 1183, 1, 0, 0, 0, 198, 1219, 1, 0, 0, 0, 200, 1221, 1, 0, 0, 0, 202, 1225, + 1, 0, 0, 0, 204, 1254, 1, 0, 0, 0, 206, 1256, 1, 0, 0, 0, 208, 1278, 1, 0, 0, 0, 210, 1280, + 1, 0, 0, 0, 212, 1286, 1, 0, 0, 0, 214, 1301, 1, 0, 0, 0, 216, 1360, 1, 0, 0, 0, 218, 1362, + 1, 0, 0, 0, 220, 1374, 1, 0, 0, 0, 222, 1397, 1, 0, 0, 0, 224, 1401, 1, 0, 0, 0, 226, 1404, + 1, 0, 0, 0, 228, 1413, 1, 0, 0, 0, 230, 1418, 1, 0, 0, 0, 232, 1420, 1, 0, 0, 0, 234, 1427, + 1, 0, 0, 0, 236, 1430, 1, 0, 0, 0, 238, 244, 5, 44, 0, 0, 239, 244, 3, 28, 14, 0, 240, + 241, 3, 78, 39, 0, 241, 242, 5, 44, 0, 0, 242, 244, 1, 0, 0, 0, 243, 238, 1, 0, 0, 0, 243, + 239, 1, 0, 0, 0, 243, 240, 1, 0, 0, 0, 244, 1, 1, 0, 0, 0, 245, 248, 5, 44, 0, 0, 246, 248, + 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 247, 246, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, + 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 252, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 253, + 5, 0, 0, 1, 253, 3, 1, 0, 0, 0, 254, 258, 3, 214, 107, 0, 255, 257, 5, 44, 0, 0, 256, 255, + 1, 0, 0, 0, 257, 260, 1, 0, 0, 0, 258, 256, 1, 0, 0, 0, 258, 259, 1, 0, 0, 0, 259, 261, + 1, 0, 0, 0, 260, 258, 1, 0, 0, 0, 261, 262, 5, 0, 0, 1, 262, 5, 1, 0, 0, 0, 263, 264, 5, + 86, 0, 0, 264, 270, 3, 70, 35, 0, 265, 267, 5, 57, 0, 0, 266, 268, 3, 220, 110, 0, 267, + 266, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 269, 1, 0, 0, 0, 269, 271, 5, 58, 0, 0, 270, + 265, 1, 0, 0, 0, 270, 271, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 273, 5, 44, 0, 0, 273, + 7, 1, 0, 0, 0, 274, 276, 3, 6, 3, 0, 275, 274, 1, 0, 0, 0, 276, 277, 1, 0, 0, 0, 277, 275, + 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 9, 1, 0, 0, 0, 279, 283, 3, 8, 4, 0, 280, 284, 3, + 218, 109, 0, 281, 284, 3, 14, 7, 0, 282, 284, 3, 12, 6, 0, 283, 280, 1, 0, 0, 0, 283, + 281, 1, 0, 0, 0, 283, 282, 1, 0, 0, 0, 284, 11, 1, 0, 0, 0, 285, 286, 5, 9, 0, 0, 286, 287, + 3, 14, 7, 0, 287, 13, 1, 0, 0, 0, 288, 289, 5, 15, 0, 0, 289, 290, 3, 200, 100, 0, 290, + 293, 3, 16, 8, 0, 291, 292, 5, 87, 0, 0, 292, 294, 3, 174, 87, 0, 293, 291, 1, 0, 0, 0, + 293, 294, 1, 0, 0, 0, 294, 295, 1, 0, 0, 0, 295, 296, 5, 60, 0, 0, 296, 297, 3, 96, 48, + 0, 297, 15, 1, 0, 0, 0, 298, 300, 5, 57, 0, 0, 299, 301, 3, 18, 9, 0, 300, 299, 1, 0, 0, + 0, 300, 301, 1, 0, 0, 0, 301, 302, 1, 0, 0, 0, 302, 303, 5, 58, 0, 0, 303, 17, 1, 0, 0, + 0, 304, 307, 3, 20, 10, 0, 305, 306, 5, 63, 0, 0, 306, 308, 3, 174, 87, 0, 307, 305, + 1, 0, 0, 0, 307, 308, 1, 0, 0, 0, 308, 317, 1, 0, 0, 0, 309, 310, 5, 59, 0, 0, 310, 313, + 3, 20, 10, 0, 311, 312, 5, 63, 0, 0, 312, 314, 3, 174, 87, 0, 313, 311, 1, 0, 0, 0, 313, + 314, 1, 0, 0, 0, 314, 316, 1, 0, 0, 0, 315, 309, 1, 0, 0, 0, 316, 319, 1, 0, 0, 0, 317, + 315, 1, 0, 0, 0, 317, 318, 1, 0, 0, 0, 318, 353, 1, 0, 0, 0, 319, 317, 1, 0, 0, 0, 320, + 351, 5, 59, 0, 0, 321, 323, 5, 56, 0, 0, 322, 324, 3, 20, 10, 0, 323, 322, 1, 0, 0, 0, + 323, 324, 1, 0, 0, 0, 324, 333, 1, 0, 0, 0, 325, 326, 5, 59, 0, 0, 326, 329, 3, 20, 10, + 0, 327, 328, 5, 63, 0, 0, 328, 330, 3, 174, 87, 0, 329, 327, 1, 0, 0, 0, 329, 330, 1, + 0, 0, 0, 330, 332, 1, 0, 0, 0, 331, 325, 1, 0, 0, 0, 332, 335, 1, 0, 0, 0, 333, 331, 1, + 0, 0, 0, 333, 334, 1, 0, 0, 0, 334, 344, 1, 0, 0, 0, 335, 333, 1, 0, 0, 0, 336, 342, 5, + 59, 0, 0, 337, 338, 5, 62, 0, 0, 338, 340, 3, 20, 10, 0, 339, 341, 5, 59, 0, 0, 340, 339, + 1, 0, 0, 0, 340, 341, 1, 0, 0, 0, 341, 343, 1, 0, 0, 0, 342, 337, 1, 0, 0, 0, 342, 343, + 1, 0, 0, 0, 343, 345, 1, 0, 0, 0, 344, 336, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 352, + 1, 0, 0, 0, 346, 347, 5, 62, 0, 0, 347, 349, 3, 20, 10, 0, 348, 350, 5, 59, 0, 0, 349, + 348, 1, 0, 0, 0, 349, 350, 1, 0, 0, 0, 350, 352, 1, 0, 0, 0, 351, 321, 1, 0, 0, 0, 351, + 346, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 354, 1, 0, 0, 0, 353, 320, 1, 0, 0, 0, 353, + 354, 1, 0, 0, 0, 354, 386, 1, 0, 0, 0, 355, 357, 5, 56, 0, 0, 356, 358, 3, 20, 10, 0, 357, + 356, 1, 0, 0, 0, 357, 358, 1, 0, 0, 0, 358, 367, 1, 0, 0, 0, 359, 360, 5, 59, 0, 0, 360, + 363, 3, 20, 10, 0, 361, 362, 5, 63, 0, 0, 362, 364, 3, 174, 87, 0, 363, 361, 1, 0, 0, + 0, 363, 364, 1, 0, 0, 0, 364, 366, 1, 0, 0, 0, 365, 359, 1, 0, 0, 0, 366, 369, 1, 0, 0, + 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 378, 1, 0, 0, 0, 369, 367, 1, 0, 0, + 0, 370, 376, 5, 59, 0, 0, 371, 372, 5, 62, 0, 0, 372, 374, 3, 20, 10, 0, 373, 375, 5, + 59, 0, 0, 374, 373, 1, 0, 0, 0, 374, 375, 1, 0, 0, 0, 375, 377, 1, 0, 0, 0, 376, 371, 1, + 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 379, 1, 0, 0, 0, 378, 370, 1, 0, 0, 0, 378, 379, 1, + 0, 0, 0, 379, 386, 1, 0, 0, 0, 380, 381, 5, 62, 0, 0, 381, 383, 3, 20, 10, 0, 382, 384, + 5, 59, 0, 0, 383, 382, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 386, 1, 0, 0, 0, 385, 304, + 1, 0, 0, 0, 385, 355, 1, 0, 0, 0, 385, 380, 1, 0, 0, 0, 386, 19, 1, 0, 0, 0, 387, 390, 3, + 200, 100, 0, 388, 389, 5, 60, 0, 0, 389, 391, 3, 174, 87, 0, 390, 388, 1, 0, 0, 0, 390, + 391, 1, 0, 0, 0, 391, 21, 1, 0, 0, 0, 392, 395, 3, 24, 12, 0, 393, 394, 5, 63, 0, 0, 394, + 396, 3, 174, 87, 0, 395, 393, 1, 0, 0, 0, 395, 396, 1, 0, 0, 0, 396, 405, 1, 0, 0, 0, 397, + 398, 5, 59, 0, 0, 398, 401, 3, 24, 12, 0, 399, 400, 5, 63, 0, 0, 400, 402, 3, 174, 87, + 0, 401, 399, 1, 0, 0, 0, 401, 402, 1, 0, 0, 0, 402, 404, 1, 0, 0, 0, 403, 397, 1, 0, 0, + 0, 404, 407, 1, 0, 0, 0, 405, 403, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 441, 1, 0, 0, + 0, 407, 405, 1, 0, 0, 0, 408, 439, 5, 59, 0, 0, 409, 411, 5, 56, 0, 0, 410, 412, 3, 24, + 12, 0, 411, 410, 1, 0, 0, 0, 411, 412, 1, 0, 0, 0, 412, 421, 1, 0, 0, 0, 413, 414, 5, 59, + 0, 0, 414, 417, 3, 24, 12, 0, 415, 416, 5, 63, 0, 0, 416, 418, 3, 174, 87, 0, 417, 415, + 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 420, 1, 0, 0, 0, 419, 413, 1, 0, 0, 0, 420, 423, + 1, 0, 0, 0, 421, 419, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 432, 1, 0, 0, 0, 423, 421, + 1, 0, 0, 0, 424, 430, 5, 59, 0, 0, 425, 426, 5, 62, 0, 0, 426, 428, 3, 24, 12, 0, 427, + 429, 5, 59, 0, 0, 428, 427, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 431, 1, 0, 0, 0, 430, + 425, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 433, 1, 0, 0, 0, 432, 424, 1, 0, 0, 0, 432, + 433, 1, 0, 0, 0, 433, 440, 1, 0, 0, 0, 434, 435, 5, 62, 0, 0, 435, 437, 3, 24, 12, 0, 436, + 438, 5, 59, 0, 0, 437, 436, 1, 0, 0, 0, 437, 438, 1, 0, 0, 0, 438, 440, 1, 0, 0, 0, 439, + 409, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 442, 1, 0, 0, 0, 441, + 408, 1, 0, 0, 0, 441, 442, 1, 0, 0, 0, 442, 474, 1, 0, 0, 0, 443, 445, 5, 56, 0, 0, 444, + 446, 3, 24, 12, 0, 445, 444, 1, 0, 0, 0, 445, 446, 1, 0, 0, 0, 446, 455, 1, 0, 0, 0, 447, + 448, 5, 59, 0, 0, 448, 451, 3, 24, 12, 0, 449, 450, 5, 63, 0, 0, 450, 452, 3, 174, 87, + 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 454, 1, 0, 0, 0, 453, 447, 1, 0, 0, + 0, 454, 457, 1, 0, 0, 0, 455, 453, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 466, 1, 0, 0, + 0, 457, 455, 1, 0, 0, 0, 458, 464, 5, 59, 0, 0, 459, 460, 5, 62, 0, 0, 460, 462, 3, 24, + 12, 0, 461, 463, 5, 59, 0, 0, 462, 461, 1, 0, 0, 0, 462, 463, 1, 0, 0, 0, 463, 465, 1, + 0, 0, 0, 464, 459, 1, 0, 0, 0, 464, 465, 1, 0, 0, 0, 465, 467, 1, 0, 0, 0, 466, 458, 1, + 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 474, 1, 0, 0, 0, 468, 469, 5, 62, 0, 0, 469, 471, 3, + 24, 12, 0, 470, 472, 5, 59, 0, 0, 471, 470, 1, 0, 0, 0, 471, 472, 1, 0, 0, 0, 472, 474, + 1, 0, 0, 0, 473, 392, 1, 0, 0, 0, 473, 443, 1, 0, 0, 0, 473, 468, 1, 0, 0, 0, 474, 23, 1, + 0, 0, 0, 475, 476, 3, 200, 100, 0, 476, 25, 1, 0, 0, 0, 477, 480, 3, 28, 14, 0, 478, 480, + 3, 78, 39, 0, 479, 477, 1, 0, 0, 0, 479, 478, 1, 0, 0, 0, 480, 27, 1, 0, 0, 0, 481, 486, + 3, 30, 15, 0, 482, 483, 5, 61, 0, 0, 483, 485, 3, 30, 15, 0, 484, 482, 1, 0, 0, 0, 485, + 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 486, 487, 1, 0, 0, 0, 487, 490, 1, 0, 0, 0, 488, + 486, 1, 0, 0, 0, 489, 491, 5, 61, 0, 0, 490, 489, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, + 492, 1, 0, 0, 0, 492, 493, 5, 44, 0, 0, 493, 29, 1, 0, 0, 0, 494, 503, 3, 32, 16, 0, 495, + 503, 3, 40, 20, 0, 496, 503, 3, 42, 21, 0, 497, 503, 3, 44, 22, 0, 498, 503, 3, 56, 28, + 0, 499, 503, 3, 72, 36, 0, 500, 503, 3, 74, 37, 0, 501, 503, 3, 76, 38, 0, 502, 494, + 1, 0, 0, 0, 502, 495, 1, 0, 0, 0, 502, 496, 1, 0, 0, 0, 502, 497, 1, 0, 0, 0, 502, 498, + 1, 0, 0, 0, 502, 499, 1, 0, 0, 0, 502, 500, 1, 0, 0, 0, 502, 501, 1, 0, 0, 0, 503, 31, 1, + 0, 0, 0, 504, 521, 3, 36, 18, 0, 505, 522, 3, 34, 17, 0, 506, 509, 3, 38, 19, 0, 507, + 510, 3, 232, 116, 0, 508, 510, 3, 214, 107, 0, 509, 507, 1, 0, 0, 0, 509, 508, 1, 0, + 0, 0, 510, 522, 1, 0, 0, 0, 511, 514, 5, 63, 0, 0, 512, 515, 3, 232, 116, 0, 513, 515, + 3, 36, 18, 0, 514, 512, 1, 0, 0, 0, 514, 513, 1, 0, 0, 0, 515, 517, 1, 0, 0, 0, 516, 511, + 1, 0, 0, 0, 517, 520, 1, 0, 0, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 522, + 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 521, 505, 1, 0, 0, 0, 521, 506, 1, 0, 0, 0, 521, 518, + 1, 0, 0, 0, 522, 33, 1, 0, 0, 0, 523, 524, 5, 60, 0, 0, 524, 527, 3, 174, 87, 0, 525, 526, + 5, 63, 0, 0, 526, 528, 3, 174, 87, 0, 527, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, + 35, 1, 0, 0, 0, 529, 532, 3, 174, 87, 0, 530, 532, 3, 192, 96, 0, 531, 529, 1, 0, 0, 0, + 531, 530, 1, 0, 0, 0, 532, 540, 1, 0, 0, 0, 533, 536, 5, 59, 0, 0, 534, 537, 3, 174, 87, + 0, 535, 537, 3, 192, 96, 0, 536, 534, 1, 0, 0, 0, 536, 535, 1, 0, 0, 0, 537, 539, 1, 0, + 0, 0, 538, 533, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 540, 541, 1, 0, + 0, 0, 541, 544, 1, 0, 0, 0, 542, 540, 1, 0, 0, 0, 543, 545, 5, 59, 0, 0, 544, 543, 1, 0, + 0, 0, 544, 545, 1, 0, 0, 0, 545, 37, 1, 0, 0, 0, 546, 547, 7, 0, 0, 0, 547, 39, 1, 0, 0, + 0, 548, 549, 5, 16, 0, 0, 549, 550, 3, 212, 106, 0, 550, 41, 1, 0, 0, 0, 551, 552, 5, + 35, 0, 0, 552, 43, 1, 0, 0, 0, 553, 559, 3, 46, 23, 0, 554, 559, 3, 48, 24, 0, 555, 559, + 3, 50, 25, 0, 556, 559, 3, 54, 27, 0, 557, 559, 3, 52, 26, 0, 558, 553, 1, 0, 0, 0, 558, + 554, 1, 0, 0, 0, 558, 555, 1, 0, 0, 0, 558, 556, 1, 0, 0, 0, 558, 557, 1, 0, 0, 0, 559, + 45, 1, 0, 0, 0, 560, 561, 5, 11, 0, 0, 561, 47, 1, 0, 0, 0, 562, 563, 5, 14, 0, 0, 563, + 49, 1, 0, 0, 0, 564, 566, 5, 37, 0, 0, 565, 567, 3, 214, 107, 0, 566, 565, 1, 0, 0, 0, + 566, 567, 1, 0, 0, 0, 567, 51, 1, 0, 0, 0, 568, 569, 3, 232, 116, 0, 569, 53, 1, 0, 0, + 0, 570, 576, 5, 36, 0, 0, 571, 574, 3, 174, 87, 0, 572, 573, 5, 23, 0, 0, 573, 575, 3, + 174, 87, 0, 574, 572, 1, 0, 0, 0, 574, 575, 1, 0, 0, 0, 575, 577, 1, 0, 0, 0, 576, 571, + 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 55, 1, 0, 0, 0, 578, 581, 3, 58, 29, 0, 579, 581, + 3, 60, 30, 0, 580, 578, 1, 0, 0, 0, 580, 579, 1, 0, 0, 0, 581, 57, 1, 0, 0, 0, 582, 583, + 5, 26, 0, 0, 583, 584, 3, 68, 34, 0, 584, 59, 1, 0, 0, 0, 585, 598, 5, 23, 0, 0, 586, 588, + 7, 1, 0, 0, 587, 586, 1, 0, 0, 0, 588, 591, 1, 0, 0, 0, 589, 587, 1, 0, 0, 0, 589, 590, + 1, 0, 0, 0, 590, 592, 1, 0, 0, 0, 591, 589, 1, 0, 0, 0, 592, 599, 3, 70, 35, 0, 593, 595, + 7, 1, 0, 0, 594, 593, 1, 0, 0, 0, 595, 596, 1, 0, 0, 0, 596, 594, 1, 0, 0, 0, 596, 597, + 1, 0, 0, 0, 597, 599, 1, 0, 0, 0, 598, 589, 1, 0, 0, 0, 598, 594, 1, 0, 0, 0, 599, 600, + 1, 0, 0, 0, 600, 607, 5, 26, 0, 0, 601, 608, 5, 56, 0, 0, 602, 603, 5, 57, 0, 0, 603, 604, + 3, 66, 33, 0, 604, 605, 5, 58, 0, 0, 605, 608, 1, 0, 0, 0, 606, 608, 3, 66, 33, 0, 607, + 601, 1, 0, 0, 0, 607, 602, 1, 0, 0, 0, 607, 606, 1, 0, 0, 0, 608, 61, 1, 0, 0, 0, 609, 612, + 3, 200, 100, 0, 610, 611, 5, 7, 0, 0, 611, 613, 3, 200, 100, 0, 612, 610, 1, 0, 0, 0, + 612, 613, 1, 0, 0, 0, 613, 63, 1, 0, 0, 0, 614, 617, 3, 70, 35, 0, 615, 616, 5, 7, 0, 0, + 616, 618, 3, 200, 100, 0, 617, 615, 1, 0, 0, 0, 617, 618, 1, 0, 0, 0, 618, 65, 1, 0, 0, + 0, 619, 624, 3, 62, 31, 0, 620, 621, 5, 59, 0, 0, 621, 623, 3, 62, 31, 0, 622, 620, 1, + 0, 0, 0, 623, 626, 1, 0, 0, 0, 624, 622, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 628, 1, + 0, 0, 0, 626, 624, 1, 0, 0, 0, 627, 629, 5, 59, 0, 0, 628, 627, 1, 0, 0, 0, 628, 629, 1, + 0, 0, 0, 629, 67, 1, 0, 0, 0, 630, 635, 3, 64, 32, 0, 631, 632, 5, 59, 0, 0, 632, 634, + 3, 64, 32, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636, + 1, 0, 0, 0, 636, 69, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 643, 3, 200, 100, 0, 639, 640, + 5, 54, 0, 0, 640, 642, 3, 200, 100, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, + 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 71, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 647, + 5, 24, 0, 0, 647, 652, 3, 200, 100, 0, 648, 649, 5, 59, 0, 0, 649, 651, 3, 200, 100, + 0, 650, 648, 1, 0, 0, 0, 651, 654, 1, 0, 0, 0, 652, 650, 1, 0, 0, 0, 652, 653, 1, 0, 0, + 0, 653, 73, 1, 0, 0, 0, 654, 652, 1, 0, 0, 0, 655, 656, 5, 32, 0, 0, 656, 661, 3, 200, + 100, 0, 657, 658, 5, 59, 0, 0, 658, 660, 3, 200, 100, 0, 659, 657, 1, 0, 0, 0, 660, 663, + 1, 0, 0, 0, 661, 659, 1, 0, 0, 0, 661, 662, 1, 0, 0, 0, 662, 75, 1, 0, 0, 0, 663, 661, 1, + 0, 0, 0, 664, 665, 5, 8, 0, 0, 665, 668, 3, 174, 87, 0, 666, 667, 5, 59, 0, 0, 667, 669, + 3, 174, 87, 0, 668, 666, 1, 0, 0, 0, 668, 669, 1, 0, 0, 0, 669, 77, 1, 0, 0, 0, 670, 681, + 3, 82, 41, 0, 671, 681, 3, 84, 42, 0, 672, 681, 3, 86, 43, 0, 673, 681, 3, 88, 44, 0, + 674, 681, 3, 90, 45, 0, 675, 681, 3, 14, 7, 0, 676, 681, 3, 218, 109, 0, 677, 681, 3, + 10, 5, 0, 678, 681, 3, 80, 40, 0, 679, 681, 3, 98, 49, 0, 680, 670, 1, 0, 0, 0, 680, 671, + 1, 0, 0, 0, 680, 672, 1, 0, 0, 0, 680, 673, 1, 0, 0, 0, 680, 674, 1, 0, 0, 0, 680, 675, + 1, 0, 0, 0, 680, 676, 1, 0, 0, 0, 680, 677, 1, 0, 0, 0, 680, 678, 1, 0, 0, 0, 680, 679, + 1, 0, 0, 0, 681, 79, 1, 0, 0, 0, 682, 686, 5, 9, 0, 0, 683, 687, 3, 14, 7, 0, 684, 687, + 3, 90, 45, 0, 685, 687, 3, 86, 43, 0, 686, 683, 1, 0, 0, 0, 686, 684, 1, 0, 0, 0, 686, + 685, 1, 0, 0, 0, 687, 81, 1, 0, 0, 0, 688, 689, 5, 25, 0, 0, 689, 690, 3, 174, 87, 0, 690, + 691, 5, 60, 0, 0, 691, 699, 3, 96, 48, 0, 692, 693, 5, 17, 0, 0, 693, 694, 3, 174, 87, + 0, 694, 695, 5, 60, 0, 0, 695, 696, 3, 96, 48, 0, 696, 698, 1, 0, 0, 0, 697, 692, 1, 0, + 0, 0, 698, 701, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 705, 1, 0, + 0, 0, 701, 699, 1, 0, 0, 0, 702, 703, 5, 18, 0, 0, 703, 704, 5, 60, 0, 0, 704, 706, 3, + 96, 48, 0, 705, 702, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 83, 1, 0, 0, 0, 707, 708, 5, + 41, 0, 0, 708, 709, 3, 174, 87, 0, 709, 710, 5, 60, 0, 0, 710, 714, 3, 96, 48, 0, 711, + 712, 5, 18, 0, 0, 712, 713, 5, 60, 0, 0, 713, 715, 3, 96, 48, 0, 714, 711, 1, 0, 0, 0, + 714, 715, 1, 0, 0, 0, 715, 85, 1, 0, 0, 0, 716, 717, 5, 22, 0, 0, 717, 718, 3, 212, 106, + 0, 718, 719, 5, 27, 0, 0, 719, 720, 3, 214, 107, 0, 720, 721, 5, 60, 0, 0, 721, 725, + 3, 96, 48, 0, 722, 723, 5, 18, 0, 0, 723, 724, 5, 60, 0, 0, 724, 726, 3, 96, 48, 0, 725, + 722, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 87, 1, 0, 0, 0, 727, 728, 5, 39, 0, 0, 728, + 729, 5, 60, 0, 0, 729, 751, 3, 96, 48, 0, 730, 731, 3, 94, 47, 0, 731, 732, 5, 60, 0, + 0, 732, 733, 3, 96, 48, 0, 733, 735, 1, 0, 0, 0, 734, 730, 1, 0, 0, 0, 735, 736, 1, 0, + 0, 0, 736, 734, 1, 0, 0, 0, 736, 737, 1, 0, 0, 0, 737, 741, 1, 0, 0, 0, 738, 739, 5, 18, + 0, 0, 739, 740, 5, 60, 0, 0, 740, 742, 3, 96, 48, 0, 741, 738, 1, 0, 0, 0, 741, 742, 1, + 0, 0, 0, 742, 746, 1, 0, 0, 0, 743, 744, 5, 21, 0, 0, 744, 745, 5, 60, 0, 0, 745, 747, + 3, 96, 48, 0, 746, 743, 1, 0, 0, 0, 746, 747, 1, 0, 0, 0, 747, 752, 1, 0, 0, 0, 748, 749, + 5, 21, 0, 0, 749, 750, 5, 60, 0, 0, 750, 752, 3, 96, 48, 0, 751, 734, 1, 0, 0, 0, 751, + 748, 1, 0, 0, 0, 752, 89, 1, 0, 0, 0, 753, 754, 5, 42, 0, 0, 754, 759, 3, 92, 46, 0, 755, + 756, 5, 59, 0, 0, 756, 758, 3, 92, 46, 0, 757, 755, 1, 0, 0, 0, 758, 761, 1, 0, 0, 0, 759, + 757, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 759, 1, 0, 0, 0, 762, + 763, 5, 60, 0, 0, 763, 764, 3, 96, 48, 0, 764, 91, 1, 0, 0, 0, 765, 768, 3, 174, 87, 0, + 766, 767, 5, 7, 0, 0, 767, 769, 3, 194, 97, 0, 768, 766, 1, 0, 0, 0, 768, 769, 1, 0, 0, + 0, 769, 93, 1, 0, 0, 0, 770, 776, 5, 19, 0, 0, 771, 774, 3, 174, 87, 0, 772, 773, 5, 7, + 0, 0, 773, 775, 3, 200, 100, 0, 774, 772, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 777, + 1, 0, 0, 0, 776, 771, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 95, 1, 0, 0, 0, 778, 789, 3, + 28, 14, 0, 779, 780, 5, 44, 0, 0, 780, 782, 5, 1, 0, 0, 781, 783, 3, 26, 13, 0, 782, 781, + 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 782, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 786, + 1, 0, 0, 0, 786, 787, 5, 2, 0, 0, 787, 789, 1, 0, 0, 0, 788, 778, 1, 0, 0, 0, 788, 779, + 1, 0, 0, 0, 789, 97, 1, 0, 0, 0, 790, 791, 5, 30, 0, 0, 791, 792, 3, 100, 50, 0, 792, 793, + 5, 60, 0, 0, 793, 794, 5, 44, 0, 0, 794, 796, 5, 1, 0, 0, 795, 797, 3, 106, 53, 0, 796, + 795, 1, 0, 0, 0, 797, 798, 1, 0, 0, 0, 798, 796, 1, 0, 0, 0, 798, 799, 1, 0, 0, 0, 799, + 800, 1, 0, 0, 0, 800, 801, 5, 2, 0, 0, 801, 99, 1, 0, 0, 0, 802, 803, 3, 104, 52, 0, 803, + 805, 5, 59, 0, 0, 804, 806, 3, 102, 51, 0, 805, 804, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, + 806, 809, 1, 0, 0, 0, 807, 809, 3, 174, 87, 0, 808, 802, 1, 0, 0, 0, 808, 807, 1, 0, 0, + 0, 809, 101, 1, 0, 0, 0, 810, 812, 5, 59, 0, 0, 811, 813, 3, 104, 52, 0, 812, 811, 1, + 0, 0, 0, 813, 814, 1, 0, 0, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, + 0, 0, 0, 816, 818, 5, 59, 0, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 103, 1, + 0, 0, 0, 819, 820, 5, 56, 0, 0, 820, 823, 3, 194, 97, 0, 821, 823, 3, 174, 87, 0, 822, + 819, 1, 0, 0, 0, 822, 821, 1, 0, 0, 0, 823, 105, 1, 0, 0, 0, 824, 825, 5, 12, 0, 0, 825, + 827, 3, 110, 55, 0, 826, 828, 3, 108, 54, 0, 827, 826, 1, 0, 0, 0, 827, 828, 1, 0, 0, + 0, 828, 829, 1, 0, 0, 0, 829, 830, 5, 60, 0, 0, 830, 831, 3, 96, 48, 0, 831, 107, 1, 0, + 0, 0, 832, 833, 5, 25, 0, 0, 833, 834, 3, 174, 87, 0, 834, 109, 1, 0, 0, 0, 835, 838, + 3, 150, 75, 0, 836, 838, 3, 112, 56, 0, 837, 835, 1, 0, 0, 0, 837, 836, 1, 0, 0, 0, 838, + 111, 1, 0, 0, 0, 839, 842, 3, 114, 57, 0, 840, 842, 3, 116, 58, 0, 841, 839, 1, 0, 0, + 0, 841, 840, 1, 0, 0, 0, 842, 113, 1, 0, 0, 0, 843, 844, 3, 116, 58, 0, 844, 845, 5, 7, + 0, 0, 845, 846, 3, 136, 68, 0, 846, 115, 1, 0, 0, 0, 847, 852, 3, 118, 59, 0, 848, 849, + 5, 66, 0, 0, 849, 851, 3, 118, 59, 0, 850, 848, 1, 0, 0, 0, 851, 854, 1, 0, 0, 0, 852, + 850, 1, 0, 0, 0, 852, 853, 1, 0, 0, 0, 853, 117, 1, 0, 0, 0, 854, 852, 1, 0, 0, 0, 855, + 864, 3, 120, 60, 0, 856, 864, 3, 134, 67, 0, 857, 864, 3, 138, 69, 0, 858, 864, 3, 140, + 70, 0, 859, 864, 3, 146, 73, 0, 860, 864, 3, 148, 74, 0, 861, 864, 3, 158, 79, 0, 862, + 864, 3, 166, 83, 0, 863, 855, 1, 0, 0, 0, 863, 856, 1, 0, 0, 0, 863, 857, 1, 0, 0, 0, 863, + 858, 1, 0, 0, 0, 863, 859, 1, 0, 0, 0, 863, 860, 1, 0, 0, 0, 863, 861, 1, 0, 0, 0, 863, + 862, 1, 0, 0, 0, 864, 119, 1, 0, 0, 0, 865, 866, 3, 126, 63, 0, 866, 867, 4, 60, 0, 0, + 867, 874, 1, 0, 0, 0, 868, 874, 3, 124, 62, 0, 869, 874, 3, 236, 118, 0, 870, 874, 5, + 31, 0, 0, 871, 874, 5, 38, 0, 0, 872, 874, 5, 20, 0, 0, 873, 865, 1, 0, 0, 0, 873, 868, + 1, 0, 0, 0, 873, 869, 1, 0, 0, 0, 873, 870, 1, 0, 0, 0, 873, 871, 1, 0, 0, 0, 873, 872, + 1, 0, 0, 0, 874, 121, 1, 0, 0, 0, 875, 876, 3, 126, 63, 0, 876, 877, 4, 61, 1, 0, 877, + 884, 1, 0, 0, 0, 878, 884, 3, 124, 62, 0, 879, 884, 3, 236, 118, 0, 880, 884, 5, 31, + 0, 0, 881, 884, 5, 38, 0, 0, 882, 884, 5, 20, 0, 0, 883, 875, 1, 0, 0, 0, 883, 878, 1, + 0, 0, 0, 883, 879, 1, 0, 0, 0, 883, 880, 1, 0, 0, 0, 883, 881, 1, 0, 0, 0, 883, 882, 1, + 0, 0, 0, 884, 123, 1, 0, 0, 0, 885, 886, 3, 128, 64, 0, 886, 887, 5, 71, 0, 0, 887, 888, + 3, 132, 66, 0, 888, 894, 1, 0, 0, 0, 889, 890, 3, 128, 64, 0, 890, 891, 5, 72, 0, 0, 891, + 892, 3, 132, 66, 0, 892, 894, 1, 0, 0, 0, 893, 885, 1, 0, 0, 0, 893, 889, 1, 0, 0, 0, 894, + 125, 1, 0, 0, 0, 895, 899, 5, 4, 0, 0, 896, 897, 5, 72, 0, 0, 897, 899, 5, 4, 0, 0, 898, + 895, 1, 0, 0, 0, 898, 896, 1, 0, 0, 0, 899, 127, 1, 0, 0, 0, 900, 904, 3, 130, 65, 0, 901, + 902, 5, 72, 0, 0, 902, 904, 3, 130, 65, 0, 903, 900, 1, 0, 0, 0, 903, 901, 1, 0, 0, 0, + 904, 129, 1, 0, 0, 0, 905, 906, 5, 4, 0, 0, 906, 131, 1, 0, 0, 0, 907, 908, 5, 4, 0, 0, + 908, 133, 1, 0, 0, 0, 909, 910, 3, 136, 68, 0, 910, 135, 1, 0, 0, 0, 911, 912, 3, 200, + 100, 0, 912, 913, 4, 68, 2, 0, 913, 137, 1, 0, 0, 0, 914, 915, 5, 40, 0, 0, 915, 139, + 1, 0, 0, 0, 916, 917, 3, 142, 71, 0, 917, 918, 4, 70, 3, 0, 918, 141, 1, 0, 0, 0, 919, + 922, 3, 200, 100, 0, 920, 921, 5, 54, 0, 0, 921, 923, 3, 200, 100, 0, 922, 920, 1, 0, + 0, 0, 923, 924, 1, 0, 0, 0, 924, 922, 1, 0, 0, 0, 924, 925, 1, 0, 0, 0, 925, 143, 1, 0, + 0, 0, 926, 929, 3, 142, 71, 0, 927, 929, 3, 200, 100, 0, 928, 926, 1, 0, 0, 0, 928, 927, + 1, 0, 0, 0, 929, 145, 1, 0, 0, 0, 930, 931, 5, 57, 0, 0, 931, 932, 3, 112, 56, 0, 932, + 933, 5, 58, 0, 0, 933, 147, 1, 0, 0, 0, 934, 936, 5, 64, 0, 0, 935, 937, 3, 152, 76, 0, + 936, 935, 1, 0, 0, 0, 936, 937, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 945, 5, 65, 0, 0, + 939, 941, 5, 57, 0, 0, 940, 942, 3, 150, 75, 0, 941, 940, 1, 0, 0, 0, 941, 942, 1, 0, + 0, 0, 942, 943, 1, 0, 0, 0, 943, 945, 5, 58, 0, 0, 944, 934, 1, 0, 0, 0, 944, 939, 1, 0, + 0, 0, 945, 149, 1, 0, 0, 0, 946, 947, 3, 154, 77, 0, 947, 949, 5, 59, 0, 0, 948, 950, + 3, 152, 76, 0, 949, 948, 1, 0, 0, 0, 949, 950, 1, 0, 0, 0, 950, 151, 1, 0, 0, 0, 951, 956, + 3, 154, 77, 0, 952, 953, 5, 59, 0, 0, 953, 955, 3, 154, 77, 0, 954, 952, 1, 0, 0, 0, 955, + 958, 1, 0, 0, 0, 956, 954, 1, 0, 0, 0, 956, 957, 1, 0, 0, 0, 957, 960, 1, 0, 0, 0, 958, + 956, 1, 0, 0, 0, 959, 961, 5, 59, 0, 0, 960, 959, 1, 0, 0, 0, 960, 961, 1, 0, 0, 0, 961, + 153, 1, 0, 0, 0, 962, 965, 3, 156, 78, 0, 963, 965, 3, 112, 56, 0, 964, 962, 1, 0, 0, + 0, 964, 963, 1, 0, 0, 0, 965, 155, 1, 0, 0, 0, 966, 967, 5, 56, 0, 0, 967, 971, 3, 136, + 68, 0, 968, 969, 5, 56, 0, 0, 969, 971, 3, 138, 69, 0, 970, 966, 1, 0, 0, 0, 970, 968, + 1, 0, 0, 0, 971, 157, 1, 0, 0, 0, 972, 973, 5, 77, 0, 0, 973, 998, 5, 78, 0, 0, 974, 975, + 5, 77, 0, 0, 975, 977, 3, 164, 82, 0, 976, 978, 5, 59, 0, 0, 977, 976, 1, 0, 0, 0, 977, + 978, 1, 0, 0, 0, 978, 979, 1, 0, 0, 0, 979, 980, 5, 78, 0, 0, 980, 998, 1, 0, 0, 0, 981, + 982, 5, 77, 0, 0, 982, 983, 3, 160, 80, 0, 983, 984, 5, 59, 0, 0, 984, 986, 3, 164, 82, + 0, 985, 987, 5, 59, 0, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, + 0, 988, 989, 5, 78, 0, 0, 989, 998, 1, 0, 0, 0, 990, 991, 5, 77, 0, 0, 991, 993, 3, 160, + 80, 0, 992, 994, 5, 59, 0, 0, 993, 992, 1, 0, 0, 0, 993, 994, 1, 0, 0, 0, 994, 995, 1, + 0, 0, 0, 995, 996, 5, 78, 0, 0, 996, 998, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 974, 1, + 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 998, 159, 1, 0, 0, 0, 999, 1004, 3, + 162, 81, 0, 1000, 1001, 5, 59, 0, 0, 1001, 1003, 3, 162, 81, 0, 1002, 1000, 1, 0, 0, + 0, 1003, 1006, 1, 0, 0, 0, 1004, 1002, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 161, + 1, 0, 0, 0, 1006, 1004, 1, 0, 0, 0, 1007, 1010, 3, 122, 61, 0, 1008, 1010, 3, 142, 71, + 0, 1009, 1007, 1, 0, 0, 0, 1009, 1008, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1012, + 5, 60, 0, 0, 1012, 1013, 3, 112, 56, 0, 1013, 163, 1, 0, 0, 0, 1014, 1015, 5, 62, 0, + 0, 1015, 1016, 3, 136, 68, 0, 1016, 165, 1, 0, 0, 0, 1017, 1018, 3, 144, 72, 0, 1018, + 1019, 5, 57, 0, 0, 1019, 1020, 5, 58, 0, 0, 1020, 1048, 1, 0, 0, 0, 1021, 1022, 3, 144, + 72, 0, 1022, 1023, 5, 57, 0, 0, 1023, 1025, 3, 168, 84, 0, 1024, 1026, 5, 59, 0, 0, + 1025, 1024, 1, 0, 0, 0, 1025, 1026, 1, 0, 0, 0, 1026, 1027, 1, 0, 0, 0, 1027, 1028, + 5, 58, 0, 0, 1028, 1048, 1, 0, 0, 0, 1029, 1030, 3, 144, 72, 0, 1030, 1031, 5, 57, 0, + 0, 1031, 1033, 3, 170, 85, 0, 1032, 1034, 5, 59, 0, 0, 1033, 1032, 1, 0, 0, 0, 1033, + 1034, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1036, 5, 58, 0, 0, 1036, 1048, 1, 0, + 0, 0, 1037, 1038, 3, 144, 72, 0, 1038, 1039, 5, 57, 0, 0, 1039, 1040, 3, 168, 84, 0, + 1040, 1041, 5, 59, 0, 0, 1041, 1043, 3, 170, 85, 0, 1042, 1044, 5, 59, 0, 0, 1043, + 1042, 1, 0, 0, 0, 1043, 1044, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1046, 5, 58, + 0, 0, 1046, 1048, 1, 0, 0, 0, 1047, 1017, 1, 0, 0, 0, 1047, 1021, 1, 0, 0, 0, 1047, 1029, + 1, 0, 0, 0, 1047, 1037, 1, 0, 0, 0, 1048, 167, 1, 0, 0, 0, 1049, 1054, 3, 112, 56, 0, + 1050, 1051, 5, 59, 0, 0, 1051, 1053, 3, 112, 56, 0, 1052, 1050, 1, 0, 0, 0, 1053, 1056, + 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1054, 1055, 1, 0, 0, 0, 1055, 169, 1, 0, 0, 0, 1056, + 1054, 1, 0, 0, 0, 1057, 1062, 3, 172, 86, 0, 1058, 1059, 5, 59, 0, 0, 1059, 1061, 3, + 172, 86, 0, 1060, 1058, 1, 0, 0, 0, 1061, 1064, 1, 0, 0, 0, 1062, 1060, 1, 0, 0, 0, 1062, + 1063, 1, 0, 0, 0, 1063, 171, 1, 0, 0, 0, 1064, 1062, 1, 0, 0, 0, 1065, 1066, 3, 200, + 100, 0, 1066, 1067, 5, 63, 0, 0, 1067, 1068, 3, 112, 56, 0, 1068, 173, 1, 0, 0, 0, 1069, + 1075, 3, 182, 91, 0, 1070, 1071, 5, 25, 0, 0, 1071, 1072, 3, 182, 91, 0, 1072, 1073, + 5, 18, 0, 0, 1073, 1074, 3, 174, 87, 0, 1074, 1076, 1, 0, 0, 0, 1075, 1070, 1, 0, 0, + 0, 1075, 1076, 1, 0, 0, 0, 1076, 1079, 1, 0, 0, 0, 1077, 1079, 3, 178, 89, 0, 1078, + 1069, 1, 0, 0, 0, 1078, 1077, 1, 0, 0, 0, 1079, 175, 1, 0, 0, 0, 1080, 1083, 3, 182, + 91, 0, 1081, 1083, 3, 180, 90, 0, 1082, 1080, 1, 0, 0, 0, 1082, 1081, 1, 0, 0, 0, 1083, + 177, 1, 0, 0, 0, 1084, 1086, 5, 29, 0, 0, 1085, 1087, 3, 22, 11, 0, 1086, 1085, 1, 0, + 0, 0, 1086, 1087, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 5, 60, 0, 0, 1089, + 1090, 3, 174, 87, 0, 1090, 179, 1, 0, 0, 0, 1091, 1093, 5, 29, 0, 0, 1092, 1094, 3, + 22, 11, 0, 1093, 1092, 1, 0, 0, 0, 1093, 1094, 1, 0, 0, 0, 1094, 1095, 1, 0, 0, 0, 1095, + 1096, 5, 60, 0, 0, 1096, 1097, 3, 176, 88, 0, 1097, 181, 1, 0, 0, 0, 1098, 1103, 3, + 184, 92, 0, 1099, 1100, 5, 34, 0, 0, 1100, 1102, 3, 184, 92, 0, 1101, 1099, 1, 0, 0, + 0, 1102, 1105, 1, 0, 0, 0, 1103, 1101, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 183, + 1, 0, 0, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1111, 3, 186, 93, 0, 1107, 1108, 5, 6, 0, 0, + 1108, 1110, 3, 186, 93, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1113, 1, 0, 0, 0, 1111, 1109, + 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 185, 1, 0, 0, 0, 1113, 1111, 1, 0, 0, 0, 1114, + 1115, 5, 33, 0, 0, 1115, 1118, 3, 186, 93, 0, 1116, 1118, 3, 188, 94, 0, 1117, 1114, + 1, 0, 0, 0, 1117, 1116, 1, 0, 0, 0, 1118, 187, 1, 0, 0, 0, 1119, 1125, 3, 194, 97, 0, + 1120, 1121, 3, 190, 95, 0, 1121, 1122, 3, 194, 97, 0, 1122, 1124, 1, 0, 0, 0, 1123, + 1120, 1, 0, 0, 0, 1124, 1127, 1, 0, 0, 0, 1125, 1123, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, + 0, 1126, 189, 1, 0, 0, 0, 1127, 1125, 1, 0, 0, 0, 1128, 1142, 5, 79, 0, 0, 1129, 1142, + 5, 80, 0, 0, 1130, 1142, 5, 81, 0, 0, 1131, 1142, 5, 82, 0, 0, 1132, 1142, 5, 83, 0, + 0, 1133, 1142, 5, 84, 0, 0, 1134, 1142, 5, 85, 0, 0, 1135, 1142, 5, 27, 0, 0, 1136, + 1137, 5, 33, 0, 0, 1137, 1142, 5, 27, 0, 0, 1138, 1142, 5, 28, 0, 0, 1139, 1140, 5, + 28, 0, 0, 1140, 1142, 5, 33, 0, 0, 1141, 1128, 1, 0, 0, 0, 1141, 1129, 1, 0, 0, 0, 1141, + 1130, 1, 0, 0, 0, 1141, 1131, 1, 0, 0, 0, 1141, 1132, 1, 0, 0, 0, 1141, 1133, 1, 0, 0, + 0, 1141, 1134, 1, 0, 0, 0, 1141, 1135, 1, 0, 0, 0, 1141, 1136, 1, 0, 0, 0, 1141, 1138, + 1, 0, 0, 0, 1141, 1139, 1, 0, 0, 0, 1142, 191, 1, 0, 0, 0, 1143, 1144, 5, 56, 0, 0, 1144, + 1145, 3, 194, 97, 0, 1145, 193, 1, 0, 0, 0, 1146, 1147, 6, 97, -1, 0, 1147, 1155, 3, + 196, 98, 0, 1148, 1150, 7, 2, 0, 0, 1149, 1148, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, + 1149, 1, 0, 0, 0, 1151, 1152, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1155, 3, 194, + 97, 7, 1154, 1146, 1, 0, 0, 0, 1154, 1149, 1, 0, 0, 0, 1155, 1179, 1, 0, 0, 0, 1156, + 1157, 10, 8, 0, 0, 1157, 1158, 5, 62, 0, 0, 1158, 1178, 3, 194, 97, 9, 1159, 1160, + 10, 6, 0, 0, 1160, 1161, 7, 3, 0, 0, 1161, 1178, 3, 194, 97, 7, 1162, 1163, 10, 5, 0, + 0, 1163, 1164, 7, 4, 0, 0, 1164, 1178, 3, 194, 97, 6, 1165, 1166, 10, 4, 0, 0, 1166, + 1167, 7, 5, 0, 0, 1167, 1178, 3, 194, 97, 5, 1168, 1169, 10, 3, 0, 0, 1169, 1170, 5, + 68, 0, 0, 1170, 1178, 3, 194, 97, 4, 1171, 1172, 10, 2, 0, 0, 1172, 1173, 5, 67, 0, + 0, 1173, 1178, 3, 194, 97, 3, 1174, 1175, 10, 1, 0, 0, 1175, 1176, 5, 66, 0, 0, 1176, + 1178, 3, 194, 97, 2, 1177, 1156, 1, 0, 0, 0, 1177, 1159, 1, 0, 0, 0, 1177, 1162, 1, + 0, 0, 0, 1177, 1165, 1, 0, 0, 0, 1177, 1168, 1, 0, 0, 0, 1177, 1171, 1, 0, 0, 0, 1177, + 1174, 1, 0, 0, 0, 1178, 1181, 1, 0, 0, 0, 1179, 1177, 1, 0, 0, 0, 1179, 1180, 1, 0, 0, + 0, 1180, 195, 1, 0, 0, 0, 1181, 1179, 1, 0, 0, 0, 1182, 1184, 5, 10, 0, 0, 1183, 1182, + 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1189, 3, 198, 99, 0, + 1186, 1188, 3, 204, 102, 0, 1187, 1186, 1, 0, 0, 0, 1188, 1191, 1, 0, 0, 0, 1189, 1187, + 1, 0, 0, 0, 1189, 1190, 1, 0, 0, 0, 1190, 197, 1, 0, 0, 0, 1191, 1189, 1, 0, 0, 0, 1192, + 1195, 5, 57, 0, 0, 1193, 1196, 3, 232, 116, 0, 1194, 1196, 3, 202, 101, 0, 1195, 1193, + 1, 0, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, + 1220, 5, 58, 0, 0, 1198, 1200, 5, 64, 0, 0, 1199, 1201, 3, 202, 101, 0, 1200, 1199, + 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1220, 5, 65, 0, 0, 1203, + 1205, 5, 77, 0, 0, 1204, 1206, 3, 216, 108, 0, 1205, 1204, 1, 0, 0, 0, 1205, 1206, + 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1220, 5, 78, 0, 0, 1208, 1220, 3, 200, 100, + 0, 1209, 1220, 5, 4, 0, 0, 1210, 1212, 5, 3, 0, 0, 1211, 1210, 1, 0, 0, 0, 1212, 1213, + 1, 0, 0, 0, 1213, 1211, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1220, 1, 0, 0, 0, 1215, + 1220, 5, 55, 0, 0, 1216, 1220, 5, 31, 0, 0, 1217, 1220, 5, 38, 0, 0, 1218, 1220, 5, + 20, 0, 0, 1219, 1192, 1, 0, 0, 0, 1219, 1198, 1, 0, 0, 0, 1219, 1203, 1, 0, 0, 0, 1219, + 1208, 1, 0, 0, 0, 1219, 1209, 1, 0, 0, 0, 1219, 1211, 1, 0, 0, 0, 1219, 1215, 1, 0, 0, + 0, 1219, 1216, 1, 0, 0, 0, 1219, 1217, 1, 0, 0, 0, 1219, 1218, 1, 0, 0, 0, 1220, 199, + 1, 0, 0, 0, 1221, 1222, 7, 6, 0, 0, 1222, 201, 1, 0, 0, 0, 1223, 1226, 3, 174, 87, 0, + 1224, 1226, 3, 192, 96, 0, 1225, 1223, 1, 0, 0, 0, 1225, 1224, 1, 0, 0, 0, 1226, 1241, + 1, 0, 0, 0, 1227, 1242, 3, 226, 113, 0, 1228, 1231, 5, 59, 0, 0, 1229, 1232, 3, 174, + 87, 0, 1230, 1232, 3, 192, 96, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1230, 1, 0, 0, 0, 1232, + 1234, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 1237, 1, 0, 0, 0, 1235, 1233, 1, 0, 0, + 0, 1235, 1236, 1, 0, 0, 0, 1236, 1239, 1, 0, 0, 0, 1237, 1235, 1, 0, 0, 0, 1238, 1240, + 5, 59, 0, 0, 1239, 1238, 1, 0, 0, 0, 1239, 1240, 1, 0, 0, 0, 1240, 1242, 1, 0, 0, 0, 1241, + 1227, 1, 0, 0, 0, 1241, 1235, 1, 0, 0, 0, 1242, 203, 1, 0, 0, 0, 1243, 1245, 5, 57, 0, + 0, 1244, 1246, 3, 220, 110, 0, 1245, 1244, 1, 0, 0, 0, 1245, 1246, 1, 0, 0, 0, 1246, + 1247, 1, 0, 0, 0, 1247, 1255, 5, 58, 0, 0, 1248, 1249, 5, 64, 0, 0, 1249, 1250, 3, 206, + 103, 0, 1250, 1251, 5, 65, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1253, 5, 54, 0, 0, 1253, + 1255, 3, 200, 100, 0, 1254, 1243, 1, 0, 0, 0, 1254, 1248, 1, 0, 0, 0, 1254, 1252, 1, + 0, 0, 0, 1255, 205, 1, 0, 0, 0, 1256, 1261, 3, 208, 104, 0, 1257, 1258, 5, 59, 0, 0, + 1258, 1260, 3, 208, 104, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1263, 1, 0, 0, 0, 1261, 1259, + 1, 0, 0, 0, 1261, 1262, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1264, + 1266, 5, 59, 0, 0, 1265, 1264, 1, 0, 0, 0, 1265, 1266, 1, 0, 0, 0, 1266, 207, 1, 0, 0, + 0, 1267, 1279, 3, 174, 87, 0, 1268, 1270, 3, 174, 87, 0, 1269, 1268, 1, 0, 0, 0, 1269, + 1270, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 5, 60, 0, 0, 1272, 1274, 3, 174, + 87, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, + 1277, 3, 210, 105, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, + 0, 0, 0, 1278, 1267, 1, 0, 0, 0, 1278, 1269, 1, 0, 0, 0, 1279, 209, 1, 0, 0, 0, 1280, + 1282, 5, 60, 0, 0, 1281, 1283, 3, 174, 87, 0, 1282, 1281, 1, 0, 0, 0, 1282, 1283, 1, + 0, 0, 0, 1283, 211, 1, 0, 0, 0, 1284, 1287, 3, 194, 97, 0, 1285, 1287, 3, 192, 96, 0, + 1286, 1284, 1, 0, 0, 0, 1286, 1285, 1, 0, 0, 0, 1287, 1295, 1, 0, 0, 0, 1288, 1291, + 5, 59, 0, 0, 1289, 1292, 3, 194, 97, 0, 1290, 1292, 3, 192, 96, 0, 1291, 1289, 1, 0, + 0, 0, 1291, 1290, 1, 0, 0, 0, 1292, 1294, 1, 0, 0, 0, 1293, 1288, 1, 0, 0, 0, 1294, 1297, + 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297, + 1295, 1, 0, 0, 0, 1298, 1300, 5, 59, 0, 0, 1299, 1298, 1, 0, 0, 0, 1299, 1300, 1, 0, + 0, 0, 1300, 213, 1, 0, 0, 0, 1301, 1306, 3, 174, 87, 0, 1302, 1303, 5, 59, 0, 0, 1303, + 1305, 3, 174, 87, 0, 1304, 1302, 1, 0, 0, 0, 1305, 1308, 1, 0, 0, 0, 1306, 1304, 1, + 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1310, 1, 0, 0, 0, 1308, 1306, 1, 0, 0, 0, 1309, + 1311, 5, 59, 0, 0, 1310, 1309, 1, 0, 0, 0, 1310, 1311, 1, 0, 0, 0, 1311, 215, 1, 0, 0, + 0, 1312, 1313, 3, 174, 87, 0, 1313, 1314, 5, 60, 0, 0, 1314, 1315, 3, 174, 87, 0, 1315, + 1319, 1, 0, 0, 0, 1316, 1317, 5, 62, 0, 0, 1317, 1319, 3, 194, 97, 0, 1318, 1312, 1, + 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1319, 1338, 1, 0, 0, 0, 1320, 1339, 3, 226, 113, 0, + 1321, 1328, 5, 59, 0, 0, 1322, 1323, 3, 174, 87, 0, 1323, 1324, 5, 60, 0, 0, 1324, + 1325, 3, 174, 87, 0, 1325, 1329, 1, 0, 0, 0, 1326, 1327, 5, 62, 0, 0, 1327, 1329, 3, + 194, 97, 0, 1328, 1322, 1, 0, 0, 0, 1328, 1326, 1, 0, 0, 0, 1329, 1331, 1, 0, 0, 0, 1330, + 1321, 1, 0, 0, 0, 1331, 1334, 1, 0, 0, 0, 1332, 1330, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, + 0, 1333, 1336, 1, 0, 0, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1337, 5, 59, 0, 0, 1336, 1335, + 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1339, 1, 0, 0, 0, 1338, 1320, 1, 0, 0, 0, 1338, + 1332, 1, 0, 0, 0, 1339, 1361, 1, 0, 0, 0, 1340, 1343, 3, 174, 87, 0, 1341, 1343, 3, + 192, 96, 0, 1342, 1340, 1, 0, 0, 0, 1342, 1341, 1, 0, 0, 0, 1343, 1358, 1, 0, 0, 0, 1344, + 1359, 3, 226, 113, 0, 1345, 1348, 5, 59, 0, 0, 1346, 1349, 3, 174, 87, 0, 1347, 1349, + 3, 192, 96, 0, 1348, 1346, 1, 0, 0, 0, 1348, 1347, 1, 0, 0, 0, 1349, 1351, 1, 0, 0, 0, + 1350, 1345, 1, 0, 0, 0, 1351, 1354, 1, 0, 0, 0, 1352, 1350, 1, 0, 0, 0, 1352, 1353, + 1, 0, 0, 0, 1353, 1356, 1, 0, 0, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1357, 5, 59, 0, 0, 1356, + 1355, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1344, 1, 0, 0, + 0, 1358, 1352, 1, 0, 0, 0, 1359, 1361, 1, 0, 0, 0, 1360, 1318, 1, 0, 0, 0, 1360, 1342, + 1, 0, 0, 0, 1361, 217, 1, 0, 0, 0, 1362, 1363, 5, 13, 0, 0, 1363, 1369, 3, 200, 100, + 0, 1364, 1366, 5, 57, 0, 0, 1365, 1367, 3, 220, 110, 0, 1366, 1365, 1, 0, 0, 0, 1366, + 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 58, 0, 0, 1369, 1364, 1, 0, + 0, 0, 1369, 1370, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 5, 60, 0, 0, 1372, + 1373, 3, 96, 48, 0, 1373, 219, 1, 0, 0, 0, 1374, 1379, 3, 222, 111, 0, 1375, 1376, + 5, 59, 0, 0, 1376, 1378, 3, 222, 111, 0, 1377, 1375, 1, 0, 0, 0, 1378, 1381, 1, 0, 0, + 0, 1379, 1377, 1, 0, 0, 0, 1379, 1380, 1, 0, 0, 0, 1380, 1383, 1, 0, 0, 0, 1381, 1379, + 1, 0, 0, 0, 1382, 1384, 5, 59, 0, 0, 1383, 1382, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, + 221, 1, 0, 0, 0, 1385, 1387, 3, 174, 87, 0, 1386, 1388, 3, 226, 113, 0, 1387, 1386, + 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1398, 1, 0, 0, 0, 1389, 1390, 3, 174, 87, 0, + 1390, 1391, 5, 63, 0, 0, 1391, 1392, 3, 174, 87, 0, 1392, 1398, 1, 0, 0, 0, 1393, 1394, + 5, 62, 0, 0, 1394, 1398, 3, 174, 87, 0, 1395, 1396, 5, 56, 0, 0, 1396, 1398, 3, 174, + 87, 0, 1397, 1385, 1, 0, 0, 0, 1397, 1389, 1, 0, 0, 0, 1397, 1393, 1, 0, 0, 0, 1397, + 1395, 1, 0, 0, 0, 1398, 223, 1, 0, 0, 0, 1399, 1402, 3, 226, 113, 0, 1400, 1402, 3, + 228, 114, 0, 1401, 1399, 1, 0, 0, 0, 1401, 1400, 1, 0, 0, 0, 1402, 225, 1, 0, 0, 0, 1403, + 1405, 5, 9, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 1, 0, 0, + 0, 1406, 1407, 5, 22, 0, 0, 1407, 1408, 3, 212, 106, 0, 1408, 1409, 5, 27, 0, 0, 1409, + 1411, 3, 182, 91, 0, 1410, 1412, 3, 224, 112, 0, 1411, 1410, 1, 0, 0, 0, 1411, 1412, + 1, 0, 0, 0, 1412, 227, 1, 0, 0, 0, 1413, 1414, 5, 25, 0, 0, 1414, 1416, 3, 176, 88, 0, + 1415, 1417, 3, 224, 112, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 229, + 1, 0, 0, 0, 1418, 1419, 3, 200, 100, 0, 1419, 231, 1, 0, 0, 0, 1420, 1422, 5, 43, 0, + 0, 1421, 1423, 3, 234, 117, 0, 1422, 1421, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, + 233, 1, 0, 0, 0, 1424, 1425, 5, 23, 0, 0, 1425, 1428, 3, 174, 87, 0, 1426, 1428, 3, + 214, 107, 0, 1427, 1424, 1, 0, 0, 0, 1427, 1426, 1, 0, 0, 0, 1428, 235, 1, 0, 0, 0, 1429, + 1431, 5, 3, 0, 0, 1430, 1429, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1430, 1, 0, 0, + 0, 1432, 1433, 1, 0, 0, 0, 1433, 237, 1, 0, 0, 0, 201, 243, 247, 249, 258, 267, 270, + 277, 283, 293, 300, 307, 313, 317, 323, 329, 333, 340, 342, 344, 349, 351, 353, + 357, 363, 367, 374, 376, 378, 383, 385, 390, 395, 401, 405, 411, 417, 421, 428, + 430, 432, 437, 439, 441, 445, 451, 455, 462, 464, 466, 471, 473, 479, 486, 490, + 502, 509, 514, 518, 521, 527, 531, 536, 540, 544, 558, 566, 574, 576, 580, 589, + 596, 598, 607, 612, 617, 624, 628, 635, 643, 652, 661, 668, 680, 686, 699, 705, + 714, 725, 736, 741, 746, 751, 759, 768, 774, 776, 784, 788, 798, 805, 808, 814, + 817, 822, 827, 837, 841, 852, 863, 873, 883, 893, 898, 903, 924, 928, 936, 941, + 944, 949, 956, 960, 964, 970, 977, 986, 993, 997, 1004, 1009, 1025, 1033, 1043, + 1047, 1054, 1062, 1075, 1078, 1082, 1086, 1093, 1103, 1111, 1117, 1125, 1141, + 1151, 1154, 1177, 1179, 1183, 1189, 1195, 1200, 1205, 1213, 1219, 1225, 1231, + 1235, 1239, 1241, 1245, 1254, 1261, 1265, 1269, 1273, 1276, 1278, 1282, 1286, + 1291, 1295, 1299, 1306, 1310, 1318, 1328, 1332, 1336, 1338, 1342, 1348, 1352, + 1356, 1358, 1360, 1366, 1369, 1379, 1383, 1387, 1397, 1401, 1404, 1411, 1416, + 1422, 1427, 1432 + ] + + + + +class Python3Parser(Python3ParserBase): + grammarFileName = "Python3Parser.g4" + + atn = ATNDeserializer().deserialize(serializedATN()) + + decisionsToDFA = [DFA(ds, i) for i, ds in enumerate(atn.decisionToState)] + + sharedContextCache = PredictionContextCache() + + literalNames = ["", "", "", "", + "", "", "'and'", "'as'", "'assert'", + "'async'", "'await'", "'break'", "'case'", "'class'", + "'continue'", "'def'", "'del'", "'elif'", "'else'", + "'except'", "'False'", "'finally'", "'for'", "'from'", + "'global'", "'if'", "'import'", "'in'", "'is'", "'lambda'", + "'match'", "'None'", "'nonlocal'", "'not'", "'or'", + "'pass'", "'raise'", "'return'", "'True'", "'try'", + "'_'", "'while'", "'with'", "'yield'", "", + "", "", "", "", + "", "", "", "", + "", "'.'", "'...'", "'*'", "'('", "')'", "','", + "':'", "';'", "'**'", "'='", "'['", "']'", "'|'", "'^'", + "'&'", "'<<'", "'>>'", "'+'", "'-'", "'/'", "'%'", + "'//'", "'~'", "'{'", "'}'", "'<'", "'>'", "'=='", + "'>='", "'<='", "'<>'", "'!='", "'@'", "'->'", "'+='", + "'-='", "'*='", "'@='", "'/='", "'%='", "'&='", "'|='", + "'^='", "'<<='", "'>>='", "'**='", "'//='"] + + symbolicNames = ["", "INDENT", "DEDENT", "STRING", "NUMBER", + "INTEGER", "AND", "AS", "ASSERT", "ASYNC", "AWAIT", + "BREAK", "CASE", "CLASS", "CONTINUE", "DEF", "DEL", + "ELIF", "ELSE", "EXCEPT", "FALSE", "FINALLY", "FOR", + "FROM", "GLOBAL", "IF", "IMPORT", "IN", "IS", "LAMBDA", + "MATCH", "NONE", "NONLOCAL", "NOT", "OR", "PASS", + "RAISE", "RETURN", "TRUE", "TRY", "UNDERSCORE", "WHILE", + "WITH", "YIELD", "NEWLINE", "NAME", "STRING_LITERAL", + "BYTES_LITERAL", "DECIMAL_INTEGER", "OCT_INTEGER", + "HEX_INTEGER", "BIN_INTEGER", "FLOAT_NUMBER", "IMAG_NUMBER", + "DOT", "ELLIPSIS", "STAR", "OPEN_PAREN", "CLOSE_PAREN", + "COMMA", "COLON", "SEMI_COLON", "POWER", "ASSIGN", + "OPEN_BRACK", "CLOSE_BRACK", "OR_OP", "XOR", "AND_OP", + "LEFT_SHIFT", "RIGHT_SHIFT", "ADD", "MINUS", "DIV", + "MOD", "IDIV", "NOT_OP", "OPEN_BRACE", "CLOSE_BRACE", + "LESS_THAN", "GREATER_THAN", "EQUALS", "GT_EQ", "LT_EQ", + "NOT_EQ_1", "NOT_EQ_2", "AT", "ARROW", "ADD_ASSIGN", + "SUB_ASSIGN", "MULT_ASSIGN", "AT_ASSIGN", "DIV_ASSIGN", + "MOD_ASSIGN", "AND_ASSIGN", "OR_ASSIGN", "XOR_ASSIGN", + "LEFT_SHIFT_ASSIGN", "RIGHT_SHIFT_ASSIGN", "POWER_ASSIGN", + "IDIV_ASSIGN", "SKIP_", "UNKNOWN_CHAR"] + + RULE_single_input = 0 + RULE_file_input = 1 + RULE_eval_input = 2 + RULE_decorator = 3 + RULE_decorators = 4 + RULE_decorated = 5 + RULE_async_funcdef = 6 + RULE_funcdef = 7 + RULE_parameters = 8 + RULE_typedargslist = 9 + RULE_tfpdef = 10 + RULE_varargslist = 11 + RULE_vfpdef = 12 + RULE_stmt = 13 + RULE_simple_stmts = 14 + RULE_simple_stmt = 15 + RULE_expr_stmt = 16 + RULE_annassign = 17 + RULE_testlist_star_expr = 18 + RULE_augassign = 19 + RULE_del_stmt = 20 + RULE_pass_stmt = 21 + RULE_flow_stmt = 22 + RULE_break_stmt = 23 + RULE_continue_stmt = 24 + RULE_return_stmt = 25 + RULE_yield_stmt = 26 + RULE_raise_stmt = 27 + RULE_import_stmt = 28 + RULE_import_name = 29 + RULE_import_from = 30 + RULE_import_as_name = 31 + RULE_dotted_as_name = 32 + RULE_import_as_names = 33 + RULE_dotted_as_names = 34 + RULE_dotted_name = 35 + RULE_global_stmt = 36 + RULE_nonlocal_stmt = 37 + RULE_assert_stmt = 38 + RULE_compound_stmt = 39 + RULE_async_stmt = 40 + RULE_if_stmt = 41 + RULE_while_stmt = 42 + RULE_for_stmt = 43 + RULE_try_stmt = 44 + RULE_with_stmt = 45 + RULE_with_item = 46 + RULE_except_clause = 47 + RULE_block = 48 + RULE_match_stmt = 49 + RULE_subject_expr = 50 + RULE_star_named_expressions = 51 + RULE_star_named_expression = 52 + RULE_case_block = 53 + RULE_guard = 54 + RULE_patterns = 55 + RULE_pattern = 56 + RULE_as_pattern = 57 + RULE_or_pattern = 58 + RULE_closed_pattern = 59 + RULE_literal_pattern = 60 + RULE_literal_expr = 61 + RULE_complex_number = 62 + RULE_signed_number = 63 + RULE_signed_real_number = 64 + RULE_real_number = 65 + RULE_imaginary_number = 66 + RULE_capture_pattern = 67 + RULE_pattern_capture_target = 68 + RULE_wildcard_pattern = 69 + RULE_value_pattern = 70 + RULE_attr = 71 + RULE_name_or_attr = 72 + RULE_group_pattern = 73 + RULE_sequence_pattern = 74 + RULE_open_sequence_pattern = 75 + RULE_maybe_sequence_pattern = 76 + RULE_maybe_star_pattern = 77 + RULE_star_pattern = 78 + RULE_mapping_pattern = 79 + RULE_items_pattern = 80 + RULE_key_value_pattern = 81 + RULE_double_star_pattern = 82 + RULE_class_pattern = 83 + RULE_positional_patterns = 84 + RULE_keyword_patterns = 85 + RULE_keyword_pattern = 86 + RULE_test = 87 + RULE_test_nocond = 88 + RULE_lambdef = 89 + RULE_lambdef_nocond = 90 + RULE_or_test = 91 + RULE_and_test = 92 + RULE_not_test = 93 + RULE_comparison = 94 + RULE_comp_op = 95 + RULE_star_expr = 96 + RULE_expr = 97 + RULE_atom_expr = 98 + RULE_atom = 99 + RULE_name = 100 + RULE_testlist_comp = 101 + RULE_trailer = 102 + RULE_subscriptlist = 103 + RULE_subscript_ = 104 + RULE_sliceop = 105 + RULE_exprlist = 106 + RULE_testlist = 107 + RULE_dictorsetmaker = 108 + RULE_classdef = 109 + RULE_arglist = 110 + RULE_argument = 111 + RULE_comp_iter = 112 + RULE_comp_for = 113 + RULE_comp_if = 114 + RULE_encoding_decl = 115 + RULE_yield_expr = 116 + RULE_yield_arg = 117 + RULE_strings = 118 + + ruleNames = ["single_input", "file_input", "eval_input", "decorator", + "decorators", "decorated", "async_funcdef", "funcdef", + "parameters", "typedargslist", "tfpdef", "varargslist", + "vfpdef", "stmt", "simple_stmts", "simple_stmt", "expr_stmt", + "annassign", "testlist_star_expr", "augassign", "del_stmt", + "pass_stmt", "flow_stmt", "break_stmt", "continue_stmt", + "return_stmt", "yield_stmt", "raise_stmt", "import_stmt", + "import_name", "import_from", "import_as_name", "dotted_as_name", + "import_as_names", "dotted_as_names", "dotted_name", + "global_stmt", "nonlocal_stmt", "assert_stmt", "compound_stmt", + "async_stmt", "if_stmt", "while_stmt", "for_stmt", "try_stmt", + "with_stmt", "with_item", "except_clause", "block", "match_stmt", + "subject_expr", "star_named_expressions", "star_named_expression", + "case_block", "guard", "patterns", "pattern", "as_pattern", + "or_pattern", "closed_pattern", "literal_pattern", "literal_expr", + "complex_number", "signed_number", "signed_real_number", + "real_number", "imaginary_number", "capture_pattern", + "pattern_capture_target", "wildcard_pattern", "value_pattern", + "attr", "name_or_attr", "group_pattern", "sequence_pattern", + "open_sequence_pattern", "maybe_sequence_pattern", "maybe_star_pattern", + "star_pattern", "mapping_pattern", "items_pattern", "key_value_pattern", + "double_star_pattern", "class_pattern", "positional_patterns", + "keyword_patterns", "keyword_pattern", "test", "test_nocond", + "lambdef", "lambdef_nocond", "or_test", "and_test", "not_test", + "comparison", "comp_op", "star_expr", "expr", "atom_expr", + "atom", "name", "testlist_comp", "trailer", "subscriptlist", + "subscript_", "sliceop", "exprlist", "testlist", "dictorsetmaker", + "classdef", "arglist", "argument", "comp_iter", "comp_for", + "comp_if", "encoding_decl", "yield_expr", "yield_arg", + "strings"] + + EOF = Token.EOF + INDENT = 1 + DEDENT = 2 + STRING = 3 + NUMBER = 4 + INTEGER = 5 + AND = 6 + AS = 7 + ASSERT = 8 + ASYNC = 9 + AWAIT = 10 + BREAK = 11 + CASE = 12 + CLASS = 13 + CONTINUE = 14 + DEF = 15 + DEL = 16 + ELIF = 17 + ELSE = 18 + EXCEPT = 19 + FALSE = 20 + FINALLY = 21 + FOR = 22 + FROM = 23 + GLOBAL = 24 + IF = 25 + IMPORT = 26 + IN = 27 + IS = 28 + LAMBDA = 29 + MATCH = 30 + NONE = 31 + NONLOCAL = 32 + NOT = 33 + OR = 34 + PASS = 35 + RAISE = 36 + RETURN = 37 + TRUE = 38 + TRY = 39 + UNDERSCORE = 40 + WHILE = 41 + WITH = 42 + YIELD = 43 + NEWLINE = 44 + NAME = 45 + STRING_LITERAL = 46 + BYTES_LITERAL = 47 + DECIMAL_INTEGER = 48 + OCT_INTEGER = 49 + HEX_INTEGER = 50 + BIN_INTEGER = 51 + FLOAT_NUMBER = 52 + IMAG_NUMBER = 53 + DOT = 54 + ELLIPSIS = 55 + STAR = 56 + OPEN_PAREN = 57 + CLOSE_PAREN = 58 + COMMA = 59 + COLON = 60 + SEMI_COLON = 61 + POWER = 62 + ASSIGN = 63 + OPEN_BRACK = 64 + CLOSE_BRACK = 65 + OR_OP = 66 + XOR = 67 + AND_OP = 68 + LEFT_SHIFT = 69 + RIGHT_SHIFT = 70 + ADD = 71 + MINUS = 72 + DIV = 73 + MOD = 74 + IDIV = 75 + NOT_OP = 76 + OPEN_BRACE = 77 + CLOSE_BRACE = 78 + LESS_THAN = 79 + GREATER_THAN = 80 + EQUALS = 81 + GT_EQ = 82 + LT_EQ = 83 + NOT_EQ_1 = 84 + NOT_EQ_2 = 85 + AT = 86 + ARROW = 87 + ADD_ASSIGN = 88 + SUB_ASSIGN = 89 + MULT_ASSIGN = 90 + AT_ASSIGN = 91 + DIV_ASSIGN = 92 + MOD_ASSIGN = 93 + AND_ASSIGN = 94 + OR_ASSIGN = 95 + XOR_ASSIGN = 96 + LEFT_SHIFT_ASSIGN = 97 + RIGHT_SHIFT_ASSIGN = 98 + POWER_ASSIGN = 99 + IDIV_ASSIGN = 100 + SKIP_ = 101 + UNKNOWN_CHAR = 102 + + def __init__(self, input: TokenStream, output: TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.13.1") + self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) + self._predicates = None + + class Single_inputContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NEWLINE(self): + return self.getToken(Python3Parser.NEWLINE, 0) + + def simple_stmts(self): + return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0) + + def compound_stmt(self): + return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_single_input + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSingle_input"): + listener.enterSingle_input(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSingle_input"): + listener.exitSingle_input(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSingle_input"): + return visitor.visitSingle_input(self) + else: + return visitor.visitChildren(self) + + def single_input(self): + + localctx = Python3Parser.Single_inputContext(self, self._ctx, self.state) + self.enterRule(localctx, 0, self.RULE_single_input) + try: + self.state = 243 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 0, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 238 + self.match(Python3Parser.NEWLINE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 239 + self.simple_stmts() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 240 + self.compound_stmt() + self.state = 241 + self.match(Python3Parser.NEWLINE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class File_inputContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EOF(self): + return self.getToken(Python3Parser.EOF, 0) + + def NEWLINE(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.NEWLINE) + else: + return self.getToken(Python3Parser.NEWLINE, i) + + def stmt(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.StmtContext) + else: + return self.getTypedRuleContext(Python3Parser.StmtContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_file_input + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFile_input"): + listener.enterFile_input(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFile_input"): + listener.exitFile_input(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFile_input"): + return visitor.visitFile_input(self) + else: + return visitor.visitChildren(self) + + def file_input(self): + + localctx = Python3Parser.File_inputContext(self, self._ctx, self.state) + self.enterRule(localctx, 2, self.RULE_file_input) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 249 + self._errHandler.sync(self) + _la = self._input.LA(1) + while (((_la) & ~0x3f) == 0 and ((1 << _la) & 252271930291384088) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0): + self.state = 247 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [44]: + self.state = 245 + self.match(Python3Parser.NEWLINE) + pass + elif token in [3, 4, 8, 9, 10, 11, 13, 14, 15, 16, 20, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 45, 55, 56, 57, 64, 71, 72, 76, 77, 86]: + self.state = 246 + self.stmt() + pass + else: + raise NoViableAltException(self) + + self.state = 251 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 252 + self.match(Python3Parser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Eval_inputContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def testlist(self): + return self.getTypedRuleContext(Python3Parser.TestlistContext, 0) + + def EOF(self): + return self.getToken(Python3Parser.EOF, 0) + + def NEWLINE(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.NEWLINE) + else: + return self.getToken(Python3Parser.NEWLINE, i) + + def getRuleIndex(self): + return Python3Parser.RULE_eval_input + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEval_input"): + listener.enterEval_input(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEval_input"): + listener.exitEval_input(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEval_input"): + return visitor.visitEval_input(self) + else: + return visitor.visitChildren(self) + + def eval_input(self): + + localctx = Python3Parser.Eval_inputContext(self, self._ctx, self.state) + self.enterRule(localctx, 4, self.RULE_eval_input) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 254 + self.testlist() + self.state = 258 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 44: + self.state = 255 + self.match(Python3Parser.NEWLINE) + self.state = 260 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 261 + self.match(Python3Parser.EOF) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DecoratorContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def AT(self): + return self.getToken(Python3Parser.AT, 0) + + def dotted_name(self): + return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0) + + def NEWLINE(self): + return self.getToken(Python3Parser.NEWLINE, 0) + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def arglist(self): + return self.getTypedRuleContext(Python3Parser.ArglistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_decorator + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDecorator"): + listener.enterDecorator(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDecorator"): + listener.exitDecorator(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDecorator"): + return visitor.visitDecorator(self) + else: + return visitor.visitChildren(self) + + def decorator(self): + + localctx = Python3Parser.DecoratorContext(self, self._ctx, self.state) + self.enterRule(localctx, 6, self.RULE_decorator) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 263 + self.match(Python3Parser.AT) + self.state = 264 + self.dotted_name() + self.state = 270 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 57: + self.state = 265 + self.match(Python3Parser.OPEN_PAREN) + self.state = 267 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 266 + self.arglist() + + self.state = 269 + self.match(Python3Parser.CLOSE_PAREN) + + self.state = 272 + self.match(Python3Parser.NEWLINE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DecoratorsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def decorator(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.DecoratorContext) + else: + return self.getTypedRuleContext(Python3Parser.DecoratorContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_decorators + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDecorators"): + listener.enterDecorators(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDecorators"): + listener.exitDecorators(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDecorators"): + return visitor.visitDecorators(self) + else: + return visitor.visitChildren(self) + + def decorators(self): + + localctx = Python3Parser.DecoratorsContext(self, self._ctx, self.state) + self.enterRule(localctx, 8, self.RULE_decorators) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 275 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 274 + self.decorator() + self.state = 277 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la == 86): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DecoratedContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def decorators(self): + return self.getTypedRuleContext(Python3Parser.DecoratorsContext, 0) + + def classdef(self): + return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0) + + def funcdef(self): + return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0) + + def async_funcdef(self): + return self.getTypedRuleContext(Python3Parser.Async_funcdefContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_decorated + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDecorated"): + listener.enterDecorated(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDecorated"): + listener.exitDecorated(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDecorated"): + return visitor.visitDecorated(self) + else: + return visitor.visitChildren(self) + + def decorated(self): + + localctx = Python3Parser.DecoratedContext(self, self._ctx, self.state) + self.enterRule(localctx, 10, self.RULE_decorated) + try: + self.enterOuterAlt(localctx, 1) + self.state = 279 + self.decorators() + self.state = 283 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [13]: + self.state = 280 + self.classdef() + pass + elif token in [15]: + self.state = 281 + self.funcdef() + pass + elif token in [9]: + self.state = 282 + self.async_funcdef() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Async_funcdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ASYNC(self): + return self.getToken(Python3Parser.ASYNC, 0) + + def funcdef(self): + return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_async_funcdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAsync_funcdef"): + listener.enterAsync_funcdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAsync_funcdef"): + listener.exitAsync_funcdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAsync_funcdef"): + return visitor.visitAsync_funcdef(self) + else: + return visitor.visitChildren(self) + + def async_funcdef(self): + + localctx = Python3Parser.Async_funcdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 12, self.RULE_async_funcdef) + try: + self.enterOuterAlt(localctx, 1) + self.state = 285 + self.match(Python3Parser.ASYNC) + self.state = 286 + self.funcdef() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class FuncdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEF(self): + return self.getToken(Python3Parser.DEF, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def parameters(self): + return self.getTypedRuleContext(Python3Parser.ParametersContext, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def block(self): + return self.getTypedRuleContext(Python3Parser.BlockContext, 0) + + def ARROW(self): + return self.getToken(Python3Parser.ARROW, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_funcdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFuncdef"): + listener.enterFuncdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFuncdef"): + listener.exitFuncdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFuncdef"): + return visitor.visitFuncdef(self) + else: + return visitor.visitChildren(self) + + def funcdef(self): + + localctx = Python3Parser.FuncdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 14, self.RULE_funcdef) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 288 + self.match(Python3Parser.DEF) + self.state = 289 + self.name() + self.state = 290 + self.parameters() + self.state = 293 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 87: + self.state = 291 + self.match(Python3Parser.ARROW) + self.state = 292 + self.test() + + self.state = 295 + self.match(Python3Parser.COLON) + self.state = 296 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ParametersContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def typedargslist(self): + return self.getTypedRuleContext(Python3Parser.TypedargslistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_parameters + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterParameters"): + listener.enterParameters(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitParameters"): + listener.exitParameters(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitParameters"): + return visitor.visitParameters(self) + else: + return visitor.visitChildren(self) + + def parameters(self): + + localctx = Python3Parser.ParametersContext(self, self._ctx, self.state) + self.enterRule(localctx, 16, self.RULE_parameters) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 298 + self.match(Python3Parser.OPEN_PAREN) + self.state = 300 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0): + self.state = 299 + self.typedargslist() + + self.state = 302 + self.match(Python3Parser.CLOSE_PAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TypedargslistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def tfpdef(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TfpdefContext) + else: + return self.getTypedRuleContext(Python3Parser.TfpdefContext, i) + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def POWER(self): + return self.getToken(Python3Parser.POWER, 0) + + def ASSIGN(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ASSIGN) + else: + return self.getToken(Python3Parser.ASSIGN, i) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_typedargslist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTypedargslist"): + listener.enterTypedargslist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTypedargslist"): + listener.exitTypedargslist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTypedargslist"): + return visitor.visitTypedargslist(self) + else: + return visitor.visitChildren(self) + + def typedargslist(self): + + localctx = Python3Parser.TypedargslistContext(self, self._ctx, self.state) + self.enterRule(localctx, 18, self.RULE_typedargslist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 385 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [30, 40, 45]: + self.state = 304 + self.tfpdef() + self.state = 307 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 305 + self.match(Python3Parser.ASSIGN) + self.state = 306 + self.test() + + self.state = 317 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 12, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 309 + self.match(Python3Parser.COMMA) + self.state = 310 + self.tfpdef() + self.state = 313 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 311 + self.match(Python3Parser.ASSIGN) + self.state = 312 + self.test() + + self.state = 319 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 12, self._ctx) + + self.state = 353 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 320 + self.match(Python3Parser.COMMA) + self.state = 351 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [56]: + self.state = 321 + self.match(Python3Parser.STAR) + self.state = 323 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0): + self.state = 322 + self.tfpdef() + + self.state = 333 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 15, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 325 + self.match(Python3Parser.COMMA) + self.state = 326 + self.tfpdef() + self.state = 329 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 327 + self.match(Python3Parser.ASSIGN) + self.state = 328 + self.test() + + self.state = 335 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 15, self._ctx) + + self.state = 344 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 336 + self.match(Python3Parser.COMMA) + self.state = 342 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 337 + self.match(Python3Parser.POWER) + self.state = 338 + self.tfpdef() + self.state = 340 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 339 + self.match(Python3Parser.COMMA) + + pass + elif token in [62]: + self.state = 346 + self.match(Python3Parser.POWER) + self.state = 347 + self.tfpdef() + self.state = 349 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 348 + self.match(Python3Parser.COMMA) + + pass + elif token in [58]: + pass + else: + pass + + pass + elif token in [56]: + self.state = 355 + self.match(Python3Parser.STAR) + self.state = 357 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0): + self.state = 356 + self.tfpdef() + + self.state = 367 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 24, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 359 + self.match(Python3Parser.COMMA) + self.state = 360 + self.tfpdef() + self.state = 363 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 361 + self.match(Python3Parser.ASSIGN) + self.state = 362 + self.test() + + self.state = 369 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 24, self._ctx) + + self.state = 378 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 370 + self.match(Python3Parser.COMMA) + self.state = 376 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 371 + self.match(Python3Parser.POWER) + self.state = 372 + self.tfpdef() + self.state = 374 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 373 + self.match(Python3Parser.COMMA) + + pass + elif token in [62]: + self.state = 380 + self.match(Python3Parser.POWER) + self.state = 381 + self.tfpdef() + self.state = 383 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 382 + self.match(Python3Parser.COMMA) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TfpdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_tfpdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTfpdef"): + listener.enterTfpdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTfpdef"): + listener.exitTfpdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTfpdef"): + return visitor.visitTfpdef(self) + else: + return visitor.visitChildren(self) + + def tfpdef(self): + + localctx = Python3Parser.TfpdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 20, self.RULE_tfpdef) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 387 + self.name() + self.state = 390 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 60: + self.state = 388 + self.match(Python3Parser.COLON) + self.state = 389 + self.test() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VarargslistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def vfpdef(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.VfpdefContext) + else: + return self.getTypedRuleContext(Python3Parser.VfpdefContext, i) + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def POWER(self): + return self.getToken(Python3Parser.POWER, 0) + + def ASSIGN(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ASSIGN) + else: + return self.getToken(Python3Parser.ASSIGN, i) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_varargslist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVarargslist"): + listener.enterVarargslist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVarargslist"): + listener.exitVarargslist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVarargslist"): + return visitor.visitVarargslist(self) + else: + return visitor.visitChildren(self) + + def varargslist(self): + + localctx = Python3Parser.VarargslistContext(self, self._ctx, self.state) + self.enterRule(localctx, 22, self.RULE_varargslist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 473 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [30, 40, 45]: + self.state = 392 + self.vfpdef() + self.state = 395 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 393 + self.match(Python3Parser.ASSIGN) + self.state = 394 + self.test() + + self.state = 405 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 33, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 397 + self.match(Python3Parser.COMMA) + self.state = 398 + self.vfpdef() + self.state = 401 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 399 + self.match(Python3Parser.ASSIGN) + self.state = 400 + self.test() + + self.state = 407 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 33, self._ctx) + + self.state = 441 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 408 + self.match(Python3Parser.COMMA) + self.state = 439 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [56]: + self.state = 409 + self.match(Python3Parser.STAR) + self.state = 411 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0): + self.state = 410 + self.vfpdef() + + self.state = 421 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 36, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 413 + self.match(Python3Parser.COMMA) + self.state = 414 + self.vfpdef() + self.state = 417 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 415 + self.match(Python3Parser.ASSIGN) + self.state = 416 + self.test() + + self.state = 423 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 36, self._ctx) + + self.state = 432 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 424 + self.match(Python3Parser.COMMA) + self.state = 430 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 425 + self.match(Python3Parser.POWER) + self.state = 426 + self.vfpdef() + self.state = 428 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 427 + self.match(Python3Parser.COMMA) + + pass + elif token in [62]: + self.state = 434 + self.match(Python3Parser.POWER) + self.state = 435 + self.vfpdef() + self.state = 437 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 436 + self.match(Python3Parser.COMMA) + + pass + elif token in [60]: + pass + else: + pass + + pass + elif token in [56]: + self.state = 443 + self.match(Python3Parser.STAR) + self.state = 445 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0): + self.state = 444 + self.vfpdef() + + self.state = 455 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 45, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 447 + self.match(Python3Parser.COMMA) + self.state = 448 + self.vfpdef() + self.state = 451 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 449 + self.match(Python3Parser.ASSIGN) + self.state = 450 + self.test() + + self.state = 457 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 45, self._ctx) + + self.state = 466 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 458 + self.match(Python3Parser.COMMA) + self.state = 464 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 62: + self.state = 459 + self.match(Python3Parser.POWER) + self.state = 460 + self.vfpdef() + self.state = 462 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 461 + self.match(Python3Parser.COMMA) + + pass + elif token in [62]: + self.state = 468 + self.match(Python3Parser.POWER) + self.state = 469 + self.vfpdef() + self.state = 471 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 470 + self.match(Python3Parser.COMMA) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class VfpdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_vfpdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterVfpdef"): + listener.enterVfpdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitVfpdef"): + listener.exitVfpdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitVfpdef"): + return visitor.visitVfpdef(self) + else: + return visitor.visitChildren(self) + + def vfpdef(self): + + localctx = Python3Parser.VfpdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 24, self.RULE_vfpdef) + try: + self.enterOuterAlt(localctx, 1) + self.state = 475 + self.name() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def simple_stmts(self): + return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0) + + def compound_stmt(self): + return self.getTypedRuleContext(Python3Parser.Compound_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStmt"): + listener.enterStmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStmt"): + listener.exitStmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStmt"): + return visitor.visitStmt(self) + else: + return visitor.visitChildren(self) + + def stmt(self): + + localctx = Python3Parser.StmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 26, self.RULE_stmt) + try: + self.state = 479 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 51, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 477 + self.simple_stmts() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 478 + self.compound_stmt() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Simple_stmtsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def simple_stmt(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Simple_stmtContext) + else: + return self.getTypedRuleContext(Python3Parser.Simple_stmtContext, i) + + def NEWLINE(self): + return self.getToken(Python3Parser.NEWLINE, 0) + + def SEMI_COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.SEMI_COLON) + else: + return self.getToken(Python3Parser.SEMI_COLON, i) + + def getRuleIndex(self): + return Python3Parser.RULE_simple_stmts + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSimple_stmts"): + listener.enterSimple_stmts(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSimple_stmts"): + listener.exitSimple_stmts(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSimple_stmts"): + return visitor.visitSimple_stmts(self) + else: + return visitor.visitChildren(self) + + def simple_stmts(self): + + localctx = Python3Parser.Simple_stmtsContext(self, self._ctx, self.state) + self.enterRule(localctx, 28, self.RULE_simple_stmts) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 481 + self.simple_stmt() + self.state = 486 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 52, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 482 + self.match(Python3Parser.SEMI_COLON) + self.state = 483 + self.simple_stmt() + self.state = 488 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 52, self._ctx) + + self.state = 490 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 61: + self.state = 489 + self.match(Python3Parser.SEMI_COLON) + + self.state = 492 + self.match(Python3Parser.NEWLINE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Simple_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expr_stmt(self): + return self.getTypedRuleContext(Python3Parser.Expr_stmtContext, 0) + + def del_stmt(self): + return self.getTypedRuleContext(Python3Parser.Del_stmtContext, 0) + + def pass_stmt(self): + return self.getTypedRuleContext(Python3Parser.Pass_stmtContext, 0) + + def flow_stmt(self): + return self.getTypedRuleContext(Python3Parser.Flow_stmtContext, 0) + + def import_stmt(self): + return self.getTypedRuleContext(Python3Parser.Import_stmtContext, 0) + + def global_stmt(self): + return self.getTypedRuleContext(Python3Parser.Global_stmtContext, 0) + + def nonlocal_stmt(self): + return self.getTypedRuleContext(Python3Parser.Nonlocal_stmtContext, 0) + + def assert_stmt(self): + return self.getTypedRuleContext(Python3Parser.Assert_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_simple_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSimple_stmt"): + listener.enterSimple_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSimple_stmt"): + listener.exitSimple_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSimple_stmt"): + return visitor.visitSimple_stmt(self) + else: + return visitor.visitChildren(self) + + def simple_stmt(self): + + localctx = Python3Parser.Simple_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 30, self.RULE_simple_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 502 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]: + self.state = 494 + self.expr_stmt() + pass + elif token in [16]: + self.state = 495 + self.del_stmt() + pass + elif token in [35]: + self.state = 496 + self.pass_stmt() + pass + elif token in [11, 14, 36, 37, 43]: + self.state = 497 + self.flow_stmt() + pass + elif token in [23, 26]: + self.state = 498 + self.import_stmt() + pass + elif token in [24]: + self.state = 499 + self.global_stmt() + pass + elif token in [32]: + self.state = 500 + self.nonlocal_stmt() + pass + elif token in [8]: + self.state = 501 + self.assert_stmt() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Expr_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def testlist_star_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Testlist_star_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Testlist_star_exprContext, i) + + def annassign(self): + return self.getTypedRuleContext(Python3Parser.AnnassignContext, 0) + + def augassign(self): + return self.getTypedRuleContext(Python3Parser.AugassignContext, 0) + + def yield_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Yield_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Yield_exprContext, i) + + def testlist(self): + return self.getTypedRuleContext(Python3Parser.TestlistContext, 0) + + def ASSIGN(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ASSIGN) + else: + return self.getToken(Python3Parser.ASSIGN, i) + + def getRuleIndex(self): + return Python3Parser.RULE_expr_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExpr_stmt"): + listener.enterExpr_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExpr_stmt"): + listener.exitExpr_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpr_stmt"): + return visitor.visitExpr_stmt(self) + else: + return visitor.visitChildren(self) + + def expr_stmt(self): + + localctx = Python3Parser.Expr_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 32, self.RULE_expr_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 504 + self.testlist_star_expr() + self.state = 521 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [60]: + self.state = 505 + self.annassign() + pass + elif token in [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]: + self.state = 506 + self.augassign() + self.state = 509 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [43]: + self.state = 507 + self.yield_expr() + pass + elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 508 + self.testlist() + pass + else: + raise NoViableAltException(self) + + pass + elif token in [44, 61, 63]: + self.state = 518 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 63: + self.state = 511 + self.match(Python3Parser.ASSIGN) + self.state = 514 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [43]: + self.state = 512 + self.yield_expr() + pass + elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]: + self.state = 513 + self.testlist_star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 520 + self._errHandler.sync(self) + _la = self._input.LA(1) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AnnassignContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def ASSIGN(self): + return self.getToken(Python3Parser.ASSIGN, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_annassign + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnnassign"): + listener.enterAnnassign(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnnassign"): + listener.exitAnnassign(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnnassign"): + return visitor.visitAnnassign(self) + else: + return visitor.visitChildren(self) + + def annassign(self): + + localctx = Python3Parser.AnnassignContext(self, self._ctx, self.state) + self.enterRule(localctx, 34, self.RULE_annassign) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 523 + self.match(Python3Parser.COLON) + self.state = 524 + self.test() + self.state = 527 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 63: + self.state = 525 + self.match(Python3Parser.ASSIGN) + self.state = 526 + self.test() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Testlist_star_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def star_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Star_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Star_exprContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_testlist_star_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTestlist_star_expr"): + listener.enterTestlist_star_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTestlist_star_expr"): + listener.exitTestlist_star_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTestlist_star_expr"): + return visitor.visitTestlist_star_expr(self) + else: + return visitor.visitChildren(self) + + def testlist_star_expr(self): + + localctx = Python3Parser.Testlist_star_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 36, self.RULE_testlist_star_expr) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 531 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 529 + self.test() + pass + elif token in [56]: + self.state = 530 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 540 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 62, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 533 + self.match(Python3Parser.COMMA) + self.state = 536 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 534 + self.test() + pass + elif token in [56]: + self.state = 535 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 542 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 62, self._ctx) + + self.state = 544 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 543 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AugassignContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ADD_ASSIGN(self): + return self.getToken(Python3Parser.ADD_ASSIGN, 0) + + def SUB_ASSIGN(self): + return self.getToken(Python3Parser.SUB_ASSIGN, 0) + + def MULT_ASSIGN(self): + return self.getToken(Python3Parser.MULT_ASSIGN, 0) + + def AT_ASSIGN(self): + return self.getToken(Python3Parser.AT_ASSIGN, 0) + + def DIV_ASSIGN(self): + return self.getToken(Python3Parser.DIV_ASSIGN, 0) + + def MOD_ASSIGN(self): + return self.getToken(Python3Parser.MOD_ASSIGN, 0) + + def AND_ASSIGN(self): + return self.getToken(Python3Parser.AND_ASSIGN, 0) + + def OR_ASSIGN(self): + return self.getToken(Python3Parser.OR_ASSIGN, 0) + + def XOR_ASSIGN(self): + return self.getToken(Python3Parser.XOR_ASSIGN, 0) + + def LEFT_SHIFT_ASSIGN(self): + return self.getToken(Python3Parser.LEFT_SHIFT_ASSIGN, 0) + + def RIGHT_SHIFT_ASSIGN(self): + return self.getToken(Python3Parser.RIGHT_SHIFT_ASSIGN, 0) + + def POWER_ASSIGN(self): + return self.getToken(Python3Parser.POWER_ASSIGN, 0) + + def IDIV_ASSIGN(self): + return self.getToken(Python3Parser.IDIV_ASSIGN, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_augassign + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAugassign"): + listener.enterAugassign(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAugassign"): + listener.exitAugassign(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAugassign"): + return visitor.visitAugassign(self) + else: + return visitor.visitChildren(self) + + def augassign(self): + + localctx = Python3Parser.AugassignContext(self, self._ctx, self.state) + self.enterRule(localctx, 38, self.RULE_augassign) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 546 + _la = self._input.LA(1) + if not (((((_la - 88)) & ~0x3f) == 0 and ((1 << (_la - 88)) & 8191) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Del_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def DEL(self): + return self.getToken(Python3Parser.DEL, 0) + + def exprlist(self): + return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_del_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDel_stmt"): + listener.enterDel_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDel_stmt"): + listener.exitDel_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDel_stmt"): + return visitor.visitDel_stmt(self) + else: + return visitor.visitChildren(self) + + def del_stmt(self): + + localctx = Python3Parser.Del_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 40, self.RULE_del_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 548 + self.match(Python3Parser.DEL) + self.state = 549 + self.exprlist() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Pass_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def PASS(self): + return self.getToken(Python3Parser.PASS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_pass_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPass_stmt"): + listener.enterPass_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPass_stmt"): + listener.exitPass_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPass_stmt"): + return visitor.visitPass_stmt(self) + else: + return visitor.visitChildren(self) + + def pass_stmt(self): + + localctx = Python3Parser.Pass_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 42, self.RULE_pass_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 551 + self.match(Python3Parser.PASS) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Flow_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def break_stmt(self): + return self.getTypedRuleContext(Python3Parser.Break_stmtContext, 0) + + def continue_stmt(self): + return self.getTypedRuleContext(Python3Parser.Continue_stmtContext, 0) + + def return_stmt(self): + return self.getTypedRuleContext(Python3Parser.Return_stmtContext, 0) + + def raise_stmt(self): + return self.getTypedRuleContext(Python3Parser.Raise_stmtContext, 0) + + def yield_stmt(self): + return self.getTypedRuleContext(Python3Parser.Yield_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_flow_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFlow_stmt"): + listener.enterFlow_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFlow_stmt"): + listener.exitFlow_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFlow_stmt"): + return visitor.visitFlow_stmt(self) + else: + return visitor.visitChildren(self) + + def flow_stmt(self): + + localctx = Python3Parser.Flow_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 44, self.RULE_flow_stmt) + try: + self.state = 558 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [11]: + self.enterOuterAlt(localctx, 1) + self.state = 553 + self.break_stmt() + pass + elif token in [14]: + self.enterOuterAlt(localctx, 2) + self.state = 554 + self.continue_stmt() + pass + elif token in [37]: + self.enterOuterAlt(localctx, 3) + self.state = 555 + self.return_stmt() + pass + elif token in [36]: + self.enterOuterAlt(localctx, 4) + self.state = 556 + self.raise_stmt() + pass + elif token in [43]: + self.enterOuterAlt(localctx, 5) + self.state = 557 + self.yield_stmt() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Break_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def BREAK(self): + return self.getToken(Python3Parser.BREAK, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_break_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBreak_stmt"): + listener.enterBreak_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBreak_stmt"): + listener.exitBreak_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBreak_stmt"): + return visitor.visitBreak_stmt(self) + else: + return visitor.visitChildren(self) + + def break_stmt(self): + + localctx = Python3Parser.Break_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 46, self.RULE_break_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 560 + self.match(Python3Parser.BREAK) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Continue_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CONTINUE(self): + return self.getToken(Python3Parser.CONTINUE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_continue_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterContinue_stmt"): + listener.enterContinue_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitContinue_stmt"): + listener.exitContinue_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitContinue_stmt"): + return visitor.visitContinue_stmt(self) + else: + return visitor.visitChildren(self) + + def continue_stmt(self): + + localctx = Python3Parser.Continue_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 48, self.RULE_continue_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 562 + self.match(Python3Parser.CONTINUE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Return_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def RETURN(self): + return self.getToken(Python3Parser.RETURN, 0) + + def testlist(self): + return self.getTypedRuleContext(Python3Parser.TestlistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_return_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterReturn_stmt"): + listener.enterReturn_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitReturn_stmt"): + listener.exitReturn_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitReturn_stmt"): + return visitor.visitReturn_stmt(self) + else: + return visitor.visitChildren(self) + + def return_stmt(self): + + localctx = Python3Parser.Return_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 50, self.RULE_return_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 564 + self.match(Python3Parser.RETURN) + self.state = 566 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 565 + self.testlist() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Yield_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def yield_expr(self): + return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_yield_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterYield_stmt"): + listener.enterYield_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitYield_stmt"): + listener.exitYield_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitYield_stmt"): + return visitor.visitYield_stmt(self) + else: + return visitor.visitChildren(self) + + def yield_stmt(self): + + localctx = Python3Parser.Yield_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 52, self.RULE_yield_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 568 + self.yield_expr() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Raise_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def RAISE(self): + return self.getToken(Python3Parser.RAISE, 0) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def FROM(self): + return self.getToken(Python3Parser.FROM, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_raise_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterRaise_stmt"): + listener.enterRaise_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitRaise_stmt"): + listener.exitRaise_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitRaise_stmt"): + return visitor.visitRaise_stmt(self) + else: + return visitor.visitChildren(self) + + def raise_stmt(self): + + localctx = Python3Parser.Raise_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 54, self.RULE_raise_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 570 + self.match(Python3Parser.RAISE) + self.state = 576 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 571 + self.test() + self.state = 574 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 23: + self.state = 572 + self.match(Python3Parser.FROM) + self.state = 573 + self.test() + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Import_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def import_name(self): + return self.getTypedRuleContext(Python3Parser.Import_nameContext, 0) + + def import_from(self): + return self.getTypedRuleContext(Python3Parser.Import_fromContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_import_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImport_stmt"): + listener.enterImport_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImport_stmt"): + listener.exitImport_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImport_stmt"): + return visitor.visitImport_stmt(self) + else: + return visitor.visitChildren(self) + + def import_stmt(self): + + localctx = Python3Parser.Import_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 56, self.RULE_import_stmt) + try: + self.state = 580 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [26]: + self.enterOuterAlt(localctx, 1) + self.state = 578 + self.import_name() + pass + elif token in [23]: + self.enterOuterAlt(localctx, 2) + self.state = 579 + self.import_from() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Import_nameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IMPORT(self): + return self.getToken(Python3Parser.IMPORT, 0) + + def dotted_as_names(self): + return self.getTypedRuleContext(Python3Parser.Dotted_as_namesContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_import_name + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImport_name"): + listener.enterImport_name(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImport_name"): + listener.exitImport_name(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImport_name"): + return visitor.visitImport_name(self) + else: + return visitor.visitChildren(self) + + def import_name(self): + + localctx = Python3Parser.Import_nameContext(self, self._ctx, self.state) + self.enterRule(localctx, 58, self.RULE_import_name) + try: + self.enterOuterAlt(localctx, 1) + self.state = 582 + self.match(Python3Parser.IMPORT) + self.state = 583 + self.dotted_as_names() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Import_fromContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FROM(self): + return self.getToken(Python3Parser.FROM, 0) + + def IMPORT(self): + return self.getToken(Python3Parser.IMPORT, 0) + + def dotted_name(self): + return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0) + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def import_as_names(self): + return self.getTypedRuleContext(Python3Parser.Import_as_namesContext, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.DOT) + else: + return self.getToken(Python3Parser.DOT, i) + + def ELLIPSIS(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ELLIPSIS) + else: + return self.getToken(Python3Parser.ELLIPSIS, i) + + def getRuleIndex(self): + return Python3Parser.RULE_import_from + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImport_from"): + listener.enterImport_from(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImport_from"): + listener.exitImport_from(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImport_from"): + return visitor.visitImport_from(self) + else: + return visitor.visitChildren(self) + + def import_from(self): + + localctx = Python3Parser.Import_fromContext(self, self._ctx, self.state) + self.enterRule(localctx, 60, self.RULE_import_from) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 585 + self.match(Python3Parser.FROM) + self.state = 598 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 71, self._ctx) + if la_ == 1: + self.state = 589 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 54 or _la == 55: + self.state = 586 + _la = self._input.LA(1) + if not (_la == 54 or _la == 55): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 591 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 592 + self.dotted_name() + pass + + elif la_ == 2: + self.state = 594 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 593 + _la = self._input.LA(1) + if not (_la == 54 or _la == 55): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 596 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la == 54 or _la == 55): + break + + pass + + self.state = 600 + self.match(Python3Parser.IMPORT) + self.state = 607 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [56]: + self.state = 601 + self.match(Python3Parser.STAR) + pass + elif token in [57]: + self.state = 602 + self.match(Python3Parser.OPEN_PAREN) + self.state = 603 + self.import_as_names() + self.state = 604 + self.match(Python3Parser.CLOSE_PAREN) + pass + elif token in [30, 40, 45]: + self.state = 606 + self.import_as_names() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Import_as_nameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.NameContext) + else: + return self.getTypedRuleContext(Python3Parser.NameContext, i) + + def AS(self): + return self.getToken(Python3Parser.AS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_import_as_name + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImport_as_name"): + listener.enterImport_as_name(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImport_as_name"): + listener.exitImport_as_name(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImport_as_name"): + return visitor.visitImport_as_name(self) + else: + return visitor.visitChildren(self) + + def import_as_name(self): + + localctx = Python3Parser.Import_as_nameContext(self, self._ctx, self.state) + self.enterRule(localctx, 62, self.RULE_import_as_name) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 609 + self.name() + self.state = 612 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 610 + self.match(Python3Parser.AS) + self.state = 611 + self.name() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Dotted_as_nameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def dotted_name(self): + return self.getTypedRuleContext(Python3Parser.Dotted_nameContext, 0) + + def AS(self): + return self.getToken(Python3Parser.AS, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_dotted_as_name + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDotted_as_name"): + listener.enterDotted_as_name(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDotted_as_name"): + listener.exitDotted_as_name(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDotted_as_name"): + return visitor.visitDotted_as_name(self) + else: + return visitor.visitChildren(self) + + def dotted_as_name(self): + + localctx = Python3Parser.Dotted_as_nameContext(self, self._ctx, self.state) + self.enterRule(localctx, 64, self.RULE_dotted_as_name) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 614 + self.dotted_name() + self.state = 617 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 615 + self.match(Python3Parser.AS) + self.state = 616 + self.name() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Import_as_namesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def import_as_name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Import_as_nameContext) + else: + return self.getTypedRuleContext(Python3Parser.Import_as_nameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_import_as_names + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImport_as_names"): + listener.enterImport_as_names(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImport_as_names"): + listener.exitImport_as_names(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImport_as_names"): + return visitor.visitImport_as_names(self) + else: + return visitor.visitChildren(self) + + def import_as_names(self): + + localctx = Python3Parser.Import_as_namesContext(self, self._ctx, self.state) + self.enterRule(localctx, 66, self.RULE_import_as_names) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 619 + self.import_as_name() + self.state = 624 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 75, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 620 + self.match(Python3Parser.COMMA) + self.state = 621 + self.import_as_name() + self.state = 626 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 75, self._ctx) + + self.state = 628 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 627 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Dotted_as_namesContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def dotted_as_name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Dotted_as_nameContext) + else: + return self.getTypedRuleContext(Python3Parser.Dotted_as_nameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_dotted_as_names + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDotted_as_names"): + listener.enterDotted_as_names(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDotted_as_names"): + listener.exitDotted_as_names(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDotted_as_names"): + return visitor.visitDotted_as_names(self) + else: + return visitor.visitChildren(self) + + def dotted_as_names(self): + + localctx = Python3Parser.Dotted_as_namesContext(self, self._ctx, self.state) + self.enterRule(localctx, 68, self.RULE_dotted_as_names) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 630 + self.dotted_as_name() + self.state = 635 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 59: + self.state = 631 + self.match(Python3Parser.COMMA) + self.state = 632 + self.dotted_as_name() + self.state = 637 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Dotted_nameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.NameContext) + else: + return self.getTypedRuleContext(Python3Parser.NameContext, i) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.DOT) + else: + return self.getToken(Python3Parser.DOT, i) + + def getRuleIndex(self): + return Python3Parser.RULE_dotted_name + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDotted_name"): + listener.enterDotted_name(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDotted_name"): + listener.exitDotted_name(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDotted_name"): + return visitor.visitDotted_name(self) + else: + return visitor.visitChildren(self) + + def dotted_name(self): + + localctx = Python3Parser.Dotted_nameContext(self, self._ctx, self.state) + self.enterRule(localctx, 70, self.RULE_dotted_name) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 638 + self.name() + self.state = 643 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 54: + self.state = 639 + self.match(Python3Parser.DOT) + self.state = 640 + self.name() + self.state = 645 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Global_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def GLOBAL(self): + return self.getToken(Python3Parser.GLOBAL, 0) + + def name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.NameContext) + else: + return self.getTypedRuleContext(Python3Parser.NameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_global_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterGlobal_stmt"): + listener.enterGlobal_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitGlobal_stmt"): + listener.exitGlobal_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitGlobal_stmt"): + return visitor.visitGlobal_stmt(self) + else: + return visitor.visitChildren(self) + + def global_stmt(self): + + localctx = Python3Parser.Global_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 72, self.RULE_global_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 646 + self.match(Python3Parser.GLOBAL) + self.state = 647 + self.name() + self.state = 652 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 59: + self.state = 648 + self.match(Python3Parser.COMMA) + self.state = 649 + self.name() + self.state = 654 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Nonlocal_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NONLOCAL(self): + return self.getToken(Python3Parser.NONLOCAL, 0) + + def name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.NameContext) + else: + return self.getTypedRuleContext(Python3Parser.NameContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_nonlocal_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNonlocal_stmt"): + listener.enterNonlocal_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNonlocal_stmt"): + listener.exitNonlocal_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNonlocal_stmt"): + return visitor.visitNonlocal_stmt(self) + else: + return visitor.visitChildren(self) + + def nonlocal_stmt(self): + + localctx = Python3Parser.Nonlocal_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 74, self.RULE_nonlocal_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 655 + self.match(Python3Parser.NONLOCAL) + self.state = 656 + self.name() + self.state = 661 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 59: + self.state = 657 + self.match(Python3Parser.COMMA) + self.state = 658 + self.name() + self.state = 663 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Assert_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ASSERT(self): + return self.getToken(Python3Parser.ASSERT, 0) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COMMA(self): + return self.getToken(Python3Parser.COMMA, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_assert_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAssert_stmt"): + listener.enterAssert_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAssert_stmt"): + listener.exitAssert_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAssert_stmt"): + return visitor.visitAssert_stmt(self) + else: + return visitor.visitChildren(self) + + def assert_stmt(self): + + localctx = Python3Parser.Assert_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 76, self.RULE_assert_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 664 + self.match(Python3Parser.ASSERT) + self.state = 665 + self.test() + self.state = 668 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 666 + self.match(Python3Parser.COMMA) + self.state = 667 + self.test() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Compound_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def if_stmt(self): + return self.getTypedRuleContext(Python3Parser.If_stmtContext, 0) + + def while_stmt(self): + return self.getTypedRuleContext(Python3Parser.While_stmtContext, 0) + + def for_stmt(self): + return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0) + + def try_stmt(self): + return self.getTypedRuleContext(Python3Parser.Try_stmtContext, 0) + + def with_stmt(self): + return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0) + + def funcdef(self): + return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0) + + def classdef(self): + return self.getTypedRuleContext(Python3Parser.ClassdefContext, 0) + + def decorated(self): + return self.getTypedRuleContext(Python3Parser.DecoratedContext, 0) + + def async_stmt(self): + return self.getTypedRuleContext(Python3Parser.Async_stmtContext, 0) + + def match_stmt(self): + return self.getTypedRuleContext(Python3Parser.Match_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_compound_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCompound_stmt"): + listener.enterCompound_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCompound_stmt"): + listener.exitCompound_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCompound_stmt"): + return visitor.visitCompound_stmt(self) + else: + return visitor.visitChildren(self) + + def compound_stmt(self): + + localctx = Python3Parser.Compound_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 78, self.RULE_compound_stmt) + try: + self.state = 680 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [25]: + self.enterOuterAlt(localctx, 1) + self.state = 670 + self.if_stmt() + pass + elif token in [41]: + self.enterOuterAlt(localctx, 2) + self.state = 671 + self.while_stmt() + pass + elif token in [22]: + self.enterOuterAlt(localctx, 3) + self.state = 672 + self.for_stmt() + pass + elif token in [39]: + self.enterOuterAlt(localctx, 4) + self.state = 673 + self.try_stmt() + pass + elif token in [42]: + self.enterOuterAlt(localctx, 5) + self.state = 674 + self.with_stmt() + pass + elif token in [15]: + self.enterOuterAlt(localctx, 6) + self.state = 675 + self.funcdef() + pass + elif token in [13]: + self.enterOuterAlt(localctx, 7) + self.state = 676 + self.classdef() + pass + elif token in [86]: + self.enterOuterAlt(localctx, 8) + self.state = 677 + self.decorated() + pass + elif token in [9]: + self.enterOuterAlt(localctx, 9) + self.state = 678 + self.async_stmt() + pass + elif token in [30]: + self.enterOuterAlt(localctx, 10) + self.state = 679 + self.match_stmt() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Async_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def ASYNC(self): + return self.getToken(Python3Parser.ASYNC, 0) + + def funcdef(self): + return self.getTypedRuleContext(Python3Parser.FuncdefContext, 0) + + def with_stmt(self): + return self.getTypedRuleContext(Python3Parser.With_stmtContext, 0) + + def for_stmt(self): + return self.getTypedRuleContext(Python3Parser.For_stmtContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_async_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAsync_stmt"): + listener.enterAsync_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAsync_stmt"): + listener.exitAsync_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAsync_stmt"): + return visitor.visitAsync_stmt(self) + else: + return visitor.visitChildren(self) + + def async_stmt(self): + + localctx = Python3Parser.Async_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 80, self.RULE_async_stmt) + try: + self.enterOuterAlt(localctx, 1) + self.state = 682 + self.match(Python3Parser.ASYNC) + self.state = 686 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [15]: + self.state = 683 + self.funcdef() + pass + elif token in [42]: + self.state = 684 + self.with_stmt() + pass + elif token in [22]: + self.state = 685 + self.for_stmt() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class If_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Python3Parser.IF, 0) + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COLON) + else: + return self.getToken(Python3Parser.COLON, i) + + def block(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.BlockContext) + else: + return self.getTypedRuleContext(Python3Parser.BlockContext, i) + + def ELIF(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ELIF) + else: + return self.getToken(Python3Parser.ELIF, i) + + def ELSE(self): + return self.getToken(Python3Parser.ELSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_if_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterIf_stmt"): + listener.enterIf_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitIf_stmt"): + listener.exitIf_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitIf_stmt"): + return visitor.visitIf_stmt(self) + else: + return visitor.visitChildren(self) + + def if_stmt(self): + + localctx = Python3Parser.If_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 82, self.RULE_if_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 688 + self.match(Python3Parser.IF) + self.state = 689 + self.test() + self.state = 690 + self.match(Python3Parser.COLON) + self.state = 691 + self.block() + self.state = 699 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 17: + self.state = 692 + self.match(Python3Parser.ELIF) + self.state = 693 + self.test() + self.state = 694 + self.match(Python3Parser.COLON) + self.state = 695 + self.block() + self.state = 701 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 705 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 18: + self.state = 702 + self.match(Python3Parser.ELSE) + self.state = 703 + self.match(Python3Parser.COLON) + self.state = 704 + self.block() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class While_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def WHILE(self): + return self.getToken(Python3Parser.WHILE, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COLON) + else: + return self.getToken(Python3Parser.COLON, i) + + def block(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.BlockContext) + else: + return self.getTypedRuleContext(Python3Parser.BlockContext, i) + + def ELSE(self): + return self.getToken(Python3Parser.ELSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_while_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWhile_stmt"): + listener.enterWhile_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWhile_stmt"): + listener.exitWhile_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWhile_stmt"): + return visitor.visitWhile_stmt(self) + else: + return visitor.visitChildren(self) + + def while_stmt(self): + + localctx = Python3Parser.While_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 84, self.RULE_while_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 707 + self.match(Python3Parser.WHILE) + self.state = 708 + self.test() + self.state = 709 + self.match(Python3Parser.COLON) + self.state = 710 + self.block() + self.state = 714 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 18: + self.state = 711 + self.match(Python3Parser.ELSE) + self.state = 712 + self.match(Python3Parser.COLON) + self.state = 713 + self.block() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class For_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Python3Parser.FOR, 0) + + def exprlist(self): + return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0) + + def IN(self): + return self.getToken(Python3Parser.IN, 0) + + def testlist(self): + return self.getTypedRuleContext(Python3Parser.TestlistContext, 0) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COLON) + else: + return self.getToken(Python3Parser.COLON, i) + + def block(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.BlockContext) + else: + return self.getTypedRuleContext(Python3Parser.BlockContext, i) + + def ELSE(self): + return self.getToken(Python3Parser.ELSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_for_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterFor_stmt"): + listener.enterFor_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitFor_stmt"): + listener.exitFor_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitFor_stmt"): + return visitor.visitFor_stmt(self) + else: + return visitor.visitChildren(self) + + def for_stmt(self): + + localctx = Python3Parser.For_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 86, self.RULE_for_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 716 + self.match(Python3Parser.FOR) + self.state = 717 + self.exprlist() + self.state = 718 + self.match(Python3Parser.IN) + self.state = 719 + self.testlist() + self.state = 720 + self.match(Python3Parser.COLON) + self.state = 721 + self.block() + self.state = 725 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 18: + self.state = 722 + self.match(Python3Parser.ELSE) + self.state = 723 + self.match(Python3Parser.COLON) + self.state = 724 + self.block() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Try_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def TRY(self): + return self.getToken(Python3Parser.TRY, 0) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COLON) + else: + return self.getToken(Python3Parser.COLON, i) + + def block(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.BlockContext) + else: + return self.getTypedRuleContext(Python3Parser.BlockContext, i) + + def FINALLY(self): + return self.getToken(Python3Parser.FINALLY, 0) + + def except_clause(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Except_clauseContext) + else: + return self.getTypedRuleContext(Python3Parser.Except_clauseContext, i) + + def ELSE(self): + return self.getToken(Python3Parser.ELSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_try_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTry_stmt"): + listener.enterTry_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTry_stmt"): + listener.exitTry_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTry_stmt"): + return visitor.visitTry_stmt(self) + else: + return visitor.visitChildren(self) + + def try_stmt(self): + + localctx = Python3Parser.Try_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 88, self.RULE_try_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 727 + self.match(Python3Parser.TRY) + self.state = 728 + self.match(Python3Parser.COLON) + self.state = 729 + self.block() + self.state = 751 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [19]: + self.state = 734 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 730 + self.except_clause() + self.state = 731 + self.match(Python3Parser.COLON) + self.state = 732 + self.block() + self.state = 736 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la == 19): + break + + self.state = 741 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 18: + self.state = 738 + self.match(Python3Parser.ELSE) + self.state = 739 + self.match(Python3Parser.COLON) + self.state = 740 + self.block() + + self.state = 746 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 21: + self.state = 743 + self.match(Python3Parser.FINALLY) + self.state = 744 + self.match(Python3Parser.COLON) + self.state = 745 + self.block() + + pass + elif token in [21]: + self.state = 748 + self.match(Python3Parser.FINALLY) + self.state = 749 + self.match(Python3Parser.COLON) + self.state = 750 + self.block() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class With_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def WITH(self): + return self.getToken(Python3Parser.WITH, 0) + + def with_item(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.With_itemContext) + else: + return self.getTypedRuleContext(Python3Parser.With_itemContext, i) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def block(self): + return self.getTypedRuleContext(Python3Parser.BlockContext, 0) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_with_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWith_stmt"): + listener.enterWith_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWith_stmt"): + listener.exitWith_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWith_stmt"): + return visitor.visitWith_stmt(self) + else: + return visitor.visitChildren(self) + + def with_stmt(self): + + localctx = Python3Parser.With_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 90, self.RULE_with_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 753 + self.match(Python3Parser.WITH) + self.state = 754 + self.with_item() + self.state = 759 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 59: + self.state = 755 + self.match(Python3Parser.COMMA) + self.state = 756 + self.with_item() + self.state = 761 + self._errHandler.sync(self) + _la = self._input.LA(1) + + self.state = 762 + self.match(Python3Parser.COLON) + self.state = 763 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class With_itemContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def AS(self): + return self.getToken(Python3Parser.AS, 0) + + def expr(self): + return self.getTypedRuleContext(Python3Parser.ExprContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_with_item + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWith_item"): + listener.enterWith_item(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWith_item"): + listener.exitWith_item(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWith_item"): + return visitor.visitWith_item(self) + else: + return visitor.visitChildren(self) + + def with_item(self): + + localctx = Python3Parser.With_itemContext(self, self._ctx, self.state) + self.enterRule(localctx, 92, self.RULE_with_item) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 765 + self.test() + self.state = 768 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 766 + self.match(Python3Parser.AS) + self.state = 767 + self.expr(0) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Except_clauseContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def EXCEPT(self): + return self.getToken(Python3Parser.EXCEPT, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def AS(self): + return self.getToken(Python3Parser.AS, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_except_clause + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExcept_clause"): + listener.enterExcept_clause(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExcept_clause"): + listener.exitExcept_clause(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExcept_clause"): + return visitor.visitExcept_clause(self) + else: + return visitor.visitChildren(self) + + def except_clause(self): + + localctx = Python3Parser.Except_clauseContext(self, self._ctx, self.state) + self.enterRule(localctx, 94, self.RULE_except_clause) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 770 + self.match(Python3Parser.EXCEPT) + self.state = 776 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 771 + self.test() + self.state = 774 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 7: + self.state = 772 + self.match(Python3Parser.AS) + self.state = 773 + self.name() + + + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class BlockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def simple_stmts(self): + return self.getTypedRuleContext(Python3Parser.Simple_stmtsContext, 0) + + def NEWLINE(self): + return self.getToken(Python3Parser.NEWLINE, 0) + + def INDENT(self): + return self.getToken(Python3Parser.INDENT, 0) + + def DEDENT(self): + return self.getToken(Python3Parser.DEDENT, 0) + + def stmt(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.StmtContext) + else: + return self.getTypedRuleContext(Python3Parser.StmtContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_block + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterBlock"): + listener.enterBlock(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitBlock"): + listener.exitBlock(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitBlock"): + return visitor.visitBlock(self) + else: + return visitor.visitChildren(self) + + def block(self): + + localctx = Python3Parser.BlockContext(self, self._ctx, self.state) + self.enterRule(localctx, 96, self.RULE_block) + self._la = 0 # Token type + try: + self.state = 788 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 8, 10, 11, 14, 16, 20, 23, 24, 26, 29, 30, 31, 32, 33, 35, 36, 37, 38, 40, 43, 45, 55, + 56, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 1) + self.state = 778 + self.simple_stmts() + pass + elif token in [44]: + self.enterOuterAlt(localctx, 2) + self.state = 779 + self.match(Python3Parser.NEWLINE) + self.state = 780 + self.match(Python3Parser.INDENT) + self.state = 782 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 781 + self.stmt() + self.state = 784 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252254338105339672) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 4206977) != 0)): + break + + self.state = 786 + self.match(Python3Parser.DEDENT) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Match_stmtContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def MATCH(self): + return self.getToken(Python3Parser.MATCH, 0) + + def subject_expr(self): + return self.getTypedRuleContext(Python3Parser.Subject_exprContext, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def NEWLINE(self): + return self.getToken(Python3Parser.NEWLINE, 0) + + def INDENT(self): + return self.getToken(Python3Parser.INDENT, 0) + + def DEDENT(self): + return self.getToken(Python3Parser.DEDENT, 0) + + def case_block(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Case_blockContext) + else: + return self.getTypedRuleContext(Python3Parser.Case_blockContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_match_stmt + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMatch_stmt"): + listener.enterMatch_stmt(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMatch_stmt"): + listener.exitMatch_stmt(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMatch_stmt"): + return visitor.visitMatch_stmt(self) + else: + return visitor.visitChildren(self) + + def match_stmt(self): + + localctx = Python3Parser.Match_stmtContext(self, self._ctx, self.state) + self.enterRule(localctx, 98, self.RULE_match_stmt) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 790 + self.match(Python3Parser.MATCH) + self.state = 791 + self.subject_expr() + self.state = 792 + self.match(Python3Parser.COLON) + self.state = 793 + self.match(Python3Parser.NEWLINE) + self.state = 794 + self.match(Python3Parser.INDENT) + self.state = 796 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 795 + self.case_block() + self.state = 798 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la == 12): + break + + self.state = 800 + self.match(Python3Parser.DEDENT) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Subject_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def star_named_expression(self): + return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, 0) + + def COMMA(self): + return self.getToken(Python3Parser.COMMA, 0) + + def star_named_expressions(self): + return self.getTypedRuleContext(Python3Parser.Star_named_expressionsContext, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_subject_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSubject_expr"): + listener.enterSubject_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSubject_expr"): + listener.exitSubject_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSubject_expr"): + return visitor.visitSubject_expr(self) + else: + return visitor.visitChildren(self) + + def subject_expr(self): + + localctx = Python3Parser.Subject_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 100, self.RULE_subject_expr) + self._la = 0 # Token type + try: + self.state = 808 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 100, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 802 + self.star_named_expression() + self.state = 803 + self.match(Python3Parser.COMMA) + self.state = 805 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 804 + self.star_named_expressions() + + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 807 + self.test() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Star_named_expressionsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def star_named_expression(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Star_named_expressionContext) + else: + return self.getTypedRuleContext(Python3Parser.Star_named_expressionContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_star_named_expressions + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStar_named_expressions"): + listener.enterStar_named_expressions(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStar_named_expressions"): + listener.exitStar_named_expressions(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStar_named_expressions"): + return visitor.visitStar_named_expressions(self) + else: + return visitor.visitChildren(self) + + def star_named_expressions(self): + + localctx = Python3Parser.Star_named_expressionsContext(self, self._ctx, self.state) + self.enterRule(localctx, 102, self.RULE_star_named_expressions) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 810 + self.match(Python3Parser.COMMA) + self.state = 812 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 811 + self.star_named_expression() + self.state = 814 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0)): + break + + self.state = 817 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 816 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Star_named_expressionContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def expr(self): + return self.getTypedRuleContext(Python3Parser.ExprContext, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_star_named_expression + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStar_named_expression"): + listener.enterStar_named_expression(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStar_named_expression"): + listener.exitStar_named_expression(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStar_named_expression"): + return visitor.visitStar_named_expression(self) + else: + return visitor.visitChildren(self) + + def star_named_expression(self): + + localctx = Python3Parser.Star_named_expressionContext(self, self._ctx, self.state) + self.enterRule(localctx, 104, self.RULE_star_named_expression) + try: + self.state = 822 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [56]: + self.enterOuterAlt(localctx, 1) + self.state = 819 + self.match(Python3Parser.STAR) + self.state = 820 + self.expr(0) + pass + elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 2) + self.state = 821 + self.test() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Case_blockContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CASE(self): + return self.getToken(Python3Parser.CASE, 0) + + def patterns(self): + return self.getTypedRuleContext(Python3Parser.PatternsContext, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def block(self): + return self.getTypedRuleContext(Python3Parser.BlockContext, 0) + + def guard(self): + return self.getTypedRuleContext(Python3Parser.GuardContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_case_block + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCase_block"): + listener.enterCase_block(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCase_block"): + listener.exitCase_block(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCase_block"): + return visitor.visitCase_block(self) + else: + return visitor.visitChildren(self) + + def case_block(self): + + localctx = Python3Parser.Case_blockContext(self, self._ctx, self.state) + self.enterRule(localctx, 106, self.RULE_case_block) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 824 + self.match(Python3Parser.CASE) + self.state = 825 + self.patterns() + self.state = 827 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 25: + self.state = 826 + self.guard() + + self.state = 829 + self.match(Python3Parser.COLON) + self.state = 830 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class GuardContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Python3Parser.IF, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_guard + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterGuard"): + listener.enterGuard(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitGuard"): + listener.exitGuard(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitGuard"): + return visitor.visitGuard(self) + else: + return visitor.visitChildren(self) + + def guard(self): + + localctx = Python3Parser.GuardContext(self, self._ctx, self.state) + self.enterRule(localctx, 108, self.RULE_guard) + try: + self.enterOuterAlt(localctx, 1) + self.state = 832 + self.match(Python3Parser.IF) + self.state = 833 + self.test() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PatternsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def open_sequence_pattern(self): + return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0) + + def pattern(self): + return self.getTypedRuleContext(Python3Parser.PatternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_patterns + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPatterns"): + listener.enterPatterns(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPatterns"): + listener.exitPatterns(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPatterns"): + return visitor.visitPatterns(self) + else: + return visitor.visitChildren(self) + + def patterns(self): + + localctx = Python3Parser.PatternsContext(self, self._ctx, self.state) + self.enterRule(localctx, 110, self.RULE_patterns) + try: + self.state = 837 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 105, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 835 + self.open_sequence_pattern() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 836 + self.pattern() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class PatternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def as_pattern(self): + return self.getTypedRuleContext(Python3Parser.As_patternContext, 0) + + def or_pattern(self): + return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPattern"): + listener.enterPattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPattern"): + listener.exitPattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPattern"): + return visitor.visitPattern(self) + else: + return visitor.visitChildren(self) + + def pattern(self): + + localctx = Python3Parser.PatternContext(self, self._ctx, self.state) + self.enterRule(localctx, 112, self.RULE_pattern) + try: + self.state = 841 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 106, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 839 + self.as_pattern() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 840 + self.or_pattern() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class As_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def or_pattern(self): + return self.getTypedRuleContext(Python3Parser.Or_patternContext, 0) + + def AS(self): + return self.getToken(Python3Parser.AS, 0) + + def pattern_capture_target(self): + return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_as_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAs_pattern"): + listener.enterAs_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAs_pattern"): + listener.exitAs_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAs_pattern"): + return visitor.visitAs_pattern(self) + else: + return visitor.visitChildren(self) + + def as_pattern(self): + + localctx = Python3Parser.As_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 114, self.RULE_as_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 843 + self.or_pattern() + self.state = 844 + self.match(Python3Parser.AS) + self.state = 845 + self.pattern_capture_target() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Or_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def closed_pattern(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Closed_patternContext) + else: + return self.getTypedRuleContext(Python3Parser.Closed_patternContext, i) + + def OR_OP(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.OR_OP) + else: + return self.getToken(Python3Parser.OR_OP, i) + + def getRuleIndex(self): + return Python3Parser.RULE_or_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterOr_pattern"): + listener.enterOr_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitOr_pattern"): + listener.exitOr_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOr_pattern"): + return visitor.visitOr_pattern(self) + else: + return visitor.visitChildren(self) + + def or_pattern(self): + + localctx = Python3Parser.Or_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 116, self.RULE_or_pattern) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 847 + self.closed_pattern() + self.state = 852 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 66: + self.state = 848 + self.match(Python3Parser.OR_OP) + self.state = 849 + self.closed_pattern() + self.state = 854 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Closed_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def literal_pattern(self): + return self.getTypedRuleContext(Python3Parser.Literal_patternContext, 0) + + def capture_pattern(self): + return self.getTypedRuleContext(Python3Parser.Capture_patternContext, 0) + + def wildcard_pattern(self): + return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0) + + def value_pattern(self): + return self.getTypedRuleContext(Python3Parser.Value_patternContext, 0) + + def group_pattern(self): + return self.getTypedRuleContext(Python3Parser.Group_patternContext, 0) + + def sequence_pattern(self): + return self.getTypedRuleContext(Python3Parser.Sequence_patternContext, 0) + + def mapping_pattern(self): + return self.getTypedRuleContext(Python3Parser.Mapping_patternContext, 0) + + def class_pattern(self): + return self.getTypedRuleContext(Python3Parser.Class_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_closed_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClosed_pattern"): + listener.enterClosed_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClosed_pattern"): + listener.exitClosed_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClosed_pattern"): + return visitor.visitClosed_pattern(self) + else: + return visitor.visitChildren(self) + + def closed_pattern(self): + + localctx = Python3Parser.Closed_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 118, self.RULE_closed_pattern) + try: + self.state = 863 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 108, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 855 + self.literal_pattern() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 856 + self.capture_pattern() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 857 + self.wildcard_pattern() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 858 + self.value_pattern() + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 859 + self.group_pattern() + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 860 + self.sequence_pattern() + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 861 + self.mapping_pattern() + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 862 + self.class_pattern() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Literal_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def signed_number(self): + return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0) + + def complex_number(self): + return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0) + + def strings(self): + return self.getTypedRuleContext(Python3Parser.StringsContext, 0) + + def NONE(self): + return self.getToken(Python3Parser.NONE, 0) + + def TRUE(self): + return self.getToken(Python3Parser.TRUE, 0) + + def FALSE(self): + return self.getToken(Python3Parser.FALSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_literal_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLiteral_pattern"): + listener.enterLiteral_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLiteral_pattern"): + listener.exitLiteral_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLiteral_pattern"): + return visitor.visitLiteral_pattern(self) + else: + return visitor.visitChildren(self) + + def literal_pattern(self): + + localctx = Python3Parser.Literal_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 120, self.RULE_literal_pattern) + try: + self.state = 873 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 109, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 865 + self.signed_number() + self.state = 866 + if not self.CannotBePlusMinus(): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " self.CannotBePlusMinus() ") + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 868 + self.complex_number() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 869 + self.strings() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 870 + self.match(Python3Parser.NONE) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 871 + self.match(Python3Parser.TRUE) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 872 + self.match(Python3Parser.FALSE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Literal_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def signed_number(self): + return self.getTypedRuleContext(Python3Parser.Signed_numberContext, 0) + + def complex_number(self): + return self.getTypedRuleContext(Python3Parser.Complex_numberContext, 0) + + def strings(self): + return self.getTypedRuleContext(Python3Parser.StringsContext, 0) + + def NONE(self): + return self.getToken(Python3Parser.NONE, 0) + + def TRUE(self): + return self.getToken(Python3Parser.TRUE, 0) + + def FALSE(self): + return self.getToken(Python3Parser.FALSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_literal_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLiteral_expr"): + listener.enterLiteral_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLiteral_expr"): + listener.exitLiteral_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLiteral_expr"): + return visitor.visitLiteral_expr(self) + else: + return visitor.visitChildren(self) + + def literal_expr(self): + + localctx = Python3Parser.Literal_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 122, self.RULE_literal_expr) + try: + self.state = 883 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 110, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 875 + self.signed_number() + self.state = 876 + if not self.CannotBePlusMinus(): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " self.CannotBePlusMinus() ") + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 878 + self.complex_number() + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 879 + self.strings() + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 880 + self.match(Python3Parser.NONE) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 881 + self.match(Python3Parser.TRUE) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 882 + self.match(Python3Parser.FALSE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Complex_numberContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def signed_real_number(self): + return self.getTypedRuleContext(Python3Parser.Signed_real_numberContext, 0) + + def ADD(self): + return self.getToken(Python3Parser.ADD, 0) + + def imaginary_number(self): + return self.getTypedRuleContext(Python3Parser.Imaginary_numberContext, 0) + + def MINUS(self): + return self.getToken(Python3Parser.MINUS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_complex_number + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComplex_number"): + listener.enterComplex_number(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitComplex_number"): + listener.exitComplex_number(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComplex_number"): + return visitor.visitComplex_number(self) + else: + return visitor.visitChildren(self) + + def complex_number(self): + + localctx = Python3Parser.Complex_numberContext(self, self._ctx, self.state) + self.enterRule(localctx, 124, self.RULE_complex_number) + try: + self.state = 893 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 111, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 885 + self.signed_real_number() + self.state = 886 + self.match(Python3Parser.ADD) + self.state = 887 + self.imaginary_number() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 889 + self.signed_real_number() + self.state = 890 + self.match(Python3Parser.MINUS) + self.state = 891 + self.imaginary_number() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Signed_numberContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NUMBER(self): + return self.getToken(Python3Parser.NUMBER, 0) + + def MINUS(self): + return self.getToken(Python3Parser.MINUS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_signed_number + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSigned_number"): + listener.enterSigned_number(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSigned_number"): + listener.exitSigned_number(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSigned_number"): + return visitor.visitSigned_number(self) + else: + return visitor.visitChildren(self) + + def signed_number(self): + + localctx = Python3Parser.Signed_numberContext(self, self._ctx, self.state) + self.enterRule(localctx, 126, self.RULE_signed_number) + try: + self.state = 898 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [4]: + self.enterOuterAlt(localctx, 1) + self.state = 895 + self.match(Python3Parser.NUMBER) + pass + elif token in [72]: + self.enterOuterAlt(localctx, 2) + self.state = 896 + self.match(Python3Parser.MINUS) + self.state = 897 + self.match(Python3Parser.NUMBER) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Signed_real_numberContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def real_number(self): + return self.getTypedRuleContext(Python3Parser.Real_numberContext, 0) + + def MINUS(self): + return self.getToken(Python3Parser.MINUS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_signed_real_number + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSigned_real_number"): + listener.enterSigned_real_number(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSigned_real_number"): + listener.exitSigned_real_number(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSigned_real_number"): + return visitor.visitSigned_real_number(self) + else: + return visitor.visitChildren(self) + + def signed_real_number(self): + + localctx = Python3Parser.Signed_real_numberContext(self, self._ctx, self.state) + self.enterRule(localctx, 128, self.RULE_signed_real_number) + try: + self.state = 903 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [4]: + self.enterOuterAlt(localctx, 1) + self.state = 900 + self.real_number() + pass + elif token in [72]: + self.enterOuterAlt(localctx, 2) + self.state = 901 + self.match(Python3Parser.MINUS) + self.state = 902 + self.real_number() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Real_numberContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NUMBER(self): + return self.getToken(Python3Parser.NUMBER, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_real_number + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterReal_number"): + listener.enterReal_number(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitReal_number"): + listener.exitReal_number(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitReal_number"): + return visitor.visitReal_number(self) + else: + return visitor.visitChildren(self) + + def real_number(self): + + localctx = Python3Parser.Real_numberContext(self, self._ctx, self.state) + self.enterRule(localctx, 130, self.RULE_real_number) + try: + self.enterOuterAlt(localctx, 1) + self.state = 905 + self.match(Python3Parser.NUMBER) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Imaginary_numberContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NUMBER(self): + return self.getToken(Python3Parser.NUMBER, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_imaginary_number + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterImaginary_number"): + listener.enterImaginary_number(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitImaginary_number"): + listener.exitImaginary_number(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitImaginary_number"): + return visitor.visitImaginary_number(self) + else: + return visitor.visitChildren(self) + + def imaginary_number(self): + + localctx = Python3Parser.Imaginary_numberContext(self, self._ctx, self.state) + self.enterRule(localctx, 132, self.RULE_imaginary_number) + try: + self.enterOuterAlt(localctx, 1) + self.state = 907 + self.match(Python3Parser.NUMBER) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Capture_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def pattern_capture_target(self): + return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_capture_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterCapture_pattern"): + listener.enterCapture_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitCapture_pattern"): + listener.exitCapture_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitCapture_pattern"): + return visitor.visitCapture_pattern(self) + else: + return visitor.visitChildren(self) + + def capture_pattern(self): + + localctx = Python3Parser.Capture_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 134, self.RULE_capture_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 909 + self.pattern_capture_target() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Pattern_capture_targetContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_pattern_capture_target + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPattern_capture_target"): + listener.enterPattern_capture_target(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPattern_capture_target"): + listener.exitPattern_capture_target(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPattern_capture_target"): + return visitor.visitPattern_capture_target(self) + else: + return visitor.visitChildren(self) + + def pattern_capture_target(self): + + localctx = Python3Parser.Pattern_capture_targetContext(self, self._ctx, self.state) + self.enterRule(localctx, 136, self.RULE_pattern_capture_target) + try: + self.enterOuterAlt(localctx, 1) + self.state = 911 + self.name() + self.state = 912 + if not self.CannotBeDotLpEq(): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " self.CannotBeDotLpEq() ") + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Wildcard_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def UNDERSCORE(self): + return self.getToken(Python3Parser.UNDERSCORE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_wildcard_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterWildcard_pattern"): + listener.enterWildcard_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitWildcard_pattern"): + listener.exitWildcard_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitWildcard_pattern"): + return visitor.visitWildcard_pattern(self) + else: + return visitor.visitChildren(self) + + def wildcard_pattern(self): + + localctx = Python3Parser.Wildcard_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 138, self.RULE_wildcard_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 914 + self.match(Python3Parser.UNDERSCORE) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Value_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def attr(self): + return self.getTypedRuleContext(Python3Parser.AttrContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_value_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterValue_pattern"): + listener.enterValue_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitValue_pattern"): + listener.exitValue_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitValue_pattern"): + return visitor.visitValue_pattern(self) + else: + return visitor.visitChildren(self) + + def value_pattern(self): + + localctx = Python3Parser.Value_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 140, self.RULE_value_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 916 + self.attr() + self.state = 917 + if not self.CannotBeDotLpEq(): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, " self.CannotBeDotLpEq() ") + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AttrContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.NameContext) + else: + return self.getTypedRuleContext(Python3Parser.NameContext, i) + + def DOT(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.DOT) + else: + return self.getToken(Python3Parser.DOT, i) + + def getRuleIndex(self): + return Python3Parser.RULE_attr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAttr"): + listener.enterAttr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAttr"): + listener.exitAttr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAttr"): + return visitor.visitAttr(self) + else: + return visitor.visitChildren(self) + + def attr(self): + + localctx = Python3Parser.AttrContext(self, self._ctx, self.state) + self.enterRule(localctx, 142, self.RULE_attr) + try: + self.enterOuterAlt(localctx, 1) + self.state = 919 + self.name() + self.state = 922 + self._errHandler.sync(self) + _alt = 1 + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 920 + self.match(Python3Parser.DOT) + self.state = 921 + self.name() + + else: + raise NoViableAltException(self) + self.state = 924 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 114, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Name_or_attrContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def attr(self): + return self.getTypedRuleContext(Python3Parser.AttrContext, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_name_or_attr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterName_or_attr"): + listener.enterName_or_attr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitName_or_attr"): + listener.exitName_or_attr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitName_or_attr"): + return visitor.visitName_or_attr(self) + else: + return visitor.visitChildren(self) + + def name_or_attr(self): + + localctx = Python3Parser.Name_or_attrContext(self, self._ctx, self.state) + self.enterRule(localctx, 144, self.RULE_name_or_attr) + try: + self.state = 928 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 115, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 926 + self.attr() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 927 + self.name() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Group_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def pattern(self): + return self.getTypedRuleContext(Python3Parser.PatternContext, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_group_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterGroup_pattern"): + listener.enterGroup_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitGroup_pattern"): + listener.exitGroup_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitGroup_pattern"): + return visitor.visitGroup_pattern(self) + else: + return visitor.visitChildren(self) + + def group_pattern(self): + + localctx = Python3Parser.Group_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 146, self.RULE_group_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 930 + self.match(Python3Parser.OPEN_PAREN) + self.state = 931 + self.pattern() + self.state = 932 + self.match(Python3Parser.CLOSE_PAREN) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Sequence_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_BRACK(self): + return self.getToken(Python3Parser.OPEN_BRACK, 0) + + def CLOSE_BRACK(self): + return self.getToken(Python3Parser.CLOSE_BRACK, 0) + + def maybe_sequence_pattern(self): + return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0) + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def open_sequence_pattern(self): + return self.getTypedRuleContext(Python3Parser.Open_sequence_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_sequence_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSequence_pattern"): + listener.enterSequence_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSequence_pattern"): + listener.exitSequence_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSequence_pattern"): + return visitor.visitSequence_pattern(self) + else: + return visitor.visitChildren(self) + + def sequence_pattern(self): + + localctx = Python3Parser.Sequence_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 148, self.RULE_sequence_pattern) + self._la = 0 # Token type + try: + self.state = 944 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [64]: + self.enterOuterAlt(localctx, 1) + self.state = 934 + self.match(Python3Parser.OPEN_BRACK) + self.state = 936 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0): + self.state = 935 + self.maybe_sequence_pattern() + + self.state = 938 + self.match(Python3Parser.CLOSE_BRACK) + pass + elif token in [57]: + self.enterOuterAlt(localctx, 2) + self.state = 939 + self.match(Python3Parser.OPEN_PAREN) + self.state = 941 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0): + self.state = 940 + self.open_sequence_pattern() + + self.state = 943 + self.match(Python3Parser.CLOSE_PAREN) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Open_sequence_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def maybe_star_pattern(self): + return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, 0) + + def COMMA(self): + return self.getToken(Python3Parser.COMMA, 0) + + def maybe_sequence_pattern(self): + return self.getTypedRuleContext(Python3Parser.Maybe_sequence_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_open_sequence_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterOpen_sequence_pattern"): + listener.enterOpen_sequence_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitOpen_sequence_pattern"): + listener.exitOpen_sequence_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOpen_sequence_pattern"): + return visitor.visitOpen_sequence_pattern(self) + else: + return visitor.visitChildren(self) + + def open_sequence_pattern(self): + + localctx = Python3Parser.Open_sequence_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 150, self.RULE_open_sequence_pattern) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 946 + self.maybe_star_pattern() + self.state = 947 + self.match(Python3Parser.COMMA) + self.state = 949 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 216209344097681432) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 8449) != 0): + self.state = 948 + self.maybe_sequence_pattern() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Maybe_sequence_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def maybe_star_pattern(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Maybe_star_patternContext) + else: + return self.getTypedRuleContext(Python3Parser.Maybe_star_patternContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_maybe_sequence_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMaybe_sequence_pattern"): + listener.enterMaybe_sequence_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMaybe_sequence_pattern"): + listener.exitMaybe_sequence_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMaybe_sequence_pattern"): + return visitor.visitMaybe_sequence_pattern(self) + else: + return visitor.visitChildren(self) + + def maybe_sequence_pattern(self): + + localctx = Python3Parser.Maybe_sequence_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 152, self.RULE_maybe_sequence_pattern) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 951 + self.maybe_star_pattern() + self.state = 956 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 120, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 952 + self.match(Python3Parser.COMMA) + self.state = 953 + self.maybe_star_pattern() + self.state = 958 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 120, self._ctx) + + self.state = 960 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 959 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Maybe_star_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def star_pattern(self): + return self.getTypedRuleContext(Python3Parser.Star_patternContext, 0) + + def pattern(self): + return self.getTypedRuleContext(Python3Parser.PatternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_maybe_star_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMaybe_star_pattern"): + listener.enterMaybe_star_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMaybe_star_pattern"): + listener.exitMaybe_star_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMaybe_star_pattern"): + return visitor.visitMaybe_star_pattern(self) + else: + return visitor.visitChildren(self) + + def maybe_star_pattern(self): + + localctx = Python3Parser.Maybe_star_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 154, self.RULE_maybe_star_pattern) + try: + self.state = 964 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [56]: + self.enterOuterAlt(localctx, 1) + self.state = 962 + self.star_pattern() + pass + elif token in [3, 4, 20, 30, 31, 38, 40, 45, 57, 64, 72, 77]: + self.enterOuterAlt(localctx, 2) + self.state = 963 + self.pattern() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Star_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def pattern_capture_target(self): + return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0) + + def wildcard_pattern(self): + return self.getTypedRuleContext(Python3Parser.Wildcard_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_star_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStar_pattern"): + listener.enterStar_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStar_pattern"): + listener.exitStar_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStar_pattern"): + return visitor.visitStar_pattern(self) + else: + return visitor.visitChildren(self) + + def star_pattern(self): + + localctx = Python3Parser.Star_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 156, self.RULE_star_pattern) + try: + self.state = 970 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 123, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 966 + self.match(Python3Parser.STAR) + self.state = 967 + self.pattern_capture_target() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 968 + self.match(Python3Parser.STAR) + self.state = 969 + self.wildcard_pattern() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Mapping_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_BRACE(self): + return self.getToken(Python3Parser.OPEN_BRACE, 0) + + def CLOSE_BRACE(self): + return self.getToken(Python3Parser.CLOSE_BRACE, 0) + + def double_star_pattern(self): + return self.getTypedRuleContext(Python3Parser.Double_star_patternContext, 0) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def items_pattern(self): + return self.getTypedRuleContext(Python3Parser.Items_patternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_mapping_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterMapping_pattern"): + listener.enterMapping_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitMapping_pattern"): + listener.exitMapping_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitMapping_pattern"): + return visitor.visitMapping_pattern(self) + else: + return visitor.visitChildren(self) + + def mapping_pattern(self): + + localctx = Python3Parser.Mapping_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 158, self.RULE_mapping_pattern) + self._la = 0 # Token type + try: + self.state = 997 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 127, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 972 + self.match(Python3Parser.OPEN_BRACE) + self.state = 973 + self.match(Python3Parser.CLOSE_BRACE) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 974 + self.match(Python3Parser.OPEN_BRACE) + self.state = 975 + self.double_star_pattern() + self.state = 977 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 976 + self.match(Python3Parser.COMMA) + + self.state = 979 + self.match(Python3Parser.CLOSE_BRACE) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 981 + self.match(Python3Parser.OPEN_BRACE) + self.state = 982 + self.items_pattern() + self.state = 983 + self.match(Python3Parser.COMMA) + self.state = 984 + self.double_star_pattern() + self.state = 986 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 985 + self.match(Python3Parser.COMMA) + + self.state = 988 + self.match(Python3Parser.CLOSE_BRACE) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 990 + self.match(Python3Parser.OPEN_BRACE) + self.state = 991 + self.items_pattern() + self.state = 993 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 992 + self.match(Python3Parser.COMMA) + + self.state = 995 + self.match(Python3Parser.CLOSE_BRACE) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Items_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def key_value_pattern(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Key_value_patternContext) + else: + return self.getTypedRuleContext(Python3Parser.Key_value_patternContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_items_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterItems_pattern"): + listener.enterItems_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitItems_pattern"): + listener.exitItems_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitItems_pattern"): + return visitor.visitItems_pattern(self) + else: + return visitor.visitChildren(self) + + def items_pattern(self): + + localctx = Python3Parser.Items_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 160, self.RULE_items_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 999 + self.key_value_pattern() + self.state = 1004 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 128, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1000 + self.match(Python3Parser.COMMA) + self.state = 1001 + self.key_value_pattern() + self.state = 1006 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 128, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Key_value_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def pattern(self): + return self.getTypedRuleContext(Python3Parser.PatternContext, 0) + + def literal_expr(self): + return self.getTypedRuleContext(Python3Parser.Literal_exprContext, 0) + + def attr(self): + return self.getTypedRuleContext(Python3Parser.AttrContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_key_value_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterKey_value_pattern"): + listener.enterKey_value_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitKey_value_pattern"): + listener.exitKey_value_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitKey_value_pattern"): + return visitor.visitKey_value_pattern(self) + else: + return visitor.visitChildren(self) + + def key_value_pattern(self): + + localctx = Python3Parser.Key_value_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 162, self.RULE_key_value_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1009 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 20, 31, 38, 72]: + self.state = 1007 + self.literal_expr() + pass + elif token in [30, 40, 45]: + self.state = 1008 + self.attr() + pass + else: + raise NoViableAltException(self) + + self.state = 1011 + self.match(Python3Parser.COLON) + self.state = 1012 + self.pattern() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Double_star_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def POWER(self): + return self.getToken(Python3Parser.POWER, 0) + + def pattern_capture_target(self): + return self.getTypedRuleContext(Python3Parser.Pattern_capture_targetContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_double_star_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDouble_star_pattern"): + listener.enterDouble_star_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDouble_star_pattern"): + listener.exitDouble_star_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDouble_star_pattern"): + return visitor.visitDouble_star_pattern(self) + else: + return visitor.visitChildren(self) + + def double_star_pattern(self): + + localctx = Python3Parser.Double_star_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 164, self.RULE_double_star_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1014 + self.match(Python3Parser.POWER) + self.state = 1015 + self.pattern_capture_target() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Class_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name_or_attr(self): + return self.getTypedRuleContext(Python3Parser.Name_or_attrContext, 0) + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def positional_patterns(self): + return self.getTypedRuleContext(Python3Parser.Positional_patternsContext, 0) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def keyword_patterns(self): + return self.getTypedRuleContext(Python3Parser.Keyword_patternsContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_class_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClass_pattern"): + listener.enterClass_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClass_pattern"): + listener.exitClass_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClass_pattern"): + return visitor.visitClass_pattern(self) + else: + return visitor.visitChildren(self) + + def class_pattern(self): + + localctx = Python3Parser.Class_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 166, self.RULE_class_pattern) + self._la = 0 # Token type + try: + self.state = 1047 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 133, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1017 + self.name_or_attr() + self.state = 1018 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1019 + self.match(Python3Parser.CLOSE_PAREN) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1021 + self.name_or_attr() + self.state = 1022 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1023 + self.positional_patterns() + self.state = 1025 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1024 + self.match(Python3Parser.COMMA) + + self.state = 1027 + self.match(Python3Parser.CLOSE_PAREN) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1029 + self.name_or_attr() + self.state = 1030 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1031 + self.keyword_patterns() + self.state = 1033 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1032 + self.match(Python3Parser.COMMA) + + self.state = 1035 + self.match(Python3Parser.CLOSE_PAREN) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1037 + self.name_or_attr() + self.state = 1038 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1039 + self.positional_patterns() + self.state = 1040 + self.match(Python3Parser.COMMA) + self.state = 1041 + self.keyword_patterns() + self.state = 1043 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1042 + self.match(Python3Parser.COMMA) + + self.state = 1045 + self.match(Python3Parser.CLOSE_PAREN) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Positional_patternsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def pattern(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.PatternContext) + else: + return self.getTypedRuleContext(Python3Parser.PatternContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_positional_patterns + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterPositional_patterns"): + listener.enterPositional_patterns(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitPositional_patterns"): + listener.exitPositional_patterns(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitPositional_patterns"): + return visitor.visitPositional_patterns(self) + else: + return visitor.visitChildren(self) + + def positional_patterns(self): + + localctx = Python3Parser.Positional_patternsContext(self, self._ctx, self.state) + self.enterRule(localctx, 168, self.RULE_positional_patterns) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1049 + self.pattern() + self.state = 1054 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 134, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1050 + self.match(Python3Parser.COMMA) + self.state = 1051 + self.pattern() + self.state = 1056 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 134, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Keyword_patternsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def keyword_pattern(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Keyword_patternContext) + else: + return self.getTypedRuleContext(Python3Parser.Keyword_patternContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_keyword_patterns + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterKeyword_patterns"): + listener.enterKeyword_patterns(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitKeyword_patterns"): + listener.exitKeyword_patterns(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitKeyword_patterns"): + return visitor.visitKeyword_patterns(self) + else: + return visitor.visitChildren(self) + + def keyword_patterns(self): + + localctx = Python3Parser.Keyword_patternsContext(self, self._ctx, self.state) + self.enterRule(localctx, 170, self.RULE_keyword_patterns) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1057 + self.keyword_pattern() + self.state = 1062 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 135, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1058 + self.match(Python3Parser.COMMA) + self.state = 1059 + self.keyword_pattern() + self.state = 1064 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 135, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Keyword_patternContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def ASSIGN(self): + return self.getToken(Python3Parser.ASSIGN, 0) + + def pattern(self): + return self.getTypedRuleContext(Python3Parser.PatternContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_keyword_pattern + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterKeyword_pattern"): + listener.enterKeyword_pattern(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitKeyword_pattern"): + listener.exitKeyword_pattern(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitKeyword_pattern"): + return visitor.visitKeyword_pattern(self) + else: + return visitor.visitChildren(self) + + def keyword_pattern(self): + + localctx = Python3Parser.Keyword_patternContext(self, self._ctx, self.state) + self.enterRule(localctx, 172, self.RULE_keyword_pattern) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1065 + self.name() + self.state = 1066 + self.match(Python3Parser.ASSIGN) + self.state = 1067 + self.pattern() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TestContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def or_test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Or_testContext) + else: + return self.getTypedRuleContext(Python3Parser.Or_testContext, i) + + def IF(self): + return self.getToken(Python3Parser.IF, 0) + + def ELSE(self): + return self.getToken(Python3Parser.ELSE, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def lambdef(self): + return self.getTypedRuleContext(Python3Parser.LambdefContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_test + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTest"): + listener.enterTest(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTest"): + listener.exitTest(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTest"): + return visitor.visitTest(self) + else: + return visitor.visitChildren(self) + + def test(self): + + localctx = Python3Parser.TestContext(self, self._ctx, self.state) + self.enterRule(localctx, 174, self.RULE_test) + self._la = 0 # Token type + try: + self.state = 1078 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 1) + self.state = 1069 + self.or_test() + self.state = 1075 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 25: + self.state = 1070 + self.match(Python3Parser.IF) + self.state = 1071 + self.or_test() + self.state = 1072 + self.match(Python3Parser.ELSE) + self.state = 1073 + self.test() + + pass + elif token in [29]: + self.enterOuterAlt(localctx, 2) + self.state = 1077 + self.lambdef() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Test_nocondContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def or_test(self): + return self.getTypedRuleContext(Python3Parser.Or_testContext, 0) + + def lambdef_nocond(self): + return self.getTypedRuleContext(Python3Parser.Lambdef_nocondContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_test_nocond + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTest_nocond"): + listener.enterTest_nocond(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTest_nocond"): + listener.exitTest_nocond(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTest_nocond"): + return visitor.visitTest_nocond(self) + else: + return visitor.visitChildren(self) + + def test_nocond(self): + + localctx = Python3Parser.Test_nocondContext(self, self._ctx, self.state) + self.enterRule(localctx, 176, self.RULE_test_nocond) + try: + self.state = 1082 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 1) + self.state = 1080 + self.or_test() + pass + elif token in [29]: + self.enterOuterAlt(localctx, 2) + self.state = 1081 + self.lambdef_nocond() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class LambdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LAMBDA(self): + return self.getToken(Python3Parser.LAMBDA, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def varargslist(self): + return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_lambdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdef"): + listener.enterLambdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdef"): + listener.exitLambdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdef"): + return visitor.visitLambdef(self) + else: + return visitor.visitChildren(self) + + def lambdef(self): + + localctx = Python3Parser.LambdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 178, self.RULE_lambdef) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1084 + self.match(Python3Parser.LAMBDA) + self.state = 1086 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0): + self.state = 1085 + self.varargslist() + + self.state = 1088 + self.match(Python3Parser.COLON) + self.state = 1089 + self.test() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Lambdef_nocondContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LAMBDA(self): + return self.getToken(Python3Parser.LAMBDA, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def test_nocond(self): + return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0) + + def varargslist(self): + return self.getTypedRuleContext(Python3Parser.VarargslistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_lambdef_nocond + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterLambdef_nocond"): + listener.enterLambdef_nocond(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitLambdef_nocond"): + listener.exitLambdef_nocond(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitLambdef_nocond"): + return visitor.visitLambdef_nocond(self) + else: + return visitor.visitChildren(self) + + def lambdef_nocond(self): + + localctx = Python3Parser.Lambdef_nocondContext(self, self._ctx, self.state) + self.enterRule(localctx, 180, self.RULE_lambdef_nocond) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1091 + self.match(Python3Parser.LAMBDA) + self.state = 1093 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4683779897422774272) != 0): + self.state = 1092 + self.varargslist() + + self.state = 1095 + self.match(Python3Parser.COLON) + self.state = 1096 + self.test_nocond() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Or_testContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def and_test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.And_testContext) + else: + return self.getTypedRuleContext(Python3Parser.And_testContext, i) + + def OR(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.OR) + else: + return self.getToken(Python3Parser.OR, i) + + def getRuleIndex(self): + return Python3Parser.RULE_or_test + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterOr_test"): + listener.enterOr_test(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitOr_test"): + listener.exitOr_test(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitOr_test"): + return visitor.visitOr_test(self) + else: + return visitor.visitChildren(self) + + def or_test(self): + + localctx = Python3Parser.Or_testContext(self, self._ctx, self.state) + self.enterRule(localctx, 182, self.RULE_or_test) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1098 + self.and_test() + self.state = 1103 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 34: + self.state = 1099 + self.match(Python3Parser.OR) + self.state = 1100 + self.and_test() + self.state = 1105 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class And_testContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def not_test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Not_testContext) + else: + return self.getTypedRuleContext(Python3Parser.Not_testContext, i) + + def AND(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.AND) + else: + return self.getToken(Python3Parser.AND, i) + + def getRuleIndex(self): + return Python3Parser.RULE_and_test + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAnd_test"): + listener.enterAnd_test(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAnd_test"): + listener.exitAnd_test(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAnd_test"): + return visitor.visitAnd_test(self) + else: + return visitor.visitChildren(self) + + def and_test(self): + + localctx = Python3Parser.And_testContext(self, self._ctx, self.state) + self.enterRule(localctx, 184, self.RULE_and_test) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1106 + self.not_test() + self.state = 1111 + self._errHandler.sync(self) + _la = self._input.LA(1) + while _la == 6: + self.state = 1107 + self.match(Python3Parser.AND) + self.state = 1108 + self.not_test() + self.state = 1113 + self._errHandler.sync(self) + _la = self._input.LA(1) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Not_testContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NOT(self): + return self.getToken(Python3Parser.NOT, 0) + + def not_test(self): + return self.getTypedRuleContext(Python3Parser.Not_testContext, 0) + + def comparison(self): + return self.getTypedRuleContext(Python3Parser.ComparisonContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_not_test + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterNot_test"): + listener.enterNot_test(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitNot_test"): + listener.exitNot_test(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitNot_test"): + return visitor.visitNot_test(self) + else: + return visitor.visitChildren(self) + + def not_test(self): + + localctx = Python3Parser.Not_testContext(self, self._ctx, self.state) + self.enterRule(localctx, 186, self.RULE_not_test) + try: + self.state = 1117 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [33]: + self.enterOuterAlt(localctx, 1) + self.state = 1114 + self.match(Python3Parser.NOT) + self.state = 1115 + self.not_test() + pass + elif token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 2) + self.state = 1116 + self.comparison() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ComparisonContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.ExprContext) + else: + return self.getTypedRuleContext(Python3Parser.ExprContext, i) + + def comp_op(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Comp_opContext) + else: + return self.getTypedRuleContext(Python3Parser.Comp_opContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_comparison + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComparison"): + listener.enterComparison(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitComparison"): + listener.exitComparison(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComparison"): + return visitor.visitComparison(self) + else: + return visitor.visitChildren(self) + + def comparison(self): + + localctx = Python3Parser.ComparisonContext(self, self._ctx, self.state) + self.enterRule(localctx, 188, self.RULE_comparison) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1119 + self.expr(0) + self.state = 1125 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 144, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1120 + self.comp_op() + self.state = 1121 + self.expr(0) + self.state = 1127 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 144, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Comp_opContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def LESS_THAN(self): + return self.getToken(Python3Parser.LESS_THAN, 0) + + def GREATER_THAN(self): + return self.getToken(Python3Parser.GREATER_THAN, 0) + + def EQUALS(self): + return self.getToken(Python3Parser.EQUALS, 0) + + def GT_EQ(self): + return self.getToken(Python3Parser.GT_EQ, 0) + + def LT_EQ(self): + return self.getToken(Python3Parser.LT_EQ, 0) + + def NOT_EQ_1(self): + return self.getToken(Python3Parser.NOT_EQ_1, 0) + + def NOT_EQ_2(self): + return self.getToken(Python3Parser.NOT_EQ_2, 0) + + def IN(self): + return self.getToken(Python3Parser.IN, 0) + + def NOT(self): + return self.getToken(Python3Parser.NOT, 0) + + def IS(self): + return self.getToken(Python3Parser.IS, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_comp_op + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComp_op"): + listener.enterComp_op(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitComp_op"): + listener.exitComp_op(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComp_op"): + return visitor.visitComp_op(self) + else: + return visitor.visitChildren(self) + + def comp_op(self): + + localctx = Python3Parser.Comp_opContext(self, self._ctx, self.state) + self.enterRule(localctx, 190, self.RULE_comp_op) + try: + self.state = 1141 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 145, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1128 + self.match(Python3Parser.LESS_THAN) + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1129 + self.match(Python3Parser.GREATER_THAN) + pass + + elif la_ == 3: + self.enterOuterAlt(localctx, 3) + self.state = 1130 + self.match(Python3Parser.EQUALS) + pass + + elif la_ == 4: + self.enterOuterAlt(localctx, 4) + self.state = 1131 + self.match(Python3Parser.GT_EQ) + pass + + elif la_ == 5: + self.enterOuterAlt(localctx, 5) + self.state = 1132 + self.match(Python3Parser.LT_EQ) + pass + + elif la_ == 6: + self.enterOuterAlt(localctx, 6) + self.state = 1133 + self.match(Python3Parser.NOT_EQ_1) + pass + + elif la_ == 7: + self.enterOuterAlt(localctx, 7) + self.state = 1134 + self.match(Python3Parser.NOT_EQ_2) + pass + + elif la_ == 8: + self.enterOuterAlt(localctx, 8) + self.state = 1135 + self.match(Python3Parser.IN) + pass + + elif la_ == 9: + self.enterOuterAlt(localctx, 9) + self.state = 1136 + self.match(Python3Parser.NOT) + self.state = 1137 + self.match(Python3Parser.IN) + pass + + elif la_ == 10: + self.enterOuterAlt(localctx, 10) + self.state = 1138 + self.match(Python3Parser.IS) + pass + + elif la_ == 11: + self.enterOuterAlt(localctx, 11) + self.state = 1139 + self.match(Python3Parser.IS) + self.state = 1140 + self.match(Python3Parser.NOT) + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Star_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def expr(self): + return self.getTypedRuleContext(Python3Parser.ExprContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_star_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStar_expr"): + listener.enterStar_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStar_expr"): + listener.exitStar_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStar_expr"): + return visitor.visitStar_expr(self) + else: + return visitor.visitChildren(self) + + def star_expr(self): + + localctx = Python3Parser.Star_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 192, self.RULE_star_expr) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1143 + self.match(Python3Parser.STAR) + self.state = 1144 + self.expr(0) + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def atom_expr(self): + return self.getTypedRuleContext(Python3Parser.Atom_exprContext, 0) + + def expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.ExprContext) + else: + return self.getTypedRuleContext(Python3Parser.ExprContext, i) + + def ADD(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.ADD) + else: + return self.getToken(Python3Parser.ADD, i) + + def MINUS(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.MINUS) + else: + return self.getToken(Python3Parser.MINUS, i) + + def NOT_OP(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.NOT_OP) + else: + return self.getToken(Python3Parser.NOT_OP, i) + + def POWER(self): + return self.getToken(Python3Parser.POWER, 0) + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def AT(self): + return self.getToken(Python3Parser.AT, 0) + + def DIV(self): + return self.getToken(Python3Parser.DIV, 0) + + def MOD(self): + return self.getToken(Python3Parser.MOD, 0) + + def IDIV(self): + return self.getToken(Python3Parser.IDIV, 0) + + def LEFT_SHIFT(self): + return self.getToken(Python3Parser.LEFT_SHIFT, 0) + + def RIGHT_SHIFT(self): + return self.getToken(Python3Parser.RIGHT_SHIFT, 0) + + def AND_OP(self): + return self.getToken(Python3Parser.AND_OP, 0) + + def XOR(self): + return self.getToken(Python3Parser.XOR, 0) + + def OR_OP(self): + return self.getToken(Python3Parser.OR_OP, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExpr"): + listener.enterExpr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExpr"): + listener.exitExpr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExpr"): + return visitor.visitExpr(self) + else: + return visitor.visitChildren(self) + + def expr(self, _p: int = 0): + _parentctx = self._ctx + _parentState = self.state + localctx = Python3Parser.ExprContext(self, self._ctx, _parentState) + _prevctx = localctx + _startState = 194 + self.enterRecursionRule(localctx, 194, self.RULE_expr, _p) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1154 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 77]: + self.state = 1147 + self.atom_expr() + pass + elif token in [71, 72, 76]: + self.state = 1149 + self._errHandler.sync(self) + _alt = 1 + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1148 + _la = self._input.LA(1) + if not (((((_la - 71)) & ~0x3f) == 0 and ((1 << (_la - 71)) & 35) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + + else: + raise NoViableAltException(self) + self.state = 1151 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 146, self._ctx) + + self.state = 1153 + self.expr(7) + pass + else: + raise NoViableAltException(self) + + self._ctx.stop = self._input.LT(-1) + self.state = 1179 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 149, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + if self._parseListeners is not None: + self.triggerExitRuleEvent() + _prevctx = localctx + self.state = 1177 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 148, self._ctx) + if la_ == 1: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1156 + if not self.precpred(self._ctx, 8): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 8)") + self.state = 1157 + self.match(Python3Parser.POWER) + self.state = 1158 + self.expr(9) + pass + + elif la_ == 2: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1159 + if not self.precpred(self._ctx, 6): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 6)") + self.state = 1160 + _la = self._input.LA(1) + if not (((((_la - 56)) & ~0x3f) == 0 and ((1 << (_la - 56)) & 1074659329) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1161 + self.expr(7) + pass + + elif la_ == 3: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1162 + if not self.precpred(self._ctx, 5): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 5)") + self.state = 1163 + _la = self._input.LA(1) + if not (_la == 71 or _la == 72): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1164 + self.expr(6) + pass + + elif la_ == 4: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1165 + if not self.precpred(self._ctx, 4): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 4)") + self.state = 1166 + _la = self._input.LA(1) + if not (_la == 69 or _la == 70): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + self.state = 1167 + self.expr(5) + pass + + elif la_ == 5: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1168 + if not self.precpred(self._ctx, 3): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 3)") + self.state = 1169 + self.match(Python3Parser.AND_OP) + self.state = 1170 + self.expr(4) + pass + + elif la_ == 6: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1171 + if not self.precpred(self._ctx, 2): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 2)") + self.state = 1172 + self.match(Python3Parser.XOR) + self.state = 1173 + self.expr(3) + pass + + elif la_ == 7: + localctx = Python3Parser.ExprContext(self, _parentctx, _parentState) + self.pushNewRecursionContext(localctx, _startState, self.RULE_expr) + self.state = 1174 + if not self.precpred(self._ctx, 1): + from antlr4.error.Errors import FailedPredicateException + raise FailedPredicateException(self, "self.precpred(self._ctx, 1)") + self.state = 1175 + self.match(Python3Parser.OR_OP) + self.state = 1176 + self.expr(2) + pass + + self.state = 1181 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 149, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.unrollRecursionContexts(_parentctx) + return localctx + + class Atom_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def atom(self): + return self.getTypedRuleContext(Python3Parser.AtomContext, 0) + + def AWAIT(self): + return self.getToken(Python3Parser.AWAIT, 0) + + def trailer(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TrailerContext) + else: + return self.getTypedRuleContext(Python3Parser.TrailerContext, i) + + def getRuleIndex(self): + return Python3Parser.RULE_atom_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAtom_expr"): + listener.enterAtom_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAtom_expr"): + listener.exitAtom_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAtom_expr"): + return visitor.visitAtom_expr(self) + else: + return visitor.visitChildren(self) + + def atom_expr(self): + + localctx = Python3Parser.Atom_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 196, self.RULE_atom_expr) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1183 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 10: + self.state = 1182 + self.match(Python3Parser.AWAIT) + + self.state = 1185 + self.atom() + self.state = 1189 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 151, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1186 + self.trailer() + self.state = 1191 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 151, self._ctx) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class AtomContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def yield_expr(self): + return self.getTypedRuleContext(Python3Parser.Yield_exprContext, 0) + + def testlist_comp(self): + return self.getTypedRuleContext(Python3Parser.Testlist_compContext, 0) + + def OPEN_BRACK(self): + return self.getToken(Python3Parser.OPEN_BRACK, 0) + + def CLOSE_BRACK(self): + return self.getToken(Python3Parser.CLOSE_BRACK, 0) + + def OPEN_BRACE(self): + return self.getToken(Python3Parser.OPEN_BRACE, 0) + + def CLOSE_BRACE(self): + return self.getToken(Python3Parser.CLOSE_BRACE, 0) + + def dictorsetmaker(self): + return self.getTypedRuleContext(Python3Parser.DictorsetmakerContext, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def NUMBER(self): + return self.getToken(Python3Parser.NUMBER, 0) + + def STRING(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.STRING) + else: + return self.getToken(Python3Parser.STRING, i) + + def ELLIPSIS(self): + return self.getToken(Python3Parser.ELLIPSIS, 0) + + def NONE(self): + return self.getToken(Python3Parser.NONE, 0) + + def TRUE(self): + return self.getToken(Python3Parser.TRUE, 0) + + def FALSE(self): + return self.getToken(Python3Parser.FALSE, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_atom + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterAtom"): + listener.enterAtom(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitAtom"): + listener.exitAtom(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitAtom"): + return visitor.visitAtom(self) + else: + return visitor.visitChildren(self) + + def atom(self): + + localctx = Python3Parser.AtomContext(self, self._ctx, self.state) + self.enterRule(localctx, 198, self.RULE_atom) + self._la = 0 # Token type + try: + self.state = 1219 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [57]: + self.enterOuterAlt(localctx, 1) + self.state = 1192 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1195 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [43]: + self.state = 1193 + self.yield_expr() + pass + elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 56, 57, 64, 71, 72, 76, 77]: + self.state = 1194 + self.testlist_comp() + pass + elif token in [58]: + pass + else: + pass + self.state = 1197 + self.match(Python3Parser.CLOSE_PAREN) + pass + elif token in [64]: + self.enterOuterAlt(localctx, 2) + self.state = 1198 + self.match(Python3Parser.OPEN_BRACK) + self.state = 1200 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 252238150243451928) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1199 + self.testlist_comp() + + self.state = 1202 + self.match(Python3Parser.CLOSE_BRACK) + pass + elif token in [77]: + self.enterOuterAlt(localctx, 3) + self.state = 1203 + self.match(Python3Parser.OPEN_BRACE) + self.state = 1205 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1204 + self.dictorsetmaker() + + self.state = 1207 + self.match(Python3Parser.CLOSE_BRACE) + pass + elif token in [30, 40, 45]: + self.enterOuterAlt(localctx, 4) + self.state = 1208 + self.name() + pass + elif token in [4]: + self.enterOuterAlt(localctx, 5) + self.state = 1209 + self.match(Python3Parser.NUMBER) + pass + elif token in [3]: + self.enterOuterAlt(localctx, 6) + self.state = 1211 + self._errHandler.sync(self) + _alt = 1 + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1210 + self.match(Python3Parser.STRING) + + else: + raise NoViableAltException(self) + self.state = 1213 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 155, self._ctx) + + pass + elif token in [55]: + self.enterOuterAlt(localctx, 7) + self.state = 1215 + self.match(Python3Parser.ELLIPSIS) + pass + elif token in [31]: + self.enterOuterAlt(localctx, 8) + self.state = 1216 + self.match(Python3Parser.NONE) + pass + elif token in [38]: + self.enterOuterAlt(localctx, 9) + self.state = 1217 + self.match(Python3Parser.TRUE) + pass + elif token in [20]: + self.enterOuterAlt(localctx, 10) + self.state = 1218 + self.match(Python3Parser.FALSE) + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class NameContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def NAME(self): + return self.getToken(Python3Parser.NAME, 0) + + def UNDERSCORE(self): + return self.getToken(Python3Parser.UNDERSCORE, 0) + + def MATCH(self): + return self.getToken(Python3Parser.MATCH, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_name + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterName"): + listener.enterName(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitName"): + listener.exitName(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitName"): + return visitor.visitName(self) + else: + return visitor.visitChildren(self) + + def name(self): + + localctx = Python3Parser.NameContext(self, self._ctx, self.state) + self.enterRule(localctx, 200, self.RULE_name) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1221 + _la = self._input.LA(1) + if not ((((_la) & ~0x3f) == 0 and ((1 << _la) & 36284957458432) != 0)): + self._errHandler.recoverInline(self) + else: + self._errHandler.reportMatch(self) + self.consume() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Testlist_compContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def star_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Star_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Star_exprContext, i) + + def comp_for(self): + return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_testlist_comp + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTestlist_comp"): + listener.enterTestlist_comp(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTestlist_comp"): + listener.exitTestlist_comp(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTestlist_comp"): + return visitor.visitTestlist_comp(self) + else: + return visitor.visitChildren(self) + + def testlist_comp(self): + + localctx = Python3Parser.Testlist_compContext(self, self._ctx, self.state) + self.enterRule(localctx, 202, self.RULE_testlist_comp) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1225 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1223 + self.test() + pass + elif token in [56]: + self.state = 1224 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1241 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [9, 22]: + self.state = 1227 + self.comp_for() + pass + elif token in [58, 59, 65]: + self.state = 1235 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 159, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1228 + self.match(Python3Parser.COMMA) + self.state = 1231 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1229 + self.test() + pass + elif token in [56]: + self.state = 1230 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1237 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 159, self._ctx) + + self.state = 1239 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1238 + self.match(Python3Parser.COMMA) + + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TrailerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def arglist(self): + return self.getTypedRuleContext(Python3Parser.ArglistContext, 0) + + def OPEN_BRACK(self): + return self.getToken(Python3Parser.OPEN_BRACK, 0) + + def subscriptlist(self): + return self.getTypedRuleContext(Python3Parser.SubscriptlistContext, 0) + + def CLOSE_BRACK(self): + return self.getToken(Python3Parser.CLOSE_BRACK, 0) + + def DOT(self): + return self.getToken(Python3Parser.DOT, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_trailer + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTrailer"): + listener.enterTrailer(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTrailer"): + listener.exitTrailer(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTrailer"): + return visitor.visitTrailer(self) + else: + return visitor.visitChildren(self) + + def trailer(self): + + localctx = Python3Parser.TrailerContext(self, self._ctx, self.state) + self.enterRule(localctx, 204, self.RULE_trailer) + self._la = 0 # Token type + try: + self.state = 1254 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [57]: + self.enterOuterAlt(localctx, 1) + self.state = 1243 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1245 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1244 + self.arglist() + + self.state = 1247 + self.match(Python3Parser.CLOSE_PAREN) + pass + elif token in [64]: + self.enterOuterAlt(localctx, 2) + self.state = 1248 + self.match(Python3Parser.OPEN_BRACK) + self.state = 1249 + self.subscriptlist() + self.state = 1250 + self.match(Python3Parser.CLOSE_BRACK) + pass + elif token in [54]: + self.enterOuterAlt(localctx, 3) + self.state = 1252 + self.match(Python3Parser.DOT) + self.state = 1253 + self.name() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SubscriptlistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def subscript_(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Subscript_Context) + else: + return self.getTypedRuleContext(Python3Parser.Subscript_Context, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_subscriptlist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSubscriptlist"): + listener.enterSubscriptlist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSubscriptlist"): + listener.exitSubscriptlist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSubscriptlist"): + return visitor.visitSubscriptlist(self) + else: + return visitor.visitChildren(self) + + def subscriptlist(self): + + localctx = Python3Parser.SubscriptlistContext(self, self._ctx, self.state) + self.enterRule(localctx, 206, self.RULE_subscriptlist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1256 + self.subscript_() + self.state = 1261 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 164, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1257 + self.match(Python3Parser.COMMA) + self.state = 1258 + self.subscript_() + self.state = 1263 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 164, self._ctx) + + self.state = 1265 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1264 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Subscript_Context(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def sliceop(self): + return self.getTypedRuleContext(Python3Parser.SliceopContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_subscript_ + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSubscript_"): + listener.enterSubscript_(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSubscript_"): + listener.exitSubscript_(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSubscript_"): + return visitor.visitSubscript_(self) + else: + return visitor.visitChildren(self) + + def subscript_(self): + + localctx = Python3Parser.Subscript_Context(self, self._ctx, self.state) + self.enterRule(localctx, 208, self.RULE_subscript_) + self._la = 0 # Token type + try: + self.state = 1278 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 169, self._ctx) + if la_ == 1: + self.enterOuterAlt(localctx, 1) + self.state = 1267 + self.test() + pass + + elif la_ == 2: + self.enterOuterAlt(localctx, 2) + self.state = 1269 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1268 + self.test() + + self.state = 1271 + self.match(Python3Parser.COLON) + self.state = 1273 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1272 + self.test() + + self.state = 1276 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 60: + self.state = 1275 + self.sliceop() + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class SliceopContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_sliceop + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterSliceop"): + listener.enterSliceop(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitSliceop"): + listener.exitSliceop(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitSliceop"): + return visitor.visitSliceop(self) + else: + return visitor.visitChildren(self) + + def sliceop(self): + + localctx = Python3Parser.SliceopContext(self, self._ctx, self.state) + self.enterRule(localctx, 210, self.RULE_sliceop) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1280 + self.match(Python3Parser.COLON) + self.state = 1282 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556205523992) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1281 + self.test() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ExprlistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.ExprContext) + else: + return self.getTypedRuleContext(Python3Parser.ExprContext, i) + + def star_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Star_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Star_exprContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_exprlist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterExprlist"): + listener.enterExprlist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitExprlist"): + listener.exitExprlist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitExprlist"): + return visitor.visitExprlist(self) + else: + return visitor.visitChildren(self) + + def exprlist(self): + + localctx = Python3Parser.ExprlistContext(self, self._ctx, self.state) + self.enterRule(localctx, 212, self.RULE_exprlist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1286 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1284 + self.expr(0) + pass + elif token in [56]: + self.state = 1285 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1295 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 173, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1288 + self.match(Python3Parser.COMMA) + self.state = 1291 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 30, 31, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1289 + self.expr(0) + pass + elif token in [56]: + self.state = 1290 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1297 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 173, self._ctx) + + self.state = 1299 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1298 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class TestlistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_testlist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterTestlist"): + listener.enterTestlist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitTestlist"): + listener.exitTestlist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitTestlist"): + return visitor.visitTestlist(self) + else: + return visitor.visitChildren(self) + + def testlist(self): + + localctx = Python3Parser.TestlistContext(self, self._ctx, self.state) + self.enterRule(localctx, 214, self.RULE_testlist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1301 + self.test() + self.state = 1306 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 175, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1302 + self.match(Python3Parser.COMMA) + self.state = 1303 + self.test() + self.state = 1308 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 175, self._ctx) + + self.state = 1310 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1309 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class DictorsetmakerContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def COLON(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COLON) + else: + return self.getToken(Python3Parser.COLON, i) + + def POWER(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.POWER) + else: + return self.getToken(Python3Parser.POWER, i) + + def expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.ExprContext) + else: + return self.getTypedRuleContext(Python3Parser.ExprContext, i) + + def comp_for(self): + return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0) + + def star_expr(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.Star_exprContext) + else: + return self.getTypedRuleContext(Python3Parser.Star_exprContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_dictorsetmaker + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterDictorsetmaker"): + listener.enterDictorsetmaker(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitDictorsetmaker"): + listener.exitDictorsetmaker(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitDictorsetmaker"): + return visitor.visitDictorsetmaker(self) + else: + return visitor.visitChildren(self) + + def dictorsetmaker(self): + + localctx = Python3Parser.DictorsetmakerContext(self, self._ctx, self.state) + self.enterRule(localctx, 216, self.RULE_dictorsetmaker) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1360 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 187, self._ctx) + if la_ == 1: + self.state = 1318 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1312 + self.test() + self.state = 1313 + self.match(Python3Parser.COLON) + self.state = 1314 + self.test() + pass + elif token in [62]: + self.state = 1316 + self.match(Python3Parser.POWER) + self.state = 1317 + self.expr(0) + pass + else: + raise NoViableAltException(self) + + self.state = 1338 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [9, 22]: + self.state = 1320 + self.comp_for() + pass + elif token in [59, 78]: + self.state = 1332 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 179, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1321 + self.match(Python3Parser.COMMA) + self.state = 1328 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1322 + self.test() + self.state = 1323 + self.match(Python3Parser.COLON) + self.state = 1324 + self.test() + pass + elif token in [62]: + self.state = 1326 + self.match(Python3Parser.POWER) + self.state = 1327 + self.expr(0) + pass + else: + raise NoViableAltException(self) + + self.state = 1334 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 179, self._ctx) + + self.state = 1336 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1335 + self.match(Python3Parser.COMMA) + + pass + else: + raise NoViableAltException(self) + + pass + + elif la_ == 2: + self.state = 1342 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1340 + self.test() + pass + elif token in [56]: + self.state = 1341 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1358 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [9, 22]: + self.state = 1344 + self.comp_for() + pass + elif token in [59, 78]: + self.state = 1352 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 184, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1345 + self.match(Python3Parser.COMMA) + self.state = 1348 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.state = 1346 + self.test() + pass + elif token in [56]: + self.state = 1347 + self.star_expr() + pass + else: + raise NoViableAltException(self) + + self.state = 1354 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 184, self._ctx) + + self.state = 1356 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1355 + self.match(Python3Parser.COMMA) + + pass + else: + raise NoViableAltException(self) + + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ClassdefContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def CLASS(self): + return self.getToken(Python3Parser.CLASS, 0) + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def COLON(self): + return self.getToken(Python3Parser.COLON, 0) + + def block(self): + return self.getTypedRuleContext(Python3Parser.BlockContext, 0) + + def OPEN_PAREN(self): + return self.getToken(Python3Parser.OPEN_PAREN, 0) + + def CLOSE_PAREN(self): + return self.getToken(Python3Parser.CLOSE_PAREN, 0) + + def arglist(self): + return self.getTypedRuleContext(Python3Parser.ArglistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_classdef + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterClassdef"): + listener.enterClassdef(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitClassdef"): + listener.exitClassdef(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitClassdef"): + return visitor.visitClassdef(self) + else: + return visitor.visitChildren(self) + + def classdef(self): + + localctx = Python3Parser.ClassdefContext(self, self._ctx, self.state) + self.enterRule(localctx, 218, self.RULE_classdef) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1362 + self.match(Python3Parser.CLASS) + self.state = 1363 + self.name() + self.state = 1369 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 57: + self.state = 1364 + self.match(Python3Parser.OPEN_PAREN) + self.state = 1366 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 4863924168670839832) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1365 + self.arglist() + + self.state = 1368 + self.match(Python3Parser.CLOSE_PAREN) + + self.state = 1371 + self.match(Python3Parser.COLON) + self.state = 1372 + self.block() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArglistContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def argument(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.ArgumentContext) + else: + return self.getTypedRuleContext(Python3Parser.ArgumentContext, i) + + def COMMA(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.COMMA) + else: + return self.getToken(Python3Parser.COMMA, i) + + def getRuleIndex(self): + return Python3Parser.RULE_arglist + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArglist"): + listener.enterArglist(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArglist"): + listener.exitArglist(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArglist"): + return visitor.visitArglist(self) + else: + return visitor.visitChildren(self) + + def arglist(self): + + localctx = Python3Parser.ArglistContext(self, self._ctx, self.state) + self.enterRule(localctx, 220, self.RULE_arglist) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1374 + self.argument() + self.state = 1379 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 190, self._ctx) + while _alt != 2 and _alt != ATN.INVALID_ALT_NUMBER: + if _alt == 1: + self.state = 1375 + self.match(Python3Parser.COMMA) + self.state = 1376 + self.argument() + self.state = 1381 + self._errHandler.sync(self) + _alt = self._interp.adaptivePredict(self._input, 190, self._ctx) + + self.state = 1383 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 59: + self.state = 1382 + self.match(Python3Parser.COMMA) + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class ArgumentContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def test(self, i: int = None): + if i is None: + return self.getTypedRuleContexts(Python3Parser.TestContext) + else: + return self.getTypedRuleContext(Python3Parser.TestContext, i) + + def ASSIGN(self): + return self.getToken(Python3Parser.ASSIGN, 0) + + def POWER(self): + return self.getToken(Python3Parser.POWER, 0) + + def STAR(self): + return self.getToken(Python3Parser.STAR, 0) + + def comp_for(self): + return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_argument + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterArgument"): + listener.enterArgument(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitArgument"): + listener.exitArgument(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitArgument"): + return visitor.visitArgument(self) + else: + return visitor.visitChildren(self) + + def argument(self): + + localctx = Python3Parser.ArgumentContext(self, self._ctx, self.state) + self.enterRule(localctx, 222, self.RULE_argument) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1397 + self._errHandler.sync(self) + la_ = self._interp.adaptivePredict(self._input, 193, self._ctx) + if la_ == 1: + self.state = 1385 + self.test() + self.state = 1387 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 9 or _la == 22: + self.state = 1386 + self.comp_for() + + pass + + elif la_ == 2: + self.state = 1389 + self.test() + self.state = 1390 + self.match(Python3Parser.ASSIGN) + self.state = 1391 + self.test() + pass + + elif la_ == 3: + self.state = 1393 + self.match(Python3Parser.POWER) + self.state = 1394 + self.test() + pass + + elif la_ == 4: + self.state = 1395 + self.match(Python3Parser.STAR) + self.state = 1396 + self.test() + pass + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Comp_iterContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def comp_for(self): + return self.getTypedRuleContext(Python3Parser.Comp_forContext, 0) + + def comp_if(self): + return self.getTypedRuleContext(Python3Parser.Comp_ifContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_comp_iter + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComp_iter"): + listener.enterComp_iter(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitComp_iter"): + listener.exitComp_iter(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComp_iter"): + return visitor.visitComp_iter(self) + else: + return visitor.visitChildren(self) + + def comp_iter(self): + + localctx = Python3Parser.Comp_iterContext(self, self._ctx, self.state) + self.enterRule(localctx, 224, self.RULE_comp_iter) + try: + self.state = 1401 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [9, 22]: + self.enterOuterAlt(localctx, 1) + self.state = 1399 + self.comp_for() + pass + elif token in [25]: + self.enterOuterAlt(localctx, 2) + self.state = 1400 + self.comp_if() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Comp_forContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FOR(self): + return self.getToken(Python3Parser.FOR, 0) + + def exprlist(self): + return self.getTypedRuleContext(Python3Parser.ExprlistContext, 0) + + def IN(self): + return self.getToken(Python3Parser.IN, 0) + + def or_test(self): + return self.getTypedRuleContext(Python3Parser.Or_testContext, 0) + + def ASYNC(self): + return self.getToken(Python3Parser.ASYNC, 0) + + def comp_iter(self): + return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_comp_for + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComp_for"): + listener.enterComp_for(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, +): + listener.exitComp_for(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComp_for"): + return visitor.visitComp_for(self) + else: + return visitor.visitChildren(self) + + def comp_for(self): + + localctx = Python3Parser.Comp_forContext(self, self._ctx, self.state) + self.enterRule(localctx, 226, self.RULE_comp_for) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1404 + self._errHandler.sync(self) + _la = self._input.LA(1) + if _la == 9: + self.state = 1403 + self.match(Python3Parser.ASYNC) + + self.state = 1406 + self.match(Python3Parser.FOR) + self.state = 1407 + self.exprlist() + self.state = 1408 + self.match(Python3Parser.IN) + self.state = 1409 + self.or_test() + self.state = 1411 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0): + self.state = 1410 + self.comp_iter() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Comp_ifContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def IF(self): + return self.getToken(Python3Parser.IF, 0) + + def test_nocond(self): + return self.getTypedRuleContext(Python3Parser.Test_nocondContext, 0) + + def comp_iter(self): + return self.getTypedRuleContext(Python3Parser.Comp_iterContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_comp_if + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterComp_if"): + listener.enterComp_if(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitComp_if"): + listener.exitComp_if(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitComp_if"): + return visitor.visitComp_if(self) + else: + return visitor.visitChildren(self) + + def comp_if(self): + + localctx = Python3Parser.Comp_ifContext(self, self._ctx, self.state) + self.enterRule(localctx, 228, self.RULE_comp_if) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1413 + self.match(Python3Parser.IF) + self.state = 1414 + self.test_nocond() + self.state = 1416 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 37749248) != 0): + self.state = 1415 + self.comp_iter() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Encoding_declContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def name(self): + return self.getTypedRuleContext(Python3Parser.NameContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_encoding_decl + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterEncoding_decl"): + listener.enterEncoding_decl(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitEncoding_decl"): + listener.exitEncoding_decl(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitEncoding_decl"): + return visitor.visitEncoding_decl(self) + else: + return visitor.visitChildren(self) + + def encoding_decl(self): + + localctx = Python3Parser.Encoding_declContext(self, self._ctx, self.state) + self.enterRule(localctx, 230, self.RULE_encoding_decl) + try: + self.enterOuterAlt(localctx, 1) + self.state = 1418 + self.name() + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Yield_exprContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def YIELD(self): + return self.getToken(Python3Parser.YIELD, 0) + + def yield_arg(self): + return self.getTypedRuleContext(Python3Parser.Yield_argContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_yield_expr + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterYield_expr"): + listener.enterYield_expr(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitYield_expr"): + listener.exitYield_expr(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitYield_expr"): + return visitor.visitYield_expr(self) + else: + return visitor.visitChildren(self) + + def yield_expr(self): + + localctx = Python3Parser.Yield_exprContext(self, self._ctx, self.state) + self.enterRule(localctx, 232, self.RULE_yield_expr) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1420 + self.match(Python3Parser.YIELD) + self.state = 1422 + self._errHandler.sync(self) + _la = self._input.LA(1) + if (((_la) & ~0x3f) == 0 and ((1 << _la) & 180180556213912600) != 0) or ( + (((_la - 64)) & ~0x3f) == 0 and ((1 << (_la - 64)) & 12673) != 0): + self.state = 1421 + self.yield_arg() + + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class Yield_argContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def FROM(self): + return self.getToken(Python3Parser.FROM, 0) + + def test(self): + return self.getTypedRuleContext(Python3Parser.TestContext, 0) + + def testlist(self): + return self.getTypedRuleContext(Python3Parser.TestlistContext, 0) + + def getRuleIndex(self): + return Python3Parser.RULE_yield_arg + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterYield_arg"): + listener.enterYield_arg(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitYield_arg"): + listener.exitYield_arg(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitYield_arg"): + return visitor.visitYield_arg(self) + else: + return visitor.visitChildren(self) + + def yield_arg(self): + + localctx = Python3Parser.Yield_argContext(self, self._ctx, self.state) + self.enterRule(localctx, 234, self.RULE_yield_arg) + try: + self.state = 1427 + self._errHandler.sync(self) + token = self._input.LA(1) + if token in [23]: + self.enterOuterAlt(localctx, 1) + self.state = 1424 + self.match(Python3Parser.FROM) + self.state = 1425 + self.test() + pass + elif token in [3, 4, 10, 20, 29, 30, 31, 33, 38, 40, 45, 55, 57, 64, 71, 72, 76, 77]: + self.enterOuterAlt(localctx, 2) + self.state = 1426 + self.testlist() + pass + else: + raise NoViableAltException(self) + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + class StringsContext(ParserRuleContext): + __slots__ = 'parser' + + def __init__(self, parser, parent: ParserRuleContext = None, invokingState: int = -1): + super().__init__(parent, invokingState) + self.parser = parser + + def STRING(self, i: int = None): + if i is None: + return self.getTokens(Python3Parser.STRING) + else: + return self.getToken(Python3Parser.STRING, i) + + def getRuleIndex(self): + return Python3Parser.RULE_strings + + def enterRule(self, listener: ParseTreeListener): + if hasattr(listener, "enterStrings"): + listener.enterStrings(self) + + def exitRule(self, listener: ParseTreeListener): + if hasattr(listener, "exitStrings"): + listener.exitStrings(self) + + def accept(self, visitor: ParseTreeVisitor): + if hasattr(visitor, "visitStrings"): + return visitor.visitStrings(self) + else: + return visitor.visitChildren(self) + + def strings(self): + + localctx = Python3Parser.StringsContext(self, self._ctx, self.state) + self.enterRule(localctx, 236, self.RULE_strings) + self._la = 0 # Token type + try: + self.enterOuterAlt(localctx, 1) + self.state = 1430 + self._errHandler.sync(self) + _la = self._input.LA(1) + while True: + self.state = 1429 + self.match(Python3Parser.STRING) + self.state = 1432 + self._errHandler.sync(self) + _la = self._input.LA(1) + if not (_la == 3): + break + + except RecognitionException as re: + localctx.exception = re + self._errHandler.reportError(self, re) + self._errHandler.recover(self, re) + finally: + self.exitRule() + return localctx + + def sempred(self, localctx: RuleContext, ruleIndex: int, predIndex: int): + if self._predicates == None: + self._predicates = dict() + self._predicates[60] = self.literal_pattern_sempred + self._predicates[61] = self.literal_expr_sempred + self._predicates[68] = self.pattern_capture_target_sempred + self._predicates[70] = self.value_pattern_sempred + self._predicates[97] = self.expr_sempred + pred = self._predicates.get(ruleIndex, None) + if pred is None: + raise Exception("No predicate with index:" + str(ruleIndex)) + else: + return pred(localctx, predIndex) + + def literal_pattern_sempred(self, localctx: Literal_patternContext, predIndex: int): + if predIndex == 0: + return self.CannotBePlusMinus() + + def literal_expr_sempred(self, localctx: Literal_exprContext, predIndex: int): + if predIndex == 1: + return self.CannotBePlusMinus() + + def pattern_capture_target_sempred(self, localctx: Pattern_capture_targetContext, predIndex: int): + if predIndex == 2: + return self.CannotBeDotLpEq() + + def value_pattern_sempred(self, localctx: Value_patternContext, predIndex: int): + if predIndex == 3: + return self.CannotBeDotLpEq() + + def expr_sempred(self, localctx: ExprContext, predIndex: int): + if predIndex == 4: + return self.precpred(self._ctx, 8) + + if predIndex == 5: + return self.precpred(self._ctx, 6) + + if predIndex == 6: + return self.precpred(self._ctx, 5) + + if predIndex == 7: + return self.precpred(self._ctx, 4) + + if predIndex == 8: + return self.precpred(self._ctx, 3) + + if predIndex == 9: + return self.precpred(self._ctx, 2) + + if predIndex == 10: + return self.precpred(self._ctx, 1) + + + diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py new file mode 100644 index 000000000..ed67f5c29 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserBase.py @@ -0,0 +1,10 @@ +from antlr4 import * + + +class Python3ParserBase(Parser): + + def CannotBePlusMinus(self) -> bool: + return True + + def CannotBeDotLpEq(self) -> bool: + return True diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py new file mode 100644 index 000000000..8117a775d --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserListener.py @@ -0,0 +1,1083 @@ +# Generated from Python3Parser.g4 by ANTLR 4.13.1 +from antlr4 import * +if "." in __name__: + from .Python3Parser import Python3Parser +else: + from Python3Parser import Python3Parser + +# This class defines a complete listener for a parse tree produced by Python3Parser. +class Python3ParserListener(ParseTreeListener): + + # Enter a parse tree produced by Python3Parser#single_input. + def enterSingle_input(self, ctx:Python3Parser.Single_inputContext): + pass + + # Exit a parse tree produced by Python3Parser#single_input. + def exitSingle_input(self, ctx:Python3Parser.Single_inputContext): + pass + + + # Enter a parse tree produced by Python3Parser#file_input. + def enterFile_input(self, ctx:Python3Parser.File_inputContext): + pass + + # Exit a parse tree produced by Python3Parser#file_input. + def exitFile_input(self, ctx:Python3Parser.File_inputContext): + pass + + + # Enter a parse tree produced by Python3Parser#eval_input. + def enterEval_input(self, ctx:Python3Parser.Eval_inputContext): + pass + + # Exit a parse tree produced by Python3Parser#eval_input. + def exitEval_input(self, ctx:Python3Parser.Eval_inputContext): + pass + + + # Enter a parse tree produced by Python3Parser#decorator. + def enterDecorator(self, ctx:Python3Parser.DecoratorContext): + pass + + # Exit a parse tree produced by Python3Parser#decorator. + def exitDecorator(self, ctx:Python3Parser.DecoratorContext): + pass + + + # Enter a parse tree produced by Python3Parser#decorators. + def enterDecorators(self, ctx:Python3Parser.DecoratorsContext): + pass + + # Exit a parse tree produced by Python3Parser#decorators. + def exitDecorators(self, ctx:Python3Parser.DecoratorsContext): + pass + + + # Enter a parse tree produced by Python3Parser#decorated. + def enterDecorated(self, ctx:Python3Parser.DecoratedContext): + pass + + # Exit a parse tree produced by Python3Parser#decorated. + def exitDecorated(self, ctx:Python3Parser.DecoratedContext): + pass + + + # Enter a parse tree produced by Python3Parser#async_funcdef. + def enterAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext): + pass + + # Exit a parse tree produced by Python3Parser#async_funcdef. + def exitAsync_funcdef(self, ctx:Python3Parser.Async_funcdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#funcdef. + def enterFuncdef(self, ctx:Python3Parser.FuncdefContext): + pass + + # Exit a parse tree produced by Python3Parser#funcdef. + def exitFuncdef(self, ctx:Python3Parser.FuncdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#parameters. + def enterParameters(self, ctx:Python3Parser.ParametersContext): + pass + + # Exit a parse tree produced by Python3Parser#parameters. + def exitParameters(self, ctx:Python3Parser.ParametersContext): + pass + + + # Enter a parse tree produced by Python3Parser#typedargslist. + def enterTypedargslist(self, ctx:Python3Parser.TypedargslistContext): + pass + + # Exit a parse tree produced by Python3Parser#typedargslist. + def exitTypedargslist(self, ctx:Python3Parser.TypedargslistContext): + pass + + + # Enter a parse tree produced by Python3Parser#tfpdef. + def enterTfpdef(self, ctx:Python3Parser.TfpdefContext): + pass + + # Exit a parse tree produced by Python3Parser#tfpdef. + def exitTfpdef(self, ctx:Python3Parser.TfpdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#varargslist. + def enterVarargslist(self, ctx:Python3Parser.VarargslistContext): + pass + + # Exit a parse tree produced by Python3Parser#varargslist. + def exitVarargslist(self, ctx:Python3Parser.VarargslistContext): + pass + + + # Enter a parse tree produced by Python3Parser#vfpdef. + def enterVfpdef(self, ctx:Python3Parser.VfpdefContext): + pass + + # Exit a parse tree produced by Python3Parser#vfpdef. + def exitVfpdef(self, ctx:Python3Parser.VfpdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#stmt. + def enterStmt(self, ctx:Python3Parser.StmtContext): + pass + + # Exit a parse tree produced by Python3Parser#stmt. + def exitStmt(self, ctx:Python3Parser.StmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#simple_stmts. + def enterSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext): + pass + + # Exit a parse tree produced by Python3Parser#simple_stmts. + def exitSimple_stmts(self, ctx:Python3Parser.Simple_stmtsContext): + pass + + + # Enter a parse tree produced by Python3Parser#simple_stmt. + def enterSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#simple_stmt. + def exitSimple_stmt(self, ctx:Python3Parser.Simple_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#expr_stmt. + def enterExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#expr_stmt. + def exitExpr_stmt(self, ctx:Python3Parser.Expr_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#annassign. + def enterAnnassign(self, ctx:Python3Parser.AnnassignContext): + pass + + # Exit a parse tree produced by Python3Parser#annassign. + def exitAnnassign(self, ctx:Python3Parser.AnnassignContext): + pass + + + # Enter a parse tree produced by Python3Parser#testlist_star_expr. + def enterTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#testlist_star_expr. + def exitTestlist_star_expr(self, ctx:Python3Parser.Testlist_star_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#augassign. + def enterAugassign(self, ctx:Python3Parser.AugassignContext): + pass + + # Exit a parse tree produced by Python3Parser#augassign. + def exitAugassign(self, ctx:Python3Parser.AugassignContext): + pass + + + # Enter a parse tree produced by Python3Parser#del_stmt. + def enterDel_stmt(self, ctx:Python3Parser.Del_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#del_stmt. + def exitDel_stmt(self, ctx:Python3Parser.Del_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#pass_stmt. + def enterPass_stmt(self, ctx:Python3Parser.Pass_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#pass_stmt. + def exitPass_stmt(self, ctx:Python3Parser.Pass_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#flow_stmt. + def enterFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#flow_stmt. + def exitFlow_stmt(self, ctx:Python3Parser.Flow_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#break_stmt. + def enterBreak_stmt(self, ctx:Python3Parser.Break_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#break_stmt. + def exitBreak_stmt(self, ctx:Python3Parser.Break_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#continue_stmt. + def enterContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#continue_stmt. + def exitContinue_stmt(self, ctx:Python3Parser.Continue_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#return_stmt. + def enterReturn_stmt(self, ctx:Python3Parser.Return_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#return_stmt. + def exitReturn_stmt(self, ctx:Python3Parser.Return_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#yield_stmt. + def enterYield_stmt(self, ctx:Python3Parser.Yield_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#yield_stmt. + def exitYield_stmt(self, ctx:Python3Parser.Yield_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#raise_stmt. + def enterRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#raise_stmt. + def exitRaise_stmt(self, ctx:Python3Parser.Raise_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#import_stmt. + def enterImport_stmt(self, ctx:Python3Parser.Import_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#import_stmt. + def exitImport_stmt(self, ctx:Python3Parser.Import_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#import_name. + def enterImport_name(self, ctx:Python3Parser.Import_nameContext): + pass + + # Exit a parse tree produced by Python3Parser#import_name. + def exitImport_name(self, ctx:Python3Parser.Import_nameContext): + pass + + + # Enter a parse tree produced by Python3Parser#import_from. + def enterImport_from(self, ctx:Python3Parser.Import_fromContext): + pass + + # Exit a parse tree produced by Python3Parser#import_from. + def exitImport_from(self, ctx:Python3Parser.Import_fromContext): + pass + + + # Enter a parse tree produced by Python3Parser#import_as_name. + def enterImport_as_name(self, ctx:Python3Parser.Import_as_nameContext): + pass + + # Exit a parse tree produced by Python3Parser#import_as_name. + def exitImport_as_name(self, ctx:Python3Parser.Import_as_nameContext): + pass + + + # Enter a parse tree produced by Python3Parser#dotted_as_name. + def enterDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext): + pass + + # Exit a parse tree produced by Python3Parser#dotted_as_name. + def exitDotted_as_name(self, ctx:Python3Parser.Dotted_as_nameContext): + pass + + + # Enter a parse tree produced by Python3Parser#import_as_names. + def enterImport_as_names(self, ctx:Python3Parser.Import_as_namesContext): + pass + + # Exit a parse tree produced by Python3Parser#import_as_names. + def exitImport_as_names(self, ctx:Python3Parser.Import_as_namesContext): + pass + + + # Enter a parse tree produced by Python3Parser#dotted_as_names. + def enterDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext): + pass + + # Exit a parse tree produced by Python3Parser#dotted_as_names. + def exitDotted_as_names(self, ctx:Python3Parser.Dotted_as_namesContext): + pass + + + # Enter a parse tree produced by Python3Parser#dotted_name. + def enterDotted_name(self, ctx:Python3Parser.Dotted_nameContext): + pass + + # Exit a parse tree produced by Python3Parser#dotted_name. + def exitDotted_name(self, ctx:Python3Parser.Dotted_nameContext): + pass + + + # Enter a parse tree produced by Python3Parser#global_stmt. + def enterGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#global_stmt. + def exitGlobal_stmt(self, ctx:Python3Parser.Global_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#nonlocal_stmt. + def enterNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#nonlocal_stmt. + def exitNonlocal_stmt(self, ctx:Python3Parser.Nonlocal_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#assert_stmt. + def enterAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#assert_stmt. + def exitAssert_stmt(self, ctx:Python3Parser.Assert_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#compound_stmt. + def enterCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#compound_stmt. + def exitCompound_stmt(self, ctx:Python3Parser.Compound_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#async_stmt. + def enterAsync_stmt(self, ctx:Python3Parser.Async_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#async_stmt. + def exitAsync_stmt(self, ctx:Python3Parser.Async_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#if_stmt. + def enterIf_stmt(self, ctx:Python3Parser.If_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#if_stmt. + def exitIf_stmt(self, ctx:Python3Parser.If_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#while_stmt. + def enterWhile_stmt(self, ctx:Python3Parser.While_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#while_stmt. + def exitWhile_stmt(self, ctx:Python3Parser.While_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#for_stmt. + def enterFor_stmt(self, ctx:Python3Parser.For_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#for_stmt. + def exitFor_stmt(self, ctx:Python3Parser.For_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#try_stmt. + def enterTry_stmt(self, ctx:Python3Parser.Try_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#try_stmt. + def exitTry_stmt(self, ctx:Python3Parser.Try_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#with_stmt. + def enterWith_stmt(self, ctx:Python3Parser.With_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#with_stmt. + def exitWith_stmt(self, ctx:Python3Parser.With_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#with_item. + def enterWith_item(self, ctx:Python3Parser.With_itemContext): + pass + + # Exit a parse tree produced by Python3Parser#with_item. + def exitWith_item(self, ctx:Python3Parser.With_itemContext): + pass + + + # Enter a parse tree produced by Python3Parser#except_clause. + def enterExcept_clause(self, ctx:Python3Parser.Except_clauseContext): + pass + + # Exit a parse tree produced by Python3Parser#except_clause. + def exitExcept_clause(self, ctx:Python3Parser.Except_clauseContext): + pass + + + # Enter a parse tree produced by Python3Parser#block. + def enterBlock(self, ctx:Python3Parser.BlockContext): + pass + + # Exit a parse tree produced by Python3Parser#block. + def exitBlock(self, ctx:Python3Parser.BlockContext): + pass + + + # Enter a parse tree produced by Python3Parser#match_stmt. + def enterMatch_stmt(self, ctx:Python3Parser.Match_stmtContext): + pass + + # Exit a parse tree produced by Python3Parser#match_stmt. + def exitMatch_stmt(self, ctx:Python3Parser.Match_stmtContext): + pass + + + # Enter a parse tree produced by Python3Parser#subject_expr. + def enterSubject_expr(self, ctx:Python3Parser.Subject_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#subject_expr. + def exitSubject_expr(self, ctx:Python3Parser.Subject_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#star_named_expressions. + def enterStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext): + pass + + # Exit a parse tree produced by Python3Parser#star_named_expressions. + def exitStar_named_expressions(self, ctx:Python3Parser.Star_named_expressionsContext): + pass + + + # Enter a parse tree produced by Python3Parser#star_named_expression. + def enterStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext): + pass + + # Exit a parse tree produced by Python3Parser#star_named_expression. + def exitStar_named_expression(self, ctx:Python3Parser.Star_named_expressionContext): + pass + + + # Enter a parse tree produced by Python3Parser#case_block. + def enterCase_block(self, ctx:Python3Parser.Case_blockContext): + pass + + # Exit a parse tree produced by Python3Parser#case_block. + def exitCase_block(self, ctx:Python3Parser.Case_blockContext): + pass + + + # Enter a parse tree produced by Python3Parser#guard. + def enterGuard(self, ctx:Python3Parser.GuardContext): + pass + + # Exit a parse tree produced by Python3Parser#guard. + def exitGuard(self, ctx:Python3Parser.GuardContext): + pass + + + # Enter a parse tree produced by Python3Parser#patterns. + def enterPatterns(self, ctx:Python3Parser.PatternsContext): + pass + + # Exit a parse tree produced by Python3Parser#patterns. + def exitPatterns(self, ctx:Python3Parser.PatternsContext): + pass + + + # Enter a parse tree produced by Python3Parser#pattern. + def enterPattern(self, ctx:Python3Parser.PatternContext): + pass + + # Exit a parse tree produced by Python3Parser#pattern. + def exitPattern(self, ctx:Python3Parser.PatternContext): + pass + + + # Enter a parse tree produced by Python3Parser#as_pattern. + def enterAs_pattern(self, ctx:Python3Parser.As_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#as_pattern. + def exitAs_pattern(self, ctx:Python3Parser.As_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#or_pattern. + def enterOr_pattern(self, ctx:Python3Parser.Or_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#or_pattern. + def exitOr_pattern(self, ctx:Python3Parser.Or_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#closed_pattern. + def enterClosed_pattern(self, ctx:Python3Parser.Closed_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#closed_pattern. + def exitClosed_pattern(self, ctx:Python3Parser.Closed_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#literal_pattern. + def enterLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#literal_pattern. + def exitLiteral_pattern(self, ctx:Python3Parser.Literal_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#literal_expr. + def enterLiteral_expr(self, ctx:Python3Parser.Literal_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#literal_expr. + def exitLiteral_expr(self, ctx:Python3Parser.Literal_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#complex_number. + def enterComplex_number(self, ctx:Python3Parser.Complex_numberContext): + pass + + # Exit a parse tree produced by Python3Parser#complex_number. + def exitComplex_number(self, ctx:Python3Parser.Complex_numberContext): + pass + + + # Enter a parse tree produced by Python3Parser#signed_number. + def enterSigned_number(self, ctx:Python3Parser.Signed_numberContext): + pass + + # Exit a parse tree produced by Python3Parser#signed_number. + def exitSigned_number(self, ctx:Python3Parser.Signed_numberContext): + pass + + + # Enter a parse tree produced by Python3Parser#signed_real_number. + def enterSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext): + pass + + # Exit a parse tree produced by Python3Parser#signed_real_number. + def exitSigned_real_number(self, ctx:Python3Parser.Signed_real_numberContext): + pass + + + # Enter a parse tree produced by Python3Parser#real_number. + def enterReal_number(self, ctx:Python3Parser.Real_numberContext): + pass + + # Exit a parse tree produced by Python3Parser#real_number. + def exitReal_number(self, ctx:Python3Parser.Real_numberContext): + pass + + + # Enter a parse tree produced by Python3Parser#imaginary_number. + def enterImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext): + pass + + # Exit a parse tree produced by Python3Parser#imaginary_number. + def exitImaginary_number(self, ctx:Python3Parser.Imaginary_numberContext): + pass + + + # Enter a parse tree produced by Python3Parser#capture_pattern. + def enterCapture_pattern(self, ctx:Python3Parser.Capture_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#capture_pattern. + def exitCapture_pattern(self, ctx:Python3Parser.Capture_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#pattern_capture_target. + def enterPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext): + pass + + # Exit a parse tree produced by Python3Parser#pattern_capture_target. + def exitPattern_capture_target(self, ctx:Python3Parser.Pattern_capture_targetContext): + pass + + + # Enter a parse tree produced by Python3Parser#wildcard_pattern. + def enterWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#wildcard_pattern. + def exitWildcard_pattern(self, ctx:Python3Parser.Wildcard_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#value_pattern. + def enterValue_pattern(self, ctx:Python3Parser.Value_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#value_pattern. + def exitValue_pattern(self, ctx:Python3Parser.Value_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#attr. + def enterAttr(self, ctx:Python3Parser.AttrContext): + pass + + # Exit a parse tree produced by Python3Parser#attr. + def exitAttr(self, ctx:Python3Parser.AttrContext): + pass + + + # Enter a parse tree produced by Python3Parser#name_or_attr. + def enterName_or_attr(self, ctx:Python3Parser.Name_or_attrContext): + pass + + # Exit a parse tree produced by Python3Parser#name_or_attr. + def exitName_or_attr(self, ctx:Python3Parser.Name_or_attrContext): + pass + + + # Enter a parse tree produced by Python3Parser#group_pattern. + def enterGroup_pattern(self, ctx:Python3Parser.Group_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#group_pattern. + def exitGroup_pattern(self, ctx:Python3Parser.Group_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#sequence_pattern. + def enterSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#sequence_pattern. + def exitSequence_pattern(self, ctx:Python3Parser.Sequence_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#open_sequence_pattern. + def enterOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#open_sequence_pattern. + def exitOpen_sequence_pattern(self, ctx:Python3Parser.Open_sequence_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#maybe_sequence_pattern. + def enterMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#maybe_sequence_pattern. + def exitMaybe_sequence_pattern(self, ctx:Python3Parser.Maybe_sequence_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#maybe_star_pattern. + def enterMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#maybe_star_pattern. + def exitMaybe_star_pattern(self, ctx:Python3Parser.Maybe_star_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#star_pattern. + def enterStar_pattern(self, ctx:Python3Parser.Star_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#star_pattern. + def exitStar_pattern(self, ctx:Python3Parser.Star_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#mapping_pattern. + def enterMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#mapping_pattern. + def exitMapping_pattern(self, ctx:Python3Parser.Mapping_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#items_pattern. + def enterItems_pattern(self, ctx:Python3Parser.Items_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#items_pattern. + def exitItems_pattern(self, ctx:Python3Parser.Items_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#key_value_pattern. + def enterKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#key_value_pattern. + def exitKey_value_pattern(self, ctx:Python3Parser.Key_value_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#double_star_pattern. + def enterDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#double_star_pattern. + def exitDouble_star_pattern(self, ctx:Python3Parser.Double_star_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#class_pattern. + def enterClass_pattern(self, ctx:Python3Parser.Class_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#class_pattern. + def exitClass_pattern(self, ctx:Python3Parser.Class_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#positional_patterns. + def enterPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext): + pass + + # Exit a parse tree produced by Python3Parser#positional_patterns. + def exitPositional_patterns(self, ctx:Python3Parser.Positional_patternsContext): + pass + + + # Enter a parse tree produced by Python3Parser#keyword_patterns. + def enterKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext): + pass + + # Exit a parse tree produced by Python3Parser#keyword_patterns. + def exitKeyword_patterns(self, ctx:Python3Parser.Keyword_patternsContext): + pass + + + # Enter a parse tree produced by Python3Parser#keyword_pattern. + def enterKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext): + pass + + # Exit a parse tree produced by Python3Parser#keyword_pattern. + def exitKeyword_pattern(self, ctx:Python3Parser.Keyword_patternContext): + pass + + + # Enter a parse tree produced by Python3Parser#test. + def enterTest(self, ctx:Python3Parser.TestContext): + pass + + # Exit a parse tree produced by Python3Parser#test. + def exitTest(self, ctx:Python3Parser.TestContext): + pass + + + # Enter a parse tree produced by Python3Parser#test_nocond. + def enterTest_nocond(self, ctx:Python3Parser.Test_nocondContext): + pass + + # Exit a parse tree produced by Python3Parser#test_nocond. + def exitTest_nocond(self, ctx:Python3Parser.Test_nocondContext): + pass + + + # Enter a parse tree produced by Python3Parser#lambdef. + def enterLambdef(self, ctx:Python3Parser.LambdefContext): + pass + + # Exit a parse tree produced by Python3Parser#lambdef. + def exitLambdef(self, ctx:Python3Parser.LambdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#lambdef_nocond. + def enterLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext): + pass + + # Exit a parse tree produced by Python3Parser#lambdef_nocond. + def exitLambdef_nocond(self, ctx:Python3Parser.Lambdef_nocondContext): + pass + + + # Enter a parse tree produced by Python3Parser#or_test. + def enterOr_test(self, ctx:Python3Parser.Or_testContext): + pass + + # Exit a parse tree produced by Python3Parser#or_test. + def exitOr_test(self, ctx:Python3Parser.Or_testContext): + pass + + + # Enter a parse tree produced by Python3Parser#and_test. + def enterAnd_test(self, ctx:Python3Parser.And_testContext): + pass + + # Exit a parse tree produced by Python3Parser#and_test. + def exitAnd_test(self, ctx:Python3Parser.And_testContext): + pass + + + # Enter a parse tree produced by Python3Parser#not_test. + def enterNot_test(self, ctx:Python3Parser.Not_testContext): + pass + + # Exit a parse tree produced by Python3Parser#not_test. + def exitNot_test(self, ctx:Python3Parser.Not_testContext): + pass + + + # Enter a parse tree produced by Python3Parser#comparison. + def enterComparison(self, ctx:Python3Parser.ComparisonContext): + pass + + # Exit a parse tree produced by Python3Parser#comparison. + def exitComparison(self, ctx:Python3Parser.ComparisonContext): + pass + + + # Enter a parse tree produced by Python3Parser#comp_op. + def enterComp_op(self, ctx:Python3Parser.Comp_opContext): + pass + + # Exit a parse tree produced by Python3Parser#comp_op. + def exitComp_op(self, ctx:Python3Parser.Comp_opContext): + pass + + + # Enter a parse tree produced by Python3Parser#star_expr. + def enterStar_expr(self, ctx:Python3Parser.Star_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#star_expr. + def exitStar_expr(self, ctx:Python3Parser.Star_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#expr. + def enterExpr(self, ctx:Python3Parser.ExprContext): + pass + + # Exit a parse tree produced by Python3Parser#expr. + def exitExpr(self, ctx:Python3Parser.ExprContext): + pass + + + # Enter a parse tree produced by Python3Parser#atom_expr. + def enterAtom_expr(self, ctx:Python3Parser.Atom_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#atom_expr. + def exitAtom_expr(self, ctx:Python3Parser.Atom_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#atom. + def enterAtom(self, ctx:Python3Parser.AtomContext): + pass + + # Exit a parse tree produced by Python3Parser#atom. + def exitAtom(self, ctx:Python3Parser.AtomContext): + pass + + + # Enter a parse tree produced by Python3Parser#name. + def enterName(self, ctx:Python3Parser.NameContext): + pass + + # Exit a parse tree produced by Python3Parser#name. + def exitName(self, ctx:Python3Parser.NameContext): + pass + + + # Enter a parse tree produced by Python3Parser#testlist_comp. + def enterTestlist_comp(self, ctx:Python3Parser.Testlist_compContext): + pass + + # Exit a parse tree produced by Python3Parser#testlist_comp. + def exitTestlist_comp(self, ctx:Python3Parser.Testlist_compContext): + pass + + + # Enter a parse tree produced by Python3Parser#trailer. + def enterTrailer(self, ctx:Python3Parser.TrailerContext): + pass + + # Exit a parse tree produced by Python3Parser#trailer. + def exitTrailer(self, ctx:Python3Parser.TrailerContext): + pass + + + # Enter a parse tree produced by Python3Parser#subscriptlist. + def enterSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext): + pass + + # Exit a parse tree produced by Python3Parser#subscriptlist. + def exitSubscriptlist(self, ctx:Python3Parser.SubscriptlistContext): + pass + + + # Enter a parse tree produced by Python3Parser#subscript_. + def enterSubscript_(self, ctx:Python3Parser.Subscript_Context): + pass + + # Exit a parse tree produced by Python3Parser#subscript_. + def exitSubscript_(self, ctx:Python3Parser.Subscript_Context): + pass + + + # Enter a parse tree produced by Python3Parser#sliceop. + def enterSliceop(self, ctx:Python3Parser.SliceopContext): + pass + + # Exit a parse tree produced by Python3Parser#sliceop. + def exitSliceop(self, ctx:Python3Parser.SliceopContext): + pass + + + # Enter a parse tree produced by Python3Parser#exprlist. + def enterExprlist(self, ctx:Python3Parser.ExprlistContext): + pass + + # Exit a parse tree produced by Python3Parser#exprlist. + def exitExprlist(self, ctx:Python3Parser.ExprlistContext): + pass + + + # Enter a parse tree produced by Python3Parser#testlist. + def enterTestlist(self, ctx:Python3Parser.TestlistContext): + pass + + # Exit a parse tree produced by Python3Parser#testlist. + def exitTestlist(self, ctx:Python3Parser.TestlistContext): + pass + + + # Enter a parse tree produced by Python3Parser#dictorsetmaker. + def enterDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext): + pass + + # Exit a parse tree produced by Python3Parser#dictorsetmaker. + def exitDictorsetmaker(self, ctx:Python3Parser.DictorsetmakerContext): + pass + + + # Enter a parse tree produced by Python3Parser#classdef. + def enterClassdef(self, ctx:Python3Parser.ClassdefContext): + pass + + # Exit a parse tree produced by Python3Parser#classdef. + def exitClassdef(self, ctx:Python3Parser.ClassdefContext): + pass + + + # Enter a parse tree produced by Python3Parser#arglist. + def enterArglist(self, ctx:Python3Parser.ArglistContext): + pass + + # Exit a parse tree produced by Python3Parser#arglist. + def exitArglist(self, ctx:Python3Parser.ArglistContext): + pass + + + # Enter a parse tree produced by Python3Parser#argument. + def enterArgument(self, ctx:Python3Parser.ArgumentContext): + pass + + # Exit a parse tree produced by Python3Parser#argument. + def exitArgument(self, ctx:Python3Parser.ArgumentContext): + pass + + + # Enter a parse tree produced by Python3Parser#comp_iter. + def enterComp_iter(self, ctx:Python3Parser.Comp_iterContext): + pass + + # Exit a parse tree produced by Python3Parser#comp_iter. + def exitComp_iter(self, ctx:Python3Parser.Comp_iterContext): + pass + + + # Enter a parse tree produced by Python3Parser#comp_for. + def enterComp_for(self, ctx:Python3Parser.Comp_forContext): + pass + + # Exit a parse tree produced by Python3Parser#comp_for. + def exitComp_for(self, ctx:Python3Parser.Comp_forContext): + pass + + + # Enter a parse tree produced by Python3Parser#comp_if. + def enterComp_if(self, ctx:Python3Parser.Comp_ifContext): + pass + + # Exit a parse tree produced by Python3Parser#comp_if. + def exitComp_if(self, ctx:Python3Parser.Comp_ifContext): + pass + + + # Enter a parse tree produced by Python3Parser#encoding_decl. + def enterEncoding_decl(self, ctx:Python3Parser.Encoding_declContext): + pass + + # Exit a parse tree produced by Python3Parser#encoding_decl. + def exitEncoding_decl(self, ctx:Python3Parser.Encoding_declContext): + pass + + + # Enter a parse tree produced by Python3Parser#yield_expr. + def enterYield_expr(self, ctx:Python3Parser.Yield_exprContext): + pass + + # Exit a parse tree produced by Python3Parser#yield_expr. + def exitYield_expr(self, ctx:Python3Parser.Yield_exprContext): + pass + + + # Enter a parse tree produced by Python3Parser#yield_arg. + def enterYield_arg(self, ctx:Python3Parser.Yield_argContext): + pass + + # Exit a parse tree produced by Python3Parser#yield_arg. + def exitYield_arg(self, ctx:Python3Parser.Yield_argContext): + pass + + + # Enter a parse tree produced by Python3Parser#strings. + def enterStrings(self, ctx:Python3Parser.StringsContext): + pass + + # Exit a parse tree produced by Python3Parser#strings. + def exitStrings(self, ctx:Python3Parser.StringsContext): + pass + + + +del Python3Parser \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py new file mode 100644 index 000000000..2baaa2317 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/Python3ParserVisitor.py @@ -0,0 +1,491 @@ +# Generated from Python3Parser.g4 by ANTLR 4.13.1 +from antlr4 import * + +if "." in __name__: + from .Python3Parser import Python3Parser +else: + from Python3Parser import Python3Parser + + +# This class defines a complete generic visitor for a parse tree produced by Python3Parser. + +class Python3ParserVisitor(ParseTreeVisitor): + + # Visit a parse tree produced by Python3Parser#single_input. + def visitSingle_input(self, ctx: Python3Parser.Single_inputContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#file_input. + def visitFile_input(self, ctx: Python3Parser.File_inputContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#eval_input. + def visitEval_input(self, ctx: Python3Parser.Eval_inputContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#decorator. + def visitDecorator(self, ctx: Python3Parser.DecoratorContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#decorators. + def visitDecorators(self, ctx: Python3Parser.DecoratorsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#decorated. + def visitDecorated(self, ctx: Python3Parser.DecoratedContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#async_funcdef. + def visitAsync_funcdef(self, ctx: Python3Parser.Async_funcdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#funcdef. + def visitFuncdef(self, ctx: Python3Parser.FuncdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#parameters. + def visitParameters(self, ctx: Python3Parser.ParametersContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#typedargslist. + def visitTypedargslist(self, ctx: Python3Parser.TypedargslistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#tfpdef. + def visitTfpdef(self, ctx: Python3Parser.TfpdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#varargslist. + def visitVarargslist(self, ctx: Python3Parser.VarargslistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#vfpdef. + def visitVfpdef(self, ctx: Python3Parser.VfpdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#stmt. + def visitStmt(self, ctx: Python3Parser.StmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#simple_stmts. + def visitSimple_stmts(self, ctx: Python3Parser.Simple_stmtsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#simple_stmt. + def visitSimple_stmt(self, ctx: Python3Parser.Simple_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#expr_stmt. + def visitExpr_stmt(self, ctx: Python3Parser.Expr_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#annassign. + def visitAnnassign(self, ctx: Python3Parser.AnnassignContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#testlist_star_expr. + def visitTestlist_star_expr(self, ctx: Python3Parser.Testlist_star_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#augassign. + def visitAugassign(self, ctx: Python3Parser.AugassignContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#del_stmt. + def visitDel_stmt(self, ctx: Python3Parser.Del_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#pass_stmt. + def visitPass_stmt(self, ctx: Python3Parser.Pass_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#flow_stmt. + def visitFlow_stmt(self, ctx: Python3Parser.Flow_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#break_stmt. + def visitBreak_stmt(self, ctx: Python3Parser.Break_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#continue_stmt. + def visitContinue_stmt(self, ctx: Python3Parser.Continue_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#return_stmt. + def visitReturn_stmt(self, ctx: Python3Parser.Return_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#yield_stmt. + def visitYield_stmt(self, ctx: Python3Parser.Yield_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#raise_stmt. + def visitRaise_stmt(self, ctx: Python3Parser.Raise_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#import_stmt. + def visitImport_stmt(self, ctx: Python3Parser.Import_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#import_name. + def visitImport_name(self, ctx: Python3Parser.Import_nameContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#import_from. + def visitImport_from(self, ctx: Python3Parser.Import_fromContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#import_as_name. + def visitImport_as_name(self, ctx: Python3Parser.Import_as_nameContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#dotted_as_name. + def visitDotted_as_name(self, ctx: Python3Parser.Dotted_as_nameContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#import_as_names. + def visitImport_as_names(self, ctx: Python3Parser.Import_as_namesContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#dotted_as_names. + def visitDotted_as_names(self, ctx: Python3Parser.Dotted_as_namesContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#dotted_name. + def visitDotted_name(self, ctx: Python3Parser.Dotted_nameContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#global_stmt. + def visitGlobal_stmt(self, ctx: Python3Parser.Global_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#nonlocal_stmt. + def visitNonlocal_stmt(self, ctx: Python3Parser.Nonlocal_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#assert_stmt. + def visitAssert_stmt(self, ctx: Python3Parser.Assert_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#compound_stmt. + def visitCompound_stmt(self, ctx: Python3Parser.Compound_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#async_stmt. + def visitAsync_stmt(self, ctx: Python3Parser.Async_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#if_stmt. + def visitIf_stmt(self, ctx: Python3Parser.If_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#while_stmt. + def visitWhile_stmt(self, ctx: Python3Parser.While_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#for_stmt. + def visitFor_stmt(self, ctx: Python3Parser.For_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#try_stmt. + def visitTry_stmt(self, ctx: Python3Parser.Try_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#with_stmt. + def visitWith_stmt(self, ctx: Python3Parser.With_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#with_item. + def visitWith_item(self, ctx: Python3Parser.With_itemContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#except_clause. + def visitExcept_clause(self, ctx: Python3Parser.Except_clauseContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#block. + def visitBlock(self, ctx: Python3Parser.BlockContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#match_stmt. + def visitMatch_stmt(self, ctx: Python3Parser.Match_stmtContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#subject_expr. + def visitSubject_expr(self, ctx: Python3Parser.Subject_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#star_named_expressions. + def visitStar_named_expressions(self, ctx: Python3Parser.Star_named_expressionsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#star_named_expression. + def visitStar_named_expression(self, ctx: Python3Parser.Star_named_expressionContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#case_block. + def visitCase_block(self, ctx: Python3Parser.Case_blockContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#guard. + def visitGuard(self, ctx: Python3Parser.GuardContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#patterns. + def visitPatterns(self, ctx: Python3Parser.PatternsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#pattern. + def visitPattern(self, ctx: Python3Parser.PatternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#as_pattern. + def visitAs_pattern(self, ctx: Python3Parser.As_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#or_pattern. + def visitOr_pattern(self, ctx: Python3Parser.Or_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#closed_pattern. + def visitClosed_pattern(self, ctx: Python3Parser.Closed_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#literal_pattern. + def visitLiteral_pattern(self, ctx: Python3Parser.Literal_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#literal_expr. + def visitLiteral_expr(self, ctx: Python3Parser.Literal_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#complex_number. + def visitComplex_number(self, ctx: Python3Parser.Complex_numberContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#signed_number. + def visitSigned_number(self, ctx: Python3Parser.Signed_numberContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#signed_real_number. + def visitSigned_real_number(self, ctx: Python3Parser.Signed_real_numberContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#real_number. + def visitReal_number(self, ctx: Python3Parser.Real_numberContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#imaginary_number. + def visitImaginary_number(self, ctx: Python3Parser.Imaginary_numberContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#capture_pattern. + def visitCapture_pattern(self, ctx: Python3Parser.Capture_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#pattern_capture_target. + def visitPattern_capture_target(self, ctx: Python3Parser.Pattern_capture_targetContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#wildcard_pattern. + def visitWildcard_pattern(self, ctx: Python3Parser.Wildcard_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#value_pattern. + def visitValue_pattern(self, ctx: Python3Parser.Value_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#attr. + def visitAttr(self, ctx: Python3Parser.AttrContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#name_or_attr. + def visitName_or_attr(self, ctx: Python3Parser.Name_or_attrContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#group_pattern. + def visitGroup_pattern(self, ctx: Python3Parser.Group_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#sequence_pattern. + def visitSequence_pattern(self, ctx: Python3Parser.Sequence_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#open_sequence_pattern. + def visitOpen_sequence_pattern(self, ctx: Python3Parser.Open_sequence_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#maybe_sequence_pattern. + def visitMaybe_sequence_pattern(self, ctx: Python3Parser.Maybe_sequence_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#maybe_star_pattern. + def visitMaybe_star_pattern(self, ctx: Python3Parser.Maybe_star_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#star_pattern. + def visitStar_pattern(self, ctx: Python3Parser.Star_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#mapping_pattern. + def visitMapping_pattern(self, ctx: Python3Parser.Mapping_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#items_pattern. + def visitItems_pattern(self, ctx: Python3Parser.Items_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#key_value_pattern. + def visitKey_value_pattern(self, ctx: Python3Parser.Key_value_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#double_star_pattern. + def visitDouble_star_pattern(self, ctx: Python3Parser.Double_star_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#class_pattern. + def visitClass_pattern(self, ctx: Python3Parser.Class_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#positional_patterns. + def visitPositional_patterns(self, ctx: Python3Parser.Positional_patternsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#keyword_patterns. + def visitKeyword_patterns(self, ctx: Python3Parser.Keyword_patternsContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#keyword_pattern. + def visitKeyword_pattern(self, ctx: Python3Parser.Keyword_patternContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#test. + def visitTest(self, ctx: Python3Parser.TestContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#test_nocond. + def visitTest_nocond(self, ctx: Python3Parser.Test_nocondContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#lambdef. + def visitLambdef(self, ctx: Python3Parser.LambdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#lambdef_nocond. + def visitLambdef_nocond(self, ctx: Python3Parser.Lambdef_nocondContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#or_test. + def visitOr_test(self, ctx: Python3Parser.Or_testContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#and_test. + def visitAnd_test(self, ctx: Python3Parser.And_testContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#not_test. + def visitNot_test(self, ctx: Python3Parser.Not_testContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#comparison. + def visitComparison(self, ctx: Python3Parser.ComparisonContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#comp_op. + def visitComp_op(self, ctx: Python3Parser.Comp_opContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#star_expr. + def visitStar_expr(self, ctx: Python3Parser.Star_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#expr. + def visitExpr(self, ctx: Python3Parser.ExprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#atom_expr. + def visitAtom_expr(self, ctx: Python3Parser.Atom_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#atom. + def visitAtom(self, ctx: Python3Parser.AtomContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#name. + def visitName(self, ctx: Python3Parser.NameContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#testlist_comp. + def visitTestlist_comp(self, ctx: Python3Parser.Testlist_compContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#trailer. + def visitTrailer(self, ctx: Python3Parser.TrailerContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#subscriptlist. + def visitSubscriptlist(self, ctx: Python3Parser.SubscriptlistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#subscript_. + def visitSubscript_(self, ctx: Python3Parser.Subscript_Context): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#sliceop. + def visitSliceop(self, ctx: Python3Parser.SliceopContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#exprlist. + def visitExprlist(self, ctx: Python3Parser.ExprlistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#testlist. + def visitTestlist(self, ctx: Python3Parser.TestlistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#dictorsetmaker. + def visitDictorsetmaker(self, ctx: Python3Parser.DictorsetmakerContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#classdef. + def visitClassdef(self, ctx: Python3Parser.ClassdefContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#arglist. + def visitArglist(self, ctx: Python3Parser.ArglistContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#argument. + def visitArgument(self, ctx: Python3Parser.ArgumentContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#comp_iter. + def visitComp_iter(self, ctx: Python3Parser.Comp_iterContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#comp_for. + def visitComp_for(self, ctx: Python3Parser.Comp_forContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#comp_if. + def visitComp_if(self, ctx: Python3Parser.Comp_ifContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#encoding_decl. + def visitEncoding_decl(self, ctx: Python3Parser.Encoding_declContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#yield_expr. + def visitYield_expr(self, ctx: Python3Parser.Yield_exprContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#yield_arg. + def visitYield_arg(self, ctx: Python3Parser.Yield_argContext): + return self.visitChildren(ctx) + + # Visit a parse tree produced by Python3Parser#strings. + def visitStrings(self, ctx: Python3Parser.StringsContext): + return self.visitChildren(ctx) + + +del Python3Parser diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py new file mode 100644 index 000000000..e8bd60bf1 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/PythonAstVisitor.py @@ -0,0 +1,134 @@ +from antlr4 import * +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Lexer import Python3Lexer +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3Parser import Python3Parser +from module_programming_winnowing.convert_code_to_ast.languages.python.Python3ParserVisitor import Python3ParserVisitor + + +class RemoveVariableNames(Python3ParserVisitor): + def visitAtom(self, ctx): + name_ctx = ctx.name() + if name_ctx: + token = name_ctx.getToken(Python3Parser.NAME, 0) + if token: + token.text = 'x' + return self.visitChildren(ctx) + + +class CustomPythonVisitor(Python3ParserVisitor): + def __init__(self): + self.loop_count = 0 + self.if_count = 0 + self.method_count = 0 + + def visitWhile_stmt(self, ctx): + self.loop_count += 1 + return self.visitChildren(ctx) + + def visitFor_stmt(self, ctx): + self.loop_count += 1 + return self.visitChildren(ctx) + + def visitIf_stmt(self, ctx): + self.if_count += 1 + return self.visitChildren(ctx) + + def visitFuncdef(self, ctx): + self.method_count += 1 + return self.visitChildren(ctx) + + +def mutate(source_code: str): + input_stream = InputStream(source_code) + lexer = Python3Lexer(input_stream) + stream = CommonTokenStream(lexer) + parser = Python3Parser(stream) + tree = parser.file_input() + + # Transform the AST + transformer = RemoveVariableNames() + transformer.visit(tree) + + return tree + + +level0 = [] +level1 = [] +level2 = [] + + +def find_levels(node, parser, level=0): + if level == 0: + level0.append(node.toStringTree(recog=parser)) + elif level == 1: + level1.append(node.toStringTree(recog=parser)) + elif level == 2: + level2.append(node.toStringTree(recog=parser)) + + for child in node.getChildren(): + if isinstance(child, ParserRuleContext): + find_levels(child, parser, level=level + 1) + + +def get_children(node, parser): + parent = node.toStringTree(recog=parser) + children = [child.toStringTree(recog=parser) if isinstance(child, ParserRuleContext) else child.getText() for child + in node.getChildren()] + return parent, children + + +parents1 = [] +parents2 = [] +children1 = [] +children2 = [] + + +def get_parent_children_relation(root, parser, level=0): + for child in root.getChildren(): + if isinstance(child, ParserRuleContext): + p, c = get_children(child, parser) + if level == 0: + parents1.append(p) + children1.append(c) + elif level == 1: + parents2.append(p) + children2.append(c) + get_parent_children_relation(child, parser, level + 1) + + +def analyze(source_code: str): + input_tree = mutate(source_code) + + parser = Python3Parser(CommonTokenStream(Python3Lexer(InputStream(source_code)))) + + visitor = CustomPythonVisitor() + visitor.visit(input_tree) + count_l = visitor.loop_count + count_if = visitor.if_count + count_f = visitor.method_count + + # Finden der Ebenen + find_levels(input_tree, parser) + + # Eltern-Kind-Beziehungen finden + get_parent_children_relation(input_tree, parser) + + counts = [count_l, count_if, count_f] + print(counts) + levels = [level0, level1, level2] + i = 1 + for lev in levels: + print("Level", i) + print(lev) + i += 1 + + return counts, levels + + +if __name__ == "__main__": + code = """ + def sum_first_ten(): + sum = 0 + for i in range (11): + sum += i + return sum""" + counts, levels = analyze(code) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/languages/python/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py new file mode 100644 index 000000000..5f2bd6d2b --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/convert_code_to_ast/method_node.py @@ -0,0 +1,15 @@ +from dataclasses import dataclass +from typing import Any + + +#TODO Extract the datanode to here +@dataclass +class MethodNode: + line_start: int + line_end: int + source_code: str + name: str + ast: Any + + def __str__(self): + return f"MethodNode({self.name}, lines {self.line_start} to {self.line_end})" diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py new file mode 100644 index 000000000..8058e47c2 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/batch.py @@ -0,0 +1,12 @@ +from itertools import islice, zip_longest + +# https://docs.python.org/3/library/itertools.html#itertools-recipes +def batched(iterable, n): + """Batch data into lists of length n. The last batch may be shorter.""" + # batched('ABCDEFG', 3) --> ABC DEF G + it = iter(iterable) + while True: + batch = list(islice(it, n)) + if not batch: + return + yield batch \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py new file mode 100644 index 000000000..ca434c4d6 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/code_similarity_computer.py @@ -0,0 +1,133 @@ +from dataclasses import dataclass +from typing import Dict, Tuple, Union, cast +from module_programming_winnowing.feedback_suggestions.winnowing import calculate_similarity + +from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze as analyze_python +from module_programming_winnowing.convert_code_to_ast.languages.java.JavaAstVisitor import analyze as analyze_java + + +def remove_whitespace(s: str) -> str: + return "".join(s.split()) + + +def cache_key(code1: str, code2: str) -> Tuple[str, str]: + return remove_whitespace(code1), remove_whitespace(code2) + + +@dataclass +class UncomputedComparison: + code1: str + counts1: list[int] + levels1: list[list] + code2: str + counts2: list[int] + levels2: list[list] + + +@dataclass +class SimilarityScore: + similarity_score: float + + def __repr__(self): + return f"SimilarityScore(similarity_score={self.similarity_score})" + + def __str__(self): + return f"similarity_score={self.similarity_score}" + + +def create_ast_level_and_counts(code: str, programming_language: str): + if programming_language == "java": + # return analyze_java(code) + return + if programming_language == "python": + return analyze_python(code) + raise ValueError(f"Unsupported programming language: {programming_language}") + + +class CodeSimilarityComputer: + """ + Takes multiple pairs of code snippets and their corresponding tree representations, + and computes their similarity scores using AP-TED. It also caches the similarity + scores for faster computation and auto-assigns a similarity of 0.0 distance to + identical code snippets (ignoring whitespace). + """ + + def __init__(self) -> None: + # keys are with all whitespace removed + self.cache: Dict[Tuple[str, str], Union[SimilarityScore, UncomputedComparison]] = {} + + def add_comparison(self, code1: str, code2: str, programming_language: str): + """Add a comparison to later compute.""" + key = cache_key(code1, code2) + if key in self.cache: + return + if remove_whitespace(code1) == remove_whitespace(code2): + # identical code snippets in almost all cases + self.cache[key] = SimilarityScore(100.0) # perfect match (Similarity Score = 100) + else: + counts1, level1 = create_ast_level_and_counts(code1, programming_language) + counts2, level2 = create_ast_level_and_counts(code2, programming_language) + self.cache[key] = UncomputedComparison(code1, counts1, level1, code2, counts2, level2) + + def compute_similarity_scores(self): + """Compute the similarity scores for all comparisons.""" + wanted_comparisons = [] + + for value in self.cache.values(): + if isinstance(value, UncomputedComparison): + wanted_comparisons.append((value.code1, value.counts1, value.levels1, value.code2, value.counts2, + value.levels2)) + if not wanted_comparisons: + return + + for code1, counts1, levels1, code2, counts2, levels2 in wanted_comparisons: + similarity_score = calculate_similarity(counts1, levels1, counts2, levels2) + self.cache[cache_key(code1, code2)] = SimilarityScore(similarity_score) + + def get_similarity_score(self, code1: str, code2: str) -> SimilarityScore: + """Get the similarity score for a comparison.""" + key = cache_key(code1, code2) + if key not in self.cache: + raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.") + if isinstance(self.cache[key], UncomputedComparison): + raise ValueError("Similarity score not yet computed. Call compute_similarity_scores() first.") + return cast(SimilarityScore, self.cache[key]) + + +# TODO: These are test functions; to be deleted when productive later +def test_code_similarity_computer(): + # Beispiel-Code-Snippets + code1 = """ + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, wooorld!"); + int feld = 4; + int test = 5; + + }""" + code2 = """ + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, wooorld!"); + int test = 5; + + }""" + + # Initialisiere den CodeSimilarityComputer + sim_computer = CodeSimilarityComputer() + + # Füge die Code-Vergleiche hinzu + sim_computer.add_comparison(code1, code2, "java") + + # Berechne die Ähnlichkeitspunkte + sim_computer.compute_similarity_scores() + + # Hole die Ähnlichkeitspunkte + similarity = sim_computer.get_similarity_score(code1, code2) + + # Ausgabe der Ähnlichkeit + print(f"Similarity score between code1 and code2: {similarity.similarity_score}") + + +if __name__ == "__main__": + test_code_similarity_computer() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py new file mode 100644 index 000000000..94e7048eb --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/feedback_suggestions.py @@ -0,0 +1,198 @@ +from typing import Dict, Iterable, List, Optional +import gc + +from pydantic import BaseModel, Field + +from athena.helpers.programming.feedback import format_feedback_title +from athena.logger import logger +from athena.programming import Feedback, Submission +from module_programming_winnowing.convert_code_to_ast.extract_method_and_ast import parse +from module_programming_winnowing.convert_code_to_ast.method_node import MethodNode +from module_programming_winnowing.feedback_suggestions.batch import batched +from module_programming_winnowing.feedback_suggestions.code_similarity_computer import CodeSimilarityComputer + +SIMILARITY_THRESHOLD = 95 # TODO Needs to be adapted + + +def make_feedback_suggestion_from(feedback: Feedback, submission: Submission, + submission_method: MethodNode) -> Feedback: + suggestion = feedback.copy(deep=True) + # add meta information for debugging + suggestion.meta["original_feedback_id"] = feedback.id + suggestion.meta["original_method_code"] = suggestion.meta["method_code"] + suggestion.meta["method_code"] = submission_method.source_code + # adjust for submission + suggestion.submission_id = submission.id + suggestion.line_start = submission_method.line_start + suggestion.line_end = submission_method.line_end + # regenerate title from filename and line numbers + suggestion.title = format_feedback_title(suggestion.file_path, suggestion.line_start, suggestion.line_end) + # remove ID + suggestion.id = None + return suggestion + +class CodeComparisonWithCorrespondingSuggestions: + """A pair of code snippets with a corresponding suggestions if their similarity is high enough.""" + + def __init__(self, code1: str, code2: str, suggestion: Feedback) -> None: + self.code1 = code1 + self.code2 = code2 + self.suggestion = suggestion + + def has_same_code(self, other) -> bool: + return self.code1 == other.code1 and self.code2 == other.code2 + + +def group_feedbacks_by_file_path(feedbacks: List[Feedback]) -> Dict[str, List[Feedback]]: + """Groups feedbacks by file path for faster access.""" + feedbacks_by_file_path: Dict[str, List[Feedback]] = {} + for feedback in feedbacks: + if feedback.file_path not in feedbacks_by_file_path: + feedbacks_by_file_path[str(feedback.file_path)] = [] + feedbacks_by_file_path[str(feedback.file_path)].append(feedback) + return feedbacks_by_file_path + + +def create_comparisons_with_suggestions( + submissions: List[Submission], + feedbacks: List[Feedback], + programming_language: str, +) -> Iterable[CodeComparisonWithCorrespondingSuggestions]: + """Creates code comparisons and corresponding feedback suggestions as a generator.""" + if len(feedbacks) == 0: + return + # group feedbacks by file path for faster access + logger.debug("Grouping %d feedbacks by file path", len(feedbacks)) + feedbacks_by_file_path = group_feedbacks_by_file_path(feedbacks) + for submission in submissions: + for file_path, file_feedbacks in feedbacks_by_file_path.items(): + # read file from submission + try: + code = submission.get_code(file_path) + except KeyError: # KeyError is for when the file is not in the zip + logger.debug("File %s not found in submission %d.", file_path, submission.id) + continue + except UnicodeDecodeError: + logger.warning("File %s in submission %d is not UTF-8 encoded.", file_path, submission.id) + continue + # get all methods in the file of the submission + submission_methods = parse(code, programming_language) + # get all feedbacks that match methods in the submission + for s_method in submission_methods: + for feedback in file_feedbacks: + if feedback.submission_id == submission.id: + # don't compare feedback with itself + continue + if feedback.meta["method_name"] == s_method.name: + # compare code (later) and add feedback as a possible suggestion (also later) + suggestion = make_feedback_suggestion_from(feedback, submission, s_method) + yield CodeComparisonWithCorrespondingSuggestions(s_method.source_code, + feedback.meta["method_code"], suggestion) + + +def create_feedback_suggestions( + submissions: List[Submission], + feedbacks: List[Feedback], + programming_language: str, +) -> List[Feedback]: + """ + Get a list of all submissions that the given feedback could also apply to (similar code in same method). + Then generate feedback suggestions for those submissions. + """ + if len(feedbacks) == 0: + return [] # nothing to do + + suggestions: List[Feedback] = [] + + # create code comparisons and corresponding feedback suggestions in batches for less memory usage + for idx, comparisons_with_suggestions in enumerate( + batched(create_comparisons_with_suggestions(submissions, feedbacks, programming_language), 128)): + # compute similarity scores for all comparisons at once + sim_computer = CodeSimilarityComputer() + for s_comp in comparisons_with_suggestions: + sim_computer.add_comparison(s_comp.code1, s_comp.code2, programming_language) + logger.debug("Computing similarity scores for %d code comparisons (batch #%d)", + len(comparisons_with_suggestions), idx) + sim_computer.compute_similarity_scores() # compute all at once, enables vectorization + + # create suggestions + for s_comp in comparisons_with_suggestions: + similarity = sim_computer.get_similarity_score(s_comp.code1, s_comp.code2) + if similarity.similarity_score <= SIMILARITY_THRESHOLD: + # found similar code -> create feedback suggestion + logger.info("Found similar code wih similarity of %d", similarity.similarity_score) + # add meta information for debugging + s_comp.suggestion.meta["similarity_score"] = similarity.similarity_score + # add to suggestions + suggestions.append(s_comp.suggestion) + # clear memory to prevent being killed by OOM killer + del sim_computer + del comparisons_with_suggestions + gc.collect() + + return suggestions + + +# TODO From here on these are just testing functions below: +def extract_methods_from_code(code, programming_language): + # Parsing und AST-Erstellung + methods = parse(code, programming_language) + + # Ausgabe der extrahierten Methoden + print("Extrahierte Methoden:") + for method in methods: + print(f"Method Name: {method.name}") + print(f"Method Source Code:\n{method.source_code}\n") + print(f"Method Start Line: {method.line_start}, End Line: {method.line_end}\n") + + return methods + + +def compare_methods(methods1, methods2, programming_language): + # Initialisiere den CodeSimilarityComputer + sim_computer = CodeSimilarityComputer() + + # Füge die Code-Vergleiche hinzu + for method1 in methods1: + for method2 in methods2: + sim_computer.add_comparison(method1.source_code, method2.source_code, programming_language) + + # Berechne die Ähnlichkeitspunkte + sim_computer.compute_similarity_scores() + + # Ausgabe der Ähnlichkeitspunkte + for method1 in methods1: + for method2 in methods2: + similarity = sim_computer.get_similarity_score(method1.source_code, method2.source_code) + print(f"Similarity score between {method1.name} and {method2.name}: {similarity.similarity_score}") + + +def test_ast_creation_and_code_similarity(): + code1 = """ + def sum_first_ten(): + sum = 0 + return sum + """ + + code2 = """ + def sum_first_ten(): + sum = 0 + for i in range(11): + sum += i + return sum + """ + + programming_language = "python" + + print("Extracting methods from code1...") + methods1 = extract_methods_from_code(code1, programming_language) + + print("Extracting methods from code2...") + methods2 = extract_methods_from_code(code2, programming_language) + + print("Comparing methods from code1 and code2...") + compare_methods(methods1, methods2, programming_language) + + +if __name__ == "__main__": + test_ast_creation_and_code_similarity() diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py new file mode 100644 index 000000000..03c88e7b2 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_overlapping.py @@ -0,0 +1,40 @@ +""" +Feedback suggestions can overlap each other, which is not ideal. +This module removes overlapping suggestions. +""" + +from typing import List + +from athena.programming import Feedback + + +def is_overlapping(feedback1: Feedback, feedback2: Feedback) -> bool: + """Returns whether the two given feedbacks overlap.""" + if feedback1.file_path != feedback2.file_path: + # feedback in different files + return False + if feedback1.line_start is None or feedback2.line_start is None or feedback1.line_end is None or feedback2.line_end is None: + # unreferenced feedback (both start and end are None because of Schema validation for line_end) + return False + if feedback1.line_start > feedback2.line_end: + return False + if feedback2.line_start > feedback1.line_end: + return False + return True + + +def filter_overlapping_suggestions(suggestions: List[Feedback]) -> List[Feedback]: + """Filters out overlapping suggestions we don't want to suggest to tutors. + + Arguments: + suggestions {list} -- List of suggestions to filter + """ + # sort suggestions by similarity_score to keep the most accurate ones + suggestions.sort(key=lambda s: s.meta.get("similarity_score", 0), reverse=True) + # skip suggestions if they overlap with a suggestion that was already added + added_suggestions: List[Feedback] = [] + for suggestion in suggestions: + if any(is_overlapping(suggestion, added_suggestion) for added_suggestion in added_suggestions): + continue + added_suggestions.append(suggestion) + return added_suggestions diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py new file mode 100644 index 000000000..32827ed63 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/remove_suspicious.py @@ -0,0 +1,47 @@ +""" +When evaluating Winnowing, we found the following problems with the suggestions: +(1) Sometimes, there was a feedback on something banal like a getter, which was actually meant for another method. + This caused suggestions for almost all the other submissions, which were not helpful. + We therefore classify a suggestion as "suspicious" if it affects too many other submissions (> 10% and > 2). +(2) However, this would also sometimes classify a suggestion as suspicious if it is actually helpful. + Therefore, we make a suggestion non-supicious if there are at least 3 other suggestions for the same method. + This makes a mistake like described above unlikely. +(3) Suggestions are also non-suspicious if they include words that hint at other parts of the code, like + "again", "consequential error", "previous", "later", "earlier", "above", "below" and German equivalents of these words. +""" + +from typing import Dict, List, cast + +from athena.programming import Feedback + + +def filter_suspicious(suggestions: List[Feedback], n_submissions: int) -> List[Feedback]: + """ + Filters out suspicious suggestions we don't want to suggest to tutors. + suggestions: List of suggestions to filter + n_submissions: Number of submissions for the exercise + """ + suspicious: Dict[int, bool] = {} # feedback id: is suspicious + # (1) classify suggestions as suspicious if they affect too many other submissions + for suggestion in suggestions: + n_feedback_suggestions = suggestion.meta.get("n_feedback_suggestions", 999999) + if n_feedback_suggestions > 2 and n_feedback_suggestions > 0.1 * n_submissions: + suspicious[cast(int, suggestion.id)] = True + # find all other suggestions for the same method + other_suggestions: List[Feedback] = [] + for other_suggestion in suggestions: + if other_suggestion.id == suggestion.id: + continue + if other_suggestion.file_path == suggestion.file_path and other_suggestion.meta.get("method_name") == suggestion.meta.get("method_name"): + other_suggestions.append(other_suggestion) + # (2) make suggestion non-suspicious if there are at least 3 other suggestions for the same method + if len(other_suggestions) >= 3: + suspicious[cast(int, suggestion.id)] = False + # (3) classify suggestions as suspicious if they include words that hint at other parts of the code + suspicious_words = ["again", "consequential error", "previous", "later", "earlier", "above", "below"] + for suggestion in suggestions: + for word in suspicious_words: + if word in str(suggestion.description): + suspicious[cast(int, suggestion.id)] = True + # filter out suspicious suggestions + return list(filter(lambda s: not suspicious.get(cast(int, s.id), False), suggestions)) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py new file mode 100644 index 000000000..511a9c5e2 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/feedback_suggestions/winnowing.py @@ -0,0 +1,170 @@ +# This implementation has been adapted from the algorithm provided in the repository: +# https://github.com/prateksha/Source-Code-Similarity-Measurement/blob/master/generate_ast.py +# The original code has been modified to fit the specific requirements of this project, +# including changes in the caching mechanism and additional functionality to handle +# both Java and Python code (and potentially further programming languages) similarity measurements. + + +import nltk +import math +from nltk.util import ngrams +from collections import Counter +from statistics import mean + +def cosine_similarity(l1, l2): + vec1 = Counter(l1) + vec2 = Counter(l2) + + intersection = set(vec1.keys()) & set(vec2.keys()) + + numerator = sum([vec1[x] * vec2[x] for x in intersection]) + + sum1 = sum([vec1[x] ** 2 for x in vec1.keys()]) + sum2 = sum([vec2[x] ** 2 for x in vec2.keys()]) + denominator = math.sqrt(sum1) * math.sqrt(sum2) + + if not denominator: + return 0.0 + + return float(numerator) / denominator + + +# Could be changed to include rightmost minimum too +def get_min(get_key=lambda x: x): + def rightmost_minimum(l): + minimum = float('inf') + minimum_index = -1 + pos = 0 + + while pos < len(l): + if get_key(l[pos]) < minimum: + minimum = get_key(l[pos]) + minimum_index = pos + pos += 1 + + return l[minimum_index] + + return rightmost_minimum + + +# Have used the inbuilt hash function (Should try a self defined rolling hash function) +def winnowing(kgrams, k, t): + modified_min_func = get_min(lambda key_value: key_value[0]) + + document_fingerprints = [] + + # print(kgrams) + hash_table = [(hash(kgrams[i]), i) for i in range(len(kgrams))] + # print(len(hash_table)) + + window_length = t - k + 1 + window_begin = 0 + window_end = window_length + + minimum_hash = None + + while (window_end < len(hash_table)): + window = hash_table[window_begin:window_end] + window_minimum = modified_min_func(window) + + if (minimum_hash != window_minimum): + # print(window_minimum) + document_fingerprints.append(window_minimum[0]) # not taking positions into consideration + minimum_hash = window_minimum + + window_begin = window_begin + 1 + window_end = window_end + 1 + + return document_fingerprints + + +def generate_kgrams(data, k): + for text in data: + token = nltk.word_tokenize(text) + kgrams = ngrams(token, k) + lst_kgrams = list(kgrams) + # print("Kgrams : ", lst_kgrams) + return lst_kgrams + + +# only conversion to lowercase for now +def preprocess(document): + preprocessed_document = [] + for item in document: + item = item.lower() + preprocessed_document.append(item) + return preprocessed_document + + +def generate_fingerprints(data, k, t): + preprocessed_data = preprocess(data) + kgrams = generate_kgrams(preprocessed_data, k) + # print(len(kgrams)) + document_fingerprints = winnowing(kgrams, k, t) + return document_fingerprints + + +def calculate_similarity(counts1, levels1, counts2, levels2): + lev0s = [] + lev1s = [] + lev2s = [] + + for i in range(10): + fingerprints1_0 = generate_fingerprints(levels1[0], 13, 17) + fingerprints2_0 = generate_fingerprints(levels2[0], 13, 17) + cosine_similarity_lev0 = cosine_similarity(fingerprints1_0, fingerprints2_0) + lev0s.append(cosine_similarity_lev0) + + fingerprints1_1 = generate_fingerprints(levels1[1], 13, 17) + fingerprints2_1 = generate_fingerprints(levels2[1], 13, 17) + cosine_similarity_lev1 = cosine_similarity(fingerprints1_1, fingerprints2_1) + lev1s.append(cosine_similarity_lev1) + + fingerprints1_2 = generate_fingerprints(levels1[2], 13, 17) + fingerprints2_2 = generate_fingerprints(levels2[2], 13, 17) + cosine_similarity_lev2 = cosine_similarity(fingerprints1_2, fingerprints2_2) + lev2s.append(cosine_similarity_lev2) + + final_cosine_similarity_lev0 = round(mean(lev0s), 2) + final_cosine_similarity_lev1 = round(mean(lev1s), 2) + final_cosine_similarity_lev2 = round(mean(lev2s), 2) + + normalization_score = 0 + t = 0 + for c in range(3): + x = counts1[c] + y = counts2[c] + if (x + y) != 0: + t = t + 1 + if x > y: + s = 1 - ((x - y) / (x + y)) + else: + s = 1 - ((y - x) / (x + y)) + normalization_score += (10 * s) + + if t != 0: + normalization_score = normalization_score / (t * 10) + total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + ( + 0.2 * final_cosine_similarity_lev2)) + normalization_score = normalization_score + final_score = (total_similarity_score_win * 60) + (normalization_score * 40) + print("Similarity score = : \n", final_score) + else: + total_similarity_score_win = ((0.5 * final_cosine_similarity_lev0) + (0.3 * final_cosine_similarity_lev1) + ( + 0.2 * final_cosine_similarity_lev2)) + final_score = (total_similarity_score_win * 100) + + return final_score + + +if __name__ == "__main__": + from module_programming_winnowing.convert_code_to_ast.languages.python.PythonAstVisitor import analyze + + file_path1 = "1.py" #TODO test with string + file_path2 = "test6b.py" #TODO Test with String + + counts1, levels1 = analyze(file_path1) + counts2, levels2 = analyze(file_path2) + + similarity_score = calculate_similarity(counts1, levels1, counts2, levels2) + print("Similarity score:", similarity_score) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py new file mode 100644 index 000000000..13e84ece9 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/1.py @@ -0,0 +1,4 @@ +a = 5 +for i in range(a): + for j in range(i): + print("Hi") \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl new file mode 100644 index 000000000..a183a1c0a --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/example_simple_lang.sl @@ -0,0 +1,15 @@ +def foo(x, y) do + if x + y > 10 then + z = x + y + endif +endef + +for i in 0 do + while i < 5 do + i = i + 1 + endwhile +endfor + +x = 5 +y = 10 +result = x * y diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py new file mode 100644 index 000000000..53cc9f233 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/nested_for.py @@ -0,0 +1,3 @@ +for i in range(5): + for j in range(5): + print(i*j) \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java new file mode 100644 index 000000000..f62c926bc --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1.java @@ -0,0 +1,11 @@ + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, wooorld!"); + int test = 5; + for(int i = 0; i < 5; i++) { + //Das ist ein Kommentar + String foooler = "Test"; + System.out.println(i); + } + } + } \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py new file mode 100644 index 000000000..cebbe482f --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1a.py @@ -0,0 +1,7 @@ +import math + +p1=input() +p2=input() +p1 = int(p1) +p2 = int(p2) +print (math.sqrt((p1*p1)+(p2*p2))) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py new file mode 100644 index 000000000..ca3516805 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test1c.py @@ -0,0 +1,10 @@ +import math + +x = input() +y = input() +x = int(x) +y = int(y) +# Square and add terms +res = math.sqrt(pow(x, 2)+pow(y, 2)) + +print (res) diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java new file mode 100644 index 000000000..2b6873bc4 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2.java @@ -0,0 +1,11 @@ + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, world!"); + int test = 5; + for(int i = 0; i < 10; i++) { + //Das ist ein Kommentar + String foooler = "Test"; + System.out.println(i); + } + } + } \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py new file mode 100644 index 000000000..7eec08e3a --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2a.py @@ -0,0 +1,12 @@ +a=input() +a=int(a) + + +if(5<=a<18): + print ("child") +elif(a>=18): + print ("adult") +elif(a<5): + print ("infant") + + diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py new file mode 100644 index 000000000..df18531b7 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test2b.py @@ -0,0 +1,9 @@ +x=input() +x=int(x) + +if(x<5): + print ("infant") +elif(5<=x<18): + print ("child") +elif(x>=18): + print ("adult") diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py new file mode 100644 index 000000000..fa828bf74 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3a.py @@ -0,0 +1,5 @@ +a=input() +a=int(a) + +for i in range(a): + print ("Hello world!") diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py new file mode 100644 index 000000000..7767e2386 --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test3b.py @@ -0,0 +1,6 @@ +a=input() +a=int(a) +count=0 +while(count= 1900 and year <= 100000: + if year % 4 == 0: + leap = True + if year % 100 == 0: + leap = False + if year % 400 == 0: + leap = True + return leap diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py new file mode 100644 index 000000000..96e3a41bf --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8a.py @@ -0,0 +1,10 @@ +a = input() +a = int(a) + + +if(5 <= a < 18): + print("child") +elif(a >= 18): + print("adult") +elif(a < 5): + print("infant") diff --git a/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py new file mode 100644 index 000000000..3c8a12f3f --- /dev/null +++ b/modules/programming/module_programming_winnowing/module_programming_winnowing/test_codes/test8b.py @@ -0,0 +1,12 @@ +a = input() +a = int(a) + + +if(5 <= a < 18): + print("child") +elif(a >= 18): + print("adult") +elif(a < 5): + print("infant") + +print("Finish") \ No newline at end of file diff --git a/modules/programming/module_programming_winnowing/poetry.lock b/modules/programming/module_programming_winnowing/poetry.lock new file mode 100644 index 000000000..5cbf8aeb1 --- /dev/null +++ b/modules/programming/module_programming_winnowing/poetry.lock @@ -0,0 +1,1197 @@ +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "antlr4-python3-runtime" +version = "4.13.2" +description = "ANTLR 4.13.2 runtime for Python 3" +optional = false +python-versions = "*" +files = [ + {file = "antlr4_python3_runtime-4.13.2-py3-none-any.whl", hash = "sha256:fe3835eb8d33daece0e799090eda89719dbccee7aa39ef94eed3818cafa5a7e8"}, + {file = "antlr4_python3_runtime-4.13.2.tar.gz", hash = "sha256:909b647e1d2fc2b70180ac586df3933e38919c85f98ccc656a96cd3f25ef3916"}, +] + +[[package]] +name = "anyio" +version = "4.6.2.post1" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +files = [ + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, +] + +[package.dependencies] +idna = ">=2.8" +sniffio = ">=1.1" + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "astroid" +version = "3.3.5" +description = "An abstract syntax tree for Python with inference support." +optional = false +python-versions = ">=3.9.0" +files = [ + {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, + {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, +] + +[[package]] +name = "athena" +version = "1.0.0" +description = "This is a helper module for easier development of Athena modules. It provides communication functionality with the Assessment Module manager, as well as helper functions for storage." +optional = false +python-versions = "3.11.*" +files = [] +develop = false + +[package.dependencies] +fastapi = "^0.109.1" +gitpython = "^3.1.41" +httpx = "^0.24.1" +psycopg2 = "^2.9.9" +sqlalchemy = {version = "^2.0.21", extras = ["mypy"]} +uvicorn = "^0.23.0" + +[package.source] +type = "git" +url = "https://github.com/ls1intum/Athena.git" +reference = "bbb2bb0" +resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2" +subdirectory = "athena" + +[[package]] +name = "certifi" +version = "2024.8.30" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, + {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dill" +version = "0.3.9" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + +[[package]] +name = "dodgy" +version = "0.2.1" +description = "Dodgy: Searches for dodgy looking lines in Python code" +optional = false +python-versions = "*" +files = [ + {file = "dodgy-0.2.1-py3-none-any.whl", hash = "sha256:51f54c0fd886fa3854387f354b19f429d38c04f984f38bc572558b703c0542a6"}, + {file = "dodgy-0.2.1.tar.gz", hash = "sha256:28323cbfc9352139fdd3d316fa17f325cc0e9ac74438cbba51d70f9b48f86c3a"}, +] + +[[package]] +name = "fastapi" +version = "0.109.2" +description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fastapi-0.109.2-py3-none-any.whl", hash = "sha256:2c9bab24667293b501cad8dd388c05240c850b58ec5876ee3283c47d6e1e3a4d"}, + {file = "fastapi-0.109.2.tar.gz", hash = "sha256:f3817eac96fe4f65a2ebb4baa000f394e55f5fccdaf7f75250804bc58f354f73"}, +] + +[package.dependencies] +pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" +starlette = ">=0.36.3,<0.37.0" +typing-extensions = ">=4.8.0" + +[package.extras] +all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)", "jinja2 (>=2.11.2)", "orjson (>=3.2.1)", "pydantic-extra-types (>=2.0.0)", "pydantic-settings (>=2.0.0)", "python-multipart (>=0.0.7)", "pyyaml (>=5.3.1)", "ujson (>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0)", "uvicorn[standard] (>=0.12.0)"] + +[[package]] +name = "flake8" +version = "7.1.1" +description = "the modular source code checker: pep8 pyflakes and co" +optional = false +python-versions = ">=3.8.1" +files = [ + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, +] + +[package.dependencies] +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" + +[[package]] +name = "flake8-polyfill" +version = "1.0.2" +description = "Polyfill package for Flake8 plugins" +optional = false +python-versions = "*" +files = [ + {file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"}, + {file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"}, +] + +[package.dependencies] +flake8 = "*" + +[[package]] +name = "gitdb" +version = "4.0.11" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.43" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.43-py3-none-any.whl", hash = "sha256:eec7ec56b92aad751f9912a73404bc02ba212a23adb2c7098ee668417051a1ff"}, + {file = "GitPython-3.1.43.tar.gz", hash = "sha256:35f314a9f878467f5453cc1fee295c3e18e52f1b99f10f6cf5b1682e968a9e7c"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +doc = ["sphinx (==4.3.2)", "sphinx-autodoc-typehints", "sphinx-rtd-theme", "sphinxcontrib-applehelp (>=1.0.2,<=1.0.4)", "sphinxcontrib-devhelp (==1.0.2)", "sphinxcontrib-htmlhelp (>=2.0.0,<=2.0.1)", "sphinxcontrib-qthelp (==1.0.3)", "sphinxcontrib-serializinghtml (==1.1.5)"] +test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar", "typing-extensions"] + +[[package]] +name = "greenlet" +version = "3.1.1" +description = "Lightweight in-process concurrent programming" +optional = false +python-versions = ">=3.7" +files = [ + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, +] + +[package.extras] +docs = ["Sphinx", "furo"] +test = ["objgraph", "psutil"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "0.17.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpcore-0.17.3-py3-none-any.whl", hash = "sha256:c2789b767ddddfa2a5782e3199b2b7f6894540b17b16ec26b2c4d8e103510b87"}, + {file = "httpcore-0.17.3.tar.gz", hash = "sha256:a6f30213335e34c1ade7be6ec7c47f19f50c56db36abef1a9dfa3815b1cb3888"}, +] + +[package.dependencies] +anyio = ">=3.0,<5.0" +certifi = "*" +h11 = ">=0.13,<0.15" +sniffio = "==1.*" + +[package.extras] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "httpx" +version = "0.24.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.7" +files = [ + {file = "httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"}, + {file = "httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"}, +] + +[package.dependencies] +certifi = "*" +httpcore = ">=0.15.0,<0.18.0" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "joblib" +version = "1.4.2" +description = "Lightweight pipelining with Python functions" +optional = false +python-versions = ">=3.8" +files = [ + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mypy" +version = "1.13.0" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, +] + +[package.dependencies] +mypy-extensions = ">=1.0.0" +typing-extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nltk" +version = "3.9.1" +description = "Natural Language Toolkit" +optional = false +python-versions = ">=3.8" +files = [ + {file = "nltk-3.9.1-py3-none-any.whl", hash = "sha256:4fa26829c5b00715afe3061398a8989dc643b92ce7dd93fb4585a70930d168a1"}, + {file = "nltk-3.9.1.tar.gz", hash = "sha256:87d127bd3de4bd89a4f81265e5fa59cb1b199b27440175370f7417d2bc7ae868"}, +] + +[package.dependencies] +click = "*" +joblib = "*" +regex = ">=2021.8.3" +tqdm = "*" + +[package.extras] +all = ["matplotlib", "numpy", "pyparsing", "python-crfsuite", "requests", "scikit-learn", "scipy", "twython"] +corenlp = ["requests"] +machine-learning = ["numpy", "python-crfsuite", "scikit-learn", "scipy"] +plot = ["matplotlib"] +tgrep = ["pyparsing"] +twitter = ["twython"] + +[[package]] +name = "packaging" +version = "24.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, +] + +[[package]] +name = "pep8-naming" +version = "0.10.0" +description = "Check PEP-8 naming conventions, plugin for flake8" +optional = false +python-versions = "*" +files = [ + {file = "pep8-naming-0.10.0.tar.gz", hash = "sha256:f3b4a5f9dd72b991bf7d8e2a341d2e1aa3a884a769b5aaac4f56825c1763bf3a"}, + {file = "pep8_naming-0.10.0-py2.py3-none-any.whl", hash = "sha256:5d9f1056cb9427ce344e98d1a7f5665710e2f20f748438e308995852cfa24164"}, +] + +[package.dependencies] +flake8-polyfill = ">=1.0.2,<2" + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "prospector" +version = "1.13.3" +description = "Prospector is a tool to analyse Python code by aggregating the result of other tools." +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"}, + {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"}, +] + +[package.dependencies] +dodgy = ">=0.2.1,<0.3.0" +GitPython = ">=3.1.27,<4.0.0" +mccabe = ">=0.7.0,<0.8.0" +packaging = "*" +pep8-naming = ">=0.3.3,<=0.10.0" +pycodestyle = ">=2.9.0" +pydocstyle = ">=2.0.0" +pyflakes = ">=2.2.0" +pylint = ">=3.0" +pylint-celery = "0.3" +pylint-django = ">=2.6.1" +pylint-flask = "0.6" +PyYAML = "*" +requirements-detector = ">=1.3.2" +setoptconf-tmp = ">=0.3.1,<0.4.0" +toml = ">=0.10.2,<0.11.0" + +[package.extras] +with-bandit = ["bandit (>=1.5.1)"] +with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"] +with-mypy = ["mypy (>=0.600)"] +with-pyright = ["pyright (>=1.1.3)"] +with-pyroma = ["pyroma (>=2.4)"] +with-ruff = ["ruff"] +with-vulture = ["vulture (>=1.5)"] + +[[package]] +name = "psycopg2" +version = "2.9.10" +description = "psycopg2 - Python-PostgreSQL Database Adapter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, +] + +[[package]] +name = "pycodestyle" +version = "2.12.1" +description = "Python style guide checker" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, +] + +[[package]] +name = "pydantic" +version = "1.10.17" +description = "Data validation and settings management using python type hints" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pydantic-1.10.17-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fa51175313cc30097660b10eec8ca55ed08bfa07acbfe02f7a42f6c242e9a4b"}, + {file = "pydantic-1.10.17-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7e8988bb16988890c985bd2093df9dd731bfb9d5e0860db054c23034fab8f7a"}, + {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:371dcf1831f87c9e217e2b6a0c66842879a14873114ebb9d0861ab22e3b5bb1e"}, + {file = "pydantic-1.10.17-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4866a1579c0c3ca2c40575398a24d805d4db6cb353ee74df75ddeee3c657f9a7"}, + {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:543da3c6914795b37785703ffc74ba4d660418620cc273490d42c53949eeeca6"}, + {file = "pydantic-1.10.17-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7623b59876f49e61c2e283551cc3647616d2fbdc0b4d36d3d638aae8547ea681"}, + {file = "pydantic-1.10.17-cp310-cp310-win_amd64.whl", hash = "sha256:409b2b36d7d7d19cd8310b97a4ce6b1755ef8bd45b9a2ec5ec2b124db0a0d8f3"}, + {file = "pydantic-1.10.17-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fa43f362b46741df8f201bf3e7dff3569fa92069bcc7b4a740dea3602e27ab7a"}, + {file = "pydantic-1.10.17-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2a72d2a5ff86a3075ed81ca031eac86923d44bc5d42e719d585a8eb547bf0c9b"}, + {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4ad32aed3bf5eea5ca5decc3d1bbc3d0ec5d4fbcd72a03cdad849458decbc63"}, + {file = "pydantic-1.10.17-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aeb4e741782e236ee7dc1fb11ad94dc56aabaf02d21df0e79e0c21fe07c95741"}, + {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d2f89a719411cb234105735a520b7c077158a81e0fe1cb05a79c01fc5eb59d3c"}, + {file = "pydantic-1.10.17-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db3b48d9283d80a314f7a682f7acae8422386de659fffaba454b77a083c3937d"}, + {file = "pydantic-1.10.17-cp311-cp311-win_amd64.whl", hash = "sha256:9c803a5113cfab7bbb912f75faa4fc1e4acff43e452c82560349fff64f852e1b"}, + {file = "pydantic-1.10.17-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:820ae12a390c9cbb26bb44913c87fa2ff431a029a785642c1ff11fed0a095fcb"}, + {file = "pydantic-1.10.17-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c1e51d1af306641b7d1574d6d3307eaa10a4991542ca324f0feb134fee259815"}, + {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e53fb834aae96e7b0dadd6e92c66e7dd9cdf08965340ed04c16813102a47fab"}, + {file = "pydantic-1.10.17-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2495309b1266e81d259a570dd199916ff34f7f51f1b549a0d37a6d9b17b4dc"}, + {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:098ad8de840c92ea586bf8efd9e2e90c6339d33ab5c1cfbb85be66e4ecf8213f"}, + {file = "pydantic-1.10.17-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:525bbef620dac93c430d5d6bdbc91bdb5521698d434adf4434a7ef6ffd5c4b7f"}, + {file = "pydantic-1.10.17-cp312-cp312-win_amd64.whl", hash = "sha256:6654028d1144df451e1da69a670083c27117d493f16cf83da81e1e50edce72ad"}, + {file = "pydantic-1.10.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c87cedb4680d1614f1d59d13fea353faf3afd41ba5c906a266f3f2e8c245d655"}, + {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11289fa895bcbc8f18704efa1d8020bb9a86314da435348f59745473eb042e6b"}, + {file = "pydantic-1.10.17-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94833612d6fd18b57c359a127cbfd932d9150c1b72fea7c86ab58c2a77edd7c7"}, + {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d4ecb515fa7cb0e46e163ecd9d52f9147ba57bc3633dca0e586cdb7a232db9e3"}, + {file = "pydantic-1.10.17-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7017971ffa7fd7808146880aa41b266e06c1e6e12261768a28b8b41ba55c8076"}, + {file = "pydantic-1.10.17-cp37-cp37m-win_amd64.whl", hash = "sha256:e840e6b2026920fc3f250ea8ebfdedf6ea7a25b77bf04c6576178e681942ae0f"}, + {file = "pydantic-1.10.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bfbb18b616abc4df70591b8c1ff1b3eabd234ddcddb86b7cac82657ab9017e33"}, + {file = "pydantic-1.10.17-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ebb249096d873593e014535ab07145498957091aa6ae92759a32d40cb9998e2e"}, + {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c209af63ccd7b22fba94b9024e8b7fd07feffee0001efae50dd99316b27768"}, + {file = "pydantic-1.10.17-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b40c9e13a0b61583e5599e7950490c700297b4a375b55b2b592774332798b7"}, + {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c31d281c7485223caf6474fc2b7cf21456289dbaa31401844069b77160cab9c7"}, + {file = "pydantic-1.10.17-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ae5184e99a060a5c80010a2d53c99aee76a3b0ad683d493e5f0620b5d86eeb75"}, + {file = "pydantic-1.10.17-cp38-cp38-win_amd64.whl", hash = "sha256:ad1e33dc6b9787a6f0f3fd132859aa75626528b49cc1f9e429cdacb2608ad5f0"}, + {file = "pydantic-1.10.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7e17c0ee7192e54a10943f245dc79e36d9fe282418ea05b886e1c666063a7b54"}, + {file = "pydantic-1.10.17-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cafb9c938f61d1b182dfc7d44a7021326547b7b9cf695db5b68ec7b590214773"}, + {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95ef534e3c22e5abbdbdd6f66b6ea9dac3ca3e34c5c632894f8625d13d084cbe"}, + {file = "pydantic-1.10.17-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62d96b8799ae3d782df7ec9615cb59fc32c32e1ed6afa1b231b0595f6516e8ab"}, + {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ab2f976336808fd5d539fdc26eb51f9aafc1f4b638e212ef6b6f05e753c8011d"}, + {file = "pydantic-1.10.17-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8ad363330557beac73159acfbeed220d5f1bfcd6b930302a987a375e02f74fd"}, + {file = "pydantic-1.10.17-cp39-cp39-win_amd64.whl", hash = "sha256:48db882e48575ce4b39659558b2f9f37c25b8d348e37a2b4e32971dd5a7d6227"}, + {file = "pydantic-1.10.17-py3-none-any.whl", hash = "sha256:e41b5b973e5c64f674b3b4720286ded184dcc26a691dd55f34391c62c6934688"}, + {file = "pydantic-1.10.17.tar.gz", hash = "sha256:f434160fb14b353caf634149baaf847206406471ba70e64657c1e8330277a991"}, +] + +[package.dependencies] +typing-extensions = ">=4.2.0" + +[package.extras] +dotenv = ["python-dotenv (>=0.10.4)"] +email = ["email-validator (>=1.0.3)"] + +[[package]] +name = "pydocstyle" +version = "6.3.0" +description = "Python docstring style checker" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, + {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, +] + +[package.dependencies] +snowballstemmer = ">=2.2.0" + +[package.extras] +toml = ["tomli (>=1.2.3)"] + +[[package]] +name = "pyflakes" +version = "3.2.0" +description = "passive checker of Python programs" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, +] + +[[package]] +name = "pylint" +version = "3.3.2" +description = "python code static checker" +optional = false +python-versions = ">=3.9.0" +files = [ + {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, + {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, +] + +[package.dependencies] +astroid = ">=3.3.5,<=3.4.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomlkit = ">=0.10.1" + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "pylint-celery" +version = "0.3" +description = "pylint-celery is a Pylint plugin to aid Pylint in recognising and understandingerrors caused when using the Celery library" +optional = false +python-versions = "*" +files = [ + {file = "pylint-celery-0.3.tar.gz", hash = "sha256:41e32094e7408d15c044178ea828dd524beedbdbe6f83f712c5e35bde1de4beb"}, +] + +[package.dependencies] +astroid = ">=1.0" +pylint = ">=1.0" +pylint-plugin-utils = ">=0.2.1" + +[[package]] +name = "pylint-django" +version = "2.6.1" +description = "A Pylint plugin to help Pylint understand the Django web framework" +optional = false +python-versions = "<4.0,>=3.9" +files = [ + {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"}, + {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"}, +] + +[package.dependencies] +pylint = ">=3.0,<4" +pylint-plugin-utils = ">=0.8" + +[package.extras] +with-django = ["Django (>=2.2)"] + +[[package]] +name = "pylint-flask" +version = "0.6" +description = "pylint-flask is a Pylint plugin to aid Pylint in recognizing and understanding errors caused when using Flask" +optional = false +python-versions = "*" +files = [ + {file = "pylint-flask-0.6.tar.gz", hash = "sha256:f4d97de2216bf7bfce07c9c08b166e978fe9f2725de2a50a9845a97de7e31517"}, +] + +[package.dependencies] +pylint-plugin-utils = ">=0.2.1" + +[[package]] +name = "pylint-plugin-utils" +version = "0.8.2" +description = "Utilities and helpers for writing Pylint plugins" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"}, + {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"}, +] + +[package.dependencies] +pylint = ">=1.7" + +[[package]] +name = "pyyaml" +version = "6.0.2" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, + {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b"}, + {file = "PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180"}, + {file = "PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68"}, + {file = "PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99"}, + {file = "PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774"}, + {file = "PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317"}, + {file = "PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4"}, + {file = "PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e"}, + {file = "PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5"}, + {file = "PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab"}, + {file = "PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425"}, + {file = "PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48"}, + {file = "PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b"}, + {file = "PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4"}, + {file = "PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba"}, + {file = "PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484"}, + {file = "PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc"}, + {file = "PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652"}, + {file = "PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183"}, + {file = "PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563"}, + {file = "PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d"}, + {file = "PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083"}, + {file = "PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706"}, + {file = "PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a"}, + {file = "PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d"}, + {file = "PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12"}, + {file = "PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e"}, + {file = "PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725"}, + {file = "PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631"}, + {file = "PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8"}, + {file = "pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e"}, +] + +[[package]] +name = "regex" +version = "2024.11.6" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.8" +files = [ + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, +] + +[[package]] +name = "requirements-detector" +version = "1.3.2" +description = "Python tool to find and list requirements of a Python project" +optional = false +python-versions = "<4.0,>=3.8" +files = [ + {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"}, + {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"}, +] + +[package.dependencies] +astroid = ">=3.0,<4.0" +packaging = ">=21.3" +semver = ">=3.0.0,<4.0.0" + +[[package]] +name = "semver" +version = "3.0.2" +description = "Python helper for Semantic Versioning (https://semver.org)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "semver-3.0.2-py3-none-any.whl", hash = "sha256:b1ea4686fe70b981f85359eda33199d60c53964284e0cfb4977d243e37cf4bf4"}, + {file = "semver-3.0.2.tar.gz", hash = "sha256:6253adb39c70f6e51afed2fa7152bcd414c411286088fb4b9effb133885ab4cc"}, +] + +[[package]] +name = "setoptconf-tmp" +version = "0.3.1" +description = "A module for retrieving program settings from various sources in a consistant method." +optional = false +python-versions = "*" +files = [ + {file = "setoptconf-tmp-0.3.1.tar.gz", hash = "sha256:e0480addd11347ba52f762f3c4d8afa3e10ad0affbc53e3ffddc0ca5f27d5778"}, + {file = "setoptconf_tmp-0.3.1-py3-none-any.whl", hash = "sha256:76035d5cd1593d38b9056ae12d460eca3aaa34ad05c315b69145e138ba80a745"}, +] + +[package.extras] +yaml = ["pyyaml"] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +optional = false +python-versions = "*" +files = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.36" +description = "Database Abstraction Library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, +] + +[package.dependencies] +greenlet = {version = "!=0.4.17", markers = "python_version < \"3.13\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\")"} +mypy = {version = ">=0.910", optional = true, markers = "extra == \"mypy\""} +typing-extensions = ">=4.6.0" + +[package.extras] +aiomysql = ["aiomysql (>=0.2.0)", "greenlet (!=0.4.17)"] +aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] +aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] +asyncio = ["greenlet (!=0.4.17)"] +asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] +mssql = ["pyodbc"] +mssql-pymssql = ["pymssql"] +mssql-pyodbc = ["pyodbc"] +mypy = ["mypy (>=0.910)"] +mysql = ["mysqlclient (>=1.4.0)"] +mysql-connector = ["mysql-connector-python"] +oracle = ["cx_oracle (>=8)"] +oracle-oracledb = ["oracledb (>=1.0.1)"] +postgresql = ["psycopg2 (>=2.7)"] +postgresql-asyncpg = ["asyncpg", "greenlet (!=0.4.17)"] +postgresql-pg8000 = ["pg8000 (>=1.29.1)"] +postgresql-psycopg = ["psycopg (>=3.0.7)"] +postgresql-psycopg2binary = ["psycopg2-binary"] +postgresql-psycopg2cffi = ["psycopg2cffi"] +postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"] +pymysql = ["pymysql"] +sqlcipher = ["sqlcipher3_binary"] + +[[package]] +name = "starlette" +version = "0.36.3" +description = "The little ASGI library that shines." +optional = false +python-versions = ">=3.8" +files = [ + {file = "starlette-0.36.3-py3-none-any.whl", hash = "sha256:13d429aa93a61dc40bf503e8c801db1f1bca3dc706b10ef2434a36123568f044"}, + {file = "starlette-0.36.3.tar.gz", hash = "sha256:90a671733cfb35771d8cc605e0b679d23b992f8dcfad48cc60b38cb29aeb7080"}, +] + +[package.dependencies] +anyio = ">=3.4.0,<5" + +[package.extras] +full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7)", "pyyaml"] + +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + +[[package]] +name = "tomlkit" +version = "0.13.2" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "uvicorn" +version = "0.23.2" +description = "The lightning-fast ASGI server." +optional = false +python-versions = ">=3.8" +files = [ + {file = "uvicorn-0.23.2-py3-none-any.whl", hash = "sha256:1f9be6558f01239d4fdf22ef8126c39cb1ad0addf76c40e760549d2c2f43ab53"}, + {file = "uvicorn-0.23.2.tar.gz", hash = "sha256:4d3cc12d7727ba72b64d12d3cc7743124074c0a69f7b201512fc50c3e3f1569a"}, +] + +[package.dependencies] +click = ">=7.0" +h11 = ">=0.8" + +[package.extras] +standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] + +[metadata] +lock-version = "2.0" +python-versions = "3.11.*" +content-hash = "b5943cc8ae2e2fe7b1d84126fe323532445afea6680a775ca5415f63b5bd2256" diff --git a/modules/programming/module_programming_winnowing/pyproject.toml b/modules/programming/module_programming_winnowing/pyproject.toml new file mode 100644 index 000000000..c8517b6c2 --- /dev/null +++ b/modules/programming/module_programming_winnowing/pyproject.toml @@ -0,0 +1,25 @@ +[tool.poetry] +name = "module_programming_winnowing" +version = "0.1.0" +description = "Programming assessment Winnowing module." +authors = ["Marlon Bucciarelli "] +license = "MIT" + +[tool.poetry.dependencies] +python = "3.11.*" +# if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible. +# athena = { path = "../athena", develop = true } +athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"} +nltk = "^3.6.5" +antlr4-python3-runtime = "^4.13.1" + +[tool.poetry.group.dev.dependencies] +pydantic = "1.10.17" +prospector = "^1.10.2" + +[tool.poetry.scripts] +module = "athena:run_module" + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" From 93bbe0cd2181c69a4e2848060d28b8facdd2b7c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20S=C3=B6lch?= Date: Thu, 5 Dec 2024 17:00:50 +0100 Subject: [PATCH 2/3] Update athena core package in themisml, coffee and example module (#367) --- .../programming/module_example/poetry.lock | 628 ++--- .../programming/module_example/pyproject.toml | 2 +- .../module_programming_themisml/poetry.lock | 2337 ++++++++--------- .../pyproject.toml | 2 +- modules/text/module_text_cofee/poetry.lock | 849 +++--- modules/text/module_text_cofee/pyproject.toml | 2 +- 6 files changed, 1789 insertions(+), 2031 deletions(-) diff --git a/modules/programming/module_example/poetry.lock b/modules/programming/module_example/poetry.lock index 02fbdee86..9fa2824f9 100644 --- a/modules/programming/module_example/poetry.lock +++ b/modules/programming/module_example/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -16,25 +16,21 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "astroid" -version = "2.15.8" +version = "3.3.5" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, + {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, ] -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - [[package]] name = "athena" version = "1.0.0" @@ -55,8 +51,8 @@ uvicorn = "^0.23.0" [package.source] type = "git" url = "https://github.com/ls1intum/Athena.git" -reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" -resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" +reference = "bbb2bb0" +resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2" subdirectory = "athena" [[package]] @@ -97,13 +93,13 @@ files = [ [[package]] name = "dill" -version = "0.3.8" +version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] @@ -142,19 +138,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "flake8" -version = "5.0.4" +version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8.1" files = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "flake8-polyfill" @@ -204,69 +200,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] @@ -330,15 +341,18 @@ socks = ["socksio (==1.*)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "isort" version = "5.13.2" @@ -353,52 +367,6 @@ files = [ [package.extras] colors = ["colorama (>=0.4.6)"] -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, -] - [[package]] name = "mccabe" version = "0.7.0" @@ -412,38 +380,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.2" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -452,6 +425,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -469,13 +443,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -494,90 +468,85 @@ flake8-polyfill = ">=1.0.2,<2" [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "prospector" -version = "1.10.3" +version = "1.13.3" description = "Prospector is a tool to analyse Python code by aggregating the result of other tools." optional = false -python-versions = ">=3.7.2,<4.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"}, - {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"}, + {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"}, + {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"}, ] [package.dependencies] dodgy = ">=0.2.1,<0.3.0" -flake8 = "<6.0.0" GitPython = ">=3.1.27,<4.0.0" mccabe = ">=0.7.0,<0.8.0" packaging = "*" pep8-naming = ">=0.3.3,<=0.10.0" pycodestyle = ">=2.9.0" pydocstyle = ">=2.0.0" -pyflakes = ">=2.2.0,<3" -pylint = ">=2.8.3" +pyflakes = ">=2.2.0" +pylint = ">=3.0" pylint-celery = "0.3" -pylint-django = ">=2.5,<2.6" +pylint-django = ">=2.6.1" pylint-flask = "0.6" -pylint-plugin-utils = ">=0.7,<0.8" PyYAML = "*" -requirements-detector = ">=1.2.0" +requirements-detector = ">=1.3.2" setoptconf-tmp = ">=0.3.1,<0.4.0" toml = ">=0.10.2,<0.11.0" [package.extras] with-bandit = ["bandit (>=1.5.1)"] -with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"] +with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"] with-mypy = ["mypy (>=0.600)"] with-pyright = ["pyright (>=1.1.3)"] with-pyroma = ["pyroma (>=2.4)"] +with-ruff = ["ruff"] with-vulture = ["vulture (>=1.5)"] [[package]] name = "psycopg2" -version = "2.9.9" +version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, - {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, - {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, - {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, - {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, - {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, - {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, - {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, - {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, - {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, - {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, ] [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.12.1" description = "Python style guide checker" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] @@ -658,31 +627,31 @@ toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] name = "pylint" -version = "2.17.7" +version = "3.3.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, + {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.3.5,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" @@ -708,22 +677,21 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-django" -version = "2.5.3" +version = "2.6.1" description = "A Pylint plugin to help Pylint understand the Django web framework" optional = false -python-versions = "*" +python-versions = "<4.0,>=3.9" files = [ - {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, - {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"}, + {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"}, + {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"}, ] [package.dependencies] -pylint = ">=2.0,<3" -pylint-plugin-utils = ">=0.7" +pylint = ">=3.0,<4" +pylint-plugin-utils = ">=0.8" [package.extras] -for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"] -with-django = ["Django"] +with-django = ["Django (>=2.2)"] [[package]] name = "pylint-flask" @@ -740,13 +708,13 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-plugin-utils" -version = "0.7" +version = "0.8.2" description = "Utilities and helpers for writing Pylint plugins" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7,<4.0" files = [ - {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"}, - {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"}, + {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"}, + {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"}, ] [package.dependencies] @@ -816,20 +784,19 @@ files = [ [[package]] name = "requirements-detector" -version = "1.2.2" +version = "1.3.2" description = "Python tool to find and list requirements of a Python project" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"}, - {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"}, + {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"}, + {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"}, ] [package.dependencies] -astroid = ">=2.0,<3.0" +astroid = ">=3.0,<4.0" packaging = ">=21.3" semver = ">=3.0.0,<4.0.0" -toml = ">=0.10.2,<0.11.0" [[package]] name = "semver" @@ -891,60 +858,68 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.33" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"}, - {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"}, - {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -958,7 +933,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -1018,13 +993,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240712" +version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, - {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, ] [package.dependencies] @@ -1043,13 +1018,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -1076,86 +1051,7 @@ h11 = ">=0.8" [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "0a44c6ca65ad12f9b38c44e61cb84594284cc703c132732f201d5cefa0090050" +content-hash = "416585a1c6721e3a1b8d48e54b8488f2633e90d983183b024b4f4e7dd785f5e4" diff --git a/modules/programming/module_example/pyproject.toml b/modules/programming/module_example/pyproject.toml index 4053d7037..69b85e19f 100644 --- a/modules/programming/module_example/pyproject.toml +++ b/modules/programming/module_example/pyproject.toml @@ -9,7 +9,7 @@ license = "MIT" python = "3.11.*" # if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible. # athena = { path = "../athena", develop = true } -athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"} +athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"} [tool.poetry.group.dev.dependencies] types-requests = "^2.31.0.8" diff --git a/modules/programming/module_programming_themisml/poetry.lock b/modules/programming/module_programming_themisml/poetry.lock index 4e24547e6..fd20f77b0 100644 --- a/modules/programming/module_programming_themisml/poetry.lock +++ b/modules/programming/module_programming_themisml/poetry.lock @@ -13,13 +13,13 @@ files = [ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -27,25 +27,21 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "astroid" -version = "2.15.8" +version = "3.3.5" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, + {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, ] -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - [[package]] name = "athena" version = "1.0.0" @@ -66,8 +62,8 @@ uvicorn = "^0.23.0" [package.source] type = "git" url = "https://github.com/ls1intum/Athena.git" -reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" -resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" +reference = "bbb2bb0" +resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2" subdirectory = "athena" [[package]] @@ -83,101 +79,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -226,76 +237,65 @@ files = [ [[package]] name = "contourpy" -version = "1.3.0" +version = "1.3.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"}, - {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"}, - {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"}, - {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"}, - {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"}, - {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"}, - {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"}, - {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"}, - {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"}, - {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"}, - {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"}, - {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"}, - {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"}, - {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"}, - {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"}, - {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"}, - {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"}, - {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"}, - {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"}, - {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"}, - {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"}, - {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"}, - {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"}, - {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"}, - {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"}, - {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"}, - {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"}, - {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"}, - {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"}, - {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"}, - {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"}, - {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"}, - {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"}, - {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"}, - {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"}, + {file = "contourpy-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab"}, + {file = "contourpy-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3"}, + {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277"}, + {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595"}, + {file = "contourpy-1.3.1-cp310-cp310-win32.whl", hash = "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697"}, + {file = "contourpy-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e"}, + {file = "contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b"}, + {file = "contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c"}, + {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291"}, + {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f"}, + {file = "contourpy-1.3.1-cp311-cp311-win32.whl", hash = "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375"}, + {file = "contourpy-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9"}, + {file = "contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509"}, + {file = "contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9"}, + {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b"}, + {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d"}, + {file = "contourpy-1.3.1-cp312-cp312-win32.whl", hash = "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e"}, + {file = "contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d"}, + {file = "contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2"}, + {file = "contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c"}, + {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3"}, + {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1"}, + {file = "contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82"}, + {file = "contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd"}, + {file = "contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30"}, + {file = "contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda"}, + {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242"}, + {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1"}, + {file = "contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1"}, + {file = "contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53"}, + {file = "contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699"}, ] [package.dependencies] @@ -325,13 +325,13 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "dill" -version = "0.3.8" +version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] @@ -370,35 +370,35 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "filelock" -version = "3.15.4" +version = "3.16.1" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, - {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, + {file = "filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0"}, + {file = "filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] -typing = ["typing-extensions (>=4.8)"] +docs = ["furo (>=2024.8.6)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4.1)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.6.1)", "diff-cover (>=9.2)", "pytest (>=8.3.3)", "pytest-asyncio (>=0.24)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-timeout (>=2.3.1)", "virtualenv (>=20.26.4)"] +typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "flake8" -version = "5.0.4" +version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8.1" files = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "flake8-polyfill" @@ -416,53 +416,61 @@ flake8 = "*" [[package]] name = "fonttools" -version = "4.53.1" +version = "4.55.2" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, - {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, - {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, - {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, - {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, - {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, - {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, - {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, - {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, - {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, - {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, - {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, - {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, - {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bef0f8603834643b1a6419d57902f18e7d950ec1a998fb70410635c598dc1a1e"}, + {file = "fonttools-4.55.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:944228b86d472612d3b48bcc83b31c25c2271e63fdc74539adfcfa7a96d487fb"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f0e55f5da594b85f269cfbecd2f6bd3e07d0abba68870bc3f34854de4fa4678"}, + {file = "fonttools-4.55.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5b1a6e576db0c83c1b91925bf1363478c4bb968dbe8433147332fb5782ce6190"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:616368b15716781bc84df5c2191dc0540137aaef56c2771eb4b89b90933f347a"}, + {file = "fonttools-4.55.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7bbae4f3915225c2c37670da68e2bf18a21206060ad31dfb95fec91ef641caa7"}, + {file = "fonttools-4.55.2-cp310-cp310-win32.whl", hash = "sha256:8b02b10648d69d67a7eb055f4d3eedf4a85deb22fb7a19fbd9acbae7c7538199"}, + {file = "fonttools-4.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:bbea0ab841113ac8e8edde067e099b7288ffc6ac2dded538b131c2c0595d5f77"}, + {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d34525e8141286fa976e14806639d32294bfb38d28bbdb5f6be9f46a1cd695a6"}, + {file = "fonttools-4.55.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0ecd1c2b1c2ec46bb73685bc5473c72e16ed0930ef79bc2919ccadc43a99fb16"}, + {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9008438ad59e5a8e403a62fbefef2b2ff377eb3857d90a3f2a5f4d674ff441b2"}, + {file = "fonttools-4.55.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:131591ac8d7a47043aaf29581aba755ae151d46e49d2bf49608601efd71e8b4d"}, + {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4c83381c3e3e3d9caa25527c4300543578341f21aae89e4fbbb4debdda8d82a2"}, + {file = "fonttools-4.55.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:42aca564b575252fd9954ed0d91d97a24de24289a16ce8ff74ed0bdf5ecebf11"}, + {file = "fonttools-4.55.2-cp311-cp311-win32.whl", hash = "sha256:c6457f650ebe15baa17fc06e256227f0a47f46f80f27ec5a0b00160de8dc2c13"}, + {file = "fonttools-4.55.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cfa67414d7414442a5635ff634384101c54f53bb7b0e04aa6a61b013fcce194"}, + {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:18f082445b8fe5e91c53e6184f4c1c73f3f965c8bcc614c6cd6effd573ce6c1a"}, + {file = "fonttools-4.55.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:27c0f91adbbd706e8acd1db73e3e510118e62d0ffb651864567dccc5b2339f90"}, + {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d8ccce035320d63dba0c35f52499322f5531dbe85bba1514c7cea26297e4c54"}, + {file = "fonttools-4.55.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96e126df9615df214ec7f04bebcf60076297fbc10b75c777ce58b702d7708ffb"}, + {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:508ebb42956a7a931c4092dfa2d9b4ffd4f94cea09b8211199090d2bd082506b"}, + {file = "fonttools-4.55.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c1b9de46ef7b683d50400abf9f1578eaceee271ff51c36bf4b7366f2be29f498"}, + {file = "fonttools-4.55.2-cp312-cp312-win32.whl", hash = "sha256:2df61d9fc15199cc86dad29f64dd686874a3a52dda0c2d8597d21f509f95c332"}, + {file = "fonttools-4.55.2-cp312-cp312-win_amd64.whl", hash = "sha256:d337ec087da8216a828574aa0525d869df0a2ac217a2efc1890974ddd1fbc5b9"}, + {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:10aff204e2edee1d312fa595c06f201adf8d528a3b659cfb34cd47eceaaa6a26"}, + {file = "fonttools-4.55.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:09fe922a3eff181fd07dd724cdb441fb6b9fc355fd1c0f1aa79aca60faf1fbdd"}, + {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:487e1e8b524143a799bda0169c48b44a23a6027c1bb1957d5a172a7d3a1dd704"}, + {file = "fonttools-4.55.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b1726872e09268bbedb14dc02e58b7ea31ecdd1204c6073eda4911746b44797"}, + {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6fc88cfb58b0cd7b48718c3e61dd0d0a3ee8e2c86b973342967ce09fbf1db6d4"}, + {file = "fonttools-4.55.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e857fe1859901ad8c5cab32e0eebc920adb09f413d2d73b74b677cf47b28590c"}, + {file = "fonttools-4.55.2-cp313-cp313-win32.whl", hash = "sha256:81ccd2b3a420b8050c7d9db3be0555d71662973b3ef2a1d921a2880b58957db8"}, + {file = "fonttools-4.55.2-cp313-cp313-win_amd64.whl", hash = "sha256:d559eb1744c7dcfa90ae60cb1a4b3595e898e48f4198738c321468c01180cd83"}, + {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6b5917ef79cac8300b88fd6113003fd01bbbbea2ea060a27b95d8f77cb4c65c2"}, + {file = "fonttools-4.55.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:663eba5615d6abaaf616432354eb7ce951d518e43404371bcc2b0694ef21e8d6"}, + {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:803d5cef5fc47f44f5084d154aa3d6f069bb1b60e32390c225f897fa19b0f939"}, + {file = "fonttools-4.55.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc5f100de0173cc39102c0399bd6c3bd544bbdf224957933f10ee442d43cddd"}, + {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3d9bbc1e380fdaf04ad9eabd8e3e6a4301eaf3487940893e9fd98537ea2e283b"}, + {file = "fonttools-4.55.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:42a9afedff07b6f75aa0f39b5e49922ac764580ef3efce035ca30284b2ee65c8"}, + {file = "fonttools-4.55.2-cp38-cp38-win32.whl", hash = "sha256:f1c76f423f1a241df08f87614364dff6e0b7ce23c962c1b74bd995ec7c0dad13"}, + {file = "fonttools-4.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:25062b6ca03464dd5179fc2040fb19e03391b7cc49b9cc4f879312e638605c5c"}, + {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d1100d8e665fe386a79cab59446992de881ea74d0d6c191bb988642692aa2421"}, + {file = "fonttools-4.55.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dbdc251c5e472e5ae6bc816f9b82718b8e93ff7992e7331d6cf3562b96aa268e"}, + {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0bf24d2b02dbc9376d795a63062632ff73e3e9e60c0229373f500aed7e86dd7"}, + {file = "fonttools-4.55.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ff250ed4ff05015dfd9cf2adf7570c7a383ca80f4d9732ac484a5ed0d8453c"}, + {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:44cf2a98aa661dbdeb8c03f5e405b074e2935196780bb729888639f5276067d9"}, + {file = "fonttools-4.55.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:22ef222740eb89d189bf0612eb98fbae592c61d7efeac51bfbc2a1592d469557"}, + {file = "fonttools-4.55.2-cp39-cp39-win32.whl", hash = "sha256:93f439ca27e55f585e7aaa04a74990acd983b5f2245e41d6b79f0a8b44e684d8"}, + {file = "fonttools-4.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:627cf10d6f5af5bec6324c18a2670f134c29e1b7dce3fb62e8ef88baa6cba7a9"}, + {file = "fonttools-4.55.2-py3-none-any.whl", hash = "sha256:8e2d89fbe9b08d96e22c7a81ec04a4e8d8439c31223e2dc6f2f9fc8ff14bdf9f"}, + {file = "fonttools-4.55.2.tar.gz", hash = "sha256:45947e7b3f9673f91df125d375eb57b9a23f2a603f438a1aebf3171bffa7a205"}, ] [package.extras] @@ -481,13 +489,13 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "fsspec" -version = "2024.6.1" +version = "2024.10.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2024.6.1-py3-none-any.whl", hash = "sha256:3cb443f8bcd2efb31295a5b9fdb02aee81d8452c80d28f97a6d0959e6cee101e"}, - {file = "fsspec-2024.6.1.tar.gz", hash = "sha256:fad7d7e209dd4c1208e3bbfda706620e0da5142bebbd9c384afb95b07e798e49"}, + {file = "fsspec-2024.10.0-py3-none-any.whl", hash = "sha256:03b9a6785766a4de40368b88906366755e2819e758b83705c88cd7cb5fe81871"}, + {file = "fsspec-2024.10.0.tar.gz", hash = "sha256:eda2d8a4116d4f2429db8550f2457da57279247dd930bb12f821b58391359493"}, ] [package.extras] @@ -552,69 +560,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] @@ -678,13 +701,13 @@ socks = ["socksio (==1.*)"] [[package]] name = "huggingface-hub" -version = "0.24.6" +version = "0.26.3" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.24.6-py3-none-any.whl", hash = "sha256:a990f3232aa985fe749bc9474060cbad75e8b2f115f6665a9fda5b9c97818970"}, - {file = "huggingface_hub-0.24.6.tar.gz", hash = "sha256:cc2579e761d070713eaa9c323e3debe39d5b464ae3a7261c39a9195b27bb8000"}, + {file = "huggingface_hub-0.26.3-py3-none-any.whl", hash = "sha256:e66aa99e569c2d5419240a9e553ad07245a5b1300350bfbc5a4945cf7432991b"}, + {file = "huggingface_hub-0.26.3.tar.gz", hash = "sha256:90e1fe62ffc26757a073aaad618422b899ccf9447c2bba8c902a90bef5b42e1d"}, ] [package.dependencies] @@ -697,30 +720,33 @@ tqdm = ">=4.42.1" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +all = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] cli = ["InquirerPy (==0.3.4)"] -dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] +dev = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "libcst (==1.4.0)", "mypy (==1.5.1)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "ruff (>=0.5.0)", "soundfile", "types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)", "urllib3 (<2.0)"] fastai = ["fastai (>=2.4)", "fastcore (>=1.3.27)", "toml"] hf-transfer = ["hf-transfer (>=0.1.4)"] -inference = ["aiohttp", "minijinja (>=1.0)"] -quality = ["mypy (==1.5.1)", "ruff (>=0.5.0)"] +inference = ["aiohttp"] +quality = ["libcst (==1.4.0)", "mypy (==1.5.1)", "ruff (>=0.5.0)"] tensorflow = ["graphviz", "pydot", "tensorflow"] tensorflow-testing = ["keras (<3.0)", "tensorflow"] -testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio", "jedi", "minijinja (>=1.0)", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] +testing = ["InquirerPy (==0.3.4)", "Jinja2", "Pillow", "aiohttp", "fastapi", "gradio (>=4.0.0)", "jedi", "numpy", "pytest (>=8.1.1,<8.2.2)", "pytest-asyncio", "pytest-cov", "pytest-env", "pytest-mock", "pytest-rerunfailures", "pytest-vcr", "pytest-xdist", "soundfile", "urllib3 (<2.0)"] torch = ["safetensors[torch]", "torch"] typing = ["types-PyYAML", "types-requests", "types-simplejson", "types-toml", "types-tqdm", "types-urllib3", "typing-extensions (>=4.8.0)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "isort" version = "5.13.2" @@ -872,170 +898,127 @@ files = [ {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599b5c873c63a1f6ed7eead644a8a380cfbdf5db91dcb6f85707aaab213b1674"}, {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:801fa7802e5cfabe3ab0c81a34c323a319b097dfb5004be950482d882f3d7225"}, {file = "kiwisolver-1.4.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0c6c43471bc764fad4bc99c5c2d6d16a676b1abf844ca7c8702bdae92df01ee0"}, -] - -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, + {file = "kiwisolver-1.4.7.tar.gz", hash = "sha256:9893ff81bd7107f7b685d3017cc6583daadb4fc26e4a888350df530e41980a60"}, ] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] name = "matplotlib" -version = "3.9.2" +version = "3.9.3" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, - {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, - {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, - {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"}, - {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"}, - {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"}, - {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"}, - {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"}, - {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"}, - {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"}, - {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"}, - {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"}, - {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"}, - {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:41b016e3be4e740b66c79a031a0a6e145728dbc248142e751e8dab4f3188ca1d"}, + {file = "matplotlib-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e0143975fc2a6d7136c97e19c637321288371e8f09cff2564ecd73e865ea0b9"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f459c8ee2c086455744723628264e43c884be0c7d7b45d84b8cd981310b4815"}, + {file = "matplotlib-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:687df7ceff57b8f070d02b4db66f75566370e7ae182a0782b6d3d21b0d6917dc"}, + {file = "matplotlib-3.9.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:edd14cf733fdc4f6e6fe3f705af97676a7e52859bf0044aa2c84e55be739241c"}, + {file = "matplotlib-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c40c244221a1adbb1256692b1133c6fb89418df27bf759a31a333e7912a4010"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:cf2a60daf6cecff6828bc608df00dbc794380e7234d2411c0ec612811f01969d"}, + {file = "matplotlib-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:213d6dc25ce686516208d8a3e91120c6a4fdae4a3e06b8505ced5b716b50cc04"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c52f48eb75fcc119a4fdb68ba83eb5f71656999420375df7c94cc68e0e14686e"}, + {file = "matplotlib-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3c93796b44fa111049b88a24105e947f03c01966b5c0cc782e2ee3887b790a3"}, + {file = "matplotlib-3.9.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cd1077b9a09b16d8c3c7075a8add5ffbfe6a69156a57e290c800ed4d435bef1d"}, + {file = "matplotlib-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:c96eeeb8c68b662c7747f91a385688d4b449687d29b691eff7068a4602fe6dc4"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0a361bd5583bf0bcc08841df3c10269617ee2a36b99ac39d455a767da908bbbc"}, + {file = "matplotlib-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e14485bb1b83eeb3d55b6878f9560240981e7bbc7a8d4e1e8c38b9bd6ec8d2de"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a8d279f78844aad213c4935c18f8292a9432d51af2d88bca99072c903948045"}, + {file = "matplotlib-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6c12514329ac0d03128cf1dcceb335f4fbf7c11da98bca68dca8dcb983153a9"}, + {file = "matplotlib-3.9.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6e9de2b390d253a508dd497e9b5579f3a851f208763ed67fdca5dc0c3ea6849c"}, + {file = "matplotlib-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d796272408f8567ff7eaa00eb2856b3a00524490e47ad505b0b4ca6bb8a7411f"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:203d18df84f5288973b2d56de63d4678cc748250026ca9e1ad8f8a0fd8a75d83"}, + {file = "matplotlib-3.9.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b651b0d3642991259109dc0351fc33ad44c624801367bb8307be9bfc35e427ad"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:66d7b171fecf96940ce069923a08ba3df33ef542de82c2ff4fe8caa8346fa95a"}, + {file = "matplotlib-3.9.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be0ba61f6ff2e6b68e4270fb63b6813c9e7dec3d15fc3a93f47480444fd72f0"}, + {file = "matplotlib-3.9.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d6b2e8856dec3a6db1ae51aec85c82223e834b228c1d3228aede87eee2b34f9"}, + {file = "matplotlib-3.9.3-cp313-cp313-win_amd64.whl", hash = "sha256:90a85a004fefed9e583597478420bf904bb1a065b0b0ee5b9d8d31b04b0f3f70"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3119b2f16de7f7b9212ba76d8fe6a0e9f90b27a1e04683cd89833a991682f639"}, + {file = "matplotlib-3.9.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:87ad73763d93add1b6c1f9fcd33af662fd62ed70e620c52fcb79f3ac427cf3a6"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:026bdf3137ab6022c866efa4813b6bbeddc2ed4c9e7e02f0e323a7bca380dfa0"}, + {file = "matplotlib-3.9.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:760a5e89ebbb172989e8273024a1024b0f084510b9105261b3b00c15e9c9f006"}, + {file = "matplotlib-3.9.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a42b9dc42de2cfe357efa27d9c50c7833fc5ab9b2eb7252ccd5d5f836a84e1e4"}, + {file = "matplotlib-3.9.3-cp313-cp313t-win_amd64.whl", hash = "sha256:e0fcb7da73fbf67b5f4bdaa57d85bb585a4e913d4a10f3e15b32baea56a67f0a"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:031b7f5b8e595cc07def77ec5b58464e9bb67dc5760be5d6f26d9da24892481d"}, + {file = "matplotlib-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9fa6e193c14d6944e0685cdb527cb6b38b0e4a518043e7212f214113af7391da"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e6eefae6effa0c35bbbc18c25ee6e0b1da44d2359c3cd526eb0c9e703cf055d"}, + {file = "matplotlib-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d3e5c7a99bd28afb957e1ae661323b0800d75b419f24d041ed1cc5d844a764"}, + {file = "matplotlib-3.9.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816a966d5d376bf24c92af8f379e78e67278833e4c7cbc9fa41872eec629a060"}, + {file = "matplotlib-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fb0b37c896172899a4a93d9442ffdc6f870165f59e05ce2e07c6fded1c15749"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f2a4ea08e6876206d511365b0bc234edc813d90b930be72c3011bbd7898796f"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9b081dac96ab19c54fd8558fac17c9d2c9cb5cc4656e7ed3261ddc927ba3e2c5"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0a0a63cb8404d1d1f94968ef35738900038137dab8af836b6c21bb6f03d75465"}, + {file = "matplotlib-3.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:896774766fd6be4571a43bc2fcbcb1dcca0807e53cab4a5bf88c4aa861a08e12"}, + {file = "matplotlib-3.9.3.tar.gz", hash = "sha256:cd5dbbc8e25cad5f706845c4d100e2c8b34691b412b93717ce38d8ae803bcfa5"}, ] [package.dependencies] @@ -1050,7 +1033,7 @@ pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [package.extras] -dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] [[package]] name = "mccabe" @@ -1082,38 +1065,43 @@ tests = ["pytest (>=4.6)"] [[package]] name = "mypy" -version = "1.11.2" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -1122,6 +1110,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -1139,131 +1128,147 @@ files = [ [[package]] name = "networkx" -version = "3.3" +version = "3.4.2" description = "Python package for creating and manipulating graphs and networks" optional = false python-versions = ">=3.10" files = [ - {file = "networkx-3.3-py3-none-any.whl", hash = "sha256:28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2"}, - {file = "networkx-3.3.tar.gz", hash = "sha256:0c127d8b2f4865f59ae9cb8aafcd60b5c70f3241ebd66f7defad7c4ab90126c9"}, + {file = "networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f"}, + {file = "networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1"}, ] [package.extras] -default = ["matplotlib (>=3.6)", "numpy (>=1.23)", "pandas (>=1.4)", "scipy (>=1.9,!=1.11.0,!=1.11.1)"] +default = ["matplotlib (>=3.7)", "numpy (>=1.24)", "pandas (>=2.0)", "scipy (>=1.10,!=1.11.0,!=1.11.1)"] developer = ["changelist (==0.5)", "mypy (>=1.1)", "pre-commit (>=3.2)", "rtoml"] -doc = ["myst-nb (>=1.0)", "numpydoc (>=1.7)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.14)", "sphinx (>=7)", "sphinx-gallery (>=0.14)", "texext (>=0.6.7)"] -extra = ["lxml (>=4.6)", "pydot (>=2.0)", "pygraphviz (>=1.12)", "sympy (>=1.10)"] +doc = ["intersphinx-registry", "myst-nb (>=1.1)", "numpydoc (>=1.8.0)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.15)", "sphinx (>=7.3)", "sphinx-gallery (>=0.16)", "texext (>=0.6.7)"] +example = ["cairocffi (>=1.7)", "contextily (>=1.6)", "igraph (>=0.11)", "momepy (>=0.7.2)", "osmnx (>=1.9)", "scikit-learn (>=1.5)", "seaborn (>=0.13)"] +extra = ["lxml (>=4.6)", "pydot (>=3.0.1)", "pygraphviz (>=1.14)", "sympy (>=1.10)"] test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "numpy" -version = "2.1.1" +version = "2.1.3" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c8a0e34993b510fc19b9a2ce7f31cb8e94ecf6e924a40c0c9dd4f62d0aac47d9"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7dd86dfaf7c900c0bbdcb8b16e2f6ddf1eb1fe39c6c8cca6e94844ed3152a8fd"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:5889dd24f03ca5a5b1e8a90a33b5a0846d8977565e4ae003a63d22ecddf6782f"}, - {file = "numpy-2.1.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:59ca673ad11d4b84ceb385290ed0ebe60266e356641428c845b39cd9df6713ab"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13ce49a34c44b6de5241f0b38b07e44c1b2dcacd9e36c30f9c2fcb1bb5135db7"}, - {file = "numpy-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:913cc1d311060b1d409e609947fa1b9753701dac96e6581b58afc36b7ee35af6"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:caf5d284ddea7462c32b8d4a6b8af030b6c9fd5332afb70e7414d7fdded4bfd0"}, - {file = "numpy-2.1.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:57eb525e7c2a8fdee02d731f647146ff54ea8c973364f3b850069ffb42799647"}, - {file = "numpy-2.1.1-cp310-cp310-win32.whl", hash = "sha256:9a8e06c7a980869ea67bbf551283bbed2856915f0a792dc32dd0f9dd2fb56728"}, - {file = "numpy-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:d10c39947a2d351d6d466b4ae83dad4c37cd6c3cdd6d5d0fa797da56f710a6ae"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0d07841fd284718feffe7dd17a63a2e6c78679b2d386d3e82f44f0108c905550"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b5613cfeb1adfe791e8e681128f5f49f22f3fcaa942255a6124d58ca59d9528f"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0b8cc2715a84b7c3b161f9ebbd942740aaed913584cae9cdc7f8ad5ad41943d0"}, - {file = "numpy-2.1.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:b49742cdb85f1f81e4dc1b39dcf328244f4d8d1ded95dea725b316bd2cf18c95"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8d5f8a8e3bc87334f025194c6193e408903d21ebaeb10952264943a985066ca"}, - {file = "numpy-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d51fc141ddbe3f919e91a096ec739f49d686df8af254b2053ba21a910ae518bf"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:98ce7fb5b8063cfdd86596b9c762bf2b5e35a2cdd7e967494ab78a1fa7f8b86e"}, - {file = "numpy-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:24c2ad697bd8593887b019817ddd9974a7f429c14a5469d7fad413f28340a6d2"}, - {file = "numpy-2.1.1-cp311-cp311-win32.whl", hash = "sha256:397bc5ce62d3fb73f304bec332171535c187e0643e176a6e9421a6e3eacef06d"}, - {file = "numpy-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:ae8ce252404cdd4de56dcfce8b11eac3c594a9c16c231d081fb705cf23bd4d9e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7c803b7934a7f59563db459292e6aa078bb38b7ab1446ca38dd138646a38203e"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6435c48250c12f001920f0751fe50c0348f5f240852cfddc5e2f97e007544cbe"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3269c9eb8745e8d975980b3a7411a98976824e1fdef11f0aacf76147f662b15f"}, - {file = "numpy-2.1.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:fac6e277a41163d27dfab5f4ec1f7a83fac94e170665a4a50191b545721c6521"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcd8f556cdc8cfe35e70efb92463082b7f43dd7e547eb071ffc36abc0ca4699b"}, - {file = "numpy-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b9cd92c8f8e7b313b80e93cedc12c0112088541dcedd9197b5dee3738c1201"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:afd9c680df4de71cd58582b51e88a61feed4abcc7530bcd3d48483f20fc76f2a"}, - {file = "numpy-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8661c94e3aad18e1ea17a11f60f843a4933ccaf1a25a7c6a9182af70610b2313"}, - {file = "numpy-2.1.1-cp312-cp312-win32.whl", hash = "sha256:950802d17a33c07cba7fd7c3dcfa7d64705509206be1606f196d179e539111ed"}, - {file = "numpy-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:3fc5eabfc720db95d68e6646e88f8b399bfedd235994016351b1d9e062c4b270"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:046356b19d7ad1890c751b99acad5e82dc4a02232013bd9a9a712fddf8eb60f5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6e5a9cb2be39350ae6c8f79410744e80154df658d5bea06e06e0ac5bb75480d5"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:d4c57b68c8ef5e1ebf47238e99bf27657511ec3f071c465f6b1bccbef12d4136"}, - {file = "numpy-2.1.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:8ae0fd135e0b157365ac7cc31fff27f07a5572bdfc38f9c2d43b2aff416cc8b0"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981707f6b31b59c0c24bcda52e5605f9701cb46da4b86c2e8023656ad3e833cb"}, - {file = "numpy-2.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ca4b53e1e0b279142113b8c5eb7d7a877e967c306edc34f3b58e9be12fda8df"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e097507396c0be4e547ff15b13dc3866f45f3680f789c1a1301b07dadd3fbc78"}, - {file = "numpy-2.1.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7506387e191fe8cdb267f912469a3cccc538ab108471291636a96a54e599556"}, - {file = "numpy-2.1.1-cp313-cp313-win32.whl", hash = "sha256:251105b7c42abe40e3a689881e1793370cc9724ad50d64b30b358bbb3a97553b"}, - {file = "numpy-2.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:f212d4f46b67ff604d11fff7cc62d36b3e8714edf68e44e9760e19be38c03eb0"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:920b0911bb2e4414c50e55bd658baeb78281a47feeb064ab40c2b66ecba85553"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:bab7c09454460a487e631ffc0c42057e3d8f2a9ddccd1e60c7bb8ed774992480"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:cea427d1350f3fd0d2818ce7350095c1a2ee33e30961d2f0fef48576ddbbe90f"}, - {file = "numpy-2.1.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:e30356d530528a42eeba51420ae8bf6c6c09559051887196599d96ee5f536468"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8dfa9e94fc127c40979c3eacbae1e61fda4fe71d84869cc129e2721973231ef"}, - {file = "numpy-2.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910b47a6d0635ec1bd53b88f86120a52bf56dcc27b51f18c7b4a2e2224c29f0f"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:13cc11c00000848702322af4de0147ced365c81d66053a67c2e962a485b3717c"}, - {file = "numpy-2.1.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:53e27293b3a2b661c03f79aa51c3987492bd4641ef933e366e0f9f6c9bf257ec"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:7be6a07520b88214ea85d8ac8b7d6d8a1839b0b5cb87412ac9f49fa934eb15d5"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:52ac2e48f5ad847cd43c4755520a2317f3380213493b9d8a4c5e37f3b87df504"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50a95ca3560a6058d6ea91d4629a83a897ee27c00630aed9d933dff191f170cd"}, - {file = "numpy-2.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:99f4a9ee60eed1385a86e82288971a51e71df052ed0b2900ed30bc840c0f2e39"}, - {file = "numpy-2.1.1.tar.gz", hash = "sha256:d0cf7d55b1051387807405b3898efafa862997b4cba8aa5dbe657be794afeafd"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"}, + {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"}, + {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"}, + {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"}, + {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"}, + {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"}, + {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"}, + {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"}, + {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"}, + {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"}, + {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"}, + {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"}, + {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"}, + {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"}, + {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"}, + {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"}, + {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"}, + {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"}, + {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"}, + {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"}, + {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"}, + {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"}, + {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"}, + {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"}, + {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"}, + {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"}, + {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"}, + {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"}, + {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"}, + {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"}, + {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"}, + {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"}, + {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"}, + {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"}, + {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"}, + {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"}, + {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"}, + {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, ] [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pandas" -version = "2.2.2" +version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, - {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, - {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, - {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, - {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, - {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, - {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, ] [package.dependencies] @@ -1313,95 +1318,90 @@ flake8-polyfill = ">=1.0.2,<2" [[package]] name = "pillow" -version = "10.4.0" +version = "11.0.0" description = "Python Imaging Library (Fork)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, - {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, - {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"}, + {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"}, + {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"}, + {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"}, + {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"}, + {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"}, + {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"}, + {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"}, + {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"}, + {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"}, + {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"}, + {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"}, + {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"}, + {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"}, + {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"}, + {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"}, + {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"}, + {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"}, + {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"}, + {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"}, + {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -1410,90 +1410,85 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "prospector" -version = "1.10.3" +version = "1.13.3" description = "Prospector is a tool to analyse Python code by aggregating the result of other tools." optional = false -python-versions = ">=3.7.2,<4.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"}, - {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"}, + {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"}, + {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"}, ] [package.dependencies] dodgy = ">=0.2.1,<0.3.0" -flake8 = "<6.0.0" GitPython = ">=3.1.27,<4.0.0" mccabe = ">=0.7.0,<0.8.0" packaging = "*" pep8-naming = ">=0.3.3,<=0.10.0" pycodestyle = ">=2.9.0" pydocstyle = ">=2.0.0" -pyflakes = ">=2.2.0,<3" -pylint = ">=2.8.3" +pyflakes = ">=2.2.0" +pylint = ">=3.0" pylint-celery = "0.3" -pylint-django = ">=2.5,<2.6" +pylint-django = ">=2.6.1" pylint-flask = "0.6" -pylint-plugin-utils = ">=0.7,<0.8" PyYAML = "*" -requirements-detector = ">=1.2.0" +requirements-detector = ">=1.3.2" setoptconf-tmp = ">=0.3.1,<0.4.0" toml = ">=0.10.2,<0.11.0" [package.extras] with-bandit = ["bandit (>=1.5.1)"] -with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"] +with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"] with-mypy = ["mypy (>=0.600)"] with-pyright = ["pyright (>=1.1.3)"] with-pyroma = ["pyroma (>=2.4)"] +with-ruff = ["ruff"] with-vulture = ["vulture (>=1.5)"] [[package]] name = "psycopg2" -version = "2.9.9" +version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, - {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, - {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, - {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, - {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, - {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, - {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, - {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, - {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, - {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, - {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, ] [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.12.1" description = "Python style guide checker" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] @@ -1574,31 +1569,31 @@ toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] name = "pylint" -version = "2.17.7" +version = "3.3.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, + {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.3.5,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" @@ -1624,22 +1619,21 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-django" -version = "2.5.3" +version = "2.6.1" description = "A Pylint plugin to help Pylint understand the Django web framework" optional = false -python-versions = "*" +python-versions = "<4.0,>=3.9" files = [ - {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, - {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"}, + {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"}, + {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"}, ] [package.dependencies] -pylint = ">=2.0,<3" -pylint-plugin-utils = ">=0.7" +pylint = ">=3.0,<4" +pylint-plugin-utils = ">=0.8" [package.extras] -for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"] -with-django = ["Django"] +with-django = ["Django (>=2.2)"] [[package]] name = "pylint-flask" @@ -1656,13 +1650,13 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-plugin-utils" -version = "0.7" +version = "0.8.2" description = "Utilities and helpers for writing Pylint plugins" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7,<4.0" files = [ - {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"}, - {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"}, + {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"}, + {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"}, ] [package.dependencies] @@ -1670,13 +1664,13 @@ pylint = ">=1.7" [[package]] name = "pyparsing" -version = "3.1.4" +version = "3.2.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.6.8" +python-versions = ">=3.9" files = [ - {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, - {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, + {file = "pyparsing-3.2.0-py3-none-any.whl", hash = "sha256:93d9577b88da0bbea8cc8334ee8b918ed014968fd2ec383e868fb8afb1ccef84"}, + {file = "pyparsing-3.2.0.tar.gz", hash = "sha256:cbf74e27246d595d9a74b186b810f6fbb86726dbf3b9532efb343f6d7294fe9c"}, ] [package.extras] @@ -1698,13 +1692,13 @@ six = ">=1.5" [[package]] name = "pytz" -version = "2024.1" +version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] @@ -1771,90 +1765,105 @@ files = [ [[package]] name = "regex" -version = "2024.7.24" +version = "2024.11.6" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.8" files = [ - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b0d3f567fafa0633aee87f08b9276c7062da9616931382993c03808bb68ce"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3426de3b91d1bc73249042742f45c2148803c111d1175b283270177fdf669024"}, - {file = "regex-2024.7.24-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f273674b445bcb6e4409bf8d1be67bc4b58e8b46fd0d560055d515b8830063cd"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23acc72f0f4e1a9e6e9843d6328177ae3074b4182167e34119ec7233dfeccf53"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65fd3d2e228cae024c411c5ccdffae4c315271eee4a8b839291f84f796b34eca"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c414cbda77dbf13c3bc88b073a1a9f375c7b0cb5e115e15d4b73ec3a2fbc6f59"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf7a89eef64b5455835f5ed30254ec19bf41f7541cd94f266ab7cbd463f00c41"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19c65b00d42804e3fbea9708f0937d157e53429a39b7c61253ff15670ff62cb5"}, - {file = "regex-2024.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7a5486ca56c8869070a966321d5ab416ff0f83f30e0e2da1ab48815c8d165d46"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6f51f9556785e5a203713f5efd9c085b4a45aecd2a42573e2b5041881b588d1f"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a4997716674d36a82eab3e86f8fa77080a5d8d96a389a61ea1d0e3a94a582cf7"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:c0abb5e4e8ce71a61d9446040c1e86d4e6d23f9097275c5bd49ed978755ff0fe"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:18300a1d78cf1290fa583cd8b7cde26ecb73e9f5916690cf9d42de569c89b1ce"}, - {file = "regex-2024.7.24-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:416c0e4f56308f34cdb18c3f59849479dde5b19febdcd6e6fa4d04b6c31c9faa"}, - {file = "regex-2024.7.24-cp310-cp310-win32.whl", hash = "sha256:fb168b5924bef397b5ba13aabd8cf5df7d3d93f10218d7b925e360d436863f66"}, - {file = "regex-2024.7.24-cp310-cp310-win_amd64.whl", hash = "sha256:6b9fc7e9cc983e75e2518496ba1afc524227c163e43d706688a6bb9eca41617e"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:382281306e3adaaa7b8b9ebbb3ffb43358a7bbf585fa93821300a418bb975281"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4fdd1384619f406ad9037fe6b6eaa3de2749e2e12084abc80169e8e075377d3b"}, - {file = "regex-2024.7.24-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3d974d24edb231446f708c455fd08f94c41c1ff4f04bcf06e5f36df5ef50b95a"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2ec4419a3fe6cf8a4795752596dfe0adb4aea40d3683a132bae9c30b81e8d73"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb563dd3aea54c797adf513eeec819c4213d7dbfc311874eb4fd28d10f2ff0f2"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:45104baae8b9f67569f0f1dca5e1f1ed77a54ae1cd8b0b07aba89272710db61e"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:994448ee01864501912abf2bad9203bffc34158e80fe8bfb5b031f4f8e16da51"}, - {file = "regex-2024.7.24-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3fac296f99283ac232d8125be932c5cd7644084a30748fda013028c815ba3364"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e37e809b9303ec3a179085415cb5f418ecf65ec98cdfe34f6a078b46ef823ee"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:01b689e887f612610c869421241e075c02f2e3d1ae93a037cb14f88ab6a8934c"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f6442f0f0ff81775eaa5b05af8a0ffa1dda36e9cf6ec1e0d3d245e8564b684ce"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:871e3ab2838fbcb4e0865a6e01233975df3a15e6fce93b6f99d75cacbd9862d1"}, - {file = "regex-2024.7.24-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c918b7a1e26b4ab40409820ddccc5d49871a82329640f5005f73572d5eaa9b5e"}, - {file = "regex-2024.7.24-cp311-cp311-win32.whl", hash = "sha256:2dfbb8baf8ba2c2b9aa2807f44ed272f0913eeeba002478c4577b8d29cde215c"}, - {file = "regex-2024.7.24-cp311-cp311-win_amd64.whl", hash = "sha256:538d30cd96ed7d1416d3956f94d54e426a8daf7c14527f6e0d6d425fcb4cca52"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fe4ebef608553aff8deb845c7f4f1d0740ff76fa672c011cc0bacb2a00fbde86"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:74007a5b25b7a678459f06559504f1eec2f0f17bca218c9d56f6a0a12bfffdad"}, - {file = "regex-2024.7.24-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7df9ea48641da022c2a3c9c641650cd09f0cd15e8908bf931ad538f5ca7919c9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a1141a1dcc32904c47f6846b040275c6e5de0bf73f17d7a409035d55b76f289"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80c811cfcb5c331237d9bad3bea2c391114588cf4131707e84d9493064d267f9"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7214477bf9bd195894cf24005b1e7b496f46833337b5dedb7b2a6e33f66d962c"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d55588cba7553f0b6ec33130bc3e114b355570b45785cebdc9daed8c637dd440"}, - {file = "regex-2024.7.24-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558a57cfc32adcf19d3f791f62b5ff564922942e389e3cfdb538a23d65a6b610"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a512eed9dfd4117110b1881ba9a59b31433caed0c4101b361f768e7bcbaf93c5"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:86b17ba823ea76256b1885652e3a141a99a5c4422f4a869189db328321b73799"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5eefee9bfe23f6df09ffb6dfb23809f4d74a78acef004aa904dc7c88b9944b05"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:731fcd76bbdbf225e2eb85b7c38da9633ad3073822f5ab32379381e8c3c12e94"}, - {file = "regex-2024.7.24-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:eaef80eac3b4cfbdd6de53c6e108b4c534c21ae055d1dbea2de6b3b8ff3def38"}, - {file = "regex-2024.7.24-cp312-cp312-win32.whl", hash = "sha256:185e029368d6f89f36e526764cf12bf8d6f0e3a2a7737da625a76f594bdfcbfc"}, - {file = "regex-2024.7.24-cp312-cp312-win_amd64.whl", hash = "sha256:2f1baff13cc2521bea83ab2528e7a80cbe0ebb2c6f0bfad15be7da3aed443908"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:66b4c0731a5c81921e938dcf1a88e978264e26e6ac4ec96a4d21ae0354581ae0"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:88ecc3afd7e776967fa16c80f974cb79399ee8dc6c96423321d6f7d4b881c92b"}, - {file = "regex-2024.7.24-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:64bd50cf16bcc54b274e20235bf8edbb64184a30e1e53873ff8d444e7ac656b2"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb462f0e346fcf41a901a126b50f8781e9a474d3927930f3490f38a6e73b6950"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a82465ebbc9b1c5c50738536fdfa7cab639a261a99b469c9d4c7dcbb2b3f1e57"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:68a8f8c046c6466ac61a36b65bb2395c74451df2ffb8458492ef49900efed293"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac8e84fff5d27420f3c1e879ce9929108e873667ec87e0c8eeb413a5311adfe"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ba2537ef2163db9e6ccdbeb6f6424282ae4dea43177402152c67ef869cf3978b"}, - {file = "regex-2024.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:43affe33137fcd679bdae93fb25924979517e011f9dea99163f80b82eadc7e53"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:c9bb87fdf2ab2370f21e4d5636e5317775e5d51ff32ebff2cf389f71b9b13750"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:945352286a541406f99b2655c973852da7911b3f4264e010218bbc1cc73168f2"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:8bc593dcce679206b60a538c302d03c29b18e3d862609317cb560e18b66d10cf"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3f3b6ca8eae6d6c75a6cff525c8530c60e909a71a15e1b731723233331de4169"}, - {file = "regex-2024.7.24-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c51edc3541e11fbe83f0c4d9412ef6c79f664a3745fab261457e84465ec9d5a8"}, - {file = "regex-2024.7.24-cp38-cp38-win32.whl", hash = "sha256:d0a07763776188b4db4c9c7fb1b8c494049f84659bb387b71c73bbc07f189e96"}, - {file = "regex-2024.7.24-cp38-cp38-win_amd64.whl", hash = "sha256:8fd5afd101dcf86a270d254364e0e8dddedebe6bd1ab9d5f732f274fa00499a5"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0ffe3f9d430cd37d8fa5632ff6fb36d5b24818c5c986893063b4e5bdb84cdf24"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:25419b70ba00a16abc90ee5fce061228206173231f004437730b67ac77323f0d"}, - {file = "regex-2024.7.24-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:33e2614a7ce627f0cdf2ad104797d1f68342d967de3695678c0cb84f530709f8"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d33a0021893ede5969876052796165bab6006559ab845fd7b515a30abdd990dc"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:04ce29e2c5fedf296b1a1b0acc1724ba93a36fb14031f3abfb7abda2806c1535"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b16582783f44fbca6fcf46f61347340c787d7530d88b4d590a397a47583f31dd"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:836d3cc225b3e8a943d0b02633fb2f28a66e281290302a79df0e1eaa984ff7c1"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:438d9f0f4bc64e8dea78274caa5af971ceff0f8771e1a2333620969936ba10be"}, - {file = "regex-2024.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:973335b1624859cb0e52f96062a28aa18f3a5fc77a96e4a3d6d76e29811a0e6e"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c5e69fd3eb0b409432b537fe3c6f44ac089c458ab6b78dcec14478422879ec5f"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:fbf8c2f00904eaf63ff37718eb13acf8e178cb940520e47b2f05027f5bb34ce3"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ae2757ace61bc4061b69af19e4689fa4416e1a04840f33b441034202b5cd02d4"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:44fc61b99035fd9b3b9453f1713234e5a7c92a04f3577252b45feefe1b327759"}, - {file = "regex-2024.7.24-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:84c312cdf839e8b579f504afcd7b65f35d60b6285d892b19adea16355e8343c9"}, - {file = "regex-2024.7.24-cp39-cp39-win32.whl", hash = "sha256:ca5b2028c2f7af4e13fb9fc29b28d0ce767c38c7facdf64f6c2cd040413055f1"}, - {file = "regex-2024.7.24-cp39-cp39-win_amd64.whl", hash = "sha256:7c479f5ae937ec9985ecaf42e2e10631551d909f203e31308c12d703922742f9"}, - {file = "regex-2024.7.24.tar.gz", hash = "sha256:9cfd009eed1a46b27c14039ad5bbc5e71b6367c5b2e6d5f5da0ea91600817506"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0"}, + {file = "regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c"}, + {file = "regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008"}, + {file = "regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62"}, + {file = "regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e"}, + {file = "regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7"}, + {file = "regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0"}, + {file = "regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d"}, + {file = "regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45"}, + {file = "regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9"}, + {file = "regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9"}, + {file = "regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e"}, + {file = "regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51"}, + {file = "regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad"}, + {file = "regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54"}, + {file = "regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4"}, + {file = "regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c"}, + {file = "regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4"}, + {file = "regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d"}, + {file = "regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff"}, + {file = "regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3a51ccc315653ba012774efca4f23d1d2a8a8f278a6072e29c7147eee7da446b"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ad182d02e40de7459b73155deb8996bbd8e96852267879396fb274e8700190e3"}, + {file = "regex-2024.11.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba9b72e5643641b7d41fa1f6d5abda2c9a263ae835b917348fc3c928182ad467"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40291b1b89ca6ad8d3f2b82782cc33807f1406cf68c8d440861da6304d8ffbbd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cdf58d0e516ee426a48f7b2c03a332a4114420716d55769ff7108c37a09951bf"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a36fdf2af13c2b14738f6e973aba563623cb77d753bbbd8d414d18bfaa3105dd"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d1cee317bfc014c2419a76bcc87f071405e3966da434e03e13beb45f8aced1a6"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50153825ee016b91549962f970d6a4442fa106832e14c918acd1c8e479916c4f"}, + {file = "regex-2024.11.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea1bfda2f7162605f6e8178223576856b3d791109f15ea99a9f95c16a7636fb5"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:df951c5f4a1b1910f1a99ff42c473ff60f8225baa1cdd3539fe2819d9543e9df"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:072623554418a9911446278f16ecb398fb3b540147a7828c06e2011fa531e773"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:f654882311409afb1d780b940234208a252322c24a93b442ca714d119e68086c"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:89d75e7293d2b3e674db7d4d9b1bee7f8f3d1609428e293771d1a962617150cc"}, + {file = "regex-2024.11.6-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:f65557897fc977a44ab205ea871b690adaef6b9da6afda4790a2484b04293a5f"}, + {file = "regex-2024.11.6-cp38-cp38-win32.whl", hash = "sha256:6f44ec28b1f858c98d3036ad5d7d0bfc568bdd7a74f9c24e25f41ef1ebfd81a4"}, + {file = "regex-2024.11.6-cp38-cp38-win_amd64.whl", hash = "sha256:bb8f74f2f10dbf13a0be8de623ba4f9491faf58c24064f32b65679b021ed0001"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5704e174f8ccab2026bd2f1ab6c510345ae8eac818b613d7d73e785f1310f839"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:220902c3c5cc6af55d4fe19ead504de80eb91f786dc102fbd74894b1551f095e"}, + {file = "regex-2024.11.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7e351589da0850c125f1600a4c4ba3c722efefe16b297de54300f08d734fbf"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5056b185ca113c88e18223183aa1a50e66507769c9640a6ff75859619d73957b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2e34b51b650b23ed3354b5a07aab37034d9f923db2a40519139af34f485f77d0"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5670bce7b200273eee1840ef307bfa07cda90b38ae56e9a6ebcc9f50da9c469b"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08986dce1339bc932923e7d1232ce9881499a0e02925f7402fb7c982515419ef"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:93c0b12d3d3bc25af4ebbf38f9ee780a487e8bf6954c115b9f015822d3bb8e48"}, + {file = "regex-2024.11.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:764e71f22ab3b305e7f4c21f1a97e1526a25ebdd22513e251cf376760213da13"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:f056bf21105c2515c32372bbc057f43eb02aae2fda61052e2f7622c801f0b4e2"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:69ab78f848845569401469da20df3e081e6b5a11cb086de3eed1d48f5ed57c95"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:86fddba590aad9208e2fa8b43b4c098bb0ec74f15718bb6a704e3c63e2cef3e9"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:684d7a212682996d21ca12ef3c17353c021fe9de6049e19ac8481ec35574a70f"}, + {file = "regex-2024.11.6-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:a03e02f48cd1abbd9f3b7e3586d97c8f7a9721c436f51a5245b3b9483044480b"}, + {file = "regex-2024.11.6-cp39-cp39-win32.whl", hash = "sha256:41758407fc32d5c3c5de163888068cfee69cb4c2be844e7ac517a52770f9af57"}, + {file = "regex-2024.11.6-cp39-cp39-win_amd64.whl", hash = "sha256:b2837718570f95dd41675328e111345f9b7095d821bac435aac173ac80b19983"}, + {file = "regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519"}, ] [[package]] @@ -1880,138 +1889,137 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requirements-detector" -version = "1.2.2" +version = "1.3.2" description = "Python tool to find and list requirements of a Python project" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"}, - {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"}, + {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"}, + {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"}, ] [package.dependencies] -astroid = ">=2.0,<3.0" +astroid = ">=3.0,<4.0" packaging = ">=21.3" semver = ">=3.0.0,<4.0.0" -toml = ">=0.10.2,<0.11.0" [[package]] name = "safetensors" -version = "0.4.4" +version = "0.4.5" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "safetensors-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2adb497ada13097f30e386e88c959c0fda855a5f6f98845710f5bb2c57e14f12"}, - {file = "safetensors-0.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7db7fdc2d71fd1444d85ca3f3d682ba2df7d61a637dfc6d80793f439eae264ab"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8d4f0eed76b430f009fbefca1a0028ddb112891b03cb556d7440d5cd68eb89a9"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:57d216fab0b5c432aabf7170883d7c11671622bde8bd1436c46d633163a703f6"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7d9b76322e49c056bcc819f8bdca37a2daa5a6d42c07f30927b501088db03309"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32f0d1f6243e90ee43bc6ee3e8c30ac5b09ca63f5dd35dbc985a1fc5208c451a"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d464bdc384874601a177375028012a5f177f1505279f9456fea84bbc575c7f"}, - {file = "safetensors-0.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63144e36209ad8e4e65384dbf2d52dd5b1866986079c00a72335402a38aacdc5"}, - {file = "safetensors-0.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:051d5ecd490af7245258000304b812825974d5e56f14a3ff7e1b8b2ba6dc2ed4"}, - {file = "safetensors-0.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:51bc8429d9376224cd3cf7e8ce4f208b4c930cd10e515b6ac6a72cbc3370f0d9"}, - {file = "safetensors-0.4.4-cp310-none-win32.whl", hash = "sha256:fb7b54830cee8cf9923d969e2df87ce20e625b1af2fd194222ab902d3adcc29c"}, - {file = "safetensors-0.4.4-cp310-none-win_amd64.whl", hash = "sha256:4b3e8aa8226d6560de8c2b9d5ff8555ea482599c670610758afdc97f3e021e9c"}, - {file = "safetensors-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:bbaa31f2cb49013818bde319232ccd72da62ee40f7d2aa532083eda5664e85ff"}, - {file = "safetensors-0.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fdcb80f4e9fbb33b58e9bf95e7dbbedff505d1bcd1c05f7c7ce883632710006"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55c14c20be247b8a1aeaf3ab4476265e3ca83096bb8e09bb1a7aa806088def4f"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:949aaa1118660f992dbf0968487b3e3cfdad67f948658ab08c6b5762e90cc8b6"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c11a4ab7debc456326a2bac67f35ee0ac792bcf812c7562a4a28559a5c795e27"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0cea44bba5c5601b297bc8307e4075535b95163402e4906b2e9b82788a2a6df"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9d752c97f6bbe327352f76e5b86442d776abc789249fc5e72eacb49e6916482"}, - {file = "safetensors-0.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03f2bb92e61b055ef6cc22883ad1ae898010a95730fa988c60a23800eb742c2c"}, - {file = "safetensors-0.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:87bf3f91a9328a941acc44eceffd4e1f5f89b030985b2966637e582157173b98"}, - {file = "safetensors-0.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:20d218ec2b6899d29d6895419a58b6e44cc5ff8f0cc29fac8d236a8978ab702e"}, - {file = "safetensors-0.4.4-cp311-none-win32.whl", hash = "sha256:8079486118919f600c603536e2490ca37b3dbd3280e3ad6eaacfe6264605ac8a"}, - {file = "safetensors-0.4.4-cp311-none-win_amd64.whl", hash = "sha256:2f8c2eb0615e2e64ee27d478c7c13f51e5329d7972d9e15528d3e4cfc4a08f0d"}, - {file = "safetensors-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:baec5675944b4a47749c93c01c73d826ef7d42d36ba8d0dba36336fa80c76426"}, - {file = "safetensors-0.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f15117b96866401825f3e94543145028a2947d19974429246ce59403f49e77c6"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a13a9caea485df164c51be4eb0c87f97f790b7c3213d635eba2314d959fe929"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b54bc4ca5f9b9bba8cd4fb91c24b2446a86b5ae7f8975cf3b7a277353c3127c"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08332c22e03b651c8eb7bf5fc2de90044f3672f43403b3d9ac7e7e0f4f76495e"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bb62841e839ee992c37bb75e75891c7f4904e772db3691c59daaca5b4ab960e1"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e5b927acc5f2f59547270b0309a46d983edc44be64e1ca27a7fcb0474d6cd67"}, - {file = "safetensors-0.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2a69c71b1ae98a8021a09a0b43363b0143b0ce74e7c0e83cacba691b62655fb8"}, - {file = "safetensors-0.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23654ad162c02a5636f0cd520a0310902c4421aab1d91a0b667722a4937cc445"}, - {file = "safetensors-0.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:0677c109d949cf53756859160b955b2e75b0eefe952189c184d7be30ecf7e858"}, - {file = "safetensors-0.4.4-cp312-none-win32.whl", hash = "sha256:a51d0ddd4deb8871c6de15a772ef40b3dbd26a3c0451bb9e66bc76fc5a784e5b"}, - {file = "safetensors-0.4.4-cp312-none-win_amd64.whl", hash = "sha256:2d065059e75a798bc1933c293b68d04d79b586bb7f8c921e0ca1e82759d0dbb1"}, - {file = "safetensors-0.4.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:9d625692578dd40a112df30c02a1adf068027566abd8e6a74893bb13d441c150"}, - {file = "safetensors-0.4.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7cabcf39c81e5b988d0adefdaea2eb9b4fd9bd62d5ed6559988c62f36bfa9a89"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8359bef65f49d51476e9811d59c015f0ddae618ee0e44144f5595278c9f8268c"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1a32c662e7df9226fd850f054a3ead0e4213a96a70b5ce37b2d26ba27004e013"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c329a4dcc395364a1c0d2d1574d725fe81a840783dda64c31c5a60fc7d41472c"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:239ee093b1db877c9f8fe2d71331a97f3b9c7c0d3ab9f09c4851004a11f44b65"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd574145d930cf9405a64f9923600879a5ce51d9f315443a5f706374841327b6"}, - {file = "safetensors-0.4.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f6784eed29f9e036acb0b7769d9e78a0dc2c72c2d8ba7903005350d817e287a4"}, - {file = "safetensors-0.4.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:65a4a6072436bf0a4825b1c295d248cc17e5f4651e60ee62427a5bcaa8622a7a"}, - {file = "safetensors-0.4.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:df81e3407630de060ae8313da49509c3caa33b1a9415562284eaf3d0c7705f9f"}, - {file = "safetensors-0.4.4-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:e4a0f374200e8443d9746e947ebb346c40f83a3970e75a685ade0adbba5c48d9"}, - {file = "safetensors-0.4.4-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:181fb5f3dee78dae7fd7ec57d02e58f7936498d587c6b7c1c8049ef448c8d285"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb4ac1d8f6b65ec84ddfacd275079e89d9df7c92f95675ba96c4f790a64df6e"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:76897944cd9239e8a70955679b531b9a0619f76e25476e57ed373322d9c2075d"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a9e9d1a27e51a0f69e761a3d581c3af46729ec1c988fa1f839e04743026ae35"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:005ef9fc0f47cb9821c40793eb029f712e97278dae84de91cb2b4809b856685d"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26987dac3752688c696c77c3576f951dbbdb8c57f0957a41fb6f933cf84c0b62"}, - {file = "safetensors-0.4.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c05270b290acd8d249739f40d272a64dd597d5a4b90f27d830e538bc2549303c"}, - {file = "safetensors-0.4.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:068d3a33711fc4d93659c825a04480ff5a3854e1d78632cdc8f37fee917e8a60"}, - {file = "safetensors-0.4.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:063421ef08ca1021feea8b46951251b90ae91f899234dd78297cbe7c1db73b99"}, - {file = "safetensors-0.4.4-cp37-none-win32.whl", hash = "sha256:d52f5d0615ea83fd853d4e1d8acf93cc2e0223ad4568ba1e1f6ca72e94ea7b9d"}, - {file = "safetensors-0.4.4-cp37-none-win_amd64.whl", hash = "sha256:88a5ac3280232d4ed8e994cbc03b46a1807ce0aa123867b40c4a41f226c61f94"}, - {file = "safetensors-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3467ab511bfe3360967d7dc53b49f272d59309e57a067dd2405b4d35e7dcf9dc"}, - {file = "safetensors-0.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2ab4c96d922e53670ce25fbb9b63d5ea972e244de4fa1dd97b590d9fd66aacef"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87df18fce4440477c3ef1fd7ae17c704a69a74a77e705a12be135ee0651a0c2d"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e5fe345b2bc7d88587149ac11def1f629d2671c4c34f5df38aed0ba59dc37f8"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9f1a3e01dce3cd54060791e7e24588417c98b941baa5974700eeb0b8eb65b0a0"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6bf35e9a8998d8339fd9a05ac4ce465a4d2a2956cc0d837b67c4642ed9e947"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:166c0c52f6488b8538b2a9f3fbc6aad61a7261e170698779b371e81b45f0440d"}, - {file = "safetensors-0.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:87e9903b8668a16ef02c08ba4ebc91e57a49c481e9b5866e31d798632805014b"}, - {file = "safetensors-0.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a9c421153aa23c323bd8483d4155b4eee82c9a50ac11cccd83539104a8279c64"}, - {file = "safetensors-0.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a4b8617499b2371c7353302c5116a7e0a3a12da66389ce53140e607d3bf7b3d3"}, - {file = "safetensors-0.4.4-cp38-none-win32.whl", hash = "sha256:c6280f5aeafa1731f0a3709463ab33d8e0624321593951aefada5472f0b313fd"}, - {file = "safetensors-0.4.4-cp38-none-win_amd64.whl", hash = "sha256:6ceed6247fc2d33b2a7b7d25d8a0fe645b68798856e0bc7a9800c5fd945eb80f"}, - {file = "safetensors-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5cf6c6f6193797372adf50c91d0171743d16299491c75acad8650107dffa9269"}, - {file = "safetensors-0.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:419010156b914a3e5da4e4adf992bee050924d0fe423c4b329e523e2c14c3547"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88f6fd5a5c1302ce79993cc5feeadcc795a70f953c762544d01fb02b2db4ea33"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d468cffb82d90789696d5b4d8b6ab8843052cba58a15296691a7a3df55143cd2"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9353c2af2dd467333d4850a16edb66855e795561cd170685178f706c80d2c71e"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:83c155b4a33368d9b9c2543e78f2452090fb030c52401ca608ef16fa58c98353"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9850754c434e636ce3dc586f534bb23bcbd78940c304775bee9005bf610e98f1"}, - {file = "safetensors-0.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:275f500b4d26f67b6ec05629a4600645231bd75e4ed42087a7c1801bff04f4b3"}, - {file = "safetensors-0.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5c2308de665b7130cd0e40a2329278226e4cf083f7400c51ca7e19ccfb3886f3"}, - {file = "safetensors-0.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e06a9ebc8656e030ccfe44634f2a541b4b1801cd52e390a53ad8bacbd65f8518"}, - {file = "safetensors-0.4.4-cp39-none-win32.whl", hash = "sha256:ef73df487b7c14b477016947c92708c2d929e1dee2bacdd6fff5a82ed4539537"}, - {file = "safetensors-0.4.4-cp39-none-win_amd64.whl", hash = "sha256:83d054818a8d1198d8bd8bc3ea2aac112a2c19def2bf73758321976788706398"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1d1f34c71371f0e034004a0b583284b45d233dd0b5f64a9125e16b8a01d15067"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1a8043a33d58bc9b30dfac90f75712134ca34733ec3d8267b1bd682afe7194f5"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8db8f0c59c84792c12661f8efa85de160f80efe16b87a9d5de91b93f9e0bce3c"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfc1fc38e37630dd12d519bdec9dcd4b345aec9930bb9ce0ed04461f49e58b52"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e5c9d86d9b13b18aafa88303e2cd21e677f5da2a14c828d2c460fe513af2e9a5"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:43251d7f29a59120a26f5a0d9583b9e112999e500afabcfdcb91606d3c5c89e3"}, - {file = "safetensors-0.4.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:2c42e9b277513b81cf507e6121c7b432b3235f980cac04f39f435b7902857f91"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3daacc9a4e3f428a84dd56bf31f20b768eb0b204af891ed68e1f06db9edf546f"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:218bbb9b883596715fc9997bb42470bf9f21bb832c3b34c2bf744d6fa8f2bbba"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bd5efc26b39f7fc82d4ab1d86a7f0644c8e34f3699c33f85bfa9a717a030e1b"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56ad9776b65d8743f86698a1973292c966cf3abff627efc44ed60e66cc538ddd"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:30f23e6253c5f43a809dea02dc28a9f5fa747735dc819f10c073fe1b605e97d4"}, - {file = "safetensors-0.4.4-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:5512078d00263de6cb04e9d26c9ae17611098f52357fea856213e38dc462f81f"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b96c3d9266439d17f35fc2173111d93afc1162f168e95aed122c1ca517b1f8f1"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:08d464aa72a9a13826946b4fb9094bb4b16554bbea2e069e20bd903289b6ced9"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:210160816d5a36cf41f48f38473b6f70d7bcb4b0527bedf0889cc0b4c3bb07db"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb276a53717f2bcfb6df0bcf284d8a12069002508d4c1ca715799226024ccd45"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a2c28c6487f17d8db0089e8b2cdc13de859366b94cc6cdc50e1b0a4147b56551"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7915f0c60e4e6e65d90f136d85dd3b429ae9191c36b380e626064694563dbd9f"}, - {file = "safetensors-0.4.4-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:00eea99ae422fbfa0b46065acbc58b46bfafadfcec179d4b4a32d5c45006af6c"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb1ed4fcb0b3c2f3ea2c5767434622fe5d660e5752f21ac2e8d737b1e5e480bb"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:73fc9a0a4343188bdb421783e600bfaf81d0793cd4cce6bafb3c2ed567a74cd5"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c37e6b714200824c73ca6eaf007382de76f39466a46e97558b8dc4cf643cfbf"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f75698c5c5c542417ac4956acfc420f7d4a2396adca63a015fd66641ea751759"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ca1a209157f242eb183e209040097118472e169f2e069bfbd40c303e24866543"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:177f2b60a058f92a3cec7a1786c9106c29eca8987ecdfb79ee88126e5f47fa31"}, - {file = "safetensors-0.4.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ee9622e84fe6e4cd4f020e5fda70d6206feff3157731df7151d457fdae18e541"}, - {file = "safetensors-0.4.4.tar.gz", hash = "sha256:5fe3e9b705250d0172ed4e100a811543108653fb2b66b9e702a088ad03772a07"}, + {file = "safetensors-0.4.5-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a63eaccd22243c67e4f2b1c3e258b257effc4acd78f3b9d397edc8cf8f1298a7"}, + {file = "safetensors-0.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:23fc9b4ec7b602915cbb4ec1a7c1ad96d2743c322f20ab709e2c35d1b66dad27"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6885016f34bef80ea1085b7e99b3c1f92cb1be78a49839203060f67b40aee761"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:133620f443450429322f238fda74d512c4008621227fccf2f8cf4a76206fea7c"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4fb3e0609ec12d2a77e882f07cced530b8262027f64b75d399f1504ffec0ba56"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0f1dd769f064adc33831f5e97ad07babbd728427f98e3e1db6902e369122737"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6d156bdb26732feada84f9388a9f135528c1ef5b05fae153da365ad4319c4c5"}, + {file = "safetensors-0.4.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e347d77e2c77eb7624400ccd09bed69d35c0332f417ce8c048d404a096c593b"}, + {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9f556eea3aec1d3d955403159fe2123ddd68e880f83954ee9b4a3f2e15e716b6"}, + {file = "safetensors-0.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9483f42be3b6bc8ff77dd67302de8ae411c4db39f7224dec66b0eb95822e4163"}, + {file = "safetensors-0.4.5-cp310-none-win32.whl", hash = "sha256:7389129c03fadd1ccc37fd1ebbc773f2b031483b04700923c3511d2a939252cc"}, + {file = "safetensors-0.4.5-cp310-none-win_amd64.whl", hash = "sha256:e98ef5524f8b6620c8cdef97220c0b6a5c1cef69852fcd2f174bb96c2bb316b1"}, + {file = "safetensors-0.4.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:21f848d7aebd5954f92538552d6d75f7c1b4500f51664078b5b49720d180e47c"}, + {file = "safetensors-0.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb07000b19d41e35eecef9a454f31a8b4718a185293f0d0b1c4b61d6e4487971"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09dedf7c2fda934ee68143202acff6e9e8eb0ddeeb4cfc24182bef999efa9f42"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:59b77e4b7a708988d84f26de3ebead61ef1659c73dcbc9946c18f3b1786d2688"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d3bc83e14d67adc2e9387e511097f254bd1b43c3020440e708858c684cbac68"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39371fc551c1072976073ab258c3119395294cf49cdc1f8476794627de3130df"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6c19feda32b931cae0acd42748a670bdf56bee6476a046af20181ad3fee4090"}, + {file = "safetensors-0.4.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a659467495de201e2f282063808a41170448c78bada1e62707b07a27b05e6943"}, + {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bad5e4b2476949bcd638a89f71b6916fa9a5cae5c1ae7eede337aca2100435c0"}, + {file = "safetensors-0.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a3a315a6d0054bc6889a17f5668a73f94f7fe55121ff59e0a199e3519c08565f"}, + {file = "safetensors-0.4.5-cp311-none-win32.whl", hash = "sha256:a01e232e6d3d5cf8b1667bc3b657a77bdab73f0743c26c1d3c5dd7ce86bd3a92"}, + {file = "safetensors-0.4.5-cp311-none-win_amd64.whl", hash = "sha256:cbd39cae1ad3e3ef6f63a6f07296b080c951f24cec60188378e43d3713000c04"}, + {file = "safetensors-0.4.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:473300314e026bd1043cef391bb16a8689453363381561b8a3e443870937cc1e"}, + {file = "safetensors-0.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:801183a0f76dc647f51a2d9141ad341f9665602a7899a693207a82fb102cc53e"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1524b54246e422ad6fb6aea1ac71edeeb77666efa67230e1faf6999df9b2e27f"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3139098e3e8b2ad7afbca96d30ad29157b50c90861084e69fcb80dec7430461"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65573dc35be9059770808e276b017256fa30058802c29e1038eb1c00028502ea"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd33da8e9407559f8779c82a0448e2133737f922d71f884da27184549416bfed"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3685ce7ed036f916316b567152482b7e959dc754fcc4a8342333d222e05f407c"}, + {file = "safetensors-0.4.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dde2bf390d25f67908278d6f5d59e46211ef98e44108727084d4637ee70ab4f1"}, + {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7469d70d3de970b1698d47c11ebbf296a308702cbaae7fcb993944751cf985f4"}, + {file = "safetensors-0.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a6ba28118636a130ccbb968bc33d4684c48678695dba2590169d5ab03a45646"}, + {file = "safetensors-0.4.5-cp312-none-win32.whl", hash = "sha256:c859c7ed90b0047f58ee27751c8e56951452ed36a67afee1b0a87847d065eec6"}, + {file = "safetensors-0.4.5-cp312-none-win_amd64.whl", hash = "sha256:b5a8810ad6a6f933fff6c276eae92c1da217b39b4d8b1bc1c0b8af2d270dc532"}, + {file = "safetensors-0.4.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:25e5f8e2e92a74f05b4ca55686234c32aac19927903792b30ee6d7bd5653d54e"}, + {file = "safetensors-0.4.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:81efb124b58af39fcd684254c645e35692fea81c51627259cdf6d67ff4458916"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:585f1703a518b437f5103aa9cf70e9bd437cb78eea9c51024329e4fb8a3e3679"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4b99fbf72e3faf0b2f5f16e5e3458b93b7d0a83984fe8d5364c60aa169f2da89"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b17b299ca9966ca983ecda1c0791a3f07f9ca6ab5ded8ef3d283fff45f6bcd5f"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76ded72f69209c9780fdb23ea89e56d35c54ae6abcdec67ccb22af8e696e449a"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2783956926303dcfeb1de91a4d1204cd4089ab441e622e7caee0642281109db3"}, + {file = "safetensors-0.4.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d94581aab8c6b204def4d7320f07534d6ee34cd4855688004a4354e63b639a35"}, + {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:67e1e7cb8678bb1b37ac48ec0df04faf689e2f4e9e81e566b5c63d9f23748523"}, + {file = "safetensors-0.4.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:dbd280b07e6054ea68b0cb4b16ad9703e7d63cd6890f577cb98acc5354780142"}, + {file = "safetensors-0.4.5-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:77d9b228da8374c7262046a36c1f656ba32a93df6cc51cd4453af932011e77f1"}, + {file = "safetensors-0.4.5-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:500cac01d50b301ab7bb192353317035011c5ceeef0fca652f9f43c000bb7f8d"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75331c0c746f03158ded32465b7d0b0e24c5a22121743662a2393439c43a45cf"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670e95fe34e0d591d0529e5e59fd9d3d72bc77b1444fcaa14dccda4f36b5a38b"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:098923e2574ff237c517d6e840acada8e5b311cb1fa226019105ed82e9c3b62f"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13ca0902d2648775089fa6a0c8fc9e6390c5f8ee576517d33f9261656f851e3f"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f0032bedc869c56f8d26259fe39cd21c5199cd57f2228d817a0e23e8370af25"}, + {file = "safetensors-0.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4b15f51b4f8f2a512341d9ce3475cacc19c5fdfc5db1f0e19449e75f95c7dc8"}, + {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f6594d130d0ad933d885c6a7b75c5183cb0e8450f799b80a39eae2b8508955eb"}, + {file = "safetensors-0.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:60c828a27e852ded2c85fc0f87bf1ec20e464c5cd4d56ff0e0711855cc2e17f8"}, + {file = "safetensors-0.4.5-cp37-none-win32.whl", hash = "sha256:6d3de65718b86c3eeaa8b73a9c3d123f9307a96bbd7be9698e21e76a56443af5"}, + {file = "safetensors-0.4.5-cp37-none-win_amd64.whl", hash = "sha256:5a2d68a523a4cefd791156a4174189a4114cf0bf9c50ceb89f261600f3b2b81a"}, + {file = "safetensors-0.4.5-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:e7a97058f96340850da0601a3309f3d29d6191b0702b2da201e54c6e3e44ccf0"}, + {file = "safetensors-0.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:63bfd425e25f5c733f572e2246e08a1c38bd6f2e027d3f7c87e2e43f228d1345"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3664ac565d0e809b0b929dae7ccd74e4d3273cd0c6d1220c6430035befb678e"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:313514b0b9b73ff4ddfb4edd71860696dbe3c1c9dc4d5cc13dbd74da283d2cbf"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31fa33ee326f750a2f2134a6174773c281d9a266ccd000bd4686d8021f1f3dac"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09566792588d77b68abe53754c9f1308fadd35c9f87be939e22c623eaacbed6b"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309aaec9b66cbf07ad3a2e5cb8a03205663324fea024ba391594423d0f00d9fe"}, + {file = "safetensors-0.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:53946c5813b8f9e26103c5efff4a931cc45d874f45229edd68557ffb35ffb9f8"}, + {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:868f9df9e99ad1e7f38c52194063a982bc88fedc7d05096f4f8160403aaf4bd6"}, + {file = "safetensors-0.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9cc9449bd0b0bc538bd5e268221f0c5590bc5c14c1934a6ae359d44410dc68c4"}, + {file = "safetensors-0.4.5-cp38-none-win32.whl", hash = "sha256:83c4f13a9e687335c3928f615cd63a37e3f8ef072a3f2a0599fa09f863fb06a2"}, + {file = "safetensors-0.4.5-cp38-none-win_amd64.whl", hash = "sha256:b98d40a2ffa560653f6274e15b27b3544e8e3713a44627ce268f419f35c49478"}, + {file = "safetensors-0.4.5-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cf727bb1281d66699bef5683b04d98c894a2803442c490a8d45cd365abfbdeb2"}, + {file = "safetensors-0.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96f1d038c827cdc552d97e71f522e1049fef0542be575421f7684756a748e457"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:139fbee92570ecea774e6344fee908907db79646d00b12c535f66bc78bd5ea2c"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c36302c1c69eebb383775a89645a32b9d266878fab619819ce660309d6176c9b"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d641f5b8149ea98deb5ffcf604d764aad1de38a8285f86771ce1abf8e74c4891"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4db6a61d968de73722b858038c616a1bebd4a86abe2688e46ca0cc2d17558f2"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b75a616e02f21b6f1d5785b20cecbab5e2bd3f6358a90e8925b813d557666ec1"}, + {file = "safetensors-0.4.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:788ee7d04cc0e0e7f944c52ff05f52a4415b312f5efd2ee66389fb7685ee030c"}, + {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:87bc42bd04fd9ca31396d3ca0433db0be1411b6b53ac5a32b7845a85d01ffc2e"}, + {file = "safetensors-0.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4037676c86365a721a8c9510323a51861d703b399b78a6b4486a54a65a975fca"}, + {file = "safetensors-0.4.5-cp39-none-win32.whl", hash = "sha256:1500418454529d0ed5c1564bda376c4ddff43f30fce9517d9bee7bcce5a8ef50"}, + {file = "safetensors-0.4.5-cp39-none-win_amd64.whl", hash = "sha256:9d1a94b9d793ed8fe35ab6d5cea28d540a46559bafc6aae98f30ee0867000cab"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdadf66b5a22ceb645d5435a0be7a0292ce59648ca1d46b352f13cff3ea80410"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d42ffd4c2259f31832cb17ff866c111684c87bd930892a1ba53fed28370c918c"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd8a1f6d2063a92cd04145c7fd9e31a1c7d85fbec20113a14b487563fdbc0597"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:951d2fcf1817f4fb0ef0b48f6696688a4e852a95922a042b3f96aaa67eedc920"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ac85d9a8c1af0e3132371d9f2d134695a06a96993c2e2f0bbe25debb9e3f67a"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:e3cec4a29eb7fe8da0b1c7988bc3828183080439dd559f720414450de076fcab"}, + {file = "safetensors-0.4.5-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:21742b391b859e67b26c0b2ac37f52c9c0944a879a25ad2f9f9f3cd61e7fda8f"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7db3006a4915151ce1913652e907cdede299b974641a83fbc092102ac41b644"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f68bf99ea970960a237f416ea394e266e0361895753df06e3e06e6ea7907d98b"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8158938cf3324172df024da511839d373c40fbfaa83e9abf467174b2910d7b4c"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:540ce6c4bf6b58cb0fd93fa5f143bc0ee341c93bb4f9287ccd92cf898cc1b0dd"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bfeaa1a699c6b9ed514bd15e6a91e74738b71125a9292159e3d6b7f0a53d2cde"}, + {file = "safetensors-0.4.5-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:01c8f00da537af711979e1b42a69a8ec9e1d7112f208e0e9b8a35d2c381085ef"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a0dd565f83b30f2ca79b5d35748d0d99dd4b3454f80e03dfb41f0038e3bdf180"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:023b6e5facda76989f4cba95a861b7e656b87e225f61811065d5c501f78cdb3f"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9633b663393d5796f0b60249549371e392b75a0b955c07e9c6f8708a87fc841f"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78dd8adfb48716233c45f676d6e48534d34b4bceb50162c13d1f0bdf6f78590a"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e8deb16c4321d61ae72533b8451ec4a9af8656d1c61ff81aa49f966406e4b68"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:52452fa5999dc50c4decaf0c53aa28371f7f1e0fe5c2dd9129059fbe1e1599c7"}, + {file = "safetensors-0.4.5-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d5f23198821e227cfc52d50fa989813513db381255c6d100927b012f0cfec63d"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f4beb84b6073b1247a773141a6331117e35d07134b3bb0383003f39971d414bb"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:68814d599d25ed2fdd045ed54d370d1d03cf35e02dce56de44c651f828fb9b7b"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0b6453c54c57c1781292c46593f8a37254b8b99004c68d6c3ce229688931a22"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:adaa9c6dead67e2dd90d634f89131e43162012479d86e25618e821a03d1eb1dc"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:73e7d408e9012cd17511b382b43547850969c7979efc2bc353f317abaf23c84c"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:775409ce0fcc58b10773fdb4221ed1eb007de10fe7adbdf8f5e8a56096b6f0bc"}, + {file = "safetensors-0.4.5-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:834001bed193e4440c4a3950a31059523ee5090605c907c66808664c932b549c"}, + {file = "safetensors-0.4.5.tar.gz", hash = "sha256:d73de19682deabb02524b3d5d1f8b3aaba94c72f1bbfc7911b9b9d5d391c0310"}, ] [package.extras] @@ -2054,13 +2062,13 @@ yaml = ["pyyaml"] [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -2098,60 +2106,68 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.33" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"}, - {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"}, - {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -2165,7 +2181,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -2203,13 +2219,13 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7 [[package]] name = "sympy" -version = "1.13.2" +version = "1.13.3" description = "Computer algebra system (CAS) in Python" optional = false python-versions = ">=3.8" files = [ - {file = "sympy-1.13.2-py3-none-any.whl", hash = "sha256:c51d75517712f1aed280d4ce58506a4a88d635d6b5dd48b39102a7ae1f3fcfe9"}, - {file = "sympy-1.13.2.tar.gz", hash = "sha256:401449d84d07be9d0c7a46a64bd54fe097667d5e7181bfe67ec777be9e01cb13"}, + {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, + {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, ] [package.dependencies] @@ -2220,111 +2236,123 @@ dev = ["hypothesis (>=6.70.0)", "pytest (>=7.1.0)"] [[package]] name = "tokenizers" -version = "0.19.1" +version = "0.20.3" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "tokenizers-0.19.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:952078130b3d101e05ecfc7fc3640282d74ed26bcf691400f872563fca15ac97"}, - {file = "tokenizers-0.19.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82c8b8063de6c0468f08e82c4e198763e7b97aabfe573fd4cf7b33930ca4df77"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f03727225feaf340ceeb7e00604825addef622d551cbd46b7b775ac834c1e1c4"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:453e4422efdfc9c6b6bf2eae00d5e323f263fff62b29a8c9cd526c5003f3f642"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:02e81bf089ebf0e7f4df34fa0207519f07e66d8491d963618252f2e0729e0b46"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b07c538ba956843833fee1190cf769c60dc62e1cf934ed50d77d5502194d63b1"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e28cab1582e0eec38b1f38c1c1fb2e56bce5dc180acb1724574fc5f47da2a4fe"}, - {file = "tokenizers-0.19.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b01afb7193d47439f091cd8f070a1ced347ad0f9144952a30a41836902fe09e"}, - {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7fb297edec6c6841ab2e4e8f357209519188e4a59b557ea4fafcf4691d1b4c98"}, - {file = "tokenizers-0.19.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2e8a3dd055e515df7054378dc9d6fa8c8c34e1f32777fb9a01fea81496b3f9d3"}, - {file = "tokenizers-0.19.1-cp310-none-win32.whl", hash = "sha256:7ff898780a155ea053f5d934925f3902be2ed1f4d916461e1a93019cc7250837"}, - {file = "tokenizers-0.19.1-cp310-none-win_amd64.whl", hash = "sha256:bea6f9947e9419c2fda21ae6c32871e3d398cba549b93f4a65a2d369662d9403"}, - {file = "tokenizers-0.19.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5c88d1481f1882c2e53e6bb06491e474e420d9ac7bdff172610c4f9ad3898059"}, - {file = "tokenizers-0.19.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ddf672ed719b4ed82b51499100f5417d7d9f6fb05a65e232249268f35de5ed14"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dadc509cc8a9fe460bd274c0e16ac4184d0958117cf026e0ea8b32b438171594"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfedf31824ca4915b511b03441784ff640378191918264268e6923da48104acc"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac11016d0a04aa6487b1513a3a36e7bee7eec0e5d30057c9c0408067345c48d2"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76951121890fea8330d3a0df9a954b3f2a37e3ec20e5b0530e9a0044ca2e11fe"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b342d2ce8fc8d00f376af068e3274e2e8649562e3bc6ae4a67784ded6b99428d"}, - {file = "tokenizers-0.19.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16ff18907f4909dca9b076b9c2d899114dd6abceeb074eca0c93e2353f943aa"}, - {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:706a37cc5332f85f26efbe2bdc9ef8a9b372b77e4645331a405073e4b3a8c1c6"}, - {file = "tokenizers-0.19.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:16baac68651701364b0289979ecec728546133e8e8fe38f66fe48ad07996b88b"}, - {file = "tokenizers-0.19.1-cp311-none-win32.whl", hash = "sha256:9ed240c56b4403e22b9584ee37d87b8bfa14865134e3e1c3fb4b2c42fafd3256"}, - {file = "tokenizers-0.19.1-cp311-none-win_amd64.whl", hash = "sha256:ad57d59341710b94a7d9dbea13f5c1e7d76fd8d9bcd944a7a6ab0b0da6e0cc66"}, - {file = "tokenizers-0.19.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:621d670e1b1c281a1c9698ed89451395d318802ff88d1fc1accff0867a06f153"}, - {file = "tokenizers-0.19.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d924204a3dbe50b75630bd16f821ebda6a5f729928df30f582fb5aade90c818a"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f3fefdc0446b1a1e6d81cd4c07088ac015665d2e812f6dbba4a06267d1a2c95"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9620b78e0b2d52ef07b0d428323fb34e8ea1219c5eac98c2596311f20f1f9266"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:04ce49e82d100594715ac1b2ce87d1a36e61891a91de774755f743babcd0dd52"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5c2ff13d157afe413bf7e25789879dd463e5a4abfb529a2d8f8473d8042e28f"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3174c76efd9d08f836bfccaca7cfec3f4d1c0a4cf3acbc7236ad577cc423c840"}, - {file = "tokenizers-0.19.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c9d5b6c0e7a1e979bec10ff960fae925e947aab95619a6fdb4c1d8ff3708ce3"}, - {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a179856d1caee06577220ebcfa332af046d576fb73454b8f4d4b0ba8324423ea"}, - {file = "tokenizers-0.19.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:952b80dac1a6492170f8c2429bd11fcaa14377e097d12a1dbe0ef2fb2241e16c"}, - {file = "tokenizers-0.19.1-cp312-none-win32.whl", hash = "sha256:01d62812454c188306755c94755465505836fd616f75067abcae529c35edeb57"}, - {file = "tokenizers-0.19.1-cp312-none-win_amd64.whl", hash = "sha256:b70bfbe3a82d3e3fb2a5e9b22a39f8d1740c96c68b6ace0086b39074f08ab89a"}, - {file = "tokenizers-0.19.1-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:bb9dfe7dae85bc6119d705a76dc068c062b8b575abe3595e3c6276480e67e3f1"}, - {file = "tokenizers-0.19.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:1f0360cbea28ea99944ac089c00de7b2e3e1c58f479fb8613b6d8d511ce98267"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:71e3ec71f0e78780851fef28c2a9babe20270404c921b756d7c532d280349214"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b82931fa619dbad979c0ee8e54dd5278acc418209cc897e42fac041f5366d626"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e8ff5b90eabdcdaa19af697885f70fe0b714ce16709cf43d4952f1f85299e73a"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e742d76ad84acbdb1a8e4694f915fe59ff6edc381c97d6dfdd054954e3478ad4"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d8c5d59d7b59885eab559d5bc082b2985555a54cda04dda4c65528d90ad252ad"}, - {file = "tokenizers-0.19.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b2da5c32ed869bebd990c9420df49813709e953674c0722ff471a116d97b22d"}, - {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:638e43936cc8b2cbb9f9d8dde0fe5e7e30766a3318d2342999ae27f68fdc9bd6"}, - {file = "tokenizers-0.19.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:78e769eb3b2c79687d9cb0f89ef77223e8e279b75c0a968e637ca7043a84463f"}, - {file = "tokenizers-0.19.1-cp37-none-win32.whl", hash = "sha256:72791f9bb1ca78e3ae525d4782e85272c63faaef9940d92142aa3eb79f3407a3"}, - {file = "tokenizers-0.19.1-cp37-none-win_amd64.whl", hash = "sha256:f3bbb7a0c5fcb692950b041ae11067ac54826204318922da754f908d95619fbc"}, - {file = "tokenizers-0.19.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:07f9295349bbbcedae8cefdbcfa7f686aa420be8aca5d4f7d1ae6016c128c0c5"}, - {file = "tokenizers-0.19.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:10a707cc6c4b6b183ec5dbfc5c34f3064e18cf62b4a938cb41699e33a99e03c1"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6309271f57b397aa0aff0cbbe632ca9d70430839ca3178bf0f06f825924eca22"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ad23d37d68cf00d54af184586d79b84075ada495e7c5c0f601f051b162112dc"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:427c4f0f3df9109314d4f75b8d1f65d9477033e67ffaec4bca53293d3aca286d"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e83a31c9cf181a0a3ef0abad2b5f6b43399faf5da7e696196ddd110d332519ee"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c27b99889bd58b7e301468c0838c5ed75e60c66df0d4db80c08f43462f82e0d3"}, - {file = "tokenizers-0.19.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bac0b0eb952412b0b196ca7a40e7dce4ed6f6926489313414010f2e6b9ec2adf"}, - {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8a6298bde623725ca31c9035a04bf2ef63208d266acd2bed8c2cb7d2b7d53ce6"}, - {file = "tokenizers-0.19.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:08a44864e42fa6d7d76d7be4bec62c9982f6f6248b4aa42f7302aa01e0abfd26"}, - {file = "tokenizers-0.19.1-cp38-none-win32.whl", hash = "sha256:1de5bc8652252d9357a666e609cb1453d4f8e160eb1fb2830ee369dd658e8975"}, - {file = "tokenizers-0.19.1-cp38-none-win_amd64.whl", hash = "sha256:0bcce02bf1ad9882345b34d5bd25ed4949a480cf0e656bbd468f4d8986f7a3f1"}, - {file = "tokenizers-0.19.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0b9394bd204842a2a1fd37fe29935353742be4a3460b6ccbaefa93f58a8df43d"}, - {file = "tokenizers-0.19.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4692ab92f91b87769d950ca14dbb61f8a9ef36a62f94bad6c82cc84a51f76f6a"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6258c2ef6f06259f70a682491c78561d492e885adeaf9f64f5389f78aa49a051"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c85cf76561fbd01e0d9ea2d1cbe711a65400092bc52b5242b16cfd22e51f0c58"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:670b802d4d82bbbb832ddb0d41df7015b3e549714c0e77f9bed3e74d42400fbe"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85aa3ab4b03d5e99fdd31660872249df5e855334b6c333e0bc13032ff4469c4a"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cbf001afbbed111a79ca47d75941e9e5361297a87d186cbfc11ed45e30b5daba"}, - {file = "tokenizers-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4c89aa46c269e4e70c4d4f9d6bc644fcc39bb409cb2a81227923404dd6f5227"}, - {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:39c1ec76ea1027438fafe16ecb0fb84795e62e9d643444c1090179e63808c69d"}, - {file = "tokenizers-0.19.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c2a0d47a89b48d7daa241e004e71fb5a50533718897a4cd6235cb846d511a478"}, - {file = "tokenizers-0.19.1-cp39-none-win32.whl", hash = "sha256:61b7fe8886f2e104d4caf9218b157b106207e0f2a4905c9c7ac98890688aabeb"}, - {file = "tokenizers-0.19.1-cp39-none-win_amd64.whl", hash = "sha256:f97660f6c43efd3e0bfd3f2e3e5615bf215680bad6ee3d469df6454b8c6e8256"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3b11853f17b54c2fe47742c56d8a33bf49ce31caf531e87ac0d7d13d327c9334"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d26194ef6c13302f446d39972aaa36a1dda6450bc8949f5eb4c27f51191375bd"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e8d1ed93beda54bbd6131a2cb363a576eac746d5c26ba5b7556bc6f964425594"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca407133536f19bdec44b3da117ef0d12e43f6d4b56ac4c765f37eca501c7bda"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce05fde79d2bc2e46ac08aacbc142bead21614d937aac950be88dc79f9db9022"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:35583cd46d16f07c054efd18b5d46af4a2f070a2dd0a47914e66f3ff5efb2b1e"}, - {file = "tokenizers-0.19.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:43350270bfc16b06ad3f6f07eab21f089adb835544417afda0f83256a8bf8b75"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b4399b59d1af5645bcee2072a463318114c39b8547437a7c2d6a186a1b5a0e2d"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6852c5b2a853b8b0ddc5993cd4f33bfffdca4fcc5d52f89dd4b8eada99379285"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcd266ae85c3d39df2f7e7d0e07f6c41a55e9a3123bb11f854412952deacd828"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecb2651956eea2aa0a2d099434134b1b68f1c31f9a5084d6d53f08ed43d45ff2"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b279ab506ec4445166ac476fb4d3cc383accde1ea152998509a94d82547c8e2a"}, - {file = "tokenizers-0.19.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:89183e55fb86e61d848ff83753f64cded119f5d6e1f553d14ffee3700d0a4a49"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:b2edbc75744235eea94d595a8b70fe279dd42f3296f76d5a86dde1d46e35f574"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:0e64bfde9a723274e9a71630c3e9494ed7b4c0f76a1faacf7fe294cd26f7ae7c"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0b5ca92bfa717759c052e345770792d02d1f43b06f9e790ca0a1db62838816f3"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f8a20266e695ec9d7a946a019c1d5ca4eddb6613d4f466888eee04f16eedb85"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63c38f45d8f2a2ec0f3a20073cccb335b9f99f73b3c69483cd52ebc75369d8a1"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:dd26e3afe8a7b61422df3176e06664503d3f5973b94f45d5c45987e1cb711876"}, - {file = "tokenizers-0.19.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:eddd5783a4a6309ce23432353cdb36220e25cbb779bfa9122320666508b44b88"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:56ae39d4036b753994476a1b935584071093b55c7a72e3b8288e68c313ca26e7"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:f9939ca7e58c2758c01b40324a59c034ce0cebad18e0d4563a9b1beab3018243"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6c330c0eb815d212893c67a032e9dc1b38a803eccb32f3e8172c19cc69fbb439"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec11802450a2487cdf0e634b750a04cbdc1c4d066b97d94ce7dd2cb51ebb325b"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b718f316b596f36e1dae097a7d5b91fc5b85e90bf08b01ff139bd8953b25af"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:ed69af290c2b65169f0ba9034d1dc39a5db9459b32f1dd8b5f3f32a3fcf06eab"}, - {file = "tokenizers-0.19.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f8a9c828277133af13f3859d1b6bf1c3cb6e9e1637df0e45312e6b7c2e622b1f"}, - {file = "tokenizers-0.19.1.tar.gz", hash = "sha256:ee59e6680ed0fdbe6b724cf38bd70400a0c1dd623b07ac729087270caeac88e3"}, + {file = "tokenizers-0.20.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:31ccab28dbb1a9fe539787210b0026e22debeab1662970f61c2d921f7557f7e4"}, + {file = "tokenizers-0.20.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6361191f762bda98c773da418cf511cbaa0cb8d0a1196f16f8c0119bde68ff8"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f128d5da1202b78fa0a10d8d938610472487da01b57098d48f7e944384362514"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:79c4121a2e9433ad7ef0769b9ca1f7dd7fa4c0cd501763d0a030afcbc6384481"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7850fde24197fe5cd6556e2fdba53a6d3bae67c531ea33a3d7c420b90904141"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b357970c095dc134978a68c67d845a1e3803ab7c4fbb39195bde914e7e13cf8b"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a333d878c4970b72d6c07848b90c05f6b045cf9273fc2bc04a27211721ad6118"}, + {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd9fee817f655a8f50049f685e224828abfadd436b8ff67979fc1d054b435f1"}, + {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e7816808b402129393a435ea2a509679b41246175d6e5e9f25b8692bfaa272b"}, + {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba96367db9d8a730d3a1d5996b4b7babb846c3994b8ef14008cd8660f55db59d"}, + {file = "tokenizers-0.20.3-cp310-none-win32.whl", hash = "sha256:ee31ba9d7df6a98619426283e80c6359f167e2e9882d9ce1b0254937dbd32f3f"}, + {file = "tokenizers-0.20.3-cp310-none-win_amd64.whl", hash = "sha256:a845c08fdad554fe0871d1255df85772f91236e5fd6b9287ef8b64f5807dbd0c"}, + {file = "tokenizers-0.20.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:585b51e06ca1f4839ce7759941e66766d7b060dccfdc57c4ca1e5b9a33013a90"}, + {file = "tokenizers-0.20.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61cbf11954f3b481d08723ebd048ba4b11e582986f9be74d2c3bdd9293a4538d"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef820880d5e4e8484e2fa54ff8d297bb32519eaa7815694dc835ace9130a3eea"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:67ef4dcb8841a4988cd00dd288fb95dfc8e22ed021f01f37348fd51c2b055ba9"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff1ef8bd47a02b0dc191688ccb4da53600df5d4c9a05a4b68e1e3de4823e78eb"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:444d188186eab3148baf0615b522461b41b1f0cd58cd57b862ec94b6ac9780f1"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37c04c032c1442740b2c2d925f1857885c07619224a533123ac7ea71ca5713da"}, + {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:453c7769d22231960ee0e883d1005c93c68015025a5e4ae56275406d94a3c907"}, + {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4bb31f7b2847e439766aaa9cc7bccf7ac7088052deccdb2275c952d96f691c6a"}, + {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:843729bf0f991b29655a069a2ff58a4c24375a553c70955e15e37a90dd4e045c"}, + {file = "tokenizers-0.20.3-cp311-none-win32.whl", hash = "sha256:efcce3a927b1e20ca694ba13f7a68c59b0bd859ef71e441db68ee42cf20c2442"}, + {file = "tokenizers-0.20.3-cp311-none-win_amd64.whl", hash = "sha256:88301aa0801f225725b6df5dea3d77c80365ff2362ca7e252583f2b4809c4cc0"}, + {file = "tokenizers-0.20.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49d12a32e190fad0e79e5bdb788d05da2f20d8e006b13a70859ac47fecf6ab2f"}, + {file = "tokenizers-0.20.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:282848cacfb9c06d5e51489f38ec5aa0b3cd1e247a023061945f71f41d949d73"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe4e08c7d0cd6154c795deb5bf81d2122f36daf075e0c12a8b050d824ef0a64"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca94fc1b73b3883c98f0c88c77700b13d55b49f1071dfd57df2b06f3ff7afd64"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef279c7e239f95c8bdd6ff319d9870f30f0d24915b04895f55b1adcf96d6c60d"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16384073973f6ccbde9852157a4fdfe632bb65208139c9d0c0bd0176a71fd67f"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:312d522caeb8a1a42ebdec87118d99b22667782b67898a76c963c058a7e41d4f"}, + {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b7cb962564785a83dafbba0144ecb7f579f1d57d8c406cdaa7f32fe32f18ad"}, + {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:124c5882ebb88dadae1fc788a582299fcd3a8bd84fc3e260b9918cf28b8751f5"}, + {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2b6e54e71f84c4202111a489879005cb14b92616a87417f6c102c833af961ea2"}, + {file = "tokenizers-0.20.3-cp312-none-win32.whl", hash = "sha256:83d9bfbe9af86f2d9df4833c22e94d94750f1d0cd9bfb22a7bb90a86f61cdb1c"}, + {file = "tokenizers-0.20.3-cp312-none-win_amd64.whl", hash = "sha256:44def74cee574d609a36e17c8914311d1b5dbcfe37c55fd29369d42591b91cf2"}, + {file = "tokenizers-0.20.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0b630e0b536ef0e3c8b42c685c1bc93bd19e98c0f1543db52911f8ede42cf84"}, + {file = "tokenizers-0.20.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a02d160d2b19bcbfdf28bd9a4bf11be4cb97d0499c000d95d4c4b1a4312740b6"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e3d80d89b068bc30034034b5319218c7c0a91b00af19679833f55f3becb6945"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:174a54910bed1b089226512b4458ea60d6d6fd93060254734d3bc3540953c51c"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:098b8a632b8656aa5802c46689462c5c48f02510f24029d71c208ec2c822e771"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78c8c143e3ae41e718588281eb3e212c2b31623c9d6d40410ec464d7d6221fb5"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b26b0aadb18cd8701077362ba359a06683662d5cafe3e8e8aba10eb05c037f1"}, + {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07d7851a72717321022f3774e84aa9d595a041d643fafa2e87fbc9b18711dac0"}, + {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:bd44e48a430ada902c6266a8245f5036c4fe744fcb51f699999fbe82aa438797"}, + {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4c186bb006ccbe1f5cc4e0380d1ce7806f5955c244074fd96abc55e27b77f01"}, + {file = "tokenizers-0.20.3-cp313-none-win32.whl", hash = "sha256:6e19e0f1d854d6ab7ea0c743d06e764d1d9a546932be0a67f33087645f00fe13"}, + {file = "tokenizers-0.20.3-cp313-none-win_amd64.whl", hash = "sha256:d50ede425c7e60966a9680d41b58b3a0950afa1bb570488e2972fa61662c4273"}, + {file = "tokenizers-0.20.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:9adda1ff5fb9dcdf899ceca672a4e2ce9e797adb512a6467305ca3d8bfcfbdd0"}, + {file = "tokenizers-0.20.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:6dde2cae6004ba7a3badff4a11911cae03ebf23e97eebfc0e71fef2530e5074f"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4a7fd678b35614fca708579eb95b7587a5e8a6d328171bd2488fd9f27d82be4"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b80e3c7283a01a356bd2210f53d1a4a5d32b269c2024389ed0173137708d50e"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8cc0e8176b762973758a77f0d9c4467d310e33165fb74173418ca3734944da4"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5634b2e2f5f3d2b4439d2d74066e22eb4b1f04f3fea05cb2a3c12d89b5a3bcd"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4ba635165bc1ea46f2da8e5d80b5f70f6ec42161e38d96dbef33bb39df73964"}, + {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e4c7c64172e7789bd8b07aa3087ea87c4c4de7e90937a2aa036b5d92332536"}, + {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1f74909ef7675c26d4095a817ec3393d67f3158ca4836c233212e5613ef640c4"}, + {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0e9b81321a1e05b16487d312b4264984513f8b4a7556229cafac6e88c2036b09"}, + {file = "tokenizers-0.20.3-cp37-none-win32.whl", hash = "sha256:ab48184cd58b4a03022a2ec75b54c9f600ffea9a733612c02325ed636f353729"}, + {file = "tokenizers-0.20.3-cp37-none-win_amd64.whl", hash = "sha256:60ac483cebee1c12c71878523e768df02fa17e4c54412966cb3ac862c91b36c1"}, + {file = "tokenizers-0.20.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3229ef103c89583d10b9378afa5d601b91e6337530a0988e17ca8d635329a996"}, + {file = "tokenizers-0.20.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6ac52cc24bad3de865c7e65b1c4e7b70d00938a8ae09a92a453b8f676e714ad5"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04627b7b502fa6a2a005e1bd446fa4247d89abcb1afaa1b81eb90e21aba9a60f"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c27ceb887f0e81a3c377eb4605dca7a95a81262761c0fba308d627b2abb98f2b"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65ab780194da4e1fcf5670523a2f377c4838ebf5249efe41fa1eddd2a84fb49d"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98d343134f47159e81f7f242264b0eb222e6b802f37173c8d7d7b64d5c9d1388"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2475bb004ab2009d29aff13b5047bfdb3d4b474f0aa9d4faa13a7f34dbbbb43"}, + {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b6583a65c01db1197c1eb36857ceba8ec329d53afadd268b42a6b04f4965724"}, + {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d00ba208358c037eeab7bfc00a905adc67b2d31b68ab40ed09d75881e114ea"}, + {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0fc7a39e5bedc817bda395a798dfe2d9c5f7c71153c90d381b5135a0328d9520"}, + {file = "tokenizers-0.20.3-cp38-none-win32.whl", hash = "sha256:84d40ee0f8550d64d3ea92dd7d24a8557a9172165bdb986c9fb2503b4fe4e3b6"}, + {file = "tokenizers-0.20.3-cp38-none-win_amd64.whl", hash = "sha256:205a45246ed7f1718cf3785cff88450ba603352412aaf220ace026384aa3f1c0"}, + {file = "tokenizers-0.20.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:93e37f0269a11dc3b1a953f1fca9707f0929ebf8b4063c591c71a0664219988e"}, + {file = "tokenizers-0.20.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f4cb0c614b0135e781de96c2af87e73da0389ac1458e2a97562ed26e29490d8d"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7eb2fb1c432f5746b22f8a7f09fc18c4156cb0031c77f53cb19379d82d43297a"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfa8d029bb156181b006643309d6b673615a24e4ed24cf03aa191d599b996f51"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f90549622de3bf476ad9f1dd6f3f952ec3ed6ab8615ae88ef060d0c5bfad55d"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1d469c74eebf5c43fd61cd9b030e271d17198edd7bd45392e03a3c091d7d6d4"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bee8f53b2594749f4460d53253bae55d718f04e9b633efa0f5df8938bd98e4f0"}, + {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:938441babf3e5720e4459e306ef2809fb267680df9d1ff2873458b22aef60248"}, + {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7310ab23d7b0caebecc0e8be11a1146f320f5f07284000f6ea54793e83de1b75"}, + {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:16121eb030a2b13094cfec936b0c12e8b4063c5f839591ea7d0212336d8f9921"}, + {file = "tokenizers-0.20.3-cp39-none-win32.whl", hash = "sha256:401cc21ef642ee235985d747f65e18f639464d377c70836c9003df208d582064"}, + {file = "tokenizers-0.20.3-cp39-none-win_amd64.whl", hash = "sha256:7498f3ea7746133335a6adb67a77cf77227a8b82c8483f644a2e5f86fea42b8d"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e919f2e3e68bb51dc31de4fcbbeff3bdf9c1cad489044c75e2b982a91059bd3c"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b8e9608f2773996cc272156e305bd79066163a66b0390fe21750aff62df1ac07"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39270a7050deaf50f7caff4c532c01b3c48f6608d42b3eacdebdc6795478c8df"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e005466632b1c5d2d2120f6de8aa768cc9d36cd1ab7d51d0c27a114c91a1e6ee"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a07962340b36189b6c8feda552ea1bfeee6cf067ff922a1d7760662c2ee229e5"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:55046ad3dd5f2b3c67501fcc8c9cbe3e901d8355f08a3b745e9b57894855f85b"}, + {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:efcf0eb939988b627558aaf2b9dc3e56d759cad2e0cfa04fcab378e4b48fc4fd"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f3558a7ae6a6d38a77dfce12172a1e2e1bf3e8871e744a1861cd7591ea9ebe24"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d53029fe44bc70c3ff14ef512460a0cf583495a0f8e2f4b70e26eb9438e38a9"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a2a56397b2bec5a629b516b23f0f8a3e4f978c7488d4a299980f8375954b85"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e5bfaae740ef9ece000f8a07e78ac0e2b085c5ce9648f8593ddf0243c9f76d"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fbaf3ea28fedfb2283da60e710aff25492e795a7397cad8a50f1e079b65a5a70"}, + {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c47c037116310dc976eb96b008e41b9cfaba002ed8005848d4d632ee0b7ba9ae"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c31751f0721f58f5e19bb27c1acc259aeff860d8629c4e1a900b26a1979ada8e"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:c697cbd3be7a79ea250ea5f380d6f12e534c543cfb137d5c734966b3ee4f34cc"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b48971b88ef9130bf35b41b35fd857c3c4dae4a9cd7990ebc7fc03e59cc92438"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e615de179bbe060ab33773f0d98a8a8572b5883dd7dac66c1de8c056c7e748c"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da1ec842035ed9999c62e45fbe0ff14b7e8a7e02bb97688cc6313cf65e5cd755"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6ee4954c1dd23aadc27958dad759006e71659d497dcb0ef0c7c87ea992c16ebd"}, + {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3eda46ca402751ec82553a321bf35a617b76bbed7586e768c02ccacbdda94d6d"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:de082392a85eb0055cc055c535bff2f0cc15d7a000bdc36fbf601a0f3cf8507a"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3db46cc0647bfd88263afdb739b92017a02a87ee30945cb3e86c7e25c7c9917"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a292392f24ab9abac5cfa8197e5a6208f2e43723420217e1ceba0b4ec77816ac"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dcd91f4e60f62b20d83a87a84fe062035a1e3ff49a8c2bbdeb2d441c8e311f4"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:900991a2b8ee35961b1095db7e265342e0e42a84c1a594823d5ee9f8fb791958"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5a8d8261ca2133d4f98aa9627c748189502b3787537ba3d7e2beb4f7cfc5d627"}, + {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c4fd4d71e6deb6ddf99d8d0eab87d1d16f635898906e631914a9bae8ae9f2cfb"}, + {file = "tokenizers-0.20.3.tar.gz", hash = "sha256:2278b34c5d0dd78e087e1ca7f9b1dcbf129d80211afa645f214bd6e051037539"}, ] [package.dependencies] @@ -2461,33 +2489,34 @@ url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_am [[package]] name = "tqdm" -version = "4.66.5" +version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] [[package]] name = "transformers" -version = "4.44.2" +version = "4.46.3" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.44.2-py3-none-any.whl", hash = "sha256:1c02c65e7bfa5e52a634aff3da52138b583fc6f263c1f28d547dc144ba3d412d"}, - {file = "transformers-4.44.2.tar.gz", hash = "sha256:36aa17cc92ee154058e426d951684a2dab48751b35b49437896f898931270826"}, + {file = "transformers-4.46.3-py3-none-any.whl", hash = "sha256:a12ef6f52841fd190a3e5602145b542d03507222f2c64ebb7ee92e8788093aef"}, + {file = "transformers-4.46.3.tar.gz", hash = "sha256:8ee4b3ae943fe33e82afff8e837f4b052058b07ca9be3cb5b729ed31295f72cc"}, ] [package.dependencies] @@ -2499,21 +2528,21 @@ pyyaml = ">=5.1" regex = "!=2019.12.17" requests = "*" safetensors = ">=0.4.1" -tokenizers = ">=0.19,<0.20" +tokenizers = ">=0.20,<0.21" tqdm = ">=4.27" [package.extras] -accelerate = ["accelerate (>=0.21.0)"] -agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] -all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision"] +accelerate = ["accelerate (>=0.26.0)"] +agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision"] audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] -benchmark = ["optimum-benchmark (>=0.2.0)"] +benchmark = ["optimum-benchmark (>=0.3.0)"] codecarbon = ["codecarbon (==1.2.0)"] -deepspeed = ["accelerate (>=0.21.0)", "deepspeed (>=0.9.3)"] -deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.21.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] -dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.19,<0.20)", "urllib3 (<2.0.0)"] -dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.21.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.19,<0.20)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +deepspeed = ["accelerate (>=0.26.0)", "deepspeed (>=0.9.3)"] +deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.26.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk (<=3.8.1)", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.20,<0.21)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "libcst", "librosa", "nltk (<=3.8.1)", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)", "scipy (<1.13.0)"] flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] ftfy = ["ftfy"] @@ -2524,7 +2553,7 @@ natten = ["natten (>=0.14.6,<0.15.0)"] onnx = ["onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "tf2onnx"] onnxruntime = ["onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)"] optuna = ["optuna"] -quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "ruff (==0.5.1)", "urllib3 (<2.0.0)"] +quality = ["GitPython (<3.1.19)", "datasets (!=2.5.0)", "isort (>=5.5.4)", "libcst", "rich", "ruff (==0.5.1)", "urllib3 (<2.0.0)"] ray = ["ray[tune] (>=2.7.0)"] retrieval = ["datasets (!=2.5.0)", "faiss-cpu"] ruff = ["ruff (==0.5.1)"] @@ -2534,28 +2563,29 @@ serving = ["fastapi", "pydantic", "starlette", "uvicorn"] sigopt = ["sigopt"] sklearn = ["scikit-learn"] speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] -testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] +testing = ["GitPython (<3.1.19)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk (<=3.8.1)", "parameterized", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] tf = ["keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx"] tf-cpu = ["keras (>2.9,<2.16)", "keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow-cpu (>2.9,<2.16)", "tensorflow-probability (<0.24)", "tensorflow-text (<2.16)", "tf2onnx"] tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] +tiktoken = ["blobfile", "tiktoken"] timm = ["timm (<=0.9.16)"] -tokenizers = ["tokenizers (>=0.19,<0.20)"] -torch = ["accelerate (>=0.21.0)", "torch"] +tokenizers = ["tokenizers (>=0.20,<0.21)"] +torch = ["accelerate (>=0.26.0)", "torch"] torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] -torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.19,<0.20)", "torch", "tqdm (>=4.27)"] -video = ["av (==9.2.0)", "decord (==0.6.0)"] +torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.20,<0.21)", "torch", "tqdm (>=4.27)"] +video = ["av (==9.2.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] [[package]] name = "types-requests" -version = "2.32.0.20240712" +version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, - {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, ] [package.dependencies] @@ -2574,24 +2604,24 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -2618,86 +2648,7 @@ h11 = ">=0.8" [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "ca184fab8b4e9306d1960553353c1c2fb44940ea674d652b64731f4c155a5c8c" +content-hash = "1de47add102985fa6559ff58110aa51469e8410588b0a5148a1abd9e48a7cecf" diff --git a/modules/programming/module_programming_themisml/pyproject.toml b/modules/programming/module_programming_themisml/pyproject.toml index 373956ee6..2195ac1d1 100644 --- a/modules/programming/module_programming_themisml/pyproject.toml +++ b/modules/programming/module_programming_themisml/pyproject.toml @@ -9,7 +9,7 @@ license = "MIT" python = "3.11.*" # if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible. # athena = { path = "../athena", develop = true } -athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"} +athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"} antlr4-python3-runtime = "^4.13.1" code-bert-score = "^0.4.1" torch = [ diff --git a/modules/text/module_text_cofee/poetry.lock b/modules/text/module_text_cofee/poetry.lock index 3e062e2d7..660f4eef4 100644 --- a/modules/text/module_text_cofee/poetry.lock +++ b/modules/text/module_text_cofee/poetry.lock @@ -2,13 +2,13 @@ [[package]] name = "anyio" -version = "4.4.0" +version = "4.6.2.post1" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, - {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, + {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, + {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, ] [package.dependencies] @@ -16,25 +16,21 @@ idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.23)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +trio = ["trio (>=0.26.1)"] [[package]] name = "astroid" -version = "2.15.8" +version = "3.3.5" description = "An abstract syntax tree for Python with inference support." optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "astroid-2.15.8-py3-none-any.whl", hash = "sha256:1aa149fc5c6589e3d0ece885b4491acd80af4f087baafa3fb5203b113e68cd3c"}, - {file = "astroid-2.15.8.tar.gz", hash = "sha256:6c107453dffee9055899705de3c9ead36e74119cee151e5a9aaf7f0b0e020a6a"}, + {file = "astroid-3.3.5-py3-none-any.whl", hash = "sha256:a9d1c946ada25098d790e079ba2a1b112157278f3fb7e718ae6a9252f5835dc8"}, + {file = "astroid-3.3.5.tar.gz", hash = "sha256:5cfc40ae9f68311075d27ef68a4841bdc5cc7f6cf86671b49f00607d30188e2d"}, ] -[package.dependencies] -lazy-object-proxy = ">=1.4.0" -wrapt = {version = ">=1.14,<2", markers = "python_version >= \"3.11\""} - [[package]] name = "athena" version = "1.0.0" @@ -55,8 +51,8 @@ uvicorn = "^0.23.0" [package.source] type = "git" url = "https://github.com/ls1intum/Athena.git" -reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" -resolved_reference = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378" +reference = "bbb2bb0" +resolved_reference = "bbb2bb02480496362647205ab517f202673e9bb2" subdirectory = "athena" [[package]] @@ -72,101 +68,116 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, - {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, - {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, - {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, - {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, - {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, - {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, - {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"}, + {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"}, + {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"}, + {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"}, + {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"}, + {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"}, + {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"}, + {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"}, + {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"}, + {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"}, ] [[package]] @@ -196,13 +207,13 @@ files = [ [[package]] name = "dill" -version = "0.3.8" +version = "0.3.9" description = "serialize all of Python" optional = false python-versions = ">=3.8" files = [ - {file = "dill-0.3.8-py3-none-any.whl", hash = "sha256:c36ca9ffb54365bdd2f8eb3eff7d2a21237f8452b57ace88b1ac615b7e815bd7"}, - {file = "dill-0.3.8.tar.gz", hash = "sha256:3ebe3c479ad625c4553aca177444d89b486b1d84982eeacded644afc0cf797ca"}, + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, ] [package.extras] @@ -241,19 +252,19 @@ all = ["email-validator (>=2.0.0)", "httpx (>=0.23.0)", "itsdangerous (>=1.1.0)" [[package]] name = "flake8" -version = "5.0.4" +version = "7.1.1" description = "the modular source code checker: pep8 pyflakes and co" optional = false -python-versions = ">=3.6.1" +python-versions = ">=3.8.1" files = [ - {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, - {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, + {file = "flake8-7.1.1-py2.py3-none-any.whl", hash = "sha256:597477df7860daa5aa0fdd84bf5208a043ab96b8e96ab708770ae0364dd03213"}, + {file = "flake8-7.1.1.tar.gz", hash = "sha256:049d058491e228e03e67b390f311bbf88fce2dbaa8fa673e7aea87b7198b8d38"}, ] [package.dependencies] mccabe = ">=0.7.0,<0.8.0" -pycodestyle = ">=2.9.0,<2.10.0" -pyflakes = ">=2.5.0,<2.6.0" +pycodestyle = ">=2.12.0,<2.13.0" +pyflakes = ">=3.2.0,<3.3.0" [[package]] name = "flake8-polyfill" @@ -303,69 +314,84 @@ test = ["coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", [[package]] name = "greenlet" -version = "3.0.3" +version = "3.1.1" description = "Lightweight in-process concurrent programming" optional = false python-versions = ">=3.7" files = [ - {file = "greenlet-3.0.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:9da2bd29ed9e4f15955dd1595ad7bc9320308a3b766ef7f837e23ad4b4aac31a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d353cadd6083fdb056bb46ed07e4340b0869c305c8ca54ef9da3421acbdf6881"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dca1e2f3ca00b84a396bc1bce13dd21f680f035314d2379c4160c98153b2059b"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ed7fb269f15dc662787f4119ec300ad0702fa1b19d2135a37c2c4de6fadfd4a"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd4f49ae60e10adbc94b45c0b5e6a179acc1736cf7a90160b404076ee283cf83"}, - {file = "greenlet-3.0.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:73a411ef564e0e097dbe7e866bb2dda0f027e072b04da387282b02c308807405"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7f362975f2d179f9e26928c5b517524e89dd48530a0202570d55ad6ca5d8a56f"}, - {file = "greenlet-3.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:649dde7de1a5eceb258f9cb00bdf50e978c9db1b996964cd80703614c86495eb"}, - {file = "greenlet-3.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:68834da854554926fbedd38c76e60c4a2e3198c6fbed520b106a8986445caaf9"}, - {file = "greenlet-3.0.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:b1b5667cced97081bf57b8fa1d6bfca67814b0afd38208d52538316e9422fc61"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52f59dd9c96ad2fc0d5724107444f76eb20aaccb675bf825df6435acb7703559"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:afaff6cf5200befd5cec055b07d1c0a5a06c040fe5ad148abcd11ba6ab9b114e"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe754d231288e1e64323cfad462fcee8f0288654c10bdf4f603a39ed923bef33"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2797aa5aedac23af156bbb5a6aa2cd3427ada2972c828244eb7d1b9255846379"}, - {file = "greenlet-3.0.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b7f009caad047246ed379e1c4dbcb8b020f0a390667ea74d2387be2998f58a22"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c5e1536de2aad7bf62e27baf79225d0d64360d4168cf2e6becb91baf1ed074f3"}, - {file = "greenlet-3.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:894393ce10ceac937e56ec00bb71c4c2f8209ad516e96033e4b3b1de270e200d"}, - {file = "greenlet-3.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:1ea188d4f49089fc6fb283845ab18a2518d279c7cd9da1065d7a84e991748728"}, - {file = "greenlet-3.0.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:70fb482fdf2c707765ab5f0b6655e9cfcf3780d8d87355a063547b41177599be"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d1ac74f5c0c0524e4a24335350edad7e5f03b9532da7ea4d3c54d527784f2e"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b7db1ebff4ba09aaaeae6aa491daeb226c8150fc20e836ad00041bcb11230"}, - {file = "greenlet-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fcd2469d6a2cf298f198f0487e0a5b1a47a42ca0fa4dfd1b6862c999f018ebbf"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1f672519db1796ca0d8753f9e78ec02355e862d0998193038c7073045899f305"}, - {file = "greenlet-3.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2516a9957eed41dd8f1ec0c604f1cdc86758b587d964668b5b196a9db5bfcde6"}, - {file = "greenlet-3.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:bba5387a6975598857d86de9eac14210a49d554a77eb8261cc68b7d082f78ce2"}, - {file = "greenlet-3.0.3-cp37-cp37m-macosx_11_0_universal2.whl", hash = "sha256:5b51e85cb5ceda94e79d019ed36b35386e8c37d22f07d6a751cb659b180d5274"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:daf3cb43b7cf2ba96d614252ce1684c1bccee6b2183a01328c98d36fcd7d5cb0"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99bf650dc5d69546e076f413a87481ee1d2d09aaaaaca058c9251b6d8c14783f"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dd6e660effd852586b6a8478a1d244b8dc90ab5b1321751d2ea15deb49ed414"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3391d1e16e2a5a1507d83e4a8b100f4ee626e8eca43cf2cadb543de69827c4c"}, - {file = "greenlet-3.0.3-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e1f145462f1fa6e4a4ae3c0f782e580ce44d57c8f2c7aae1b6fa88c0b2efdb41"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1a7191e42732df52cb5f39d3527217e7ab73cae2cb3694d241e18f53d84ea9a7"}, - {file = "greenlet-3.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0448abc479fab28b00cb472d278828b3ccca164531daab4e970a0458786055d6"}, - {file = "greenlet-3.0.3-cp37-cp37m-win32.whl", hash = "sha256:b542be2440edc2d48547b5923c408cbe0fc94afb9f18741faa6ae970dbcb9b6d"}, - {file = "greenlet-3.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:01bc7ea167cf943b4c802068e178bbf70ae2e8c080467070d01bfa02f337ee67"}, - {file = "greenlet-3.0.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:1996cb9306c8595335bb157d133daf5cf9f693ef413e7673cb07e3e5871379ca"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc0f794e6ad661e321caa8d2f0a55ce01213c74722587256fb6566049a8b04"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9db1c18f0eaad2f804728c67d6c610778456e3e1cc4ab4bbd5eeb8e6053c6fc"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7170375bcc99f1a2fbd9c306f5be8764eaf3ac6b5cb968862cad4c7057756506"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b66c9c1e7ccabad3a7d037b2bcb740122a7b17a53734b7d72a344ce39882a1b"}, - {file = "greenlet-3.0.3-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:098d86f528c855ead3479afe84b49242e174ed262456c342d70fc7f972bc13c4"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:81bb9c6d52e8321f09c3d165b2a78c680506d9af285bfccbad9fb7ad5a5da3e5"}, - {file = "greenlet-3.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd096eb7ffef17c456cfa587523c5f92321ae02427ff955bebe9e3c63bc9f0da"}, - {file = "greenlet-3.0.3-cp38-cp38-win32.whl", hash = "sha256:d46677c85c5ba00a9cb6f7a00b2bfa6f812192d2c9f7d9c4f6a55b60216712f3"}, - {file = "greenlet-3.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:419b386f84949bf0e7c73e6032e3457b82a787c1ab4a0e43732898a761cc9dbf"}, - {file = "greenlet-3.0.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:da70d4d51c8b306bb7a031d5cff6cc25ad253affe89b70352af5f1cb68e74b53"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:086152f8fbc5955df88382e8a75984e2bb1c892ad2e3c80a2508954e52295257"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d73a9fe764d77f87f8ec26a0c85144d6a951a6c438dfe50487df5595c6373eac"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7dcbe92cc99f08c8dd11f930de4d99ef756c3591a5377d1d9cd7dd5e896da71"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1551a8195c0d4a68fac7a4325efac0d541b48def35feb49d803674ac32582f61"}, - {file = "greenlet-3.0.3-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:64d7675ad83578e3fc149b617a444fab8efdafc9385471f868eb5ff83e446b8b"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b37eef18ea55f2ffd8f00ff8fe7c8d3818abd3e25fb73fae2ca3b672e333a7a6"}, - {file = "greenlet-3.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:77457465d89b8263bca14759d7c1684df840b6811b2499838cc5b040a8b5b113"}, - {file = "greenlet-3.0.3-cp39-cp39-win32.whl", hash = "sha256:57e8974f23e47dac22b83436bdcf23080ade568ce77df33159e019d161ce1d1e"}, - {file = "greenlet-3.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:c5ee858cfe08f34712f548c3c363e807e7186f03ad7a5039ebadb29e8c6be067"}, - {file = "greenlet-3.0.3.tar.gz", hash = "sha256:43374442353259554ce33599da8b692d5aa96f8976d567d4badf263371fbe491"}, + {file = "greenlet-3.1.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:0bbae94a29c9e5c7e4a2b7f0aae5c17e8e90acbfd3bf6270eeba60c39fce3563"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fde093fb93f35ca72a556cf72c92ea3ebfda3d79fc35bb19fbe685853869a83"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36b89d13c49216cadb828db8dfa6ce86bbbc476a82d3a6c397f0efae0525bdd0"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b6150a85e1b33b40b1464a3f9988dcc5251d6ed06842abff82e42632fac120"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:93147c513fac16385d1036b7e5b102c7fbbdb163d556b791f0f11eada7ba65dc"}, + {file = "greenlet-3.1.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da7a9bff22ce038e19bf62c4dd1ec8391062878710ded0a845bcf47cc0200617"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b2795058c23988728eec1f36a4e5e4ebad22f8320c85f3587b539b9ac84128d7"}, + {file = "greenlet-3.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed10eac5830befbdd0c32f83e8aa6288361597550ba669b04c48f0f9a2c843c6"}, + {file = "greenlet-3.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:77c386de38a60d1dfb8e55b8c1101d68c79dfdd25c7095d51fec2dd800892b80"}, + {file = "greenlet-3.1.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e4d333e558953648ca09d64f13e6d8f0523fa705f51cae3f03b5983489958c70"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fc016b73c94e98e29af67ab7b9a879c307c6731a2c9da0db5a7d9b7edd1159"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5e975ca70269d66d17dd995dafc06f1b06e8cb1ec1e9ed54c1d1e4a7c4cf26e"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b2813dc3de8c1ee3f924e4d4227999285fd335d1bcc0d2be6dc3f1f6a318ec1"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e347b3bfcf985a05e8c0b7d462ba6f15b1ee1c909e2dcad795e49e91b152c383"}, + {file = "greenlet-3.1.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9e8f8c9cb53cdac7ba9793c276acd90168f416b9ce36799b9b885790f8ad6c0a"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:62ee94988d6b4722ce0028644418d93a52429e977d742ca2ccbe1c4f4a792511"}, + {file = "greenlet-3.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1776fd7f989fc6b8d8c8cb8da1f6b82c5814957264d1f6cf818d475ec2bf6395"}, + {file = "greenlet-3.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:48ca08c771c268a768087b408658e216133aecd835c0ded47ce955381105ba39"}, + {file = "greenlet-3.1.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:4afe7ea89de619adc868e087b4d2359282058479d7cfb94970adf4b55284574d"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f406b22b7c9a9b4f8aa9d2ab13d6ae0ac3e85c9a809bd590ad53fed2bf70dc79"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c3a701fe5a9695b238503ce5bbe8218e03c3bcccf7e204e455e7462d770268aa"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2846930c65b47d70b9d178e89c7e1a69c95c1f68ea5aa0a58646b7a96df12441"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99cfaa2110534e2cf3ba31a7abcac9d328d1d9f1b95beede58294a60348fba36"}, + {file = "greenlet-3.1.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1443279c19fca463fc33e65ef2a935a5b09bb90f978beab37729e1c3c6c25fe9"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b7cede291382a78f7bb5f04a529cb18e068dd29e0fb27376074b6d0317bf4dd0"}, + {file = "greenlet-3.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:23f20bb60ae298d7d8656c6ec6db134bca379ecefadb0b19ce6f19d1f232a942"}, + {file = "greenlet-3.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:7124e16b4c55d417577c2077be379514321916d5790fa287c9ed6f23bd2ffd01"}, + {file = "greenlet-3.1.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:05175c27cb459dcfc05d026c4232f9de8913ed006d42713cb8a5137bd49375f1"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:935e943ec47c4afab8965954bf49bfa639c05d4ccf9ef6e924188f762145c0ff"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:667a9706c970cb552ede35aee17339a18e8f2a87a51fba2ed39ceeeb1004798a"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b8a678974d1f3aa55f6cc34dc480169d58f2e6d8958895d68845fa4ab566509e"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efc0f674aa41b92da8c49e0346318c6075d734994c3c4e4430b1c3f853e498e4"}, + {file = "greenlet-3.1.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0153404a4bb921f0ff1abeb5ce8a5131da56b953eda6e14b88dc6bbc04d2049e"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:275f72decf9932639c1c6dd1013a1bc266438eb32710016a1c742df5da6e60a1"}, + {file = "greenlet-3.1.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:c4aab7f6381f38a4b42f269057aee279ab0fc7bf2e929e3d4abfae97b682a12c"}, + {file = "greenlet-3.1.1-cp313-cp313-win_amd64.whl", hash = "sha256:b42703b1cf69f2aa1df7d1030b9d77d3e584a70755674d60e710f0af570f3761"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1695e76146579f8c06c1509c7ce4dfe0706f49c6831a817ac04eebb2fd02011"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7876452af029456b3f3549b696bb36a06db7c90747740c5302f74a9e9fa14b13"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ead44c85f8ab905852d3de8d86f6f8baf77109f9da589cb4fa142bd3b57b475"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8320f64b777d00dd7ccdade271eaf0cad6636343293a25074cc5566160e4de7b"}, + {file = "greenlet-3.1.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6510bf84a6b643dabba74d3049ead221257603a253d0a9873f55f6a59a65f822"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:04b013dc07c96f83134b1e99888e7a79979f1a247e2a9f59697fa14b5862ed01"}, + {file = "greenlet-3.1.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:411f015496fec93c1c8cd4e5238da364e1da7a124bcb293f085bf2860c32c6f6"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47da355d8687fd65240c364c90a31569a133b7b60de111c255ef5b606f2ae291"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98884ecf2ffb7d7fe6bd517e8eb99d31ff7855a840fa6d0d63cd07c037f6a981"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1d4aeb8891338e60d1ab6127af1fe45def5259def8094b9c7e34690c8858803"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db32b5348615a04b82240cc67983cb315309e88d444a288934ee6ceaebcad6cc"}, + {file = "greenlet-3.1.1-cp37-cp37m-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:dcc62f31eae24de7f8dce72134c8651c58000d3b1868e01392baea7c32c247de"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1d3755bcb2e02de341c55b4fca7a745a24a9e7212ac953f6b3a48d117d7257aa"}, + {file = "greenlet-3.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b8da394b34370874b4572676f36acabac172602abf054cbc4ac910219f3340af"}, + {file = "greenlet-3.1.1-cp37-cp37m-win32.whl", hash = "sha256:a0dfc6c143b519113354e780a50381508139b07d2177cb6ad6a08278ec655798"}, + {file = "greenlet-3.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54558ea205654b50c438029505def3834e80f0869a70fb15b871c29b4575ddef"}, + {file = "greenlet-3.1.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:346bed03fe47414091be4ad44786d1bd8bef0c3fcad6ed3dee074a032ab408a9"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dfc59d69fc48664bc693842bd57acfdd490acafda1ab52c7836e3fc75c90a111"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21e10da6ec19b457b82636209cbe2331ff4306b54d06fa04b7c138ba18c8a81"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37b9de5a96111fc15418819ab4c4432e4f3c2ede61e660b1e33971eba26ef9ba"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ef9ea3f137e5711f0dbe5f9263e8c009b7069d8a1acea822bd5e9dae0ae49c8"}, + {file = "greenlet-3.1.1-cp38-cp38-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:85f3ff71e2e60bd4b4932a043fbbe0f499e263c628390b285cb599154a3b03b1"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:95ffcf719966dd7c453f908e208e14cde192e09fde6c7186c8f1896ef778d8cd"}, + {file = "greenlet-3.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:03a088b9de532cbfe2ba2034b2b85e82df37874681e8c470d6fb2f8c04d7e4b7"}, + {file = "greenlet-3.1.1-cp38-cp38-win32.whl", hash = "sha256:8b8b36671f10ba80e159378df9c4f15c14098c4fd73a36b9ad715f057272fbef"}, + {file = "greenlet-3.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:7017b2be767b9d43cc31416aba48aab0d2309ee31b4dbf10a1d38fb7972bdf9d"}, + {file = "greenlet-3.1.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:396979749bd95f018296af156201d6211240e7a23090f50a8d5d18c370084dc3"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca9d0ff5ad43e785350894d97e13633a66e2b50000e8a183a50a88d834752d42"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f6ff3b14f2df4c41660a7dec01045a045653998784bf8cfcb5a525bdffffbc8f"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94ebba31df2aa506d7b14866fed00ac141a867e63143fe5bca82a8e503b36437"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73aaad12ac0ff500f62cebed98d8789198ea0e6f233421059fa68a5aa7220145"}, + {file = "greenlet-3.1.1-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:63e4844797b975b9af3a3fb8f7866ff08775f5426925e1e0bbcfe7932059a12c"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7939aa3ca7d2a1593596e7ac6d59391ff30281ef280d8632fa03d81f7c5f955e"}, + {file = "greenlet-3.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d0028e725ee18175c6e422797c407874da24381ce0690d6b9396c204c7f7276e"}, + {file = "greenlet-3.1.1-cp39-cp39-win32.whl", hash = "sha256:5e06afd14cbaf9e00899fae69b24a32f2196c19de08fcb9f4779dd4f004e5e7c"}, + {file = "greenlet-3.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:3319aa75e0e0639bc15ff54ca327e8dc7a6fe404003496e3c6925cd3142e0e22"}, + {file = "greenlet-3.1.1.tar.gz", hash = "sha256:4ce3ac6cdb6adf7946475d7ef31777c26d94bccc377e070a7986bd2d5c515467"}, ] [package.extras] @@ -429,15 +455,18 @@ socks = ["socksio (==1.*)"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "isort" version = "5.13.2" @@ -452,52 +481,6 @@ files = [ [package.extras] colors = ["colorama (>=0.4.6)"] -[[package]] -name = "lazy-object-proxy" -version = "1.10.0" -description = "A fast and thorough lazy object proxy." -optional = false -python-versions = ">=3.8" -files = [ - {file = "lazy-object-proxy-1.10.0.tar.gz", hash = "sha256:78247b6d45f43a52ef35c25b5581459e85117225408a4128a3daf8bf9648ac69"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:855e068b0358ab916454464a884779c7ffa312b8925c6f7401e952dcf3b89977"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab7004cf2e59f7c2e4345604a3e6ea0d92ac44e1c2375527d56492014e690c3"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dc0d2fc424e54c70c4bc06787e4072c4f3b1aa2f897dfdc34ce1013cf3ceef05"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e2adb09778797da09d2b5ebdbceebf7dd32e2c96f79da9052b2e87b6ea495895"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b1f711e2c6dcd4edd372cf5dec5c5a30d23bba06ee012093267b3376c079ec83"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win32.whl", hash = "sha256:76a095cfe6045c7d0ca77db9934e8f7b71b14645f0094ffcd842349ada5c5fb9"}, - {file = "lazy_object_proxy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:b4f87d4ed9064b2628da63830986c3d2dca7501e6018347798313fcf028e2fd4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fec03caabbc6b59ea4a638bee5fce7117be8e99a4103d9d5ad77f15d6f81020c"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02c83f957782cbbe8136bee26416686a6ae998c7b6191711a04da776dc9e47d4"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009e6bb1f1935a62889ddc8541514b6a9e1fcf302667dcb049a0be5c8f613e56"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:75fc59fc450050b1b3c203c35020bc41bd2695ed692a392924c6ce180c6f1dc9"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:782e2c9b2aab1708ffb07d4bf377d12901d7a1d99e5e410d648d892f8967ab1f"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win32.whl", hash = "sha256:edb45bb8278574710e68a6b021599a10ce730d156e5b254941754a9cc0b17d03"}, - {file = "lazy_object_proxy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:e271058822765ad5e3bca7f05f2ace0de58a3f4e62045a8c90a0dfd2f8ad8cc6"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e98c8af98d5707dcdecc9ab0863c0ea6e88545d42ca7c3feffb6b4d1e370c7ba"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:952c81d415b9b80ea261d2372d2a4a2332a3890c2b83e0535f263ddfe43f0d43"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80b39d3a151309efc8cc48675918891b865bdf742a8616a337cb0090791a0de9"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e221060b701e2aa2ea991542900dd13907a5c90fa80e199dbf5a03359019e7a3"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:92f09ff65ecff3108e56526f9e2481b8116c0b9e1425325e13245abfd79bdb1b"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win32.whl", hash = "sha256:3ad54b9ddbe20ae9f7c1b29e52f123120772b06dbb18ec6be9101369d63a4074"}, - {file = "lazy_object_proxy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:127a789c75151db6af398b8972178afe6bda7d6f68730c057fbbc2e96b08d282"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9e4ed0518a14dd26092614412936920ad081a424bdcb54cc13349a8e2c6d106a"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ad9e6ed739285919aa9661a5bbed0aaf410aa60231373c5579c6b4801bd883c"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc0a92c02fa1ca1e84fc60fa258458e5bf89d90a1ddaeb8ed9cc3147f417255"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0aefc7591920bbd360d57ea03c995cebc204b424524a5bd78406f6e1b8b2a5d8"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5faf03a7d8942bb4476e3b62fd0f4cf94eaf4618e304a19865abf89a35c0bbee"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win32.whl", hash = "sha256:e333e2324307a7b5d86adfa835bb500ee70bfcd1447384a822e96495796b0ca4"}, - {file = "lazy_object_proxy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:cb73507defd385b7705c599a94474b1d5222a508e502553ef94114a143ec6696"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:366c32fe5355ef5fc8a232c5436f4cc66e9d3e8967c01fb2e6302fd6627e3d94"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2297f08f08a2bb0d32a4265e98a006643cd7233fb7983032bd61ac7a02956b3b"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18dd842b49456aaa9a7cf535b04ca4571a302ff72ed8740d06b5adcd41fe0757"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:217138197c170a2a74ca0e05bddcd5f1796c735c37d0eee33e43259b192aa424"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9a3a87cf1e133e5b1994144c12ca4aa3d9698517fe1e2ca82977781b16955658"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win32.whl", hash = "sha256:30b339b2a743c5288405aa79a69e706a06e02958eab31859f7f3c04980853b70"}, - {file = "lazy_object_proxy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:a899b10e17743683b293a729d3a11f2f399e8a90c73b089e29f5d0fe3509f0dd"}, - {file = "lazy_object_proxy-1.10.0-pp310.pp311.pp312.pp38.pp39-none-any.whl", hash = "sha256:80fa48bd89c8f2f456fc0765c11c23bf5af827febacd2f523ca5bc1893fcc09d"}, -] - [[package]] name = "mccabe" version = "0.7.0" @@ -511,38 +494,43 @@ files = [ [[package]] name = "mypy" -version = "1.11.2" +version = "1.13.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d42a6dd818ffce7be66cce644f1dff482f1d97c53ca70908dff0b9ddc120b77a"}, - {file = "mypy-1.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:801780c56d1cdb896eacd5619a83e427ce436d86a3bdf9112527f24a66618fef"}, - {file = "mypy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41ea707d036a5307ac674ea172875f40c9d55c5394f888b168033177fce47383"}, - {file = "mypy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6e658bd2d20565ea86da7d91331b0eed6d2eee22dc031579e6297f3e12c758c8"}, - {file = "mypy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:478db5f5036817fe45adb7332d927daa62417159d49783041338921dcf646fc7"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75746e06d5fa1e91bfd5432448d00d34593b52e7e91a187d981d08d1f33d4385"}, - {file = "mypy-1.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a976775ab2256aadc6add633d44f100a2517d2388906ec4f13231fafbb0eccca"}, - {file = "mypy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cd953f221ac1379050a8a646585a29574488974f79d8082cedef62744f0a0104"}, - {file = "mypy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:57555a7715c0a34421013144a33d280e73c08df70f3a18a552938587ce9274f4"}, - {file = "mypy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:36383a4fcbad95f2657642a07ba22ff797de26277158f1cc7bd234821468b1b6"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e8960dbbbf36906c5c0b7f4fbf2f0c7ffb20f4898e6a879fcf56a41a08b0d318"}, - {file = "mypy-1.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:06d26c277962f3fb50e13044674aa10553981ae514288cb7d0a738f495550b36"}, - {file = "mypy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6e7184632d89d677973a14d00ae4d03214c8bc301ceefcdaf5c474866814c987"}, - {file = "mypy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3a66169b92452f72117e2da3a576087025449018afc2d8e9bfe5ffab865709ca"}, - {file = "mypy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:969ea3ef09617aff826885a22ece0ddef69d95852cdad2f60c8bb06bf1f71f70"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:37c7fa6121c1cdfcaac97ce3d3b5588e847aa79b580c1e922bb5d5d2902df19b"}, - {file = "mypy-1.11.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4a8a53bc3ffbd161b5b2a4fff2f0f1e23a33b0168f1c0778ec70e1a3d66deb86"}, - {file = "mypy-1.11.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ff93107f01968ed834f4256bc1fc4475e2fecf6c661260066a985b52741ddce"}, - {file = "mypy-1.11.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:edb91dded4df17eae4537668b23f0ff6baf3707683734b6a818d5b9d0c0c31a1"}, - {file = "mypy-1.11.2-cp38-cp38-win_amd64.whl", hash = "sha256:ee23de8530d99b6db0573c4ef4bd8f39a2a6f9b60655bf7a1357e585a3486f2b"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:801ca29f43d5acce85f8e999b1e431fb479cb02d0e11deb7d2abb56bdaf24fd6"}, - {file = "mypy-1.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:af8d155170fcf87a2afb55b35dc1a0ac21df4431e7d96717621962e4b9192e70"}, - {file = "mypy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f7821776e5c4286b6a13138cc935e2e9b6fde05e081bdebf5cdb2bb97c9df81d"}, - {file = "mypy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:539c570477a96a4e6fb718b8d5c3e0c0eba1f485df13f86d2970c91f0673148d"}, - {file = "mypy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:3f14cd3d386ac4d05c5a39a51b84387403dadbd936e17cb35882134d4f8f0d24"}, - {file = "mypy-1.11.2-py3-none-any.whl", hash = "sha256:b499bc07dbdcd3de92b0a8b29fdf592c111276f6a12fe29c30f6c417dd546d12"}, - {file = "mypy-1.11.2.tar.gz", hash = "sha256:7f9993ad3e0ffdc95c2a14b66dee63729f021968bff8ad911867579c65d13a79"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6607e0f1dd1fb7f0aca14d936d13fd19eba5e17e1cd2a14f808fa5f8f6d8f60a"}, + {file = "mypy-1.13.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8a21be69bd26fa81b1f80a61ee7ab05b076c674d9b18fb56239d72e21d9f4c80"}, + {file = "mypy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b2353a44d2179846a096e25691d54d59904559f4232519d420d64da6828a3a7"}, + {file = "mypy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0730d1c6a2739d4511dc4253f8274cdd140c55c32dfb0a4cf8b7a43f40abfa6f"}, + {file = "mypy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:c5fc54dbb712ff5e5a0fca797e6e0aa25726c7e72c6a5850cfd2adbc1eb0a372"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:581665e6f3a8a9078f28d5502f4c334c0c8d802ef55ea0e7276a6e409bc0d82d"}, + {file = "mypy-1.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3ddb5b9bf82e05cc9a627e84707b528e5c7caaa1c55c69e175abb15a761cec2d"}, + {file = "mypy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:20c7ee0bc0d5a9595c46f38beb04201f2620065a93755704e141fcac9f59db2b"}, + {file = "mypy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3790ded76f0b34bc9c8ba4def8f919dd6a46db0f5a6610fb994fe8efdd447f73"}, + {file = "mypy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:51f869f4b6b538229c1d1bcc1dd7d119817206e2bc54e8e374b3dfa202defcca"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:5c7051a3461ae84dfb5dd15eff5094640c61c5f22257c8b766794e6dd85e72d5"}, + {file = "mypy-1.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39bb21c69a5d6342f4ce526e4584bc5c197fd20a60d14a8624d8743fffb9472e"}, + {file = "mypy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:164f28cb9d6367439031f4c81e84d3ccaa1e19232d9d05d37cb0bd880d3f93c2"}, + {file = "mypy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a4c1bfcdbce96ff5d96fc9b08e3831acb30dc44ab02671eca5953eadad07d6d0"}, + {file = "mypy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0affb3a79a256b4183ba09811e3577c5163ed06685e4d4b46429a271ba174d2"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a7b44178c9760ce1a43f544e595d35ed61ac2c3de306599fa59b38a6048e1aa7"}, + {file = "mypy-1.13.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:5d5092efb8516d08440e36626f0153b5006d4088c1d663d88bf79625af3d1d62"}, + {file = "mypy-1.13.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:de2904956dac40ced10931ac967ae63c5089bd498542194b436eb097a9f77bc8"}, + {file = "mypy-1.13.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:7bfd8836970d33c2105562650656b6846149374dc8ed77d98424b40b09340ba7"}, + {file = "mypy-1.13.0-cp313-cp313-win_amd64.whl", hash = "sha256:9f73dba9ec77acb86457a8fc04b5239822df0c14a082564737833d2963677dbc"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:100fac22ce82925f676a734af0db922ecfea991e1d7ec0ceb1e115ebe501301a"}, + {file = "mypy-1.13.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7bcb0bb7f42a978bb323a7c88f1081d1b5dee77ca86f4100735a6f541299d8fb"}, + {file = "mypy-1.13.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bde31fc887c213e223bbfc34328070996061b0833b0a4cfec53745ed61f3519b"}, + {file = "mypy-1.13.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:07de989f89786f62b937851295ed62e51774722e5444a27cecca993fc3f9cd74"}, + {file = "mypy-1.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:4bde84334fbe19bad704b3f5b78c4abd35ff1026f8ba72b29de70dda0916beb6"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0246bcb1b5de7f08f2826451abd947bf656945209b140d16ed317f65a17dc7dc"}, + {file = "mypy-1.13.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7f5b7deae912cf8b77e990b9280f170381fdfbddf61b4ef80927edd813163732"}, + {file = "mypy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7029881ec6ffb8bc233a4fa364736789582c738217b133f1b55967115288a2bc"}, + {file = "mypy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3e38b980e5681f28f033f3be86b099a247b13c491f14bb8b1e1e134d23bb599d"}, + {file = "mypy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:a6789be98a2017c912ae6ccb77ea553bbaf13d27605d2ca20a76dfbced631b24"}, + {file = "mypy-1.13.0-py3-none-any.whl", hash = "sha256:9c250883f9fd81d212e0952c92dbfcc96fc237f4b7c92f56ac81fd48460b3e5a"}, + {file = "mypy-1.13.0.tar.gz", hash = "sha256:0291a61b6fbf3e6673e3405cfcc0e7650bebc7939659fdca2702958038bd835e"}, ] [package.dependencies] @@ -551,6 +539,7 @@ typing-extensions = ">=4.6.0" [package.extras] dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] install-types = ["pip"] mypyc = ["setuptools (>=50)"] reports = ["lxml"] @@ -568,13 +557,13 @@ files = [ [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] @@ -593,110 +582,105 @@ flake8-polyfill = ">=1.0.2,<2" [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "prospector" -version = "1.10.3" +version = "1.13.3" description = "Prospector is a tool to analyse Python code by aggregating the result of other tools." optional = false -python-versions = ">=3.7.2,<4.0" +python-versions = "<4.0,>=3.9" files = [ - {file = "prospector-1.10.3-py3-none-any.whl", hash = "sha256:8567df2218cdc97d29f297ee3e3b54b96b3a2dab835931955c3a7bbd95aff6f7"}, - {file = "prospector-1.10.3.tar.gz", hash = "sha256:f29ab19fd430869eb34490761af77406d2cfedd9b50292cf4d8db0288c9d764a"}, + {file = "prospector-1.13.3-py3-none-any.whl", hash = "sha256:e7261c222ba54bc8aef8c9e31b2dcf5ed2a656c9b76fc0cceab294cd5ec3db6b"}, + {file = "prospector-1.13.3.tar.gz", hash = "sha256:36ccb13f69aa27c5c4682afd4cc46219b9e0c80723e30dc64ff30c71f7b877a1"}, ] [package.dependencies] dodgy = ">=0.2.1,<0.3.0" -flake8 = "<6.0.0" GitPython = ">=3.1.27,<4.0.0" mccabe = ">=0.7.0,<0.8.0" packaging = "*" pep8-naming = ">=0.3.3,<=0.10.0" pycodestyle = ">=2.9.0" pydocstyle = ">=2.0.0" -pyflakes = ">=2.2.0,<3" -pylint = ">=2.8.3" +pyflakes = ">=2.2.0" +pylint = ">=3.0" pylint-celery = "0.3" -pylint-django = ">=2.5,<2.6" +pylint-django = ">=2.6.1" pylint-flask = "0.6" -pylint-plugin-utils = ">=0.7,<0.8" PyYAML = "*" -requirements-detector = ">=1.2.0" +requirements-detector = ">=1.3.2" setoptconf-tmp = ">=0.3.1,<0.4.0" toml = ">=0.10.2,<0.11.0" [package.extras] with-bandit = ["bandit (>=1.5.1)"] -with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "vulture (>=1.5)"] +with-everything = ["bandit (>=1.5.1)", "mypy (>=0.600)", "pyright (>=1.1.3)", "pyroma (>=2.4)", "ruff", "vulture (>=1.5)"] with-mypy = ["mypy (>=0.600)"] with-pyright = ["pyright (>=1.1.3)"] with-pyroma = ["pyroma (>=2.4)"] +with-ruff = ["ruff"] with-vulture = ["vulture (>=1.5)"] [[package]] name = "protobuf" -version = "4.25.4" +version = "4.25.5" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.4-cp310-abi3-win32.whl", hash = "sha256:db9fd45183e1a67722cafa5c1da3e85c6492a5383f127c86c4c4aa4845867dc4"}, - {file = "protobuf-4.25.4-cp310-abi3-win_amd64.whl", hash = "sha256:ba3d8504116a921af46499471c63a85260c1a5fc23333154a427a310e015d26d"}, - {file = "protobuf-4.25.4-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:eecd41bfc0e4b1bd3fa7909ed93dd14dd5567b98c941d6c1ad08fdcab3d6884b"}, - {file = "protobuf-4.25.4-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:4c8a70fdcb995dcf6c8966cfa3a29101916f7225e9afe3ced4395359955d3835"}, - {file = "protobuf-4.25.4-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:3319e073562e2515c6ddc643eb92ce20809f5d8f10fead3332f71c63be6a7040"}, - {file = "protobuf-4.25.4-cp38-cp38-win32.whl", hash = "sha256:7e372cbbda66a63ebca18f8ffaa6948455dfecc4e9c1029312f6c2edcd86c4e1"}, - {file = "protobuf-4.25.4-cp38-cp38-win_amd64.whl", hash = "sha256:051e97ce9fa6067a4546e75cb14f90cf0232dcb3e3d508c448b8d0e4265b61c1"}, - {file = "protobuf-4.25.4-cp39-cp39-win32.whl", hash = "sha256:90bf6fd378494eb698805bbbe7afe6c5d12c8e17fca817a646cd6a1818c696ca"}, - {file = "protobuf-4.25.4-cp39-cp39-win_amd64.whl", hash = "sha256:ac79a48d6b99dfed2729ccccee547b34a1d3d63289c71cef056653a846a2240f"}, - {file = "protobuf-4.25.4-py3-none-any.whl", hash = "sha256:bfbebc1c8e4793cfd58589acfb8a1026be0003e852b9da7db5a4285bde996978"}, - {file = "protobuf-4.25.4.tar.gz", hash = "sha256:0dc4a62cc4052a036ee2204d26fe4d835c62827c855c8a03f29fe6da146b380d"}, + {file = "protobuf-4.25.5-cp310-abi3-win32.whl", hash = "sha256:5e61fd921603f58d2f5acb2806a929b4675f8874ff5f330b7d6f7e2e784bbcd8"}, + {file = "protobuf-4.25.5-cp310-abi3-win_amd64.whl", hash = "sha256:4be0571adcbe712b282a330c6e89eae24281344429ae95c6d85e79e84780f5ea"}, + {file = "protobuf-4.25.5-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:b2fde3d805354df675ea4c7c6338c1aecd254dfc9925e88c6d31a2bcb97eb173"}, + {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:919ad92d9b0310070f8356c24b855c98df2b8bd207ebc1c0c6fcc9ab1e007f3d"}, + {file = "protobuf-4.25.5-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:fe14e16c22be926d3abfcb500e60cab068baf10b542b8c858fa27e098123e331"}, + {file = "protobuf-4.25.5-cp38-cp38-win32.whl", hash = "sha256:98d8d8aa50de6a2747efd9cceba361c9034050ecce3e09136f90de37ddba66e1"}, + {file = "protobuf-4.25.5-cp38-cp38-win_amd64.whl", hash = "sha256:b0234dd5a03049e4ddd94b93400b67803c823cfc405689688f59b34e0742381a"}, + {file = "protobuf-4.25.5-cp39-cp39-win32.whl", hash = "sha256:abe32aad8561aa7cc94fc7ba4fdef646e576983edb94a73381b03c53728a626f"}, + {file = "protobuf-4.25.5-cp39-cp39-win_amd64.whl", hash = "sha256:7a183f592dc80aa7c8da7ad9e55091c4ffc9497b3054452d629bb85fa27c2a45"}, + {file = "protobuf-4.25.5-py3-none-any.whl", hash = "sha256:0aebecb809cae990f8129ada5ca273d9d670b76d9bfc9b1809f0a9c02b7dbf41"}, + {file = "protobuf-4.25.5.tar.gz", hash = "sha256:7f8249476b4a9473645db7f8ab42b02fe1488cbe5fb72fddd445e0665afd8584"}, ] [[package]] name = "psycopg2" -version = "2.9.9" +version = "2.9.10" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, - {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, - {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, - {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, - {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, - {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, - {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, - {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, - {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, - {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, - {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, - {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, + {file = "psycopg2-2.9.10-cp310-cp310-win32.whl", hash = "sha256:5df2b672140f95adb453af93a7d669d7a7bf0a56bcd26f1502329166f4a61716"}, + {file = "psycopg2-2.9.10-cp310-cp310-win_amd64.whl", hash = "sha256:c6f7b8561225f9e711a9c47087388a97fdc948211c10a4bccbf0ba68ab7b3b5a"}, + {file = "psycopg2-2.9.10-cp311-cp311-win32.whl", hash = "sha256:47c4f9875125344f4c2b870e41b6aad585901318068acd01de93f3677a6522c2"}, + {file = "psycopg2-2.9.10-cp311-cp311-win_amd64.whl", hash = "sha256:0435034157049f6846e95103bd8f5a668788dd913a7c30162ca9503fdf542cb4"}, + {file = "psycopg2-2.9.10-cp312-cp312-win32.whl", hash = "sha256:65a63d7ab0e067e2cdb3cf266de39663203d38d6a8ed97f5ca0cb315c73fe067"}, + {file = "psycopg2-2.9.10-cp312-cp312-win_amd64.whl", hash = "sha256:4a579d6243da40a7b3182e0430493dbd55950c493d8c68f4eec0b302f6bbf20e"}, + {file = "psycopg2-2.9.10-cp39-cp39-win32.whl", hash = "sha256:9d5b3b94b79a844a986d029eee38998232451119ad653aea42bb9220a8c5066b"}, + {file = "psycopg2-2.9.10-cp39-cp39-win_amd64.whl", hash = "sha256:88138c8dedcbfa96408023ea2b0c369eda40fe5d75002c0964c78f46f11fa442"}, + {file = "psycopg2-2.9.10.tar.gz", hash = "sha256:12ec0b40b0273f95296233e8750441339298e6a572f7039da5b260e3c8b60e11"}, ] [[package]] name = "pycodestyle" -version = "2.9.1" +version = "2.12.1" description = "Python style guide checker" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, - {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, + {file = "pycodestyle-2.12.1-py2.py3-none-any.whl", hash = "sha256:46f0fb92069a7c28ab7bb558f05bfc0110dac69a0cd23c61ea0040283a9d78b3"}, + {file = "pycodestyle-2.12.1.tar.gz", hash = "sha256:6838eae08bbce4f6accd5d5572075c63626a15ee3e6f842df996bf62f6d73521"}, ] [[package]] @@ -777,31 +761,31 @@ toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" -version = "2.5.0" +version = "3.2.0" description = "passive checker of Python programs" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, - {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, + {file = "pyflakes-3.2.0-py2.py3-none-any.whl", hash = "sha256:84b5be138a2dfbb40689ca07e2152deb896a65c3a3e24c251c5c62489568074a"}, + {file = "pyflakes-3.2.0.tar.gz", hash = "sha256:1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"}, ] [[package]] name = "pylint" -version = "2.17.7" +version = "3.3.2" description = "python code static checker" optional = false -python-versions = ">=3.7.2" +python-versions = ">=3.9.0" files = [ - {file = "pylint-2.17.7-py3-none-any.whl", hash = "sha256:27a8d4c7ddc8c2f8c18aa0050148f89ffc09838142193fdbe98f172781a3ff87"}, - {file = "pylint-2.17.7.tar.gz", hash = "sha256:f4fcac7ae74cfe36bc8451e931d8438e4a476c20314b1101c458ad0f05191fad"}, + {file = "pylint-3.3.2-py3-none-any.whl", hash = "sha256:77f068c287d49b8683cd7c6e624243c74f92890f767f106ffa1ddf3c0a54cb7a"}, + {file = "pylint-3.3.2.tar.gz", hash = "sha256:9ec054ec992cd05ad30a6df1676229739a73f8feeabf3912c995d17601052b01"}, ] [package.dependencies] -astroid = ">=2.15.8,<=2.17.0-dev0" +astroid = ">=3.3.5,<=3.4.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = {version = ">=0.3.6", markers = "python_version >= \"3.11\""} -isort = ">=4.2.5,<6" +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomlkit = ">=0.10.1" @@ -827,22 +811,21 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-django" -version = "2.5.3" +version = "2.6.1" description = "A Pylint plugin to help Pylint understand the Django web framework" optional = false -python-versions = "*" +python-versions = "<4.0,>=3.9" files = [ - {file = "pylint-django-2.5.3.tar.gz", hash = "sha256:0ac090d106c62fe33782a1d01bda1610b761bb1c9bf5035ced9d5f23a13d8591"}, - {file = "pylint_django-2.5.3-py3-none-any.whl", hash = "sha256:56b12b6adf56d548412445bd35483034394a1a94901c3f8571980a13882299d5"}, + {file = "pylint-django-2.6.1.tar.gz", hash = "sha256:19e8c85a8573a04e3de7be2ba91e9a7c818ebf05e1b617be2bbae67a906b725f"}, + {file = "pylint_django-2.6.1-py3-none-any.whl", hash = "sha256:359f68fe8c810ee6bc8e1ab4c83c19b15a43b234a24b08978f47a23462b5ce28"}, ] [package.dependencies] -pylint = ">=2.0,<3" -pylint-plugin-utils = ">=0.7" +pylint = ">=3.0,<4" +pylint-plugin-utils = ">=0.8" [package.extras] -for-tests = ["coverage", "django-tables2", "django-tastypie", "factory-boy", "pylint (>=2.13)", "pytest", "wheel"] -with-django = ["Django"] +with-django = ["Django (>=2.2)"] [[package]] name = "pylint-flask" @@ -859,13 +842,13 @@ pylint-plugin-utils = ">=0.2.1" [[package]] name = "pylint-plugin-utils" -version = "0.7" +version = "0.8.2" description = "Utilities and helpers for writing Pylint plugins" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7,<4.0" files = [ - {file = "pylint-plugin-utils-0.7.tar.gz", hash = "sha256:ce48bc0516ae9415dd5c752c940dfe601b18fe0f48aa249f2386adfa95a004dd"}, - {file = "pylint_plugin_utils-0.7-py3-none-any.whl", hash = "sha256:b3d43e85ab74c4f48bb46ae4ce771e39c3a20f8b3d56982ab17aa73b4f98d535"}, + {file = "pylint_plugin_utils-0.8.2-py3-none-any.whl", hash = "sha256:ae11664737aa2effbf26f973a9e0b6779ab7106ec0adc5fe104b0907ca04e507"}, + {file = "pylint_plugin_utils-0.8.2.tar.gz", hash = "sha256:d3cebf68a38ba3fba23a873809155562571386d4c1b03e5b4c4cc26c3eee93e4"}, ] [package.dependencies] @@ -956,20 +939,19 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requirements-detector" -version = "1.2.2" +version = "1.3.2" description = "Python tool to find and list requirements of a Python project" optional = false -python-versions = ">=3.7,<4.0" +python-versions = "<4.0,>=3.8" files = [ - {file = "requirements_detector-1.2.2-py3-none-any.whl", hash = "sha256:d7c60493bf166da3dd59de0e6cb25765e0e32a1931aeae92614034e5786d0bd0"}, - {file = "requirements_detector-1.2.2.tar.gz", hash = "sha256:3642cd7a5b261d79536c36bb7ecacf2adabd902d2e0e42bfb2ba82515da10501"}, + {file = "requirements_detector-1.3.2-py3-none-any.whl", hash = "sha256:e7595a32a21e5273dd54d3727bfef4591bbb96de341f6d95c9671981440876ee"}, + {file = "requirements_detector-1.3.2.tar.gz", hash = "sha256:af5a3ea98ca703d14cf7b66751b2aeb3656d02d9e5fc1c97d7d4da02b057b601"}, ] [package.dependencies] -astroid = ">=2.0,<3.0" +astroid = ">=3.0,<4.0" packaging = ">=21.3" semver = ">=3.0.0,<4.0.0" -toml = ">=0.10.2,<0.11.0" [[package]] name = "semver" @@ -1031,60 +1013,68 @@ files = [ [[package]] name = "sqlalchemy" -version = "2.0.33" +version = "2.0.36" description = "Database Abstraction Library" optional = false python-versions = ">=3.7" files = [ - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:63b7d9890f7958dabd95cf98a3f48740fbe2bb0493523aef590e82164fa68194"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:32a4f38d2efca066ec793451ef6852cb0d9086dc3d5479d88a5a25529d1d1861"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3926e4ed4a3e956c8b2b0f1140493378c8cd17cad123b4fc1e0f6ecd3e05b19"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2415824ec658891ac38d13a2f36b4ceb2033f034dee1c226f83917589a65f072"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:92249ac94279b8e5f0c0c8420e09b804d0a49d2269f52f549d4cb536c8382434"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c9f4f92eee7d06531cc6a5b814e603a0c7639876aab03638dcc70c420a3974f6"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win32.whl", hash = "sha256:4f1c44c8d66101e6f627f330d8b5b3de5ad25eedb6df3ce39a2e6f92debbcf15"}, - {file = "SQLAlchemy-2.0.33-cp310-cp310-win_amd64.whl", hash = "sha256:3ad94634338d8c576b1d47a96c798be186650aa5282072053ce2d12c6f309f82"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570ec43e8c3c020abac4f0720baa5fe5187334e3f1e8e1777183c041962b61cc"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81759e77a4985abdbac068762a0eaf0f11860fe041ad6da170aae7615ea72531"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49541a43828e273325c520fbacf786615bd974dad63ff60b8ea1e1216e914d1a"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82c72da5be489c8d150deba70d5732398695418df5232bceb52ee323ddd9753b"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:31e56020832be602201fbf8189f379569cf5c3604cdc4ce79f10dbbfcbf8a0eb"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30a3f55be76364b64c83788728faaba782ab282a24909e1994404c2146d39982"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win32.whl", hash = "sha256:17d0c69f66392ad2db1609373a74d1f834b2e632f3f52d446747b8ec220aea53"}, - {file = "SQLAlchemy-2.0.33-cp311-cp311-win_amd64.whl", hash = "sha256:c5d5a733c6af7f392435e673d1b136f6bdf2366033abb35eed680400dc730840"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d81e3aeab456fe24c3f0dcfd4f952a3a5ee45e9c14fc66d34c1d7a60cf7b698"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca8788dc1baee100f09110f33a01d928cf9df4483d2bfb25a37be31a659d46bb"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60c54b677d4f0a0b2df3b79e89e84d601fb931c720176641742efd66b50601f9"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684aee5fd811091b2f48006fb3fe6c7f2de4a716ef8d294a2aab762099753133"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ee2b82b170591ccd19d463c9798a9caeea0cad967a8d2f3264de459f582696d5"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1109cc6dc5c9d1223c42186391e6a5509e6d4ab2c30fa629573c10184f742f2e"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win32.whl", hash = "sha256:c633e2d2f8a7b88c06e276bbe16cb7e62fed815fcbeb69cd9752cea166ecb8e8"}, - {file = "SQLAlchemy-2.0.33-cp312-cp312-win_amd64.whl", hash = "sha256:77eaf8fdf305266b806a91ae4633edbf86ad37e13bd92ac85e305e7f654c19a5"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67eb8e0ffbebd3d82ec5079ca5f807a661c574b482785483717857c2acab833a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3da2371628e28ef279f3f756f5e58858fad7820de08508138c9f5f9e4d8f4ac"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c82a7930126bb5ccfbb73fc1562d52942fbffb2fda2791fab49de249fc202a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d004a623ad4aa8d2eb31b37e65b5e020c9f65a1852b8b9e6301f0e411aca5b9a"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:06b30bbc43c6dd8b7cdc509cd2e58f4f1dce867565642e1d1a65e32459c89bd0"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win32.whl", hash = "sha256:459099ab8dd43a5edbb99f58ba4730baec457df9c06ebc71434c6b4b78cc8cf9"}, - {file = "SQLAlchemy-2.0.33-cp37-cp37m-win_amd64.whl", hash = "sha256:3c64d58e83a68e228b1ae6ebac8721241e9d8cc5e0c0dd11ed5d89155477b243"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9d035a672d5b3e4793a4a8865c3274a7bbbac7fac67a47b415023b5539105087"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:61e9a2d68a5a8ca6a84cbc79aa7f2e430ae854d3351d6e9ceb3edf6798797b63"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:93efa4b72f7cb70555b0f66ee5e113ae40073c57054a72887e50b05bfd97baa4"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac252bafe8cbadfac7b1e8a74748ffd775e27325186d12b82600b652d9adcb86"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2b1e98507ec2aa200af980d592e936e9dac1c1ec50acc94330ae4b13c55d6fea"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:523ae689c023cbf0fe1613101254824515193f85f806ba04611dee83302660b5"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win32.whl", hash = "sha256:7fd0a28bc24a75326f13735a58272247f65c9e8ee16205eacb2431d6ee94f44a"}, - {file = "SQLAlchemy-2.0.33-cp38-cp38-win_amd64.whl", hash = "sha256:0ea64443a86c3b5a0fd7c93363ad2f9465cb3af61f9920b7c75d1a7bebbeef8a"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e5819822050e6e36e2aa41260d05074c026a1bbb9baa6869170b5ce64db7a4d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8bef11d31a1c48f5943e577d1ef81085ec1550c37552bfc9bf8e5d184ce47142"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06504d9625e3ef114b39803ebca6f379133acad58a87c33117ddc5df66079915"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:454e9b4355f0051063daebc4060140251c19f33fc5d02151c347431860fd104b"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:28c0800c851955f5bd11c0b904638c1343002650d0c071c6fbf0d157cc78627d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:816c927dd51e4951d6e79870c945340057a5d8e63543419dee0d247bd67a88f8"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win32.whl", hash = "sha256:c40e0213beaf410a151e4329e30c73687838c251c998ba1b312975dbbcb2d05d"}, - {file = "SQLAlchemy-2.0.33-cp39-cp39-win_amd64.whl", hash = "sha256:751eaafa907a66dd9a328a9d15c3dcfdcba3ef8dd8f7f4a9771cdacdec45d9bf"}, - {file = "SQLAlchemy-2.0.33-py3-none-any.whl", hash = "sha256:ae294808afde1b14a1a69aa86a69cadfe391848bbb233a5332a8065e4081cabc"}, - {file = "sqlalchemy-2.0.33.tar.gz", hash = "sha256:91c93333c2b37ff721dc83b37e28c29de4c502b5612f2d093468037b86aa2be0"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:59b8f3adb3971929a3e660337f5dacc5942c2cdb760afcabb2614ffbda9f9f72"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37350015056a553e442ff672c2d20e6f4b6d0b2495691fa239d8aa18bb3bc908"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8318f4776c85abc3f40ab185e388bee7a6ea99e7fa3a30686580b209eaa35c08"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c245b1fbade9c35e5bd3b64270ab49ce990369018289ecfde3f9c318411aaa07"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69f93723edbca7342624d09f6704e7126b152eaed3cdbb634cb657a54332a3c5"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f9511d8dd4a6e9271d07d150fb2f81874a3c8c95e11ff9af3a2dfc35fe42ee44"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win32.whl", hash = "sha256:c3f3631693003d8e585d4200730616b78fafd5a01ef8b698f6967da5c605b3fa"}, + {file = "SQLAlchemy-2.0.36-cp310-cp310-win_amd64.whl", hash = "sha256:a86bfab2ef46d63300c0f06936bd6e6c0105faa11d509083ba8f2f9d237fb5b5"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:fd3a55deef00f689ce931d4d1b23fa9f04c880a48ee97af488fd215cf24e2a6c"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4f5e9cd989b45b73bd359f693b935364f7e1f79486e29015813c338450aa5a71"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0ddd9db6e59c44875211bc4c7953a9f6638b937b0a88ae6d09eb46cced54eff"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2519f3a5d0517fc159afab1015e54bb81b4406c278749779be57a569d8d1bb0d"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59b1ee96617135f6e1d6f275bbe988f419c5178016f3d41d3c0abb0c819f75bb"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:39769a115f730d683b0eb7b694db9789267bcd027326cccc3125e862eb03bfd8"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win32.whl", hash = "sha256:66bffbad8d6271bb1cc2f9a4ea4f86f80fe5e2e3e501a5ae2a3dc6a76e604e6f"}, + {file = "SQLAlchemy-2.0.36-cp311-cp311-win_amd64.whl", hash = "sha256:23623166bfefe1487d81b698c423f8678e80df8b54614c2bf4b4cfcd7c711959"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7b64e6ec3f02c35647be6b4851008b26cff592a95ecb13b6788a54ef80bbdd4"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:46331b00096a6db1fdc052d55b101dbbfc99155a548e20a0e4a8e5e4d1362855"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdf3386a801ea5aba17c6410dd1dc8d39cf454ca2565541b5ac42a84e1e28f53"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9dfa18ff2a67b09b372d5db8743c27966abf0e5344c555d86cc7199f7ad83a"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:90812a8933df713fdf748b355527e3af257a11e415b613dd794512461eb8a686"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1bc330d9d29c7f06f003ab10e1eaced295e87940405afe1b110f2eb93a233588"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win32.whl", hash = "sha256:79d2e78abc26d871875b419e1fd3c0bca31a1cb0043277d0d850014599626c2e"}, + {file = "SQLAlchemy-2.0.36-cp312-cp312-win_amd64.whl", hash = "sha256:b544ad1935a8541d177cb402948b94e871067656b3a0b9e91dbec136b06a2ff5"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b5cc79df7f4bc3d11e4b542596c03826063092611e481fcf1c9dfee3c94355ef"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3c01117dd36800f2ecaa238c65365b7b16497adc1522bf84906e5710ee9ba0e8"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9bc633f4ee4b4c46e7adcb3a9b5ec083bf1d9a97c1d3854b92749d935de40b9b"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e46ed38affdfc95d2c958de328d037d87801cfcbea6d421000859e9789e61c2"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b2985c0b06e989c043f1dc09d4fe89e1616aadd35392aea2844f0458a989eacf"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a121d62ebe7d26fec9155f83f8be5189ef1405f5973ea4874a26fab9f1e262c"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win32.whl", hash = "sha256:0572f4bd6f94752167adfd7c1bed84f4b240ee6203a95e05d1e208d488d0d436"}, + {file = "SQLAlchemy-2.0.36-cp313-cp313-win_amd64.whl", hash = "sha256:8c78ac40bde930c60e0f78b3cd184c580f89456dd87fc08f9e3ee3ce8765ce88"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:be9812b766cad94a25bc63bec11f88c4ad3629a0cec1cd5d4ba48dc23860486b"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50aae840ebbd6cdd41af1c14590e5741665e5272d2fee999306673a1bb1fdb4d"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4557e1f11c5f653ebfdd924f3f9d5ebfc718283b0b9beebaa5dd6b77ec290971"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:07b441f7d03b9a66299ce7ccf3ef2900abc81c0db434f42a5694a37bd73870f2"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:28120ef39c92c2dd60f2721af9328479516844c6b550b077ca450c7d7dc68575"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win32.whl", hash = "sha256:b81ee3d84803fd42d0b154cb6892ae57ea6b7c55d8359a02379965706c7efe6c"}, + {file = "SQLAlchemy-2.0.36-cp37-cp37m-win_amd64.whl", hash = "sha256:f942a799516184c855e1a32fbc7b29d7e571b52612647866d4ec1c3242578fcb"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d6718667da04294d7df1670d70eeddd414f313738d20a6f1d1f379e3139a545"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:72c28b84b174ce8af8504ca28ae9347d317f9dba3999e5981a3cd441f3712e24"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b11d0cfdd2b095e7b0686cf5fabeb9c67fae5b06d265d8180715b8cfa86522e3"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e32092c47011d113dc01ab3e1d3ce9f006a47223b18422c5c0d150af13a00687"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6a440293d802d3011028e14e4226da1434b373cbaf4a4bbb63f845761a708346"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:c54a1e53a0c308a8e8a7dffb59097bff7facda27c70c286f005327f21b2bd6b1"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win32.whl", hash = "sha256:1e0d612a17581b6616ff03c8e3d5eff7452f34655c901f75d62bd86449d9750e"}, + {file = "SQLAlchemy-2.0.36-cp38-cp38-win_amd64.whl", hash = "sha256:8958b10490125124463095bbdadda5aa22ec799f91958e410438ad6c97a7b793"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dc022184d3e5cacc9579e41805a681187650e170eb2fd70e28b86192a479dcaa"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b817d41d692bf286abc181f8af476c4fbef3fd05e798777492618378448ee689"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4e46a888b54be23d03a89be510f24a7652fe6ff660787b96cd0e57a4ebcb46d"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ae3005ed83f5967f961fd091f2f8c5329161f69ce8480aa8168b2d7fe37f06"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:03e08af7a5f9386a43919eda9de33ffda16b44eb11f3b313e6822243770e9763"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3dbb986bad3ed5ceaf090200eba750b5245150bd97d3e67343a3cfed06feecf7"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win32.whl", hash = "sha256:9fe53b404f24789b5ea9003fc25b9a3988feddebd7e7b369c8fac27ad6f52f28"}, + {file = "SQLAlchemy-2.0.36-cp39-cp39-win_amd64.whl", hash = "sha256:af148a33ff0349f53512a049c6406923e4e02bf2f26c5fb285f143faf4f0e46a"}, + {file = "SQLAlchemy-2.0.36-py3-none-any.whl", hash = "sha256:fddbe92b4760c6f5d48162aef14824add991aeda8ddadb3c31d56eb15ca69f8e"}, + {file = "sqlalchemy-2.0.36.tar.gz", hash = "sha256:7f2767680b6d2398aea7082e45a774b2b0767b5c8d8ffb9c8b683088ea9b29c5"}, ] [package.dependencies] @@ -1098,7 +1088,7 @@ aioodbc = ["aioodbc", "greenlet (!=0.4.17)"] aiosqlite = ["aiosqlite", "greenlet (!=0.4.17)", "typing_extensions (!=3.10.0.1)"] asyncio = ["greenlet (!=0.4.17)"] asyncmy = ["asyncmy (>=0.2.3,!=0.2.4,!=0.2.6)", "greenlet (!=0.4.17)"] -mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5)"] +mariadb-connector = ["mariadb (>=1.0.1,!=1.1.2,!=1.1.5,!=1.1.10)"] mssql = ["pyodbc"] mssql-pymssql = ["pymssql"] mssql-pyodbc = ["pyodbc"] @@ -1158,13 +1148,13 @@ files = [ [[package]] name = "types-requests" -version = "2.32.0.20240712" +version = "2.32.0.20241016" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.32.0.20240712.tar.gz", hash = "sha256:90c079ff05e549f6bf50e02e910210b98b8ff1ebdd18e19c873cd237737c1358"}, - {file = "types_requests-2.32.0.20240712-py3-none-any.whl", hash = "sha256:f754283e152c752e46e70942fa2a146b5bc70393522257bb85bd1ef7e019dcc3"}, + {file = "types-requests-2.32.0.20241016.tar.gz", hash = "sha256:0d9cad2f27515d0e3e3da7134a1b6f28fb97129d86b867f24d9c726452634d95"}, + {file = "types_requests-2.32.0.20241016-py3-none-any.whl", hash = "sha256:4195d62d6d3e043a4eaaf08ff8a62184584d2e8684e9d2aa178c7915a7da3747"}, ] [package.dependencies] @@ -1183,13 +1173,13 @@ files = [ [[package]] name = "urllib3" -version = "2.2.2" +version = "2.2.3" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac"}, + {file = "urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9"}, ] [package.extras] @@ -1216,86 +1206,7 @@ h11 = ">=0.8" [package.extras] standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", "pyyaml (>=5.1)", "uvloop (>=0.14.0,!=0.15.0,!=0.15.1)", "watchfiles (>=0.13)", "websockets (>=10.4)"] -[[package]] -name = "wrapt" -version = "1.16.0" -description = "Module for decorators, wrappers and monkey patching." -optional = false -python-versions = ">=3.6" -files = [ - {file = "wrapt-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ffa565331890b90056c01db69c0fe634a776f8019c143a5ae265f9c6bc4bd6d4"}, - {file = "wrapt-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4fdb9275308292e880dcbeb12546df7f3e0f96c6b41197e0cf37d2826359020"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb2dee3874a500de01c93d5c71415fcaef1d858370d405824783e7a8ef5db440"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a88e6010048489cda82b1326889ec075a8c856c2e6a256072b28eaee3ccf487"}, - {file = "wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac83a914ebaf589b69f7d0a1277602ff494e21f4c2f743313414378f8f50a4cf"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:73aa7d98215d39b8455f103de64391cb79dfcad601701a3aa0dddacf74911d72"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:807cc8543a477ab7422f1120a217054f958a66ef7314f76dd9e77d3f02cdccd0"}, - {file = "wrapt-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bf5703fdeb350e36885f2875d853ce13172ae281c56e509f4e6eca049bdfb136"}, - {file = "wrapt-1.16.0-cp310-cp310-win32.whl", hash = "sha256:f6b2d0c6703c988d334f297aa5df18c45e97b0af3679bb75059e0e0bd8b1069d"}, - {file = "wrapt-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:decbfa2f618fa8ed81c95ee18a387ff973143c656ef800c9f24fb7e9c16054e2"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1a5db485fe2de4403f13fafdc231b0dbae5eca4359232d2efc79025527375b09"}, - {file = "wrapt-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:75ea7d0ee2a15733684badb16de6794894ed9c55aa5e9903260922f0482e687d"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a452f9ca3e3267cd4d0fcf2edd0d035b1934ac2bd7e0e57ac91ad6b95c0c6389"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43aa59eadec7890d9958748db829df269f0368521ba6dc68cc172d5d03ed8060"}, - {file = "wrapt-1.16.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72554a23c78a8e7aa02abbd699d129eead8b147a23c56e08d08dfc29cfdddca1"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d2efee35b4b0a347e0d99d28e884dfd82797852d62fcd7ebdeee26f3ceb72cf3"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6dcfcffe73710be01d90cae08c3e548d90932d37b39ef83969ae135d36ef3956"}, - {file = "wrapt-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:eb6e651000a19c96f452c85132811d25e9264d836951022d6e81df2fff38337d"}, - {file = "wrapt-1.16.0-cp311-cp311-win32.whl", hash = "sha256:66027d667efe95cc4fa945af59f92c5a02c6f5bb6012bff9e60542c74c75c362"}, - {file = "wrapt-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:aefbc4cb0a54f91af643660a0a150ce2c090d3652cf4052a5397fb2de549cd89"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5eb404d89131ec9b4f748fa5cfb5346802e5ee8836f57d516576e61f304f3b7b"}, - {file = "wrapt-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9090c9e676d5236a6948330e83cb89969f433b1943a558968f659ead07cb3b36"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94265b00870aa407bd0cbcfd536f17ecde43b94fb8d228560a1e9d3041462d73"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2058f813d4f2b5e3a9eb2eb3faf8f1d99b81c3e51aeda4b168406443e8ba809"}, - {file = "wrapt-1.16.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98b5e1f498a8ca1858a1cdbffb023bfd954da4e3fa2c0cb5853d40014557248b"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:14d7dc606219cdd7405133c713f2c218d4252f2a469003f8c46bb92d5d095d81"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:49aac49dc4782cb04f58986e81ea0b4768e4ff197b57324dcbd7699c5dfb40b9"}, - {file = "wrapt-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:418abb18146475c310d7a6dc71143d6f7adec5b004ac9ce08dc7a34e2babdc5c"}, - {file = "wrapt-1.16.0-cp312-cp312-win32.whl", hash = "sha256:685f568fa5e627e93f3b52fda002c7ed2fa1800b50ce51f6ed1d572d8ab3e7fc"}, - {file = "wrapt-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:dcdba5c86e368442528f7060039eda390cc4091bfd1dca41e8046af7c910dda8"}, - {file = "wrapt-1.16.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d462f28826f4657968ae51d2181a074dfe03c200d6131690b7d65d55b0f360f8"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a33a747400b94b6d6b8a165e4480264a64a78c8a4c734b62136062e9a248dd39"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3646eefa23daeba62643a58aac816945cadc0afaf21800a1421eeba5f6cfb9c"}, - {file = "wrapt-1.16.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ebf019be5c09d400cf7b024aa52b1f3aeebeff51550d007e92c3c1c4afc2a40"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0d2691979e93d06a95a26257adb7bfd0c93818e89b1406f5a28f36e0d8c1e1fc"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:1acd723ee2a8826f3d53910255643e33673e1d11db84ce5880675954183ec47e"}, - {file = "wrapt-1.16.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bc57efac2da352a51cc4658878a68d2b1b67dbe9d33c36cb826ca449d80a8465"}, - {file = "wrapt-1.16.0-cp36-cp36m-win32.whl", hash = "sha256:da4813f751142436b075ed7aa012a8778aa43a99f7b36afe9b742d3ed8bdc95e"}, - {file = "wrapt-1.16.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6f6eac2360f2d543cc875a0e5efd413b6cbd483cb3ad7ebf888884a6e0d2e966"}, - {file = "wrapt-1.16.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a0ea261ce52b5952bf669684a251a66df239ec6d441ccb59ec7afa882265d593"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bd2d7ff69a2cac767fbf7a2b206add2e9a210e57947dd7ce03e25d03d2de292"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9159485323798c8dc530a224bd3ffcf76659319ccc7bbd52e01e73bd0241a0c5"}, - {file = "wrapt-1.16.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a86373cf37cd7764f2201b76496aba58a52e76dedfaa698ef9e9688bfd9e41cf"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:73870c364c11f03ed072dda68ff7aea6d2a3a5c3fe250d917a429c7432e15228"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b935ae30c6e7400022b50f8d359c03ed233d45b725cfdd299462f41ee5ffba6f"}, - {file = "wrapt-1.16.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:db98ad84a55eb09b3c32a96c576476777e87c520a34e2519d3e59c44710c002c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win32.whl", hash = "sha256:9153ed35fc5e4fa3b2fe97bddaa7cbec0ed22412b85bcdaf54aeba92ea37428c"}, - {file = "wrapt-1.16.0-cp37-cp37m-win_amd64.whl", hash = "sha256:66dfbaa7cfa3eb707bbfcd46dab2bc6207b005cbc9caa2199bcbc81d95071a00"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dd50a2696ff89f57bd8847647a1c363b687d3d796dc30d4dd4a9d1689a706f0"}, - {file = "wrapt-1.16.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:44a2754372e32ab315734c6c73b24351d06e77ffff6ae27d2ecf14cf3d229202"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e9723528b9f787dc59168369e42ae1c3b0d3fadb2f1a71de14531d321ee05b0"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbed418ba5c3dce92619656802cc5355cb679e58d0d89b50f116e4a9d5a9603e"}, - {file = "wrapt-1.16.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:941988b89b4fd6b41c3f0bfb20e92bd23746579736b7343283297c4c8cbae68f"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a42cd0cfa8ffc1915aef79cb4284f6383d8a3e9dcca70c445dcfdd639d51267"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1ca9b6085e4f866bd584fb135a041bfc32cab916e69f714a7d1d397f8c4891ca"}, - {file = "wrapt-1.16.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5e49454f19ef621089e204f862388d29e6e8d8b162efce05208913dde5b9ad6"}, - {file = "wrapt-1.16.0-cp38-cp38-win32.whl", hash = "sha256:c31f72b1b6624c9d863fc095da460802f43a7c6868c5dda140f51da24fd47d7b"}, - {file = "wrapt-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:490b0ee15c1a55be9c1bd8609b8cecd60e325f0575fc98f50058eae366e01f41"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9b201ae332c3637a42f02d1045e1d0cccfdc41f1f2f801dafbaa7e9b4797bfc2"}, - {file = "wrapt-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2076fad65c6736184e77d7d4729b63a6d1ae0b70da4868adeec40989858eb3fb"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5cd603b575ebceca7da5a3a251e69561bec509e0b46e4993e1cac402b7247b8"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b47cfad9e9bbbed2339081f4e346c93ecd7ab504299403320bf85f7f85c7d46c"}, - {file = "wrapt-1.16.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8212564d49c50eb4565e502814f694e240c55551a5f1bc841d4fcaabb0a9b8a"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5f15814a33e42b04e3de432e573aa557f9f0f56458745c2074952f564c50e664"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db2e408d983b0e61e238cf579c09ef7020560441906ca990fe8412153e3b291f"}, - {file = "wrapt-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:edfad1d29c73f9b863ebe7082ae9321374ccb10879eeabc84ba3b69f2579d537"}, - {file = "wrapt-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed867c42c268f876097248e05b6117a65bcd1e63b779e916fe2e33cd6fd0d3c3"}, - {file = "wrapt-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:eb1b046be06b0fce7249f1d025cd359b4b80fc1c3e24ad9eca33e0dcdb2e4a35"}, - {file = "wrapt-1.16.0-py3-none-any.whl", hash = "sha256:6906c4100a8fcbf2fa735f6059214bb13b97f75b1a61777fcf6432121ef12ef1"}, - {file = "wrapt-1.16.0.tar.gz", hash = "sha256:5f370f952971e7d17c7d1ead40e49f32345a7f7a5373571ef44d800d06b1899d"}, -] - [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "90fabf1e71be0d01fa12e6fb3163cab0f62cd681e595fc26b69a5d19fcfe193c" +content-hash = "0b5c3beee31f9f29deb4a890e255fec1a2ce36943ec425203363287d008703e1" diff --git a/modules/text/module_text_cofee/pyproject.toml b/modules/text/module_text_cofee/pyproject.toml index b442e8148..3492f5c98 100644 --- a/modules/text/module_text_cofee/pyproject.toml +++ b/modules/text/module_text_cofee/pyproject.toml @@ -13,7 +13,7 @@ requests = "^2.31.0" [tool.poetry.dev-dependencies] # if you have local changes in the common Athena module, use the line below. Otherwise, please use a VCS stable version. Also, a version with tag = "" is possible. # athena = { path = "../athena", develop = true } -athena = { git = "https://github.com/ls1intum/Athena.git", rev = "ccd00cf8346e76738a66e7f4cf04c84aa4cb4378", subdirectory = "athena"} +athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subdirectory = "athena"} pydantic = "1.10.17" prospector = "^1.10.2" From aa2679982fde95646f4f0bcec16f781ab1e5ad2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20S=C3=B6lch?= Date: Thu, 5 Dec 2024 17:32:41 +0100 Subject: [PATCH 3/3] ThemisML: Update torch version to 2.5.0 (#369) --- .../module_programming_themisml/poetry.lock | 254 +++++++++++++++--- .../pyproject.toml | 8 +- 2 files changed, 227 insertions(+), 35 deletions(-) diff --git a/modules/programming/module_programming_themisml/poetry.lock b/modules/programming/module_programming_themisml/poetry.lock index fd20f77b0..8cceb7c1d 100644 --- a/modules/programming/module_programming_themisml/poetry.lock +++ b/modules/programming/module_programming_themisml/poetry.lock @@ -13,22 +13,23 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.7.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352"}, + {file = "anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48"}, ] [package.dependencies] idna = ">=2.8" sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -1209,6 +1210,149 @@ files = [ {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, ] +[[package]] +name = "nvidia-cublas-cu12" +version = "12.1.3.1" +description = "CUBLAS native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:ee53ccca76a6fc08fb9701aa95b6ceb242cdaab118c3bb152af4e579af792728"}, + {file = "nvidia_cublas_cu12-12.1.3.1-py3-none-win_amd64.whl", hash = "sha256:2b964d60e8cf11b5e1073d179d85fa340c120e99b3067558f3cf98dd69d02906"}, +] + +[[package]] +name = "nvidia-cuda-cupti-cu12" +version = "12.1.105" +description = "CUDA profiling tools runtime libs." +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:e54fde3983165c624cb79254ae9818a456eb6e87a7fd4d56a2352c24ee542d7e"}, + {file = "nvidia_cuda_cupti_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:bea8236d13a0ac7190bd2919c3e8e6ce1e402104276e6f9694479e48bb0eb2a4"}, +] + +[[package]] +name = "nvidia-cuda-nvrtc-cu12" +version = "12.1.105" +description = "NVRTC native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:339b385f50c309763ca65456ec75e17bbefcbbf2893f462cb8b90584cd27a1c2"}, + {file = "nvidia_cuda_nvrtc_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:0a98a522d9ff138b96c010a65e145dc1b4850e9ecb75a0172371793752fd46ed"}, +] + +[[package]] +name = "nvidia-cuda-runtime-cu12" +version = "12.1.105" +description = "CUDA Runtime native Libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:6e258468ddf5796e25f1dc591a31029fa317d97a0a94ed93468fc86301d61e40"}, + {file = "nvidia_cuda_runtime_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:dfb46ef84d73fababab44cf03e3b83f80700d27ca300e537f85f636fac474344"}, +] + +[[package]] +name = "nvidia-cudnn-cu12" +version = "9.1.0.70" +description = "cuDNN runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-manylinux2014_x86_64.whl", hash = "sha256:165764f44ef8c61fcdfdfdbe769d687e06374059fbb388b6c89ecb0e28793a6f"}, + {file = "nvidia_cudnn_cu12-9.1.0.70-py3-none-win_amd64.whl", hash = "sha256:6278562929433d68365a07a4a1546c237ba2849852c0d4b2262a486e805b977a"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" + +[[package]] +name = "nvidia-cufft-cu12" +version = "11.0.2.54" +description = "CUFFT native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-manylinux1_x86_64.whl", hash = "sha256:794e3948a1aa71fd817c3775866943936774d1c14e7628c74f6f7417224cdf56"}, + {file = "nvidia_cufft_cu12-11.0.2.54-py3-none-win_amd64.whl", hash = "sha256:d9ac353f78ff89951da4af698f80870b1534ed69993f10a4cf1d96f21357e253"}, +] + +[[package]] +name = "nvidia-curand-cu12" +version = "10.3.2.106" +description = "CURAND native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:9d264c5036dde4e64f1de8c50ae753237c12e0b1348738169cd0f8a536c0e1e0"}, + {file = "nvidia_curand_cu12-10.3.2.106-py3-none-win_amd64.whl", hash = "sha256:75b6b0c574c0037839121317e17fd01f8a69fd2ef8e25853d826fec30bdba74a"}, +] + +[[package]] +name = "nvidia-cusolver-cu12" +version = "11.4.5.107" +description = "CUDA solver native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd"}, + {file = "nvidia_cusolver_cu12-11.4.5.107-py3-none-win_amd64.whl", hash = "sha256:74e0c3a24c78612192a74fcd90dd117f1cf21dea4822e66d89e8ea80e3cd2da5"}, +] + +[package.dependencies] +nvidia-cublas-cu12 = "*" +nvidia-cusparse-cu12 = "*" +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-cusparse-cu12" +version = "12.1.0.106" +description = "CUSPARSE native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c"}, + {file = "nvidia_cusparse_cu12-12.1.0.106-py3-none-win_amd64.whl", hash = "sha256:b798237e81b9719373e8fae8d4f091b70a0cf09d9d85c95a557e11df2d8e9a5a"}, +] + +[package.dependencies] +nvidia-nvjitlink-cu12 = "*" + +[[package]] +name = "nvidia-nccl-cu12" +version = "2.21.5" +description = "NVIDIA Collective Communication Library (NCCL) Runtime" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nccl_cu12-2.21.5-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8579076d30a8c24988834445f8d633c697d42397e92ffc3f63fa26766d25e0a0"}, +] + +[[package]] +name = "nvidia-nvjitlink-cu12" +version = "12.6.85" +description = "Nvidia JIT LTO Library" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:eedc36df9e88b682efe4309aa16b5b4e78c2407eac59e8c10a6a47535164369a"}, + {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cf4eaa7d4b6b543ffd69d6abfb11efdeb2db48270d94dfd3a452c24150829e41"}, + {file = "nvidia_nvjitlink_cu12-12.6.85-py3-none-win_amd64.whl", hash = "sha256:e61120e52ed675747825cdd16febc6a0730537451d867ee58bee3853b1b13d1c"}, +] + +[[package]] +name = "nvidia-nvtx-cu12" +version = "12.1.105" +description = "NVIDIA Tools Extension" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-manylinux1_x86_64.whl", hash = "sha256:dc21cf308ca5691e7c04d962e213f8a4aa9bbfa23d95412f452254c2caeb09e5"}, + {file = "nvidia_nvtx_cu12-12.1.105-py3-none-win_amd64.whl", hash = "sha256:65f4d98982b31b60026e0e6de73fbdfc09d08a96f4656dd3665ca616a11e1e82"}, +] + [[package]] name = "packaging" version = "24.2" @@ -2219,13 +2363,13 @@ full = ["httpx (>=0.22.0)", "itsdangerous", "jinja2", "python-multipart (>=0.0.7 [[package]] name = "sympy" -version = "1.13.3" +version = "1.13.1" description = "Computer algebra system (CAS) in Python" optional = false python-versions = ">=3.8" files = [ - {file = "sympy-1.13.3-py3-none-any.whl", hash = "sha256:54612cf55a62755ee71824ce692986f23c88ffa77207b30c1368eda4a7060f73"}, - {file = "sympy-1.13.3.tar.gz", hash = "sha256:b27fd2c6530e0ab39e275fc9b683895367e51d5da91baa8d3d64db2565fec4d9"}, + {file = "sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8"}, + {file = "sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f"}, ] [package.dependencies] @@ -2387,12 +2531,12 @@ files = [ [[package]] name = "torch" -version = "2.1.0" +version = "2.5.0" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8132efb782cd181cc2dcca5e58effbe4217cdb2581206ac71466d535bf778867"}, + {file = "torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:205a0ecbf85f4c7857cfdf4f6b0e07316bd929ed92482569e8f4524400559884"}, ] [package.dependencies] @@ -2400,25 +2544,25 @@ filelock = "*" fsspec = "*" jinja2 = "*" networkx = "*" -sympy = "*" -typing-extensions = "*" +sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""} +typing-extensions = ">=4.8.0" [package.extras] -dynamo = ["jinja2"] opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.12.0)"] [package.source] type = "url" -url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" +url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl" [[package]] name = "torch" -version = "2.1.0" +version = "2.5.0" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.1.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:3cd1dedff13884d890f18eea620184fb4cd8fd3c68ce3300498f427ae93aa962"}, + {file = "torch-2.5.0-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:da77217ecd32e54c6249799547eeda105ebbaa8c3c745b591a5320e2bc243585"}, ] [package.dependencies] @@ -2426,24 +2570,37 @@ filelock = "*" fsspec = "*" jinja2 = "*" networkx = "*" -sympy = "*" -typing-extensions = "*" +nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nccl-cu12 = {version = "2.21.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""} +triton = {version = "3.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""} +typing-extensions = ">=4.8.0" [package.extras] opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.12.0)"] [package.source] type = "url" -url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-none-macosx_11_0_arm64.whl" +url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-none-macosx_11_0_arm64.whl" [[package]] name = "torch" -version = "2.1.0+cpu" +version = "2.5.0+cpu" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.1.0+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:5954924ce74bc7e6a6c811e3fa4bdda9936d9889f6369fd068420c444bfd1cae"}, + {file = "torch-2.5.0+cpu-cp311-cp311-linux_x86_64.whl", hash = "sha256:217b7de83d1cc71f1de2eae4288cb25a8210a109424a0c1fdde640e3778747d7"}, ] [package.dependencies] @@ -2451,25 +2608,25 @@ filelock = "*" fsspec = "*" jinja2 = "*" networkx = "*" -sympy = "*" -typing-extensions = "*" +sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""} +typing-extensions = ">=4.8.0" [package.extras] -dynamo = ["jinja2"] opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.12.0)"] [package.source] type = "url" -url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-linux_x86_64.whl" +url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-linux_x86_64.whl" [[package]] name = "torch" -version = "2.1.0+cpu" +version = "2.5.0+cpu" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.8.0" files = [ - {file = "torch-2.1.0+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:c2ec46e3c00d9c642448c92243d9d7de64b3934d746e5ea8661791c2155bd2b9"}, + {file = "torch-2.5.0+cpu-cp311-cp311-win_amd64.whl", hash = "sha256:690954a8becf12a04e64f08fe84f1a9c9dcbf12b07d481f89809d2cfc55a1038"}, ] [package.dependencies] @@ -2477,15 +2634,28 @@ filelock = "*" fsspec = "*" jinja2 = "*" networkx = "*" -sympy = "*" -typing-extensions = "*" +nvidia-cublas-cu12 = {version = "12.1.3.1", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-cupti-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-nvrtc-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cuda-runtime-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cudnn-cu12 = {version = "9.1.0.70", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cufft-cu12 = {version = "11.0.2.54", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-curand-cu12 = {version = "10.3.2.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusolver-cu12 = {version = "11.4.5.107", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-cusparse-cu12 = {version = "12.1.0.106", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nccl-cu12 = {version = "2.21.5", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +nvidia-nvtx-cu12 = {version = "12.1.105", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\""} +sympy = {version = "1.13.1", markers = "python_version >= \"3.9\""} +triton = {version = "3.1.0", markers = "platform_system == \"Linux\" and platform_machine == \"x86_64\" and python_version < \"3.13\""} +typing-extensions = ">=4.8.0" [package.extras] opt-einsum = ["opt-einsum (>=3.3)"] +optree = ["optree (>=0.12.0)"] [package.source] type = "url" -url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_amd64.whl" +url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-win_amd64.whl" [[package]] name = "tqdm" @@ -2577,6 +2747,28 @@ torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", video = ["av (==9.2.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] +[[package]] +name = "triton" +version = "3.1.0" +description = "A language and compiler for custom Deep Learning operations" +optional = false +python-versions = "*" +files = [ + {file = "triton-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b0dd10a925263abbe9fa37dcde67a5e9b2383fc269fdf59f5657cac38c5d1d8"}, + {file = "triton-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f34f6e7885d1bf0eaaf7ba875a5f0ce6f3c13ba98f9503651c1e6dc6757ed5c"}, + {file = "triton-3.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8182f42fd8080a7d39d666814fa36c5e30cc00ea7eeeb1a2983dbb4c99a0fdc"}, + {file = "triton-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dadaca7fc24de34e180271b5cf864c16755702e9f63a16f62df714a8099126a"}, + {file = "triton-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aafa9a20cd0d9fee523cd4504aa7131807a864cd77dcf6efe7e981f18b8c6c11"}, +] + +[package.dependencies] +filelock = "*" + +[package.extras] +build = ["cmake (>=3.20)", "lit"] +tests = ["autopep8", "flake8", "isort", "llnl-hatchet", "numpy", "pytest", "scipy (>=1.7.1)"] +tutorials = ["matplotlib", "pandas", "tabulate"] + [[package]] name = "types-requests" version = "2.32.0.20241016" @@ -2651,4 +2843,4 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [metadata] lock-version = "2.0" python-versions = "3.11.*" -content-hash = "1de47add102985fa6559ff58110aa51469e8410588b0a5148a1abd9e48a7cecf" +content-hash = "4fcdce526e8972017f0b0b8b4c756e9b8d7c1cf8c50e464c897362bb73a78bcd" diff --git a/modules/programming/module_programming_themisml/pyproject.toml b/modules/programming/module_programming_themisml/pyproject.toml index 2195ac1d1..3104a0e3a 100644 --- a/modules/programming/module_programming_themisml/pyproject.toml +++ b/modules/programming/module_programming_themisml/pyproject.toml @@ -13,10 +13,10 @@ athena = { git = "https://github.com/ls1intum/Athena.git", rev = "bbb2bb0", subd antlr4-python3-runtime = "^4.13.1" code-bert-score = "^0.4.1" torch = [ - {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-linux_x86_64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"x86_64\""}, - {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"aarch64\""}, - {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0-cp311-none-macosx_11_0_arm64.whl", platform = "darwin", python = ">=3.11 <3.12"}, - {url = "https://download.pytorch.org/whl/cpu/torch-2.1.0%2Bcpu-cp311-cp311-win_amd64.whl", platform = "win32", python = ">=3.11 <3.12"} + {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-linux_x86_64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"x86_64\""}, + {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", platform = "linux", python = ">=3.11 <3.12", markers = "platform_machine == \"aarch64\""}, + {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0-cp311-none-macosx_11_0_arm64.whl", platform = "darwin", python = ">=3.11 <3.12"}, + {url = "https://download.pytorch.org/whl/cpu/torch-2.5.0%2Bcpu-cp311-cp311-win_amd64.whl", platform = "win32", python = ">=3.11 <3.12"} ] [tool.poetry.group.dev.dependencies]